{"version":3,"sources":["webpack:///./app/assets/javascripts/core/utils.js","webpack:///./app/assets/javascripts/core/constants.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./app/assets/javascripts/scf/application/scf_app_panel_invoice.js","webpack:///./app/assets/javascripts/scf/onboarding/scf_onb_panel_promoter.js","webpack:///./app/assets/javascripts/scf/onboarding/scf_udyam_panel.js","webpack:///./app/assets/javascripts/scf/application/scf_app_analysis_banking.js","webpack:///./app/assets/javascripts/scf/application/scf_app_analysis_crime_check.js","webpack:///./app/assets/javascripts/scf/application/scf_app_application_panel.js","webpack:///./app/assets/javascripts/scf/application/scf_app_panel_decision.js","webpack:///./app/assets/javascripts/scf/application/scf_app_panel_dedupe.js","webpack:///./app/assets/javascripts/scf/application/scf_app_panel_document.js","webpack:///./app/assets/javascripts/scf/application/scf_app_panel_lender.js","webpack:///./app/assets/javascripts/scf/onboarding/scf_onb_panel_banking.js","webpack:///./app/assets/javascripts/scf/onboarding/scf_onb_panel_counterparty.js","webpack:///./app/assets/javascripts/scf/onboarding/scf_onb_panel_document.js","webpack:///./app/assets/javascripts/scf/invoice/scf_invoice_dashboard.js","webpack:///./app/assets/javascripts/scf/onboarding/scf_pre_approval_panel.js","webpack:///./app/assets/javascripts/collections/collection_application_handler.js","webpack:///./app/assets/javascripts/scf/application/scf_application_handler.js","webpack:///./app/assets/javascripts/anchor/all_anchors_list.js","webpack:///./app/assets/javascripts/anchor/anchor_applications.js","webpack:///./app/assets/javascripts/anchor/anchor_borrower.js","webpack:///./app/assets/javascripts/anchor/leads_lot_details.js","webpack:///./app/assets/javascripts/anchor/new_anchor_invoices_lot.js","webpack:///./app/assets/javascripts/anchor/new_anchor_leads_lot.js","webpack:///./app/assets/javascripts/scf/scf_auth_handler.js","webpack:///./app/assets/javascripts/core/static_pages.js","webpack:///./app/assets/javascripts/scf/counterparty/scf_counterparty_confirmation.js","webpack:///./app/assets/javascripts/scf/counterparty/scf_counterparty_handler.js","webpack:///./app/assets/javascripts/scf/invoice/scf_invoice_confirmation.js","webpack:///./app/assets/javascripts/scf/invoice/scf_invoice.js","webpack:///./app/assets/javascripts/scf/onboarding/scf_onboarding_handler.js","webpack:///./app/assets/javascripts/scf/sales/scf_sales_new_application.js","webpack:///./app/assets/javascripts/scf/users/scf_user.js","webpack:///./app/assets/javascripts/scf/users/scf_user_settings.js","webpack:///./app/assets/javascripts/scf/users/scf_new_borrower.js","webpack:///./app/assets/javascripts/scf/scf.js"],"names":["Utils","_classCallCheck","_createClass","key","value","dt_selector","$","DataTable","scrollY","scrollCollapse","searching","lengthChange","retrieve","paging","info","processing","language","emptyTable","order","url","req_type","body","options","arguments","length","undefined","stringify","headers","this","readCookie","Constants","FormData","get","concat","limit","skip","parseInt","URLSearchParams","fetch","method","then","response","status","window","location","responseType","blob","json","error","message","errors","JSON","table_container_id","dt_instance","mu_tmpl","transformer","list_key","offset","that","find","removeClass","load_more","document","querySelector","disabled","search_button","getElementById","requestHandler","data","template","innerHTML","rendered","map","row","trans","call","parseHTML","Mustache","render","rows","add","draw","html","page","recordsTotal","showToast","formatErrorMessage","fail","addClass","copyToClipboard","state","append","classList","setTimeout","remove","element","parentElement","title","sub_text","tclass","success","toast_id","Math","random","toString","replace","tid","string","charAt","toUpperCase","slice","toLowerCase","Moment","format","fromNow","result","_i2","_Object$entries","Object","entries","_ref2","_slicedToArray","val","Array","capitalizeFirstLetter","split","join","push","_i3","_Object$entries2","_ref4","sub_key","sub_val","params","href","pop","forEach","index","decodeURIComponent","trim","link_class","panel_class","querySelectorAll","addEventListener","event","target","contains","getAttribute","sub_title","panel_id","indx","snakeStr","word","email","String","match","input_elem","error_msg","nextElementSibling","removeInputError","amount","shorten","add_sign","a","numberShortener","toFixed","toLocaleString","parent_panel_id","prp","cookie","web_cookie","c","wc","picker","start_date","attr","end_date","refreshDataTable","setAttribute","start","end","clear","filters","subtract","dt_range_picker","dt_search_element","daterangepicker","startDate","endDate","maxDate","locale","cancelLabel","ranges","startOf","endOf","st","en","dateRangeSelectHandler","dataTableLoadMoreHandler","initializeDataTableSearch","initializeDataTableFilters","initializeDropdown","dt_search_button","dt_search_inp","search_term","search_elem","search_obj","keys","entry","_entry","insertAdjacentHTML","change_content","bDropdown","bootstrap","Dropdown","show","item","textContent","localStorage","getItem","user_name","user_type","user_icon","user_name_full","user","first_name","last_name","user_permission","isArray","user_type_permission","console","txt","navigator","clipboard","writeText","active_element","getUsername","ScfSignIn","logoutHandler","ScfPermission","isScfBorrower","isScfCounterparty","isScfAdmin","isScfCredit","isScfSuperAdmin","isScfLender","isScfSales","sidebarHandler","hideDropdowns","text","zipcode","aadhar","mobile","pan","elem","tagName","dispatchEvent","Event","Promise","resolve","param","enable","ch_event","removeAttribute","DocumentUtils","action_element","inp_elem","files","MouseEvent","more_params","file_data","from","fls","set","name","m","getFileData","buttonWithLoader","post","hide","inp_element","preview_element","ah","createElement","URL","createObjectURL","SERVICE_BASE_URL","SERVICE_BASE_URL_BACKOFFICE","PROFILE_REDIRECT_URL","ENV","process","ENVIRONMENT","SERVICE_BASE","SERVICE_BASE_BACKOFFICE","PROFILE_REDIRECT","ORG_ID","REQUEST","API_LIMIT","TOAST","ELEMENT_STATE","UAT","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","module","exports","ScfAppPanelInvoice","fetched","application_id","transcationinput","elem_btn_invoice_modal","elem_invoice_modal","Modal","elem_invoice_modal_header","elem_btn_submit_invoice","elem_div_inv_upload","elem_select_buyer","elem_inv_preview","elem_inv_purpose","elem_due_date","elem_tbody","elem_invoice_no","uploadInvoice","fetchCounterParties","submitInvoice","fetchInvoices","requestForFinance","sendToLenderForFinance","handler","submitDrawDownRequest","resetForm","userWisePermissoin","invoice_ids","scf_application_id","pass","label","toggleMessage","hideInputError","showInputError","reInput","bindInputElement","showOfflinePreview","invoiceInput","consentInput","validateValues","formData","style","display","invoice_date","option","approved_counter_parties","dd","cp_id","invoice_no","total_invoice_value","formatted_invoice_amount","formatted_created_at","formatTime","created_at","formatted_updated_at","formatTimeRelative","updated_at","formatted_due_date","formatDate","due_date","formatted_due_date_rel","status_human","renderInvoice","invoices","p_tmpl","inv","d1","transformInvoiceData","rend","renderedRow","invoiceLinks","includes","re_inv","finding_amount","inv_id","scf_funding_amount","funding_amount","invoice","AbstractPromoter","din","is_co_applicant","full_name","din_full_name","dob","gender","address","pincode","city","years_at_current_address","elem_title","elem_pan","elem_din","elem_is_co_applicant","elem_din_full_name","elem_full_name","elem_first_name","elem_last_name","elem_dob","elem_gender","elem_email","elem_mobile","elem_address","elem_pincode","elem_city","elem_state","elem_years_at_current_address","elem_share_holding","elem_relationship","isProperietor","getter","promoter_shareholding","relationship","dropdown","isPresent","some","setter","ScfPromoterModule","obj_promoter","business_applicant_id","pomoterPanelHandler","getAllPromoters","showNewPromoterModal","setValues","promoter","abs_promoter","ownership_type","pan_number","din_number","is_coapplicant","pan_first_name","pan_last_name","date_of_birth","share_holding","rederVerifiedPromoters","temp","ac_table","obj_promoter_ind","din_first_name","din_last_name","i","rend_row","promoterEditButton","active_id","ScfUdyamPanel","inputValue","udyam_reg_no","loaderToast","udhyam_aadhaar","ScfAppAnalysisBanking","getBankingDetails","tmpl","dx","bank_accounts","obj","userWisePermission","uploadBankStatement","downloadBankStatement","getReports","_toConsumableArray","getElementsByClassName","bank_account_id","open","redirect_url","currentTime","Date","updatedAt","timeDifferenceInMinutes","abs","button","entity_id","bank_account_number","confirm","pdfUrl","link","ScfAppAnalysisCrimeCheck","aml_tmpl","aml_dx","crime_check","aml","ScfAppApplicationPanel","business_applicant_name","elem_application_details","elem_applicant_details","business_application_pan","applicationDetailsHandler","fcWidgetMethod","selected","addProgram","select_program","defaultOpt","program","opt","programId","scfApplicationId","payload","program_id","firstname","lastname","mobile_no","usertype","fcWidget","setExternalId","setFirstName","setLastName","setEmail","setPhone","setProperties","first_medium","country","scf_business_applicant","pan_name","_response$data","scf_application","application_lender_approved","navPanelLenders","navInvoice","isInvoiceUploader","renderApplicationDetails","programList","scf_program_id","copyApplication","sales_agent_name","idx","constitution","snakeToTitleCase","product","relative_created_at","required_amount_formatted","indianRepresentation","required_amount","consents","ctype","consentToTitleCase","relative_updated_at","business_directors","age","gstins","registration_date","formatted_registration_date","last_updated","formatted_last_updated","str","scf_applicantion","click","director","corporate_id","llp_name","d","transformApplicationData","trade_name","lender_decision_submitted","anchor_leads_lot_id","bankingButtons","gstButtons","branch_id","parent_id","parentNode","ScfAppPanelLenderDecision","lender_application_id","lender_decision_amount","lender_decision_roi","lender_decision_processing_fee","lender_decision_facility_validity","lender_decision_app_decision","lender_decision_app_remarks","elem_lender_decision_amount","elem_lender_decision_roi","elem_lender_decision_processing_fee","elem_lender_decision_facility_validity","elem_lender_decision_app_decision","elem_lender_decision_app_remarks","fetchLenderApplication","submitLenderDecision","ender_decision_processing_fee","input","lender_applications","tagged_program","remarks","approved_limit","roi","processing_fee","facility_validity","program_name","proposed_cps","populateSelectedCpIds","lender_app_cps","checked","checkboxes","idContainer","updateIds","selectedIds","filter","checkbox","dataset","dataCpIds","getValues","counter_parties","decision","ScfAppPanelDedupe","fetchApplications","renderApplications","applications","application_details_link","ScfAppPanelDocument","elem_document_details","elem_password_modal","elem_password","elem_btn_password","renderUploadedDocuments","renderDocument","ref","last_doc","drop_ship","doc_title","set_value","doc_subtitle","dtype","set_key","ext","x","logo","preview_data","formatted_ts","formatted_ts_ago","documents","sort","grped_data","groupBy","_loop","transformDocumentData","prev","uploadFiles","showUploadPreview","doc_data","transformPreviewData","passwordHandler","updatePasswordHandler","deleteDocument","reRenderuploadedDocuments","document_id","file_password","decrypted_digest","parse","file_code","prepend","pass_elem","CreateLenderApplication","lender","cp_limits","interest_mode","purpose_of_loan","repayment_mode","elem_lender","elem_amount","elem_product","elem_program","elem_roi","elem_processing_fee","elem_interest_mode","elem_purpose_of_loan","elem_repayment_mode","elem_facility_validity","elem_fldg_percentage","elem_loan_account_number","fetchLenders","createApplication","fetchSelectedLender","fldg_percentage","loan_account_number","Number","isInteger","parseFloat","placeholder","tagged_lender","lender_dropdown","lenders","optionText","createTextNode","appendChild","isEdit","facility_validity_data","stalePeriods","validationcheck","getFieldValues","to","stale","requiredFields","allFilled","field","values","periods","validateStalePeriods","reduce","acc","to1","from1","from2","to2","from3","to3","validateCustomConditions","currentDate","nextMonth","getFullYear","getMonth","interest_mode_data","stale_periods","modalElement","getInstance","ScfPanelLenderApplication","clicked","elem_sanction_modal_header","elem_sanction_letter_modal","elem_lender_modal","elem_div_sanction_upload","elem_sanction_preview","submitSanctionLetter","initializePagers","fetchLenderApplications","initializeAddLenderApplication","getApplicationLimit","fileInput","submitButton","log","scf_lender_application_id","limit_type_formatted","limit_type","updated_at_fromatted","relative_expiry","expiry","formatted_expiry","f_amount","f_utilized_amount","utilized_amount","limits","transformApplicationLimit","clearAddLenderApplicationModal","preventDefault","daysToMilliseconds","nextValidMonth","getTime","monthsDifference","selectBox","type","handleClick","lenderApplicationId","substring","anchor","type_of_business","program_rules","fldg_applied","lender_badge_status","counter_party_names","formatted_approved_limit","cp_count","lender_name","tbody","app","transformLenderApplicationData","detailsButtonLenderApplicantion","editLenderApplication","cancelButtonLenderApplication","SendApplicationToLender","programValidator","uploadSanctionLetter","lenderName","approvedLimit","processingFee","counterParties","counterPartyTradeNames","pelem","setUpLenderEditModalData","ScfBankingModule","obj_banking","van_account_number","van_bank_name","van_ifsc","van_holder_name","van_branch","van_micr","van_checkbox","van_fields","addInputEventListeners","BankingPanelHandler","editBankAccountsPanel","showBankingModal","bankingAddBankAccount","bankingValidateBankAccount","bankGetIfscDetails","setupVanCheckboxOnb","bankAddBankAccount","VanbankOnb","bank_account","abs_banking","AbstractBanking","account_number","account_type","account_holder","primary_account_holder_name","verified_account_holder","ifsc_code","bank_branch","branch","bank_name","bank_micr","micr_code","bankingSetupButtonIds","bankRenderVerifiedAccounts","clearVanForm","_this","addBankAccountButton","validateValuesVanOnb","innerText","_ref","btn_id","bt1","bt3","elm_btn","abs_bank","bank_ac_no","bank_ifsc","bank_ac_holder_name","ifsc_data","ifsc","micr","elem_ifsc_code","elem_bank_micr","elem_bank_name","elem_bank_branch","elem_bank_branch_full","bankEditButton","showVanFields","setVanValues","showRegularFields","isVan","elem_account_number","elem_account_holder","elem_account_type","elem_verified_account_holder","elem_verified_account_holder_name","elem_van_account_number","elem_van_bank_name","elem_van_ifsc_code","elem_van_holder_name","elem_van_bank_branch","elem_van_bank_micr","ScfOnbPanelCounterParty","submitCounterParties","vintage","s_cps","mob","validatorMobile","validatorEmail","ScfOnbPanelDocument","elem_banking_modal_body","renderDocuments","documentGstHandler","documentBankingHandler","documentAadhaarHandler","documentPromoterHandler","documentCpHandler","renderConstitutionInputs","templateId","scf_applicant","formCardsToggleBusinessConstitution","uploadOnboardingDocuments","icon","dynamicId","dynamicElement","toggle","renderAllDocuments","div","doc","stopPropagation","documentGstInfoCards","documentGstGetOtp","documentGstSubmitOtp","toggleGstotp","inputElement","all_cards","gstin","gst_modal","closeModalButtonSecond","onclick","username","gst_username","otp","uploadOnboardingBankingDocuments","renderVerifiedCpInTable","uploadOnboardingCpDocuments","buttonId","documentPreview","document_for","uploadOnElementTrigger","bank_statement_1","set_name","desc","metadata","company_type","documentAadhaarInfoCards","documentAadhaarGetOtp","documentAadhaarSubmitOtp","addPromoterDocumentInputFields","promoterDocUploadSection","fullName","promoterId","uploadOnboardingPromoterDocuments","selectField","selectedOption","selectedIndex","startsWith","bankAccountNumber","pdf_password_modal","promoter_id","aadhaar","aadhaar_modal","ScfInvoiceDashboard","pageSanityHandler","dtHandler","formatted_due_date_relative","badge_invoice_status","formatted_purpose","purpose","badge_purpose","renderDataTable","initializeDataTable","mainTableTransformer","ScfDueInvoiceDashboard","other_charges","today","dueDateParts","dueDate","isPastDue","due_date_badge","diffTime","diffDays","ceil","overdue_days","due_status_message","pending_days","ScfPreApproval","checkZipcodeEligibility","elem_company_cred_period","elem_company_zipcode_pre","validatorZipcode","validateParams","elem_pre_app_amount_div","elem_company_pre_amount","preApprovalFormula","elem_company_m_sales_inp","serving_zipcode","CollectionApplicationHandler","lan_id","sub_lan_id","getLan","getSubLan","emiScheduleTableHandler","emiPaymentsTableHandler","ledgerTableHandler","total_paid","total_due","dpd","business_application_id","renderLanDetails","elem_lan_details","renderSubLanDetails","principal_amount","interest","loan_sanction_date","loan_start_date","loan_end_date","elem_sub_lan_details","transformSubLanDetails","emiScheduleTableTransformer","amount_paid","paid_on","payment_mode","source","client_ref_id","emiPaymentsTableTransformer","charges","debit","credit","ledgerTableTransformer","path","pathname","handlerDetails","handlerDashboard","ScfApplicationDashboard","statusClickHandler","remark","alert","created_at_ago","sales_manager_name","credit_manager_name","status_color","ScfApplicationDetails","userWisePanelHandler","PanelAnalysis","PanelCounterParties","PanelPd","PanelGstin","PanelDomainEmail","PanelDecision","UdhyamAadhar","Eligibility","LoanTransaction","SalesPerson","TagBranch","attachProfileButtonHandler","setItem","profileButton","reactProfileUrl","applicationId","fetchDomainEmailData","refreshDomainEmail","container","createNestedTable","_json$data$result$0$e","_json$data$result$0$e2","_json$data$result$0$e3","_json$data$result$0$e4","_json$data$result$0$d","_json$data$result$0$d2","_json$data$result$0$e5","_json$data$result$0$e6","_json$data$result$0$i","_json$data$result$0$i2","_json$data$result$0$i3","_json$data$result$0$i4","_json$data$result$0$i5","_json$data$result$0$e7","_json$data$result$0$s","_json$data$result$0$s2","_json$data$result$0$s3","company","domainName","domainCountry","emailRiskAdvice","advice","emailRiskReason","reason","ipAddress","ipReputation","ipCity","ipRegion","ipNetSpeedCell","domainAge","gravatar","googleSearch","twitter","jsonObj","table","borderCollapse","width","border","marginTop","fontFamily","fontSize","hasOwnProperty","tr","capitalizedKey","tdKey","padding","textAlign","backgroundColor","tdValue","ul","margin","listStyleType","li","marginBottom","navPanelHandler","SubPanelAnalysisBanking","uploadBalanceSheet","renderBalanceSheet","fetchFinancialTrendline","bureauSubPanelHandler","renderUploadedBureauReport","downloadCamReport","file","wordLimit","charLimit","firstWords","lastChars","bureauSubTabs","srcdoc","subTabContainer","className","subTabButton","truncateText","tab","deleteBureauFile","requestHandlerDocument","Blob","download","revokeObjectURL","removeChild","deleteButton","newDeleteButton","cloneNode","replaceChild","doc_id","_loop2","elements","html_data","elem_name","elem_cp_extra_input_fields","elem_cp_vintage_month","elem_cp_payment_term","elem_cp_vintage_year","elem_cp_contact_person_name","elem_cp_contact_person_number","elem_cp_contact_person_email","elem_cp_contact_person_designation","elem_btn_cp_submit","elem_btn_cp_validate","cp_modal","openModalAddCounterParty","createCp","getNameFromPan","approveCounterParty","fillCpVintageField","yearSelect","currentYear","elem_btn","applicant_present","vintage_month","payment_term","vintage_year","contact_person_name","contact_person_number","contact_person_email","contact_person_designation","renderCounterParties","validatorPan","currentMonth","generateScore","cp_badge_status","cp_lender_badge_status","lender_status","parsedHTML","destroyCp","score","business_applicant","charCodeAt","badge_score","getQuestions","submitCPVQuestions","submitPDQuestions","generatePdQuestionsPdf","toggleCPVSections","fillPdTable","question","section","mandatory","label_title","toggleErrorMessage","isLoanDetailsTableShown","showLoanDetailsTable","_response$data$find","_response$data$find2","_response$data$find3","all_quest","questions","orderedSections","q_data","latitude","longitude","updateGoogleMap","header","fontWeight","hideAllSections","uploadDocuments","fetchDropDownValuesIndustry","fetchDropDownLevel2","toISOString","toggleSubmitButtons","togglePDSections","mapFrame","src","allQuestions","children","pass1","validatePDValues","pass2","elem_file","firstElementChild","segment","level","parent_code","getAllGstin","generateGstReportPdf","fetchGstFilings","filings_fetched","fetchGstFilingsLink","generateGstReportLink","generateGSTFile","gstServiceUrls","business_gst_number","service_url","idPrefix","links","last_n_months_keys","jsondata","month_range","nth","htmlElem","trend_lines","trends","month_idx","tdElem","renderHTML","submitApplicationDecision","fetchApplicationDeviation","submitApplicationDeviation","clearDeviationForm","submitLoanData","fetchLoanDetails","fetchGatingDetails","clearLoanDetailsForm","getApplicationDecision","initializeScorecardEventListeners","applicationDecision","applicationRemarks","borrowerScorecard","borrower_rating","management_rating","financials_rating","banking_rating","bureau_p_rating","bureau_c_rating","gst_rating","total_rating","borrower_scorecard","field_id","test","nameOfBanker","nameOfFacility","borrowingRelationship","typeOfLoan","sanctionDate","sanctionAmt","currentOutstanding","emiInterest","tenure","emiDate","emiTracked","loanId","nature_of_facility","borrowing_relationship","type_of_loan","sanction_date","sanction_amount","current_outstanding","emi_interest","loan_tenure","emi_date","emi_tracked_and_bank","loan_data_id","elem_bankers","date","day","getDate","month","year","destroyLoanDetails","editLoanDetails","downloadBorrowerData","renderAppLoanDetailsTable","is_applicable_true","is_applicable","is_applicable_false","is_applicable_none","renderGatingDetailsTable","submitGatingData","applicable","gate_keeper_data","dateString","parts","loanData","loan_id","bankName","natureOfFacility","convertDateToDDMMYYYY","sanctionAmount","loanTenure","emiTrackedAndBank","applicationDeviation","applicationJustification","deviation","justification","deviation_id","renderAppDeviationTable","deviations","destroyAppDeviation","editAppDeviation","calculateTotal","total","fetchUdyamDetails","Gstindetails","tempUdyamSearch","mcaDetails","renderGstDetails","udyam_details","tsp_data","notFoundMsg","business_applicant_pan","profile_name","combination","createNestedTableUydam","inputbox","eligibility_stage","mcaData","mca_data","createTableRow","keyCell","textTransform","valueCell","list","listItem","nestedTable","nestedKey","idxgst","transformGstData","parentKey","_loop3","color","submitForm","fetchEligibilityData","renderFormSections","_dateString$split2","_this2","updateTotals","totalYearlyPurchase","counterParty","yearlyPurchaseValue","formattedDate","formatDateForInput","proposed_exposure","bankingDetails","renderBankingDetails","bankAccounts","bank","daily_abb","totalDailyABB","dailyabb","populateFormFields","counterparty","total_eligiblity","yearlyPurchaseElement","counter_party_id","creditPeriodElement","eligibilityElement","proposedExposureElement","yearly_purchase","credit_period","eligibility","abb","dailyAbElement","nonBusinessTransactionsPercentageElement","eligibleAbElement","proposedExposureAbbElement","foirFactorElement","eligibleElement","emiFactorElement","non_business_transactions_percentage","eligible_abb","proposed_exposure_abb","foir_factor","emi_factor","gst","avg_monthly_sales","industry_margin","total_income_foir","existing_obligations_per_month","eligible_monthly_income","financial_ratios","ratios","drop_in_sales","positive_atnw","positive_cash_profit","dpd_debtors_vs_atnw","debtor_ageing_credit_ageing","tca_debtor_stock","dscr","tol_atnw","de_ratio","debt_turnover","bto","turnover","to_gst_last_12_month","sales_growth_factor","gross_wc_requirements","current_banking_facilities","net_eligibility","professional","gross_monthly_receipts","income_factor","add_salaries_per_month","income","gross_monthly_income","less_exceptional_items","add_withdrawals","dscr_factor","validateForm","eligibilityStage","eligibility_basis_turnover","professional_receipts","bankAccount","bankId","bankAccountElement","dailyAbbElement","nonBusinessTransactionsElement","factor_percent","counterpartyElement","counter_party","sectionsToValidate","unshift","sectionId","isNaN","apiUrl","requestBody","renderLoanDetails","transactions","renderTransactionDetails","renderNoTransactionData","renderNoData","dateStr","Intl","DateTimeFormat","dateStyle","timeZone","_this3","totalInvoiceValue","totalRemainingAmount","totalDisbursementAmount","totalRealizedInterest","totalPrincipalOutstanding","totalPrincipalDue","totalOutstandingInterest","totalLatePaymentCharges","totalOtherCharges","processedData","totalValue","row_colour","disbursment_amount","realized_interest","principal_outstanding","principal_due","outstanding_interest","late_payment_charges","formatDateToIST","disbursment_date","renderedHtml","remaining_amount","_this4","totalTransactionAmount","transaction","transaction_amount","van","transaction_date","utr_number","collection_bank_name","collection_bank_account_no","renderedOption","selectedSalesPersonId","postEndpoint","sales_manager_id","sales_manager","selectedBranchId","AllAnchorsList","anchor_id","elem_anchor_id","elem_program_id","uploaded_file","elem_uploaded_file","fetchAllAnchorsList","renderAnchorTable","anchors","AnchorApplications","AnchorBorrower","anchor_applicant_id","applicants","LeadsLotDetails","fetchLeadsLotDetails","renderBusinessApplicantTable","renderUsersTable","users","business_applicants","AnchorNewInvoicesLot","submitAnchorInvoicesLot","fetchAllPrograms","fileData","AnchorNewLeadsLot","submitAnchorLeadLot","renderAnchorLeadsLot","anchor_leads_lot","selectedValue","getAnchorLeadsLot","renderAnchorLeadsLotTable","password","new_password","confirm_password","forgot_password_modal","fp_email","elem_otp","elem_new_password","elem_confirm_password","hiddeShowPasswordSignIn","elem_fp_email","btn_sign_in","btn_sign_up","validateOtp","signIn","changePassword","reCaptchaHandler","sendNewPassword","signInHandler","grecaptcha","getResponse","redirect","passwordChangeComponent","otpComponent","user_id","userLoginRedirection","saveCookie","permissions","session_id","scf_application_present","passwordChangeGetValues","passwordChangeValidateValues","old_password","forgotPasswordGetValues","forgotPasswordValidateValues","logout","deleteCookie","removeItem","perms","ScfSignUp","mobile_otp","email_otp","password_conf","tnc","tnc2","business_name","elem_business_name","elem_mobile_otp","elem_email_otp","elem_password_confirmation","elem_tnc","elem_tnc2","y","userPanelHandler","hiddeShowPasswordSignup","inputField","mobileOtpInputField","sendMobileOtpButton","resendMobileOtpButton","emailOtpInputField","sendEmailOtpButton","resendEmailOtpButton","mobileOtpInputValue","mobile_number","emailOtpInputValue","SupportPage","sendSupportEmailHandler","goToDashBoardHandler","subject","ScfCounterPartyConfirmation","cp_name","verify_token","token","search","rejectTmpl","successTmpl","valid_token","cp_confirmation_done","allowed","is_admin","toggleConsentValue","close","submitCpConfirmation","setupVanCheckbox","Vanbank","bankSelectFieldsHandler","vanCheckbox","vanFields","validateValuesVan","ifscCode","holderName","selectedCheckboxId","updateHiddenField","unselectAllCheckboxes","currentId","escrowCheckbox","atLeastOneSelected","cp_bank_account_id","user_agent","userAgent","ScfCounterParty","elem_applicant_details_counterparty","elem_applicant_details_counterparty_gst","elem_srch_company_cin","elem_srch_company_name","elem_srch_company_list","panelDecision","renderUserPermissionWise","backButton","history","back","fillCounterPartyDecision","scf_counter_party","part","cp_banking_token","renderApplicationDetailsCounterParty","renderApplicationDetailsCounterPartyGst","mcaCounterPartyDetails","sendEmailConfirmation","editButton","cin_llp_modal","mcaSearchCinOrLlp","val_cin","mca_data_json","replaceWithNotAvailable","gst_filings","gst_type","filed_clr","is_anchor_product","submitQuestions","validatePdValues","submitPDSectionQuestions","endsWith","all_quest_cpv","all_quest_pd","elem_product_type","elem_category_of_cp","elem_type_of_rating","elem_cp_rating_issuer","elem_date_of_rating","elem_cp_rating","elem_cp_exposure_limit","elem_cp_tenure_cap","elem_cp_margin_cap","elem_cp_allowed_underlying_instrument","elem_cp_require_escrow","elem_cp_status","elem_lender_hsn_list","elem_counter_party_beneficiary_id","toggleCreditRatingSection","bind","submitDecision","product_type","category_of_cp","type_of_rating","cp_rating_issuer","date_of_rating","cp_rating","cp_exposure_limit","cp_tenure_cap","cp_margin_cap","cp_allowed_underlying_instrument","cp_require_escrow","cp_status","lender_hsn_list","counter_party_beneficiary_id","creditRatingSection","category","credit_rating","rating","exposure_limit","tenure_limit","margin_limit","allowed_underlying_instrument","require_escrow","lender_hsn","beneficiary_id","hsn_required","lenderHsnListElement","counter_party_scorecard","getDecision","ScfInvoiceConfirmation","invoice_id","elem_invoice_document","invoice_document","content_type","urlParams","tokenNull","inv_type","cp_invoice_confirmation_done","setInvoiceDocument","submitInvoiceConfirmation","decision_invoice","ScfInvoice","elem_invoice_document_2","elem_div_inv_data","scf_invoice_irn_document","elem_irn_modal_header","elem_irn_modal","invoice_po","irn","eway_bill","invoice_amount","amount_due","terms","buyer","buyer_gstin","seller","seller_gstin","verified","tranch_no","disbursement_date","outstanding_due","principal_dpd","interest_dpd","invoice_aging","closed_date","invoice_status","eod_date","elem_scf_application_id","elem_scf_lender_application_id","elem_scf_counter_party","elem_scf_inv_status","elem_invoice_po","elem_invoice_date","elem_irn","elem_eway_bill","elem_invoice_amount","elem_buyer","elem_buyer_gstin","elem_seller","elem_seller_gstin","elem_verified","elem_e_invoice","elem_tranch_no","elem_disbursement_date","elem_loan_tenure","elem_realized_interest","elem_principal_due","elem_outstanding_due","elem_late_payment_charges","elem_other_charges","elem_principal_dpd","elem_interest_dpd","elem_invoice_aging","elem_closed_date","elem_invoice_status","elem_eod_date","elem_div_irn_upload","elem_btn_submit_irn","elem_irn_preview","scf_application_invoice_id","Drawdown","BuyerVerification","BankDetails","getInvoiceData","updateInvoice","documentContainer","document2Container","createOrUpdateElement","height","contentType","transformData","invoice_token","buyer_id","getBuyerGstins","supplier_gstin","e_invoice","invoice_hsn","uploadIrn","sendEmail","invoiceBackbutton","irn_document","irnDocumentLink","setInvoiceData","Score","purchase_order_no","e_way_bill_number","pay_terms","supplier_id","invoice_line_items","buyer_cp_id","uploadIrnImage","fileBody","getIrnDocument","clean","account_no","account_holder_name","elem_account_no","elem_account_holder_name","elem_banking_details","setBankingDetails","cp_confirmed_bank_account","elem_submit_buyer_btn","buyerVerify","elem_sanction_checker","submitChecker","financingPartnerChange","disbursedInvoice","limit_data","scf_lender_applications_id","disbursal_data","program_rule","transaction_fee_amount","max_value","int_mode_value","invoice_transcation_amount_applied_on","invoice_transcation_fee_applied_on","disbursment_permissible","active_disbursment","repayment_date","elem_sanction_maker","inv_data","comment","elem_score","elem_decision","elem_comment","div_panel_score","renderInvoiceScore","submitScore","sendTOChecker","invoiceDDRreject","toggleDecision","validateScoring","validateDecision","funding_requested","disbursement_permissible","active_disbursement","repayment_amount","submitDisbursement","AbstractUser","elem_pasword","name_of_org","validatorText","AbstractPan","company_pan","company_pan_type","company_name","elem_company_pan","elem_company_pan_type","elem_company_name","AbstractMCA","cin_or_llp_id","date_of_inc","company_address","company_city","company_state","company_zipcode","roc_code","company_email","elem_cin_or_llp_id","elem_company_type","elem_date_of_inc","elem_company_address","elem_company_city","elem_company_state","elem_roc_code","elem_company_zipcode","elem_company_email","elem_select_company_modal","AbstractQuestion","quest_values","validatorNumber","AbstractApplication","required_tenure","required_amount_head","elem_required_tenure","elem_required_amount_range","elem_application_product","productSelectHandler","tenureField","selectedProduct","errorMessage","max","ariaLabel","optionData","once","requiredAmountInput","AbstractOwner","director_id","elem_aadhaar","elem_zipcode","ScfOnboarding","APP_MAX_ALLOWED_PANEL","POST_APP_MAX_ALLOWED_PANEL","max_panel","applicant_id","is_edit","businessType","obj_user","obj_pan","obj_application","obj_mca","obj_gst","obj_question","obj_owner","editApplicationHandler","pagesValidator","changePageBasedOnEdit","panelNavigationHandler","panPanelHandler","productPanelHandler","mcaPanelHandler","gstPanelHandler","completeOnboardingHandler","consenthandler","ownersPanelHandler","udyamPanelHandler","documentPanelHandler","counterPartyPanelHandler","consentPanelHandler","sideNavToggleHandler","businessPromoterDetailsHandler","setDefaultNavBar","formCardsToggle","firstFalseElement","jsonData","onboarding_status","firstFalseEncountered","dataPanelNumberId","validationStatus","liElement","elementId","tempFeedData","tempUdyamAddressCopyPaste","populateNameFromPan","populateCityStateFromPincode","promoterDataSubmit","communicationAddressSubmit","populateTitleFromPanType","uploadDocumentsSubmit","bussinessAndPromotersSubmit","submitcpOnboarding","populateTitleRelationShipwith","populateRelationship","titleRelationShipwith","titleOfBorrower","isCoapplicant","titleOptionsMap","button2","primaryAddress","primaryCity","primaryPincode","primaryState","application_gst","bankAccountSection","communication_address","communication_pincode","communication_city","communication_state","gst_number","scrollIntoView","behavior","proceedNext","resetCpForm","skipMethod","HTMLInputElement","HTMLElement","renderCpRowsInTable","promoterPan","promoterName","promoterFirstName","promoterLastName","promoterBirthDate","promoterGender","promoterEmail","promoterMobile","promoterAddress","promoterPincode","promoterCity","promoterState","promoterYearsAtCurrentAddress","promotershareholding","directorId","communicationZipcode","communicationCity","communicationState","communicationZipcodeValue","getZipcodeDetails","district","state_name","promoterPincodeValue","primaryGstAddress","primaryGstCity","primaryGstState","businessContactAddress","SameAddressCheckbox","primaryGstZipcode","udyamSearchField","udyamBusinessName","UdyamFetchedNameInForms","businessPanUdyamPage","gstNumberUdyamPage","BusinessNameFromBusinessApplicant","allGstsOnUdyamPage","_step","_iterator","_createForOfIteratorHelper","business_gst","s","n","done","primary","primaryGstNumber","err","f","_i","_allGstsOnUdyamPage","parent","categoryClass","childDivs","childIconRight","childIconDown","all_panel_btn","isValidPanel","isSoleProprietor","active_panel_number","active_panel_id","panel","panelActiveComplete","onboardingLogoutButton","nav_panel_link_id","touch_max_panel","clt","msg_show","ImageBitmapRenderingContext","pry","tabs","t","owner_panel_head","owner_panel_left","entity_panel_content","elem_submit","placeholderHandler","constitutionBasedChanges","submitProduct","application_tenure","natureOfBusiness","requested_tenure","nature_of_business","getPreApprovedOffer","mcaSearchCompany","mcaCreateBusinessApplicant","mcaBackToSelection","offerTenure","offer","elem_pan_name","gstGetAllGsts","questSetQuestionnaireAndPrimaryGst","proceedNextconsent","skipConsentButton","mcaSetCompanyDetails","companies","mcaFillCompaniesList","company_id","mcaGetCompanyDetails","company_data","company_constitution","date_of_incorporation","registered_address","roc","elem_all_gstins","gst_data","primaryGst","gstGetGstDetails","elem_gstin_details","tmpl_gst_details","reg_vintage","primary_gst","begin_date_formatted","begin_date","business_director_id","aadhaar_number","showOwnerDetails","owner","ownersDetailsContainer","abs_owner","bid","ownersGetDetails","consentCreate","all_consents","brk","allChecked","inp_consent","proceedPrevious","isAttached","assembleParameters","editFillProductPanel","editFillBusinessPagePanel","requestedTenure","floor","communication_zipcode","organization","toggleInput","counterPartiesPanel","postSanctionPanel","uploadSampleInvoice","btn_action","ScfSalesNewApplicationPage","new_applicant_pan_number","new_applicant_pan_name","new_applicant_email","new_applicant_mobile","elem_new_applicant_pan_number","elem_new_applicant_pan_name","elem_new_applicant_email","elem_new_applicant_mobile","submitPanNumber","createNewBorrower","panNumber","validateValuesForPanSubmit","newApplicationUrl","validateValuesForNewUserSubmit","ScfUserDashboard","user_first_name","user_last_name","user_email","user_mobile","user_password","user_password_confirmation","user_lender","user_sales_manager","elem_user_first_name","elem_user_last_name","elem_user_email","elem_user_mobile","elem_user_password","elem_user_password_confirmation","elem_user_permission","elem_user_lender","elem_user_sales_manager","submitUserDetails","toggleExtraInputFields","fillLendersList","fillSalesManagersList","manager","lenderElements","salesManagerElements","password_confirmation","permission","lender_id","ScfUserSettings","user_email_otp","user_mobile_otp","user_old_password","user_new_password","elem_user_email_otp","elem_user_mobile_otp","elem_user_old_password","elem_user_new_password","mobileOtpHandler","emailOtpHandler","fetchUserDetails","populateInputFields","scf_user","ScfUserNewBorrower","new_applicant_cin","elem_new_applicant_cin","anchor_applicant","AnchorPdModule","is_anchor","cin","showPdModal","readOnly","promoterSave","promoter_share_holdong"],"mappings":"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","file":"js/scf/scf-a53f33c20f79c37a1223.chunk.js","sourcesContent":["import 'datatables'\nimport 'daterangepicker'\nimport * as Constants from './constants';\nimport Mustache from 'mustache';\nimport Moment from 'moment';\nimport { ScfPermission, ScfSignIn } from '../scf/scf_auth_handler'\n\nexport class Utils {\n\n static renderDataTable(dt_selector) {\n return $(dt_selector).DataTable({\n scrollY: '38rem',\n scrollCollapse: false,\n searching: true,\n lengthChange: false,\n retrieve: true,\n paging: false,\n info: false,\n processing: true,\n language: {\n info: \"Showing _TOTAL_ entries\",\n emptyTable: \"No data found in this date range\"\n },\n order: [],\n });\n }\n\n static requestHandlerDocument(url, req_type, body, options = {}) {\n let stringify = false;\n let headers = {\n 'x-session-id': this.readCookie('_alf-session-id'),\n 'x-org-id': Constants.ORG_ID\n };\n\n if (!(body instanceof FormData)) {\n headers['Content-Type'] = 'application/json';\n stringify = true;\n }\n\n if (req_type === Constants.REQUEST.get) {\n url = Constants.SERVICE_BASE.concat(url);\n if (options.limit && options.skip) {\n body.limit = parseInt(options.limit);\n body.skip = parseInt(options.skip);\n }\n url = url.concat('?', new URLSearchParams(body));\n return fetch(url, {\n method: 'GET',\n headers: headers\n }).then(function (response) {\n if (response.status === 403) {\n window.location = '/scf';\n }\n if (options.responseType === 'blob') {\n return response.blob();\n }\n return response.json();\n }).catch(function (error) {\n return {\n message: \"Error\",\n errors: {\n \"Server error\": [\"Please contact the administrator\"]\n }\n };\n });\n } else {\n return fetch(Constants.SERVICE_BASE.concat(url), {\n method: 'POST',\n headers: headers,\n body: stringify === true ? JSON.stringify(body) : body\n }).then(function (response) {\n if (response.status === 403) {\n window.location = '/scf';\n }\n if (options.responseType === 'blob') {\n return response.blob();\n }\n return response.json();\n }).catch(function (error) {\n return {\n message: \"Error\",\n errors: {\n \"Server error\": [\"Please contact the administrator\"]\n }\n };\n });\n }\n }\n\n static requestHandler(url, req_type, body, limit = null, skip = null) {\n let stringify = false;\n let headers = {\n 'x-session-id': this.readCookie('_alf-session-id'),\n 'x-org-id': Constants.ORG_ID\n };\n\n if (!(body instanceof FormData)) {\n headers['Content-Type'] = 'application/json';\n stringify = true;\n }\n\n let that = this;\n if (req_type === Constants.REQUEST.get) {\n url = Constants.SERVICE_BASE.concat(url);\n if (limit && skip) {\n body.limit = parseInt(limit);\n body.skip = parseInt(skip);\n }\n url = url.concat('?', new URLSearchParams(body));\n return fetch(url, {\n method: 'GET',\n headers: headers\n }).then(function (response) {\n if (response.status === 403) {\n window.location = '/scf'\n }\n return response.json();\n }).catch(function (error) {\n return {\n message: \"Error\",\n errors: {\n \"Server error\": [\"Please contact the administrator\"]\n }\n }\n })\n } else {\n return fetch(Constants.SERVICE_BASE.concat(url), {\n method: 'POST',\n headers: headers,\n body: stringify === true ? JSON.stringify(body) : body\n }).then(function (response) {\n if (response.status === 403) {\n window.location = '/scf'\n }\n return response.json();\n }).catch(function (error) {\n return {\n message: \"Error\",\n errors: {\n \"Server error\": [\"Please contact the administrator\"]\n }\n }\n })\n }\n }\n\n static refreshDataTable(table_container_id, dt_instance, url, req_type, body, mu_tmpl, transformer, list_key, limit = Constants.API_LIMIT.limit, offset = Constants.API_LIMIT.offset) {\n let that = this;\n $(table_container_id).find('#dt-table-loader').removeClass('invisible')\n let load_more = document.querySelector(table_container_id + ' .dt-footer #dt-table-load-more #dt-load-more');\n load_more.disabled = true;\n let search_button = document.getElementById('dt-search-button')\n search_button.disabled = true;\n this.requestHandler(url, req_type, body, limit, offset)\n .then(function (response) {\n if (response.message === 'OK' && response.data[list_key].length > 0) {\n let template = document.getElementById(mu_tmpl).innerHTML;\n let rendered = response.data[list_key].map(function (row) {\n let trans = row;\n if (transformer != null) {\n trans = transformer.call(this, row);\n }\n return $.parseHTML(Mustache.render(template, trans))[1];\n })\n dt_instance.rows.add(rendered).draw();\n $(table_container_id).find('#dt-table-info').html('Showing ' + dt_instance.page.info().recordsTotal + ' entries');\n } else {\n if (response.errors) {\n that.showToast(response.message, that.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }\n $(table_container_id).find('#dt-table-loader').addClass('invisible');\n load_more.disabled = false;\n that.copyToClipboard(); // Fix multi event attachment\n search_button.disabled = false;\n })\n }\n\n static loaderToast(state) {\n if (state === 1) {\n let template = document.getElementById('loader-toast-tmpl').innerHTML;\n document.getElementById('toast-holder').append($.parseHTML(Mustache.render(template, {}))[1])\n document.getElementById('loading-box').classList.add('show', 'slide', 'slide-in');\n } else {\n if (document.getElementById('loading-box')) {\n document.getElementById('loading-box').classList.add('slide-out');\n setTimeout(function () {\n document.getElementById('loading-box').remove();\n }, 1000)\n }\n }\n }\n\n static placeholderHandler(element, state) {\n if (state === 1) {\n element.parentElement.parentElement.querySelector('.placeholder-content').classList.add('no-display');\n element.parentElement.parentElement.querySelector('.placeholder-glow').classList.remove('no-display');\n } else {\n element.parentElement.parentElement.querySelector('.placeholder-content').classList.remove('no-display');\n element.parentElement.parentElement.querySelector('.placeholder-glow').classList.add('no-display');\n }\n\n }\n\n static buttonWithLoader(element, state) {\n if (state === 1) {\n element.parentElement.querySelector('.badge').classList.remove('no-display');\n element.classList.add('no-display');\n } else {\n element.parentElement.querySelector('.badge').classList.add('no-display');\n element.classList.remove('no-display');\n }\n }\n\n static showToast(title, sub_text, ttype = Constants.TOAST.info) {\n if (title === 'OK') {\n title = 'Success';\n }\n let tclass;\n switch (ttype) {\n case Constants.TOAST.success:\n sub_text = [sub_text];\n tclass = 'success';\n break;\n case Constants.TOAST.fail:\n tclass = 'fail';\n break;\n default:\n tclass = 'info';\n }\n let toast_id = Math.random().toString(36).replace('0.', 'toast_box_' || '');\n let template = document.getElementById('toast-tmpl').innerHTML;\n document.getElementById('toast-holder').append($.parseHTML(Mustache.render(template, { title: title, sub_text: sub_text, tid: toast_id }))[1])\n document.getElementById(toast_id).classList.add('show', tclass, 'slide', 'slide-in');\n setTimeout(function () {\n // document.getElementById(toast_id).classList.remove( 'slide-in');\n // document.getElementById(toast_id).classList.add('slide-out');\n setTimeout(function () {\n document.getElementById(toast_id).remove();\n }, 1000)\n }, 5000);\n }\n\n static capitalizeFirstLetter(string) {\n if (string == null) {\n return;\n }\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n }\n\n static formatTime(string) {\n if (string == null) {\n return;\n }\n return Moment(string).format('LLL');\n }\n\n static formatDate(string) {\n if (string == null) {\n return;\n }\n return Moment(string).format('DD MMMM YYYY');\n }\n\n static formatTimeRelative(string) {\n if (string == null) {\n return;\n }\n return Moment(string).fromNow();\n }\n\n static formatErrorMessage(errors) {\n let result = [];\n for (let [key, val] of Object.entries(errors)) {\n if (val instanceof Object && val instanceof Array) {\n key = Utils.capitalizeFirstLetter(key).split(\"_\").join(\" \");\n result.push(key + \": \" + val);\n\n } else {\n for (let [sub_key, sub_val] of Object.entries(val)) {\n sub_key = Utils.capitalizeFirstLetter(sub_key).split(\"_\").join(\" \");\n result.push(sub_key + \": \" + sub_val);\n }\n }\n }\n return result;\n }\n\n static assembleParameters() {\n let result = {};\n let params = document.location.href.split('?')\n if (params.length > 1) {\n params = params.pop();\n params.split('&').forEach(function (element, index) {\n result[element.split('=')[0]] = decodeURIComponent(element.split('=')[1]).trim();\n });\n }\n return result;\n }\n\n static navPanelHandler(link_class, panel_class) {\n document.querySelectorAll(link_class).forEach((element) => {\n element.addEventListener('click', event => {\n if (element === event.target || element.contains(event.target)) {\n document.querySelectorAll(link_class).forEach(element => {\n element.classList.remove('active')\n });\n element.classList.add('active');\n document.querySelectorAll(panel_class).forEach(element => {\n element.classList.add('no-display')\n });\n document.getElementById(element.getAttribute('data-panel')).classList.remove('no-display');\n }\n })\n })\n }\n\n\n static setupNavPanel(title, sub_title, panel_id, indx) {\n document.getElementById('custom-nav-panel-tabs').append($.parseHTML(Mustache.render(document.getElementById('nav_panel_tmpl').innerHTML, {\n title: title,\n sub_title: sub_title,\n panel_id: panel_id,\n indx: indx\n }))[1])\n }\n\n static snakeToTitleCase(snakeStr) {\n return snakeStr.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\n }\n\n static validatorEmail(email) {\n return String(email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n );\n }\n\n static showInputError(input_elem, error_msg) {\n input_elem.classList.add('input-error');\n input_elem.parentElement.querySelector('.hint').innerHTML = error_msg;\n input_elem.parentElement.querySelector('.hint').classList.remove('no-display');\n }\n\n static hideInputError(element) {\n element.classList.remove('input-error');\n element.nextElementSibling.classList.add('no-display');\n }\n\n static removeInputError(input_elem) {\n input_elem.parentElement.querySelector('.hint').classList.add('no-display');\n }\n\n static reInput(input_elem) {\n input_elem.classList.remove('input-error');\n this.removeInputError(input_elem)\n }\n\n static paiseToRupee(amount, shorten = false, add_sign = true) {\n if (amount == null) {\n amount = 0;\n }\n let a = parseInt(amount / 100);\n if (shorten) {\n a = this.numberShortener(a);\n }\n if (add_sign) {\n a = \"\".concat(a);\n }\n return a;\n }\n\n static numberShortener(amount) {\n let result = String(amount.toFixed(amount === 0 || amount == null ? 0 : 1));\n if (amount >= 1e3 && amount < 1e5) {\n result = (amount / 1000).toFixed(1).concat(' K')\n } else if (amount >= 1e5 && amount < 1e7) {\n result = (amount / 100000).toFixed(1).concat(' L')\n } else if (amount >= 1e7) {\n result = (amount / 10000000).toFixed(1).concat(' Cr')\n }\n return result;\n }\n\n static indianRepresentation(amount) {\n if (amount == null) {\n return 0;\n }\n return parseInt(amount).toLocaleString('en-IN');\n }\n\n static initializePagers(parent_panel_id) {\n let prp = document.getElementById(parent_panel_id);\n prp.querySelectorAll('.pager-items').forEach((element) => {\n element.addEventListener('click', event => {\n prp.querySelectorAll('.pager-items').forEach(element => { element.classList.remove('active') });\n element.classList.add('active');\n prp.querySelectorAll('.pager-pane').forEach(\n element => {\n element.classList.add('no-display')\n });\n document.getElementById(element.getAttribute('data-id')).classList.remove('no-display');\n })\n })\n }\n\n static formatPickerDate(string) {\n if (string == null) {\n return;\n }\n return Moment(string).format('YYYY-MM-DD');\n }\n\n static saveCookie(key, value) {\n document.cookie = key + \"=\" + value + \";path=/\";\n }\n\n static deleteCookie(key) {\n document.cookie = key + \"=;path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT;\";\n }\n\n static readCookie(key) {\n let result;\n let web_cookie = document.cookie;\n web_cookie = web_cookie.split(\";\");\n for (let c in web_cookie) {\n let wc = web_cookie[c].split(\"=\");\n if (wc[0].trim() === key) {\n result = wc[1];\n break;\n }\n }\n return result;\n };\n\n static dataTableLoadMoreHandler(table_container_id, picker, dt_instance, url, req_type, mu_tmpl, transformer, list_key) {\n let element = document.querySelector(table_container_id + ' .dt-footer #dt-table-load-more #dt-load-more')\n element.addEventListener('click', event => {\n if (element === event.target || element.contains(event.target)) {\n let body = {\n start_date: picker.attr('data-start'),\n end_date: picker.attr('data-end')\n }\n let skip = parseInt(element.getAttribute('data-skip')) || Constants.API_LIMIT.limit\n if (dt_instance.page.info().recordsTotal < skip) {\n return;\n }\n Utils.refreshDataTable(\n table_container_id,\n dt_instance,\n url,\n req_type,\n body,\n mu_tmpl,\n transformer,\n list_key,\n Constants.API_LIMIT.limit,\n skip);\n element.setAttribute('data-skip', skip + Constants.API_LIMIT.limit)\n }\n })\n }\n\n static dateRangeSelectHandler(table_container_id, picker, start, end, dt_instance, url, req_type, mu_tmpl, transformer, list_key) {\n picker.html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));\n picker.attr('data-start', start.format('YYYY-MM-DD'));\n picker.attr('data-end', end.format('YYYY-MM-DD'))\n let body = {\n start_date: start.format('YYYY-MM-DD'),\n end_date: end.format('YYYY-MM-DD')\n }\n dt_instance.clear().draw();\n Utils.refreshDataTable(\n table_container_id,\n dt_instance,\n url,\n req_type,\n body,\n mu_tmpl,\n transformer,\n list_key);\n return true;\n }\n\n static initializeDataTable(table_container_id, dt_instance, url, req_type, body, mu_tmpl, transformer, list_key, filters) {\n let start = Moment().subtract(100, 'days');\n let end = Moment();\n let that = this;\n let dt_range_picker = $(table_container_id + '> .table-filters').find('#dt-date-filter');\n let dt_search_element = document.querySelector(table_container_id + ' .table-filters #dt-search-dropdown');\n\n dt_range_picker.daterangepicker({\n startDate: start,\n endDate: end,\n maxDate: Moment().add(1, 'days'),\n locale: { cancelLabel: 'Clear' },\n ranges: {\n 'Today': [Moment(), Moment()],\n 'Yesterday': [Moment().subtract(1, 'days'), Moment().subtract(1, 'days')],\n 'Last 7 Days': [Moment().subtract(6, 'days'), Moment()],\n 'Last 30 Days': [Moment().subtract(29, 'days'), Moment()],\n 'This Month': [Moment().startOf('month'), Moment().endOf('month')],\n 'Last Month': [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')]\n }\n }, function (st, en) {\n that.dateRangeSelectHandler(table_container_id, dt_range_picker, st, en, dt_instance, url, req_type, mu_tmpl, transformer, list_key);\n });\n\n that.dateRangeSelectHandler(table_container_id, dt_range_picker, start, end, dt_instance, url, req_type, mu_tmpl, transformer, list_key);\n that.dataTableLoadMoreHandler(table_container_id, dt_range_picker, dt_instance, url, req_type, mu_tmpl, transformer, list_key);\n that.initializeDataTableSearch(table_container_id, dt_instance, url, req_type, mu_tmpl, transformer, list_key, dt_range_picker);\n that.initializeDataTableFilters(dt_search_element, filters);\n that.initializeDropdown(dt_search_element);\n }\n\n\n static initializeDataTableSearch(table_container_id, dt_instance, url, req_type, mu_tmpl, transformer, list_key, picker) {\n const dt_search_button = document.querySelector(table_container_id + ' .table-filters #dt-search-button');\n const dt_search_inp = document.querySelector(table_container_id + ' .table-filters #dt-search');\n\n dt_search_button.addEventListener('click', event => {\n let body = {\n start_date: picker.attr('data-start'),\n end_date: picker.attr('data-end'),\n search_term: dt_search_inp.value\n }\n dt_instance.clear().draw();\n Utils.refreshDataTable(\n table_container_id,\n dt_instance,\n url,\n req_type,\n body,\n mu_tmpl,\n transformer,\n list_key\n );\n });\n }\n\n\n\n static initializeDataTableFilters(search_elem, search_obj) {\n if (Object.keys(search_obj).length > 0) {\n Object.entries(search_obj).forEach(entry => {\n const [key, value] = entry;\n search_elem.querySelector('.dropdown-menu').insertAdjacentHTML('beforeend', '
' + value + '
');\n })\n } else {\n search_elem.classList.add('no-display');\n }\n\n }\n\n static initializeDropdown(element, change_content = true) {\n const bDropdown = new bootstrap.Dropdown(element, {\n offset: [0, 10]\n })\n element.addEventListener('click', event => {\n bDropdown.show();\n })\n element.querySelectorAll('.dropdown-item').forEach(item => {\n item.addEventListener('click', event => {\n if (change_content) {\n element.querySelector('#dropdownMenuButton').textContent = item.textContent;\n }\n })\n })\n }\n\n static getUsername() {\n Utils.requestHandler(\"/scf/api/user/\" + localStorage.getItem('user_id'), Constants.REQUEST.get, {})\n .then(function (response) {\n let user_name = document.getElementById('username-dashboard');\n let user_type = document.getElementById('user-type-dashboard');\n let user_icon = document.getElementById('dropdownMenuButton');\n let user_name_full = \"\";\n\n if (response.data.user.first_name && response.data.user.first_name.trim() !== \"\") {\n user_name_full = response.data.user.first_name;\n }\n if (response.data.user.last_name && response.data.user.last_name.trim() !== \"\") {\n if (user_name_full !== \"\") {\n user_name_full += \" \";\n }\n user_name_full += response.data.user.last_name;\n }\n let user_permission = response.data.user_permission;\n if (Array.isArray(user_permission) && user_permission.length > 0) {\n let user_type_permission = user_permission[0].replace('scf_', '');\n user_type_permission = user_type_permission.charAt(0).toUpperCase() + user_type_permission.slice(1);\n user_type.innerHTML = ` ${user_type_permission}`;\n } else {\n console.error('user_permission is not a valid array:', user_permission);\n user_type.innerHTML = '';\n }\n user_name.innerHTML = user_name_full;\n user_icon.innerHTML = user_name_full.charAt(0);\n })\n .catch(function (error) {\n console.error('Error fetching user data:', error);\n });\n }\n\n static copyToClipboard() {\n const that = this;\n document.querySelectorAll('.copy').forEach(item => {\n if (!item.getAttribute('copy-event')) {\n item.addEventListener('click', event => {\n const txt = item.getAttribute('data-copy')\n navigator.clipboard.writeText(txt);\n that.showToast('Copied to clipboard', txt, Constants.TOAST.info);\n item.setAttribute('copy-event', 'true');\n })\n }\n })\n }\n\n static sidebarHandler(active_element) {\n let dp_user_settings = document.getElementById('dp-user-settings');\n if (dp_user_settings) {\n this.initializeDropdown(document.getElementById('dp-user-settings'), false);\n this.getUsername();\n }\n ScfSignIn.logoutHandler();\n if (ScfPermission.isScfBorrower() || ScfPermission.isScfCounterparty()) {\n document.getElementById('sidebar-transactions').classList.add('d-none');\n // document.getElementById('sidebar-settings').classList.add('no-display');\n }\n if (ScfPermission.isScfAdmin() || ScfPermission.isScfCounterparty() || ScfPermission.isScfCredit() || ScfPermission.isScfSuperAdmin() || ScfPermission.isScfLender()) {\n document.getElementById('sidebar-support').classList.add('no-display');\n document.getElementById('sidebar-contact').classList.add('no-display');\n document.getElementById('sidebar-create-application').classList.add('no-display');\n document.getElementById('onboarding-hide').classList.add('no-display');\n }\n // Show analytic dashboard for both Admin and Credit permissions\n if (ScfPermission.isScfAdmin() || ScfPermission.isScfCredit()) {\n document.getElementById('analytic-dashboard').classList.remove('no-display');\n document.getElementById('sidebar-due-invoice').classList.remove('no-display');\n\n } else {\n document.getElementById('analytic-dashboard').classList.add('no-display');\n document.getElementById('sidebar-due-invoice').classList.add('no-display');\n }\n if (ScfPermission.isScfAdmin()) {\n document.getElementById('sidebar-settings').classList.remove('no-display');\n }\n if (ScfPermission.isScfAdmin() || ScfPermission.isScfCredit()) {\n document.getElementById('sidebar-anchor-section').classList.remove('no-display');\n }\n if (ScfPermission.isScfAdmin() || ScfPermission.isScfSuperAdmin() || ScfPermission.isScfBorrower()) {\n document.getElementById('sidebar-transactions').classList.remove('no-display');\n }\n if (ScfPermission.isScfCounterparty() || ScfPermission.isScfCredit() || ScfPermission.isScfLender() || ScfPermission.isScfSuperAdmin() || ScfPermission.isScfAdmin() || ScfPermission.isScfBorrower()) {\n document.getElementById('sidebar-collections').classList.add('no-display');\n }\n if (ScfPermission.isScfSales()) {\n document.getElementById(\"sidebar-sales\").classList.remove(\"no-display\");\n document.getElementById(\"sidebar-applicant-new-application\").classList.add(\"no-display\");\n document.getElementById(\"sidebar-transactions\").classList.add(\"no-display\");\n document.getElementById(\"sidebar-collections\").classList.add(\"no-display\");\n }\n\n document.getElementById('user_settings').addEventListener('click', function () {\n window.location = '/scf/user/settings'\n })\n\n }\n\n static pageSanityHandler() {\n this.sidebarHandler();\n this.hideDropdowns();\n }\n\n static hideDropdowns() {\n document.addEventListener('click', event => {\n document.querySelectorAll('.dropdown').forEach((element) => {\n if (!element.contains(event.target)) {\n element.querySelector('#dropdown-menu').classList.remove('show');\n }\n })\n })\n }\n\n static validatorText(text) {\n return String(text)\n .match(\n /^[A-Za-z\\s]*$/\n );\n }\n\n static validatorNumber(text) {\n return String(text)\n .match(\n /^[1-9]\\d*$/\n );\n }\n\n static validatorZipcode(zipcode) {\n return String(zipcode)\n .match(\n /^[1-9][0-9]{5}$/\n );\n }\n\n static validatorAadhaar(aadhar) {\n return String(aadhar)\n .match(\n /^([0-9]{4}[0-9]{4}[0-9]{4}$)|([0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$)|([0-9]{4}-[0-9]{4}-[0-9]{4}$)/\n );\n }\n\n static validatorMobile(mobile) {\n return String(mobile)\n .match(\n /^[6-9]\\d{9}$/gi\n );\n }\n\n static validatorPan(pan) {\n return String(pan)\n .match(\n /^([a-zA-Z]){5}([0-9]){4}([a-zA-Z]){1}?$/\n );\n }\n\n static setter(elem, value) {\n switch (elem.tagName.toLowerCase()) {\n case 'input':\n elem.value = value\n break;\n case 'select':\n elem.value = value\n elem.dispatchEvent(new Event('change'));\n break;\n default:\n elem.setAttribute('data-value', value)\n elem.innerHTML = value;\n break;\n }\n }\n\n static getter(elem) {\n let result = null;\n switch (elem.tagName.toLowerCase()) {\n case 'input':\n result = elem.value\n break;\n case 'select':\n result = elem.value\n break;\n default:\n break;\n }\n if (result && result.length > 0) {\n return result.trim();\n }\n }\n\n static getZipcodeDetails(zipcode) {\n if (String(zipcode).length === 6) {\n return Utils.requestHandler('/core/api/utility/zipcode-details/' + zipcode, Constants.REQUEST.get);\n } else {\n Utils.showToast('Error', 'Invalid Zipcode', Constants.TOAST.fail);\n return Promise.resolve();\n }\n }\n\n static groupBy(data, param) {\n let result = {}\n data.forEach(function (row) {\n if (result[row[param]]) {\n result[row[param]].push(row)\n } else {\n result[row[param]] = [row]\n }\n })\n return result;\n }\n\n static toggleInput(elem, enable = true) {\n elem.disabled = !enable;\n }\n\n static clean(element) {\n var ch_event = new Event('change');\n element.querySelectorAll('input').forEach(function (elem) {\n elem.removeAttribute('disabled')\n elem.value = null;\n elem.dispatchEvent(ch_event);\n })\n element.querySelectorAll('select').forEach(function (elem) {\n elem.value = null;\n elem.dispatchEvent(ch_event);\n })\n element.querySelectorAll('button').forEach(function (elem) {\n elem.removeAttribute('disabled');\n })\n }\n\n}\n\nexport class DocumentUtils {\n\n static bindInputElement(action_element) {\n action_element.addEventListener('click', function () {\n let inp_elem = action_element.parentElement.querySelector('.file-input');\n // Check if the file input is empty before dispatching the click event\n if (!inp_elem.files || inp_elem.files.length === 0) {\n inp_elem.dispatchEvent(new MouseEvent('click'));\n }\n })\n }\n\n static getFileData(inp_elem, more_params = null) {\n let file_data = [];\n Array.from(inp_elem.files).forEach(function (fls) {\n let body = new FormData();\n body.set('file_data', fls)\n body.set('file_name', fls.name);\n if (more_params) {\n for (const m in more_params) {\n body.set(m, more_params[m]);\n }\n }\n file_data.push(body);\n })\n return file_data;\n }\n\n static uploadFiles(action_element, url, more_params = null) {\n let that = this;\n let inp_elem = action_element.parentElement.querySelector('.file-input');\n const event = new Event(\"ev_document_uploaded\");\n inp_elem.addEventListener('change', function () {\n let file_data = that.getFileData(inp_elem, more_params);\n inp_elem.value = '';\n file_data.forEach(function (body) {\n Utils.buttonWithLoader(action_element, Constants.ELEMENT_STATE.show);\n Utils.requestHandler(url, Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n action_element.setAttribute('data-upload-response', JSON.stringify(response.data));\n action_element.dispatchEvent(event);\n Utils.showToast(response.message, 'Document uploaded', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function () {\n Utils.buttonWithLoader(action_element, Constants.ELEMENT_STATE.hide);\n })\n })\n })\n }\n\n static uploadOnElementTrigger(action_element, inp_element, url, more_params = null) {\n let that = this;\n const event = new Event(\"ev_document_uploaded\");\n let file_data = that.getFileData(inp_element, more_params);\n file_data.forEach(function (body) {\n // Utils.buttonWithLoader(action_element, Constants.ELEMENT_STATE.show);\n Utils.requestHandler(url, Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n action_element.setAttribute('data-upload-response', JSON.stringify(response.data));\n action_element.dispatchEvent(event);\n Utils.showToast(response.message, 'Document uploaded', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function () {\n // Utils.buttonWithLoader(action_element, Constants.ELEMENT_STATE.hide);\n })\n })\n }\n\n static showOfflinePreview(action_element, preview_element) {\n let inp_elem = action_element.parentElement.querySelector('.file-input');\n inp_elem.addEventListener('change', function () {\n if (inp_elem.files.length > 0) {\n preview_element.innerHTML = null;\n }\n Array.from(inp_elem.files).forEach(function (fls) {\n if (fls) {\n let ah = document.createElement('a');\n ah.innerHTML = fls.name;\n ah.setAttribute('src', URL.createObjectURL(fls));\n preview_element.append(ah);\n }\n })\n })\n }\n}","let node_env = process.env.NODE_ENV\r\nlet ENV = process.env.NODE_ENV || 'development';\r\nlet SERVICE_BASE_URL;\r\nlet SERVICE_BASE_URL_BACKOFFICE;\r\nlet PROFILE_REDIRECT_URL;\r\n\r\nswitch (ENV) {\r\n case 'staging':\r\n SERVICE_BASE_URL = 'https://staging-api.flexipayment.in';\r\n SERVICE_BASE_URL_BACKOFFICE = 'https://staging-api.flexipayment.in/backoffice';\r\n break;\r\n case 'production':\r\n SERVICE_BASE_URL = 'https://api.flexipayment.in';\r\n SERVICE_BASE_URL_BACKOFFICE = 'https://api.flexipayment.in/backoffice';\r\n break;\r\n case 'development':\r\n SERVICE_BASE_URL = 'http://localhost:8888';\r\n SERVICE_BASE_URL_BACKOFFICE = 'http://localhost:5000/backoffice'\r\n PROFILE_REDIRECT_URL = \"http://localhost:3000/R/application/detail\";\r\n}\r\nexport const ENVIRONMENT = ENV;\r\nexport const SERVICE_BASE = SERVICE_BASE_URL;\r\nexport const SERVICE_BASE_BACKOFFICE = SERVICE_BASE_URL_BACKOFFICE;\r\nexport const PROFILE_REDIRECT = PROFILE_REDIRECT_URL;\r\nexport const ORG_ID = \"d95c2b06-c14d-4b2f-a0dd-ca9d2bc30d75\";\r\n// constants.js\r\n\r\n\r\n\r\nexport const REQUEST = {\r\n get: 1,\r\n post: 2\r\n};\r\nexport const API_LIMIT = {\r\n limit: 20,\r\n skip: 0\r\n};\r\nexport const TOAST = {\r\n success: 1,\r\n fail: 2,\r\n info: 3\r\n};\r\nexport const ELEMENT_STATE = {\r\n show: 1,\r\n hide: 0\r\n};\r\nexport const UAT = false;","var map = {\n\t\"./af\": 8,\n\t\"./af.js\": 8,\n\t\"./ar\": 9,\n\t\"./ar-dz\": 10,\n\t\"./ar-dz.js\": 10,\n\t\"./ar-kw\": 11,\n\t\"./ar-kw.js\": 11,\n\t\"./ar-ly\": 12,\n\t\"./ar-ly.js\": 12,\n\t\"./ar-ma\": 13,\n\t\"./ar-ma.js\": 13,\n\t\"./ar-sa\": 14,\n\t\"./ar-sa.js\": 14,\n\t\"./ar-tn\": 15,\n\t\"./ar-tn.js\": 15,\n\t\"./ar.js\": 9,\n\t\"./az\": 16,\n\t\"./az.js\": 16,\n\t\"./be\": 17,\n\t\"./be.js\": 17,\n\t\"./bg\": 18,\n\t\"./bg.js\": 18,\n\t\"./bm\": 19,\n\t\"./bm.js\": 19,\n\t\"./bn\": 20,\n\t\"./bn-bd\": 21,\n\t\"./bn-bd.js\": 21,\n\t\"./bn.js\": 20,\n\t\"./bo\": 22,\n\t\"./bo.js\": 22,\n\t\"./br\": 23,\n\t\"./br.js\": 23,\n\t\"./bs\": 24,\n\t\"./bs.js\": 24,\n\t\"./ca\": 25,\n\t\"./ca.js\": 25,\n\t\"./cs\": 26,\n\t\"./cs.js\": 26,\n\t\"./cv\": 27,\n\t\"./cv.js\": 27,\n\t\"./cy\": 28,\n\t\"./cy.js\": 28,\n\t\"./da\": 29,\n\t\"./da.js\": 29,\n\t\"./de\": 30,\n\t\"./de-at\": 31,\n\t\"./de-at.js\": 31,\n\t\"./de-ch\": 32,\n\t\"./de-ch.js\": 32,\n\t\"./de.js\": 30,\n\t\"./dv\": 33,\n\t\"./dv.js\": 33,\n\t\"./el\": 34,\n\t\"./el.js\": 34,\n\t\"./en-au\": 35,\n\t\"./en-au.js\": 35,\n\t\"./en-ca\": 36,\n\t\"./en-ca.js\": 36,\n\t\"./en-gb\": 37,\n\t\"./en-gb.js\": 37,\n\t\"./en-ie\": 38,\n\t\"./en-ie.js\": 38,\n\t\"./en-il\": 39,\n\t\"./en-il.js\": 39,\n\t\"./en-in\": 40,\n\t\"./en-in.js\": 40,\n\t\"./en-nz\": 41,\n\t\"./en-nz.js\": 41,\n\t\"./en-sg\": 42,\n\t\"./en-sg.js\": 42,\n\t\"./eo\": 43,\n\t\"./eo.js\": 43,\n\t\"./es\": 44,\n\t\"./es-do\": 45,\n\t\"./es-do.js\": 45,\n\t\"./es-mx\": 46,\n\t\"./es-mx.js\": 46,\n\t\"./es-us\": 47,\n\t\"./es-us.js\": 47,\n\t\"./es.js\": 44,\n\t\"./et\": 48,\n\t\"./et.js\": 48,\n\t\"./eu\": 49,\n\t\"./eu.js\": 49,\n\t\"./fa\": 50,\n\t\"./fa.js\": 50,\n\t\"./fi\": 51,\n\t\"./fi.js\": 51,\n\t\"./fil\": 52,\n\t\"./fil.js\": 52,\n\t\"./fo\": 53,\n\t\"./fo.js\": 53,\n\t\"./fr\": 54,\n\t\"./fr-ca\": 55,\n\t\"./fr-ca.js\": 55,\n\t\"./fr-ch\": 56,\n\t\"./fr-ch.js\": 56,\n\t\"./fr.js\": 54,\n\t\"./fy\": 57,\n\t\"./fy.js\": 57,\n\t\"./ga\": 58,\n\t\"./ga.js\": 58,\n\t\"./gd\": 59,\n\t\"./gd.js\": 59,\n\t\"./gl\": 60,\n\t\"./gl.js\": 60,\n\t\"./gom-deva\": 61,\n\t\"./gom-deva.js\": 61,\n\t\"./gom-latn\": 62,\n\t\"./gom-latn.js\": 62,\n\t\"./gu\": 63,\n\t\"./gu.js\": 63,\n\t\"./he\": 64,\n\t\"./he.js\": 64,\n\t\"./hi\": 65,\n\t\"./hi.js\": 65,\n\t\"./hr\": 66,\n\t\"./hr.js\": 66,\n\t\"./hu\": 67,\n\t\"./hu.js\": 67,\n\t\"./hy-am\": 68,\n\t\"./hy-am.js\": 68,\n\t\"./id\": 69,\n\t\"./id.js\": 69,\n\t\"./is\": 70,\n\t\"./is.js\": 70,\n\t\"./it\": 71,\n\t\"./it-ch\": 72,\n\t\"./it-ch.js\": 72,\n\t\"./it.js\": 71,\n\t\"./ja\": 73,\n\t\"./ja.js\": 73,\n\t\"./jv\": 74,\n\t\"./jv.js\": 74,\n\t\"./ka\": 75,\n\t\"./ka.js\": 75,\n\t\"./kk\": 76,\n\t\"./kk.js\": 76,\n\t\"./km\": 77,\n\t\"./km.js\": 77,\n\t\"./kn\": 78,\n\t\"./kn.js\": 78,\n\t\"./ko\": 79,\n\t\"./ko.js\": 79,\n\t\"./ku\": 80,\n\t\"./ku.js\": 80,\n\t\"./ky\": 81,\n\t\"./ky.js\": 81,\n\t\"./lb\": 82,\n\t\"./lb.js\": 82,\n\t\"./lo\": 83,\n\t\"./lo.js\": 83,\n\t\"./lt\": 84,\n\t\"./lt.js\": 84,\n\t\"./lv\": 85,\n\t\"./lv.js\": 85,\n\t\"./me\": 86,\n\t\"./me.js\": 86,\n\t\"./mi\": 87,\n\t\"./mi.js\": 87,\n\t\"./mk\": 88,\n\t\"./mk.js\": 88,\n\t\"./ml\": 89,\n\t\"./ml.js\": 89,\n\t\"./mn\": 90,\n\t\"./mn.js\": 90,\n\t\"./mr\": 91,\n\t\"./mr.js\": 91,\n\t\"./ms\": 92,\n\t\"./ms-my\": 93,\n\t\"./ms-my.js\": 93,\n\t\"./ms.js\": 92,\n\t\"./mt\": 94,\n\t\"./mt.js\": 94,\n\t\"./my\": 95,\n\t\"./my.js\": 95,\n\t\"./nb\": 96,\n\t\"./nb.js\": 96,\n\t\"./ne\": 97,\n\t\"./ne.js\": 97,\n\t\"./nl\": 98,\n\t\"./nl-be\": 99,\n\t\"./nl-be.js\": 99,\n\t\"./nl.js\": 98,\n\t\"./nn\": 100,\n\t\"./nn.js\": 100,\n\t\"./oc-lnc\": 101,\n\t\"./oc-lnc.js\": 101,\n\t\"./pa-in\": 102,\n\t\"./pa-in.js\": 102,\n\t\"./pl\": 103,\n\t\"./pl.js\": 103,\n\t\"./pt\": 104,\n\t\"./pt-br\": 105,\n\t\"./pt-br.js\": 105,\n\t\"./pt.js\": 104,\n\t\"./ro\": 106,\n\t\"./ro.js\": 106,\n\t\"./ru\": 107,\n\t\"./ru.js\": 107,\n\t\"./sd\": 108,\n\t\"./sd.js\": 108,\n\t\"./se\": 109,\n\t\"./se.js\": 109,\n\t\"./si\": 110,\n\t\"./si.js\": 110,\n\t\"./sk\": 111,\n\t\"./sk.js\": 111,\n\t\"./sl\": 112,\n\t\"./sl.js\": 112,\n\t\"./sq\": 113,\n\t\"./sq.js\": 113,\n\t\"./sr\": 114,\n\t\"./sr-cyrl\": 115,\n\t\"./sr-cyrl.js\": 115,\n\t\"./sr.js\": 114,\n\t\"./ss\": 116,\n\t\"./ss.js\": 116,\n\t\"./sv\": 117,\n\t\"./sv.js\": 117,\n\t\"./sw\": 118,\n\t\"./sw.js\": 118,\n\t\"./ta\": 119,\n\t\"./ta.js\": 119,\n\t\"./te\": 120,\n\t\"./te.js\": 120,\n\t\"./tet\": 121,\n\t\"./tet.js\": 121,\n\t\"./tg\": 122,\n\t\"./tg.js\": 122,\n\t\"./th\": 123,\n\t\"./th.js\": 123,\n\t\"./tk\": 124,\n\t\"./tk.js\": 124,\n\t\"./tl-ph\": 125,\n\t\"./tl-ph.js\": 125,\n\t\"./tlh\": 126,\n\t\"./tlh.js\": 126,\n\t\"./tr\": 127,\n\t\"./tr.js\": 127,\n\t\"./tzl\": 128,\n\t\"./tzl.js\": 128,\n\t\"./tzm\": 129,\n\t\"./tzm-latn\": 130,\n\t\"./tzm-latn.js\": 130,\n\t\"./tzm.js\": 129,\n\t\"./ug-cn\": 131,\n\t\"./ug-cn.js\": 131,\n\t\"./uk\": 132,\n\t\"./uk.js\": 132,\n\t\"./ur\": 133,\n\t\"./ur.js\": 133,\n\t\"./uz\": 134,\n\t\"./uz-latn\": 135,\n\t\"./uz-latn.js\": 135,\n\t\"./uz.js\": 134,\n\t\"./vi\": 136,\n\t\"./vi.js\": 136,\n\t\"./x-pseudo\": 137,\n\t\"./x-pseudo.js\": 137,\n\t\"./yo\": 138,\n\t\"./yo.js\": 138,\n\t\"./zh-cn\": 139,\n\t\"./zh-cn.js\": 139,\n\t\"./zh-hk\": 140,\n\t\"./zh-hk.js\": 140,\n\t\"./zh-mo\": 141,\n\t\"./zh-mo.js\": 141,\n\t\"./zh-tw\": 142,\n\t\"./zh-tw.js\": 142\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 145;","import {DocumentUtils, Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\nimport {TOAST} from \"../../core/constants\";\nimport {SERVICE_BASE_BACKOFFICE} from \"../../core/constants\";\nimport {ScfPermission} from \"../scf_auth_handler\";\nexport default class ScfAppPanelInvoice {\n \n constructor() {\n let that = this;\n let fetched = false;\n this.application_id = document.getElementById('scf_application_id').value;\n this.transcationinput = document.getElementById('transcationinputvalue').value;\n this.elem_btn_invoice_modal = document.getElementById('btn_upload_invoice');\n this.elem_invoice_modal = new bootstrap.Modal(document.getElementById('invoice_modal'), {});\n this.elem_invoice_modal_header = document.getElementById('inv_modal_header');\n this.elem_btn_submit_invoice = document.getElementById('btn-submit-invoice');\n this.elem_div_inv_upload = document.getElementById('div_inv_upload');\n this.elem_select_buyer = document.getElementById('inv_buyer_options');\n this.elem_inv_preview = document.getElementById('inv_preview');\n this.elem_inv_purpose = document.getElementById('inv_purpose');\n this.elem_due_date = document.getElementById('inv_due_date');\n this.elem_tbody = document.getElementById('tb-invoices-tbody');\n this.elem_invoice_no = document.getElementById('inv_number');\n document.getElementById('nav-invoice').addEventListener('click', function (){\n if (fetched){\n return;\n }\n that.uploadInvoice();\n that.fetchCounterParties();\n that.submitInvoice();\n that.fetchInvoices();\n that.requestForFinance();\n that.sendToLenderForFinance();\n that.handler();\n fetched = true;\n })\n this.submitDrawDownRequest();\n document.getElementById('btn-invoice-modal-close').addEventListener('click', function(){\n that.resetForm();\n })\n }\n handler(){\n //hiding request for finance button from lender\n let that=this;\n that.userWisePermissoin() \n }\n \n submitDrawDownRequest(){\n let that = this;\n document.getElementById('btn-drawdown-submit').addEventListener('click', function(){\n let body = {\n invoice_ids: document.getElementById('transcationinputvalue').value, \n url: SERVICE_BASE_BACKOFFICE + '/v2/draw-down-request',\n scf_application_id: that.application_id\n }\n Utils.requestHandler('/scf/api/invoice/draw-down-request', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast('DDR', 'DDR sent duccesfully', Constants.TOAST.success);\n document.getElementById('btn-invoice-submit').disabled=true;\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n \n userWisePermissoin() {\n if (ScfPermission.isScfLender()){\n document.getElementById(\"btn_request_financing\").classList.add(\"no-display\");\n document.getElementById(\"btn_upload_invoice\").classList.add(\"no-display\");\n }\n if(ScfPermission.isScfAdmin() || ScfPermission.isScfSuperAdmin()){\n document.getElementById(\"invoice-consent-upload\").classList.remove(\"no-display\");\n }\n }\n \n \n validateValues(){\n let that = this;\n that.pass=true;\n document.querySelectorAll('.invoice-question').forEach(function (elem){\n let label=elem.getAttribute('data-label');\n Utils.reInput(elem);\n function toggleMessage(){\n let value=elem.value;\n if(!value){\n Utils.showInputError(elem, label + ' is mandatory');\n that.pass=false;\n }else{\n Utils.hideInputError(elem); \n }\n }\n toggleMessage();\n elem.addEventListener('input', toggleMessage);\n \n })\n return that.pass;\n }\n \n uploadInvoice(){\n let that = this;\n DocumentUtils.bindInputElement(that.elem_div_inv_upload, null);\n DocumentUtils.bindInputElement(document.getElementById('invoice-consent-upload'), null)\n DocumentUtils.showOfflinePreview(that.elem_div_inv_upload, that.elem_inv_preview);\n DocumentUtils.showOfflinePreview(document.getElementById('invoice-consent-upload'), document.getElementById('inv_consent_preview'));\n document.getElementById('btn_upload_invoice').addEventListener('click', function (){\n document.querySelectorAll('.invoice-stage').forEach(function (elem){\n elem.classList.add('no-display')\n })\n document.getElementById('inv_stage_upload').classList.remove('no-display');\n that.elem_invoice_modal_header.innerHTML = 'Upload Invoice';\n that.elem_invoice_modal.show();\n })\n }\n\n static bindInputElement(action_element){\n action_element.addEventListener('click', function(){\n let inp_elem = action_element.parentElement.querySelector('.file-input');\n if (!inp_elem.files || inp_elem.files.length === 0) {\n inp_elem.dispatchEvent(new MouseEvent('click'));\n }\n })\n }\n \n static getFileData(inp_elem, more_params = null){\n let file_data = [];\n Array.from(inp_elem.files).forEach(function (fls){\n let body = new FormData();\n body.set('file_data', fls)\n body.set('file_name', fls.name);\n if(more_params){\n for (const m in more_params) {\n body.set(m, more_params[m]);\n }\n }\n file_data.push(body);\n })\n return file_data;\n }\n \n submitInvoice(){\n let that = this;\n let invoiceInput = document.getElementById('pdf-upload');\n let consentInput = document.getElementById('image-upload');\n this.elem_btn_submit_invoice.addEventListener('click', function () {\n if (that.validateValues()) {\n that.elem_btn_submit_invoice.disabled = true;\n let formData = new FormData();\n formData.append('scf_application_id', that.application_id);\n formData.append('buyer_id', that.elem_select_buyer.value);\n formData.append('invoice_date', that.elem_due_date.value);\n formData.append('purpose', that.elem_inv_purpose.value);\n formData.append('invoice_no', that.elem_invoice_no.value);\n if (invoiceInput.files.length > 0) {\n formData.append('invoice', invoiceInput.files[0]);\n formData.append('invoice_file_name', invoiceInput.files[0].name);\n } else {\n Utils.showToast('Error', 'Invoice file is missing', Constants.TOAST.fail);\n that.elem_btn_submit_invoice.disabled = false;\n return;\n }\n if(ScfPermission.isScfAdmin() || ScfPermission.isScfSuperAdmin()){\n if (consentInput.files.length > 0) {\n formData.append('invoice_consent', consentInput.files[0]);\n formData.append('invoice_consent_file_name', consentInput.files[0].name);\n } else {\n Utils.showToast('Error', 'Invoice consent file is missing', Constants.TOAST.fail);\n that.elem_btn_submit_invoice.disabled = false;\n return;\n }\n }\n Utils.requestHandler('/scf/api/invoice/invoice-discounting/', Constants.REQUEST.post, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast('Uploaded', 'Document uploaded', Constants.TOAST.success);\n that.resetForm();\n that.elem_invoice_modal.hide();\n that.elem_btn_submit_invoice.style.display = 'none';\n setTimeout(function () {\n that.fetchInvoices();\n }, 5000);\n } else {\n Utils.showToast('Error', response.errors.invoice_date, Constants.TOAST.fail);\n }\n })\n .catch(function (error) {\n Utils.showToast('Error', 'An error occurred during upload', Constants.TOAST.fail);\n that.elem_btn_submit_invoice.disabled = false;\n });\n }\n });\n }\n \n resetForm() {\n document.getElementById('pdf-upload').value = ''; \n document.getElementById('image-upload').value = '';\n this.elem_select_buyer.value = '';\n this.elem_due_date.value = '';\n this.elem_inv_purpose.value = '';\n document.getElementById('inv_preview').innerHTML = '';\n document.getElementById('inv_consent_preview').innerHTML = '';\n }\n \n closeModalForRequestForFinance(){\n document.getElementById('btn-lender-modal-close').addEventListener('click', function(){\n document.getElementById('inv_stage_req_fin_4').classList.add('no-display');\n })\n }\n \n fetchCounterParties(){\n let that = this;\n Utils.requestHandler('/scf/api/application/'+that.application_id+'/lender-approved-cps', Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n that.elem_select_buyer.textContent = \"\";\n let option = document.createElement('option');\n option.value = \"\";\n option.text = \"Select buyer\";\n that.elem_select_buyer.add(option);\n response.data.approved_counter_parties.forEach(function (dd){\n let option = document.createElement( 'option' );\n option.value = dd.cp_id;\n option.text = dd.name;\n that.elem_select_buyer.add(option);\n })\n }\n })\n .then(function (){\n \n })\n }\n \n transformInvoiceData(data){\n if(data.invoice_no === null){\n data.invoice_no = data.id;\n }\n if(data.total_invoice_value === null){\n data.formatted_invoice_amount = ' -'\n }else{\n data.formatted_invoice_amount = data.total_invoice_value.toLocaleString('en-IN');\n }\n data.formatted_created_at = Utils.formatTime(data.created_at);\n data.formatted_updated_at = Utils.formatTimeRelative(data.updated_at);\n data.formatted_due_date = Utils.formatDate(data.due_date);\n data.formatted_due_date_rel = Utils.formatTimeRelative(data.due_date);\n data.status_human = Utils.capitalizeFirstLetter(data.status.split('_').join(' '));\n return data;\n }\n \n fetchInvoices(){\n let that = this;\n Utils.requestHandler('/scf/api/application/'+that.application_id+'/invoices', Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n that.renderInvoice(response.data.invoices);\n }\n })\n .then(function (){\n \n })\n }\n renderInvoice(data){\n let that = this;\n let p_tmpl = document.getElementById('invoice-row-tmpl');\n that.elem_tbody.innerHTML = null;\n data.forEach(function (inv){\n let d1 = that.transformInvoiceData(inv)\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n let renderedRow = $.parseHTML(rend)[1]; \n let invoiceLinks = renderedRow.querySelectorAll('a#invoice-id');\n if(ScfPermission.isScfBorrower()){\n invoiceLinks.forEach(function(element){\n let href = element.getAttribute('href');\n if (href.includes('/scf/invoice/')) {\n element.removeAttribute('href');\n element.classList.add('disabled');\n element.setAttribute('tabindex', '-1');\n }\n });\n } \n that.elem_tbody.append(renderedRow);\n });\n }\n \n \n requestForFinance(){\n let that = this;\n document.getElementById('btn_request_financing').addEventListener('click', function (){\n let re_inv = document.querySelectorAll('.inv-req-fin:checked');\n if(re_inv.length > 0){\n document.getElementById('inv_selected').value = re_inv[0].value;\n document.querySelectorAll('.invoice-stage').forEach(function (elem){\n elem.classList.add('no-display')\n })\n document.getElementById('inv_stage_req_fin_4').classList.remove('no-display');\n that.elem_invoice_modal_header.innerHTML = 'Request for Finance';\n that.elem_invoice_modal.show();\n }else{\n Utils.showToast('Error', 'Select an invoice first', Constants.TOAST.fail);\n }\n })\n }\n \n sendToLenderForFinance(){\n let that = this;\n document.getElementById('btn-conf-req-finance-modal').addEventListener('click', function (){\n let finding_amount = document.getElementById('inv_funding_amount').value;\n let inv_id = document.getElementById('inv_selected').value;\n if(finding_amount<=0){\n Utils.showToast('Error',\"Invalid Funding Amount\", Constants.TOAST.fail);\n return;\n }\n Utils.requestHandler(\"/scf/api/invoice/\" + inv_id + '/invoice_discounting/request-finance', Constants.REQUEST.post, {scf_funding_amount: finding_amount, scf_application_id: that.application_id})\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast('Success', 'Invoice requested for finance', Constants.TOAST.success);\n document.querySelectorAll('.invoice-stage').forEach(function (elem){\n elem.classList.add('no-display')\n })\n that.elem_invoice_modal.hide();\n }else{\n Utils.showToast('Error', response.errors.funding_amount || response.errors.invoice.invoice_date);\n }\n })\n })\n }\n \n}","import { Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nclass AbstractPromoter {\n\n constructor(id) {\n this.id = id;\n this.title = null;\n this.pan = null;\n this.din = null;\n this.is_co_applicant = null;\n this.full_name = null;\n this.first_name = null;\n this.last_name = null;\n this.din_full_name = null;\n this.dob = null;\n this.gender = null;\n this.email = null;\n this.mobile = null;\n this.address = null;\n this.pincode = null;\n this.city = null;\n this.state = null;\n this.years_at_current_address = null;\n this.elem_title = document.getElementById('titleOfBorrower');\n this.elem_pan = document.getElementById('promoterPan');\n this.elem_din = document.getElementById('promoterDin');\n this.elem_is_co_applicant = document.getElementById('isCoapplicant');\n this.elem_din_full_name = document.getElementById('promoterDinName');\n this.elem_full_name = document.getElementById('promoterName');\n this.elem_first_name = document.getElementById('promoterFirstName');\n this.elem_last_name = document.getElementById('promoterLastName');\n this.elem_dob = document.getElementById('promoterBirthDate');\n this.elem_gender = document.getElementById('promoterGender');\n this.elem_email = document.getElementById('promoterEmail');\n this.elem_mobile = document.getElementById('promoterMobile');\n this.elem_address = document.getElementById('promoterAddress');\n this.elem_pincode = document.getElementById('promoterPincode');\n this.elem_city = document.getElementById('promoterCity');\n this.elem_state = document.getElementById('promoterState');\n this.elem_years_at_current_address = document.getElementById('promoterYearsAtCurrentAddress');\n this.elem_share_holding = document.getElementById('promotershareholding');\n this.elem_relationship = document.getElementById('titleRelationShipwith');\n this.isProperietor = \"false\";\n }\n\n getValues() {\n this.title = Utils.getter(this.elem_title);\n this.pan = Utils.getter(this.elem_pan);\n this.din = Utils.getter(this.elem_din);\n this.is_co_applicant = Utils.getter(this.elem_is_co_applicant);\n this.din_full_name = Utils.getter(this.elem_din_full_name);\n this.full_name = Utils.getter(this.elem_full_name);\n this.first_name = Utils.getter(this.elem_first_name);\n this.last_name = Utils.getter(this.elem_last_name);\n this.dob = Utils.getter(this.elem_dob);\n this.gender = Utils.getter(this.elem_gender);\n this.email = Utils.getter(this.elem_email);\n this.mobile = Utils.getter(this.elem_mobile);\n this.address = Utils.getter(this.elem_address);\n this.pincode = Utils.getter(this.elem_pincode);\n this.city = Utils.getter(this.elem_city);\n this.state = Utils.getter(this.elem_state);\n this.years_at_current_address = Utils.getter(this.elem_years_at_current_address);\n this.promoter_shareholding = Utils.getter(this.elem_share_holding)\n this.relationship = Utils.getter(this.elem_relationship);\n }\n\n setValues() {\n let dropdown = document.getElementById(\"titleOfBorrower\");\n if (dropdown) {\n let options = dropdown.options;\n let isPresent = Array.from(options).some(option => option.value === \"PROPRIETOR\");\n if (this.title === \"PROPRIETOR\") {\n if (!isPresent) {\n let option = document.createElement('option');\n option.value = \"PROPRIETOR\";\n option.text = \"PROPRIETOR\";\n dropdown.add(option);\n }\n }\n }\n Utils.setter(this.elem_title, this.title);\n Utils.setter(this.elem_pan, this.pan);\n Utils.setter(this.elem_din, this.din);\n Utils.setter(this.elem_is_co_applicant, this.is_co_applicant);\n Utils.setter(this.elem_din_full_name, this.din_full_name);\n Utils.setter(this.elem_full_name, this.full_name);\n Utils.setter(this.elem_first_name, this.first_name);\n Utils.setter(this.elem_last_name, this.last_name);\n Utils.setter(this.elem_dob, this.dob);\n Utils.setter(this.elem_gender, this.gender);\n Utils.setter(this.elem_email, this.email);\n Utils.setter(this.elem_mobile, this.mobile);\n Utils.setter(this.elem_address, this.address);\n Utils.setter(this.elem_pincode, this.pincode);\n Utils.setter(this.elem_city, this.city);\n Utils.setter(this.elem_state, this.state);\n Utils.setter(this.elem_years_at_current_address, this.years_at_current_address);\n Utils.setter(this.elem_share_holding, this.promoter_shareholding)\n Utils.setter(this.elem_relationship, this.relationship);\n }\n\n validateValues() {\n return true;\n }\n}\n\n\nexport default class ScfPromoterModule {\n\n constructor() {\n this.obj_promoter = [];\n let that = this;\n this.scf_application_id = document.getElementById('scf_application_id').value;\n this.business_applicant_id = localStorage.getItem('business_applicant_id');\n that.pomoterPanelHandler();\n }\n\n pomoterPanelHandler() {\n let that = this;\n that.getAllPromoters();\n that.showNewPromoterModal();\n }\n\n showNewPromoterModal() {\n let that = this;\n let pan = localStorage.getItem('pan');\n if (pan[3] == 'C') {\n // document.getElementById('btn_show_add_new_promoter').classList.add('no-display');\n document.getElementById('promoterDinSection').classList.remove('no-display');\n document.getElementById('promoterDinNameSection').classList.remove('no-display');\n }\n document.getElementById('btn_show_add_new_promoter').addEventListener('click', function () {\n document.getElementById('promoter_details_modal_edit_status').value = 'false'\n document.getElementById('promoterID').value = '';\n document.getElementById(\"promoterPan\").removeAttribute(\"disabled\");\n let abs_promoter = new AbstractPromoter(Math.random().toString(36));\n abs_promoter.setValues();\n });\n document.getElementById('btn-promoter-modal-close').addEventListener('click', function () {\n that.getAllPromoters();\n })\n }\n\n getAllPromoters() {\n let that = this;\n that.obj_promoter = [];\n Utils.requestHandler(\"/scf/api/onboarding/company/directors_by_application/\" + that.scf_application_id, Constants.REQUEST.get, {})\n .then(function (response) {\n if (response.message === 'OK') {\n response.data.forEach(promoter => {\n let abs_promoter = new AbstractPromoter(promoter.id);\n abs_promoter.title = promoter.ownership_type;\n abs_promoter.pan = promoter.pan_number;\n abs_promoter.din = promoter.din_number;\n abs_promoter.is_co_applicant = promoter.is_coapplicant;\n abs_promoter.din_full_name = promoter.din_full_name;\n abs_promoter.full_name = promoter.full_name;\n\n\n abs_promoter.pan_first_name = promoter.pan_first_name;\n abs_promoter.pan_last_name = promoter.pan_last_name;\n\n abs_promoter.first_name = promoter.first_name;\n abs_promoter.last_name = promoter.last_name;\n\n\n abs_promoter.dob = promoter.date_of_birth;\n abs_promoter.gender = promoter.gender;\n abs_promoter.email = promoter.email;\n abs_promoter.mobile = promoter.mobile;\n abs_promoter.address = promoter.address;\n abs_promoter.pincode = promoter.zipcode;\n abs_promoter.city = promoter.city;\n abs_promoter.state = promoter.state;\n abs_promoter.years_at_current_address = promoter.years_at_current_address;\n abs_promoter.relationship = promoter.relationship;\n abs_promoter.promoter_shareholding = promoter.share_holding;\n that.obj_promoter.push(abs_promoter);\n })\n that.rederVerifiedPromoters();\n // Utils.showToast('Fetched', 'Promoters', Constants.TOAST.success);\n } else {\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n }\n\n rederVerifiedPromoters() {\n let that = this;\n let isProperietor = \"false\";\n let temp = document.getElementById('promoters-tr-tmpl-business-details');\n let ac_table = document.getElementById('verified_promoters_details');\n ac_table.innerHTML = null;\n this.obj_promoter.forEach(function (obj_promoter_ind) {\n // Check if both first and last names are null and set to a single hyphen if so\n if ((obj_promoter_ind.pan_first_name === null && obj_promoter_ind.pan_last_name === null) ||\n (!obj_promoter_ind.pan_first_name && !obj_promoter_ind.pan_last_name)) {\n obj_promoter_ind.full_name = '-';\n } else {\n // Combine pan_first_name and pan_last_name, ensuring no double hyphen\n obj_promoter_ind.full_name = obj_promoter_ind.full_name ||\n obj_promoter_ind.din_full_name ||\n ((obj_promoter_ind.pan_first_name || '') + ' ' + (obj_promoter_ind.pan_last_name || '')).trim();\n\n // If the full_name ends up being an empty string, replace it with a single hyphen\n if (!obj_promoter_ind.full_name.trim()) {\n obj_promoter_ind.full_name = '-';\n }\n }\n // Set other fields to a single hyphen if they are null\n obj_promoter_ind.din_first_name = obj_promoter_ind.din_first_name || '-';\n obj_promoter_ind.din_last_name = obj_promoter_ind.din_last_name || '-';\n obj_promoter_ind.din_full_name = obj_promoter_ind.din_full_name || '-';\n obj_promoter_ind.pan_first_name = obj_promoter_ind.pan_first_name || '-';\n obj_promoter_ind.pan_last_name = obj_promoter_ind.pan_last_name || '-';\n\n // Proceed if there's valid data to display\n if (obj_promoter_ind.full_name !== \"-\" || obj_promoter_ind.pan !== null || obj_promoter_ind.din !== null) {\n // Check if the title is \"PROPRIETOR\"\n if (obj_promoter_ind.title === \"PROPRIETOR\") {\n let dropdown = document.getElementById(\"titleOfBorrower\");\n let options = dropdown.options;\n for (let i = 0; i < options.length; i++) {\n if (options[i].value === \"PROPRIETOR\") {\n isProperietor = \"true\";\n dropdown.remove(i);\n break;\n }\n }\n }\n let rend_row = Mustache.render(temp.innerHTML, obj_promoter_ind);\n ac_table.append($.parseHTML(rend_row)[1]);\n that.promoterEditButton(obj_promoter_ind.id);\n }\n })\n if (isProperietor === \"false\") {\n let dropdown = document.getElementById(\"titleOfBorrower\");\n if (dropdown) {\n let options = dropdown.options;\n let isPresent = Array.from(options).some(option => option.value === \"PROPRIETOR\");\n if (this.title === \"PROPRIETOR\") {\n if (!isPresent) {\n let option = document.createElement('option');\n option.value = \"PROPRIETOR\";\n option.text = \"PROPRIETOR\";\n dropdown.add(option);\n }\n }\n }\n }\n }\n\n promoterEditButton(active_id) {\n let that = this;\n document.getElementById('btn-edit-promoter-' + active_id).addEventListener('click', function () {\n document.getElementById('promoter_details_modal_edit_status').value = 'true';\n document.getElementById('promoterID').value = active_id;\n var modal = new bootstrap.Modal(document.getElementById('promoterList'), {});\n modal.show();\n let abs_promoter = null;\n if (!active_id) {\n Utils.showToast(\"Search\", \"Error finding Promoter\", Constants.TOAST.fail);\n }\n that.obj_promoter.forEach(function (promoter) {\n if (promoter.id === active_id) {\n abs_promoter = promoter;\n return false;\n }\n })\n abs_promoter.setValues();\n if (abs_promoter.pan != null) {\n document.getElementById(\"promoterPan\").disabled = true;\n } else {\n document.getElementById(\"promoterPan\").disabled = false;\n }\n })\n }\n\n} \n","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from \"mustache\";\n\nexport default class ScfUdyamPanel{\n\n constructor(scf_application_id, inputValue = null, business_applicant_id = null, udyam_reg_no = null) {\n this.scf_application_id = scf_application_id;\n this.inputValue = inputValue;\n this.business_applicant_id = business_applicant_id;\n this.udyam_reg_no = udyam_reg_no;\n if(udyam_reg_no){\n // this.fetchUdyamDetailsFromRegNo(udyam_reg_no);\n }\n }\n\n fetchUdyamDetails(){\n\n Utils.loaderToast(Constants.ELEMENT_STATE.show)\n return Utils.requestHandler('/scf/api/application/'+ this.scf_application_id + '/udyam', Constants.REQUEST.post, {udhyam_aadhaar: this.inputValue})\n .then(function (response){\n if(response.message === 'OK'){\n // Show Success Toast \n Utils.loaderToast(Constants.ELEMENT_STATE.hide)\n return response.data;\n }else{\n Utils.loaderToast(Constants.ELEMENT_STATE.hide)\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n \n })\n\n }\n\n // fetchUdyamDetailsFromRegNo(udyam_reg_no){\n // this.elem_inp_udyam.value = udyam_reg_no;\n // Utils.toggleInput(this.elem_inp_udyam, false)\n // this.btn_srch_udyam.click();\n // }\n\n}","import { Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\nimport { ScfPermission } from \"../scf_auth_handler\";\nexport default class ScfAppAnalysisBanking {\n\n constructor() {\n this.application_id = document.getElementById('scf_application_id').value;\n this.getBankingDetails();\n }\n\n userWisePermission() {\n if (ScfPermission.isScfLender() || ScfPermission.isScfCounterparty() || ScfPermission.isScfBorrower()){\n document.querySelectorAll('.btn-banking-analysis-trigger-upload').forEach(element => {\n element.classList.add('no-display');\n });\n }\n }\n\n getBankingDetails(){\n let that = this;\n Utils.requestHandler('/scf/api/application/' + that.application_id + '/bank-accounts', Constants.REQUEST.get).then(function (response) {\n if (response.message === 'OK') {\n let tmpl = document.getElementById('banking-tmpl');\n let dx = document.getElementById('banking-tbody');\n dx.innerHTML = null;\n response.data.bank_accounts.forEach(obj => {\n let rendered = Mustache.render(tmpl.innerHTML, obj);\n dx.append($.parseHTML(rendered)[1]);\n })\n }\n that.userWisePermission();\n that.uploadBankStatement();\n that.downloadBankStatement();\n that.getReports();\n })\n }\n\n getAnalysisUrl(){\n let that = this;\n let all_quest = document.getElementsByClassName('btn-banking-analysis-trigger');\n [...all_quest].forEach(element => {\n element.addEventListener('click', function(){\n Utils.requestHandler('/scf/api/application/' + that.application_id + '/finbox-analyzer', Constants.REQUEST.post, {bank_account_id: element.getAttribute('data-id')}).then(function (response) {\n if (response.message === 'OK') {\n window.open(response.data.url.redirect_url);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }) \n })\n });\n }\n\n disableEnableButtons(){\n let elements = document.querySelectorAll('.btn-banking-analysis-trigger-upload')\n elements.forEach(function(element) {\n let id = element.getAttribute(\"data-id\");\n var currentTime = new Date();\n var updatedAt = new Date(element.getAttribute(\"updated-at\"));\n var timeDifferenceInMinutes = Math.abs(currentTime - updatedAt)/60000;\n if(timeDifferenceInMinutes < 3 && id!==null){\n document.querySelectorAll(\"[data-id='\" + id + \"']\").forEach(function(button) {\n button.disabled = true;\n document.getElementById('file-upload-message').textContent = \"Your File is currently in processing\";\n });\n setTimeout(() => {\n document.querySelectorAll(\"[data-id='\" + id + \"']\").forEach(function(button) {\n button.disabled = false;\n document.getElementById('file-upload-message').textContent = \"\";\n });\n }, timeDifferenceInMinutes*60000);\n }\n })\n }\n\n uploadBankStatement(){\n let that = this;\n let elements = document.querySelectorAll('.btn-banking-analysis-trigger-upload')\n \n elements.forEach(function(element) {\n element.addEventListener('click', function (event){\n let id = event.target.getAttribute(\"data-id\");\n let entity_id = event.target.getAttribute(\"entity-id\");\n let bank_account_number = event.target.getAttribute(\"bank-account-number\");\n if (entity_id) {\n const userConfirmed = window.confirm(\"Report is already available for download for this bank – would you still want to initiate a fresh report?\");\n if (!userConfirmed) {\n return;\n }\n }\n let params = \"\";\n if(entity_id!=undefined || entity_id!=''){\n params = {\n \"entity_id\": event.target.getAttribute(\"entity-id\"),\n \"account_id\": id\n }\n }\n else{\n params = {\n \"account_id\": id,\n }\n }\n let body = {\n \"params\": params,\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/bank/statement-upload?identity=true\",\n \"req_type\": \"post\",\n \"bank_account_number\": bank_account_number\n }\n Utils.requestHandler('/scf/api/application/' + that.application_id + '/finbox/upload', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n document.querySelectorAll(\"[data-id='\" + id + \"']\").forEach(function(button) {\n button.disabled = true;\n });\n // setTimeout(() => {\n // document.querySelectorAll(\"[data-id='\" + id + \"']\").forEach(function(button) {\n // button.disabled = false;\n // document.getElementById('file-upload-message').textContent = \"\";\n // });\n // }, 180000);\n Utils.showToast(response.message, response.data, Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, response.errors.error, Constants.TOAST.fail);\n }\n })\n })\n })\n \n \n }\n\n downloadBankStatement(){\n let that = this;\n let elements = document.querySelectorAll('.btn-banking-analysis-trigger-download');\n elements.forEach(function(element) {\n element.addEventListener('click', function (event){\n let id = event.target.getAttribute(\"entity-id\");\n let body = {\n \"params\": {\n \"entity_id\":event.target.getAttribute(\"entity-id\")\n },\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/bank/generate-detailed-report\",\n \"req_type\": \"get\"\n }\n Utils.requestHandler('/scf/api/application/' + that.application_id + '/finbox/download', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n document.querySelectorAll(\".btn-banking-analysis-trigger-download[entity-id='\" + id + \"']\").forEach(function(button) {\n button.disabled = true;\n });\n if(response.data[\"reports\"].length > 0) {\n for (let i = 0; i < response.data[\"reports\"].length; i++) {\n let pdfUrl = response.data[\"reports\"][i].link;\n window.open(pdfUrl, '_blank');\n }\n }\n else{\n Utils.showToast('Error','Your file is currently in processing', Constants.TOAST.fail);\n }\n }else{\n Utils.showToast(response.message, \"Bank Statments not uploaded\", Constants.TOAST.fail);\n }\n })\n })\n })\n }\n\n getReports(){\n let that = this;\n let all_quest = document.getElementsByClassName('btn-banking-analysis-download');\n [...all_quest].forEach(element => {\n element.addEventListener('click', function(){\n Utils.requestHandler('/scf/api/application/' + that.application_id + '/finbox-analyzer', Constants.REQUEST.get, {bank_account_id: element.getAttribute('data-id')}).then(function (response) {\n if (response.message === 'OK') {\n window.open(response.data.url);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }) \n })\n });\n }\n\n}\n","import { Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\nimport { ScfPermission } from \"../scf_auth_handler\";\n\nexport default class ScfAppAnalysisCrimeCheck {\n\n constructor() {\n this.application_id = document.getElementById('scf_application_id').value;\n // this.getCrimeCheckCases();\n // this.requestCrimeCheck();\n this.userWisePermissoin();\n }\n userWisePermissoin() {\n if (ScfPermission.isScfLender() || ScfPermission.isScfCounterparty() || ScfPermission.isScfBorrower()){\n document.getElementById(\"nav-crime-check\").classList.add(\"no-display\");\n }\n }\n\n getCrimeCheckCases() {\n let that = this;\n document.getElementById('nav-crime-check').addEventListener('click', function () {\n Utils.requestHandler('/scf/api/application/analysis/' + that.application_id + '/crime-cases', Constants.REQUEST.get).then(function (response) {\n if (response.message === 'OK') {\n let tmpl = document.getElementById('cases-table-tmpl');\n let dx = document.getElementById('all_cases');\n let aml_tmpl = document.getElementById('aml-table-tmpl');\n let aml_dx = document.getElementById('aml_cases');\n aml_dx.innerHTML = null;\n dx.innerHTML = null;\n response.data.crime_check.forEach(obj => {\n let rendered = Mustache.render(tmpl.innerHTML, obj);\n dx.append($.parseHTML(rendered)[1]);\n rendered = Mustache.render(aml_tmpl.innerHTML, obj.aml);\n aml_dx.append($.parseHTML(rendered)[1]);\n })\n Utils.showToast('Fetched', 'Cases fetched', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n requestCrimeCheck() {\n let that = this;\n document.getElementById('req-crime-check').addEventListener('click', function () {\n Utils.requestHandler('/scf/api/application/analysis/' + that.application_id + '/crime-cases', Constants.REQUEST.post).then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast('Requested', 'Crime Check data request initiated', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n}","import { Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from \"mustache\";\nimport { ScfPermission } from \"../scf_auth_handler\";\n\nexport default class ScfAppApplicationPanel {\n\n constructor() {\n this.scf_application_id = document.getElementById('scf_application_id');\n this.business_applicant_id = document.getElementById('business_applicant_id');\n this.business_applicant_name = document.getElementById('business_applicant_name');\n this.elem_application_details = document.getElementById('div_application_details');\n this.elem_applicant_details = document.getElementById('div_applicant_details');\n this.business_application_pan = document.getElementById('business_applicant_pan');\n this.applicationDetailsHandler();\n this.fcWidgetMethod();\n }\n\n programList(selected) {\n let that = this;\n Utils.requestHandler('/scf/api/program/all-programs', Constants.REQUEST.get, {})\n .then(function (response) {\n if (response.message === 'OK') {\n that.addProgram(response.data, selected);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n addProgram(data, selected) {\n let that = this;\n let select_program = document.getElementById('program_program_rules');\n select_program.innerHTML = \"\";\n let defaultOpt = document.createElement('option');\n defaultOpt.value = '';\n defaultOpt.innerHTML = 'Select a Program';\n select_program.append(defaultOpt);\n data.program.forEach(program => {\n let opt = document.createElement('option');\n opt.value = program.id;\n opt.innerHTML = program.name;\n if (opt.value == selected) {\n opt.selected = true;\n select_program.disabled = true;\n }\n select_program.append(opt);\n });\n document.getElementById('btn-save-program').addEventListener('click', function () {\n let programId = document.getElementById('program_program_rules').value;\n let scfApplicationId = that.scf_application_id.value;\n\n if (!programId || !scfApplicationId) {\n Utils.showToast('Validation Error', 'Please select a program and an application.', Constants.TOAST.fail);\n return;\n }\n\n let payload = {\n program_id: programId,\n scf_application_id: scfApplicationId\n };\n\n Utils.requestHandler('/scf/api/program/tag-program', Constants.REQUEST.post, payload)\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.data.program, 'Program tagged', Constants.TOAST.success);\n document.getElementById('btn-save-program').classList.add('d-none');\n document.getElementById('program_program_rules').disabled = true\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n });\n }\n\n fetchTagProgram(programId) {\n let that = this\n let payload = {\n program_id: programId,\n scf_application_id: that.scf_application_id.value\n };\n\n Utils.requestHandler('/scf/api/program/tag-program', Constants.REQUEST.post, payload)\n .then(function (response) {\n if (response.message === 'OK') {\n that.addProgram(response.data);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n fcWidgetMethod() {\n let that = this;\n let id = \"\";\n let email = \"\";\n let firstname = \"\";\n let lastname = \"\";\n let mobile_no = \"\";\n let usertype = \"Borrower\";\n if (ScfPermission.isScfLender()) {\n usertype = \"Lender\";\n }\n Utils.requestHandler(\"/scf/api/user/\" + localStorage.getItem('user_id'), Constants.REQUEST.get, {})\n .then(function (response) {\n id = response.data.user.id;\n email = response.data.user.email;\n firstname = response.data.user.first_name;\n lastname = response.data.user.last_name;\n mobile_no = response.data.user.mobile;\n }).then(function () {\n window.fcWidget.user.clear();\n window.fcWidget.setExternalId(firstname + \".\" + lastname);\n // window.fcWidget.user.setRestoreId(id); \n window.fcWidget.user.setFirstName(firstname);\n window.fcWidget.user.setLastName(lastname);\n window.fcWidget.user.setEmail(email);\n window.fcWidget.user.setPhone(mobile_no);\n window.fcWidget.user.setProperties({\n first_medium: that.scf_application_id.value,\n country: usertype\n });\n });\n }\n\n applicationDetailsHandler() {\n let that = this;\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id.value, Constants.REQUEST.get, {})\n .then(function (response) {\n if (response.message === 'OK') {\n that.business_applicant_id.value = response.data.scf_business_applicant.id;\n that.business_applicant_name.value = response.data.scf_business_applicant.pan_name;\n that.business_application_pan.value = response.data.scf_business_applicant.pan;\n const { scf_application, application_lender_approved } = response.data;\n const navPanelLenders = document.getElementById(\"nav-panel-lenders\");\n const navInvoice = document.getElementById(\"nav-invoice\");\n\n if (scf_application.status === \"approved\") {\n if (!(ScfPermission.isScfSales() || ScfPermission.isScfLender() || ScfPermission.isScfBorrower())) {\n navPanelLenders.classList.remove('no-display');\n }\n if (ScfPermission.isInvoiceUploader()) {\n navInvoice.classList.remove('no-display');\n }\n }\n\n if (application_lender_approved && !ScfPermission.isScfSales()) {\n navInvoice.classList.remove('no-display');\n }\n\n that.renderApplicationDetails(response.data);\n that.programList(response.data.scf_application.scf_program_id);\n that.copyApplication();\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n\n transformApplicationData(data) {\n let that = this;\n\n if (data.sales_agent_name === null || data.sales_agent_name === undefined) {\n data.sales_agent_name = 'Not Available';\n }\n\n // Transform scf_business_applicant\n if (data.scf_business_applicant) {\n let idx = 1;\n for (let key in data.scf_business_applicant) {\n if (data.scf_business_applicant[key] === null || data.scf_business_applicant[key] === undefined) {\n data.scf_business_applicant[key] = 'Not Available';\n }\n }\n data.scf_business_applicant.constitution = Utils.snakeToTitleCase(data.scf_business_applicant.constitution);\n data.scf_business_applicant.idx = function () {\n return idx++;\n };\n }\n\n // Transform scf_application\n if (data.scf_application) {\n let idx = 1;\n for (let key in data.scf_application) {\n if (data.scf_application[key] === null || data.scf_application[key] === undefined) {\n data.scf_application[key] = 'Not Available';\n }\n }\n data.scf_application.product = Utils.snakeToTitleCase(data.scf_application.product);\n data.scf_application.created_at = Utils.formatTime(data.scf_application.created_at);\n data.scf_application.relative_created_at = Utils.formatTimeRelative(data.scf_application.created_at);\n data.scf_application.required_amount_formatted = Utils.indianRepresentation(data.scf_application.required_amount);\n data.scf_application.idx = function () {\n return idx++;\n };\n }\n\n // Transform consents\n if (data.consents) {\n let idx = 1;\n data.consents.forEach(function (row) {\n row.ctype = that.consentToTitleCase(row.ctype);\n row.updated_at = Utils.formatTime(row.updated_at);\n row.relative_updated_at = Utils.formatTimeRelative(row.updated_at);\n row.idx = function () {\n return idx++;\n };\n });\n }\n\n // Transform business_directors\n if (data.business_directors) {\n let idx = 1;\n data.business_directors.forEach(function (row) {\n for (let key in row) {\n if (row[key] === null || row[key] === undefined) {\n row[key] = 'Not Available';\n }\n }\n row.date_of_birth = Utils.formatDate(row.date_of_birth);\n if (row.date_of_birth && row.date_of_birth !== 'Not Available') {\n row.age = Utils.formatTimeRelative(row.date_of_birth);\n }\n row.idx = function () {\n return idx++;\n };\n });\n }\n\n // Transform gstins\n if (data.gstins) {\n let idx = 1;\n data.gstins.forEach(function (row) {\n row.registration_date = Utils.formatDate(row.registration_date);\n row.formatted_registration_date = Utils.formatTimeRelative(row.registration_date);\n row.last_updated = Utils.formatDate(row.last_updated);\n if (row.last_updated) {\n row.formatted_last_updated = Utils.formatTimeRelative(row.last_updated);\n }\n row.idx = function () {\n return idx++;\n };\n });\n }\n\n return data;\n }\n\n\n consentToTitleCase(str) {\n return str\n .toLowerCase()\n .split('_')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n\n copyApplication(data, selected) {\n let that = this;\n let payload = { scf_application_id: that.scf_application_id.value }\n document.getElementById('btn-duplicate-application').addEventListener('click', function () {\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id.value + '/duplicate', Constants.REQUEST.post, payload)\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, response.data.scf_applicantion, Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n\n }\n\n renderApplicationDetails(data) {\n if (data['scf_application']['product'] === \"short_term_loan\") {\n document.getElementById('nav-counterparty').classList.add(\"no-display\");\n document.getElementById('nav-invoice').classList.add(\"no-display\");\n document.getElementById(\"nav-application\").click();\n if (ScfPermission.isScfAdmin() || ScfPermission.isScfSuperAdmin()) {\n document.getElementById(\"nav-analysis-tab\").click();\n }\n }\n if (data.bank_accounts) {\n let idx = 1;\n data.bank_accounts.forEach(function (row) {\n for (let key in row) {\n if (row[key] === null || row[key] === undefined) {\n row[key] = 'Not Available';\n }\n }\n row.created_at = Utils.formatTime(row.created_at);\n row.idx = function () {\n return idx++;\n };\n });\n }\n\n data.business_directors.forEach(function (director) {\n director.state = director.state || \"NA\";\n director.pan_number = director.pan_number || \"NA\";\n director.date_of_birth = (director.date_of_birth === \"Invalid date\") ? \"NA\" : director.date_of_birth;\n director.gender = director.gender || \"NA\";\n\n });\n if (data.scf_business_applicant.constitution === \"partnership\") {\n data.scf_business_applicant.corporate_id = \"NA\";\n data.scf_business_applicant.din = \"\";\n data.scf_business_applicant.llp_name = \"\";\n }\n else {\n data.scf_business_applicant.llp_name = data.scf_business_applicant.name;\n }\n const that = this;\n let tmpl = document.getElementById('application-details-tmpl');\n data.bank_accounts.forEach(function (row) {\n row.created_at = Utils.formatTime(row.created_at);\n });\n let d = this.transformApplicationData(data);\n document.getElementById('scf_application_trade_name').value = data.scf_application.trade_name;\n let rendered = Mustache.render(tmpl.innerHTML, d);\n this.elem_application_details.append($.parseHTML(rendered)[1]);\n tmpl = document.getElementById('applicant-details-tmpl');\n rendered = Mustache.render(tmpl.innerHTML, d);\n this.elem_applicant_details.append($.parseHTML(rendered)[1]);\n if ((ScfPermission.isScfAdmin() || ScfPermission.isScfCredit() || (ScfPermission.isScfSales() && data.scf_application.status == 'application_drafted')) && data.scf_application.status != \"rejected\" && data.lender_decision_submitted != true) {\n document.getElementById('application_edit_section').classList.remove('d-none');\n }\n if (data.scf_application.anchor_leads_lot_id != 'Not Available') {\n document.getElementById('btn_cp_add_modal').classList.add('no-display');\n }\n if (data.scf_application.status == \"rejected\") {\n document.getElementById('btn-duplicate-application').classList.add('d-none');\n document.getElementById('btn-save-program').classList.add('d-none');\n document.getElementById('syncButton').classList.add('d-none');\n document.getElementById('btn_cp_add_modal').classList.add('d-none');\n document.getElementById('btn_refresh_email_domain').classList.add('d-none');\n document.getElementById('upload_balance_sheet').classList.add('d-none');\n document.getElementById('btn-quest-submit').classList.add('d-none');\n document.getElementById('btn_show_add_new_app_deviation').classList.add('d-none');\n document.getElementById('btn_generate_gst_report_v2').classList.add('d-none');\n document.getElementById('btn-submit-app-decision').classList.add('d-none');\n const bankingButtons = document.querySelectorAll('.btn-banking-analysis-trigger');\n const gstButtons = document.querySelectorAll('.generate_gst_report_link');\n bankingButtons.forEach(button => {\n button.classList.add('d-none')\n });\n gstButtons.forEach(button => {\n button.classList.add('d-none')\n });\n\n }\n if (data.scf_application.branch_id != null && data.scf_application.branch_id != \"Not Available\") {\n document.getElementById('branchButton').classList.add('no-display');\n }\n if (ScfPermission.isScfAdmin() || ScfPermission.isScfCredit()) {\n document.getElementById('btn-duplicate-application').classList.remove('d-none');\n document.getElementById('tag_program_to_application_list').classList.remove('d-none');\n document.getElementById('btn-copy-application').classList.remove('d-none');\n document.getElementById('btn-save-program').classList.remove('d-none');\n document.getElementById('program_id').classList.remove('d-none');\n document.getElementById('application_copy_section').classList.remove('d-none');\n if (data.scf_application.parent_id != null && data.scf_application.parent_id != \"Not Available\") {\n document.getElementById('btn-duplicate-application').classList.add('d-none');\n }\n if (data.scf_application.scf_program_id != null && data.scf_application.scf_program_id != 'Not Available') {\n document.getElementById('btn-save-program').classList.add('d-none');\n }\n }\n\n if (ScfPermission.isScfLender()) {\n document.getElementById('tag_program_to_application_list').parentNode.classList.add('d-none');\n document.getElementById('program_id').classList.add('d-none');\n document.getElementById('application_copy_section').classList.add('d-none');\n }\n }\n\n}\n","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from \"mustache\";\nimport {ScfPermission} from \"../scf_auth_handler\";\n\nexport default class ScfAppPanelLenderDecision{\n\n constructor() {\n this.scf_application_id = document.getElementById('scf_application_id').value\n this.business_applicant_id = document.getElementById('business_applicant_id');\n this.business_applicant_name = document.getElementById('business_applicant_name');\n this.lender_application_id = document.getElementById('lender_application_id').value;\n\n this.lender_decision_amount = null;\n this.lender_decision_roi = null;\n this.lender_decision_processing_fee = null;\n this.lender_decision_facility_validity = null;\n this.lender_decision_app_decision = null;\n this.lender_decision_app_remarks = null;\n\n this.elem_lender_decision_amount = document.getElementById('lender_decision_amount');\n this.elem_lender_decision_roi= document.getElementById('lender_decision_roi');\n this.elem_lender_decision_processing_fee = document.getElementById('lender_decision_processing_fee');\n this.elem_lender_decision_facility_validity = document.getElementById('lender_decision_facility_validity');\n this.elem_lender_decision_app_decision = document.getElementById('lender_decision_app_decision');\n this.elem_lender_decision_app_remarks = document.getElementById('lender_decision_app_remarks');\n\n this.handler();\n\n this.elem_lender_decision_amount.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_lender_decision_roi.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_lender_decision_processing_fee.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_lender_decision_facility_validity.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_lender_decision_app_decision.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_lender_decision_app_remarks.addEventListener('input', function (){\n Utils.reInput(this);\n })\n }\n handler(){\n this.fetchLenderApplication();\n this.submitLenderDecision();\n // 1) Set Current Lender and appliaction\n // 2) Get Lender Application Data and Populate the Input fields\n // 3) On submit Update the lender Application\n\n }\n\n setValues(){\n Utils.setter(this.elem_lender_decision_amount, this.lender_decision_amount);\n Utils.setter(this.elem_lender_decision_roi, this.lender_decision_roi);\n Utils.setter(this.elem_lender_decision_processing_fee, this.ender_decision_processing_fee);\n Utils.setter(this.elem_lender_decision_facility_validity, this.lender_decision_facility_validity);\n Utils.setter(this.elem_lender_decision_app_decision, this.lender_decision_app_decision);\n Utils.setter(this.elem_lender_decision_app_remarks, this.lender_decision_app_remarks);\n }\n\n getValues(){\n let that = this;\n this.lender_decision_amount = Utils.getter(this.elem_lender_decision_amount);\n this.lender_decision_roi = Utils.getter(this.elem_lender_decision_roi);\n this.lender_decision_processing_fee = Utils.getter(this.elem_lender_decision_processing_fee);\n this.lender_decision_facility_validity = Utils.getter(this.elem_lender_decision_facility_validity);\n this.lender_decision_app_decision = Utils.getter(this.elem_lender_decision_app_decision);\n this.lender_decision_app_remarks = Utils.getter(this.elem_lender_decision_app_remarks);\n }\n\n validateValues(){\n let pass = true;\n if(!this.lender_decision_amount){\n Utils.showInputError(this.elem_lender_decision_amount, 'Amount is Mandatory');\n pass = false;\n }\n\n if(!this.lender_decision_roi){\n Utils.showInputError(this.elem_lender_decision_roi, 'ROI is Mandatory');\n pass = false;\n }\n\n if(!this.lender_decision_processing_fee){\n Utils.showInputError(this.elem_lender_decision_processing_fee, 'Processing fee is Mandatory');\n pass = false;\n }\n if(!this.lender_decision_facility_validity){\n Utils.showInputError(this.elem_lender_decision_facility_validity, 'Facility Validity is Mandatory');\n pass = false;\n }\n if(!this.lender_decision_app_decision){\n Utils.showInputError(this.elem_lender_decision_app_decision, 'Decision is Mandatory');\n pass = false;\n }\n if(!this.lender_decision_app_remarks){\n Utils.showInputError(this.elem_lender_decision_app_remarks, 'Remarks is Mandatory');\n pass = false;\n }\n return pass;\n }\n\n formatSnakeString(input) {\n const words = input.split('_');\n const formattedString = words.map(word => \n word.charAt(0).toUpperCase() + word.slice(1)\n ).join(' ');\n return formattedString;\n}\n\n fetchLenderApplication(){\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/lender-applications\",\n Constants.REQUEST.get\n ).then(function (response) {\n if (response.message === \"OK\") {\n document.getElementById('nav-panel-decision').classList.remove('no-display')\n if (response.data.lender_applications[0].status == 'lender_approved'){\n document.getElementById('lender_decision_submit').classList.add('no-display')\n document.getElementById('lender_decision_app_decision').value = 'approve'\n }\n if(response.data.tagged_program.product === \"short_term_loan\"){\n document.getElementById('tb-lender-decision').classList.add(\"no-display\");\n }\n document.getElementById('lender_decision_app_remarks').value = response.data.lender_applications[0].remarks\n document.getElementById('lender_decision_amount').value = response.data.lender_applications[0].approved_limit\n document.getElementById('lender_decision_roi').value = response.data.lender_applications[0].roi\n document.getElementById('lender_decision_processing_fee').value = response.data.lender_applications[0].processing_fee\n document.getElementById('lender_decision_facility_validity').value = response.data.lender_applications[0].facility_validity\n document.getElementById('lender_application_id').value = response.data.lender_applications[0].id\n document.getElementById('lender_decision_program').value = response.data.tagged_program.program_name\n document.getElementById('app_product').value = Utils.snakeToTitleCase(response.data.tagged_program.product)\n document.getElementById('lender_decision_product').value = Utils.snakeToTitleCase(response.data.tagged_program.product)\n that.fetchCounterParties(response);\n } else {\n\n }\n })\n .then(function () {});\n \n }\n\n fetchCounterParties(response){\n let that = this;\n if(response.message === 'OK'){\n let tmpl = document.getElementById('lender-decision-cp-row-tmpl');\n let dx = document.getElementById('tb-lender-decision-cp-tbody');\n dx.innerHTML = null;\n response.data.lender_applications[0].proposed_cps.forEach(function (dd){\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n })\n that.populateSelectedCpIds();\n response.data.lender_applications[0].lender_app_cps.forEach(function(item, index) {\n let selectBox = document.querySelector(`[data-id='${item}']`);\n selectBox.checked = true; \n });\n const idContainer = document.getElementById('lender_app_decision_cp_ids');\n idContainer.setAttribute('data-cp-ids', response.data.lender_applications[0].lender_app_cps);\n \n Utils.showToast('Fetched', 'Counterparties fetched', Constants.TOAST.success);\n }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n \n }\n\n populateSelectedCpIds() {\n const checkboxes = document.querySelectorAll('.lender_app_decision_cp_checkbox');\n const idContainer = document.getElementById('lender_app_decision_cp_ids');\n\n const updateIds = () => {\n const selectedIds = Array.from(checkboxes) \n .filter(checkbox => checkbox.checked)\n .map(checkbox => checkbox.dataset.id);\n\n idContainer.setAttribute('data-cp-ids', selectedIds.join(','));\n };\n\n checkboxes.forEach(checkbox => {\n checkbox.addEventListener('change', updateIds);\n });\n\n updateIds();\n }\n\n submitLenderDecision(){\n let that = this;\n document.getElementById('lender_decision_submit').addEventListener('click', function(){\n let idContainer = document.getElementById('lender_app_decision_cp_ids');\n let dataCpIds = idContainer.getAttribute('data-cp-ids');\n that.getValues();\n if(that.validateValues()){\n let body = {\n approved_limit: that.lender_decision_amount,\n roi: that.lender_decision_roi,\n processing_fee: that.lender_decision_processing_fee,\n counter_parties: dataCpIds,\n facility_validity: that.lender_decision_facility_validity,\n decision: that.lender_decision_app_decision,\n remarks: that.lender_decision_app_remarks\n }\n\n Utils.requestHandler(\n \"/scf/api/lender_application/\" + document.getElementById('lender_application_id').value + \"/edit-application\",\n Constants.REQUEST.post, body\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast('Success', 'Decision Submitted', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n } \n });\n }\n\n}","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from \"mustache\";\n\nexport default class ScfAppPanelDedupe{\n\n constructor() {\n let that = this;\n this.scf_application_id = document.getElementById('scf_application_id');\n this.business_applicant_id = document.getElementById('business_applicant_id');\n document.getElementById('nav-dedupe').addEventListener('click', function (){\n that.fetchApplications();\n })\n }\n\n fetchApplications(){\n let that = this;\n Utils.requestHandler('/scf/api/applicant/'+ that.business_applicant_id.value + '/applications', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.renderApplications(response.data);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n renderApplications(data){\n let that = this;\n let tmpl = document.getElementById('de-application-details-tmpl');\n let dx = document.getElementById('tb-de-app-tbody');\n if(data.applications.length > 1){\n dx.innerHTML = null;\n }\n data.applications.forEach(function (dd){\n if(dd.id !== that.scf_application_id.value){\n dd.application_details_link = \"/scf/application/details/\" + dd.id;\n if(dd.trade_name != null){\n dd.business_applicant_name = dd.trade_name;\n } else {\n dd.business_applicant_name = data.business_applicant_name;\n }\n dd.formatted_created_at = Utils.formatTime(dd.created_at);\n dd.product = Utils.capitalizeFirstLetter(dd.product.split('_').join(' '));\n dd.status_human = Utils.capitalizeFirstLetter(dd.status.split('_').join(' '));\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n }\n })\n }\n\n}","import {DocumentUtils, Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\nimport { ScfPermission } from \"../scf_auth_handler\";\n\nexport default class ScfAppPanelDocument{\n\n constructor() {\n this.scf_application_id = document.getElementById('scf_application_id');\n this.business_applicant_id = document.getElementById('business_applicant_id');\n this.elem_document_details = document.getElementById('div_document_details');\n this.elem_password_modal = new bootstrap.Modal(document.getElementById('modal_doc_password'), {});\n this.elem_password = document.getElementById('doc_password');\n this.elem_btn_password = document.getElementById('btn-update-password');\n this.renderUploadedDocuments();\n document.getElementById(\"nav-counterparty\").click();\n }\n\n reRenderuploadedDocuments(){\n let that =this;\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id.value + '/documents', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.renderDocument(response.data);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n renderUploadedDocuments(){\n let that = this;\n document.getElementById('nav-documents').addEventListener('click', function(){\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id.value + '/documents', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.renderDocument(response.data);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n });\n }\n\n transformDocumentData(ref, last_doc){\n let drop_ship = {}\n drop_ship.doc_title = ref.set_value.title;\n drop_ship.doc_subtitle = \"Last updated \" + Utils.formatTimeRelative(last_doc.updated_at);\n drop_ship.dtype = ref.set_key;\n drop_ship.ext = \"\";\n if(ref.set_value.ext){\n drop_ship.ext = ref.set_value.ext.map(function(x) {return x.toUpperCase()});\n }\n let ext = ref.set_value.ext[0];\n if(ext && ['jpeg', 'jpg', 'png'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-file-earmark-image\";\n }else if(ext && ['xls', 'xlsx'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-filetype-xls\";\n }else if(ext && ['pdf'].includes(ext.toLowerCase())){\n drop_ship.logo = \"bi-file-earmark-pdf\";\n }else{\n drop_ship.logo = \"bi-file-earmark-text\";\n }\n return drop_ship;\n }\n\n transformPreviewData(preview_data){\n preview_data.formatted_ts = Utils.formatTime(preview_data.created_at);\n preview_data.formatted_ts_ago = Utils.formatTimeRelative(preview_data.created_at);\n preview_data.name = preview_data.id;\n return preview_data;\n }\n\n renderDocument(data){\n if(data.documents.length < 1){\n return;\n }\n let that = this;\n let tmpl = document.getElementById('doc-tmpl');\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n this.elem_document_details.innerHTML = '';\n data.documents = data.documents.sort(function (row){\n return row.dtype;\n })\n let grped_data = Utils.groupBy(data.documents, 'file_code');\n for(let dtype in grped_data){\n let d = that.transformDocumentData(data.ref[dtype], grped_data[dtype][0]);\n let rendered = Mustache.render(tmpl.innerHTML, d);\n that.elem_document_details.append($.parseHTML(rendered)[1]);\n let prev = document.getElementById('prev-'+dtype);\n let url = '/scf/api/application/' + that.scf_application_id.value + '/document/upload/' + dtype;\n let action_element = document.getElementById('btn_upload_'+dtype);\n DocumentUtils.bindInputElement(action_element);\n DocumentUtils.uploadFiles(action_element, url);\n that.showUploadPreview(action_element);\n grped_data[dtype].forEach(function (doc_data){\n let d1 = that.transformPreviewData(doc_data);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.append($.parseHTML(rend)[1]);\n })\n }\n document.querySelectorAll('.btn-doc-password').forEach(function (elem){\n elem.addEventListener('click', function (){\n that.passwordHandler(elem);\n })\n })\n that.updatePasswordHandler();\n that.deleteDocument(data);\n }\n\n passwordHandler(elem){\n this.elem_password.value = elem.getAttribute('data-password');\n this.elem_btn_password.setAttribute('data-id', elem.getAttribute('data-id'));\n this.elem_password_modal.show();\n }\n\n deleteDocument(data) {\n let that = this;\n let elements = document.querySelectorAll('#delete-button-document');\n elements.forEach(function(element) {\n if (ScfPermission.isScfLender() || ScfPermission.isScfCounterparty() || data.status == 'rejected') {\n element.classList.add(\"no-display\");\n }\n element.addEventListener('click', function (event) {\n let id = event.target.getAttribute(\"data-id\");\n let confirmed=window.confirm(\"Are you sure you want to delete this document?\")\n if(confirmed){\n Utils.requestHandler('/scf/api/application/'+that.scf_application_id.value+'/document/destroy/'+id,\n Constants.REQUEST.get)\n .then(function(response){\n if(response.message==='OK'){\n element.disabled = true;\n Utils.showToast(response.message, 'Deleted', Constants.TOAST.success);\n that.reRenderuploadedDocuments();\n }\n else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n });\n });\n }\n\n updatePasswordHandler(){\n let that = this;\n this.elem_btn_password.addEventListener('click', function (){\n Utils.requestHandler('/core/api/document/'+ that.elem_btn_password.getAttribute('data-id'), Constants.REQUEST.post, {document_id: that.elem_btn_password.getAttribute('data-id'), file_password: that.elem_password.value})\n .then(function (response){\n if(response.message === 'OK'){\n document.getElementById('btn_password_'+response.data.id).setAttribute('data-password', response.data.decrypted_digest);\n that.elem_password_modal.hide();\n Utils.showToast(response.message, 'Password updated', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n showUploadPreview(action_element){\n let that = this;\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n action_element.addEventListener('ev_document_uploaded', function (){\n let response = JSON.parse(action_element.getAttribute('data-upload-response'));\n let prev = document.getElementById('prev-'+response.file_code);\n let d1 = that.transformPreviewData(response);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.prepend($.parseHTML(rend)[1]);\n let pass_elem = document.getElementById('btn_password_'+response.id);\n pass_elem.addEventListener('click', function (){\n that.passwordHandler(pass_elem);\n })\n })\n }\n\n\n}\n\n\n\n","import { DocumentUtils, Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\nimport { end } from \"@popperjs/core\";\n\nclass Limit {\n\n constructor(scf_application_id) {\n let that = this;\n this.scf_application_id = scf_application_id;\n this.limit_type = null;\n this.limit_expiry = null;\n this.limit_amount = null;\n this.limit_cp = null;\n this.scf_lender_application_id = null;\n\n this.elem_limit_type = document.getElementById('limit_type');\n this.elem_limit_expiry = document.getElementById('limit_expiry');\n this.elem_limit_amount = document.getElementById('limit_amount');\n this.elem_limit_cp = document.getElementById('limit_cp');\n this.elem_scf_lender_app_id = document.getElementById('scf_lender_application_id');\n document.getElementById('nav-panel-lender-limits').addEventListener('click', function () {\n that.createLimit();\n that.getAllLimits();\n that.fetchCounterParties();\n that.toggleLimitData();\n })\n }\n\n getValues() {\n this.limit_type = Utils.getter(this.elem_limit_type);\n this.limit_expiry = Utils.getter(this.elem_limit_expiry);\n this.limit_amount = Utils.getter(this.elem_limit_amount);\n this.limit_cp = Utils.getter(this.elem_limit_cp);\n this.scf_lender_application_id = Utils.getter(this.elem_scf_lender_app_id);\n }\n\n setValues() {\n Utils.setter(this.elem_limit_type, this.limit_type);\n Utils.setter(this.elem_limit_expiry, this.limit_expiry);\n Utils.setter(this.elem_limit_amount, this.limit_amount);\n Utils.setter(this.elem_limit_cp, this.limit_cp);\n Utils.setter(this.elem_scf_lender_app_id, this.scf_lender_application_id);\n }\n\n validateValues() {\n let pass = true;\n if (!this.limit_type) {\n Utils.showInputError(this.elem_limit_type, 'Type is mandatory');\n pass = false;\n }\n if (!this.limit_expiry) {\n Utils.showInputError(this.elem_limit_expiry, 'Expiry is mandatory');\n pass = false;\n }\n if (!this.limit_amount) {\n Utils.showInputError(this.elem_limit_amount, 'Amount is mandatory');\n pass = false;\n }\n if (this.limit_type && this.limit_type === 'lender_counter_party_limit' && !this.limit_cp) {\n Utils.showInputError(this.elem_limit_cp, 'Counterparty is mandatory');\n pass = false;\n }\n return pass;\n }\n\n createLimit() {\n let that = this;\n document.getElementById('btn-submit-limit').addEventListener('click', function () {\n that.getValues();\n if (that.validateValues()) {\n let body = {\n // id: that.limit_id,\n counter_party_id: that.limit_cp,\n limit_type: that.limit_type,\n amount: that.limit_amount,\n expiry: that.limit_expiry\n }\n Utils.requestHandler('/scf/api/limit/' + that.scf_lender_application_id + '/create', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast('Created', 'Limit created', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n })\n }\n\n getAllLimits() {\n let that = this;\n document.getElementById('nav-panel-lender-limits').addEventListener('click', function () {\n that.getValues();\n Utils.requestHandler('/scf/api/limit/' + that.scf_lender_application_id + '/all', Constants.REQUEST.get, {})\n .then(function (response) {\n if (response.message === 'OK') {\n document.getElementById('tbody-lender-limits').innerHTML = null;\n that.renderLimits(response.data.limits);\n that.editLimits();\n Utils.showToast('Fetched', 'Lender Limits', Constants.TOAST.success);\n } else {\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n transformLimitData(data) {\n data.limit_type = data.limit_type.split(\"_\").join(\" \");\n return data;\n }\n\n renderLimits(data) {\n let that = this;\n let tmpl = document.getElementById('lender-limit-row-tmpl');\n let dx = document.getElementById('tbody-lender-limits')\n data.forEach(limit => {\n let d = that.transformLimitData(limit);\n let rendered = Mustache.render(tmpl.innerHTML, d);\n dx.append($.parseHTML(rendered)[1]);\n })\n }\n\n fetchCounterParties() {\n let that = this;\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id + '/approved-counter-parties', Constants.REQUEST.get)\n .then(function (response) {\n if (response.message === 'OK') {\n let cp_dropdown = document.getElementById('limit_cp');\n cp_dropdown.innerHTML = '';\n response.data.counter_parties.forEach(cp => {\n let option = document.createElement(\"option\");\n option.setAttribute('value', cp.business_applicant.id);\n let optionText = document.createTextNode(cp.business_applicant.name);\n option.appendChild(optionText);\n cp_dropdown.appendChild(option);\n })\n // Utils.showToast('Fetched', 'Counterparties fetched', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .then(function () {\n\n })\n }\n\n editLimits() {\n let that = this;\n document.querySelectorAll('.edit-limit').forEach(pelem => {\n pelem.addEventListener('click', function () {\n that.limit_id = pelem.getAttribute('data-limit-id');\n let limit_type = pelem.getAttribute('data-limit-type');\n document.getElementById('limit_type').value = limit_type.split(\" \").join(\"_\");\n document.getElementById('limit_expiry').value = pelem.getAttribute('data-limit-expiry');\n document.getElementById('limit_amount').value = pelem.getAttribute('data-limit-amount');\n document.getElementById('limit_cp').value = pelem.getAttribute('data-df-id');\n })\n })\n }\n\n toggleLimitData() {\n let that = this;\n this.elem_limit_type.addEventListener('change', function () {\n if (that.elem_limit_type.value === 'lender_counterparty_limit') {\n that.elem_limit_cp.classList.remove('no-display');\n } else {\n that.elem_limit_cp.classList.add('no-display');\n }\n })\n }\n\n}\n\nclass Decision {\n\n constructor(scf_application_id) {\n this.scf_application_id = scf_application_id;\n this.scf_lender_application_id = null;\n this.lapplicant_id = null;\n this.lapplication_id = null;\n this.decision = null;\n this.remarks = null;\n\n this.elem_decision = document.getElementById('app_lender_desc');\n this.elem_lapplicant_id = document.getElementById('lapplicant_id');\n this.elem_lapplication_id = document.getElementById('lapplication_id');\n this.elem_remarks = document.getElementById('app_lender_desc_remarks');\n this.elem_scf_lender_app_id = document.getElementById('scf_lender_application_id');\n\n this.submitDecision();\n }\n\n\n setValues() {\n Utils.setter(this.elem_decision, this.decision);\n Utils.setter(this.elem_lapplicant_id, this.lapplicant_id);\n Utils.setter(this.elem_lapplication_id, this.lapplication_id);\n Utils.setter(this.elem_remarks, this.remarks);\n Utils.setter(this.elem_scf_lender_app_id, this.scf_lender_application_id);\n }\n\n getValues() {\n this.decision = Utils.getter(this.elem_decision);\n this.lapplicant_id = Utils.getter(this.elem_lapplicant_id);\n this.lapplication_id = Utils.getter(this.elem_lapplication_id);\n this.remarks = Utils.getter(this.elem_remarks);\n this.scf_lender_application_id = Utils.getter(this.elem_scf_lender_app_id);\n }\n\n validateValues() {\n let pass = true;\n if (!this.decision) {\n Utils.showInputError(this.elem_decision, 'Decision is mandatory');\n pass = false;\n }\n\n if (!this.lapplicant_id) {\n Utils.showInputError(this.elem_lapplicant_id, 'Lender applicant ID is mandatory');\n pass = false;\n }\n\n if (!this.lapplication_id) {\n Utils.showInputError(this.elem_lapplication_id, 'Lender application ID is mandatory');\n pass = false;\n }\n if (!this.remarks) {\n Utils.showInputError(this.elem_remarks, 'Remarks is mandatory');\n pass = false;\n }\n return pass;\n }\n\n submitDecision() {\n let that = this;\n document.getElementById('btn-desc-submit').addEventListener('click', function () {\n that.getValues();\n if (that.validateValues()) {\n let body = {\n lender_applicant_id: that.lapplicant_id,\n lender_application_id: that.lapplication_id,\n remarks: that.remarks\n }\n Utils.requestHandler('/scf/api/lender_application/' + that.scf_lender_application_id + '/decision/' + that.decision, Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast('Submitted', 'Decision', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n })\n }\n\n // toggleLenderApplicationColumn(){\n // let that = this;\n // let app_col = document.getElementById('app-' + that.scf_lender_application_id);\n // app_col.innerHTML = that.lapplication_id + '
' +\n // '' +\n // that.lapplicant_id +\n // '';\n //\n // let decision_col = document.getElementById('decision-' + that.scf_lender_application_id);\n // decision_col.innerHTML = '' + that.decision + '';\n // }\n}\n\nclass Documents {\n\n constructor() {\n this.scf_application_id = '80a07aec-13db-4661-a60b-789b69a2675d'\n this.elem_document_details = document.getElementById('app_lender_docs')\n this.renderDocuments();\n }\n\n renderDocuments() {\n let that = this;\n Utils.requestHandler(\"/scf/api/onboarding/application/\" + that.scf_application_id + '/documents', Constants.REQUEST.get, {})\n .then(function (response) {\n if (response.message === 'OK') {\n that.renderAllDocuments(response.data);\n Utils.showToast(response.message, 'Document list fetched', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n transformDocumentData(ref, last_doc = null) {\n let drop_ship = {}\n drop_ship.doc_title = ref.set_value.title;\n if (last_doc != null) {\n drop_ship.doc_subtitle = \"Last updated \" + Utils.formatTimeRelative(last_doc.updated_at);\n } else {\n drop_ship.doc_subtitle = ref.set_value.title;\n }\n drop_ship.dtype = ref.set_key;\n let ext = ref.set_value.ext[0];\n if (ext && ['jpeg', 'jpg', 'png'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-file-earmark-image\";\n } else if (ext && ['xls', 'xlsx'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-filetype-xls\";\n } else if (ext && ['pdf'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-file-earmark-pdf\";\n } else {\n drop_ship.logo = \"bi-file-earmark-text\";\n }\n return drop_ship;\n }\n\n transformPreviewData(preview_data) {\n preview_data.formatted_ts = Utils.formatTime(preview_data.created_at);\n preview_data.formatted_ts_ago = Utils.formatTimeRelative(preview_data.created_at);\n preview_data.name = preview_data.id;\n return preview_data;\n }\n\n renderAllDocuments(data) {\n let that = this;\n let tmpl = document.getElementById('doc-tmpl');\n this.elem_document_details.innerHTML = '';\n for (let dtype in data.ref) {\n if (['loan_agreement', 'loan_sanction_letter', 'loan_p_nach'].includes(dtype)) {\n let d = that.transformDocumentData(data.ref[dtype]);\n let rendered = Mustache.render(tmpl.innerHTML, d);\n that.elem_document_details.append($.parseHTML(rendered)[1]);\n let url = '/scf/api/application/' + that.scf_application_id + '/document/upload/' + dtype;\n let action_element = document.getElementById('btn_upload_' + dtype);\n DocumentUtils.bindInputElement(action_element);\n DocumentUtils.uploadFiles(action_element, url);\n that.showUploadPreview(action_element);\n }\n }\n this.renderUploadedDocuments(data);\n }\n\n renderUploadedDocuments(data) {\n let that = this;\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n data.documents.forEach(function (doc) {\n let dtype = doc.file_code;\n if (['loan_agreement', 'loan_sanction_letter', 'loan_p_nach'].includes(dtype)) {\n let prev = document.getElementById('prev-' + dtype);\n let d1 = that.transformPreviewData(doc);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.append($.parseHTML(rend)[1]);\n }\n })\n }\n\n showUploadPreview(action_element) {\n let that = this;\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n action_element.addEventListener('ev_document_uploaded', function () {\n let response = JSON.parse(action_element.getAttribute('data-upload-response'));\n let prev = document.getElementById('prev-' + response.file_code);\n let d1 = that.transformPreviewData(response);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.prepend($.parseHTML(rend)[1]);\n })\n }\n\n}\n\n// class EditLenderApplication {\n\n// constructor(scf_application_id){\n// new Decision(scf_application_id);\n// new Limit(scf_application_id);\n// // new Documents();\n// }\n// }\n\n\n\n\nclass CreateLenderApplication {\n\n constructor(scf_application_id) {\n this.lender = null;\n this.amount = null;\n this.product = null;\n this.program = null;\n this.facility_validity = null;\n this.roi = null;\n this.processing_fee = null;\n this.cp_limits = [];\n this.interest_mode = null;\n this.purpose_of_loan = null;\n this.repayment_mode = null;\n\n this.elem_lender = document.getElementById('app_lender');\n this.elem_amount = document.getElementById('app_amount');\n this.elem_product = document.getElementById('app_product');\n this.elem_program = document.getElementById('app_program');\n this.elem_roi = document.getElementById('app_roi');\n this.elem_processing_fee = document.getElementById('app_processing_fee');\n this.elem_interest_mode = document.getElementById('interest_mode');\n this.elem_purpose_of_loan = document.getElementById('app_purpose_of_loan');\n this.elem_repayment_mode = document.getElementById('app_repayment_mode');\n this.elem_facility_validity = document.getElementById('app_facility_validity');\n this.elem_fldg_percentage = document.getElementById('fldg_anchor_fee');\n this.elem_loan_account_number = document.getElementById('loan_account_number');\n\n this.elem_lender.addEventListener('input', function () {\n Utils.reInput(this);\n })\n\n this.elem_roi.addEventListener('input', function () {\n Utils.reInput(this);\n })\n\n this.elem_amount.addEventListener('input', function () {\n Utils.reInput(this);\n })\n\n this.elem_processing_fee.addEventListener('input', function () {\n Utils.reInput(this);\n })\n\n this.elem_facility_validity.addEventListener('input', function () {\n Utils.reInput(this);\n })\n\n this.scf_application_id = scf_application_id;\n this.fetchCounterParties();\n this.fetchLenders();\n this.createApplication();\n this.fetchSelectedLender();\n }\n\n setValues() {\n Utils.setter(this.elem_lender, this.lender);\n Utils.setter(this.elem_amount, this.amount);\n Utils.setter(this.elem_roi, this.roi);\n Utils.setter(this.elem_processing_fee, this.processing_fee);\n Utils.setter(this.fldg_percentage, this.fldg_percentage);\n Utils.setter(this.elem_interest_mode, this.interest_mode);\n Utils.setter(this.elem_purpose_of_loan, this.purpose_of_loan);\n Utils.setter(this.elem_repayment_mode, this.repayment_mode);\n Utils.setter(this.elem_facility_validity, this.facility_validity);\n Utils.setter(this.elem_fldg_percentage, this.fldg_percentage);\n Utils.setter(this.elem_loan_account_number, this.loan_account_number);\n }\n\n getValues() {\n let that = this;\n this.lender = Utils.getter(this.elem_lender);\n this.amount = Utils.getter(this.elem_amount);\n this.roi = Utils.getter(this.elem_roi);\n this.processing_fee = Utils.getter(this.elem_processing_fee);\n this.facility_validity = Utils.getter(this.elem_facility_validity);\n that.cp_limits = [];\n this.fldg_percentage = Utils.getter(this.elem_fldg_percentage);\n this.interest_mode = Utils.getter(this.elem_interest_mode);\n this.repayment_mode = Utils.getter(this.elem_repayment_mode);\n this.purpose_of_loan = Utils.getter(this.elem_purpose_of_loan);\n this.loan_account_number = Utils.getter(this.elem_loan_account_number);\n }\n\n validateValues() {\n let pass = true;\n if (!this.lender) {\n Utils.showInputError(this.elem_lender, 'Lender is mandatory');\n pass = false;\n }\n\n if (!this.amount) {\n Utils.showInputError(this.elem_amount, 'Amount is mandatory');\n pass = false;\n }\n\n if (!this.roi) {\n Utils.showInputError(this.elem_roi, 'ROI is mandatory');\n pass = false;\n }\n else {\n if (this.roi <= 0) {\n Utils.showInputError(this.elem_roi, 'Roi value should be greater than 0');\n pass = false;\n }\n }\n if (!this.processing_fee) {\n Utils.showInputError(this.elem_processing_fee, 'Processing value fee is mandatory');\n pass = false;\n } else {\n if (this.processing_fee <= 0) {\n Utils.showInputError(this.elem_processing_fee, 'Processing value should be greater than 0');\n pass = false;\n }\n }\n if (!this.facility_validity) {\n Utils.showInputError(this.elem_facility_validity, 'Facility Validity is mandatory');\n pass = false;\n } else {\n if (!Number.isInteger(parseFloat(this.facility_validity))) {\n Utils.showInputError(this.elem_facility_validity, 'Facility Validity must be a whole number');\n pass = false;\n }\n }\n\n if (!document.getElementById('fldg_anchor_fee').classList.contains('no-display') && !this.fldg_percentage) {\n Utils.showInputError(this.elem_fldg_percentage, 'FLDG From Anchor is mandatory');\n pass = false;\n } else {\n if (!document.getElementById('fldg_anchor_fee').classList.contains('no-display') && !Number.isInteger(parseFloat(this.fldg_percentage))) {\n Utils.showInputError(this.elem_fldg_percentage, 'FLDG From Anchor must be a whole number');\n pass = false;\n }\n }\n\n if (document.getElementById('app_product').value === \"Short Term Loan\") {\n if (!this.repayment_mode) {\n Utils.showInputError(this.elem_repayment_mode, 'Repayment Mode is mandatory');\n pass = false;\n }\n this.elem_repayment_mode.addEventListener('input', function () {\n Utils.reInput(this);\n })\n }\n return pass;\n }\n\n\n fetchCounterParties() {\n let that = this;\n Utils.requestHandler('/scf/api/application/' + this.scf_application_id + '/approved-counter-parties', Constants.REQUEST.get)\n .then(function (response) {\n if (response.message === 'OK') {\n let tmpl = document.getElementById('lapp-cp-row-tmpl');\n let dx = document.getElementById('tb-lapp-cp-tbody');\n dx.innerHTML = null;\n document.getElementById('app_product').value = Utils.snakeToTitleCase(response.data.counter_parties[0].product);\n response.data.counter_parties.forEach(function (dd) {\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n that.populateSelectedCpIds();\n })\n // Utils.showToast('Fetched', 'Counterparties fetched', Constants.TOAST.success);\n } else {\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .then(function () {\n if (document.getElementById('app_product').value === \"Short Term Loan\") {\n document.getElementById('div_interest_mode').classList.add(\"no-display\");\n document.getElementById('select-counter-parties').classList.add(\"no-display\");\n document.getElementById('tb-stale-period').classList.add(\"no-display\");\n document.getElementById('label_app_facility_validity').innerHTML = \"Facility Validity (in Months)*\";\n document.getElementById('app_facility_validity').placeholder = \"Enter Months\";\n document.getElementById('repayment_mode_lender').classList.remove(\"no-display\");\n document.getElementById('purpose_of_loan_lender').classList.remove(\"no-display\");\n }\n })\n }\n\n fetchSelectedLender() {\n let that = this;\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id + '/program-lender', Constants.REQUEST.get)\n .then(function (response) {\n document.getElementById('app_lender').value = response.data.tagged_lender.name;\n document.getElementById('lender_id').value = response.data.tagged_lender.id;\n });\n }\n\n fetchLenders() {\n let that = this;\n Utils.requestHandler('/scf/api/lender_application/lenders/all', Constants.REQUEST.get)\n .then(function (response) {\n if (response.message === 'OK') {\n let lender_dropdown = document.getElementById('app_lender');\n lender_dropdown.innerHTML = '';\n response.data.lenders.forEach(lender => {\n let option = document.createElement(\"option\");\n option.setAttribute('value', lender.id);\n let optionText = document.createTextNode(lender.name);\n option.appendChild(optionText);\n\n lender_dropdown.appendChild(option);\n })\n // Utils.showToast('Fetched', 'Lenders', Constants.TOAST.success); \n } else {\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .then(function () {\n\n })\n }\n\n createApplication() {\n let that = this;\n document.getElementById('btn-app-submit').addEventListener('click', function () {\n const idContainer = document.getElementById('lender_app_cp_ids');\n let dataCpIds = null;\n const isEdit = document.getElementById('is_edit_lender_application').value;\n const lender_application_id = document.getElementById('lender_application_id').value;\n let facility_validity_data = document.getElementById('app_facility_validity').value;\n const stalePeriods = [];\n that.getValues();\n let validationcheck = that.validateValues();\n if (document.getElementById('app_product').value != \"Short Term Loan\") {\n dataCpIds = idContainer.getAttribute('data-cp-ids');\n const requiredFields = document.querySelectorAll('#from1, #to1, #stale1');\n let allFilled = true;\n\n requiredFields.forEach(function (field) {\n if (!field.value) {\n allFilled = false;\n field.classList.add('is-invalid');\n } else {\n field.classList.remove('is-invalid');\n }\n });\n\n if (!allFilled) {\n Utils.showToast('Validation Error', 'Please fill all mandatory fields.', Constants.TOAST.fail);\n return;\n }\n\n function getFieldValues(i) {\n const from = document.getElementById(`from${i}`).value;\n const to = document.getElementById(`to${i}`).value;\n const stale = document.getElementById(`stale${i}`).value;\n return { from, to, stale };\n }\n\n for (let i = 1; i <= 3; i++) {\n const values = getFieldValues(i);\n if (values.from || values.to || values.stale) {\n stalePeriods.push(values);\n }\n }\n\n function validateStalePeriods(periods) {\n for (let i = 0; i < periods.length; i++) {\n if (new Date(periods[i].from) > new Date(periods[i].to)) {\n return false;\n }\n if (i > 0 && (new Date(periods[i].from) <= new Date(periods[i - 1].to))) {\n return false;\n }\n if (i > 0 && (Number(periods[i].stale) < Number(periods[i - 1].stale))) {\n return false;\n }\n }\n return true;\n }\n\n function validateCustomConditions() {\n const fields = ['from', 'to'];\n const values = fields.reduce((acc, field) => {\n for (let i = 1; i <= 3; i++) {\n acc[`${field}${i}`] = Number(document.getElementById(`${field}${i}`).value);\n }\n return acc;\n }, {});\n\n return (values.to1 > values.from1) &&\n (values.from2 ? values.to2 > values.to1 && values.from2 > values.to1 : true) &&\n (values.from2 ? values.to2 > values.from2 : true) &&\n (values.from3 ? values.to3 > values.to2 && values.from3 > values.to2 : true) &&\n (values.from3 ? values.to3 > values.from3 : true);\n }\n\n if (!validateStalePeriods(stalePeriods)) {\n Utils.showToast('Validation Error', 'Please ensure the stale periods are valid.', Constants.TOAST.fail);\n return;\n }\n\n if (!validateCustomConditions()) {\n Utils.showToast('Validation Error', 'Please ensure the stale period conditions are valid.', Constants.TOAST.fail);\n return;\n }\n }\n if (document.getElementById('app_product').value === \"Short Term Loan\") {\n var currentDate = new Date();\n var nextMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);\n var nextValidMonth = new Date(currentDate.getFullYear(), parseInt(currentDate.getMonth()) + 1 + parseInt(that.facility_validity), 1);\n var timeDifference = nextValidMonth - nextMonth;\n var daysDifference = timeDifference / (1000 * 3600 * 24);\n facility_validity_data = daysDifference;\n }\n\n const body = {\n approved_limit: that.amount,\n roi: that.roi,\n processing_fee: that.processing_fee,\n counter_parties: dataCpIds,\n facility_validity: String(facility_validity_data),\n fldg_percentage: that.fldg_percentage,\n interest_mode_data: that.interest_mode,\n stale_periods: stalePeriods,\n repayment_mode: that.repayment_mode,\n loan_account_number: that.loan_account_number\n };\n if (validationcheck) {\n const url = isEdit === \"true\"\n ? `/scf/api/lender_application/${lender_application_id}/edit-application/`\n : `/scf/api/lender_application/${that.scf_application_id}/${document.getElementById('lender_id').value}`;\n\n Utils.requestHandler(url, Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n var modalElement = document.getElementById('modal_lender_app');\n var modalInstance = bootstrap.Modal.getInstance(modalElement);\n modalInstance.hide();\n var button = document.getElementById('nav-panel-lenders');\n if (button) {\n button.click();\n } else {\n console.error(\"Button not found!\");\n }\n Utils.showToast(isEdit === \"true\" ? 'Lender Application Updated' : 'Lender application created', 'Success', Constants.TOAST.success);\n document.getElementById('btn-lender-modal-close').click();\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n }\n });\n }\n\n populateSelectedCpIds() {\n const checkboxes = document.querySelectorAll('.lender_app_cp_checkbox');\n const idContainer = document.getElementById('lender_app_cp_ids');\n\n // Function to update the data-cp-ids attribute\n const updateIds = () => {\n const selectedIds = Array.from(checkboxes) // Convert NodeList to Array\n .filter(checkbox => checkbox.checked) // Filter out unchecked checkboxes\n .map(checkbox => checkbox.dataset.id); // Map to data-id values\n\n idContainer.setAttribute('data-cp-ids', selectedIds.join(',')); // Join IDs with comma and update attribute\n };\n\n // Attach event listeners to checkboxes\n checkboxes.forEach(checkbox => {\n checkbox.addEventListener('change', updateIds);\n });\n\n // Initial update in case some checkboxes are pre-checked (optional)\n updateIds();\n }\n}\n\nexport default class ScfPanelLenderApplication {\n\n constructor() {\n let that = this;\n let clicked = false;\n let sanctionButtonId = null;\n document.querySelectorAll('[id^=\"sanction-letter-upload\"]').forEach(button => {\n button.addEventListener('click', function () {\n sanctionButtonId = this.id;\n let modal = new bootstrap.Modal(document.getElementById('sanction_letter_modal'));\n modal.show();\n });\n });\n\n this.elem_sanction_modal_header = document.getElementById('sanction_modal_header');\n this.elem_sanction_letter_modal = new bootstrap.Modal(document.getElementById('sanction_letter_modal'), {});\n this.elem_lender_modal = new bootstrap.Modal(document.getElementById('modal_lender_app'), {});\n this.elem_div_sanction_upload = document.getElementById('div_sanction_upload');\n this.elem_sanction_preview = document.getElementById('sanction_preview');\n this.elem_btn_submit_invoice = document.getElementById('btn-sanction-letter');\n that.submitSanctionLetter();\n Utils.initializePagers('lender-app-pager');\n document.getElementById('nav-panel-lenders').addEventListener('click', function () {\n\n that.scf_application_id = document.getElementById('scf_application_id').value;\n // new EditLenderApplication(that.scf_application_id);\n that.fetchLenderApplications();\n if (!clicked) {\n clicked = true;\n new CreateLenderApplication(that.scf_application_id);\n that.initializeAddLenderApplication();\n }\n })\n document.getElementById('nav-limits').addEventListener('click', function () {\n that.scf_application_id = document.getElementById('scf_application_id').value;\n that.getApplicationLimit();\n })\n }\n\n submitSanctionLetter() {\n let that = this;\n let fileInput = document.getElementById('sanction-pdf-upload');\n let submitButton = document.getElementById('btn-sanction-letter');\n submitButton.addEventListener('click', function () {\n if (!fileInput.files.length) {\n Utils.showToast('Error', 'Please upload a sanction letter before submitting.', Constants.TOAST.fail);\n console.log('Error: No file selected.');\n return;\n }\n let formData = new FormData();\n formData.append('sanction_letter', fileInput.files[0]);\n submitButton.disabled = true;\n const button = document.getElementById('sanction-letter-upload');\n const scf_lender_application_id = button.getAttribute('data-id');\n Utils.requestHandler('/scf/api/lender_application/' + scf_lender_application_id + '/sanction-letter/upload', Constants.REQUEST.post, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n .then(function (response) {\n console.log('API Response:', response);\n if (response.message === 'OK') {\n Utils.showToast('Success', 'Sanction Letter uploaded successfully.', Constants.TOAST.success);\n if (that.elem_sanction_letter_modal && typeof that.elem_sanction_letter_modal.hide === 'function') {\n that.elem_sanction_letter_modal.hide();\n } else {\n console.log('Error: Modal hide method not found.');\n }\n } else {\n Utils.showToast('Error', Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n console.log('Error response from API:', response.errors);\n }\n })\n .catch(function (error) {\n console.log('API Error:', error);\n Utils.showToast('Error', 'An unexpected error occurred.', Constants.TOAST.fail);\n })\n .finally(function () {\n submitButton.disabled = false;\n });\n });\n }\n\n transformApplicationLimit(data) {\n data.limit_type_formatted = Utils.capitalizeFirstLetter(data.limit_type.split(\"_\").join(\" \"))\n data.updated_at_fromatted = Utils.formatTime(data.updated_at);\n data.relative_expiry = Utils.formatTimeRelative(data.expiry);\n data.formatted_expiry = Utils.formatTime(data.expiry);\n data.f_amount = data.amount.toLocaleString('en-IN');\n data.f_utilized_amount = data.utilized_amount ? data.utilized_amount.toLocaleString('en-IN') : 0;\n return data;\n }\n\n getApplicationLimit() {\n let that = this;\n Utils.requestHandler(\"/scf/api/application/\" + that.scf_application_id + '/app-limits', Constants.REQUEST.get, {})\n .then(function (response) {\n if (response.message === 'OK') {\n if (response.data.limits.length > 0) {\n let tmpl = document.getElementById('app-limits-tmpl-row');\n let dx = document.getElementById('app-limits-tbody');\n dx.innerHTML = null;\n response.data.limits.forEach(function (dd) {\n that.transformApplicationLimit(dd);\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n })\n }\n }\n })\n }\n\n initializeAddLenderApplication() {\n let that = this;\n document.getElementById('btn-lender-modal').addEventListener('click', function () {\n that.clearAddLenderApplicationModal();\n document.getElementById('nav-panel-lender-application').click();\n that.elem_lender_modal.show();\n document.querySelectorAll('.m1').forEach(function (elem) {\n elem.classList.remove('no-display');\n })\n document.querySelectorAll('.m2').forEach(function (elem) {\n elem.classList.add('no-display');\n })\n })\n }\n\n editLenderApplication() {\n let that = this;\n const buttons = document.querySelectorAll('.edit-lender-application-btn');\n\n // Loop through each button and add an event listener\n buttons.forEach(button => {\n button.addEventListener('click', function (event) {\n event.preventDefault(); // Prevent the default action\n\n document.getElementById('lender_application_id').value = button.getAttribute('data-id-lender');\n document.getElementById('is_edit_lender_application').value = \"true\";\n document.getElementById('app_lender').classList.add('no-display');\n document.getElementById('app_amount').value = button.getAttribute('data-approved-limit');\n document.getElementById('app_roi').value = button.getAttribute('data-roi');\n document.getElementById('app_processing_fee').value = button.getAttribute('data-processing-fee');\n document.getElementById('loan_account_number').value = button.getAttribute('data-loan-account-number');\n if (document.getElementById('app_product').value === \"Short Term Loan\") {\n var currentDate = new Date();\n var nextMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);\n var facility_validity_data = button.getAttribute('data-facility-validity');\n var daysToMilliseconds = facility_validity_data * (1000 * 3600 * 24);\n var nextValidMonth = new Date(nextMonth.getTime() + daysToMilliseconds);\n var monthsDifference = (nextValidMonth.getFullYear() - currentDate.getFullYear()) * 12 + (nextValidMonth.getMonth() - currentDate.getMonth()) - 1;\n document.getElementById('app_facility_validity').value = monthsDifference;\n }\n else {\n document.getElementById('app_facility_validity').value = button.getAttribute('data-facility-validity');\n }\n document.getElementById('fldg_anchor_fee').value = button.getAttribute('data-fldg-percentage');\n document.getElementById('app_repayment_mode').value = button.getAttribute('data-repayment-mode');\n document.getElementById('lender_application_id').value = button.getAttribute('data-id');\n var ids = button.getAttribute('data-lender-app-cp-ids').split(',');\n ids.forEach(function (item, index) {\n let selectBox = document.querySelector(`[data-id='${item.trim()}']`);\n if (selectBox && selectBox.type === 'checkbox') {\n selectBox.checked = true;\n }\n });\n const idContainer = document.getElementById('lender_app_cp_ids');\n idContainer.setAttribute('data-cp-ids', button.getAttribute('data-lender-app-cp-ids'));\n that.elem_lender_modal.show();\n });\n });\n }\n\n cancelButtonLenderApplication() {\n const anchors = document.querySelectorAll('a[id^=\"cancel_lender_application_\"]');\n\n function handleClick(event) {\n event.preventDefault();\n if (confirm('Are you sure you want to cancel?')) {\n const fullId = event.target.id;\n const lenderApplicationId = fullId.substring('cancel_lender_application_'.length);\n Utils.requestHandler('/scf/api/lender_application/' + lenderApplicationId + '/cancel-lender-application/', Constants.REQUEST.post, {})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast('Success', 'Lender Application Cacelled', Constants.TOAST.success);\n document.getElementById('nav-panel-lenders').click();\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n }\n\n anchors.forEach(function (anchor) {\n anchor.addEventListener('click', handleClick);\n });\n }\n\n uploadSanctionLetter(){\n let that = this;\n console.log(that);\n DocumentUtils.bindInputElement(that.elem_div_sanction_upload, null);\n DocumentUtils.showOfflinePreview(that.elem_div_sanction_upload, that.elem_sanction_preview);\n document.getElementById('sanction-letter-upload').addEventListener('click', function (){\n document.querySelectorAll('.sanction-stage').forEach(function (elem){\n elem.classList.add('no-display')\n })\n document.getElementById('sanction_letter_stage').classList.remove('no-display');\n that.elem_sanction_modal_header.innerHTML = 'Upload Sanction Letter';\n that.elem_sanction_letter_modal.show();\n })\n }\n\n programValidator(data) {\n document.getElementById('app_program').value = data['tagged_program'].program_name;\n document.getElementById('app_purpose_of_loan').value = Utils.snakeToTitleCase(data['tagged_program'].type_of_business);\n document.getElementById('app_product').value = Utils.snakeToTitleCase(data['tagged_program'].product);\n if (data['tagged_program'].program_rules === 'fixed') {\n document.getElementById('processing_fee_lebel_id').innerHTML = \"Processing Fee In Fixed *\";\n document.getElementById('app_processing_fee').placeholder = \"In fixed\";\n }\n if (data['tagged_program'].fldg_applied != 'Yes') {\n document.getElementById('anchor_fldg_lebel_id').classList.add('no-display');\n document.getElementById('fldg_anchor_fee').classList.add('no-display');\n }\n if (data['tagged_program'].interest_mode != 'all') {\n document.getElementById('interest_mode_label_id').classList.add('no-display');\n document.getElementById('interest_mode').classList.add('no-display');\n }\n if (document.getElementById('app_product').value === \"Short Term Loan\") {\n document.getElementById('div_interest_mode').classList.add(\"no-display\");\n document.getElementById('select-counter-parties').classList.add(\"no-display\");\n document.getElementById('tb-stale-period').classList.add(\"no-display\");\n document.getElementById('label_app_facility_validity').textContent = \"Facility Validity (in Months)\";\n document.getElementById('app_facility_validity').placeholder = \"Enter Months\";\n document.getElementById('repayment_mode_lender').classList.remove(\"no-display\");\n document.getElementById('purpose_of_loan_lender').classList.remove(\"no-display\");\n }\n }\n\n SendApplicationToLender() {\n // Select all anchor tags with ids starting with 'submit_to_lender_application_'\n const anchors = document.querySelectorAll('a[id^=\"submit_to_lender_application_\"]');\n\n function handleClick(event) {\n event.preventDefault(); // Prevent the default link behavior\n if (confirm('Are you sure you want to submit this application to the lender?')) {\n const fullId = event.target.id;\n const lenderApplicationId = fullId.substring('submit_to_lender_application_'.length);\n\n Utils.requestHandler('/scf/api/lender_application/' + lenderApplicationId + '/submit-to-lender/', Constants.REQUEST.post, {})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast('Success', 'Lender Application Submitted', Constants.TOAST.success);\n // Assuming you might want to redirect or perform some UI update\n document.getElementById('nav-panel-lenders').click();\n } else {\n Utils.showToast('Error', Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n }\n\n anchors.forEach(function (anchor) {\n anchor.addEventListener('click', handleClick);\n });\n }\n\n\n\n clearAddLenderApplicationModal() {\n document.getElementById('app_amount').value = '';\n document.getElementById('app_roi').value = '';\n document.getElementById('app_processing_fee').value = '';\n document.getElementById('interest_mode').value = \"\";\n document.getElementById('app_facility_validity').value = '';\n document.getElementById('app_lender').classList.remove('no-display');\n document.getElementById('is_edit_lender_application').value = \"false\";\n document.getElementById('lender_application_id').value = \"\";\n document.getElementById('fldg_anchor_fee').value = '';\n document.getElementById('from1').value = '';\n document.getElementById('from2').value = '';\n document.getElementById('from3').value = '';\n document.getElementById('to1').value = '';\n document.getElementById('to2').value = '';\n document.getElementById('to3').value = '';\n document.getElementById('stale1').value = '';\n document.getElementById('stale2').value = '';\n document.getElementById('stale3').value = '';\n document.getElementById('loan_account_number_id').value = '';\n const checkboxes = document.querySelectorAll('.lender_app_cp_checkbox');\n\n checkboxes.forEach(function (checkbox) {\n checkbox.checked = false;\n });\n }\n\n transformLenderApplicationData(data) {\n let lender_badge_state = { \"proposal_drafted\": \"bg-primary\", \"awaiting_lender_decision\": \"bg-warning\", \"lender_approved\": \"bg-success\", \"lender_rejected\": \"bg-danger\", \"cancelled\": \"bg-danger\", \"freeze\": \"bg-danger\" };\n data.lender_badge_status = lender_badge_state[data.status];\n data.status = Utils.snakeToTitleCase(data.status)\n data.counter_parties = data.counter_party_names\n data.lender_application_id = data.lender_application_id ? data.lender_application_id : '-';\n data.approved_limit = data.approved_limit\n data.formatted_approved_limit = Utils.indianRepresentation(data.approved_limit);\n data.cp_count = data.cp_count\n data.lender_name = data.lender\n data.processing_fee = data.processing_fee\n data.roi = data.roi\n if (data.lender_app_cps != null) {\n data.lender_app_cps = data.lender_app_cps;\n }\n else {\n data.lender_app_cps = \"\";\n }\n data.facility_validity = data.facility_validity\n data.product = data.product\n data.interest_mode = data.interest_mode\n return data;\n }\n\n fetchLenderApplications() {\n let that = this;\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id + '/lender-applications', Constants.REQUEST.get)\n .then(function (response) {\n if (response.message === 'OK') {\n let tmpl = document.getElementById('lender-app-tmpl');\n let tbody = document.getElementById('tbody-lender-app')\n tbody.innerHTML = null;\n if (response.data.lender_applications) {\n response.data.lender_applications.forEach(function (app) {\n that.transformLenderApplicationData(app);\n let rend = Mustache.render(tmpl.innerHTML, app);\n tbody.append($.parseHTML(rend)[1]);\n if (app.status == 'Lender Approved') {\n document.getElementById(\"submit_to_lender_application_\" + app.id).classList.add('no-display')\n // document.getElementById(\"lender_application_action_\" + app.id).classList.add('no-display')\n } else if (app.status == 'Lender Rejected') {\n document.getElementById(\"submit_to_lender_application_\" + app.id).classList.add('no-display')\n // document.getElementById(\"lender_application_action_\" + app.id).classList.add('no-display')\n } else if (app.status == 'Cancelled') {\n document.getElementById(\"submit_to_lender_application_\" + app.id).classList.add('no-display')\n // document.getElementById(\"lender_application_action_\" + app.id).classList.add('no-display')\n } else if (app.status == 'Awaiting Lender Decision') {\n document.getElementById(\"submit_to_lender_application_\" + app.id).classList.add('no-display')\n document.getElementById(\"edit_lender_application_\" + app.id).classList.add('no-display')\n }\n that.detailsButtonLenderApplicantion();\n })\n }\n that.editLenderApplication();\n that.cancelButtonLenderApplication();\n that.SendApplicationToLender();\n that.programValidator(response.data);\n that.uploadSanctionLetter();\n // Utils.showToast('Fetched', 'Lender Applications', Constants.TOAST.success);\n } else {\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n detailsButtonLenderApplicantion() {\n let that = this;\n document.querySelectorAll('.lender-applicantion-details-button').forEach(function (button) {\n button.addEventListener('click', function (event) {\n const lenderName = this.getAttribute('data-lender-name');\n const approvedLimit = this.getAttribute('data-approved-limit');\n const roi = this.getAttribute('data-roi');\n const processingFee = this.getAttribute('data-processing-fee');\n const status = this.getAttribute('data-status');\n const counterParties = this.getAttribute('data-counter-parties');\n const counterPartyTradeNames = this.getAttribute('data-counter-parties-trade-names');\n const remarks = this.getAttribute('data-remarks');\n const loan_account_number = this.getAttribute('data-loan-account-number');\n\n document.getElementById('modal-details-lender-name').textContent = lenderName;\n document.getElementById('modal-details-approved-limit').textContent = approvedLimit;\n document.getElementById('modal-details-roi').textContent = roi;\n document.getElementById('modal-details-processing-fee').textContent = processingFee;\n document.getElementById('modal-details-status').textContent = status;\n document.getElementById('modal-details-counter-parties').textContent = counterParties;\n document.getElementById('modal-details-counter-party-trade-name').textContent = counterPartyTradeNames;\n document.getElementById('modal-details-lender-remarks').textContent = remarks;\n document.getElementById('modal-details-lender-lan').textContent = loan_account_number;\n\n var modal = new bootstrap.Modal(document.getElementById('detailsModal'), {});\n modal.show();\n });\n });\n }\n\n initializeLenderEditModal() {\n let that = this;\n document.querySelectorAll('.btn-edit-lender-modal').forEach(function (pelem) {\n pelem.addEventListener('click', function () {\n document.getElementById('nav-panel-lender-decision').click();\n that.setUpLenderEditModalData(pelem);\n that.elem_lender_modal.show();\n document.querySelectorAll('.m1').forEach(function (elem) {\n elem.classList.add('no-display');\n })\n document.querySelectorAll('.m2').forEach(function (elem) {\n elem.classList.remove('no-display');\n })\n })\n })\n }\n\n setUpLenderEditModalData(pelem) {\n document.getElementById('lapplicant_id').value = null;\n document.getElementById('lapplication_id').value = null;\n document.getElementById('app_lender_desc_remarks').value = null;\n\n document.getElementById('scf_lender_application_id').value = pelem.getAttribute('data-scf-lapp-id');\n document.getElementById('lapplicant_id').value = pelem.getAttribute('data-lappn-id');\n document.getElementById('lapplication_id').value = pelem.getAttribute('data-lapp-id');\n\n let decision = pelem.getAttribute('data-desc');\n if (decision === \"lender approved\") {\n decision = \"approved\";\n } else {\n decision = \"rejected\";\n }\n\n document.getElementById('app_lender_desc').value = decision;\n document.getElementById('tbody-lender-limits').innerHTML = null;\n }\n\n}\n\n\n","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nexport default class ScfBankingModule{\n\n constructor(){\n this.obj_banking = [];\n let that = this;\n this.scf_application_id = document.getElementById('scf_application_id').value;\n this.business_applicant_id = localStorage.getItem('business_applicant_id');\n this.van_account_number = document.getElementById('van_account_number_onb');\n this.van_bank_name = document.getElementById('onb_van_bank_name');\n this.van_ifsc = document.getElementById('van_ifsc_onb');\n this.van_holder_name = document.getElementById('van_holder_name_onb');\n this.van_branch = document.getElementById('van_branch_onb');\n this.van_micr = document.getElementById('van_micr_onb');\n this.van_checkbox = document.getElementById('is_van_checkbox_onb');\n this.van_fields = document.getElementById('van_input_fields_onb');\n this.addInputEventListeners();\n that.BankingPanelHandler();\n }\n\n addInputEventListeners() {\n const elements = [\n this.van_account_number,\n this.van_bank_name,\n this.van_ifsc,\n this.van_holder_name,\n this.van_branch,\n this.van_micr\n ];\n\n elements.forEach((element) => {\n element.addEventListener('input', () => {\n const value = element.value.trim();\n if (value) {\n Utils.hideInputError(element);\n }\n });\n });\n }\n\n BankingPanelHandler(){\n let that = this;\n that.editBankAccountsPanel();\n that.showBankingModal();\n that.bankingAddBankAccount();\n that.bankingValidateBankAccount();\n that.bankGetIfscDetails();\n that.setupVanCheckboxOnb();\n that.bankAddBankAccount();\n that.VanbankOnb();\n }\n\n editBankAccountsPanel(){\n let that = this;\n Utils.requestHandler(\"/scf/api/application/\" + that.scf_application_id + '/bank-accounts', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.obj_banking = [];\n response.data.bank_accounts.forEach(bank_account => {\n let abs_banking = new AbstractBanking(bank_account.id);\n abs_banking.account_number = bank_account.account_number;\n abs_banking.account_type = bank_account.account_type;\n abs_banking.account_holder = bank_account.primary_account_holder_name;\n abs_banking.verified_account_holder = bank_account.primary_account_holder_name;\n abs_banking.ifsc_code = bank_account.ifsc_code;\n abs_banking.bank_branch = bank_account.branch;\n abs_banking.bank_name = bank_account.bank_name;\n abs_banking.bank_micr = bank_account.micr_code;\n that.bankingSetupButtonIds(abs_banking.id);\n that.obj_banking.push(abs_banking);\n })\n \n that.bankRenderVerifiedAccounts();\n }else{\n }\n })\n }\n\n showBankingModal(){\n let that = this;\n document.getElementById('btn_show_add_new_bank_account').addEventListener('click', function () {\n var modal = new bootstrap.Modal(document.getElementById('bankingList'), {});\n modal.show();\n that.clearVanForm();\n that.van_account_number.disabled = false; \n document.getElementById('add_bank_ac').classList.remove('no-display');\n document.getElementById('isvan_onb').classList.remove('no-display');\n document.getElementById('btn-submit-isvan-onb').classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n document.getElementById('van_input_fields_onb').classList.add('no-display');\n document.getElementById('van_account_number_onb').classList.remove('no-display');\n });\n }\n\n bankingAddBankAccount() {\n let that = this;\n document.getElementById('add_bank_ac').addEventListener('click', function () {\n let abs_banking = null;\n if (that.van_checkbox.checked) {\n abs_banking = new AbstractBanking(Math.random().toString(36), true);\n } else {\n abs_banking = new AbstractBanking(Math.random().toString(36), false);\n } \n abs_banking.setValues();\n that.bankingSetupButtonIds(abs_banking.id);\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-validate-ifsc').classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.remove('no-display');\n document.getElementById('isvan_onb').classList.add('no-display');\n\n that.obj_banking.push(abs_banking);\n this.classList.add('no-display');\n })\n}\n\n setupVanCheckboxOnb() {\n const addBankAccountButton = document.getElementById('add_bank_ac');\n document.getElementById('add_bank_ac').classList.add('no-display');\n const existingFormElements = [\n document.getElementById('account_number'),\n document.getElementById('ifsc_code'),\n document.getElementById('btn-validate-ifsc')\n ];\n\n this.van_checkbox.addEventListener('change', () => {\n if (this.van_checkbox.checked) {\n this.van_fields.classList.remove('no-display');\n addBankAccountButton.classList.add('no-display');\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n } else {\n this.van_fields.classList.add('no-display');\n addBankAccountButton.classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n }\n });\n}\n\nVanbankOnb() {\n let that = this;\n document.getElementById('btn-submit-isvan-onb').addEventListener('click', () => {\n let abs_banking = new AbstractBanking(Math.random().toString(36), true);\n abs_banking.getValues();\n if (that.validateValuesVanOnb()) {\n let body = {\n \"bank_ifsc\": abs_banking.ifsc_code,\n \"bank_name\": abs_banking.bank_name,\n \"holder_name\": abs_banking.account_holder,\n \"bank_branch\": abs_banking.bank_branch,\n \"bank_ac_type\": \"van\",\n \"bank_ac_no\": abs_banking.account_number,\n \"bank_micr_code\": abs_banking.bank_micr\n };\n Utils.requestHandler(\"/scf/api/onboarding/company/bank-account/\" + that.business_applicant_id, Constants.REQUEST.post, body)\n .then((response) => {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'Van Bank Details added', Constants.TOAST.success);\n that.clearVanForm();\n let closeModalButton = document.getElementById(\"btn-banking-modal-close\");\n closeModalButton.click();\n setTimeout(() => {\n document.getElementById('verified_accounts_business_details').innerText = \"\";\n that.editBankAccountsPanel();\n }, 2000);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n }\n });\n}\n\n\nclearVanForm() {\n this.van_account_number.value = '';\n this.van_bank_name.value = '';\n this.van_ifsc.value = '';\n this.van_holder_name.value = '';\n this.van_branch.value = '';\n this.van_micr.value = '';\n this.van_checkbox.checked = false;\n \n}\n\nvalidateValuesVanOnb() {\n let pass = true;\n const elements = [\n { element: this.van_account_number, label: \"Bank Account Number\" },\n { element: this.van_bank_name, label: \"Bank Name\" },\n { element: this.van_ifsc, label: \"IFSC Code\" },\n { element: this.van_holder_name, label: \"Holder Name\" },\n { element: this.van_branch, label: \"Branch\" },\n { element: this.van_micr, label: \"MICR Code\" }\n ];\n\n elements.forEach(({ element, label }) => {\n const value = element.value.trim();\n if (!value) {\n Utils.showInputError(element, `${label} is mandatory`);\n pass = false;\n } else {\n Utils.hideInputError(element);\n }\n });\n\n return pass;\n}\n\n bankingSetupButtonIds(btn_id){\n let bt1 = document.getElementById('btn-validate-account');\n bt1.setAttribute('data-id', btn_id);\n bt1.classList.add('no-display');\n let bt2 = document.getElementById('btn-submit-account');\n bt2.setAttribute('data-id', btn_id);\n bt1.classList.add('no-display');\n let bt3 = document.getElementById('btn-validate-ifsc')\n bt3.setAttribute('data-id', btn_id);\n bt3.classList.remove('no-display');\n }\n\n bankingValidateBankAccount(){\n let that = this;\n document.getElementById('btn-validate-account').addEventListener('click', function(){\n let abs_banking = null;\n let elm_btn = this;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n abs_banking.getValues();\n if(abs_banking.validateValues()){\n let body = {\n bank_ac_no: abs_banking.account_number,\n bank_ifsc: abs_banking.ifsc_code\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/onboarding/company/\" + that.business_applicant_id + \"/validate/bank-account\", Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n if(response.data.status === 'active'){\n abs_banking.verified_account_holder = response.data.bank_ac_holder_name;\n abs_banking.setValues();\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-submit-account').classList.remove('no-display');\n Utils.showToast(response.message, 'Bank account validated', Constants.TOAST.success);\n }else{\n abs_banking.verified_account_holder = abs_banking.account_holder;\n abs_banking.setValues();\n // elm_btn.classList.add('no-display');\n // document.getElementById('btn-submit-account').classList.remove('no-display');\n Utils.showToast(\"Inactive\", \"Bank account is inactive\", Constants.TOAST.fail);\n }\n } else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n Utils.loaderToast(elm_btn, Constants.ELEMENT_STATE.hide);\n })\n } \n })\n }\n\n bankGetIfscDetails(){\n let that = this;\n document.getElementById('btn-validate-ifsc').addEventListener('click', function (){\n let abs_banking = null;\n let btn_elem = this;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n abs_banking.getValues();\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/onboarding/company/validate/bank-ifsc\", Constants.REQUEST.get, {bank_ifsc: abs_banking.ifsc_code})\n .then(function (response){\n if(response.message === 'OK'){\n abs_banking.ifsc_code = response.data.ifsc_data.ifsc;\n abs_banking.bank_micr = response.data.ifsc_data.micr;\n abs_banking.bank_name = response.data.ifsc_data.bank_name;\n abs_banking.bank_branch = response.data.ifsc_data.branch + \", \" + response.data.ifsc_data.city + \", \" + response.data.ifsc_data.state;\n Utils.setter(abs_banking.elem_ifsc_code, abs_banking.ifsc_code);\n Utils.setter(abs_banking.elem_bank_micr, abs_banking.bank_micr);\n Utils.setter(abs_banking.elem_bank_name, abs_banking.bank_name);\n Utils.setter(abs_banking.elem_bank_branch, abs_banking.bank_branch);\n Utils.setter(abs_banking.elem_bank_branch_full, abs_banking.bank_branch);\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-validate-account').classList.remove('no-display'); \n Utils.showToast(response.message, 'IFSC Details fetched', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n })\n }\n\n bankAddBankAccount(){\n let that = this;\n document.getElementById('btn-submit-account').addEventListener('click', function (){\n let abs_banking = null;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n let body = {\n \"bank_ifsc\": abs_banking.ifsc_code,\n \"bank_name\": abs_banking.bank_name,\n \"holder_name\": abs_banking.verified_account_holder,\n \"bank_branch\": abs_banking.bank_branch,\n \"bank_ac_type\": abs_banking.account_type,\n \"bank_ac_no\": abs_banking.account_number\n }\n\n Utils.requestHandler(\"/scf/api/onboarding/company/bank-account/\" + that.business_applicant_id, Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n new ScfBankingModule();\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n document.getElementById('add_bank_ac').classList.remove('no-display');\n let closeModalButton = document.getElementById(\"btn-banking-modal-close\"); \n closeModalButton.click();\n Utils.showToast(response.message, 'Bank Details added', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n bankRenderVerifiedAccounts(){\n let that = this;\n let temp = document.getElementById('banking-tr-tmpl-business-details');\n let ac_table = document.getElementById('verified_accounts_business_details');\n ac_table.innerHTML = null;\n this.obj_banking.forEach(function (abs_banking){\n if(abs_banking.account_holder != null && abs_banking.account_number != null){\n let rend_row = Mustache.render(temp.innerHTML, abs_banking);\n ac_table.append($.parseHTML(rend_row)[1]);\n that.bankEditButton(abs_banking.id); \n }\n })\n \n }\n\n bankEditButton(active_id) {\n let that = this;\n document.getElementById('btn-edit-account-' + active_id).addEventListener('click', function () {\n var modal = new bootstrap.Modal(document.getElementById('bankingList'), {});\n modal.show();\n\n let abs_banking = null;\n if (!active_id) {\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank) {\n if (abs_bank.id === active_id) {\n abs_banking = abs_bank;\n return false;\n }\n });\n if (abs_banking.account_type === 'van') {\n that.showVanFields();\n that.setVanValues(abs_banking);\n document.getElementById('add_bank_ac').classList.add('no-display');\n\n } else {\n that.showRegularFields();\n document.getElementById('isvan_onb').classList.add('no-display');\n }\n abs_banking.setValues();\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-validate-ifsc').classList.remove('no-display');\n \n });\n}\nshowVanFields() {\n document.getElementById('van_input_fields_onb').classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n document.getElementById('add_bank_ac').classList.add('no-display');\n document.getElementById('isvan_onb').classList.add('no-display');\n}\nshowRegularFields() {\n document.getElementById('van_input_fields_onb').classList.add('no-display');\n document.getElementById('add_bank_ac_pane').classList.remove('no-display');\n document.getElementById('add_bank_ac').classList.add('no-display');\n document.getElementById('isvan_onb').classList.add('no-display');\n}\nsetVanValues(abs_banking) {\n this.van_account_number.value = abs_banking.account_number || \"\";\n this.van_bank_name.value = abs_banking.bank_name || \"\";\n this.van_ifsc.value = abs_banking.ifsc_code || \"\";\n this.van_holder_name.value = abs_banking.account_holder || \"\";\n this.van_branch.value = abs_banking.bank_branch || \"\";\n this.van_micr.value = abs_banking.bank_micr || \"\";\n this.van_account_number.disabled = true; \n }\n\n\n}\n\nclass AbstractBanking {\n\n constructor(id,isVan = false){\n this.id = id;\n this.isVan = isVan;\n this.account_number = null;\n this.account_type = null;\n this.account_holder = null;\n this.ifsc_code = null;\n this.bank_branch = null;\n this.bank_name = null;\n this.bank_micr = null;\n this.verified_account_holder = null;\n this.elem_account_number = document.getElementById('account_number');\n this.elem_account_holder = document.getElementById('account_holder');\n this.elem_account_type = document.getElementById('account_type');\n this.elem_ifsc_code = document.getElementById('ifsc_code');\n this.elem_bank_branch = document.getElementById('bank_branch');\n this.elem_bank_name = document.getElementById('bank_name');\n this.elem_bank_micr = document.getElementById('bank_micr');\n this.elem_verified_account_holder = document.getElementById('verified_account_holder');\n this.elem_verified_account_holder_name = document.getElementById('account_holder');\n this.elem_bank_branch_full = document.getElementById('bank_branch_full');\n if(this.isVan){\n this.elem_van_account_number=document.getElementById('van_account_number_onb');\n this.elem_van_bank_name=document.getElementById('onb_van_bank_name');\n this.elem_van_ifsc_code=document.getElementById('van_ifsc_onb');\n this.elem_van_holder_name=document.getElementById('van_holder_name_onb');\n this.elem_van_bank_branch=document.getElementById('van_branch_onb');\n this.elem_van_bank_micr=document.getElementById('van_micr_onb');\n } \n }\n\n getValues() {\n if (this.isVan) {\n this.account_number = this.elem_van_account_number.value.trim();\n this.bank_name = this.elem_van_bank_name.value.trim();\n this.ifsc_code = this.elem_van_ifsc_code.value.trim();\n this.account_holder = this.elem_van_holder_name.value.trim();\n this.bank_branch = this.elem_van_bank_branch.value.trim();\n this.bank_micr = this.elem_van_bank_micr.value.trim();\n } else {\n this.account_number = Utils.getter(this.elem_account_number);\n this.account_type = Utils.getter(this.elem_account_type);\n this.account_holder = Utils.getter(this.elem_account_holder);\n this.ifsc_code = Utils.getter(this.elem_ifsc_code);\n this.bank_branch = Utils.getter(this.elem_bank_branch);\n this.bank_name = Utils.getter(this.elem_bank_name);\n this.bank_micr = Utils.getter(this.elem_bank_micr);\n this.account_type = Utils.getter(this.elem_account_type);\n this.verified_account_holder = Utils.getter(this.elem_verified_account_holder);\n }\n }\n \n setValues() {\n if (this.isVan) {\n Utils.setter(this.elem_van_account_number, this.account_number);\n Utils.setter(this.elem_van_bank_name, this.bank_name);\n Utils.setter(this.elem_van_ifsc_code, this.ifsc_code);\n Utils.setter(this.elem_van_holder_name, this.account_holder);\n Utils.setter(this.elem_van_bank_branch, this.bank_branch);\n Utils.setter(this.elem_van_bank_micr, this.bank_micr);\n }else{\n Utils.setter(this.elem_account_number, this.account_number);\n Utils.setter(this.elem_account_type, \"current\");\n Utils.setter(this.elem_account_holder, this.account_holder);\n Utils.setter(this.elem_ifsc_code, this.ifsc_code);\n Utils.setter(this.elem_bank_branch, this.bank_branch);\n Utils.setter(this.elem_bank_name, this.bank_name);\n Utils.setter(this.elem_bank_micr, this.bank_micr);\n Utils.setter(this.elem_account_type, \"current\");\n Utils.setter(this.elem_verified_account_holder, this.verified_account_holder);\n Utils.setter(this.elem_verified_account_holder_name, this.verified_account_holder);\n Utils.setter(this.elem_bank_branch_full, this.bank_branch);\n }\n }\n\n validateValues(){\n return true;\n}\n\n}","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from \"mustache\";\n\nexport default class ScfOnbPanelCounterParty{\n\n constructor() {\n let that = this;\n this.application_id = document.getElementById('scf_application_id').value;\n that.fetchCounterParties();\n that.submitCounterParties();\n }\n\n fetchCounterParties(){\n let that = this;\n Utils.requestHandler('/scf/api/application/'+that.application_id+'/counter-parties', Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n let tmpl = document.getElementById('cp-row-tmpl');\n let dx = document.getElementById('tb-cp-tbody');\n dx.innerHTML = null;\n response.data.counter_parties.forEach(function (dd){\n dd.status = Utils.snakeToTitleCase(dd.status);\n dd.vintage = Utils.formatTimeRelative(dd.vintage);\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n })\n Utils.showToast('Fetched', 'Counterparties fetched', Constants.TOAST.success);\n }\n })\n .then(function (){\n\n })\n }\n\n submitCounterParties(){\n document.getElementById('btn-submit-cps').addEventListener('click', function (){\n let s_cps = [];\n let pass = true;\n document.querySelectorAll('.approve-cp:checked').forEach(function (elem){\n let id = elem.value;\n let mob = document.getElementById('cp-mobile-'+id);\n let email = document.getElementById('cp-email-'+id);\n if(!Utils.validatorMobile(mob.value)){\n pass = false;\n }\n if(!Utils.validatorEmail(email.value)){\n pass = false;\n }\n s_cps.push({\n id: id,\n mobile: mob.value,\n email: email.value,\n status: 'active'\n })\n })\n if(pass){\n Utils.requestHandler('/scf/api/counter_party/update-multiple', Constants.REQUEST.post, {counter_parties: s_cps})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast('Updated', 'Counterparties updated', Constants.TOAST.success);\n }\n })\n .then(function () {\n\n })\n }else{\n Utils.showToast('Input error', 'Incorrect/Empty Email or Mobile', Constants.TOAST.fail);\n }\n })\n }\n\n}","import {DocumentUtils, Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\nimport { data } from \"jquery\";\n\nclass AbstractBanking {\n\n constructor(id){\n this.id = id;\n this.account_number = null;\n this.account_type = null;\n this.account_holder = null;\n this.ifsc_code = null;\n this.bank_branch = null;\n this.bank_name = null;\n this.bank_micr = null;\n this.verified_account_holder = null;\n this.elem_account_number = document.getElementById('account_number');\n this.elem_account_holder = document.getElementById('account_holder');\n this.elem_account_type = document.getElementById('account_type');\n this.elem_ifsc_code = document.getElementById('ifsc_code');\n this.elem_bank_branch = document.getElementById('bank_branch');\n this.elem_bank_name = document.getElementById('bank_name');\n this.elem_bank_micr = document.getElementById('bank_micr');\n this.elem_verified_account_holder = document.getElementById('verified_account_holder');\n this.elem_bank_branch_full = document.getElementById('bank_branch_full');\n }\n\n getValues(){\n this.account_number = Utils.getter(this.elem_account_number);\n this.account_type = Utils.getter(this.elem_account_type);\n this.account_holder = Utils.getter(this.elem_account_holder);\n this.ifsc_code = Utils.getter(this.elem_ifsc_code);\n this.bank_branch = Utils.getter(this.elem_bank_branch);\n this.bank_name = Utils.getter(this.elem_bank_name);\n this.bank_micr = Utils.getter(this.elem_bank_micr);\n this.account_type = Utils.getter(this.elem_account_type);\n this.verified_account_holder = Utils.getter(this.elem_verified_account_holder);\n }\n\n setValues() {\n Utils.setter(this.elem_account_number, this.account_number);\n Utils.setter(this.elem_account_type, this.account_type);\n Utils.setter(this.elem_account_holder, this.account_holder);\n Utils.setter(this.elem_ifsc_code, this.ifsc_code);\n Utils.setter(this.elem_bank_branch, this.bank_branch);\n Utils.setter(this.elem_bank_name, this.bank_name);\n Utils.setter(this.elem_bank_micr, this.bank_micr);\n Utils.setter(this.elem_account_type, this.account_type);\n Utils.setter(this.elem_verified_account_holder, this.verified_account_holder);\n Utils.setter(this.elem_bank_branch_full, this.bank_branch);\n }\n\n validateValues(){\n return true;\n }\n}\n\n\nexport default class ScfOnbPanelDocument{\n\n constructor() {\n this.obj_banking = [];\n let that = this;\n this.scf_application_id = document.getElementById('scf_application_id').value;\n this.business_applicant_id = localStorage.getItem('business_applicant_id');\n this.elem_document_details = document.getElementById('div_document_details');\n this.elem_password_modal = new bootstrap.Modal(document.getElementById('modal_doc_password'), {});\n this.elem_password = document.getElementById('doc_password');\n this.elem_btn_password = document.getElementById('btn-update-password');\n this.elem_banking_modal_body = document.getElementById('banking_modal_body');\n that.renderDocuments();\n that.documentGstHandler();\n that.documentBankingHandler();\n that.documentAadhaarHandler();\n that.documentPromoterHandler();\n that.documentCpHandler();\n that.renderConstitutionInputs();\n that.updatePasswordHandler();\n }\n\n renderConstitutionInputs() {\n let that = this;\n Utils.requestHandler(\"/scf/api/applicant/\" + that.business_applicant_id, Constants.REQUEST.get, {})\n .then(function (response) {\n const constitution = response.data.scf_applicant['constitution'];\n let templateId;\n \n switch (constitution) {\n case 'partnership':\n templateId = 'partnershipDocUploadTemplate';\n break;\n case 'llp':\n templateId = 'llpDocUploadTemplate';\n break;\n case 'private_limited':\n templateId = 'privateLimitedDocUploadTemplate';\n }\n\n if (templateId) {\n const template = document.getElementById(templateId).innerHTML;\n const rendered = Mustache.render(template);\n document.getElementById('company_constitution_target').innerHTML = rendered;\n that.formCardsToggleBusinessConstitution();\n }\n \n that.uploadOnboardingDocuments();\n });\n }\n\n formCardsToggleBusinessConstitution(){\n const toggleIcons = document.querySelectorAll('[id$=\"_company_constitution_documents_card_toggle_icon\"]');\n \n toggleIcons.forEach(icon => {\n icon.addEventListener('click', () => {\n\n const dynamicId = icon.id.replace('_toggle_icon', '');\n \n\n const dynamicElement = document.getElementById(dynamicId);\n\n if (dynamicElement) {\n dynamicElement.classList.toggle('d-none');\n }\n \n icon.classList.toggle('bi-chevron-down');\n icon.classList.toggle('bi-chevron-right');\n });\n });\n }\n\n renderDocuments(){\n let that = this;\n Utils.requestHandler(\"/scf/api/application/\" + that.scf_application_id + '/documents', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.renderAllDocuments(response.data);\n // Utils.showToast(response.message, 'Document list fetched', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n transformDocumentData(ref, last_doc = null){\n let drop_ship = {}\n drop_ship.doc_title = ref.set_value.title;\n if(last_doc != null){\n drop_ship.doc_subtitle = \"Last updated \" + Utils.formatTimeRelative(last_doc.updated_at);\n } else {\n drop_ship.doc_subtitle = ref.set_value.title;\n }\n drop_ship.dtype = ref.set_key;\n drop_ship.ext = \"\";\n if(ref.set_value.ext){\n drop_ship.ext = ref.set_value.ext.map(function(x) {return x.toUpperCase()});\n }\n let ext = ref.set_value.ext[0];\n if(ext && ['jpeg', 'jpg', 'png'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-file-earmark-image\";\n }else if(ext && ['xls', 'xlsx'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-filetype-xls\";\n }else if(ext && ['pdf'].includes(ext.toLowerCase())){\n drop_ship.logo = \"bi-file-earmark-pdf\";\n }else{\n drop_ship.logo = \"bi-file-earmark-text\";\n }\n return drop_ship;\n }\n\n transformPreviewData(preview_data){\n preview_data.formatted_ts = Utils.formatTime(preview_data.created_at);\n preview_data.formatted_ts_ago = Utils.formatTimeRelative(preview_data.created_at);\n preview_data.name = preview_data.id;\n return preview_data;\n }\n\n renderAllDocuments(data){\n let that = this;\n let tmpl = document.getElementById('doc-tmpl');\n this.elem_document_details.innerHTML = '';\n \n //This is tmp fix to hide unwanted docs in demo\n \n\n \n for(let dtype in data.ref){\n let d = that.transformDocumentData(data.ref[dtype]);\n let rendered = Mustache.render(tmpl.innerHTML, d);\n that.elem_document_details.append($.parseHTML(rendered)[1]);\n let url = '/scf/api/application/' + that.scf_application_id + '/document/upload/' + dtype;\n let action_element = document.getElementById('btn_upload_'+dtype);\n DocumentUtils.bindInputElement(action_element);\n DocumentUtils.uploadFiles(action_element, url);\n that.showUploadPreview(action_element);\n }\n this.renderUploadedDocuments(data);\n // this.checkIfBusinessDirectorAndPromoter();\n }\n\n checkIfBusinessDirectorAndPromoter(){\n let that = this;\n let showDiv = false;\n let div = document.getElementById('ca-self-attestation-document');\n // Utils.requestHandler(\"/scf/api/onboarding/company/directors/\" + that.business_applicant_id , Constants.REQUEST.get, {})\n // .then(function (response){\n // })\n if (showDiv) {\n div.style.display = 'block'; \n } else {\n div.style.display = 'none'; \n }\n }\n\n renderUploadedDocuments(data){\n let that = this;\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n data.documents.forEach(function (doc){\n let dtype = doc.file_code;\n let prev = document.getElementById('prev-'+dtype);\n let d1 = that.transformPreviewData(doc);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.append($.parseHTML(rend)[1]);\n })\n document.querySelectorAll('.btn-doc-password').forEach(function (elem){\n elem.addEventListener('click', function (){\n that.passwordHandler(elem);\n })\n })\n this.deleteDocument();\n }\n\n\n showUploadPreview(action_element){\n let that = this;\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n action_element.addEventListener('ev_document_uploaded', function (){\n let response = JSON.parse(action_element.getAttribute('data-upload-response'));\n let prev = document.getElementById('prev-'+response.file_code);\n let d1 = that.transformPreviewData(response);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.prepend($.parseHTML(rend)[1]);\n let pass_elem = document.getElementById('btn_password_'+response.id);\n pass_elem.addEventListener('click', function (){\n that.passwordHandler(pass_elem);\n })\n })\n }\n\n deleteDocument() {\n let that = this;\n let elements = document.querySelectorAll('#delete-button-document');\n \n elements.forEach(function(element) {\n element.addEventListener('click', function(event) {\n let id = event.target.getAttribute(\"data-id\");\n let confirmed = window.confirm('Are you sure you want to delete this document?'); \n if (confirmed) {\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id + '/document/destroy/' + id, Constants.REQUEST.get)\n .then(function(response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'Document Deleted', Constants.TOAST.success);\n that.renderDocuments();\n } else {\n Utils.showToast(response.message, 'Not Found', Constants.TOAST.fail);\n }\n });\n }\n });\n });\n }\n \n \n passwordHandler(elem){\n this.elem_password.value = elem.getAttribute('data-password') == null ? \"\" : elem.getAttribute('data-password') ;\n this.elem_btn_password.setAttribute('data-id', elem.getAttribute('data-id'));\n this.elem_password_modal.show();\n }\n\n updatePasswordHandler(){\n let that = this;\n this.elem_btn_password.addEventListener('click', function (event){\n Utils.requestHandler('/core/api/document/'+ that.elem_btn_password.getAttribute('data-id'), Constants.REQUEST.post, {file_password: that.elem_password.value})\n .then(function (response){\n if(response.message === 'OK'){\n document.getElementById('btn_password_'+response.data.id).setAttribute('data-password', response.data.decrypted_digest);\n let closeModalButton = document.getElementById(\"document-password-modal-close\"); \n closeModalButton.click();\n Utils.showToast(response.message, 'Password updated', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n\n documentGstHandler(){\n let that = this;\n document.getElementById('btn_show_gst_numbers').addEventListener('click', function (event) {\n var modal = new bootstrap.Modal(document.getElementById('gstList'));\n modal.show();\n event.stopPropagation();\n }); \n Utils.requestHandler(\"/scf/api/onboarding/company/gst-all/\" + that.business_applicant_id, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.documentGstInfoCards(response.data.gstins);\n that.documentGstGetOtp();\n that.documentGstSubmitOtp();\n that.toggleGstotp();\n \n // Utils.showToast(response.message, 'All linked GST fetched', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n }\n\n toggleGstotp() {\n document.getElementById('show-hide-gst-otp').addEventListener('change', function(event) {\n let inputElement = document.getElementById('gstin_otp');\n if (event.target.checked) {\n inputElement.type = 'text';\n } else {\n inputElement.type = 'password';\n }\n });\n }\n\n documentGstInfoCards(data){\n let that = this;\n let temp = document.getElementById('gst-info-tmpl');\n let all_cards = document.getElementById('all_gst_cards')\n let rendered = data.map(function (row){\n let d = {\n gstin: row.gstin,\n state: row.state\n } \n return Mustache.render(temp.innerHTML, d);\n })\n\n all_cards.innerHTML = '';\n rendered.forEach(row => {\n all_cards.append($.parseHTML(row)[1])\n })\n let gst_modal = new bootstrap.Modal(document.getElementById('gst_modal'), {});\n let closeModalButtonSecond = document.getElementById(\"btn-gst-list-modal-close\");\n document.querySelectorAll('.gst-ph').forEach(function (item){\n item.addEventListener('click', function (event){\n event.stopPropagation();\n let gstin = item.getAttribute('data-gstin');\n document.getElementById('gst_modal').setAttribute('data-gstin', gstin);\n document.getElementById('gst-fetch-otp').setAttribute('data-gstin', gstin);\n document.getElementById('gst-submit-otp').setAttribute('data-gstin', gstin); \n closeModalButtonSecond.click();\n gst_modal.show(); \n document.getElementById('gst_modal').addEventListener('hide.bs.modal', () => {\n document.querySelectorAll('#gst_modal input[type=\"text\"], #gst_modal input[type=\"password\"]').forEach(field => {\n field.value = '';\n });\n });\n })\n })\n }\n\n documentGstGetOtp(){\n let that = this;\n \n function handleGstFetchOtp(event){\n event.stopPropagation();\n let gstin = this.getAttribute('data-gstin');\n let username = document.getElementById('gstin_username');\n if(!username.value){\n Utils.showInputError(username, 'Username is mandatory');\n return;\n }\n let body = {\n gst_username: username.value\n };\n Utils.requestHandler(\"/scf/api/application/\"+ that.scf_application_id + \"/gst-access/initiate/\" + gstin, Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast('GST Access', response.data.message, Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n }\n \n document.getElementById('gst-fetch-otp').onclick = handleGstFetchOtp;\n }\n \n documentGstSubmitOtp(){\n let that = this;\n \n function handleGstSubmitOtp(event){\n let gstin = this.getAttribute('data-gstin');\n event.stopPropagation();\n let username = document.getElementById('gstin_username');\n let otp = document.getElementById('gstin_otp');\n if(!username.value){\n Utils.showInputError(username, 'Username is mandatory');\n return;\n }\n if(!otp.value){\n Utils.showInputError(otp, 'OTP is mandatory');\n return; \n }\n let body = {\n gst_username: username.value,\n otp: otp.value\n };\n Utils.requestHandler(\"/scf/api/application/\" + that.scf_application_id + \"/gst-access/authorize/\" + gstin, Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n let closeModalButtonMain = document.getElementById(\"gst-otp-modal-close\"); \n closeModalButtonMain.click();\n let closeModalButtonSecond = document.getElementById(\"btn-gst-list-modal-close\"); \n closeModalButtonSecond.click();\n Utils.showToast('GST Access', response.data.message, Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n }\n\n document.getElementById('gst-submit-otp').onclick = handleGstSubmitOtp;\n }\n \n documentBankingHandler(){\n let that = this;\n this.editBankAccountsPanel();\n }\n\n editBankAccountsPanel(){\n let that = this;\n Utils.requestHandler(\"/scf/api/application/\" + that.scf_application_id + '/bank-accounts', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n response.data.bank_accounts.forEach(bank_account => {\n let abs_banking = new AbstractBanking(bank_account.id);\n abs_banking.account_number = bank_account.account_number;\n abs_banking.account_type = bank_account.account_type;\n abs_banking.account_holder = bank_account.primary_account_holder_name;\n abs_banking.verified_account_holder = bank_account.primary_account_holder_name;\n abs_banking.ifsc_code = bank_account.ifsc_code;\n abs_banking.bank_branch = bank_account.branch;\n abs_banking.bank_name = bank_account.bank_name;\n abs_banking.bank_micr = bank_account.micr_code;\n that.obj_banking.push(abs_banking);\n })\n that.bankRenderVerifiedAccounts();\n that.uploadOnboardingBankingDocuments();\n // Utils.showToast('Fetched', 'Bank Accounts', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n bankRenderVerifiedAccounts(){\n let that = this;\n let temp = document.getElementById('banking-tr-tmpl-upload-docs');\n let ac_table = document.getElementById('verified_accounts');\n ac_table.innerHTML = null;\n this.obj_banking.forEach(function (abs_banking){\n if(abs_banking.account_holder != null && abs_banking.account_number != null){\n let rend_row = Mustache.render(temp.innerHTML, abs_banking);\n ac_table.append($.parseHTML(rend_row)[1]); \n }\n })\n \n }\n\n documentCpHandler(){\n let that = this;\n that.renderVerifiedCpInTable();\n }\n\n renderVerifiedCpInTable(){\n let that = this;\n Utils.requestHandler('/scf/api/application/'+that.scf_application_id+'/counter-parties', Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n let tmpl = document.getElementById('cp-row-doc-upload-tmpl');\n let dx = document.getElementById('verified_cps');\n dx.innerHTML = null;\n response.data.counter_parties.forEach(function (dd){\n dd.vintage = Utils.formatTimeRelative(dd.vintage);\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n })\n that.uploadOnboardingCpDocuments();\n }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n \n }\n\n uploadOnboardingCpDocuments() {\n let that = this;\n const buttons = document.querySelectorAll('button[id^=\"btn_cp_file_upload\"]');\n \n buttons.forEach(button => {\n const cp_id = button.getAttribute('cp-id');\n const buttonId = button.id;\n const documentPreview = document.querySelector(`[cp-id=\"${cp_id}_preview\"][id=\"${buttonId}_preview\"]`);\n DocumentUtils.bindInputElement(button);\n DocumentUtils.showOfflinePreview(button, documentPreview);\n const inp_elem = button.parentElement.querySelector('.file-input');\n let file_code;\n\n inp_elem.addEventListener('change', function () {\n if (inp_elem.files.length >= 1) {\n let more_params = {};\n more_params.cp_id = cp_id;\n more_params.document_for = \"CounterParty\";\n\n file_code = buttonId.substring(\"btn_cp_file_upload_\".length);\n let url = `/scf/api/application/${that.scf_application_id}/document/upload/${file_code}`;\n DocumentUtils.uploadOnElementTrigger(inp_elem, inp_elem, url, more_params);\n setTimeout(function() {\n that.renderDocuments();\n }, 5000);\n inp_elem.value = '';\n }\n });\n });\n }\n\n bankStatementUploadHandler(id){\n let data = {\n documents: {bank_statement_1: []},\n ref: {\n bank_statement_1: {\n set_key: \"bank_statement_1\",\n set_name: \"Bank Statement\",\n set_value: {\n title: \"Bank Statement\",\n desc: \"Bank Statement for last 6 months\",\n ext: [\"pdf\"]\n }\n } \n }\n }\n\n let that = this;\n let tmpl = document.getElementById('doc-tmpl');\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n this.elem_banking_modal_body.innerHTML = '';\n let grped_data = data.documents;\n for(let dtype in grped_data){\n let d = that.transformDocumentData(data.ref[dtype], grped_data[dtype][0]);\n let rendered = Mustache.render(tmpl.innerHTML, d);\n that.elem_banking_modal_body.append($.parseHTML(rendered)[1]);\n let prev = document.getElementById('prev-'+dtype);\n let url = '/scf/api/application/' + that.scf_application_id + '/document/upload/bank_statement';\n let action_element = document.getElementById('btn_upload_'+dtype);\n let metadata = {\n \"data-bank-account\": id,\n }\n DocumentUtils.bindInputElement(action_element);\n DocumentUtils.uploadFiles(action_element, url, metadata);\n that.showUploadPreview(action_element);\n grped_data[dtype].forEach(function (doc_data){\n let d1 = that.transformPreviewData(doc_data);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.append($.parseHTML(rend)[1]);\n })\n }\n document.querySelectorAll('.btn-doc-password').forEach(function (elem){\n elem.addEventListener('click', function (){\n that.passwordHandler(elem);\n })\n })\n }\n\n documentAadhaarHandler(){\n let that = this;\n let company_type = document.getElementById('company_pan_type');\n if(!company_type.value || (company_type.value != \"sole_proprietorship\")){\n return\n }\n that.documentAadhaarInfoCards();\n that.documentAadhaarGetOtp();\n that.documentAadhaarSubmitOtp();\n }\n\n documentPromoterHandler(){\n let that = this;\n that.addPromoterDocumentInputFields();\n }\n\n addPromoterDocumentInputFields(){\n let that = this\n let promoterDocUploadSection = document.getElementById('promoterDocUploadTarget');\n Utils.requestHandler(\"/scf/api/onboarding/company/directors/\" + that.business_applicant_id, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n promoterDocUploadSection.innerHTML = '';\n response.data.forEach(item => {\n const fullName = item.full_name || item.din_full_name || (item.pan_first_name + ' ' + item.pan_last_name);\n const promoterId = item.id\n const template = document.getElementById('promoterDocUploadTemplate').innerHTML;\n const rendered = Mustache.render(template, { name: fullName, id: promoterId });\n promoterDocUploadSection.innerHTML += rendered;\n });\n that.uploadOnboardingPromoterDocuments();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n\n })\n }\n\n uploadOnboardingDocuments() {\n let that = this;\n const buttons = document.querySelectorAll('button[id^=\"btn_doc_upload\"]');\n \n buttons.forEach(button => {\n const buttonId = button.id;\n const documentPreview = document.getElementById(`${buttonId}_preview`);\n DocumentUtils.bindInputElement(button);\n DocumentUtils.showOfflinePreview(button, documentPreview);\n const inp_elem = button.parentElement.querySelector('.file-input');\n const selectField = document.getElementById(`${buttonId}_select`);\n let file_code;\n \n inp_elem.addEventListener('change', function () {\n if (inp_elem.files.length >= 1) {\n if (selectField) {\n const selectedOption = selectField.options[selectField.selectedIndex];\n file_code = selectedOption.value;\n if(file_code===\"Select Type\"){\n documentPreview.innerHTML = \"\";\n }\n } else {\n file_code = buttonId.substring(\"btn_doc_upload_\".length);\n }\n let url = `/scf/api/application/${that.scf_application_id}/document/upload/${file_code}`;\n DocumentUtils.uploadOnElementTrigger(inp_elem, inp_elem, url);\n setTimeout(function() {\n that.renderDocuments();\n }, 5000);\n if (file_code.startsWith(\"financial_statements_\")){\n button.innerHTML = \"Upload More\";\n }\n inp_elem.value = '';\n }\n });\n });\n }\n\n uploadOnboardingBankingDocuments() {\n let that = this;\n const buttons = document.querySelectorAll('.upload-bank-statement');\n buttons.forEach(button => {\n const buttonId = button.id;\n const documentPreview = document.getElementById(`${buttonId}_preview`);\n DocumentUtils.bindInputElement(button);\n DocumentUtils.showOfflinePreview(button, documentPreview);\n const inp_elem = button.parentElement.querySelector('.file-input');\n const bankAccountNumber = button.getAttribute(\"data_bank_account_number\");\n inp_elem.addEventListener('change', function () {\n if (inp_elem.files.length >= 1) {\n let pdf_password_modal = new bootstrap.Modal(document.getElementById('pdf_password_modal'), {});\n pdf_password_modal.show(); \n document.getElementById('pdf_password_modal').addEventListener('hide.bs.modal', () => {\n document.querySelectorAll('#pdf_password_modal input[type=\"text\"]').forEach(field => {\n field.value = '';\n });\n });\n document.getElementById('statement-password-submit').addEventListener('click', function() {\n let url = `/scf/api/application/${that.scf_application_id}/document/upload/bank_statement`;\n let metadata = {\n \"data_bank_account_number\": bankAccountNumber,\n \"file_password\": document.getElementById('pdf_password').value\n }\n DocumentUtils.uploadOnElementTrigger(inp_elem, inp_elem, url, metadata);\n setTimeout(function() {\n that.renderDocuments();\n }, 5000);\n button.innerHTML = \"Upload More\";\n inp_elem.value = '';\n document.getElementById('pdf_password_modal').addEventListener('hide.bs.modal', () => {\n document.querySelectorAll('#pdf_password_modal input[type=\"text\"]').forEach(field => {\n field.value = '';\n });\n });\n pdf_password_modal.hide(); \n })\n }\n });\n });\n }\n\n uploadOnboardingPromoterDocuments() {\n let that = this;\n const buttons = document.querySelectorAll('button[id^=\"btn_file_upload\"]');\n \n buttons.forEach(button => {\n const promoter_id = button.getAttribute('promoter-id');\n const buttonId = button.id;\n const documentPreview = document.querySelector(`[promoter-id=\"${promoter_id}_preview\"][id=\"${buttonId}_preview\"]`);\n DocumentUtils.bindInputElement(button);\n DocumentUtils.showOfflinePreview(button, documentPreview);\n const inp_elem = button.parentElement.querySelector('.file-input');\n const selectField = document.querySelector(`[promoter-id=\"${promoter_id}_select\"][id=\"${buttonId}_select\"]`); \n let file_code;\n \n inp_elem.addEventListener('change', function () {\n if (inp_elem.files.length >= 1) {\n let more_params = {};\n more_params.promoter_id = promoter_id;\n more_params.document_for = \"promoter\";\n if (selectField) {\n const selectedOption = selectField.options[selectField.selectedIndex];\n file_code = selectedOption.value;\n if(file_code===\"Select Type\"){\n documentPreview.innerHTML = \"\";\n }\n } else {\n file_code = buttonId.substring(\"btn_file_upload_\".length);\n }\n let url = `/scf/api/application/${that.scf_application_id}/document/upload/${file_code}`;\n DocumentUtils.uploadOnElementTrigger(inp_elem, inp_elem, url, more_params);\n setTimeout(function() {\n that.renderDocuments();\n }, 5000);\n inp_elem.value = '';\n }\n });\n });\n }\n \n documentAadhaarInfoCards(){\n let that = this;\n let temp = document.getElementById('aadhaar-info-tmpl');\n let all_cards = document.getElementById('aadhaar_card');\n let rendered = Mustache.render(temp.innerHTML, {aadhaar: '123412341234'});\n all_cards.innerHTML = '';\n all_cards.append($.parseHTML(rendered)[1]);\n \n let aadhaar_modal = new bootstrap.Modal(document.getElementById('aadhaar_modal'), {});\n document.querySelectorAll('.aadhaar-ph').forEach(function (item){\n item.addEventListener('click', function (event){\n event.stopPropagation();\n aadhaar_modal.show();\n })\n })\n }\n\n documentAadhaarGetOtp(){\n let that = this;\n document.getElementById('aadhaar-fetch-otp').addEventListener('click', function (event){\n event.stopPropagation();\n let aadhaar = document.getElementById('aadhaar');\n if(!aadhaar.value || (aadhaar.value && aadhaar.value.length != 12)){\n Utils.showInputError(aadhaar, 'Aadhaar is mandatory/wrong');\n return;\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/application/\" + that.scf_application_id + \"/aadhaar-access/\" + aadhaar.value + \"/initiate\", Constants.REQUEST.post, {})\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast('Aadhaar OTP sent to linked number', response.data.message, Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n \n })\n }\n\n documentAadhaarSubmitOtp(){\n let that = this;\n document.getElementById('aadhaar-submit-otp').addEventListener('click', function (){\n let aadhaar = document.getElementById('aadhaar');\n let otp = document.getElementById('aadhaar_otp');\n if(!aadhaar.value){\n Utils.showInputError(aadhaar, 'Aadhaar is mandatory');\n return;\n }\n if(!otp.value){\n Utils.showInputError(otp, 'OTP is mandatory');\n return; \n }\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/application/\" + that.scf_application_id + \"/aadhaar-access/\" + aadhaar.value + \"/authorize\", Constants.REQUEST.post, {\"otp\": otp.value})\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast('Aadhaar XML downloaded', response.data.message, Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n })\n }\n\n\n\n}\n\n\n\n","import { Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\n\nexport class ScfInvoiceDashboard {\n\n constructor() {\n Utils.pageSanityHandler();\n }\n\n handler() {\n this.dtHandler();\n }\n\n mainTableTransformer(data) {\n data.formatted_created_at = Utils.formatTime(data.created_at);\n data.formatted_updated_at = Utils.formatTimeRelative(data.updated_at);\n data.total_invoice_value = data.total_invoice_value ? data.total_invoice_value.toLocaleString('en-IN') : \"NA\";\n data.formatted_due_date = data.due_date ? Utils.formatDate(data.due_date) : 'NA';\n data.formatted_due_date_relative = data.due_date ? Utils.formatTimeRelative(data.due_date) : 'NA';\n let badge_invoice_state = { \"finance_requested\": \"bg-warning\", \"verified\": \"bg-info\", \"buyer_approved\": \"bg-success\", \"buyer_rejected\": \"bg-danger\", \"flexi_approved\": \"bg-success\", \"flexi_rejected\": \"bg-danger\", \"sent_to_checker\": \"bg-info\", \"sent_for_ddr\": \"bg-info\", \"rejected_from_ddr\": \"bg-danger\", \"lender_sanctioned\": \"bg-success\", \"lender_rejected\": \"bg-danger\", \"lender_disbursed\": \"bg-success\", \"duplicate\": \"bg-warning\", \"closed\": \"bg-secondary\" };\n data.badge_invoice_status = badge_invoice_state[data.status];\n data.status = Utils.capitalizeFirstLetter(data.status.split('_').join(' '));\n data.formatted_purpose = Utils.capitalizeFirstLetter(data.purpose.split('_').join(' '));\n data.badge_purpose = 'badge-primary';\n if (data.purpose === 'finance') {\n data.badge_purpose = 'badge-green';\n }\n\n return data;\n }\n\n dtHandler() {\n let table_container_id = '#dt-table-application';\n let dt_instance = Utils.renderDataTable(table_container_id + '> table');\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n '/scf/api/invoices',\n Constants.REQUEST.get,\n {},\n 'dt-main-tmpl',\n this.mainTableTransformer,\n 'data',\n {});\n }\n\n}\n\nexport class ScfDueInvoiceDashboard {\n constructor() {\n Utils.pageSanityHandler();\n }\n\n handler() {\n this.dtHandler();\n }\n\n mainTableTransformer(data) {\n data.other_charges = data.other_charges.toFixed(2);\n\n const today = new Date();\n const dueDateParts = data.due_date.split('-'); // Assume dd-mm-yyyy format\n const dueDate = new Date(dueDateParts[2], dueDateParts[1] - 1, dueDateParts[0]);\n const isPastDue = dueDate < today;\n const isTodayOrFutureDue = dueDate >= today;\n\n data.due_date_badge = \"bg-warning\"\n if (isPastDue) {\n data.due_date_badge = \"bg-danger\";\n }\n\n // Calculate the difference in days\n const diffTime = dueDate - today;\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); // Convert milliseconds to days\n\n // Add overdue or pending days information\n if (diffDays < 0) {\n data.overdue_days = Math.abs(diffDays); // Overdue days (positive number)\n data.due_status_message = `${Math.abs(diffDays)} days overdue`;\n } else {\n data.pending_days = diffDays; // Days remaining (positive number)\n data.due_status_message = `Due in ${diffDays} days`;\n }\n return data;\n }\n\n dtHandler() {\n let table_container_id = '#dt-table-application';\n let dt_instance = Utils.renderDataTable(table_container_id + '> table');\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n '/scf/api/invoice/due-invoices',\n Constants.REQUEST.get,\n {},\n 'dt-due-invoice-main-tmpl',\n this.mainTableTransformer,\n 'data',\n {});\n }\n}\n","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nexport default class ScfPreApproval{\n\n constructor(){\n let that = this;\n that.checkZipcodeEligibility();\n }\n\n validateParams(){\n let pass = true;\n if(!this.elem_company_cred_period.value){\n Utils.showInputError(this.elem_company_cred_period, 'Credit period is mandatory');\n pass = false;\n }\n if(!this.elem_company_zipcode_pre.value){\n Utils.showInputError(this.elem_company_zipcode_pre, 'Pincode is mandatory');\n pass = false;\n }\n if(!Utils.validatorZipcode(this.elem_company_zipcode_pre.value)){\n Utils.showInputError(this.elem_company_zipcode_pre, 'Incorrect Pincode');\n pass = false;\n }\n return pass\n }\n\n calculateAmount(){\n let that = this;\n document.getElementById('btn-submit-pre-offer').addEventListener('click', function (){\n if(that.validateParams()){\n that.elem_pre_app_amount_div.classList.remove('no-display');\n that.elem_company_pre_amount.innerText = Utils.indianRepresentation(that.preApprovalFormula());\n }\n })\n }\n\n preApprovalFormula(){\n return 100000 * parseInt(this.elem_company_m_sales_inp.value) * (this.elem_company_cred_period.value) * 1.25/30;\n }\n\n checkZipcodeEligibility(){\n\n Utils.requestHandler(\"/scf/api/application/\" + document.getElementById('scf_application_id').value, Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n const zipcode_allowed = response.data.scf_application.serving_zipcode;\n if (zipcode_allowed){\n document.getElementById('success_indicative_offer').classList.remove('d-none');\n document.getElementById('Build your Application_onb_module').classList.remove('d-none');\n } else {\n document.getElementById('fail_indicative_offer').classList.remove('d-none');\n }\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n\n }\n\n}","import {Utils} from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\nimport Mustache from 'mustache';\n\nclass LanDetails {\n constructor(){\n this.elem_lan_details = document.getElementById('div_lan_details');\n this.elem_sub_lan_details = document.getElementById('div_sub_lan_details');\n }\n\n transformSubLanDetails(data){\n data.principal_amount = data.principal_amount == null ? \"N/A\" : data.principal_amount.toLocaleString('en-IN');\n data.dpd = data.dpd == null ? \"N/A\" : data.dpd;\n data.total_paid = data.total_paid == null ? \"N/A\" : data.total_paid.toLocaleString('en-IN');\n data.interest = data.interest == null ? \"N/A\" : data.interest;\n data.loan_sanction_date = data.loan_sanction_date == null ? \"N/A\" : data.loan_sanction_date;\n data.loan_start_date = data.loan_start_date == null ? \"N/A\" : data.loan_start_date;\n data.loan_end_date = data.loan_end_date == null ? \"N/A\" : data.loan_end_date;\n return data;\n }\n}\n\nexport class CollectionApplicationHandler{\n\tconstructor(){\n this.lan_id = document.getElementById('lan_id');\n this.sub_lan_id = document.getElementById('sub_lan_id');\n\t}\n\n\thandlerDashboard(){\n\t\tthis.dtHandler();\n Utils.pageSanityHandler();\n\n\t}\n\n handlerDetails(){\n Utils.initializePagers('app-pager-parent');\n this.getLan();\n this.getSubLan();\n this.emiScheduleTableHandler();\n this.emiPaymentsTableHandler();\n this.ledgerTableHandler();\n Utils.pageSanityHandler();\n }\n\n\tmainTableTransformer(data){\n data.total_paid = data.total_paid == null ? \"N/A\" : data.total_paid.toLocaleString('en-IN');\n data.total_due = data.total_due == null ? \"N/A\" : data.total_due.toLocaleString('en-IN');\n data.dpd = data.dpd == null ? 0 : data.dpd;\n data.created_at = Utils.formatTimeRelative(data.created_at);\n return data;\n }\n\n dtHandler(){\n let table_container_id = '#dt-table-application'\n let dt_instance = Utils.renderDataTable(table_container_id + '> table');\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n '/collections/api/lan_applications',\n Constants.REQUEST.get,\n {},\n 'dt-main-tmpl',\n this.mainTableTransformer,\n 'data',\n {business_application_id: 'Application ID',\n business_applicant_name: 'Applicant'});\n }\n\n getLan(){\n let that = this;\n Utils.requestHandler('/collections/api/lan_applications/' + that.lan_id.value, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.renderLanDetails(response.data);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n renderLanDetails(data){\n const that = this;\n let elem_lan_details = document.getElementById('div_lan_details');\n let tmpl = document.getElementById('lan-details-tmpl');\n let rendered = Mustache.render(tmpl.innerHTML, data);\n elem_lan_details.append($.parseHTML(rendered)[1]);\n }\n\n\n getSubLan(){\n let that = this;\n document.getElementById('nav-sub-lan').addEventListener('click', function(){\n Utils.requestHandler('/collections/api/lan_applications/' + that.lan_id.value + '/sub-lan/' + that.sub_lan_id.value, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.renderSubLanDetails(response.data);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n });\n }\n\n transformSubLanDetails(data){\n data.principal_amount = data.principal_amount == null ? \"N/A\" : data.principal_amount.toLocaleString('en-IN');\n data.dpd = data.dpd == null ? \"N/A\" : data.dpd;\n data.total_paid = data.total_paid == null ? \"N/A\" : data.total_paid.toLocaleString('en-IN');\n data.interest = data.interest == null ? \"N/A\" : data.interest;\n data.loan_sanction_date = data.loan_sanction_date == null ? \"N/A\" : data.loan_sanction_date;\n data.loan_start_date = data.loan_start_date == null ? \"N/A\" : data.loan_start_date;\n data.loan_end_date = data.loan_end_date == null ? \"N/A\" : data.loan_end_date;\n return data;\n }\n\n renderSubLanDetails(data){\n const that = this;\n let elem_sub_lan_details = document.getElementById('div_sub_lan_details');\n let tmpl = document.getElementById('sub-lan-details-tmpl');\n let d = that.transformSubLanDetails(data);\n let rendered = Mustache.render(tmpl.innerHTML, d);\n elem_sub_lan_details.innerHTML = '';\n elem_sub_lan_details.append($.parseHTML(rendered)[1]);\n }\n\n emiScheduleTableTransformer(data){\n data.interest = data.interest == null ? \"N/A\" : data.interest;\n data.due_date = data.due_date == null ? \"N/A\" : Utils.formatTimeRelative(data.due_date);\n data.status = data.status == null ? \"N/A\" : data.status;\n data.principal_amount = data.principal_amount == null ? \"N/A\" : data.principal_amount.toLocaleString('en-IN');\n data.due_date = data.due_date == null ? \"N/A\" : Utils.formatTimeRelative(data.due_date);\n return data;\n }\n\n emiScheduleTableHandler(){\n let that = this;\n document.getElementById('nav-emi-schedule').addEventListener('click', function(){\n let table_container_id = '#dt-table-emi-schedule';\n let dt_instance = Utils.renderDataTable(table_container_id + '> table');\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n '/collections/api/lan_applications/' + that.lan_id.value + '/sub-lan/' + that.sub_lan_id.value + '/emi-schedule',\n Constants.REQUEST.get,\n {},\n 'dt-emi-schedule-tmpl',\n this.emiScheduleTableTransformer,\n 'emi_schedule',\n {});\n });\n }\n\n emiPaymentsTableTransformer(data){\n data.amount_paid = data.amount_paid == null ? \"N/A\" : data.amount_paid.toLocaleString('en-IN');\n data.paid_on = Utils.formatTimeRelative(data.paid_on);\n data.payment_mode = data.payment_mode == null ? \"N/A\" : data.payment_mode;\n data.source = data.source == null ? \"N/A\" : data.source;\n data.client_ref_id = data.client_ref_id == null ? \"N/A\" : data.client_ref_id;\n return data;\n }\n\n emiPaymentsTableHandler(){\n let that = this;\n document.getElementById('nav-emi-payments').addEventListener('click', function(){\n let table_container_id = '#dt-table-emi-payments'\n let dt_instance = Utils.renderDataTable(table_container_id + '> table');\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n '/collections/api/lan_applications/' + that.lan_id.value + '/sub-lan/' + that.sub_lan_id.value + '/emi-payments',\n Constants.REQUEST.get,\n {},\n 'dt-emi-payments-tmpl',\n that.emiPaymentsTableTransformer,\n 'data',\n {});\n });\n } \n\n ledgerTableTransformer(data){\n const that = this;\n data.principal_amount = data.principal_amount == null ? \"N/A\" : data.principal_amount.toLocaleString('en-IN');\n data.interest = data.interest == null ? \"N/A\" : data.interest.toLocaleString('en-IN');\n data.charges = data.charges == null ? \"N/A\" : data.charges.toLocaleString('en-IN');\n data.debit = data.debit == null ? \"N/A\" : data.debit.toLocaleString('en-IN');\n data.credit = data.credit == null ? \"N/A\" : data.credit.toLocaleString('en-IN');\n data.updated_at = data.updated_at == null ? \"N/A\" : Utils.formatTimeRelative(data.updated_at);\n return data;\n }\n\n ledgerTableHandler(){\n let that = this;\n document.getElementById('nav-emi-ledgers').addEventListener('click', function(){\n let table_container_id = '#dt-table-ledgers'\n let dt_instance = Utils.renderDataTable(table_container_id + '> table');\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n '/collections/api/lan_applications/' + that.lan_id.value + '/sub-lan/' + that.sub_lan_id.value + '/ledgers',\n Constants.REQUEST.get,\n {},\n 'dt-ledgers-tmpl',\n that.ledgerTableTransformer,\n 'data',\n {});\n });\n }\n\n}\n\n\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n let path = window.location.pathname;\n if(path.startsWith(\"/collections/lan/details\")){\n new CollectionApplicationHandler().handlerDetails();\n } else if(path.startsWith(\"/collections/lan\")){\n new CollectionApplicationHandler().handlerDashboard();\n \n }\n});","import { DocumentUtils, Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from \"mustache\";\nimport Moment from \"moment\";\nimport { ENVIRONMENT, PROFILE_REDIRECT } from \"../../core/constants\";\nimport ScfAppPanelDocument from \"./scf_app_panel_document\";\nimport ScfAppPanelInvoice from \"./scf_app_panel_invoice\";\nimport ScfAppApplicationPanel from \"./scf_app_application_panel\";\nimport ScfAppAnalysisCrimeCheck from \"./scf_app_analysis_crime_check\";\nimport ScfAppAnalysisBanking from \"./scf_app_analysis_banking\";\nimport ScfPanelLenderApplication from \"./scf_app_panel_lender\";\nimport ScfAppPanelLenderDecision from \"./scf_app_panel_decision\";\nimport ScfAppPanelDedupe from \"./scf_app_panel_dedupe\";\nimport { ScfPermission } from \"../scf_auth_handler\";\n\n\n\nexport class ScfApplicationDashboard {\n constructor() {\n Utils.pageSanityHandler();\n }\n\n handler() {\n this.dtHandler();\n this.statusClickHandler();\n }\n\n statusClickHandler() {\n document.querySelector(\"#dt-table-application\").addEventListener(\"click\", (event) => {\n if (event.target.classList.contains(\"status-btn\")) {\n const remark = event.target.getAttribute(\"data-remark\") || \"No remark available\";\n alert(remark);\n }\n });\n }\n\n\n mainTableTransformer(data) {\n data.application_details_link = \"/scf/application/details/\" + data.id;\n data.required_amount = data.required_amount.toLocaleString(\"en-IN\");\n data.formatted_created_at = Utils.formatTimeRelative(data.created_at);\n data.created_at_ago = Utils.formatTimeRelative(data.created_at);\n data.formatted_updated_at = Utils.formatTimeRelative(data.updated_at);\n data.sales_manager_name = data.sales_manager_name || \"NA\";\n data.credit_manager_name = data.credit_manager_name || \"NA\";\n data.status_human = Utils.capitalizeFirstLetter(\n data.status.split(\"_\").join(\" \")\n );\n if (data.status === 'approved' || data.status === 'lender_approved') {\n data.status_color = 'bg-success';\n } else if (data.status === 'rejected' || data.status === 'application_rejected' || data.status === 'lender_rejected') {\n data.status_color = 'bg-danger';\n } else if (data.status === 'application_created') {\n data.status_color = 'bg-warning';\n } else {\n data.status_color = 'bg-secondary';\n }\n return data;\n }\n\n dtHandler() {\n let table_container_id = \"#dt-table-application\";\n let dt_instance = Utils.renderDataTable(table_container_id + \"> table\");\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n \"/scf/api/applications\",\n Constants.REQUEST.get,\n {},\n \"dt-main-tmpl\",\n this.mainTableTransformer,\n \"data\",\n {\n business_application_id: \"Application ID\",\n business_applicant_name: \"Applicant\",\n }\n );\n }\n}\n\nexport class ScfApplicationDetails {\n constructor() {\n Utils.pageSanityHandler();\n Utils.initializePagers(\"app-pager-parent\");\n }\n\n handler() {\n this.userWisePanelHandler();\n new ScfAppApplicationPanel();\n new ScfAppPanelDocument();\n new ScfAppPanelInvoice();\n new ScfAppPanelDedupe();\n new PanelAnalysis();\n new ScfPanelLenderApplication();\n if (ScfPermission.isScfLender()) {\n new ScfAppPanelLenderDecision();\n }\n new PanelCounterParties();\n new PanelPd();\n new PanelGstin();\n new PanelDomainEmail();\n new PanelDecision();\n new UdhyamAadhar();\n new Eligibility();\n new LoanTransaction();\n new SalesPerson();\n new TagBranch()\n this.attachProfileButtonHandler();\n }\n\n userWisePanelHandler() {\n if (ScfPermission.isScfBorrower()) {\n document\n .getElementById(\"app-pager-parent\")\n .querySelectorAll(\".pager-items\")\n .forEach((element) => {\n element.classList.add(\"no-display\");\n });\n document.getElementById(\"nav-application\").classList.remove(\"no-display\");\n document.getElementById(\"nav-applicant\").classList.remove(\"no-display\");\n document.getElementById(\"nav-counterparty\").classList.remove(\"no-display\");\n }\n // hiding fulfiilment for counterparty and borrower and lender\n if (ScfPermission.isScfLender() || ScfPermission.isScfCounterparty() || ScfPermission.isScfBorrower() || ScfPermission.isScfSales()) {\n document.getElementById(\"nav-panel-lenders\").classList.add(\"no-display\");\n document.getElementById(\"balance_sheet_file\").classList.add(\"no-display\");\n document.getElementById(\"btn-submit-app-decision\").classList.add(\"no-display\");\n document.getElementById(\"udyamSearchField\").classList.add(\"no-display\");\n document.getElementById(\"syncButton\").classList.add(\"no-display\");\n document.getElementById(\"btn_generate_gst_report_pdf\").classList.add(\"no-display\");\n document.getElementById(\"upload_balance_sheet\").classList.add(\"no-display\");\n document.getElementById(\"upload_financial_appraisal\").classList.add(\"no-display\");\n document.getElementById(\"download_button_hide\").classList.add(\"no-display\");\n document.getElementById(\"btn_generate_pd_pdf\").classList.add(\"no-display\");\n document.getElementById(\"btn-quest-submit\").classList.add(\"no-display\");\n document.getElementById(\"profil_button\").classList.add(\"no-display\");\n }\n // hiding counterparty add button for lender and counteryparty\n if (ScfPermission.isScfLender() || ScfPermission.isScfCounterparty()) {\n document.getElementById(\"btn_cp_add_modal\").classList.add(\"no-display\");\n }\n // hiding dedupe for lender and counterparty and borrower\n if (ScfPermission.isScfLender() || ScfPermission.isScfCounterparty() || ScfPermission.isScfBorrower() || ScfPermission.isScfSales()) {\n document.getElementById(\"nav-dedupe\").classList.add(\"no-display\");\n }\n //hiding for document for counterparty,borrrwer\n if (ScfPermission.isScfCounterparty() || ScfPermission.isScfBorrower()) {\n document.getElementById(\"nav-documents\").classList.add(\"no-display\");\n document.getElementById(\"nav-kyc\").classList.add(\"no-display\");\n }\n //hiding profile and application and de-duplication and kyc \n if (ScfPermission.isScfAdmin() || ScfPermission.isScfCredit()) {\n document.getElementById(\"nav-applicant\").classList.add(\"no-display\");\n document.getElementById(\"nav-application\").classList.add(\"no-display\");\n document.getElementById(\"nav-documents\").classList.add(\"no-display\");\n document.getElementById(\"nav-dedupe\").classList.add(\"no-display\");\n document.getElementById(\"nav-kyc\").classList.add(\"no-display\");\n }\n //hiding anyalysis for counterparty\n if (ScfPermission.isScfCounterparty() || ScfPermission.isScfSales()) {\n document.getElementById(\"nav-analysis-tab\").classList.add(\"no-display\");\n }\n else if (ScfPermission.isScfCounterparty()) {\n document\n .getElementById(\"app-pager-parent\")\n .querySelectorAll(\".pager-items\")\n .forEach((element) => {\n element.classList.add(\"no-display\");\n });\n document.getElementById(\"nav-application\").classList.remove(\"no-display\");\n document.getElementById(\"nav-applicant\").classList.remove(\"no-display\");\n } else if (ScfPermission.isScfAdmin()) {\n localStorage.setItem(\"pan_name\", \"\");\n localStorage.setItem(\"pan\", \"\");\n } else if (ScfPermission.isScfCredit()) {\n localStorage.setItem(\"business_applicant_id\", \"\");\n localStorage.setItem(\"pan_name\", \"\");\n localStorage.setItem(\"pan\", \"\");\n }\n }\n attachProfileButtonHandler() {\n const profileButton = document.getElementById('profil_button');\n if (profileButton) {\n profileButton.addEventListener('click', this.reactProfileUrl);\n }\n }\n reactProfileUrl() {\n const applicationId = document.getElementById('scf_application_id').value;\n if (ENVIRONMENT === 'development') {\n window.location.replace(`${PROFILE_REDIRECT}/${applicationId}`);\n } else {\n window.location.replace(`/R/application/detail/${applicationId}`);\n }\n }\n}\n\nclass PanelDomainEmail {\n constructor() {\n this.scf_application_id =\n document.getElementById(\"scf_application_id\").value;\n let that = this;\n document\n .getElementById(\"nav-domain-email\")\n .addEventListener(\"click\", function () {\n that.fetchDomainEmailData();\n });\n this.refreshDomainEmail();\n }\n\n fetchDomainEmailData() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/email-fraud-check\",\n Constants.REQUEST.get\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n let data = response.data.result[0];\n let container = document.getElementById(\"email_domain_container\"); // Assuming 'container' is a div where you want to append the table\n that.createNestedTable(data, container);\n // const dataEmailDomainMustache = that.populateEmailData(response);\n // const templateDomainEmail = document.getElementById('templateDomainEmail').innerHTML;\n // const rendered = Mustache.render(templateDomainEmail, dataEmailDomainMustache);\n // document.getElementById('targetDomainEmail').innerHTML = rendered;\n Utils.showToast(\n \"Fetched\",\n \"Domain & Email fetched\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.info\n );\n }\n })\n .then(function () { });\n }\n\n populateEmailData(json) {\n let data = {\n company: `${json[\"data\"][\"result\"][0][\"emailOwnerDetails\"]?.company}
`,\n email: `${json[\"data\"][\"result\"][0][\"emailOwnerDetails\"]?.email}
`,\n location: `${json[\"data\"][\"result\"][0][\"emailOwnerDetails\"]?.location}
`,\n name: `${json[\"data\"][\"result\"][0][\"emailOwnerDetails\"]?.name}
`,\n domainName: `${json[\"data\"][\"result\"][0][\"domainDetails\"]?.domainName}
`,\n domainCountry: `${json[\"data\"][\"result\"][0][\"domainDetails\"]?.country}
`,\n emailRiskAdvice: ``,\n emailRiskReason: `${json[\"data\"][\"result\"][0][\"emailAndDomainRiskDetails\"]?.reason}`,\n ipAddress: `${json[\"data\"][\"result\"][0][\"ipDetails\"]?.ipAddress}
`,\n ipReputation: `${json[\"data\"][\"result\"][0][\"ipDetails\"]?.ipReputation}`,\n ipCity: `${json[\"data\"][\"result\"][0][\"ipLocationDetails\"]?.ipCity}`,\n ipRegion: `${json[\"data\"][\"result\"][0][\"ipLocationDetails\"]?.ipRegion}`,\n ipNetSpeedCell: `${json[\"data\"][\"result\"][0][\"ipDetails\"]?.ipNetSpeedCell}`,\n domainAge: `${json[\"data\"][\"result\"][0][\"emailAndDomainValidationDetails\"]?.domainAge}`,\n gravatar: `${json[\"data\"][\"result\"][0][\"socialMediaDetails\"][\"smlinks\"][0]?.link}`,\n googleSearch: `${json[\"data\"][\"result\"][0][\"socialMediaDetails\"][\"smlinks\"]?.link}`,\n twitter: `${json[\"data\"][\"result\"][0][\"socialMediaDetails\"][\"smlinks\"][3]?.link}`,\n };\n return data;\n }\n\n createNestedTable(jsonObj, parentElement) {\n let that = this;\n let table = document.createElement(\"table\");\n table.style.borderCollapse = \"collapse\";\n table.style.width = \"100%\";\n table.style.border = \"1px solid #ddd\";\n table.style.marginTop = \"20px\";\n table.style.fontFamily = \"Arial, sans-serif\";\n table.style.fontSize = \"14px\";\n\n for (let key in jsonObj) {\n if (jsonObj.hasOwnProperty(key)) {\n let tr = document.createElement(\"tr\");\n let capitalizedKey = key.replace(/([A-Z])/g, \" $1\");\n capitalizedKey = capitalizedKey.charAt(0).toUpperCase() + capitalizedKey.slice(1);\n let tdKey = document.createElement(\"td\");\n tdKey.style.border = \"1px solid #ddd\";\n tdKey.style.padding = \"8px\";\n tdKey.style.textAlign = \"left\";\n tdKey.style.backgroundColor = \"#f2f2f2\";\n tdKey.style.width = \"30%\";\n tdKey.textContent = capitalizedKey;\n let tdValue = document.createElement(\"td\");\n tdValue.style.border = \"1px solid #ddd\";\n tdValue.style.padding = \"8px\";\n tdValue.style.textAlign = \"left\";\n tdValue.style.width = \"70%\";\n if (jsonObj[key] === null || jsonObj[key] === \"\") {\n tdValue.textContent = \"Not Found\";\n tr.appendChild(tdKey);\n tr.appendChild(tdValue);\n table.appendChild(tr);\n continue;\n }\n if (typeof jsonObj[key] === \"object\") {\n if (Array.isArray(jsonObj[key])) {\n let ul = document.createElement(\"ul\");\n ul.style.padding = \"0\";\n ul.style.margin = \"0\";\n ul.style.listStyleType = \"none\";\n jsonObj[key].forEach((item) => {\n let li = document.createElement(\"li\");\n li.style.marginBottom = \"5px\";\n if (typeof item === \"object\") {\n that.createNestedTable(item, li);\n } else {\n li.textContent = item;\n }\n ul.appendChild(li);\n });\n tdValue.appendChild(ul);\n } else {\n that.createNestedTable(jsonObj[key], tdValue);\n }\n } else {\n tdValue.textContent = jsonObj[key];\n }\n\n tr.appendChild(tdKey);\n tr.appendChild(tdValue);\n table.appendChild(tr);\n }\n }\n parentElement.appendChild(table);\n }\n\n refreshDomainEmail() {\n let that = this;\n document\n .getElementById(\"btn_refresh_email_domain\")\n .addEventListener(\"click\", function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let body = {};\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id +\n \"/email-fraud-check\",\n Constants.REQUEST.post,\n body\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n let data = response.data.result[0];\n let container = document.getElementById(\"email_domain_container\"); // Assuming 'container' is a div where you want to append the table\n that.createNestedTable(data, container);\n\n // const dataEmailDomainMustache = that.populateEmailData(response)\n // const templateDomainEmail = document.getElementById('templateDomainEmail').innerHTML;\n // const rendered = Mustache.render(templateDomainEmail, dataEmailDomainMustache);\n // document.getElementById('targetDomainEmail').innerHTML = rendered;\n Utils.showToast(\n \"Fetched\",\n \"Domain & Email fetched successfully\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n })\n .then(function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n });\n });\n }\n}\n\nclass PanelAnalysis {\n constructor() {\n this.scf_application_id = document.getElementById(\"scf_application_id\");\n Utils.navPanelHandler(\".raw-panel-link\", \".raw-panel\");\n new SubPanelAnalysisBanking();\n this.uploadBalanceSheet();\n this.renderBalanceSheet();\n new ScfAppAnalysisCrimeCheck();\n new ScfAppAnalysisBanking();\n this.elem_document_details = document.getElementById(\n \"div_document_details_balance_sheet\"\n );\n this.elem_password_modal = new bootstrap.Modal(document.getElementById('modal_doc_pass'), {});\n this.elem_password = document.getElementById('doc_password_financials');\n this.elem_btn_password = document.getElementById('btn-update-password-financials');\n this.fetchFinancialTrendline();\n this.bureauSubPanelHandler();\n this.renderUploadedBureauReport();\n this.downloadCamReport()\n }\n\n renderBalanceSheet() {\n let that = this;\n let data = new FormData();\n data.set(\"file_code[]\", \"balance_sheet\");\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id.value + \"/documents\",\n Constants.REQUEST.get,\n data\n ).then(function (response) {\n that.renderDocument(response.data);\n });\n }\n\n bureauSubPanelHandler() {\n let that = this;\n document.getElementById(\"upload_bureau_report\")\n .addEventListener(\"click\", function () {\n let elem_file = document.getElementById(\"upload_bureau_file\");\n let file = elem_file.files[0];\n if (!file) {\n Utils.showToast(\n \"Not Found\",\n \"File is mandatory\",\n Constants.TOAST.fail\n );\n return;\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let data = new FormData();\n data.set(\"file_data\", file);\n data.set(\"file_name\", file.name);\n data.set(\"file_password\", null);\n data.set(\"file_code\", \"bureau_document\");\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id.value +\n \"/document/upload/\" +\n data.get(\"file_code\"),\n Constants.REQUEST.post,\n data\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"Document uploaded\",\n Constants.TOAST.success\n );\n setTimeout(function () {\n that.renderUploadedBureauReport();\n }, 5000);\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n })\n .then(function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n });\n });\n }\n\n truncateText(text, wordLimit, charLimit) {\n let firstWords = text.slice(0, wordLimit);\n let lastChars = text.slice(-charLimit);\n if (firstWords.length + lastChars.length < text.length) {\n return `${firstWords}...${lastChars}`;\n }\n return text;\n }\n\n renderUploadedBureauReport() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id.value + \"/bureau-data\",\n Constants.REQUEST.get\n )\n .then(response => {\n let bureauSubTabs = document.getElementById('bureau-sub-tabs');\n document.getElementById('bureaudoc').srcdoc = '';\n document.getElementById('waitMessage').style.display = 'none';\n bureauSubTabs.textContent = '';\n bureauSubTabs.innerHTML = '';\n if (response.data == null) {\n document.getElementById('btn_bureau_delete').classList.add('no-display');\n } else {\n document.getElementById('btn_bureau_delete').classList.remove('no-display');\n }\n response.data.forEach((item, index) => {\n let subTabContainer = document.createElement('div');\n subTabContainer.className = 'sub-tab-container';\n\n let subTabButton = document.createElement('button');\n subTabButton.className = 'btn btn-secondary sub-tab';\n subTabButton.textContent = that.truncateText(item.name, 10, 10);\n subTabButton.title = item.name;\n subTabButton.addEventListener('click', () => {\n document.querySelectorAll('.sub-tab').forEach(tab => tab.classList.remove('active'));\n subTabButton.classList.add('active');\n document.getElementById('bureaudoc').srcdoc = item.document;\n document.getElementById('bureau_file_id').value = item.document_id;\n document.getElementById('btn_bureau_delete').setAttribute('data-id', item.document_id);\n });\n if (index === 0) {\n subTabButton.classList.add('active');\n document.getElementById('bureaudoc').srcdoc = item.document;\n document.getElementById('bureau_file_id').value = item.document_id;\n }\n subTabContainer.appendChild(subTabButton);\n bureauSubTabs.appendChild(subTabContainer);\n });\n })\n .finally(() => {\n that.deleteBureauFile();\n });\n }\n\n downloadCamReport() {\n let that = this;\n document.getElementById(\"cam_report_download\").addEventListener(\"click\", function () {\n Utils.requestHandlerDocument(\n \"/scf/api/application/\" + that.scf_application_id.value + \"/download_cam_report\",\n Constants.REQUEST.get,\n {},\n { responseType: 'blob' } // Set response type to 'blob'\n ).then(function (response) {\n if (response && response instanceof Blob && response.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {\n const url = window.URL.createObjectURL(response);\n const a = document.createElement('a');\n a.href = url;\n a.download = 'cam_report_' + that.scf_application_id.value + '.xlsx'; // Set the file name\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n document.body.removeChild(a);\n } else {\n Utils.showToast(\n \"Error\",\n \"Error found while generating CAM Report\",\n Constants.TOAST.fail\n );\n }\n }).catch(function (error) {\n Utils.showToast(\n \"Error\",\n \"An error occurred while generating the report.\",\n Constants.TOAST.fail\n );\n console.error(\"Error during GST file generation:\", error);\n });\n });\n }\n\n deleteBureauFile() {\n let that = this;\n let deleteButton = document.getElementById('btn_bureau_delete');\n let newDeleteButton = deleteButton.cloneNode(true);\n deleteButton.parentNode.replaceChild(newDeleteButton, deleteButton);\n deleteButton = newDeleteButton;\n\n deleteButton.addEventListener('click', function () {\n let confirmed = window.confirm(\"Are you sure you want to delete this document?\");\n if (confirmed) {\n let doc_id = document.getElementById('bureau_file_id').value;\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id.value + '/document/destroy/' + doc_id,\n Constants.REQUEST.get)\n .then(function (response) {\n if (response.message === 'OK') {\n document.getElementById('waitMessage').style.display = 'block';\n Utils.showToast(response.message, 'Deleted', Constants.TOAST.success);\n setTimeout(function () {\n that.renderUploadedBureauReport();\n }, 5000);\n } else {\n Utils.showToast(response.message, 'Not Found', Constants.TOAST.fail);\n }\n });\n }\n });\n }\n\n\n renderUploadedDocuments() {\n let that = this;\n document\n .getElementById(\"nav-documents\")\n .addEventListener(\"click\", function () {\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id.value +\n \"/documents\",\n Constants.REQUEST.get,\n {}\n ).then(function (response) {\n if (response.message === \"OK\") {\n that.renderDocument(response.data);\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n\n transformDocumentData(ref, last_doc) {\n let drop_ship = {};\n drop_ship.doc_title = ref.set_value.title;\n drop_ship.doc_subtitle =\n \"Last updated \" + Utils.formatTimeRelative(last_doc.updated_at);\n drop_ship.dtype = ref.set_key;\n drop_ship.ext = \"\";\n if (ref.set_value.ext) {\n drop_ship.ext = ref.set_value.ext.map(function (x) {\n return x.toUpperCase();\n });\n }\n let ext = ref.set_value.ext[0];\n if (ext && [\"jpeg\", \"jpg\", \"png\"].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-file-earmark-image\";\n } else if (ext && [\"xls\", \"xlsx\"].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-filetype-xls\";\n } else if (ext && [\"pdf\"].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-file-earmark-pdf\";\n } else {\n drop_ship.logo = \"bi-file-earmark-text\";\n }\n return drop_ship;\n }\n\n transformPreviewData(preview_data) {\n preview_data.formatted_ts = Utils.formatTime(preview_data.created_at);\n preview_data.formatted_ts_ago = Utils.formatTimeRelative(\n preview_data.created_at\n );\n preview_data.name = preview_data.id;\n return preview_data;\n }\n\n passwordHandler(elem) {\n if (elem.getAttribute('data-password') === 'null') {\n this.elem_password.value = '';\n } else {\n this.elem_password.value = elem.getAttribute('data-password');\n }\n this.elem_btn_password.setAttribute('data-id', elem.getAttribute('data-id'));\n this.elem_password_modal.show();\n }\n\n transformDocumentData(ref, last_doc) {\n let drop_ship = {}\n drop_ship.doc_title = ref.set_value.title;\n drop_ship.doc_subtitle = \"Last updated \" + Utils.formatTimeRelative(last_doc.updated_at);\n drop_ship.dtype = ref.set_key;\n drop_ship.ext = \"\";\n if (ref.set_value.ext) {\n drop_ship.ext = ref.set_value.ext.map(function (x) { return x.toUpperCase() });\n }\n let ext = ref.set_value.ext[0];\n if (ext && ['jpeg', 'jpg', 'png'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-file-earmark-image\";\n } else if (ext && ['xls', 'xlsx'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-filetype-xls\";\n } else if (ext && ['pdf'].includes(ext.toLowerCase())) {\n drop_ship.logo = \"bi-file-earmark-pdf\";\n } else {\n drop_ship.logo = \"bi-file-earmark-text\";\n }\n return drop_ship;\n }\n\n transformPreviewData(preview_data) {\n preview_data.formatted_ts = Utils.formatTime(preview_data.created_at);\n preview_data.formatted_ts_ago = Utils.formatTimeRelative(preview_data.created_at);\n preview_data.name = preview_data.id;\n return preview_data;\n }\n\n renderDocument(data) {\n if (data.documents.length < 1) {\n return;\n }\n let that = this;\n let tmpl = document.getElementById('doc-tmpl');\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n this.elem_document_details.innerHTML = '';\n data.documents = data.documents.sort(function (row) {\n return row.dtype;\n })\n let grped_data = Utils.groupBy(data.documents, 'file_code');\n for (let dtype in grped_data) {\n let d = that.transformDocumentData(data.ref[dtype], grped_data[dtype][0]);\n let rendered = Mustache.render(tmpl.innerHTML, d);\n that.elem_document_details.append($.parseHTML(rendered)[1]);\n let prev = document.getElementById('prev-' + dtype);\n let url = \"/scf/api/application/\" + that.scf_application_id.value + \"/document/upload/\" + dtype;\n let action_element = document.getElementById('btn_upload_' + dtype);\n DocumentUtils.bindInputElement(action_element);\n DocumentUtils.uploadFiles(action_element, url);\n that.showUploadPreview(action_element);\n grped_data[dtype].forEach(function (doc_data) {\n let d1 = that.transformPreviewData(doc_data);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.append($.parseHTML(rend)[1]);\n })\n }\n document.querySelectorAll('.btn-doc-password').forEach(function (elem) {\n elem.addEventListener('click', function () {\n that.passwordHandler(elem);\n })\n })\n that.updatePasswordHandler();\n that.deleteDocument();\n let elements = document.querySelectorAll('#delete-button-document');\n if (ScfPermission.isScfLender()) {\n elements.forEach(function (element) {\n element.classList.add(\"no-display\");\n });\n }\n }\n\n deleteDocument() {\n let that = this;\n let elements = document.querySelectorAll('#delete-button-document');\n elements.forEach(function (element) {\n element.addEventListener('click', function (event) {\n let id = event.target.getAttribute(\"data-id\");\n let confirmed = window.confirm(\"Are you sure you want to delete this document?\")\n if (confirmed) {\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id.value + '/document/destroy/' + id,\n Constants.REQUEST.get)\n .then(function (response) {\n if (response.message === 'OK') {\n element.disabled = true;\n Utils.showToast(response.message, 'Deleted', Constants.TOAST.success);\n }\n else {\n Utils.showToast(response.message, 'Not Found', Constants.TOAST.fail);\n }\n })\n }\n });\n });\n }\n\n updatePasswordHandler() {\n let that = this;\n this.elem_btn_password.addEventListener('click', function () {\n Utils.requestHandler('/core/api/document/' + that.elem_btn_password.getAttribute('data-id'), Constants.REQUEST.post, { document_id: that.elem_btn_password.getAttribute('data-id'), file_password: that.elem_password.value })\n .then(function (response) {\n if (response.message === 'OK') {\n document.getElementById('btn_password_' + response.data.id).setAttribute('data-password', response.data.decrypted_digest);\n that.elem_password_modal.hide();\n Utils.showToast(response.message, 'Password updated', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n showUploadPreview(action_element) {\n let that = this;\n let p_tmpl = document.getElementById('doc-preview-tmpl');\n action_element.addEventListener('ev_document_uploaded', function () {\n let response = JSON.parse(action_element.getAttribute('data-upload-response'));\n let prev = document.getElementById('prev-' + response.file_code);\n let d1 = that.transformPreviewData(response);\n let rend = Mustache.render(p_tmpl.innerHTML, d1);\n prev.prepend($.parseHTML(rend)[1]);\n let pass_elem = document.getElementById('btn_password_' + response.id);\n pass_elem.addEventListener('click', function () {\n that.passwordHandler(pass_elem);\n })\n })\n }\n\n uploadBalanceSheet() {\n let that = this;\n document\n .getElementById(\"upload_balance_sheet\")\n .addEventListener(\"click\", function () {\n let elem_file = document.getElementById(\"balance_sheet_file\");\n let file = elem_file.files[0];\n if (!file) {\n Utils.showToast(\n \"Not Found\",\n \"File is mandatory\",\n Constants.TOAST.fail\n );\n return;\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let data = new FormData();\n data.set(\"file_data\", file);\n data.set(\"file_name\", file.name);\n data.set(\"file_password\", null);\n data.set(\"file_code\", \"balance_sheet\");\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id.value +\n \"/document/upload/\" +\n data.get(\"file_code\"),\n Constants.REQUEST.post,\n data\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"Document uploaded\",\n Constants.TOAST.success\n );\n setTimeout(function () {\n that.renderBalanceSheet();\n }, 5000);\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n })\n .then(function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n });\n });\n }\n\n fetchFinancialTrendline() {\n let that = this;\n let body = {\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/financial-trendline\",\n req_type: \"post\",\n };\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id.value +\n \"/financial-trendline\",\n Constants.REQUEST.post,\n body\n ).then(function (response) {\n if (response.data && response.data.html_data.data) {\n let data = response.data.html_data.data;\n if (response.message === \"OK\") {\n if (data.trim() === \"No files Uploaded for financial trendline\") {\n document.getElementById(\"financial-trendline\").innerHTML = '';\n }\n else {\n document.getElementById(\"financial-trendline\").innerHTML = data;\n }\n }\n }\n });\n }\n}\n\nclass SubPanelAnalysisBanking {\n constructor() {\n document\n .querySelectorAll(\".btn-banking-analysis-trigger\")\n .forEach(function (item) {\n item.addEventListener(\"click\", function () {\n Utils.showToast(\n \"Trigger\",\n \"Triggered banking analysis, will be avaliable in some time\",\n Constants.TOAST.success\n );\n });\n });\n }\n}\n\nclass PanelCounterParties {\n\n constructor() {\n this.application_id = document.getElementById('scf_application_id').value;\n this.elem_pan = document.getElementById('cp_pan');\n this.elem_mobile = document.getElementById('cp_mobile');\n this.elem_email = document.getElementById('cp_email');\n this.elem_name = document.getElementById('cp_name');\n this.elem_cp_extra_input_fields = document.getElementById('cp_extra_input_fields');\n this.elem_cp_vintage_month = document.getElementById('cp_vintage_month_select');\n this.elem_cp_payment_term = document.getElementById('counter_party_payment_terms');\n this.elem_cp_vintage_year = document.getElementById('cp_vintage_year_select');\n this.elem_cp_contact_person_name = document.getElementById('cp_contact_person_name');\n this.elem_cp_contact_person_number = document.getElementById('cp_contact_person_number');\n this.elem_cp_contact_person_email = document.getElementById('cp_contact_person_email');\n this.elem_cp_contact_person_designation = document.getElementById('cp_contact_person_designation');\n this.elem_btn_cp_submit = document.getElementById('btn-cp-submit');\n this.elem_btn_cp_validate = document.getElementById('btn-cp-validate');\n this.elem_pan.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_mobile.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_email.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_cp_vintage_month.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_cp_payment_term.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_cp_vintage_year.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_cp_contact_person_designation.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_cp_contact_person_name.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_cp_contact_person_number.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_cp_contact_person_email.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.cp_modal = new bootstrap.Modal(document.getElementById('modal_cp_add'), {});\n let that = this;\n that.fetchCounterParties();\n that.openModalAddCounterParty();\n that.createCp();\n that.getNameFromPan();\n that.approveCounterParty();\n that.fillCpVintageField();\n }\n\n fillCpVintageField() {\n let yearSelect = document.getElementById(\"cp_vintage_year_select\");\n let currentYear = new Date().getFullYear();\n for (let i = currentYear; i >= currentYear - 30; i--) {\n let option = document.createElement(\"option\");\n option.text = i;\n option.value = i;\n yearSelect.add(option);\n }\n }\n\n approveCounterParty() {\n let that = this;\n // document.getElementById('btn_cp_approve').addEventListener('click',function(){\n // let cpIds =[];\n // let body={\n // cp_ids:cpIds\n // }\n // let selectedCheckbox=document.querySelectorAll('.approve-cp:checked');\n // selectedCheckbox.forEach(function(checkbox){\n // cpIds.push(checkbox.value);\n // })\n // Utils.requestHandler('/scf/api/counter_party/approve-cp',Constants.REQUEST.post,body)\n // .then(function(response){\n // if(response.message==='OK'){\n // Utils.showToast('Approved','Counterparty approved successfully', Constants.TOAST.success);\n // }else{\n // Utils.showToast('Error', 'Select at least one counterparty to approve', Constants.TOAST.fail);\n // }\n // })\n // })\n }\n\n openModalAddCounterParty() {\n this.cp_modal = new bootstrap.Modal(document.getElementById('modal_cp_add'), {});\n document.getElementById('btn_cp_add_modal').addEventListener('click', () => {\n this.cp_modal.show();\n this.elem_pan.removeAttribute('readonly');\n this.elem_mobile.removeAttribute('readonly');\n this.elem_email.removeAttribute('readonly');\n this.elem_cp_extra_input_fields.classList.add('d-none');\n this.elem_btn_cp_submit.classList.add('no-display');\n this.elem_btn_cp_validate.classList.remove('no-display');\n this.elem_name.innerHTML = '-'\n this.elem_pan.value = '';\n this.elem_mobile.value = '';\n this.elem_email.value = '';\n this.elem_cp_vintage_year.value = '';\n this.elem_cp_vintage_month.value = '';\n this.elem_cp_payment_term.value = '';\n this.elem_cp_contact_person_name.value = '';\n this.elem_cp_contact_person_number.value = '';\n this.elem_cp_contact_person_email.value = '';\n this.elem_cp_contact_person_designation.value = '';\n this.elem_pan.classList.remove('back-grey');\n this.elem_mobile.classList.remove('back-grey');\n });\n }\n\n\n getNameFromPan() {\n let that = this;\n document.getElementById('btn-cp-validate').addEventListener('click', function () {\n let elem_btn = this;\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.show);\n let body = {\n pan: that.elem_pan.value,\n scf_application_id: document.getElementById(\"scf_application_id\").value\n }\n Utils.requestHandler('/scf/api/counter_party/name', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message == 'OK') {\n that.elem_name.setAttribute('data-name', response.data.full_name);\n that.elem_name.innerHTML = response.data.full_name;\n that.elem_cp_extra_input_fields.classList.remove('d-none');\n if (that.elem_pan.value) {\n that.elem_pan.setAttribute('readonly', true);\n that.elem_pan.classList.add('readonly-input');\n }\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n elem_btn.classList.add('no-display');\n that.elem_btn_cp_submit.classList.remove('no-display');\n if (response.data.applicant_present == true) {\n that.elem_mobile.value = response.data.mobile;\n that.elem_email.value = response.data.email;\n that.elem_mobile.setAttribute('readonly', true);\n that.elem_email.setAttribute('readonly', true);\n that.elem_email.classList.add('back-grey');\n that.elem_mobile.classList.add('back-grey');\n }\n Utils.showToast('Fetched', 'Pan fetched successfully', Constants.TOAST.success);\n } else {\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .then(function () {\n\n })\n\n })\n }\n\n\n createCp() {\n let that = this;\n this.elem_btn_cp_submit.addEventListener(\"click\", function () {\n let elem_btn = this;\n let elem_btn_cp_validate = document.getElementById(\"btn-cp-validate\");\n if (that.validateValues()) {\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.show);\n let body = {\n pan: that.elem_pan.value,\n pan_name: that.elem_name.getAttribute(\"data-name\"),\n scf_application_id: that.application_id,\n email: that.elem_email.value,\n mobile: that.elem_mobile.value,\n vintage_month: that.elem_cp_vintage_month.value,\n payment_term: that.elem_cp_payment_term.value,\n vintage_year: that.elem_cp_vintage_year.value,\n contact_person_name: that.elem_cp_contact_person_name.value,\n contact_person_number: that.elem_cp_contact_person_number.value,\n contact_person_email: that.elem_cp_contact_person_email.value,\n contact_person_designation: that.elem_cp_contact_person_designation.value\n };\n Utils.requestHandler(\n \"/scf/api/counter_party\",\n Constants.REQUEST.post,\n body\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n that.elem_pan.removeAttribute(\"readonly\");\n that.elem_name.innerHTML = \"-\";\n that.elem_pan.value = \"\";\n that.elem_mobile.value = \"\";\n that.elem_email.value = \"\";\n that.elem_cp_contact_person_designation.value = \"\";\n that.elem_cp_contact_person_name.value = \"\";\n that.elem_cp_contact_person_number.value = '';\n that.elem_cp_contact_person_email.value = '';\n Utils.showToast(\n \"Created\",\n \"Counterparty created\",\n Constants.TOAST.success\n );\n that.cp_modal.hide();\n return Utils.requestHandler(\n \"/scf/api/application/\" +\n that.application_id +\n \"/counter-parties\",\n Constants.REQUEST.get\n );\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n throw new Error(response.message);\n }\n })\n .then(function (response) {\n if (response.message === \"OK\") {\n that.renderCounterParties(response);\n }\n })\n .catch(function (error) {\n console.error(\"Error occurred:\", error);\n })\n .finally(function () {\n Utils.buttonWithLoader(\n that.elem_btn_cp_submit,\n Constants.ELEMENT_STATE.hide\n );\n that.elem_btn_cp_submit.classList.add(\"no-display\");\n elem_btn_cp_validate.classList.remove(\"no-display\");\n });\n }\n });\n }\n\n destroyCp() {\n let that = this;\n document.querySelectorAll('[id^=\"destroy_cp_\"]').forEach(element => {\n element.addEventListener('click', function (event) {\n event.preventDefault();\n let confirmed = window.confirm(\"Are you sure you want to delete CounterParty?\")\n if (confirmed) {\n let cp_id = this.id.split('_').slice(2).join('_');\n Utils.requestHandler('/scf/api/counter_party/' + cp_id + '/destroy-cp', Constants.REQUEST.post, {})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, ' CounterParty Deleted', Constants.TOAST.success);\n that.fetchCounterParties();\n }\n else {\n Utils.showToast(response.message, 'Not Found', Constants.TOAST.fail);\n }\n })\n }\n });\n });\n }\n\n\n\n\n validateValues() {\n let pass = true;\n if (!this.elem_email.value) {\n Utils.showInputError(this.elem_email, \"Email is mandatory\");\n pass = false;\n } else if (!Utils.validatorEmail(this.elem_email.value)) {\n Utils.showInputError(this.elem_email, \"Incorrect email\");\n pass = false;\n }\n if (!this.elem_mobile.value) {\n Utils.showInputError(this.elem_mobile, \"Mobile is mandatory\");\n pass = false;\n } else if (!Utils.validatorMobile(this.elem_mobile.value)) {\n Utils.showInputError(this.elem_mobile, \"Incorrect mobile number\");\n pass = false;\n }\n if (!this.elem_pan.value) {\n Utils.showInputError(this.elem_pan, \"PAN is mandatory\");\n pass = false;\n } else if (!Utils.validatorPan(this.elem_pan.value)) {\n Utils.showInputError(this.elem_pan, \"Incorrect PAN\");\n pass = false;\n }\n if (this.elem_cp_vintage_month.value == \"\") {\n Utils.showInputError(\n this.elem_cp_vintage_month,\n \"Vintage Month is mandatory\"\n );\n pass = false;\n }\n if (this.elem_cp_payment_term.value == \"\") {\n Utils.showInputError(\n this.elem_cp_payment_term,\n \"Payment term is manadatory\"\n );\n pass = false;\n }\n if (this.elem_cp_vintage_year.value == \"\") {\n Utils.showInputError(\n this.elem_cp_vintage_year,\n \"Vintage Year is mandatory\"\n );\n pass = false;\n }\n if (this.elem_cp_contact_person_designation.value == \"\") {\n Utils.showInputError(\n this.elem_cp_contact_person_designation,\n \"Contact person designation is Mandatory\"\n );\n pass = false;\n }\n if (this.elem_cp_contact_person_name.value == \"\") {\n Utils.showInputError(\n this.elem_cp_contact_person_name,\n \"Contact person name is mandatory\"\n );\n pass = false;\n }\n var currentDate = new Date();\n var currentYear = currentDate.getFullYear();\n var currentMonth = currentDate.getMonth() + 1; // Month is 0-based\n if (\n this.elem_cp_vintage_year.value > currentYear ||\n (this.elem_cp_vintage_year.value >= currentYear &&\n this.elem_cp_vintage_month.value > currentMonth)\n ) {\n Utils.showInputError(\n this.elem_cp_vintage_year,\n \"Date Cannot be in future\"\n );\n pass = false;\n }\n return pass;\n }\n\n renderCounterParties(response) {\n let that = this\n if (response.message === \"OK\") {\n let tmpl = document.getElementById(\"cp-row-tmpl\");\n let dx = document.getElementById(\"tb-cp-tbody\");\n dx.innerHTML = null;\n response.data.counter_parties.forEach(function (dd) {\n that.generateScore(dd);\n let cp_badge_state = { \"pending_for_approval\": \"bg-warning\", \"approved\": \"bg-success\", \"rejected\": \"bg-danger\" };\n dd.cp_badge_status = cp_badge_state[dd.status];\n\n let cp_lender_badge_state = { \"Approved\": \"bg-success\", \"N/A\": \"bg-danger\" };\n dd.cp_lender_badge_status = cp_lender_badge_state[dd.lender_status];\n\n dd.status = Utils.snakeToTitleCase(dd.status);\n dd.vintage = Utils.formatTimeRelative(dd.vintage);\n\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n var parsedHTML = $.parseHTML(rendered);\n if (\n ScfPermission.isScfBorrower() ||\n ScfPermission.isScfCounterparty() ||\n ScfPermission.isScfSales()\n ) {\n var cpDetailsLink =\n parsedHTML[1].querySelector(\"#cp_details_link\");\n cpDetailsLink.setAttribute(\"href\", \"javascript:void(0)\");\n dx.append(parsedHTML[1]);\n } else {\n dx.append(parsedHTML[1]);\n }\n });\n if (ScfPermission.isScfBorrower() || ScfPermission.isScfCounterparty() || ScfPermission.isScfLender()) {\n document.querySelectorAll('[id^=\"destroy_cp_\"]').forEach(element => {\n element.classList.add(\"no-display\");\n });\n }\n } else {\n let tmpl = document.getElementById(\"cp-row-blank-tmpl\");\n let dx = document.getElementById(\"tb-cp-tbody\");\n dx.innerHTML = null;\n let rendered = Mustache.render(tmpl.innerHTML);\n dx.innerHTML = rendered;\n }\n that.destroyCp();\n }\n\n fetchCounterParties() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + that.application_id + \"/counter-parties\",\n Constants.REQUEST.get\n )\n .then(function (response) {\n that.renderCounterParties(response);\n })\n }\n\n generateScore(row) {\n row.score = row.business_applicant.name.charCodeAt(2);\n if (row.score < 71) {\n row.badge_score = \"back-red\";\n } else if (row.score >= 71 && row.score < 95) {\n row.badge_score = \"back-yellow\";\n } else {\n row.badge_score = \"back-green\";\n }\n }\n}\n\nclass PanelPd {\n constructor() {\n this.scf_application_id = document.getElementById(\"scf_application_id\").value;\n this.pass = true;\n this.getQuestions();\n this.submitCPVQuestions();\n this.submitPDQuestions();\n this.generatePdQuestionsPdf();\n this.toggleCPVSections();\n this.fillPdTable();\n }\n\n getValues() {\n let data = {};\n document.querySelectorAll(\".questions\").forEach((question) => {\n let id = question.getAttribute(\"data-label\");\n data[id] = question.value;\n });\n return data;\n }\n\n clearForm() {\n document.querySelectorAll(\".questions\").forEach((question) => {\n question.value = \"\";\n });\n }\n\n validatePDValues(section) {\n let that = this;\n that.pass = true;\n document.querySelectorAll(`.questions.${section}`).forEach((question) => {\n let mandatory = question.getAttribute(\"data-mandatory\");\n let label = question.getAttribute(\"data-label\");\n let label_title = Utils.snakeToTitleCase(label);\n Utils.reInput(question);\n function toggleErrorMessage() {\n let value = question.value;\n if (mandatory === \"true\" && !value) {\n Utils.showInputError(question, label_title + \" is mandatory\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n }\n toggleErrorMessage();\n question.addEventListener(\"input\", toggleErrorMessage);\n });\n document\n .querySelectorAll(`.questions[data-code=\"photo_of_shop\"]`)\n .forEach((element) => {\n if (section.includes('Section-1') || section.includes('Section-2-CPV')) {\n if (element.files.length === 0) {\n\n Utils.showToast(\n \"Error\",\n \"Photo of the shop is mandatory\",\n Constants.TOAST.fail\n );\n that.pass = false;\n }\n }\n });\n return that.pass;\n }\n\n fillPdTable() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id,\n Constants.REQUEST.get,\n {}\n ).then(function (response) {\n if (response.message === \"OK\") {\n document.getElementById('borrower_pd_application_id').innerHTML = that.scf_application_id;\n document.getElementById('borrower_pd_application_constitution').innerHTML = Utils.snakeToTitleCase(response.data.scf_business_applicant.constitution);\n document.getElementById('borrower_pd_product').innerHTML = Utils.snakeToTitleCase(response.data.scf_application.product);\n document.getElementById('borrower_pd_loan_amount_required').innerHTML = response.data.scf_application.required_amount;\n if (response.data.program_name != null) {\n document.getElementById('borrower_pd_program').innerHTML = response.data.program_name;\n }\n else {\n document.getElementById('borrower_pd_program').innerHTML = \"-\";\n }\n }\n });\n }\n\n showLoanDetailsTable() {\n let that = this;\n if (!that.isLoanDetailsTableShown) {\n document.getElementById('borrower_pd_loan_details_table').classList.remove('no-display');\n document.getElementById('google_map_lat_long').classList.remove('no-display');\n that.isLoanDetailsTableShown = true;\n }\n }\n\n getQuestions() {\n let that = this;\n that.isLoanDetailsTableShown = false;\n document.getElementById('btn-cpv').addEventListener('click', () => that.showLoanDetailsTable());\n document.getElementById('btn-pd').addEventListener('click', () => that.showLoanDetailsTable());\n document.getElementById(\"nav-pd\").addEventListener(\"click\", function () {\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/pd-questions\",\n Constants.REQUEST.get,\n {}\n ).then(function (response) {\n if (response.message === \"OK\") {\n let all_quest = document.getElementById(\"all_questions\");\n all_quest.innerHTML = null;\n let questions = {};\n response.data.forEach(function (question) {\n if (question.name == \"pd_done_by\") {\n if (document.getElementById(\"username-dashboard\").textContent != \"\" || document.getElementById(\"username-dashboard\").textContent == null) {\n question.value = '';\n } else {\n question.value = document.getElementById(\"username-dashboard\").textContent;\n }\n }\n if (questions[question.section]) {\n questions[question.section].push(question);\n } else {\n questions[question.section] = [question];\n }\n });\n\n let tmpl = document.getElementById(\"question-tmpl\");\n let orderedSections = ['Section-3-PD', 'Section-4-Audit Trails'];\n orderedSections.forEach(section => {\n if (questions[section]) {\n all_quest.append(\n $.parseHTML(\n Mustache.render(\n document.getElementById(\"question-header-tmpl\").innerHTML,\n { name: section.split(\"_\").join(\" \") }\n )\n )[1]\n );\n questions[section].forEach(function (question) {\n switch (question.type) {\n case \"text\":\n question[\"text\"] = true;\n break;\n case \"select\":\n question[\"select\"] = true;\n break;\n case \"date\":\n question[\"date\"] = true;\n break;\n case \"textbox\":\n question[\"textbox\"] = true;\n break;\n case \"upload\":\n question[\"upload\"] = true;\n break;\n case \"number\":\n question[\"number\"] = true;\n break;\n }\n let q_data = Mustache.render(tmpl.innerHTML, question);\n all_quest.append($.parseHTML(q_data)[1]);\n });\n }\n });\n for (const section in questions) {\n if (!orderedSections.includes(section)) {\n all_quest.append(\n $.parseHTML(\n Mustache.render(\n document.getElementById(\"question-header-tmpl\").innerHTML,\n { name: section.split(\"_\").join(\" \") }\n )\n )[1]\n );\n questions[section].forEach(function (question) {\n switch (question.type) {\n case \"text\":\n question[\"text\"] = true;\n break;\n case \"select\":\n question[\"select\"] = true;\n break;\n case \"date\":\n question[\"date\"] = true;\n break;\n case \"textbox\":\n question[\"textbox\"] = true;\n break;\n case \"upload\":\n question[\"upload\"] = true;\n break;\n case \"number\":\n question[\"number\"] = true;\n break;\n }\n let q_data = Mustache.render(tmpl.innerHTML, question);\n all_quest.append($.parseHTML(q_data)[1]);\n });\n }\n }\n const latitude = document.getElementById(\"borrower_pd_latitude\").textContent = response.data.find(item => item.latitude)?.latitude || \"-\";\n const longitude = document.getElementById(\"borrower_pd_longitude\").textContent = response.data.find(item => item.longitude)?.longitude || \"-\";\n document.getElementById(\"borrower_pd_location\").textContent = response.data.find(item => item.pincode)?.pincode || \"-\";\n document.getElementById(\"borrower_pd_latitude\").textContent = latitude;\n document.getElementById(\"borrower_pd_longitude\").textContent = longitude;\n that.updateGoogleMap(latitude, longitude);\n const sectionHeaders = document.querySelectorAll('.section-header.pd');\n sectionHeaders.forEach(header => {\n header.style.fontWeight = 'bold';\n header.style.textAlign = 'center';\n header.style.fontSize = '2.5em';\n if (header.innerHTML === 'Section-4-Audit Trails') {\n header.innerHTML = \"Section-2-Audit Trails\"\n }\n else if (header.innerHTML === 'Section-3-PD') {\n header.innerHTML = \"Section-1-PD\"\n }\n });\n // document.getElementById(\"pd_done_by\").disabled = true;\n that.hideAllSections();\n that.uploadDocuments();\n that.fetchDropDownValuesIndustry();\n that.fetchDropDownLevel2();\n // document.getElementById('borrower_name').value = document.getElementById('inp_application_id').text();\n let maxDate = new Date().toISOString().split('T')[0];\n document.getElementById('date_of_meeting').setAttribute('max', maxDate);\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n\n // Adding event listener for cpv click\n document.getElementById(\"btn-cpv\").addEventListener(\"click\", function () {\n document.getElementById(\"btn-cpv\").classList.add(\"active\");\n document.getElementById(\"btn-pd\").classList.remove(\"active\");\n document.getElementById(\"btn-quest-submit\").classList.remove(\"no-display\");\n that.toggleCPVSections();\n that.toggleSubmitButtons(\"cpv\");\n });\n\n document.getElementById(\"btn-pd\").addEventListener(\"click\", function () {\n document.getElementById(\"btn-cpv\").classList.remove(\"active\");\n document.getElementById(\"btn-pd\").classList.add(\"active\");\n document.getElementById(\"btn-pd-quest-submit\").classList.remove(\"no-display\");\n that.togglePDSections();\n that.toggleSubmitButtons(\"pd\");\n });\n });\n }\n\n updateGoogleMap(latitude, longitude) {\n if (latitude === '-' || longitude === '-') {\n return;\n }\n const mapFrame = document.getElementById(\"mapFrame\");\n if (mapFrame) {\n mapFrame.src = `https://www.google.com/maps?q=${latitude},${longitude}&output=embed`;\n document.getElementById(\"googleMap\").style.display = \"block\";\n } else {\n console.error('Google Map iframe element not found.');\n }\n }\n\n hideAllSections() {\n let allQuestions = document.getElementById(\"all_questions\").children;\n for (let i = 0; i < allQuestions.length; i++) {\n allQuestions[i].classList.add('no-display');\n }\n }\n\n toggleCPVSections() {\n let allQuestions = document.getElementById(\"all_questions\").children;\n for (let i = 0; i < allQuestions.length; i++) {\n let section = allQuestions[i].className;\n if (section.includes('Section-1') || section.includes('Section-2-CPV')) {\n allQuestions[i].classList.remove('no-display');\n } else {\n allQuestions[i].classList.add('no-display');\n }\n }\n }\n\n togglePDSections() {\n let allQuestions = document.getElementById(\"all_questions\").children;\n for (let i = 0; i < allQuestions.length; i++) {\n let section = allQuestions[i].className;\n if (section.includes('Section-3-PD') || section.includes('Section-4-Audit Trails')) {\n allQuestions[i].classList.remove('no-display');\n } else {\n allQuestions[i].classList.add('no-display');\n }\n }\n }\n\n toggleSubmitButtons(tab) {\n if (tab === \"pd\") {\n document.getElementById(\"btn-quest-submit\").style.display = \"none\";\n document.getElementById(\"btn-pd-quest-submit\").style.display = \"block\";\n } else {\n document.getElementById(\"btn-quest-submit\").style.display = \"block\";\n document.getElementById(\"btn-pd-quest-submit\").style.display = \"none\";\n }\n }\n\n submitCPVQuestions() {\n let that = this;\n document\n .getElementById(\"btn-quest-submit\")\n .addEventListener(\"click\", function () {\n let pass1 = that.validatePDValues('Section-1');\n let pass2 = that.validatePDValues('Section-2-CPV');\n that.uploadDocuments();\n if (pass1 && pass2) {\n let values = that.getValues();\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/pd-questions\",\n Constants.REQUEST.post,\n values\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"CPV responses submitted\",\n Constants.TOAST.success\n );\n // that.clearForm();\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n } else {\n Utils.showToast(\n \"Error\",\n \"Please Enter Required field\",\n Constants.TOAST.fail\n );\n }\n });\n }\n\n submitPDQuestions() {\n let that = this;\n document\n .getElementById(\"btn-pd-quest-submit\")\n .addEventListener(\"click\", function () {\n let pass1 = that.validatePDValues('Section-3-PD');\n let pass2 = that.validatePDValues('Section-4-Audit Trails');\n if (pass1 && pass2) {\n let values = that.getValues();\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/pd-questions\",\n Constants.REQUEST.post,\n values\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"PD responses submitted\",\n Constants.TOAST.success\n );\n // that.clearForm();\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n } else {\n Utils.showToast(\n \"Error\",\n \"Please Enter Required field\",\n Constants.TOAST.fail\n );\n }\n });\n }\n\n uploadDocuments() {\n let that = this;\n document.querySelectorAll(\".pd-upload\").forEach((element) => {\n element.addEventListener(\"click\", function () {\n let elem_file = element.parentElement.parentElement.firstElementChild;\n let file = elem_file.files[0];\n if (!file) {\n Utils.showToast(\n \"Not Found\",\n \"File is mandatory\",\n Constants.TOAST.fail\n );\n return;\n }\n let data = new FormData();\n let file_code = elem_file.getAttribute(\"data-code\");\n data.set(\"file_data\", file);\n data.set(\"file_name\", file.name);\n data.set(\"file_password\", null);\n // Utils.requestHandler(\"/scf/api/application/document/upload/\" + file_code + \"/\" + that.scf_application_id, Constants.REQUEST.post, data)\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id +\n \"/document/upload/\" +\n file_code,\n Constants.REQUEST.post,\n data\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"Document uploaded\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n });\n }\n\n fetchDropDownValuesIndustry() {\n let that = this;\n document\n .getElementById(\"business_segment\")\n .addEventListener(\"change\", function () {\n document.getElementById(\"industry_classification\").innerHTML = \"\";\n document.getElementById(\"industry_classification_2\").innerHTML = \"\";\n let segment = \"\";\n if (\n document.getElementById(\"business_segment\").value === \"Manufacturing / Trader\"\n ) {\n segment = \"HSN\";\n } else if (\n document.getElementById(\"business_segment\").value === \"Services\"\n ) {\n segment = \"SAC\";\n }\n let body = {\n level: 1,\n segment: segment,\n };\n Utils.requestHandler(\n \"/scf/api/application/pd-questions/industry-codes\",\n Constants.REQUEST.get,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n var dropdown = document.getElementById(\"industry_classification\");\n document.getElementById(\"industry_classification\").innerHTML = \"\";\n var option = document.createElement(\"option\");\n option.value = \"\";\n option.text = \"\";\n dropdown.appendChild(option);\n var values = response.data.data;\n for (var i = 0; i < values.length; i++) {\n var option = document.createElement(\"option\");\n option.value = values[i].code;\n option.text = values[i].name;\n dropdown.appendChild(option);\n }\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n\n fetchDropDownLevel2() {\n let that = this;\n document\n .getElementById(\"industry_classification\")\n .addEventListener(\"change\", function () {\n let segment = \"\";\n if (\n document.getElementById(\"business_segment\").value === \"Manufacturing / Trader\"\n ) {\n segment = \"HSN\";\n } else if (\n document.getElementById(\"business_segment\").value === \"Services\"\n ) {\n segment = \"SAC\";\n }\n let body = {\n level: 2,\n segment: segment,\n parent_code: document.getElementById(\"industry_classification\").value,\n };\n Utils.requestHandler(\n \"/scf/api/application/pd-questions/industry-codes\",\n Constants.REQUEST.get,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n var dropdown = document.getElementById(\"industry_classification_2\");\n document.getElementById(\"industry_classification_2\").innerHTML = \"\";\n var option = document.createElement(\"option\");\n option.value = \"\";\n option.text = \"\";\n dropdown.appendChild(option);\n var values = response.data.data;\n for (var i = 0; i < values.length; i++) {\n var option = document.createElement(\"option\");\n option.value = values[i].code;\n option.text = values[i].name;\n dropdown.appendChild(option);\n }\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n\n generatePdQuestionsPdf() {\n let that = this;\n document\n .getElementById(\"btn_generate_pd_pdf\")\n .addEventListener(\"click\", function () {\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id +\n \"/generate-pd-questions-pdf\",\n Constants.REQUEST.get\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"PDF Generation Started.\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n}\n\nclass PanelGstin {\n constructor() {\n this.application_id = document.getElementById(\"scf_application_id\").value;\n let that = this;\n document\n .getElementById(\"nav-scoring-gst\")\n .addEventListener(\"click\", function () {\n that.getAllGstin();\n // that.renderTrendLines();\n });\n this.generateGstReportPdf();\n this.fetchGstFilings();\n }\n\n generateGstReportPdf() {\n let that = this;\n document\n .getElementById(\"btn_generate_gst_report_pdf\")\n .addEventListener(\"click\", function () {\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.application_id +\n \"/generate-gst-report-pdf\",\n Constants.REQUEST.get\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"Gst Report Generation Started.\",\n Constants.TOAST.success\n );\n document.getElementById(\"btn_generate_gst_report_pdf\").disabled = true;\n } else {\n Utils.showToast(\n \"Error\",\n \"Not found Gst Filings for this applicant\",\n Constants.TOAST.fail\n );\n document.getElementById('btn_fetch_gst_filings').classList.remove('no-display')\n }\n });\n });\n }\n\n fetchGstFilings() {\n let that = this;\n document\n .getElementById(\"btn_fetch_gst_filings\")\n .addEventListener(\"click\", function () {\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.application_id +\n \"/fetch-gst-filings\",\n Constants.REQUEST.get\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"Fetchings filings started\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n \"Error\",\n \"Unable to fetch Filings\",\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n\n getAllGstin() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + that.application_id + \"/gst-all\",\n Constants.REQUEST.get\n ).then(function (response) {\n if (response.message === \"OK\") {\n let tmpl = document.getElementById(\"gstin-tr-tmpl\");\n let dx = document.getElementById(\"tb_gstins\");\n let gstinNumbers = [];\n dx.innerHTML = null;\n response.data.gstins.forEach(function (dd) {\n dd.formatted_registration_date = Utils.formatDate(\n dd.registration_date\n );\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n if (dd.filings_fetched == true) {\n document.getElementById('fetch_gst_filings_' + dd.gstin).classList.add('no-display');\n }\n });\n that.fetchGstFilingsLink();\n that.generateGstReportLink();\n that.generateGSTFile();\n if (response.data.documents) {\n let gstServiceUrls = {};\n response.data.documents.forEach(function (doc) {\n if (!gstServiceUrls[doc.business_gst_number]) {\n gstServiceUrls[doc.business_gst_number] = doc.service_url;\n }\n });\n\n let anchors = document.querySelectorAll(\n 'a[id$=\"_gst_pdf_report_link\"]'\n );\n anchors.forEach(function (anchor) {\n let idPrefix = anchor.id.split(\"_gst_pdf_report_link\")[0];\n if (gstServiceUrls[idPrefix]) {\n anchor.href = gstServiceUrls[idPrefix];\n }\n });\n }\n else {\n let anchors = document.querySelectorAll(\n 'a[id$=\"_gst_pdf_report_link\"]'\n );\n anchors.forEach(function (anchor) {\n anchor.classList.add(\"no-display\");\n });\n }\n Utils.showToast(\"Fetched\", \"GSTINs fetched\", Constants.TOAST.success);\n }\n });\n }\n\n fetchGstFilingsLink() {\n let links = document.querySelectorAll('.fetch_gst_filings_link');\n let that = this;\n links.forEach(link => {\n link.addEventListener('click', function (event) {\n event.preventDefault();\n let gstin = this.getAttribute('data-gstin');\n Utils.requestHandler('/scf/api/application/' + that.application_id + '/fetch-gst-filings/' + gstin, Constants.REQUEST.post, {})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'Fetching Filings started', Constants.TOAST.success);\n }\n else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n })\n })\n })\n }\n\n generateGstReportLink() {\n let links = document.querySelectorAll('.generate_gst_report_link');\n let that = this;\n links.forEach(link => {\n link.addEventListener('click', function (event) {\n event.preventDefault();\n let gstin = this.getAttribute('data-gstin');\n Utils.requestHandler('/scf/api/application/' + that.application_id + '/generate-gst-report-pdf/' + gstin, Constants.REQUEST.post, {})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'Gst Report Generation Started', Constants.TOAST.success);\n }\n else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n })\n })\n })\n }\n\n renderHTML() {\n let that = this;\n let last_n_months_keys = that.jsondata.data.month_range;\n if (last_n_months_keys == undefined || last_n_months_keys == null) {\n return;\n }\n let templateObject = {\n c1: null,\n };\n let nth = \"\";\n for (let i = 0; i < last_n_months_keys.length; i++) {\n nth += \"\" + last_n_months_keys[i] + \"\";\n }\n let htmlElem = $(nth);\n $(\"#th-gst-trendlines\").append(htmlElem);\n\n let trend_lines = that.jsondata.data;\n let tbody = \"\";\n for (var key in trend_lines) {\n if (key == \"month_range\") {\n continue;\n }\n if (trend_lines.hasOwnProperty(key)) {\n var trends = trend_lines[key];\n tbody += \"\";\n tbody += \"\" + key.split(\"--\", 2)[1] + \"\";\n for (var month_idx in last_n_months_keys) {\n let month_key = last_n_months_keys[month_idx];\n let trend = trends[month_key];\n tbody += \"\" + trend.toFixed(2) + \"\";\n }\n tbody += \"\";\n }\n }\n let tdElem = $(tbody);\n $(\"#tb-gst-trendlines\").append(tdElem);\n }\n\n renderTrendLines() {\n let tmpl_th = document.getElementById(\"gstin-trendlines-th-tmpl\");\n let tmpl = document.getElementById(\"gstin-trendlines-tmpl\");\n let dx = document.getElementById(\"th-gst-trendlines\");\n dx.innerHTML = null;\n let dy = document.getElementById(\"tb-gst-trendlines\");\n dy.innerHTML = null;\n let that = this;\n let body = {\n url:\n Constants.SERVICE_BASE_BACKOFFICE + \"/v2/gst/aggregated-gst-trendline\",\n req_type: \"post\",\n };\n let jsondata = [];\n Utils.requestHandler(\n \"/scf/api/application/\" + that.application_id + \"/gst-trendline\",\n Constants.REQUEST.post,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n that.jsondata = response.data.data;\n that.renderHTML();\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n }\n\n generateGSTFile() {\n let that = this;\n document.getElementById(\"btn_generate_gst_report_v2\").addEventListener(\"click\", function () {\n Utils.requestHandlerDocument(\n \"/scf/api/application/\" + that.application_id + \"/gst/generate-report-v2\",\n Constants.REQUEST.get,\n {},\n { responseType: 'blob' } // Set response type to 'blob'\n ).then(function (response) {\n if (response && response instanceof Blob && response.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {\n const url = window.URL.createObjectURL(response);\n const a = document.createElement('a');\n a.href = url;\n a.download = \"gst_report.xlsx\"; // Set the file name\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n document.body.removeChild(a);\n } else {\n Utils.showToast(\n \"Error\",\n \"GST json file not found\",\n Constants.TOAST.fail\n );\n }\n }).catch(function (error) {\n Utils.showToast(\n \"Error\",\n \"An error occurred while generating the report.\",\n Constants.TOAST.fail\n );\n console.error(\"Error during GST file generation:\", error);\n });\n });\n }\n\n\n}\n\nclass PanelDecision {\n constructor() {\n this.scf_application_id =\n document.getElementById(\"scf_application_id\").value;\n this.submitApplicationDecision();\n this.fetchApplicationDeviation();\n this.submitApplicationDeviation();\n this.clearDeviationForm();\n this.submitLoanData();\n // this.fetchbankDetails();\n this.fetchLoanDetails();\n this.fetchGatingDetails();\n this.clearLoanDetailsForm();\n let that = this;\n document\n .getElementById(\"nav-credit-decision\")\n .addEventListener(\"click\", function () {\n that.getApplicationDecision();\n that.initializeScorecardEventListeners();\n });\n // that.amountField = document.getElementById(\"amount_field\");\n const applicationDecision = document.getElementById(\"app_decision\");\n // applicationDecision.addEventListener(\"change\", function () {\n // that.toggleAmountField();\n // });\n }\n\n // toggleAmountField() {\n // const applicationDecision = document.getElementById(\"app_decision\");\n // this.amountField.disabled =\n // applicationDecision.value === \"approved\" ? false : true;\n // if (this.amountField.disabled === true) {\n // this.amountField.value = \"\";\n // }\n // }\n\n submitApplicationDecision() {\n let that = this;\n document\n .getElementById(\"btn-submit-app-decision\")\n .addEventListener(\"click\", function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n\n // const applicationScore = document.getElementById(\"app_score\");\n const applicationDecision = document.getElementById(\"app_decision\");\n const applicationRemarks = document.getElementById(\"app_remarks\");\n\n const borrowerScorecard = {\n borrower_rating: document.getElementById('borrower_scorecard_borrower_rating').value,\n management_rating: document.getElementById('borrower_scorecard_management_rating').value,\n financials_rating: document.getElementById('borrower_scorecard_financials_rating').value,\n banking_rating: document.getElementById('borrower_scorecard_banking_rating').value,\n bureau_p_rating: document.getElementById('borrower_scorecard_bureau_p_rating').value,\n bureau_c_rating: document.getElementById('borrower_scorecard_bureau_c_rating').value,\n gst_rating: document.getElementById('borrower_scorecard_gst_rating').value,\n total_rating: document.getElementById('borrower_scorecard_total_rating').value\n };\n\n let body = {\n // score: applicationScore.value,\n decision: applicationDecision.value,\n remarks: applicationRemarks.value,\n borrower_scorecard: borrowerScorecard\n\n };\n\n // let scoreValue = parseInt(applicationScore.value, 10);\n // if (isNaN(scoreValue) || scoreValue < 0 || scoreValue > 1000) {\n // Utils.showToast(\n // \"Error\",\n // \"Please enter a valid score between 0 and 1000.\",\n // Constants.TOAST.fail\n // );\n // Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n // return;\n // }\n // if (applicationDecision.value === \"approved\") {\n // const amountValue = that.amountField.value;\n // if (!amountValue) {\n // Utils.showToast(\n // \"Error\",\n // \"Please enter the amount for the approved decision.\",\n // Constants.TOAST.fail\n // );\n // Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n // return;\n // }\n\n // body.approved_amount = amountValue;\n // }\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id +\n \"/credit-decision\",\n Constants.REQUEST.post,\n body\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n \"Success\",\n \"Decision submitted successfully.\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n })\n .then(function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n });\n });\n }\n\n validateValues() {\n let that = this;\n that.pass = true;\n document.querySelectorAll(\".loan-questions\").forEach((question) => {\n let label = question.getAttribute(\"data-label\");\n let field_id = question.getAttribute(\"id\");\n Utils.reInput(question);\n function toggleErrorMessage() {\n let value = question.value;\n if (!value) {\n Utils.showInputError(question, label + \" is mandatory\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n\n if (field_id === \"app_sanction_amt_input\" || field_id === \"app_current_outstanding_input\" || field_id === \"app_emi_interest_input\") {\n if (!/^\\d+(\\.\\d{1,2})?$/.test(value)) {\n Utils.showInputError(question, label + \" should be a valid number with up to 2 decimal places\");\n that.pass = false;\n } else if (parseFloat(value) > 1000000000) {\n Utils.showInputError(question, label + \" should not exceed 1,00,00,00,000\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n }\n\n if (field_id === \"app_tenure_input\") {\n if (!/^\\d+$/.test(value)) {\n Utils.showInputError(question, label + \" should be a valid whole number\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n }\n }\n toggleErrorMessage();\n question.addEventListener(\"input\", toggleErrorMessage);\n });\n return that.pass;\n }\n\n submitLoanData() {\n let that = this;\n document.getElementById(\"btn-submit-app-loan-data\")\n .addEventListener(\"click\", function () {\n if (!that.validateValues()) {\n return;\n }\n const nameOfBanker = document.getElementById(\"app_name_of_banker_input\");\n const nameOfFacility = document.getElementById(\"app_name_of_facility_input\");\n const borrowingRelationship = document.getElementById(\"app_borrowing_relationship_input\");\n const typeOfLoan = document.getElementById(\"app_type_of_loan_input\");\n const sanctionDate = document.getElementById(\"app_sanction_date_input\");\n const sanctionAmt = document.getElementById(\"app_sanction_amt_input\");\n const currentOutstanding = document.getElementById(\"app_current_outstanding_input\");\n const emiInterest = document.getElementById(\"app_emi_interest_input\");\n const tenure = document.getElementById(\"app_tenure_input\");\n const emiDate = document.getElementById(\"app_emi_date_input\");\n const emiTracked = document.getElementById(\"app_emi_tracked_input\");\n const loanId = document.getElementById(\"loan_data_id\");\n let body = {\n \"params\": {\n nature_of_facility: nameOfFacility.value,\n borrowing_relationship: borrowingRelationship.value,\n bank_name: nameOfBanker.value,\n type_of_loan: typeOfLoan.value,\n sanction_date: sanctionDate.value,\n sanction_amount: sanctionAmt.value,\n current_outstanding: currentOutstanding.value,\n emi_interest: emiInterest.value,\n loan_tenure: tenure.value,\n emi_date: emiDate.value,\n emi_tracked_and_bank: emiTracked.value,\n loan_data_id: loanId.value,\n },\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/borrower-loan\",\n \"req_type\": \"post\"\n }\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/borrower-loan\",\n Constants.REQUEST.post,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n \"Success\",\n \"Deviation submitted successfully.\",\n Constants.TOAST.success\n );\n nameOfBanker.value = \"\";\n nameOfFacility.value = \"\";\n borrowingRelationship.value = \"\";\n typeOfLoan.value = \"\";\n sanctionDate.value = \"\";\n sanctionAmt.value = \"\";\n currentOutstanding.value = \"\";\n emiInterest.value = \"\";\n tenure.value = \"\";\n emiDate.value = \"\";\n emiTracked.value = \"\";\n loanId.value = \"\";\n document.getElementById(\"btn-app-loan-data-modal-close\").click();\n setTimeout(function () {\n that.fetchLoanDetails();\n }, 2000);\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors.errors.error),\n Constants.TOAST.fail\n );\n }\n })\n .then(function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n });\n\n })\n }\n\n fetchbankDetails() {\n let that = this;\n let body = {\n \"params\": {},\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/fetch-banks\",\n \"req_type\": \"get\"\n }\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/fetch-banks\",\n Constants.REQUEST.get,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n let elem_bankers = document.getElementById('app_name_of_banker_input');\n elem_bankers.textContent = \"\";\n let option = document.createElement('option');\n option.value = \"\";\n option.text = \"Select Bank\";\n elem_bankers.add(option);\n response.data.forEach(function (dd) {\n let option = document.createElement('option');\n option.value = dd.id;\n option.text = dd.name;\n elem_bankers.add(option);\n })\n }\n })\n }\n\n formatDate(date) {\n const d = new Date(date);\n let day = d.getDate();\n let month = d.getMonth() + 1; // Months are zero-based\n const year = d.getFullYear();\n\n if (day < 10) {\n day = '0' + day;\n }\n if (month < 10) {\n month = '0' + month;\n }\n\n return `${day}-${month}-${year}`;\n }\n\n renderAppLoanDetailsTable(response) {\n let that = this;\n if (response.message === \"OK\") {\n let tmpl = document.getElementById(\"app-loan-data-row-tmpl\");\n let dx = document.getElementById(\"tb_loan_data\");\n dx.innerHTML = null;\n response.data.forEach(function (dd) {\n dd.emi_date = that.formatDate(dd.emi_date);\n dd.sanction_date = that.formatDate(dd.sanction_date);\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n that.destroyLoanDetails();\n that.editLoanDetails();\n that.downloadBorrowerData();\n }\n }\n\n fetchLoanDetails() {\n let that = this;\n let body = {\n \"params\": {},\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/get-borrower-loan\",\n \"req_type\": \"get\"\n }\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/borrower-loan\",\n Constants.REQUEST.post,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n that.renderAppLoanDetailsTable(response);\n }\n else {\n let tmpl = document.getElementById(\"app-loan-data-row-blank-tmpl\");\n let dx = document.getElementById(\"tb_loan_data\");\n dx.innerHTML = null;\n let rendered = Mustache.render(tmpl.innerHTML);\n dx.innerHTML = rendered;\n }\n });\n }\n\n renderGatingDetailsTable(response) {\n let that = this;\n if (response.message === \"OK\") {\n let tmpl = document.getElementById(\"app-gating-data-row-tmpl\");\n let dx = document.getElementById(\"tb_gating_criteria\");\n dx.innerHTML = null;\n response.data.forEach(function (dd) {\n if (dd.emi_date) {\n dd.emi_date = that.formatDate(dd.emi_date);\n }\n if (dd.sanction_date) {\n dd.sanction_date = that.formatDate(dd.sanction_date);\n }\n dd.is_applicable_true = dd.is_applicable === true;\n dd.is_applicable_false = dd.is_applicable === false;\n dd.is_applicable_none = dd.is_applicable === null;\n\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n }\n }\n\n fetchGatingDetails() {\n let that = this;\n let body = {\n \"params\": {},\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/program/get-gating-details\",\n \"req_type\": \"get\"\n }\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/gating-data\",\n Constants.REQUEST.post,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n that.renderGatingDetailsTable(response);\n that.submitGatingData();\n }\n else {\n let tmpl = document.getElementById(\"app-gating-data-row-tmpl\");\n let dx = document.getElementById(\"tb_gating_criteria\");\n dx.innerHTML = null;\n let rendered = Mustache.render(tmpl.innerHTML);\n dx.innerHTML = rendered;\n }\n });\n }\n\n submitGatingData() {\n let that = this;\n document.getElementById('gate-keeper-submit').addEventListener('click', function () {\n const rows = document.querySelectorAll('#tb_gating_criteria tr');\n const data = [];\n\n rows.forEach(row => {\n const title = row.querySelector('td:first-child').innerText.trim();\n const applicable = row.querySelector('select').value;\n const remark = row.querySelector('input').value;\n\n if (title) {\n data.push({\n title: title,\n is_applicable: applicable,\n remark: remark,\n scf_application_id: that.scf_application_id\n });\n }\n });\n const body = {\n \"params\": {\n gate_keeper_data: data\n },\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/program/save-gating-details\",\n \"req_type\": \"post\"\n };\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/gating-data\",\n Constants.REQUEST.post,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n \"Success\",\n \"Gate Keeper Data submitted successfully.\",\n Constants.TOAST.success\n );\n setTimeout(function () {\n that.fetchApplicationDeviation();\n }, 1000);\n }\n });\n });\n }\n\n convertDateToDDMMYYYY(dateString) {\n const parts = dateString.split('-');\n if (parts.length !== 3) {\n return dateString;\n }\n return `${parts[2]}-${parts[1]}-${parts[0]}`;\n }\n\n editLoanDetails() {\n let that = this;\n document.querySelectorAll('[id^=\"edit_app_loan_details_\"]').forEach(element => {\n element.addEventListener('click', function (event) {\n event.preventDefault();\n document.getElementById('btn_show_add_new_loan_data').click();\n let loanData = {\n loan_id: this.dataset.loan_id,\n bank_name: this.dataset.bankName,\n nature_of_facility: this.dataset.natureOfFacility,\n borrowing_relationship: this.dataset.borrowingRelationship,\n type_of_loan: this.dataset.typeOfLoan,\n sanction_date: that.convertDateToDDMMYYYY(this.dataset.sanctionDate),\n sanction_amount: this.dataset.sanctionAmount,\n current_outstanding: this.dataset.currentOutstanding,\n emi_interest: this.dataset.emiInterest,\n loan_tenure: this.dataset.loanTenure,\n emi_date: that.convertDateToDDMMYYYY(this.dataset.emiDate),\n emi_tracked_and_bank: this.dataset.emiTrackedAndBank,\n loan_id: this.id.split('_').slice(4).join('_')\n };\n document.getElementById('app_name_of_banker_input').value = loanData.bank_name;\n document.getElementById('app_name_of_facility_input').value = loanData.nature_of_facility;\n document.getElementById('app_borrowing_relationship_input').value = loanData.borrowing_relationship;\n document.getElementById('app_type_of_loan_input').value = loanData.type_of_loan;\n document.getElementById('app_sanction_date_input').value = loanData.sanction_date;\n document.getElementById('app_sanction_amt_input').value = loanData.sanction_amount;\n document.getElementById('app_current_outstanding_input').value = loanData.current_outstanding;\n document.getElementById('app_emi_interest_input').value = loanData.emi_interest;\n document.getElementById('app_tenure_input').value = loanData.loan_tenure;\n document.getElementById('app_emi_date_input').value = loanData.emi_date;\n document.getElementById('app_emi_tracked_input').value = loanData.emi_tracked_and_bank;\n document.getElementById('loan_data_id').value = loanData.loan_id;\n });\n });\n }\n\n downloadBorrowerData() {\n let that = this;\n document.getElementById(\"loan_report_download\").addEventListener(\"click\", function () {\n Utils.requestHandlerDocument(\n \"/scf/api/application/\" + that.scf_application_id + \"/borrower-loan-data\",\n Constants.REQUEST.post,\n {},\n { responseType: 'blob' } // Ensure response is a file\n ).then(function (response) {\n if (response && response instanceof Blob && response.type === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\") {\n const url = window.URL.createObjectURL(response);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = \"borrower_loan_data.xlsx\"; // Set the filename\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n document.body.removeChild(a);\n } else {\n Utils.showToast(\n \"Error\",\n \"Loan report file not found\",\n Constants.TOAST.fail\n );\n }\n }).catch(function (error) {\n Utils.showToast(\n \"Error\",\n \"An error occurred while downloading the report.\",\n Constants.TOAST.fail\n );\n console.error(\"Error during borrower data download:\", error);\n });\n });\n}\n\n destroyLoanDetails() {\n let that = this;\n document.querySelectorAll('[id^=\"destroy_app_loan_details_\"]').forEach(element => {\n element.addEventListener('click', function (event) {\n event.preventDefault();\n let confirmed = window.confirm(\"Are you sure you want to delete Loan Data?\")\n if (confirmed) {\n let loan_data_id = this.id.split('_').slice(4).join('_');\n let body = {\n \"params\": {\n loan_data_id: loan_data_id\n },\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/delete-borrower-loan\",\n \"req_type\": \"delete\"\n }\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/borrower-loan\",\n Constants.REQUEST.post,\n body\n ).then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, ' Loan Data Deleted', Constants.TOAST.success);\n setTimeout(function () {\n that.fetchLoanDetails();\n }, 2000);\n }\n else {\n Utils.showToast(response.message, 'Not Found', Constants.TOAST.fail);\n }\n })\n }\n });\n });\n }\n\n clearLoanDetailsForm() {\n document.getElementById('btn-app-loan-data-modal-close').addEventListener('click', function () {\n document.getElementById(\"app_name_of_banker_input\").value = '';\n document.getElementById(\"app_justification_input\").value = '';\n document.getElementById(\"app_name_of_facility_input\").value = '';\n document.getElementById(\"app_borrowing_relationship_input\").value = '';\n document.getElementById(\"app_type_of_loan_input\").value = '';\n document.getElementById(\"app_sanction_date_input\").value = '';\n document.getElementById(\"app_sanction_amt_input\").value = '';\n document.getElementById(\"app_current_outstanding_input\").value = '';\n document.getElementById(\"app_emi_interest_input\").value = '';\n document.getElementById(\"app_tenure_input\").value = '';\n document.getElementById(\"app_emi_date_input\").value = '';\n document.getElementById(\"app_emi_tracked_input\").value = '';\n });\n }\n\n submitApplicationDeviation() {\n let that = this;\n document.getElementById(\"btn-submit-app-deviation\").addEventListener(\"click\", function () {\n const applicationDeviation = document.getElementById(\"app_deviation_input\");\n const applicationJustification = document.getElementById(\"app_justification_input\");\n\n let body = {\n deviation: applicationDeviation.value,\n justification: applicationJustification.value,\n deviation_id: document.getElementById(\"app_deviation_id\").value\n };\n\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id +\n \"/app-deviations\",\n Constants.REQUEST.post,\n body\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n \"Success\",\n \"Deviation submitted successfully.\",\n Constants.TOAST.success\n );\n document.getElementById(\"app_deviation_input\").value = \"\";\n document.getElementById(\"app_justification_input\").value = \"\";\n document.getElementById(\"btn-app-deviation-modal-close\").click();\n that.fetchApplicationDeviation();\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n })\n .then(function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n });\n\n\n });\n }\n\n fetchApplicationDeviation() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/app-deviations\",\n Constants.REQUEST.get\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n that.renderAppDeviationTable(response);\n } else {\n let tmpl = document.getElementById(\"app-deviation-row-blank-tmpl\");\n let dx = document.getElementById(\"verified_deviations\");\n dx.innerHTML = null;\n let rendered = Mustache.render(tmpl.innerHTML);\n dx.innerHTML = rendered;\n // Utils.showToast(response.message, 'Not Found', Constants.TOAST.fail);\n }\n })\n\n }\n\n renderAppDeviationTable(response) {\n let that = this;\n if (response.message === \"OK\") {\n let tmpl = document.getElementById(\"app-deviation-row-tmpl\");\n let dx = document.getElementById(\"verified_deviations\");\n dx.innerHTML = null;\n response.data.deviations.forEach(function (dd) {\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n that.destroyAppDeviation();\n that.editAppDeviation();\n }\n }\n\n destroyAppDeviation() {\n let that = this;\n document.querySelectorAll('[id^=\"destroy_app_deviation_\"]').forEach(element => {\n element.addEventListener('click', function (event) {\n event.preventDefault();\n let confirmed = window.confirm(\"Are you sure you want to delete Deviation?\")\n if (confirmed) {\n let deviation_id = this.id.split('_').slice(3).join('_');\n Utils.requestHandler('/scf/api/application/' + deviation_id + '/delete-app-deviations', Constants.REQUEST.post, {})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, ' Deviation Deleted', Constants.TOAST.success);\n that.fetchApplicationDeviation();\n }\n else {\n Utils.showToast(response.message, 'Not Found', Constants.TOAST.fail);\n }\n })\n }\n });\n });\n }\n\n clearDeviationForm() {\n document.getElementById('btn-app-deviation-modal-close').addEventListener('click', function () {\n document.getElementById('app_deviation_input').value = '';\n document.getElementById('app_justification_input').value = '';\n document.getElementById('app_deviation_id').value = '';\n });\n }\n\n editAppDeviation() {\n let that = this;\n document.querySelectorAll('[id^=\"edit_app_deviation_\"]').forEach(element => {\n element.addEventListener('click', function (event) {\n event.preventDefault();\n document.getElementById('btn_show_add_new_app_deviation').click();\n let deviation_id = this.id.split('_').slice(3).join('_');\n document.getElementById('app_deviation_input').value = this.dataset.deviation;\n document.getElementById('app_justification_input').value = this.dataset.justification;\n document.getElementById('app_deviation_id').value = deviation_id;\n });\n });\n }\n\n getApplicationDecision() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/credit-decision\",\n Constants.REQUEST.get\n )\n .then(function (response) {\n if (response.message === \"OK\" && response.data) {\n\n const borrowerScorecard = {\n borrower_rating: response.data.borrower_scorecard.borrower_rating,\n management_rating: response.data.borrower_scorecard.management_rating,\n financials_rating: response.data.borrower_scorecard.financials_rating,\n banking_rating: response.data.borrower_scorecard.banking_rating,\n bureau_p_rating: response.data.borrower_scorecard.bureau_p_rating,\n bureau_c_rating: response.data.borrower_scorecard.bureau_c_rating,\n gst_rating: response.data.borrower_scorecard.gst_rating,\n total_rating: response.data.borrower_scorecard.total_rating\n };\n // Set the values in the HTML inputs\n document.getElementById('borrower_scorecard_borrower_rating').value = borrowerScorecard.borrower_rating || '';\n document.getElementById('borrower_scorecard_management_rating').value = borrowerScorecard.management_rating || '';\n document.getElementById('borrower_scorecard_financials_rating').value = borrowerScorecard.financials_rating || '';\n document.getElementById('borrower_scorecard_banking_rating').value = borrowerScorecard.banking_rating || '';\n document.getElementById('borrower_scorecard_bureau_p_rating').value = borrowerScorecard.bureau_p_rating || '';\n document.getElementById('borrower_scorecard_bureau_c_rating').value = borrowerScorecard.bureau_c_rating || '';\n document.getElementById('borrower_scorecard_gst_rating').value = borrowerScorecard.gst_rating || '';\n document.getElementById('borrower_scorecard_total_rating').value = borrowerScorecard.total_rating || '';\n\n // let applicationScore = document.getElementById(\"app_score\");\n let applicationDecision = document.getElementById(\"app_decision\");\n let applicationRemarks = document.getElementById(\"app_remarks\");\n // let applicationApprovedAmout =\n // document.getElementById(\"amount_field\");\n // applicationScore.value = response[\"data\"][\"score\"];\n applicationDecision.value = response[\"data\"][\"decision\"];\n applicationRemarks.value = response[\"data\"][\"remarks\"];\n // applicationApprovedAmout.value = response[\"data\"][\"approved_amount\"];\n Utils.showToast(\n \"Fetched\",\n \"Decision Fetched\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n })\n .then(function () { });\n }\n\n initializeScorecardEventListeners() {\n const elements = document.querySelectorAll('.borrower_scorecard_element');\n\n // Function to calculate the total\n function calculateTotal() {\n let total = 0;\n elements.forEach(element => {\n // Add the numeric value of each field to the total. Handle empty fields as 0.\n total += Number(element.value) || 0;\n });\n\n // Update the total field\n document.getElementById('borrower_scorecard_total_rating').value = total;\n }\n\n // Attach the calculateTotal function as an event listener to each input element\n elements.forEach(element => {\n element.addEventListener('input', calculateTotal);\n });\n }\n}\n\nclass UdhyamAadhar {\n constructor(\n scf_application_id,\n inputValue = null,\n business_applicant_id = null,\n udyam_reg_no = null\n ) {\n this.scf_application_id =\n document.getElementById(\"scf_application_id\").value;\n this.elem_applicant_details = document.getElementById(\n \"div_applicant_details_gst\"\n );\n this.elem_application_details = document.getElementById(\n \"applicant-details-tmpl-gst\"\n );\n Utils.navPanelHandler(\".kyc-panel-link\", \".kyc-panel\");\n this.inputValue = inputValue;\n this.business_applicant_id = localStorage.getItem(\"business_applicant_id\");\n this.udyam_reg_no = udyam_reg_no;\n this.fetchUdyamDetails();\n this.Gstindetails();\n this.tempUdyamSearch();\n this.mcaDetails();\n }\n\n fetchUdyamDetails() {\n let that = this;\n return Utils.requestHandler(\n \"/scf/api/application/\" + this.scf_application_id + \"/udyam\",\n Constants.REQUEST.get\n ).then(function (response) {\n that.renderGstDetails(response.data);\n if (response.message === \"OK\") {\n let container = document.getElementById(\"div_application_details_udyam\");\n\n // Clear previous content\n container.innerHTML = '';\n\n if (!response.data.udyam_details || !response.data.udyam_details.tsp_data) {\n let notFoundMsg = document.createElement(\"h1\");\n notFoundMsg.textContent = \"Not Found\";\n container.appendChild(notFoundMsg);\n }\n\n that.business_applicant_name = document.getElementById('business_applicant_name').value;\n that.business_applicant_pan = document.getElementById('business_applicant_pan').value;\n let profile_name = response.data.udyam_details ? response.data.udyam_details.name : '';\n let trade_name = document.getElementById('scf_application_trade_name').value;\n\n // Create combinations with labels and format them\n let combinations = [\n `Udyam Name: ${profile_name} Trade Name: ${trade_name}`,\n // `Business Applicant Name: ${that.business_applicant_name} Udyam Name: ${profile_name}`, // Removed second pair\n `Business Applicant Name: ${that.business_applicant_name} Trade Name: ${trade_name}`,\n `Business Applicant Name: ${that.business_applicant_name} Udyam Name: ${profile_name} Trade Name: ${trade_name}`\n ];\n\n // Display combinations with specified formatting\n combinations.forEach(combination => {\n container.innerHTML += `
${combination}

`;\n });\n\n // Hide error message if conditions are met\n if (profile_name === that.business_applicant_name || profile_name === trade_name) {\n document.getElementById('error_message').classList.add('no-display');\n }\n\n // Call function to create nested table based on tsp_data\n if (response.data.udyam_details && response.data.udyam_details.tsp_data) {\n that.createNestedTableUydam(response.data.udyam_details.tsp_data, container);\n }\n }\n }).catch(function (error) {\n console.error('Error fetching Udyam details:', error);\n // Handle error display or logging as needed\n });\n }\n\n\n tempUdyamSearch() {\n let inputbox = document.getElementById(\"udyamSearchField\");\n let button = document.getElementById(\"syncButton\");\n let that = this;\n button.addEventListener(\"click\", function () {\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/udyam\",\n Constants.REQUEST.post,\n { udhyam_aadhaar: inputbox.value }\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n \"Success\",\n \"Udyam Fetched successfully.\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n\n Gstindetails() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + this.scf_application_id,\n Constants.REQUEST.get,\n {}\n ).then(function (response) {\n if (response.message === \"OK\") {\n document.getElementById('eligibility_stage').value = response.data.eligibility_stage;\n that.renderGstDetails(response.data);\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n }\n\n mcaDetails() {\n let that = this;\n Utils.requestHandler(\n \"/scf/api/application/\" + this.scf_application_id,\n Constants.REQUEST.get,\n {}\n ).then(function (response) {\n if (response.message === \"OK\") {\n let container = document.getElementById(\"div_application_details_mca\");\n let mcaData = response.data.mca_data;\n\n if (mcaData === null || mcaData.length === 0) {\n container.textContent = null;\n let notFoundMsg = document.createElement(\"h1\");\n notFoundMsg.textContent = \"Not Found\";\n container.appendChild(notFoundMsg);\n } else {\n // Clear the container\n container.innerHTML = \"\";\n\n // Create a table element with styles\n let table = document.createElement(\"table\");\n table.style.width = \"100%\";\n table.style.borderCollapse = \"collapse\";\n table.style.border = \"1px solid #ddd\";\n table.style.marginTop = \"20px\";\n\n // Recursive function to handle nested objects\n function createTableRow(key, value) {\n let row = document.createElement(\"tr\");\n\n let keyCell = document.createElement(\"td\");\n keyCell.textContent = key.replace(/_/g, \" \").toUpperCase();\n keyCell.style.border = \"1px solid #ddd\";\n keyCell.style.padding = \"8px\";\n keyCell.style.backgroundColor = \"#f2f2f2\";\n keyCell.style.fontWeight = \"bold\";\n keyCell.style.textTransform = \"uppercase\";\n\n let valueCell = document.createElement(\"td\");\n valueCell.style.border = \"1px solid #ddd\";\n valueCell.style.padding = \"8px\";\n if (typeof value === \"object\" && value !== null) {\n if (Array.isArray(value)) {\n let list = document.createElement(\"ul\");\n value.forEach(item => {\n let listItem = document.createElement(\"li\");\n if (typeof item === \"object\" && item !== null) {\n let nestedTable = document.createElement(\"table\");\n nestedTable.style.width = \"100%\";\n nestedTable.style.borderCollapse = \"collapse\";\n for (let nestedKey in item) {\n nestedTable.appendChild(createTableRow(nestedKey, item[nestedKey]));\n }\n listItem.appendChild(nestedTable);\n } else {\n listItem.textContent = item.toString().toUpperCase();\n }\n list.appendChild(listItem);\n });\n valueCell.appendChild(list);\n } else {\n let nestedTable = document.createElement(\"table\");\n nestedTable.style.width = \"100%\";\n nestedTable.style.borderCollapse = \"collapse\";\n for (let nestedKey in value) {\n nestedTable.appendChild(createTableRow(nestedKey, value[nestedKey]));\n }\n valueCell.appendChild(nestedTable);\n }\n } else {\n valueCell.textContent = value.toString().toUpperCase();\n }\n\n row.appendChild(keyCell);\n row.appendChild(valueCell);\n return row;\n }\n\n // Populate the table with rows\n for (let key in mcaData) {\n table.appendChild(createTableRow(key, mcaData[key]));\n }\n\n // Append the new table to the container\n container.appendChild(table);\n }\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n }\n\n\n\n\n\n\n transformGstData(data) {\n if (data != null && data.gstins) {\n let idxgst = 1;\n data.gstins.forEach(function (row) {\n row.registration_date = Utils.formatDate(row.registration_date);\n row.formatted_registration_date = Utils.formatTimeRelative(\n row.registration_date\n );\n row.last_updated = Utils.formatDate(row.last_updated);\n if (row.last_updated) {\n row.formatted_last_updated = Utils.formatTimeRelative(\n row.last_updated\n );\n }\n row.idx = idxgst++;\n });\n }\n return data;\n }\n renderGstDetails(data) {\n if (data == null) {\n return;\n }\n const that = this;\n let tmpl = document.getElementById(\"applicant-details-tmpl-gst\");\n let d = this.transformGstData(data);\n let rendered = Mustache.render(tmpl.innerHTML, d);\n this.elem_application_details.append($.parseHTML(rendered)[1]);\n tmpl = document.getElementById(\"applicant-details-tmpl-gst\");\n rendered = Mustache.render(tmpl.innerHTML, d);\n this.elem_applicant_details.append($.parseHTML(rendered)[1]);\n }\n\n createNestedTableUydam(jsonObj, parentElement, parentKey = null) {\n let that = this;\n let table = document.createElement(\"table\");\n table.style.borderCollapse = \"collapse\";\n table.style.width = \"100%\";\n table.style.border = \"1px solid #ddd\";\n table.style.marginTop = \"20px\";\n table.style.fontFamily = \"Arial, sans-serif\";\n table.style.fontSize = \"14px\";\n for (let key in jsonObj) {\n if (jsonObj.hasOwnProperty(key)) {\n let tr = document.createElement(\"tr\");\n let capitalizedKey = key.replace(/_/g, ' ').replace(/([A-Z])/g, ' $1');\n capitalizedKey = capitalizedKey.charAt(0).toUpperCase() + capitalizedKey.slice(1);\n let tdKey = document.createElement(\"td\");\n tdKey.style.border = \"1px solid #ddd\";\n tdKey.style.padding = \"8px\";\n tdKey.style.textAlign = \"left\";\n tdKey.style.backgroundColor = \"#f2f2f2\";\n tdKey.style.fontWeight = \"bold\";\n tdKey.style.width = \"30%\";\n tdKey.textContent = capitalizedKey;\n let tdValue = document.createElement(\"td\");\n tdValue.style.border = \"1px solid #ddd\";\n tdValue.style.padding = \"8px\";\n tdValue.style.textAlign = \"left\";\n tdValue.style.width = \"70%\";\n if (jsonObj[key] === null) {\n tdValue.textContent = \"Not Found\";\n tr.appendChild(tdKey);\n tr.appendChild(tdValue);\n table.appendChild(tr);\n continue;\n }\n if (parentKey == \"profile\" && key == \"name\") {\n let ud_name = jsonObj['name'];\n let bs_name = that.business_applicant_name;\n if (ud_name != bs_name) {\n tdValue.style.color = \"red\";\n tdValue.style.fontWeight = \"bold\";\n }\n }\n\n if (typeof jsonObj[key] === \"object\") {\n if (Array.isArray(jsonObj[key])) {\n let ul = document.createElement(\"ul\");\n ul.style.padding = \"0\";\n ul.style.margin = \"0\";\n ul.style.listStyleType = \"none\";\n jsonObj[key].forEach((item) => {\n let li = document.createElement(\"li\");\n li.style.marginBottom = \"5px\";\n if (typeof item === \"object\") {\n that.createNestedTableUydam(item, li, key);\n } else {\n li.textContent = item;\n }\n ul.appendChild(li);\n });\n tdValue.appendChild(ul);\n } else {\n that.createNestedTableUydam(jsonObj[key], tdValue, key);\n }\n } else {\n tdValue.textContent = jsonObj[key];\n }\n\n tr.appendChild(tdKey);\n tr.appendChild(tdValue);\n table.appendChild(tr);\n }\n }\n parentElement.appendChild(table);\n }\n}\n\n\nclass Eligibility {\n constructor() {\n this.scf_application_id = document.getElementById(\"scf_application_id\").value;\n this.fetchCounterParties();\n this.getBankingDetails();\n this.submitForm();\n Utils.requestHandler(\n \"/scf/api/application/\" + this.scf_application_id,\n Constants.REQUEST.get,\n {}\n ).then(function (response) {\n if (response.message === \"OK\") {\n document.getElementById('eligibility_stage').value = response.data.eligibility_stage;\n if (document.getElementById('eligibility_stage').value == \"ABB method\") {\n document.getElementById('eligibility_basis_abb').classList.remove('no-display');\n }\n else if (document.getElementById('eligibility_stage').value == \"GST Method\") {\n document.getElementById('eligibility_basis_gst').classList.remove('no-display');\n }\n else if (document.getElementById('eligibility_stage').value == \"Financials\") {\n document.getElementById('financial_ratios').classList.remove('no-display');\n }\n else if (document.getElementById('eligibility_stage').value == \"Professional Reciepts Loan Method\") {\n document.getElementById('professional_reciepts').classList.remove('no-display');\n }\n else if (document.getElementById('eligibility_stage').value == \"Income Method\") {\n document.getElementById('income_loan').classList.remove('no-display');\n }\n }\n });\n this.fetchEligibilityData();\n }\n\n fetchCounterParties() {\n let that = this;\n that.counter_parties = [];\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/counter-parties\",\n Constants.REQUEST.get\n )\n .then(function (response) {\n if (response.message === \"OK\") {\n that.counter_parties = response.data.counter_parties;\n if (that.counter_parties.length == 0) {\n document.getElementById('eligibility_basis_counterparty').classList.add(\"no-display\");\n }\n that.renderFormSections();\n }\n else {\n document.getElementById('eligibility_basis_counterparty').classList.add(\"no-display\");\n }\n });\n }\n\n formatDateForInput(dateString) {\n const [year, month, day] = dateString.split('-');\n return `${year}-${month}-${day}`;\n }\n\n renderFormSections() {\n const container = document.getElementById('eligibility_basis_counterparty_form');\n container.innerHTML = '';\n const updateTotals = () => {\n let totalYearlyPurchase = 0;\n\n this.counter_parties.forEach(counterParty => {\n const yearlyPurchaseValue = parseFloat(document.getElementById(`eligibility_${counterParty.id}`).value) || 0;\n totalYearlyPurchase += yearlyPurchaseValue;\n });\n\n document.getElementById('total_eligibility').value = totalYearlyPurchase.toFixed(2);\n };\n\n container.innerHTML = `\n \n \n \n \n \n \n \n \n \n \n \n \n ${this.counter_parties.map((counterParty, index) => {\n const formattedDate = this.formatDateForInput(counterParty.vintage);\n\n return `\n \n \n \n \n \n \n \n \n `;\n }).join('')}\n \n \n \n \n \n \n \n \n
Counterparty NameDealing Since WhenYearly BillingCredit Period (Days)EligibilityProposed Exposure
\n \n This is an error\n \n \n This is an error\n \n \n This is an error\n \n \n This is an error\n \n \n This is an error\n \n
Total\n \n This is an error\n \n \n This is an error\n
\n `;\n this.counter_parties.forEach(counterParty => {\n document.getElementById(`eligibility_${counterParty.id}`).addEventListener('input', updateTotals);\n });\n updateTotals();\n }\n\n getBankingDetails() {\n let that = this;\n that.bank_accounts = [];\n Utils.requestHandler('/scf/api/application/' + that.scf_application_id + '/bank-accounts', Constants.REQUEST.get).then(function (response) {\n if (response.message === 'OK') {\n that.bank_accounts = response.data.bank_accounts;\n const bankingDetails = response.data.bank_accounts;\n that.renderBankingDetails(bankingDetails);\n }\n });\n }\n\n renderBankingDetails(bankAccounts) {\n const container = document.getElementById('eligibility_basis_abb');\n container.innerHTML = `\n

Eligibility Basis: ABB

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ${bankAccounts.map((bank, index) => {\n return `\n \n \n \n \n \n \n \n \n \n \n `;\n }).join('')}\n \n \n \n \n \n \n \n \n \n \n
Bank NameType of AccountDaily ABB (Last 12 Months)% of non business transactios (Non business transaction / Total Banking TO)FOIR factorEligible ABBEMI factorEligibility
\n \n This is an error\n \n \n This is an error\n \n \n This is an error\n
Total\n \n This is an error\n \n \n This is an error\n \n \n This is an error\n \n \n This is an error\n \n \n This is an error\n \n \n This is an error\n
\n `;\n const updateTotals = () => {\n let totalDailyABB = 0;\n\n bankAccounts.forEach(bank => {\n const dailyabb = parseFloat(document.getElementById(`daily_abb_${bank.id}`).value) || 0;\n totalDailyABB += dailyabb;\n });\n\n document.getElementById('total_daily_abb').value = totalDailyABB.toFixed(2);\n };\n\n bankAccounts.forEach(bank => {\n document.getElementById(`daily_abb_${bank.id}`).addEventListener('input', updateTotals);\n });\n\n updateTotals();\n }\n\n fetchEligibilityData() {\n let payload = {};\n let that = this;\n payload[\"url\"] = Constants.SERVICE_BASE_BACKOFFICE + \"/v2/eligibility/fetch-eligibility-details/\";\n payload[\"req_type\"] = \"get\";\n\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/eligibility-data\",\n Constants.REQUEST.post,\n payload\n ).then(function (response) {\n if (response.message === 'OK') {\n that.populateFormFields(response.data);\n }\n }).catch(function (error) {\n console.error(\"Error fetching eligibility data:\", error);\n });\n }\n\n\n\n populateFormFields(data) {\n // Populate Counterparty fields and calculate totals\n if (data.counterparty && data.counterparty.length > 0) {\n let total_eligiblity = 0;\n data.counterparty.forEach(counterparty => {\n const yearlyPurchaseElement = document.getElementById(`yearly_purchase_${counterparty.counter_party_id}`);\n const creditPeriodElement = document.getElementById(`credit_period_${counterparty.counter_party_id}`);\n const eligibilityElement = document.getElementById(`eligibility_${counterparty.counter_party_id}`);\n const proposedExposureElement = document.getElementById(`proposed_exposure_${counterparty.counter_party_id}`);\n\n if (yearlyPurchaseElement) {\n yearlyPurchaseElement.value = counterparty.yearly_purchase || '';\n }\n if (creditPeriodElement) creditPeriodElement.value = counterparty.credit_period || '';\n if (eligibilityElement) {\n total_eligiblity += parseFloat(counterparty.eligibility) || 0;\n eligibilityElement.value = counterparty.eligibility || '';\n }\n\n if (proposedExposureElement) proposedExposureElement.value = counterparty.proposed_exposure || '';\n });\n\n // Update total fields\n document.getElementById('total_eligibility').value = total_eligiblity.toFixed(2);\n }\n\n // Populate ABB fields and calculate totals\n if (data.abb && data.abb.length > 0) {\n let totalDailyABB = 0;\n\n data.abb.forEach(abb => {\n const dailyAbElement = document.getElementById(`daily_abb_${abb.bank_account_id}`);\n const nonBusinessTransactionsPercentageElement = document.getElementById(`non_business_transactions_percentage_${abb.bank_account_id}`);\n const eligibleAbElement = document.getElementById(`eligible_abb_${abb.bank_account_id}`);\n const proposedExposureAbbElement = document.getElementById(`proposed_exposure_abb_${abb.bank_account_id}`);\n const foirFactorElement = document.getElementById(`foir_factor_${abb.bank_account_id}`);\n const eligibleElement = document.getElementById(`eligibility_${abb.bank_account_id}`);\n const emiFactorElement = document.getElementById(`emi_factor_${abb.bank_account_id}`);\n if (dailyAbElement) {\n dailyAbElement.value = abb.daily_abb || '';\n totalDailyABB += parseFloat(abb.daily_abb) || 0;\n }\n if (nonBusinessTransactionsPercentageElement) {\n nonBusinessTransactionsPercentageElement.value = abb.non_business_transactions_percentage || '';\n }\n if (eligibleAbElement) {\n eligibleAbElement.value = abb.eligible_abb || '';\n }\n if (proposedExposureAbbElement) {\n proposedExposureAbbElement.value = abb.proposed_exposure_abb || '';\n }\n if (foirFactorElement) {\n foirFactorElement.value = abb.foir_factor || '';\n }\n if (eligibleElement) {\n eligibleElement.value = abb.eligibility || '';\n }\n if (emiFactorElement) {\n emiFactorElement.value = abb.emi_factor || '';\n }\n });\n document.getElementById('total_daily_abb').value = totalDailyABB.toFixed(2);\n }\n\n // Populate GST fields\n if (data.gst && data.gst.length > 0) {\n const gst = data.gst[0];\n document.getElementById('avg_monthly_sales').value = gst.avg_monthly_sales || '';\n document.getElementById('industry_margin').value = gst.industry_margin || '';\n document.getElementById('foir_factor').value = gst.foir_factor || '';\n document.getElementById('total_income_foir').value = gst.total_income_foir || '';\n document.getElementById('existing_obligations_per_month').value = gst.existing_obligations_per_month || '';\n document.getElementById('eligible_monthly_income').value = gst.eligible_monthly_income || '';\n document.getElementById('emi_factor').value = gst.emi_factor || '';\n document.getElementById('eligibility').value = gst.eligibility || '';\n }\n\n // Populate Financial Ratios fields\n if (data.financial_ratios && data.financial_ratios.length > 0) {\n const ratios = data.financial_ratios[0];\n document.getElementById('drop_in_sales').value = ratios.drop_in_sales || '';\n document.getElementById('positive_atnw').value = ratios.positive_atnw || '';\n document.getElementById('positive_cash_profit').value = ratios.positive_cash_profit || '';\n document.getElementById('dpd_debtors_vs_atnw').value = ratios.dpd_debtors_vs_atnw || '';\n document.getElementById('debtor_ageing_credit_ageing').value = ratios.debtor_ageing_credit_ageing || '';\n document.getElementById('tca_debtor_stock').value = ratios.tca_debtor_stock || '';\n document.getElementById('dscr').value = ratios.dscr || '';\n document.getElementById('tol_atnw').value = ratios.tol_atnw || '';\n document.getElementById('de_ratio').value = ratios.de_ratio || '';\n document.getElementById('debt_turnover').value = ratios.debt_turnover || '';\n document.getElementById('bto').value = ratios.bto || '';\n }\n\n // Populate turnover fields\n if (data.turnover && data.turnover.length > 0) {\n const turnover = data.turnover[0];\n document.getElementById('to_gst_last_12_month').value = turnover.to_gst_last_12_month || '';\n document.getElementById('sales_growth_factor').value = turnover.sales_growth_factor || '';\n document.getElementById('gross_wc_requirements').value = turnover.gross_wc_requirements || '';\n document.getElementById('current_banking_facilities').value = turnover.current_banking_facilities || '';\n document.getElementById('net_eligibility').value = turnover.net_eligibility || '';\n }\n\n if (data.professional && data.professional.length > 0) {\n const professional = data.professional[0];\n document.getElementById('gross_monthly_receipts').value = professional.gross_monthly_receipts || '';\n document.getElementById('professional_income_factor').value = professional.income_factor || '';\n document.getElementById('add_salaries_per_month').value = professional.add_salaries_per_month || '';\n document.getElementById('professional_eligible_monthly_income').value = professional.eligible_monthly_income || '';\n document.getElementById('professional_foir_factor').value = professional.foir_factor || '';\n document.getElementById('professional_existing_obligations_per_month').value = professional.existing_obligations_per_month || '';\n document.getElementById('professional_emi_factor').value = professional.emi_factor || '';\n document.getElementById('professional_eligibility').value = professional.eligibility || '';\n }\n\n if (data.income && data.income.length > 0) {\n const income = data.income[0];\n document.getElementById('gross_monthly_income').value = income.gross_monthly_income || '';\n document.getElementById('less_exceptional_items').value = income.less_exceptional_items || '';\n document.getElementById('add_withdrawals').value = income.add_withdrawals || '';\n document.getElementById('income_eligible_monthly_income').value = income.eligible_monthly_income || '';\n document.getElementById('dscr_factor').value = income.dscr_factor || '';\n document.getElementById('income_existing_obligations_per_month').value = income.existing_obligations_per_month || '';\n document.getElementById('income_emi_factor').value = income.emi_factor || '';\n document.getElementById('income_eligibility').value = income.eligibility || '';\n }\n }\n\n\n submitForm() {\n let that = this;\n const submitButton = document.getElementById(\"btn-eligibility-submit\");\n\n submitButton.addEventListener(\"click\", (event) => {\n event.preventDefault();\n\n if (that.validateForm()) {\n const eligibilityStage = document.getElementById('eligibility_stage').value;\n let payload = {\n scf_application_id: document.getElementById(\"scf_application_id\").value || '',\n counterparty: [],\n abb: [],\n gst: {},\n financial_ratios: {},\n eligibility_basis_turnover: {},\n income: {},\n professional_receipts: {}\n };\n if (eligibilityStage === \"ABB method\") {\n // Gather ABB data\n that.bank_accounts.forEach((bankAccount) => {\n let bankId = bankAccount.id;\n let bankAccountElement = document.getElementById(`bank_account_${bankId}`);\n let dailyAbbElement = document.getElementById(`daily_abb_${bankId}`);\n let nonBusinessTransactionsElement = document.getElementById(`non_business_transactions_percentage_${bankId}`);\n let foirFactorElement = document.getElementById(`foir_factor_${bankId}`);\n let proposedExposureAbbElement = document.getElementById(`proposed_exposure_abb_${bankId}`);\n let eligibleElement = document.getElementById(`eligible_abb_${bankId}`);\n let emiFactorElement = document.getElementById(`emi_factor_${bankId}`);\n let eligibilityElement = document.getElementById(`eligibility_${bankId}`);\n\n payload.abb.push({\n id: bankId,\n bank_account: bankAccountElement ? bankAccountElement.value : '',\n daily_abb: parseFloat(dailyAbbElement ? dailyAbbElement.value : 0),\n non_business_transactions_percentage: parseFloat(nonBusinessTransactionsElement ? nonBusinessTransactionsElement.value : null),\n foir_factor: parseFloat(foirFactorElement ? foirFactorElement.value : null),\n proposed_exposure_abb: parseFloat(proposedExposureAbbElement ? proposedExposureAbbElement.value : null),\n eligible_abb: parseFloat(eligibleElement ? eligibleElement.value : null),\n emi_factor: parseFloat(emiFactorElement ? emiFactorElement.value : null),\n eligibility: parseFloat(eligibilityElement ? eligibilityElement.value : null),\n });\n });\n } else if (eligibilityStage === \"GST Method\") {\n // Gather GST data\n payload.gst = {\n avg_monthly_sales: parseFloat(document.getElementById(\"avg_monthly_sales\").value || 0),\n industry_margin: parseFloat(document.getElementById(\"industry_margin\").value || 0),\n foir_factor: parseFloat(document.getElementById(\"foir_factor\").value || 0),\n total_income_foir: parseFloat(document.getElementById(\"total_income_foir\").value || 0),\n existing_obligations_per_month: parseFloat(document.getElementById(\"existing_obligations_per_month\").value || 0),\n eligible_monthly_income: parseFloat(document.getElementById(\"eligible_monthly_income\").value || 0),\n emi_factor: parseFloat(document.getElementById(\"emi_factor\").value || 0),\n eligibility: parseFloat(document.getElementById(\"eligibility\").value || 0)\n };\n } else if (eligibilityStage === \"Financials\") {\n // Gather Financial ratios data\n payload.financial_ratios = {\n drop_in_sales: parseFloat(document.getElementById(\"drop_in_sales\").value || 0),\n positive_atnw: document.getElementById(\"positive_atnw\").value || '',\n positive_cash_profit: document.getElementById(\"positive_cash_profit\").value || '',\n dpd_debtors_vs_atnw: parseFloat(document.getElementById(\"dpd_debtors_vs_atnw\").value || 0),\n debtor_ageing_credit_ageing: parseFloat(document.getElementById(\"debtor_ageing_credit_ageing\").value || 0),\n tca_debtor_stock: parseFloat(document.getElementById(\"tca_debtor_stock\").value || 0),\n dscr: parseFloat(document.getElementById(\"dscr\").value || 0),\n tol_atnw: parseFloat(document.getElementById(\"tol_atnw\").value || 0),\n de_ratio: parseFloat(document.getElementById(\"de_ratio\").value || 0),\n debt_turnover: parseFloat(document.getElementById(\"debt_turnover\").value || 0),\n bto: parseFloat(document.getElementById(\"bto\").value || 0)\n };\n } else if (eligibilityStage === \"Income Method\") {\n // Gather Income data\n payload.income = {\n gross_monthly_income: parseFloat(document.getElementById(\"gross_monthly_income\").value || 0),\n less_exceptional_items: parseFloat(document.getElementById(\"less_exceptional_items\").value || ''),\n add_withdrawals: parseFloat(document.getElementById(\"add_withdrawals\").value || ''),\n eligible_monthly_income: parseFloat(document.getElementById(\"income_eligible_monthly_income\").value || 0),\n dscr_factor: parseFloat(document.getElementById(\"dscr_factor\").value || 0),\n existing_obligations_per_month: parseFloat(document.getElementById(\"income_existing_obligations_per_month\").value || 0),\n emi_factor: parseFloat(document.getElementById(\"income_emi_factor\").value || 0),\n eligibility: parseFloat(document.getElementById(\"income_eligibility\").value || 0)\n };\n } else if (eligibilityStage === \"Professional Reciepts Loan Method\") {\n // Gather Professional Recipts data\n payload.professional_receipts = {\n gross_monthly_receipts: parseFloat(document.getElementById(\"gross_monthly_receipts\").value || 0),\n factor_percent: parseFloat(document.getElementById(\"professional_income_factor\").value || ''),\n add_salaries_per_month: parseFloat(document.getElementById(\"add_salaries_per_month\").value || ''),\n eligible_monthly_income: parseFloat(document.getElementById(\"professional_eligible_monthly_income\").value || 0),\n foir_factor: parseFloat(document.getElementById(\"professional_foir_factor\").value || 0),\n existing_obligations_per_month: parseFloat(document.getElementById(\"professional_existing_obligations_per_month\").value || 0),\n emi_factor: parseFloat(document.getElementById(\"professional_emi_factor\").value || 0),\n eligibility: parseFloat(document.getElementById(\"professional_eligibility\").value || 0)\n };\n }\n // Gather eligibility_basis_turnover data\n payload.eligibility_basis_turnover = {\n to_gst_last_12_month: parseFloat(document.getElementById(\"to_gst_last_12_month\").value || 0),\n sales_growth_factor: parseFloat(document.getElementById(\"sales_growth_factor\").value || 0),\n gross_wc_requirements: parseFloat(document.getElementById(\"gross_wc_requirements\").value || 0),\n current_banking_facilities: parseFloat(document.getElementById(\"current_banking_facilities\").value || 0),\n net_eligibility: parseFloat(document.getElementById(\"net_eligibility\").value || 0)\n };\n\n // Gather Counterparty data (common for all stages)\n that.counter_parties.forEach((counterParty) => {\n let counterpartyElement = document.getElementById(`counterparty_name_${counterParty.id}`);\n let yearlyPurchaseElement = document.getElementById(`yearly_purchase_${counterParty.id}`);\n let creditPeriodElement = document.getElementById(`credit_period_${counterParty.id}`);\n let proposedExposureElement = document.getElementById(`proposed_exposure_${counterParty.id}`);\n let eligibility = document.getElementById(`eligibility_${counterParty.id}`);\n\n payload.counterparty.push({\n id: counterParty.id,\n counter_party: counterpartyElement ? counterpartyElement.value : '',\n yearly_purchase: parseFloat(yearlyPurchaseElement ? yearlyPurchaseElement.value : 0),\n credit_period: parseInt(creditPeriodElement ? creditPeriodElement.value : 0),\n proposed_exposure: parseFloat(proposedExposureElement ? proposedExposureElement.value : null),\n eligibility: parseFloat(eligibility ? eligibility.value : null)\n });\n });\n\n payload[\"url\"] = Constants.SERVICE_BASE_BACKOFFICE + \"/v2/eligibility/eligibility-submit/\";\n payload[\"req_type\"] = \"post\";\n Utils.requestHandler(\n \"/scf/api/application/\" + that.scf_application_id + \"/eligibility-data\",\n Constants.REQUEST.post,\n payload\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n \"Success\",\n \"Eligibility Submitted Successfully.\",\n Constants.TOAST.success\n );\n }\n else {\n Utils.showToast(\n response.message,\n \"Invalid Input\",\n Constants.TOAST.info\n );\n }\n });\n }\n });\n }\n\n validateForm() {\n let that = this;\n that.pass = true;\n\n const eligibilityStage = document.getElementById('eligibility_stage').value;\n const sectionsToValidate = {\n \"ABB method\": [\n \"eligibility_basis_turnover_form\",\n \"eligibility_basis_abb\"\n ],\n \"GST Method\": [\n \"eligibility_basis_turnover_form\",\n \"eligibility_basis_gst\"\n ],\n \"Financials\": [\n \"eligibility_basis_turnover_form\",\n \"financial_ratios\"\n ],\n \"Income Method\": [\n \"eligibility_basis_turnover_form\",\n \"income_loan\"\n ],\n \"Professional Reciepts Loan Method\": [\n \"eligibility_basis_turnover_form\",\n \"professional_reciepts\"\n ],\n \"\": [\n \"eligibility_basis_turnover_form\"\n ]\n };\n if (that.counter_parties && that.counter_parties.length > 0) {\n for (let key in sectionsToValidate) {\n sectionsToValidate[key].unshift(\"eligibility_basis_counterparty_form\");\n }\n }\n (sectionsToValidate[eligibilityStage] || []).forEach(sectionId => {\n document.querySelectorAll(`#${sectionId} input, #${sectionId} select`).forEach((field) => {\n let label = field.getAttribute(\"data-label\");\n let label_title = label;\n\n if (!field.value.trim()) {\n Utils.showInputError(field, `${label_title} is mandatory`);\n that.pass = false;\n } else {\n Utils.hideInputError(field);\n }\n if (field.type === \"number\" && field.value) {\n if (isNaN(field.value) || field.value <= 0) {\n Utils.showInputError(field, `${label_title} must be a positive number`);\n that.pass = false;\n } else {\n Utils.hideInputError(field);\n }\n }\n if (field.type === \"date\" && field.value) {\n let date = new Date(field.value);\n if (isNaN(date.getTime())) {\n Utils.showInputError(field, \"Invalid date format\");\n that.pass = false;\n } else {\n Utils.hideInputError(field);\n }\n }\n if (field.tagName === \"SELECT\") {\n if (!field.value.trim()) {\n Utils.showInputError(field, `${label_title} is mandatory`);\n that.pass = false;\n } else {\n Utils.hideInputError(field);\n }\n }\n\n // Add event listener for input validation\n field.addEventListener(\"input\", () => {\n if (!field.value.trim()) {\n Utils.showInputError(field, `${label_title} is mandatory`);\n that.pass = false;\n } else {\n Utils.hideInputError(field);\n }\n\n if (field.type === \"number\" && field.value) {\n if (isNaN(field.value) || field.value <= 0) {\n Utils.showInputError(field, `${label_title} must be a positive number`);\n that.pass = false;\n } else {\n Utils.hideInputError(field);\n }\n }\n if (field.type === \"date\" && field.value) {\n let date = new Date(field.value);\n if (isNaN(date.getTime())) {\n Utils.showInputError(field, \"Invalid date format\");\n that.pass = false;\n } else {\n Utils.hideInputError(field);\n }\n }\n });\n });\n });\n\n return that.pass;\n }\n\n}\n\nclass LoanTransaction {\n constructor() {\n this.scf_application_id =\n document.getElementById(\"scf_application_id\").value;\n this.fetchLoanDetails();\n }\n\n fetchLoanDetails() {\n const that = this;\n const apiUrl =\n \"/scf/api/application/\" + that.scf_application_id + \"/ \";\n const requestBody = {\n params: { application_id: that.scf_application_id },\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/fetch-transactions\",\n req_type: \"get\",\n };\n Utils.requestHandler(apiUrl, Constants.REQUEST.post, requestBody)\n .then(function (response) {\n if (\n response.message === \"OK\" &&\n response.data &&\n response.data.invoices.length > 0\n ) {\n that.renderLoanDetails(response.data.invoices);\n if (response.data.transactions.length > 0) {\n that.renderTransactionDetails(response.data.transactions);\n } else {\n that.renderNoTransactionData();\n }\n } else {\n that.renderNoData();\n }\n })\n .catch(function (error) {\n console.error(\"Error fetching loan details:\", error);\n that.renderNoData();\n });\n }\n\n formatDateToIST(dateStr) {\n if (!dateStr) return \"N/A\";\n const date = new Date(dateStr);\n return new Intl.DateTimeFormat(\"en-IN\", {\n dateStyle: \"medium\",\n timeZone: \"Asia/Kolkata\",\n }).format(date);\n }\n\n\n renderLoanDetails(invoices) {\n let totalInvoiceValue = 0;\n let totalAmountPaid = 0;\n let totalRemainingAmount = 0;\n let totalDisbursementAmount = 0;\n let totalRealizedInterest = 0;\n let totalPrincipalOutstanding = 0;\n let totalPrincipalDue = 0;\n let totalOutstandingInterest = 0;\n let totalLatePaymentCharges = 0;\n let totalOtherCharges = 0;\n\n const processedData = invoices.map((invoice) => {\n let totalValue = parseFloat(invoice.total_invoice_value) || 0;\n let paid = 0;\n let overdue = 0;\n let outstanding = 0;\n let row_colour = \"\"\n\n if (invoice.status == \"closed\") {\n paid = (parseFloat(invoice.disbursment_amount) || 0) + (parseFloat(invoice.realized_interest) || 0);\n row_colour = \"bg-success\";\n } else {\n if (invoice.principal_outstanding == invoice.principal_due) {\n overdue = parseFloat(invoice.principal_due) + parseFloat(invoice.outstanding_interest);\n } else {\n outstanding = parseFloat(invoice.principal_outstanding) + parseFloat(invoice.outstanding_interest);\n }\n }\n\n // Accumulate totals\n totalInvoiceValue += totalValue;\n totalDisbursementAmount += parseFloat(invoice.disbursment_amount) || 0;\n totalRealizedInterest += parseFloat(invoice.realized_interest) || 0;\n totalPrincipalOutstanding += parseFloat(invoice.principal_outstanding) || 0;\n totalPrincipalDue += parseFloat(invoice.principal_due) || 0;\n totalOutstandingInterest += parseFloat(invoice.outstanding_interest) || 0;\n totalLatePaymentCharges += parseFloat(invoice.late_payment_charges) || 0;\n totalOtherCharges += parseFloat(invoice.other_charges) || 0;\n document.getElementById('total_payable').innerHTML = \"

Total Payable: \" + parseFloat(totalPrincipalOutstanding + totalOutstandingInterest).toFixed(2) + \"

\";\n return {\n invoice_no: invoice.invoice_no || \"N/A\",\n invoice_date: this.formatDateToIST(invoice.invoice_date),\n due_date: this.formatDateToIST(invoice.due_date),\n status: Utils.snakeToTitleCase(invoice.status),\n total_invoice_value: totalValue.toFixed(2),\n disbursment_amount: (parseFloat(invoice.disbursment_amount) || 0).toFixed(2),\n realized_interest: (parseFloat(invoice.realized_interest) || 0).toFixed(2),\n principal_outstanding: (parseFloat(invoice.principal_outstanding) || 0).toFixed(2),\n principal_due: (parseFloat(invoice.principal_due) || 0).toFixed(2),\n outstanding_interest: (parseFloat(invoice.outstanding_interest) || 0).toFixed(2),\n late_payment_charges: (parseFloat(invoice.late_payment_charges) || 0).toFixed(2),\n other_charges: (parseFloat(invoice.other_charges) || 0).toFixed(2),\n row_colour: row_colour,\n disbursment_date: this.formatDateToIST(invoice.disbursment_date)\n };\n });\n\n // Calculate the remaining amount\n totalRemainingAmount = totalInvoiceValue - totalAmountPaid;\n\n const template = document.getElementById(\"details-loan-transaction-tmpl\").innerHTML;\n const renderedHtml = Mustache.render(template, {\n invoices: processedData,\n total: {\n total_invoice_value: totalInvoiceValue.toFixed(2),\n amount_paid: totalAmountPaid.toFixed(2),\n remaining_amount: totalRemainingAmount.toFixed(2),\n disbursment_amount: totalDisbursementAmount.toFixed(2),\n realized_interest: totalRealizedInterest.toFixed(2),\n principal_outstanding: totalPrincipalOutstanding.toFixed(2),\n principal_due: totalPrincipalDue.toFixed(2),\n outstanding_interest: totalOutstandingInterest.toFixed(2),\n late_payment_charges: totalLatePaymentCharges.toFixed(2),\n other_charges: totalOtherCharges.toFixed(2)\n },\n });\n document.getElementById(\"details_loan_transactions\").innerHTML = renderedHtml;\n }\n\n\n renderTransactionDetails(transactions) {\n let totalTransactionAmount = 0;\n\n const processedData = transactions.map((transaction) => {\n const amount = parseFloat(transaction.transaction_amount) || 0;\n totalTransactionAmount += amount;\n\n return {\n van: transaction.van || \"N/A\",\n transaction_date: this.formatDateToIST(transaction.transaction_date),\n transaction_amount: amount.toFixed(2),\n payment_mode: transaction.payment_mode || \"-\",\n utr_number: transaction.utr_number || \"-\",\n collection_bank_name: transaction.collection_bank_name || \"-\",\n collection_bank_account_no:\n transaction.collection_bank_account_no || \"-\",\n };\n });\n\n const template = document.getElementById(\"details-receipt-transaction-tmpl\")\n .innerHTML;\n const renderedHtml = Mustache.render(template, {\n transactions: processedData,\n total: {\n transaction_amount: totalTransactionAmount.toFixed(2),\n },\n });\n document.getElementById(\"details_transactions\").innerHTML = renderedHtml;\n }\n\n renderNoData() {\n const template = document.getElementById(\"no-data-tmpl\").innerHTML;\n const renderedHtml = Mustache.render(template);\n document.getElementById(\"details_loan_transactions\").innerHTML =\n renderedHtml;\n }\n\n renderNoTransactionData() {\n const template = document.getElementById(\"no-transaction-data-tmpl\")\n .innerHTML;\n const renderedHtml = Mustache.render(template);\n document.getElementById(\"details_transactions\").innerHTML = renderedHtml;\n }\n}\n\nclass SalesPerson {\n constructor() {\n let scf_application_id = document.getElementById(\"scf_application_id\").value;\n\n document.getElementById(\"changeSalesPersonButton\").addEventListener(\"click\", function () {\n const endpoint = '/scf/api/application/sales-managers';\n const dropdown = document.getElementById(\"sales_person_change\");\n dropdown.innerHTML = '';\n\n Utils.requestHandler(endpoint, Constants.REQUEST.get)\n .then((response) => {\n if (!response.data.length) {\n dropdown.innerHTML = '';\n return;\n }\n\n dropdown.innerHTML = '';\n\n const template = document.getElementById(\"sales-person-tmpl-option\").innerHTML;\n\n response.data.forEach((data) => {\n const renderedOption = Mustache.render(template, data);\n dropdown.innerHTML += renderedOption;\n });\n })\n .catch((error) => {\n console.error(\"Error fetching sales managers:\", error);\n dropdown.innerHTML = '';\n });\n });\n\n document.getElementById(\"save-sales-manager\").addEventListener(\"click\", function () {\n const selectedSalesPersonId = document.getElementById(\"sales_person_change\").value;\n\n if (!selectedSalesPersonId) {\n alert(\"Please select a sales person.\");\n return;\n }\n const postEndpoint = '/scf/api/application/' + scf_application_id + '/tag-sales-manager';\n const payload = { sales_manager_id: selectedSalesPersonId, scf_application_id: scf_application_id };\n\n\n Utils.requestHandler(postEndpoint, Constants.REQUEST.post, payload)\n .then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n \"Success\",\n \"Sales Person changed successfully.\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.errors.sales_manager || \"Can't tag the sales person\",\n Constants.TOAST.error\n );\n }\n })\n .catch(function (error) {\n console.error(\"Error changing sales person:\", error);\n Utils.showToast(\n \"Error\",\n \"An error occurred while changing the sales person. Please try again.\",\n Constants.TOAST.error\n );\n });\n });\n }\n}\nclass TagBranch {\n constructor() {\n let scf_application_id = document.getElementById(\"scf_application_id\").value;\n\n document.getElementById(\"branchButton\").addEventListener(\"click\", function () {\n const endpoint = '/scf/api/branch/all';\n const dropdown = document.getElementById(\"tag_branch_to_app\");\n dropdown.innerHTML = '';\n\n Utils.requestHandler(endpoint, Constants.REQUEST.get)\n .then((response) => {\n if (!response.data.branch.length) {\n dropdown.innerHTML = '';\n return;\n }\n\n dropdown.innerHTML = '';\n\n const template = document.getElementById(\"branch-tmpl-option\").innerHTML;\n\n response.data.branch.forEach((data) => {\n const renderedOption = Mustache.render(template, data);\n dropdown.innerHTML += renderedOption;\n });\n })\n .catch((error) => {\n console.error(\"Error fetching branches:\", error);\n dropdown.innerHTML = '';\n });\n });\n\n document.getElementById(\"save-application-branch\").addEventListener(\"click\", function () {\n const selectedBranchId = document.getElementById(\"tag_branch_to_app\").value;\n\n if (!selectedBranchId) {\n alert(\"Please select a sales person.\");\n return;\n }\n const postEndpoint = '/scf/api/application/' + scf_application_id + '/tag-branch ';\n const payload = { branch_id: selectedBranchId, scf_application_id: scf_application_id };\n\n\n Utils.requestHandler(postEndpoint, Constants.REQUEST.post, payload)\n .then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n \"Success\",\n \"Branch tagged successfully.\",\n Constants.TOAST.success\n );\n document.getElementById('btn-branch-modal-close').click();\n } else {\n Utils.showToast(\n response.errors.sales_manager || \"Can't tag the branch\",\n Constants.TOAST.error\n );\n }\n })\n .catch(function (error) {\n console.error(\"Error tagging branch:\", error);\n Utils.showToast(\n \"Error\",\n \"An error occurred while tagging branch. Please try again.\",\n Constants.TOAST.error\n );\n });\n });\n }\n}\n","import { DocumentUtils, Utils } from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\nimport Mustache from 'mustache';\n\nexport class AllAnchorsList {\n constructor() {\n Utils.pageSanityHandler();\n }\n\n\n\n validateValues(){\n let pass = true;\n if(!this.anchor_id){\n Utils.showInputError(this.elem_anchor_id, 'Anchor is mandatory');\n pass = false;\n }\n if(!this.program_id){\n Utils.showInputError(this.elem_program_id, 'Program is mandatory');\n pass = false;\n }\n if(!this.uploaded_file){\n Utils.showInputError(this.elem_uploaded_file, 'File is mandatory');\n pass = false;\n }\n \n return pass;\n }\n\n handler() {\n this.fetchAllAnchorsList();\n }\n\n fetchAllAnchorsList(){\n let that = this;\n Utils.requestHandler('/anchor/api/applicant/get-anchors-list', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' ){\n that.renderAnchorTable(response);\n }\n }) \n }\n\n renderAnchorTable(response) {\n let tmpl = document.getElementById(\"app-anchor-row-tmpl\");\n let dx = document.getElementById(\"tb_anchor_details\");\n dx.innerHTML = null;\n response.data.anchors.forEach(function (dd) {\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n }\n}","import { DocumentUtils, Utils } from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\nimport Mustache from 'mustache';\n\nexport class AnchorApplications {\n constructor() {\n Utils.pageSanityHandler();\n }\n\n handler() {\n this.dtHandler();\n }\n\n mainTableTransformer(data) {\n data.application_details_link = \"/scf/application/details/\" + data.id;\n data.product = Utils.capitalizeFirstLetter(\n data.product.split(\"_\").join(\" \")\n );\n data.required_amount = data.required_amount.toLocaleString(\"en-IN\");\n data.formatted_created_at = Utils.formatTime(data.created_at);\n data.created_at_ago = Utils.formatTimeRelative(data.created_at);\n data.formatted_updated_at = Utils.formatTimeRelative(data.updated_at);\n data.formatted_created_at = Utils.formatTimeRelative(data.created_at);\n data.status_human = Utils.capitalizeFirstLetter(\n data.status.split(\"_\").join(\" \")\n );\n if(data.trade_name != null){\n data.business_applicant_name = data.trade_name;\n }\n return data;\n }\n\n dtHandler() {\n let table_container_id = \"#dt-table-anchor-applications\";\n let dt_instance = Utils.renderDataTable(table_container_id + \"> table\");\n let currentUrl = window.location.href;\n let match = currentUrl.match(/\\/anchor\\/anchor-applicant\\/([^\\/]+)\\/all_applications/);\n let anchor_id = match ? match[1] : '';\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n \"/anchor/api/applicant/\" + anchor_id + \"/all_applications\",\n Constants.REQUEST.get,\n {},\n \"dt-main-tmpl\",\n this.mainTableTransformer,\n \"data\",\n {\n business_application_id: \"Application ID\",\n business_applicant_name: \"Applicant\",\n }\n );\n }\n}","import { DocumentUtils, Utils } from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\nimport Mustache from 'mustache';\n\nexport class AnchorBorrower {\n constructor() {\n Utils.pageSanityHandler();\n this.elem_anchor_id = document.getElementById('select_anchor_borrower');\n this.elem_anchor_id.addEventListener('input', function (){\n Utils.reInput(this);\n })\n }\n\n handler() {\n this.fetchAllAnchorsList();\n this.renderAnchorTable();\n }\n\n fetchAllAnchorsList(){\n let that = this;\n Utils.requestHandler('/anchor/api/applicant/get-anchors-list', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' ){\n let selectField = that.elem_anchor_id;\n \n while (selectField.options.length > 1) {\n selectField.remove(1);\n }\n \n response.data.anchors.forEach(anchor => {\n let option = document.createElement('option');\n option.value = anchor.id;\n option.text = anchor.name;\n selectField.add(option);\n });\n }\n }) \n }\n\n renderAnchorTable() {\n document.getElementById('select_anchor_borrower').addEventListener('change', function(){\n let body = {\n anchor_applicant_id: document.getElementById('select_anchor_borrower').value\n }\n Utils.requestHandler('/anchor/api/anchor_leads_lot/'+ document.getElementById('select_anchor_borrower').value +'/lead-lot-applicants', Constants.REQUEST.get, body)\n .then(function (response){\n if(response.message === 'OK' ){\n let tmpl = document.getElementById(\"app-anchor-business-applicant-row-tmpl\");\n let dx = document.getElementById(\"tb_anchor_business_applicant_details\");\n dx.innerHTML = null;\n response.data.applicants.forEach(function (dd) {\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n }\n else{\n let tmpl = document.getElementById(\"app-anchor-business-applicant-row-tmpl\");\n let dx = document.getElementById(\"tb_anchor_business_applicant_details\");\n dx.innerHTML = `\n \n \n No Anchor Data Found.\n \n \n `;\n }\n });\n })\n }\n}","import { DocumentUtils, Utils } from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\nimport Mustache from 'mustache';\n\nexport class LeadsLotDetails {\n constructor() {\n Utils.pageSanityHandler();\n this.anchor_leads_lot_id = document.getElementById('anchor_leads_lot_id').value\n }\n\n handler() {\n this.fetchLeadsLotDetails();\n this.dtHandler();\n }\n\n\n mainTableTransformer(data) {\n data.application_details_link = \"/scf/application/details/\" + data.id;\n data.product = Utils.capitalizeFirstLetter(\n data.product.split(\"_\").join(\" \")\n );\n data.required_amount = data.required_amount.toLocaleString(\"en-IN\");\n data.formatted_created_at = Utils.formatTime(data.created_at);\n data.created_at_ago = Utils.formatTimeRelative(data.created_at);\n data.formatted_updated_at = Utils.formatTimeRelative(data.updated_at);\n data.formatted_created_at = Utils.formatTimeRelative(data.created_at);\n data.status_human = Utils.capitalizeFirstLetter(\n data.status.split(\"_\").join(\" \")\n );\n if(data.trade_name != null){\n data.business_applicant_name = data.trade_name;\n }\n return data;\n }\n\n dtHandler() {\n let table_container_id = \"#dt-table-anchor-applications\";\n let dt_instance = Utils.renderDataTable(table_container_id + \"> table\");\n\n Utils.initializeDataTable(\n table_container_id,\n dt_instance,\n \"/anchor/api/anchor_leads_lot/\" + this.anchor_leads_lot_id + \"/all-applications\",\n Constants.REQUEST.get,\n {},\n \"dt-main-tmpl\",\n this.mainTableTransformer,\n \"data\",\n {\n business_application_id: \"Application ID\",\n business_applicant_name: \"Applicant\",\n }\n );\n } \n\n fetchLeadsLotDetails(){\n let that = this;\n Utils.requestHandler('/anchor/api/anchor_leads_lot/' + that.anchor_leads_lot_id, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' ){\n that.renderBusinessApplicantTable(response);\n that.renderUsersTable(response);\n }\n }) \n }\n\n renderUsersTable(response) {\n let tmpl = document.getElementById(\"app-anchor-user-row-tmpl\");\n let dx = document.getElementById(\"tb_anchor_users\");\n dx.innerHTML = null;\n response.data.users.forEach(function (dd) {\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n }\n\n renderBusinessApplicantTable(response) {\n let tmpl = document.getElementById(\"app-anchor-business-applicant-row-tmpl\");\n let dx = document.getElementById(\"tb_anchor_business_applicant_details\");\n dx.innerHTML = null;\n response.data.business_applicants.forEach(function (dd) {\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n }\n}","import { DocumentUtils, Utils } from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\nimport Mustache from 'mustache';\n\nexport class AnchorNewInvoicesLot {\n constructor() {\n Utils.pageSanityHandler();\n this.anchor_id = null;\n this.program = null;\n this.uploaded_file = null;\n\n this.elem_anchor_id = document.getElementById('select_anchor');\n this.elem_program = document.getElementById('select_program');\n this.elem_uploaded_file = document.getElementById('anchor_lead_lot_upload');\n\n this.elem_anchor_id.addEventListener('input', function (){\n Utils.reInput(this);\n })\n\n this.elem_program.addEventListener('input', function (){\n Utils.reInput(this);\n })\n\n this.elem_uploaded_file.addEventListener('input', function (){\n Utils.reInput(this);\n })\n }\n\n setValues(){\n Utils.setter(this.elem_anchor_id, this.anchor_id);\n Utils.setter(this.elem_program, this.program);\n Utils.setter(this.elem_uploaded_file, this.uploaded_file);\n }\n\n getValues(){\n this.anchor_id = Utils.getter(this.elem_anchor_id);\n this.program = Utils.getter(this.elem_program);\n this.uploaded_file = Utils.getter(this.elem_uploaded_file);\n }\n\n validateValues(){\n let pass = true;\n if(!this.anchor_id){\n Utils.showInputError(this.elem_anchor_id, 'Anchor is mandatory');\n pass = false;\n }\n if(!this.program){\n Utils.showInputError(this.elem_program, 'program is mandatory');\n pass = false;\n }\n if(!this.uploaded_file){\n Utils.showInputError(this.elem_uploaded_file, 'File is mandatory');\n pass = false;\n }\n \n return pass;\n }\n\n handler() {\n this.fetchAllAnchorsList();\n this.submitAnchorInvoicesLot();\n this.fetchAllPrograms();\n }\n\n fetchAllPrograms(){\n let that = this;\n Utils.requestHandler('/scf/api/program/anchor-programs', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' ){\n let selectField = that.elem_program;\n \n while (selectField.options.length > 1) {\n selectField.remove(1);\n }\n \n response.data.program.forEach(program => {\n let option = document.createElement('option');\n option.value = program.id;\n option.text = program.name;\n selectField.add(option);\n });\n }\n }) \n }\n\n fetchAllAnchorsList(){\n let that = this;\n Utils.requestHandler('/anchor/api/applicant/get-anchors-list', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' ){\n let selectField = that.elem_anchor_id;\n \n while (selectField.options.length > 1) {\n selectField.remove(1);\n }\n \n response.data.anchors.forEach(anchor => {\n let option = document.createElement('option');\n option.value = anchor.id;\n option.text = anchor.name;\n selectField.add(option);\n });\n }\n }) \n }\n\n submitAnchorInvoicesLot() {\n const submitButton = document.getElementById('btn-submit-details');\n submitButton.addEventListener('click', () => {\n this.getValues();\n \n if (!this.validateValues()) {\n return; \n }\n \n const files = this.elem_uploaded_file.files;\n if (files.length === 0) {\n Utils.showToast(\n \"Not Found\",\n \"At least one file is mandatory\",\n Constants.TOAST.fail\n );\n return;\n }\n \n const fileData = new FormData();\n Array.from(files).forEach(file => {\n fileData.append(\"files[]\", file);\n });\n fileData.append(\"file_password\", null); // Consider removing or securely handling password\n fileData.append(\"file_code\", \"anchor_leads_csv\");\n fileData.append(\"anchor_id\", this.anchor_id);\n fileData.append(\"program_id\", this.program);\n \n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n \n Utils.requestHandler('/anchor/api/anchor_invoices_lot/new', Constants.REQUEST.post, fileData)\n .then(response => {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n if (response.message === 'OK') {\n Utils.showToast(response.message, response.data.message, Constants.TOAST.success);\n submitButton.disabled = true;\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .catch(error => {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n Utils.showToast(\"Error\", \"An error occurred while uploading the files.\", Constants.TOAST.fail);\n console.error('Upload error:', error);\n });\n });\n }\n \n\n}","import { DocumentUtils, Utils } from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\nimport Mustache from 'mustache';\n\nexport class AnchorNewLeadsLot {\n constructor() {\n Utils.pageSanityHandler();\n this.anchor_id = null;\n this.program_id = null;\n this.uploaded_file = null;\n\n this.elem_anchor_id = document.getElementById('select_anchor');\n this.elem_program_id = document.getElementById('select_program');\n this.elem_uploaded_file = document.getElementById('anchor_lead_lot_upload');\n\n this.elem_anchor_id.addEventListener('input', function (){\n Utils.reInput(this);\n })\n\n this.elem_program_id.addEventListener('input', function (){\n Utils.reInput(this);\n })\n\n this.elem_uploaded_file.addEventListener('input', function (){\n Utils.reInput(this);\n })\n }\n\n setValues(){\n Utils.setter(this.elem_anchor_id, this.anchor_id);\n Utils.setter(this.elem_program_id, this.program_id);\n Utils.setter(this.elem_uploaded_file, this.uploaded_file);\n }\n\n getValues(){\n this.anchor_id = Utils.getter(this.elem_anchor_id);\n this.program_id = Utils.getter(this.elem_program_id);\n this.uploaded_file = Utils.getter(this.elem_uploaded_file);\n }\n\n validateValues(){\n let pass = true;\n if(!this.anchor_id){\n Utils.showInputError(this.elem_anchor_id, 'Anchor is mandatory');\n pass = false;\n }\n if(!this.program_id){\n Utils.showInputError(this.elem_program_id, 'Program is mandatory');\n pass = false;\n }\n if(!this.uploaded_file){\n Utils.showInputError(this.elem_uploaded_file, 'File is mandatory');\n pass = false;\n }\n \n return pass;\n }\n\n handler() {\n this.fetchAllAnchorsList();\n this.submitAnchorLeadLot();\n this.fetchAllPrograms();\n this.renderAnchorLeadsLot()\n }\n\n fetchAllPrograms(){\n let that = this;\n Utils.requestHandler('/scf/api/program/anchor-programs', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' ){\n let selectField = that.elem_program_id;\n \n while (selectField.options.length > 1) {\n selectField.remove(1);\n }\n \n response.data.program.forEach(program => {\n let option = document.createElement('option');\n option.value = program.id;\n option.text = program.name;\n selectField.add(option);\n });\n }\n }) \n }\n\n\n fetchAllAnchorsList(){\n let that = this;\n Utils.requestHandler('/anchor/api/applicant/get-anchors-list', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' ){\n let selectField = that.elem_anchor_id;\n \n while (selectField.options.length > 1) {\n selectField.remove(1);\n }\n \n response.data.anchors.forEach(anchor => {\n let option = document.createElement('option');\n option.value = anchor.id;\n option.text = anchor.name;\n selectField.add(option);\n });\n that.renderAnchorTable(response);\n }\n }) \n }\n\n renderAnchorTable(response) {\n let tmpl = document.getElementById(\"app-anchor-row-tmpl\");\n let dx = document.getElementById(\"tb_anchor_details\");\n dx.innerHTML = null;\n response.data.anchors.forEach(function (dd) {\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n }\n\n renderAnchorLeadsLotTable(response) {\n let tmpl = document.getElementById(\"app-anchor-leads-lot-row-tmpl\");\n let dx = document.getElementById(\"tb_anchor_leads_lots\");\n dx.innerHTML = null;\n response.data.anchors.forEach(function (dd) {\n dd.anchor_leads_lot.created_at = Utils.formatDate(dd.anchor_leads_lot.created_at)\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n });\n }\n\n renderAnchorLeadsLot(){\n let that = this;\n let selectElement = document.getElementById('select_anchor');\n\n selectElement.addEventListener('change', function() {\n const selectedValue = this.value;\n that.getAnchorLeadsLot(selectedValue);\n });\n }\n\n getAnchorLeadsLot(anchor_leads_lot_id){\n let that = this;\n Utils.requestHandler('/anchor/api/anchor_leads_lots/' + anchor_leads_lot_id + '/get-leads-by-anchor-applicant', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' ){\n that.renderAnchorLeadsLotTable(response);\n }\n })\n }\n\n submitAnchorLeadLot(){\n let that = this;\n document.getElementById('btn-submit-details').addEventListener('click', function(){\n that.getValues();\n if(that.validateValues()){\n let file = that.elem_uploaded_file.files[0];\n if (!file) {\n Utils.showToast(\n \"Not Found\",\n \"File is mandatory\",\n Constants.TOAST.fail\n );\n return;\n }\n let fileData = new FormData();\n fileData.append(\"file_data\", file);\n fileData.append(\"file_name\", file.name);\n fileData.append(\"file_password\", null);\n fileData.append(\"file_code\", \"anchor_leads_csv\");\n fileData.append(\"anchor_id\", that.anchor_id);\n fileData.append(\"program_id\", that.program_id);\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler('/anchor/api/anchor_leads_lot/new', Constants.REQUEST.post, fileData)\n .then(function (response){\n if(response.message === 'OK' ){\n Utils.showToast(\n \"Success\",\n \"Data Upload Stated\",\n Constants.TOAST.success\n );\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n document.getElementById('btn-submit-details').disabled = true;\n }else {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }) \n } \n });\n }\n\n}","import { Utils } from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\nexport class ScfSignIn {\n\n constructor() {\n\n this.email = null;\n this.password = null;\n this.otp = null;\n\n this.new_password = null;\n this.confirm_password = null;\n\n this.forgot_password_modal = new bootstrap.Modal(document.getElementById('forgot_password_modal'), {});\n this.fp_email = null;\n\n this.elem_email = document.getElementById('user-email');\n this.elem_password = document.getElementById('user-password');\n this.elem_otp = document.getElementById('user-otp');\n\n this.elem_new_password = document.getElementById('new-user-password');\n this.elem_confirm_password = document.getElementById('confirm-user-password')\n document.getElementById('show-hide-password').addEventListener('change',()=> {\n this.hiddeShowPasswordSignIn();\n });\n\n this.elem_fp_email = document.getElementById('fp-user-email')\n\n this.btn_sign_in = document.getElementById('btn-sign-in');\n\n this.btn_sign_up = document.getElementById('btn-sign-up');\n }\n\n getValues() {\n this.email = Utils.getter(this.elem_email);\n this.password = Utils.getter(this.elem_password);\n this.otp = Utils.getter(this.elem_otp);\n }\n\n hiddeShowPasswordSignIn() {\n var x = document.getElementById(\"user-password\");\n if (x.type === \"password\") {\n x.type = \"text\";\n } else {\n x.type = \"password\";\n }\n }\n\n validateValues(validateOtp = false) {\n let pass = true;\n if (!Utils.validatorEmail(this.email)) {\n Utils.showInputError(this.elem_email, 'Incorrect email address');\n pass = false;\n }\n if (!this.password) {\n Utils.showInputError(this.elem_password, 'Password is mandatory');\n pass = false;\n }\n\n if (validateOtp) {\n if (!this.otp) {\n Utils.showInputError(this.elem_otp, 'OTP is mandatory');\n pass = false;\n }\n }\n\n return pass;\n }\n\n passwordChangeValidateValues() {\n let pass = true;\n if (!this.new_password) {\n Utils.showInputError(this.elem_new_password, 'New password is mandatory');\n pass = false;\n }\n\n if (!this.confirm_password) {\n Utils.showInputError(this.elem_confirm_password, 'Confirm password is mandatory');\n pass = false;\n }\n\n if (this.new_password && this.confirm_password && this.new_password != this.confirm_password) {\n Utils.showInputError(this.elem_confirm_password, \"Passwords don't not match\");\n pass = false;\n }\n\n return pass;\n }\n\n passwordChangeGetValues() {\n this.new_password = Utils.getter(this.elem_new_password);\n this.confirm_password = Utils.getter(this.elem_confirm_password);\n }\n\n forgotPasswordValidateValues() {\n let pass = true;\n if (!Utils.validatorEmail(this.fp_email)) {\n Utils.showInputError(this.elem_fp_email, 'Incorrect email address');\n pass = false;\n }\n\n return pass;\n }\n\n forgotPasswordGetValues() {\n this.fp_email = Utils.getter(this.elem_fp_email);\n }\n \n handler() {\n let that = this;\n this.signIn();\n this.changePassword();\n this.validateOtp();\n this.reCaptchaHandler();\n\n document.getElementById('forgot_password').addEventListener('click', function () {\n that.forgot_password_modal.show();\n })\n\n this.sendNewPassword();\n }\n\n static logoutHandler() {\n ScfSignIn.logout();\n }\n\n static logout() {\n let elem = document.getElementById('logout');\n if (elem) {\n document.getElementById('logout').addEventListener('click', function () {\n Utils.requestHandler('/core/api/authentication/logout', Constants.REQUEST.post, {})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.deleteCookie('_alf-permissions');\n Utils.deleteCookie('_alf-session-id');\n Utils.deleteCookie('_alf-user-id');\n localStorage.removeItem('user_id');\n localStorage.removeItem('business_applicant_id');\n localStorage.removeItem('pan');\n localStorage.removeItem('pan_name');\n window.location = '/scf/'\n Utils.showToast(response.message, 'Logout successful', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n }\n\n reCaptchaHandler() {\n\n }\n\n signIn() {\n let that = this;\n document.getElementById('btn-sign-in').addEventListener('click', function () {\n that.getValues();\n if (that.validateValues) {\n that.signInHandler();\n }\n })\n\n document.getElementById('btn-resend-otp').addEventListener('click', function () {\n that.getValues();\n if (that.validateValues) {\n that.signInHandler();\n }\n })\n }\n\n signInHandler() {\n var captchaResponse = grecaptcha.getResponse();\n if (captchaResponse.length <= 0) {\n Utils.showToast(\"Invalid\", \"Captcha is mandatory\", Constants.TOAST.fail);\n return false\n }\n\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let that = this;\n let body = {\n email: that.email,\n password: that.password,\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n req_type: \"post\"\n }\n Utils.requestHandler('/core/api/authentication/sign-in/email', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n if (response.data.redirect) {\n that.passwordChangeComponent();\n Utils.showToast(response.message, 'Please change your password', Constants.TOAST.success);\n } else if (response.data.otp) {\n that.otpComponent();\n Utils.showToast(response.message, 'OTP sent to verified Mail & Mobile', Constants.TOAST.success);\n }\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n that.elem_email.addEventListener('input', function () {\n Utils.reInput(this);\n })\n that.elem_password.addEventListener('input', function () {\n Utils.reInput(this);\n })\n }\n\n otpComponent(show = true) {\n if (show) {\n document.querySelectorAll('.pre-sign-in').forEach(elem => {\n elem.disabled = true;\n })\n\n document.querySelectorAll('.otp-sign-in').forEach(elem => {\n elem.classList.remove('no-display');\n })\n } else {\n document.querySelectorAll('.pre-sign-in').forEach(elem => {\n elem.disabled = false;\n })\n\n document.querySelectorAll('.otp-sign-in').forEach(elem => {\n elem.classList.add('no-display');\n })\n }\n\n }\n\n validateOtp() {\n var current_env = process.env.NODE_ENV || 'development';\n let that = this;\n\n document.getElementById('btn-validate-otp').addEventListener('click', function () {\n that.getValues();\n\n if (current_env == \"development\") {\n if (that.otp != \"12345\") {\n alert(\"Invalid otp for dev environment\");\n return false;\n }\n }\n\n if (that.validateValues(true)) {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler('/core/api/authentication/validate/otp', Constants.REQUEST.post, { email: that.email, password: that.password, otp: that.otp })\n .then(function (response) {\n if (response.message === 'OK') {\n localStorage.setItem('user_id', response.data.user_id)\n localStorage.setItem('business_applicant_id', response.data.business_applicant_id)\n localStorage.setItem('pan', response.data.pan)\n localStorage.setItem('pan_name', response.data.pan_name)\n that.userLoginRedirection(response);\n Utils.saveCookie('_alf-permissions', response.data.permissions);\n Utils.saveCookie('_alf-session-id', response.data.session_id);\n Utils.saveCookie('_alf-user-id', response.data.user_id);\n Utils.showToast(response.message, 'Verified successfully', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n }\n })\n }\n\n userLoginRedirection(response) {\n if (response && response.data.scf_application_present == false) {\n window.location = '/scf/application/onboarding'\n } else {\n window.location = '/scf/application'\n }\n }\n\n passwordChangeComponent(show = true) {\n if (show) {\n document.querySelectorAll('.div-sign-in').forEach(elem => {\n elem.classList.add('no-display');\n })\n\n document.querySelectorAll('.password-change').forEach(elem => {\n elem.classList.remove('no-display')\n })\n } else {\n document.querySelectorAll('.div-sign-in').forEach(elem => {\n elem.classList.remove('no-display');\n })\n\n document.querySelectorAll('.password-change').forEach(elem => {\n elem.classList.add('no-display')\n })\n }\n }\n\n changePassword() {\n let that = this;\n document.getElementById('btn-change-password').addEventListener('click', function () {\n\n that.passwordChangeGetValues();\n if (that.passwordChangeValidateValues()) {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let body = {\n email: that.email, \n old_password: that.password, \n new_password: that.new_password,\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n req_type: \"post\"\n }\n Utils.requestHandler('/core/api/authentication/change/password', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n that.passwordChangeComponent(false);\n that.otpComponent(false);\n Utils.showToast(response.message, 'Password Changed', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n }\n\n })\n }\n\n sendNewPassword() {\n let that = this;\n document.getElementById('btn-fp-link').addEventListener('click', function () {\n that.forgotPasswordGetValues();\n if (that.forgotPasswordValidateValues()) {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let body = {\n email: that.fp_email,\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n req_type: \"post\"\n }\n Utils.requestHandler('/core/api/authentication/forgot/password', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n that.forgot_password_modal.hide();\n Utils.showToast(response.message, 'Password sent to registered mail', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n }\n })\n }\n\n}\n\nexport class ScfPermission {\n\n static isScfAdmin() {\n let perms = Utils.readCookie('_alf-permissions')\n if (perms) {\n return perms.split(\",\").includes(\"scf_admin\");\n }\n return false\n }\n\n static isInvoiceUploader() {\n let perms = Utils.readCookie('_alf-permissions')\n if (perms) {\n return perms.split(\",\").includes(\"invoice_uploader\");\n }\n return false\n }\n\n static isScfBorrower() {\n let perms = Utils.readCookie('_alf-permissions')\n if (perms) {\n return perms.split(\",\").includes(\"scf_borrower\");\n }\n return false\n }\n\n static isScfCounterparty() {\n let perms = Utils.readCookie('_alf-permissions')\n if (perms) {\n return perms.split(\",\").includes(\"scf_counterparty\");\n }\n return false\n }\n\n static isScfCredit() {\n let perms = Utils.readCookie('_alf-permissions')\n if (perms) {\n return perms.split(\",\").includes(\"scf_credit\");\n }\n return false\n }\n\n static isScfSuperAdmin() {\n let perms = Utils.readCookie('_alf-permissions')\n if (perms) {\n return perms.split(\",\").includes(\"scf_super_admin\");\n }\n return false\n }\n\n static isScfLender() {\n let perms = Utils.readCookie('_alf-permissions')\n if (perms) {\n return perms.split(\",\").includes(\"scf_lender\");\n }\n return false\n }\n\n static isScfSales() {\n let perms = Utils.readCookie('_alf-permissions')\n if (perms) {\n return perms.split(\",\").includes(\"scf_sales\");\n }\n return false\n }\n\n}\n\nexport class ScfSignUp {\n\n constructor() {\n this.email = null;\n this.mobile = null;\n this.password = null;\n this.mobile_otp = null;\n this.email_otp = null;\n this.password_conf = null;\n this.tnc = null;\n this.tnc2 = null;\n this.pan = null;\n this.business_name = null;\n this.elem_pan = document.getElementById(\"company_pan\");\n this.elem_email = document.getElementById('user_email');\n this.elem_business_name = document.getElementById('business_name');\n this.elem_mobile = document.getElementById('user_mobile');\n this.elem_mobile_otp = document.getElementById('user_mobile_otp');\n this.elem_email_otp = document.getElementById('user_email_otp');\n this.elem_password = document.getElementById('user_password');\n this.elem_password_confirmation = document.getElementById('user_password_confirmation');\n this.elem_tnc = document.getElementById('tnc');\n this.elem_tnc2 = document.getElementById('tnc2');\n this.elem_pan.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_password.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_mobile.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_mobile_otp.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_email.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_email_otp.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_password.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_password_confirmation.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_tnc.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_tnc2.addEventListener('input', function () {\n Utils.reInput(this);\n })\n }\n\n getValues() {\n this.pan = Utils.getter(this.elem_pan)\n this.email = Utils.getter(this.elem_email) == null ? \"\" : Utils.getter(this.elem_email).toLowerCase();\n this.mobile = Utils.getter(this.elem_mobile);\n this.mobile_otp = Utils.capitalizeFirstLetter(Utils.getter(this.elem_mobile_otp));\n this.email_otp = Utils.capitalizeFirstLetter(Utils.getter(this.elem_email_otp));\n this.password = Utils.getter(this.elem_password);\n this.password_conf = Utils.getter(this.elem_password_confirmation);\n this.tnc = this.elem_tnc.checked\n this.tnc2 = this.elem_tnc2.checked\n }\n\n setValues() {\n Utils.setter(this.elem_email, this.email);\n Utils.setter(this.elem_mobile, this.mobile);\n Utils.setter(this.elem_mobile_otp, this.mobile_otp);\n Utils.setter(this.elem_email_otp, this.email_otp);\n Utils.setter(this.elem_password, this.password);\n Utils.setter(this.elem_password_confirmation, this.password_conf);\n Utils.setter(this.elem_tnc, this.tnc);\n Utils.setter(this.elem_tnc2, this.tnc2);\n return true;\n }\n\n validateValues() {\n let pass = true;\n if (!this.email) {\n Utils.showInputError(this.elem_email, 'Email is mandatory');\n pass = false;\n } else if (!Utils.validatorEmail(this.email)) {\n Utils.showInputError(this.elem_email, 'Incorrect email');\n pass = false;\n }\n if (!this.pan) {\n Utils.showInputError(this.elem_pan, 'PAN is mandatory');\n pass = false;\n } else if (!Utils.validatorPan(this.pan)) {\n Utils.showInputError(this.elem_pan, 'Incorrect PAN');\n pass = false;\n }\n if (!this.mobile) {\n Utils.showInputError(this.elem_mobile, 'Mobile is mandatory');\n pass = false;\n } else if (!Utils.validatorMobile(this.mobile)) {\n Utils.showInputError(this.elem_mobile, 'Incorrect mobile number');\n pass = false;\n }\n if (!this.mobile_otp) {\n Utils.showInputError(this.elem_mobile_otp, 'Please enter OTP');\n pass = false;\n }\n if (!this.email_otp) {\n Utils.showInputError(this.elem_email_otp, 'Please enter OTP');\n pass = false;\n }\n if (!this.password) {\n Utils.showInputError(this.elem_password, 'Password is mandatory');\n pass = false;\n }\n if (this.password != this.password_conf) {\n Utils.showInputError(this.elem_password_confirmation, 'Password not matching');\n pass = false;\n }\n if (!this.tnc) {\n Utils.showInputError(this.elem_tnc, 'Please aggree to the tnc');\n pass = false;\n }\n return pass;\n }\n hiddeShowPasswordSignup() {\n var x = document.getElementById(\"user_password\");\n var y = document.getElementById(\"user_password_confirmation\");\n if (x.type === \"password\" && y.type === \"password\") {\n x.type = \"text\";\n y.type = \"text\";\n } else {\n x.type = \"password\";\n y.type = \"password\";\n }\n }\n\n handler() {\n this.userPanelHandler();\n };\n\n userPanelHandler() {\n let that = this;\n document.getElementById('btn-sign-up').addEventListener('click', function () {\n that.getValues();\n const elem_btn = this;\n if (that.validateValues()) {\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.show);\n let body = {\n pan: that.pan,\n pan_name: that.elem_business_name.value,\n mobile_otp: that.elem_mobile_otp.value,\n email_otp: that.elem_email_otp.value,\n email: that.email,\n mobile: that.mobile,\n password: that.password,\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n req_type: \"post\"\n }\n Utils.requestHandler('/scf/api/onboarding/user/', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n that.user_id = response.data.id;\n window.location = '/scf/'\n Utils.showToast('Created', 'User created', Constants.TOAST.success);\n // that.panelActiveComplete('panel-sign-up');\n // that.proceedNext();\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .then(function () {\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n })\n }\n })\n document.getElementById('show-hide-password').addEventListener('change', function () {\n that.hiddeShowPasswordSignup();\n })\n const inputField = that.elem_pan; \n inputField.addEventListener('input', function () {\n this.value = this.value.toLowerCase();\n that.elem_business_name.value = \"\";\n });\n // Add a focusout event listener to the input field\n inputField.addEventListener('focusout', function () {\n that.getValues();\n if (Utils.validatorPan(that.pan)) {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler('/scf/api/onboarding/name/' + that.pan, Constants.REQUEST.get, {})\n .then(function (response) {\n if (response.message === 'OK') {\n if (response.data.full_name) {\n that.elem_business_name.value = response.data.full_name;\n } else {\n Utils.showToast(response.message, 'No PAN matches this pattern', Constants.TOAST.fail);\n }\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide); \n })\n }\n else{\n Utils.showToast('Error', 'Invalid Pan Number', Constants.TOAST.fail);\n }\n });\n \n inputField.addEventListener('input', function () {\n that.elem_business_name.value = \"\";\n });\n\n const mobileOtpInputField = that.elem_mobile_otp;\n const sendMobileOtpButton = document.getElementById('send_mobile_otp_btn');\n const resendMobileOtpButton = document.getElementById('resend_mobile_otp_btn');\n\n const emailOtpInputField = that.elem_email_otp;\n const sendEmailOtpButton = document.getElementById('send_email_otp_btn');\n const resendEmailOtpButton = document.getElementById('resend_email_otp_btn');\n\n sendMobileOtpButton.addEventListener('click', function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let mobileOtpInputValue = document.getElementById('user_mobile').value;\n let that = this;\n if (Utils.validatorMobile(mobileOtpInputValue)) {\n Utils.requestHandler('/core/api/authentication/sign-up/send-sms-otp', Constants.REQUEST.post, {mobile_number: mobileOtpInputValue})\n .then(function (response) {\n if (response.message === 'OK') {\n sendMobileOtpButton.classList.add('no-display');\n mobileOtpInputField.classList.remove('no-display');\n resendMobileOtpButton.classList.remove('no-display');\n Utils.showToast(response.message, 'OTP Sent to Mobile', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, 'Unable to Send Mobile OTP', Constants.TOAST.fail);\n }\n });\n } else {\n Utils.showToast('Error', 'Incorrect Mobile Number', Constants.TOAST.fail);\n } \n Utils.loaderToast(Constants.ELEMENT_STATE.hide); \n })\n\n resendMobileOtpButton.addEventListener('click', function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let mobileOtpInputValue = document.getElementById('user_mobile').value;\n let that = this;\n if (Utils.validatorMobile(mobileOtpInputValue)) {\n Utils.requestHandler('/core/api/authentication/sign-up/send-sms-otp', Constants.REQUEST.post, {mobile_number: mobileOtpInputValue})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'OTP Sent to Mobile', Constants.TOAST.success); \n } else {\n Utils.showToast(response.message, 'Unable to Send Mobile OTP', Constants.TOAST.fail);\n }\n });\n } else {\n Utils.showToast('Error', 'Incorrect Mobile Number', Constants.TOAST.fail);\n } \n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n\n sendEmailOtpButton.addEventListener('click', function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let emailOtpInputValue = document.getElementById('user_email').value;\n let that = this;\n if (Utils.validatorEmail(emailOtpInputValue)) {\n let body = {\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n \"req_type\": \"post\",\n \"mail\": emailOtpInputValue\n }\n Utils.requestHandler('/core/api/authentication/sign-up/send-email-otp', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n sendEmailOtpButton.classList.add('no-display');\n emailOtpInputField.classList.remove('no-display');\n resendEmailOtpButton.classList.remove('no-display');\n Utils.showToast(response.message, 'OTP Sent to Email', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, 'Unable to Send Email OTP', Constants.TOAST.fail);\n }\n });\n } else {\n Utils.showToast('Error', 'Incorrect Email', Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide); \n })\n\n resendEmailOtpButton.addEventListener('click', function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let emailOtpInputValue = document.getElementById('user_email').value;\n let that = this;\n if (Utils.validatorEmail(emailOtpInputValue)) {\n let body = {\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n \"req_type\": \"post\",\n \"mail\": emailOtpInputValue\n }\n Utils.requestHandler('/core/api/authentication/sign-up/send-email-otp', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'OTP Sent to Email', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, 'Unable to Send Email OTP', Constants.TOAST.fail);\n }\n });\n } else { \n Utils.showToast('Error', 'Incorrect Email', Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide); \n })\n\n }\n}","import { Utils } from \"../core/utils\";\nimport * as Constants from \"../core/constants\";\n\nexport class SupportPage {\n constructor() {\n document.getElementById('supportSubmitBtn').addEventListener('click', (event) => {\n event.preventDefault();\n this.sendSupportEmailHandler();\n });\n\n document.getElementById('support-ticket').addEventListener('click', () => {\n this.goToDashBoardHandler();\n });\n }\n\n sendSupportEmailHandler() {\n const subject = document.getElementById('supportSubject').value;\n const message = document.getElementById('supportMessage').value;\n if (!subject && !message) {\n Utils.showToast('Error', 'Please enter both subject and message', Constants.TOAST.fail);\n return;\n }\n\n Utils.requestHandler('/scf/api/applicant/send-support-email', Constants.REQUEST.post, { subject, body: message })\n .then((response) => {\n if (response.message == 'OK') {\n Utils.showToast(response.message, 'Mail sent to support-team', Constants.TOAST.success);\n document.getElementById('supportSubject').value = \"\";\n document.getElementById('supportMessage').value = \"\";\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n }\n\n goToDashBoardHandler() {\n window.location.href = '/scf/application';\n }\n}\n","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nexport class ScfCounterPartyConfirmation {\n\n constructor() {\n this.obj_banking = [];\n this.counter_party_id = document.getElementById('counter_party_id').value;\n this.cp_name = document.getElementById('cp_name');\n }\n\n handler(){\n this.verify_token();\n }\n\n toggleConsentValue(){\n const checkbox = document.getElementById('cp_escrow_consent');\n \n checkbox.addEventListener('change', (event) => {\n if (event.target.checked) {\n event.target.value = \"CP_ESCROW_CONSENT\";\n } else {\n event.target.value = \"\";\n }\n });\n }\n\n verify_token(){\n let that = this;\n const urlParams = new URLSearchParams(window.location.search);\n const token = urlParams.get('token');\n let tmpl = document.getElementById('counter-party-bank-confirmation-tmpl');\n let rejectTmpl = document.getElementById('counter-party-bank-confirmation-reject-tmpl');\n let successTmpl = document.getElementById('counter-party-bank-confirmation-success-tmpl');\n let target = document.getElementById('cpBankDetailsConfirmationPage');\n if (token){\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id + \"/verify-banking-token\", Constants.REQUEST.post, {token: token})\n .then(function (response){\n if(response.data.valid_token == true){\n if (response.data.cp_confirmation_done == true && response.data.allowed == false){\n //Render Temp Already Submitted\n let rendered = Mustache.render(successTmpl.innerHTML, target);\n target.innerHTML = rendered\n }else{\n if (response.data.is_admin == true){\n //Render Temp Form\n if (confirm(\"Confimation done already, Still want to proceed?\")) {\n //Render Temp Form\n let rendered = Mustache.render(tmpl.innerHTML, target);\n target.innerHTML = rendered\n that.applicationDetailsHandler();\n that.BankingPanelHandler();\n that.toggleConsentValue();\n } else {\n window.close();\n }\n } else {\n //Render Temp Form\n let rendered = Mustache.render(tmpl.innerHTML, target);\n target.innerHTML = rendered\n that.applicationDetailsHandler();\n that.BankingPanelHandler();\n that.toggleConsentValue();\n } \n }\n }else {\n //Render Temp Form Invalid Token\n let rendered = Mustache.render(rejectTmpl.innerHTML, target);\n target.innerHTML = rendered\n }\n })\n } else {\n //Render Temp Form Invalid Token\n let rendered = Mustache.render(rejectTmpl.innerHTML, target);\n target.innerHTML = rendered\n }\n\n\n }\n\n\n BankingPanelHandler(){\n let that = this;\n that.editBankAccountsPanel();\n that.showBankingModal();\n that.bankingAddBankAccount();\n that.bankingValidateBankAccount();\n that.bankGetIfscDetails();\n that.bankAddBankAccount();\n that.submitCpConfirmation();\n that.setupVanCheckbox();\n that.Vanbank();\n }\n \n editBankAccountsPanel(){\n let that = this;\n Utils.requestHandler(\"/scf/api/counter_party/\" + that.counter_party_id + '/get-bank-accounts', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n response.data.bank_accounts.forEach(bank_account => {\n let abs_banking = new AbstractBanking(bank_account.id);\n abs_banking.account_number = bank_account.account_number;\n abs_banking.account_type = bank_account.account_type;\n abs_banking.account_holder = bank_account.primary_account_holder_name;\n abs_banking.verified_account_holder = bank_account.primary_account_holder_name;\n abs_banking.ifsc_code = bank_account.ifsc_code;\n abs_banking.bank_branch = bank_account.branch;\n abs_banking.bank_name = bank_account.bank_name;\n abs_banking.bank_micr = bank_account.micr_code;\n that.bankingSetupButtonIds(abs_banking.id);\n that.obj_banking.push(abs_banking);\n })\n that.bankRenderVerifiedAccounts();\n that.bankSelectFieldsHandler();\n // Utils.showToast('Fetched', 'Bank Accounts', Constants.TOAST.success);\n }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n showBankingModal(){\n let that = this;\n document.getElementById('btn_show_add_new_bank_account').addEventListener('click', function () {\n var modal = new bootstrap.Modal(document.getElementById('bankingList'), {});\n modal.show();\n document.getElementById('add_bank_ac').classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n document.getElementById('isvan').classList.remove('no-display');\n document.getElementById('btn-submit-isvan').classList.remove('no-display');\n });\n }\n\n bankingAddBankAccount(){\n let that = this;\n document.getElementById('add_bank_ac').addEventListener('click', function (){\n let abs_banking = new AbstractBanking(Math.random().toString(36));\n abs_banking.setValues();\n that.bankingSetupButtonIds(abs_banking.id);\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-validate-ifsc').classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.remove('no-display');\n document.getElementById('van_input_fields').classList.add('no-display');\n document.getElementById('isvan').classList.add('no-display');\n\n that.obj_banking.push(abs_banking);\n this.classList.add('no-display');\n })\n }\n\n bankingSetupButtonIds(btn_id){\n let bt1 = document.getElementById('btn-validate-account');\n bt1.setAttribute('data-id', btn_id);\n bt1.classList.add('no-display');\n let bt2 = document.getElementById('btn-submit-account');\n bt2.setAttribute('data-id', btn_id);\n bt1.classList.add('no-display');\n let bt3 = document.getElementById('btn-validate-ifsc')\n bt3.setAttribute('data-id', btn_id);\n bt3.classList.remove('no-display');\n }\n\n bankingValidateBankAccount(){\n let that = this;\n document.getElementById('btn-validate-account').addEventListener('click', function(){\n let abs_banking = null;\n let elm_btn = this;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n abs_banking.getValues();\n if(abs_banking.validateValues()){\n let body = {\n bank_ac_no: abs_banking.account_number,\n bank_ifsc: abs_banking.ifsc_code\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/counter_party/\" + that.counter_party_id + \"/validate/bank-account\", Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n if(response.data.status === 'active'){\n abs_banking.verified_account_holder = response.data.bank_ac_holder_name;\n abs_banking.setValues();\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-submit-account').classList.remove('no-display');\n Utils.showToast(response.message, 'Bank account validated', Constants.TOAST.success);\n }else{\n abs_banking.verified_account_holder = abs_banking.account_holder;\n abs_banking.setValues();\n // elm_btn.classList.add('no-display');\n // document.getElementById('btn-submit-account').classList.remove('no-display');\n Utils.showToast(\"Inactive\", \"Bank account is inactive\", Constants.TOAST.fail);\n }\n } else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n Utils.loaderToast(elm_btn, Constants.ELEMENT_STATE.hide);\n })\n } \n })\n }\n\n bankGetIfscDetails(){\n let that = this;\n document.getElementById('btn-validate-ifsc').addEventListener('click', function (){\n let abs_banking = null;\n let btn_elem = this;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n abs_banking.getValues();\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/counter_party/validate/bank-ifsc\", Constants.REQUEST.get, {bank_ifsc: abs_banking.ifsc_code})\n .then(function (response){\n if(response.message === 'OK'){\n abs_banking.ifsc_code = response.data.ifsc_data.ifsc;\n abs_banking.bank_micr = response.data.ifsc_data.micr;\n abs_banking.bank_name = response.data.ifsc_data.bank_name;\n abs_banking.bank_branch = response.data.ifsc_data.branch + \", \" + response.data.ifsc_data.city + \", \" + response.data.ifsc_data.state;\n Utils.setter(abs_banking.elem_ifsc_code, abs_banking.ifsc_code);\n Utils.setter(abs_banking.elem_bank_micr, abs_banking.bank_micr);\n Utils.setter(abs_banking.elem_bank_name, abs_banking.bank_name);\n Utils.setter(abs_banking.elem_bank_branch, abs_banking.bank_branch);\n Utils.setter(abs_banking.elem_bank_branch_full, abs_banking.bank_branch);\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-validate-account').classList.remove('no-display'); \n Utils.showToast(response.message, 'IFSC Details fetched', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n })\n }\n\n bankAddBankAccount(){\n let that = this;\n document.getElementById('btn-submit-account').addEventListener('click', function (){\n let abs_banking = null;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n let body = {\n \"bank_ifsc\": abs_banking.ifsc_code,\n \"bank_name\": abs_banking.bank_name,\n \"holder_name\": abs_banking.verified_account_holder,\n \"bank_branch\": abs_banking.bank_branch,\n \"bank_ac_type\": abs_banking.account_type,\n \"bank_ac_no\": abs_banking.account_number\n }\n\n Utils.requestHandler(\"/scf/api/counter_party/\" + that.counter_party_id + \"/bank-account\", Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n document.getElementById('add_bank_ac').classList.remove('no-display');\n that.obj_banking = [];\n that.editBankAccountsPanel();\n let closeModalButton = document.getElementById(\"btn-banking-modal-close\"); \n closeModalButton.click();\n Utils.showToast(response.message, 'Bank Details added', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n \n bankRenderVerifiedAccounts(){\n let that = this;\n let temp = document.getElementById('banking-tr-tmpl-business-details');\n let ac_table = document.getElementById('verified_accounts_business_details');\n ac_table.innerHTML = null;\n this.obj_banking.forEach(function (abs_banking){\n if(abs_banking.account_holder != null && abs_banking.account_number != null){\n let rend_row = Mustache.render(temp.innerHTML, abs_banking);\n ac_table.append($.parseHTML(rend_row)[1]);\n }\n })\n \n }\n\n setupVanCheckbox() {\n const vanCheckbox = document.getElementById('is_van_checkbox');\n const vanFields = document.getElementById('van_input_fields');\n const addBankAccountButton = document.getElementById('add_bank_ac');\n document.getElementById('add_bank_ac').classList.add('no-display');\n const existingFormElements = [\n document.getElementById('account_number'),\n document.getElementById('ifsc_code'),\n document.getElementById('btn-validate-ifsc'),\n ];\n \n vanCheckbox.addEventListener('change', function () {\n if (vanCheckbox.checked) {\n vanFields.classList.remove('no-display');\n addBankAccountButton.classList.add('no-display');\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n } else {\n vanFields.classList.add('no-display');\n addBankAccountButton.classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n }\n });\n }\n\n Vanbank(){\n let that = this;\n document.getElementById('btn-submit-isvan').addEventListener('click', function() {\n if (that.validateValuesVan()) {\n const bankName = document.getElementById('van_bank_name').value;\n const ifscCode = document.getElementById('van_ifsc').value;\n const holderName = document.getElementById('van_holder_name').value;\n const branch = document.getElementById('van_branch').value;\n const micrCode = document.getElementById('van_micr').value;\n const accountNumber = document.getElementById('van_account_number').value; \n let body = {\n \"bank_ifsc\": ifscCode,\n \"bank_name\": bankName,\n \"holder_name\": holderName,\n \"bank_branch\": branch,\n \"bank_ac_type\": \"van\",\n \"bank_ac_no\": accountNumber \n };\n Utils.requestHandler(\"/scf/api/counter_party/\" + that.counter_party_id + \"/bank-account\", Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'Van Bank Details added', Constants.TOAST.success);\n let closeModalButton = document.getElementById(\"btn-banking-modal-close\"); \n // let tmpl = document.getElementById('counter-party-bank-confirmation-tmpl');\n // let successTmpl = document.getElementById('counter-party-bank-confirmation-success-tmpl');\n // let target = document.getElementById('cpBankDetailsConfirmationPage');\n closeModalButton.click();\n // setTimeout(function () {\n // }, 2000);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n });\n \n \n }\n\n \n validateValuesVan(){\n let that = this;\n that.pass=true;\n document.querySelectorAll('.cp-van-question').forEach(element => {\n let label=element.getAttribute('data-label');\n Utils.reInput(element);\n function toggleMessage(){\n let value=element.value;\n if(!value){\n Utils.showInputError(element, label + ' is mandatory');\n that.pass=false;\n }else{\n Utils.hideInputError(element); \n }\n }\n toggleMessage();\n element.addEventListener('input', toggleMessage);\n \n })\n return that.pass;\n }\n \n applicationDetailsHandler(){\n let that = this;\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id + \"/cp-details-confirmation\", Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n if (response.data.product != \"purchase_invoice_discounting\"){\n document.getElementById('invitation_message_cp_banking').classList.remove('no-display');\n document.getElementById('cp_escrow_consent_section').classList.remove('no-display');\n }\n // that.cp_name.innerHTML = response.data.scf_business_applicant.name;\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n bankSelectFieldsHandler(){\n let selectedCheckboxId = '';\n let that = this;\n document.querySelectorAll('.cp_bank_select_fields').forEach(function(checkbox) {\n checkbox.addEventListener('change', function() {\n if (this.checked) {\n selectedCheckboxId = this.getAttribute('data-id');\n that.updateHiddenField(selectedCheckboxId);\n that.unselectAllCheckboxes(this.getAttribute('id'));\n } else {\n selectedCheckboxId = '';\n that.updateHiddenField(selectedCheckboxId);\n }\n });\n });\n }\n\n unselectAllCheckboxes(currentId) {\n document.querySelectorAll('.cp_bank_select_fields').forEach(function(checkbox) {\n if (checkbox.getAttribute('id') !== currentId) {\n checkbox.checked = false;\n }\n });\n }\n\n updateHiddenField(id) {\n document.getElementById('cp_bank_account_id').value = id;\n }\n\n validateValues(){\n // Select all checkboxes with id starting with \"cp_bank_select_\"\n var checkboxes = document.querySelectorAll('.cp_bank_select_fields')\n // Select the checkbox with id \"cp_escrow_consent\"\n var escrowCheckbox = document.getElementById('cp_escrow_consent');\n \n // Check if at least one checkbox is checked\n var atLeastOneSelected = Array.from(checkboxes).some(function(checkbox) {\n return checkbox.checked;\n });\n \n // Check if the \"cp_escrow_consent\" checkbox is checked\n var escrowSelected = escrowCheckbox.checked;\n \n // Return true if at least one checkbox is selected and the \"cp_escrow_consent\" checkbox is also selected\n return atLeastOneSelected ;\n }\n\n\n submitCpConfirmation(){\n let that = this;\n document.getElementById('btn-submit-cp-confirmation').addEventListener('click', function (){\n if (!that.validateValues()) {\n Utils.showToast('Validation Error', 'Please select Bank Account and give Consent', Constants.TOAST.fail);\n return;\n }\n\n let selectedCheckboxId = document.getElementById('cp_bank_account_id').value;\n let consentCheckboxValue = document.getElementById('cp_escrow_consent').value;\n let body = {\n cp_bank_account_id: selectedCheckboxId,\n ctype: consentCheckboxValue,\n user_agent: window.navigator.userAgent\n }\n let successTmpl = document.getElementById('counter-party-bank-confirmation-success-tmpl');\n let target = document.getElementById('cpBankDetailsConfirmationPage');\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id + '/submit-cp-confirmation', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n //Render Temp Already Submitted\n let rendered = Mustache.render(successTmpl.innerHTML, target);\n target.innerHTML = rendered\n Utils.showToast(response.message, 'Counter Party Confirmation submitted', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n\n\n }\n\n}\n\nclass AbstractBanking {\n\n constructor(id){\n this.id = id;\n this.account_number = null;\n this.account_type = null;\n this.account_holder = null;\n this.ifsc_code = null;\n this.bank_branch = null;\n this.bank_name = null;\n this.bank_micr = null;\n this.verified_account_holder = null;\n this.elem_account_number = document.getElementById('account_number');\n this.elem_account_holder = document.getElementById('account_holder');\n this.elem_account_type = document.getElementById('account_type');\n this.elem_ifsc_code = document.getElementById('ifsc_code');\n this.elem_bank_branch = document.getElementById('bank_branch');\n this.elem_bank_name = document.getElementById('bank_name');\n this.elem_bank_micr = document.getElementById('bank_micr');\n this.elem_verified_account_holder = document.getElementById('verified_account_holder');\n this.elem_verified_account_holder_name = document.getElementById('account_holder');\n this.elem_bank_branch_full = document.getElementById('bank_branch_full');\n }\n \n getValues(){\n this.account_number = Utils.getter(this.elem_account_number);\n this.account_type = Utils.getter(this.elem_account_type);\n this.account_holder = Utils.getter(this.elem_account_holder);\n this.ifsc_code = Utils.getter(this.elem_ifsc_code);\n this.bank_branch = Utils.getter(this.elem_bank_branch);\n this.bank_name = Utils.getter(this.elem_bank_name);\n this.bank_micr = Utils.getter(this.elem_bank_micr);\n this.account_type = Utils.getter(this.elem_account_type);\n this.verified_account_holder = Utils.getter(this.elem_verified_account_holder);\n }\n \n setValues() {\n Utils.setter(this.elem_account_number, this.account_number);\n Utils.setter(this.elem_account_type, this.account_type);\n Utils.setter(this.elem_account_holder, this.account_holder);\n Utils.setter(this.elem_ifsc_code, this.ifsc_code);\n Utils.setter(this.elem_bank_branch, this.bank_branch);\n Utils.setter(this.elem_bank_name, this.bank_name);\n Utils.setter(this.elem_bank_micr, this.bank_micr);\n Utils.setter(this.elem_account_type, this.account_type);\n Utils.setter(this.elem_verified_account_holder, this.verified_account_holder);\n Utils.setter(this.elem_verified_account_holder_name, this.verified_account_holder);\n Utils.setter(this.elem_bank_branch_full, this.bank_branch);\n }\n \n validateValues(){\n return true;\n }\n }","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from \"mustache\";\nimport { ScfPermission } from \"../scf_auth_handler\";\n\nexport class ScfCounterParty {\n\tconstructor(){\n\t\tUtils.pageSanityHandler();\n\t\tUtils.initializePagers('app-pager-parent');\n\t\tUtils.navPanelHandler('.raw-panel-link', '.raw-panel');\n\t\tthis.counter_party_id = document.getElementById('counter_party_id');\n\t\tthis.elem_applicant_details = document.getElementById('div_applicant_details');\n this.elem_applicant_details_counterparty = document.getElementById('div_applicant_details_counterparty');\n this.elem_applicant_details_counterparty_gst = document.getElementById('div_applicant_details_counterparty_gst');\n this.elem_srch_company_cin = document.getElementById('srch_company_cin_counterparty');\n this.elem_srch_company_name = document.getElementById('srch_company_name');\n this.elem_srch_company_list = document.getElementById('srch_company_list');\n this.scf_application_id = document.getElementById('scf_application_id');\n new PanelPd();\n this.panelDecision = new PanelDecision();\n\t}\n\n\thandler(){\n this.renderUserPermissionWise();\n\t\tthis.applicationDetailsHandler();\n this.backButton();\n\t\t// this.gstFilingData();\n\t\t// this.getCrimeCheckCases();\n\t\t// this.requestGstFilingData();\n\t\t// this.requestCrimeCheckCases();\n }\n\n backButton(){\n document.getElementById('btn-back').addEventListener('click', function(){\n window.history.back(); \n })\n}\n\n fetchApplications(){\n let that = this;\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value + '/dedupe', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.renderApplications(response.data);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n}\n\nrenderApplications(data){\n let that = this;\n let tmpl = document.getElementById('counter-party-details-tmpl');\n let dx = document.getElementById('tb-counterparty-de-app-tbody');\n if(data.applications.length > 1){\n dx.innerHTML = null;\n }\n data.applications.forEach(function (dd){\n if(dd.id !== that.scf_application_id.value){\n dd.formatted_created_at = Utils.formatTime(dd.created_at);\n dd.product = Utils.capitalizeFirstLetter(dd.product.split('_').join(' '));\n dd.status_human = Utils.capitalizeFirstLetter(dd.status.split('_').join(' '));\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n }\n })\n}\n\n renderUserPermissionWise(){\n if (ScfPermission.isScfLender() || ScfPermission.isScfCounterparty() || ScfPermission.isScfBorrower()) {\n document.getElementById(\"counter_party_confirmation_section\").classList.add(\"no-display\");\n } \n }\n\n\tapplicationDetailsHandler(){\n let that = this;\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n if (response.data.scf_application.product != \"purchase_invoice_discounting\" && \n response.data.scf_application.product != \"channel_finance\" && \n response.data.scf_application.product != \"vendor_discounting\") {\n document.getElementById('cp-conf-send-mail-section').classList.remove('no-display');\n }\n \n document.getElementById('scf_application_id').value = response.data.scf_application.id;\n if (response.data.scf_application.anchor_leads_lot_id){\n document.getElementById('is_anchor_product').value = true\n document.getElementById('counter_party_confirmation_section').classList.add('no-display');\n }else{\n document.getElementById('is_anchor_product').value = false\n }\n document.getElementById('business_applicant_id').value = response.data.scf_business_applicant.id;\n that.panelDecision.fillCounterPartyDecision(response);\n let str= response.data.scf_counter_party.status;\n let parts = str.split('_').map(part => part.charAt(0).toUpperCase() + part.slice(1)).join(' ');\n document.getElementById('counter-party-status').textContent = parts;\n document.getElementById('cp_bank_details_confirmation_link').setAttribute('href', '/scf/counterparty/confirmation/' + response.data.scf_counter_party.id + '?token=' + response.data.cp_banking_token);\n that.renderApplicationDetailsCounterParty(response.data);\n that.renderApplicationDetailsCounterPartyGst(response.data);\n that.mcaCounterPartyDetails(response.data);\n that.fetchApplications();\n that.sendEmailConfirmation();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n renderApplicationDetailsCounterParty(data){\n const that = this;\n let d = this.transformApplicationData(data);\n let tmpl = document.getElementById('applicant-details-tmpl-counterparty');\n let rendered = Mustache.render(tmpl.innerHTML, d);\n this.elem_applicant_details_counterparty.append($.parseHTML(rendered)[1]);\n var editButton = document.getElementById(\"edit_llp_name\");\n //hiding edit button here for lender here\n if(ScfPermission.isScfLender()){\n editButton.classList.add('no-display');\n }\n that.cin_llp_modal = new bootstrap.Modal(document.getElementById('select_company_modal_cin'), {});\n editButton.addEventListener(\"click\", function() {\n that.cin_llp_modal.show();\n });\n that.mcaSearchCinOrLlp();\n if((data.scf_business_applicant.address==null || data.scf_business_applicant.address==undefined) && data.gstins.length>0){\n document.getElementById(\"business_applicant_address\").innerHTML = data.gstins[0].address + '
As reported in MCA';\n }\n }\n\n renderApplicationDetailsCounterPartyGst(data){\n const that = this;\n let d = this.transformApplicationData(data);\n let tmpl = document.getElementById('applicant-details-tmpl-counterparty-gst');\n let rendered = Mustache.render(tmpl.innerHTML, d);\n this.elem_applicant_details_counterparty_gst.append($.parseHTML(rendered)[1]);\n }\n \n mcaSearchCinOrLlp() {\n let that = this;\n document.getElementById('btn-srch-company-id-counterparty').addEventListener('click', function () { \n let val_cin = document.getElementById('srch_company_cin_counterparty').value;\n if(val_cin){\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/onboarding/company/get_company_from_id/\" + document.getElementById('business_applicant_id').value + \"/\" + val_cin, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.cin_llp_modal.hide();\n document.getElementById('srch_company_cin_counterparty').value = '';\n document.getElementById('div_applicant_details_counterparty').innerHTML = '';\n that.applicationDetailsHandler();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide)\n })\n }else{\n Utils.showToast('Input error', 'Provide a valid CIN/LLP Pin', Constants.TOAST.fail);\n }\n })\n }\n\n mcaCounterPartyDetails() {\n let that = this;\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value, Constants.REQUEST.get, {}).then(function (response) {\n if (response.message === \"OK\") {\n let container = document.getElementById(\"div_counter_party_details_mca\");\n let mcaData = response.data.business_directors;\n if (response.data.scf_business_applicant.mca_data_json === null || response.data.scf_business_applicant.mca_data_json.length === 0) {\n let notFoundMsg = document.createElement(\"h1\");\n notFoundMsg.textContent = \"Not Found\";\n container.appendChild(notFoundMsg);\n }\n that.createNestedTableUydam(\n response.data.scf_business_applicant.mca_data_json,\n container\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n }\n\n createNestedTableUydam(jsonObj, parentElement) {\n let that = this;\n let table = document.createElement(\"table\"); \n table.style.borderCollapse = \"collapse\";\n table.style.width = \"100%\";\n table.style.border = \"1px solid #ddd\";\n table.style.marginTop = \"20px\";\n table.style.fontFamily = \"Arial, sans-serif\";\n table.style.fontSize = \"14px\";\n for (let key in jsonObj) {\n if (jsonObj.hasOwnProperty(key)) {\n let tr = document.createElement(\"tr\");\n let capitalizedKey = key.replace(/_/g, ' ').replace(/([A-Z])/g, ' $1');\n capitalizedKey = capitalizedKey.charAt(0).toUpperCase() + capitalizedKey.slice(1); \n let tdKey = document.createElement(\"td\");\n tdKey.style.border = \"1px solid #ddd\";\n tdKey.style.padding = \"8px\";\n tdKey.style.textAlign = \"center\";\n tdKey.style.backgroundColor = \"#f2f2f2\";\n tdKey.style.fontWeight = \"bold\";\n tdKey.style.width = \"10%\";\n tdKey.textContent = capitalizedKey;\n let tdValue = document.createElement(\"td\");\n tdValue.style.border = \"1px solid #ddd\";\n tdValue.style.padding = \"8px\";\n tdValue.style.textAlign = \"left\";\n tdValue.style.width = \"70%\";\n if(jsonObj[key] === null || jsonObj[key] === \"\"){\n tdValue.textContent = \"Not Found\";\n tr.appendChild(tdKey);\n tr.appendChild(tdValue);\n table.appendChild(tr);\n continue;\n }\n if (typeof jsonObj[key] === \"object\") {\n if (Array.isArray(jsonObj[key])) {\n let ul = document.createElement(\"ul\");\n ul.style.padding = \"0\";\n ul.style.margin = \"0\";\n ul.style.listStyleType = \"none\";\n jsonObj[key].forEach((item) => {\n let li = document.createElement(\"li\");\n li.style.marginBottom = \"5px\";\n if (typeof item === \"object\") {\n that.createNestedTableUydam(item, li);\n } else {\n li.textContent = item;\n }\n ul.appendChild(li);\n });\n tdValue.appendChild(ul);\n } else {\n that.createNestedTableUydam(jsonObj[key], tdValue);\n }\n } else {\n tdValue.textContent = jsonObj[key];\n }\n \n tr.appendChild(tdKey);\n tr.appendChild(tdValue);\n table.appendChild(tr);\n }\n }\n parentElement.appendChild(table);\n }\n\n transformApplicationData(data) {\n const replaceWithNotAvailable = (obj) => {\n for (let key in obj) {\n if (obj[key] === null || obj[key] === undefined || obj[key] === \"\") {\n obj[key] = 'Not Available';\n }\n }\n };\n \n // Transform scf_business_applicant\n if (data.scf_business_applicant) {\n replaceWithNotAvailable(data.scf_business_applicant);\n data.scf_business_applicant.constitution = Utils.snakeToTitleCase(data.scf_business_applicant.constitution);\n let idx = 1;\n data.scf_business_applicant.idx = function() {\n return idx++;\n };\n }\n \n // Transform scf_application\n if (data.scf_application) {\n replaceWithNotAvailable(data.scf_application);\n data.scf_application.product = Utils.snakeToTitleCase(data.scf_application.product);\n data.scf_application.created_at = Utils.formatTime(data.scf_application.created_at);\n data.scf_application.relative_created_at = Utils.formatTimeRelative(data.scf_application.created_at);\n data.scf_application.required_amount_formatted = Utils.indianRepresentation(data.scf_application.required_amount);\n let idx = 1;\n data.scf_application.idx = function() {\n return idx++;\n };\n }\n \n // Transform consents\n if (data.consents) {\n let idx = 1;\n data.consents.forEach(function (row) {\n replaceWithNotAvailable(row);\n row.ctype = that.consentToTitleCase(row.ctype);\n row.updated_at = Utils.formatTime(row.updated_at);\n row.relative_updated_at = Utils.formatTimeRelative(row.updated_at);\n row.idx = function() {\n return idx++;\n };\n });\n }\n \n // Transform business_directors\n if (data.business_directors) {\n let idx = 1;\n data.business_directors.forEach(function (row) {\n replaceWithNotAvailable(row);\n row.date_of_birth = Utils.formatDate(row.date_of_birth);\n if (row.date_of_birth && row.date_of_birth !== 'Not Available') {\n row.age = Utils.formatTimeRelative(row.date_of_birth);\n }\n row.idx = function() {\n return idx++;\n };\n });\n }\n \n // Transform gstins\n if (data.gstins) {\n let idx = 1;\n data.gstins.forEach(function (row) {\n replaceWithNotAvailable(row);\n row.registration_date = Utils.formatDate(row.registration_date);\n row.formatted_registration_date = Utils.formatTimeRelative(row.registration_date);\n row.last_updated = Utils.formatDate(row.last_updated);\n if (row.last_updated) {\n row.formatted_last_updated = Utils.formatTimeRelative(row.last_updated);\n }\n row.idx = function() {\n return idx++;\n };\n });\n }\n \n // Transform bank_accounts\n if (data.bank_accounts) {\n let idx = 1;\n data.bank_accounts.forEach(function (row) {\n replaceWithNotAvailable(row);\n row.created_at = Utils.formatTime(row.created_at);\n row.idx = function() {\n return idx++;\n };\n });\n }\n \n return data;\n }\n \n \n\n renderApplicationDetails(data){\n const that = this;\n let d = this.transformApplicationData(data);\n let tmpl = document.getElementById('applicant-details-tmpl');\n let rendered = Mustache.render(tmpl.innerHTML, d);\n this.elem_applicant_details.append($.parseHTML(rendered)[1]);\n }\n\n sendEmailConfirmation(){\n let that = this;\n let body = {\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n req_type: \"post\"\n }\n document.getElementById('btn-send-email-confirmation').addEventListener('click', function (){\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value + '/send-confirmation-link', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast(response.message, 'Email confirmation sent', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n gstFilingData(){\n let that = this;\n document.getElementById('nav-scoring-gst').addEventListener('click', function (){\n Utils.requestHandler('/scf/api/counter_party/'+ that.counter_party_id.value +'/gst-filing-data', Constants.REQUEST.get).then(function (response){\n if(response.message === 'OK'){\n let tmpl = document.getElementById('gst-filing-tmpl');\n let dx = document.getElementById('tb_gstins');\n dx.innerHTML = null;\n response.data.gst_filings.forEach(function (dd){\n \tdd.status = dd.status == null ? \"\" : dd.status.toUpperCase();\n \tdd.gst_type = dd.gst_type == null ? \"\" : dd.gst_type.toUpperCase().split(\"_\").join(\" \");\n \tdd.filed_clr = \"green\";\n \tif (dd.status != \"FILED\"){\n \t\tdd.filed_clr = \"red\"\n \t}\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n })\n Utils.showToast('Fetched', 'GST Filing Data', Constants.TOAST.success);\n }\n })\n })\n }\n\n getCrimeCheckCases() {\n let that = this;\n document.getElementById('nav-crime-check').addEventListener('click', function () {\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value + '/crime-cases', Constants.REQUEST.get).then(function (response) {\n if (response.message === 'OK') {\n let tmpl = document.getElementById('cases-table-tmpl');\n let dx = document.getElementById('all_cases');\n let aml_tmpl = document.getElementById('aml-table-tmpl');\n\t let aml_dx = document.getElementById('aml_cases');\n\t aml_dx.innerHTML = null;\n dx.innerHTML = null;\n response.data.crime_check.forEach(obj => {\n let rendered = Mustache.render(tmpl.innerHTML, obj);\n dx.append($.parseHTML(rendered)[1]);\n\t rendered = Mustache.render(aml_tmpl.innerHTML, obj.aml);\n\t aml_dx.append($.parseHTML(rendered)[1]);\n })\n \n Utils.showToast('Fetched', 'Cases fetched', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n requestCrimeCheckCases() {\n let that = this;\n document.getElementById('req-crime-check').addEventListener('click', function () {\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value + '/crime-cases', Constants.REQUEST.post).then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast('Requested', 'Crime Check data request initiated', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n requestGstFilingData(){\n \tlet that = this;\n \tdocument.getElementById('req-gst-filings').addEventListener('click', function () {\n \t Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value + '/gst-filing-data', Constants.REQUEST.post).then(function (response) {\n \t if (response.message === 'OK') {\n \t Utils.showToast('Requested', 'GST Filing data request initiated', Constants.TOAST.success);\n \t } else {\n \t Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n \t }\n \t })\n \t})\n }\n\n}\n\nclass PanelPd {\n constructor(){\n this.counter_party_id = document.getElementById('counter_party_id');\n this.scf_application_id = document.getElementById('scf_application_id');\n this.is_anchor_product = document.getElementById('is_anchor_product');\n this.pass = true;\n this.fillPdTable();\n this.getQuestions();\n this.submitQuestions();\n this.generatePdQuestionsPdf();\n this.validatePdValues();\n this.submitPDSectionQuestions();\n }\n\n getValues(){\n let data = {};\n document.querySelectorAll('.questions').forEach(question => {\n let id = question.getAttribute('data-label');\n data[id] = question.value;\n })\n return data;\n }\n\n validateValues(){\n let that = this;\n that.pass = true;\n const sectionsToValidate = [\"Section---1---CPV\", \"Section---3---Audit-Trails\"];\n\n sectionsToValidate.forEach(section => {\n document.querySelectorAll(`.${section}.questions`).forEach((question) => {\n let mandatory = question.getAttribute(\"data-mandatory\");\n let label = question.getAttribute(\"data-label\");\n let label_title = Utils.snakeToTitleCase(label);\n Utils.reInput(question);\n \n function toggleErrorMessage() {\n let value = question.value;\n if (mandatory === \"true\" && !value) {\n Utils.showInputError(question, label_title + \" is mandatory\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n if (label.endsWith(\"mobile_no\") && value) {\n if (!/^\\d{10}$/.test(value)) {\n Utils.showInputError(question, \"Mobile number must be 10 digits\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n }\n }\n \n toggleErrorMessage();\n question.addEventListener(\"input\", toggleErrorMessage);\n });\n });\n \n document\n .querySelectorAll('[data-code=\"photo_of_shop\"]')\n .forEach((element) => {\n if (element.files.length === 0) {\n Utils.showToast(\n \"Error\",\n \"Photo of the shop is mandatory\",\n Constants.TOAST.fail\n );\n that.pass = false;\n }\n });\n }\n\n validatePdValues(){\n let that = this;\n that.pass = true;\n const sectionsToValidate = [\"Section---2---PD\"];\n\n sectionsToValidate.forEach(section => {\n document.querySelectorAll(`.${section}.questions`).forEach((question) => {\n let mandatory = question.getAttribute(\"data-mandatory\");\n let label = question.getAttribute(\"data-label\");\n let label_title = Utils.snakeToTitleCase(label);\n Utils.reInput(question);\n\n function toggleErrorMessage() {\n let value = question.value;\n if (mandatory === \"true\" && !value) {\n Utils.showInputError(question, label_title + \" is mandatory\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n if (label.endsWith(\"mobile_no\") && value) {\n if (!/^\\d{10}$/.test(value)) {\n Utils.showInputError(question, \"Mobile number must be 10 digits\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n }\n }\n\n toggleErrorMessage();\n question.addEventListener(\"input\", toggleErrorMessage);\n });\n });\n }\n\n fillPdTable(){\n let that = this;\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n document.getElementById('pd_application_id').innerHTML = response.data.scf_application.id;\n document.getElementById('pd_application_constitution').innerHTML = Utils.snakeToTitleCase(response.data.scf_business_applicant.constitution);\n document.getElementById('pd_product').innerHTML = Utils.snakeToTitleCase(response.data.scf_application.product);\n document.getElementById('pd_loan_amount_required').innerHTML = response.data.scf_application.required_amount;\n if(response.data.program_name!=null){\n document.getElementById('pd_program').innerHTML = response.data.program_name;\n }\n else{\n document.getElementById('pd_program').innerHTML = \"-\";\n }\n }\n });\n }\n\n showLoanDetailsTable() {\n let that = this;\n if (!that.isLoanDetailsTableShown) {\n document.getElementById('loan_details_table').classList.remove('no-display');\n that.isLoanDetailsTableShown = true;\n }\n }\n\n getQuestions() {\n let that = this;\n that.isLoanDetailsTableShown = false;\n document.getElementById('counter_party_cpv_section').addEventListener('click', () => that.showLoanDetailsTable());\n document.getElementById('counter_party_pd_section').addEventListener('click', () => that.showLoanDetailsTable());\n document.getElementById('nav-pd').addEventListener('click', function () {\n Utils.requestHandler(\"/scf/api/counter_party/\" + that.counter_party_id.value + '/pd-questions', Constants.REQUEST.get, {})\n .then(function (response) {\n if (response.message === 'OK') {\n let all_quest_cpv = document.getElementById('all_questions_cpv');\n let all_quest_pd = document.getElementById('all_questions_pd');\n all_quest_cpv.innerHTML = null;\n all_quest_pd.innerHTML = null;\n let questions = {};\n response.data.forEach(function (question) {\n if (questions[question.section]) {\n questions[question.section].push(question)\n } else {\n questions[question.section] = [question]\n }\n });\n let tmpl = document.getElementById('question-tmpl')\n let section;\n if (that.is_anchor_product.value != 'true') {\n section = 'Section_-_1_-_CPV';\n all_quest_cpv.append($.parseHTML(Mustache.render(document.getElementById('question-header-tmpl').innerHTML, { name: section.split(\"_\").join(\" \") }))[1])\n questions[section].forEach(function (question) {\n question.section = section.split(\"_\").join(\"-\"); // Replacing underscores with hyphens for class\n switch (question.type) {\n case 'text':\n question[\"text\"] = true;\n break;\n case 'select':\n question[\"select\"] = true;\n break;\n case 'date':\n question[\"date\"] = true;\n break;\n case 'textbox':\n question[\"textbox\"] = true;\n break;\n case 'upload':\n question[\"upload\"] = true;\n break;\n case 'number':\n question[\"number\"] = true;\n break;\n }\n let q_data = Mustache.render(tmpl.innerHTML, question);\n all_quest_cpv.append($.parseHTML(q_data)[1]);\n })\n } else {\n document.getElementById('btn-quest-submit').classList.add('no-display')\n }\n\n if (that.is_anchor_product.value == 'true') {\n section = 'PD';\n } else {\n section = 'Section_-_2_-_PD';\n }\n all_quest_pd.append($.parseHTML(Mustache.render(document.getElementById('question-header-tmpl').innerHTML, { name: \"Section -1 - PD\" }))[1])\n questions[section].forEach(function (question) {\n question.section = section.split(\"_\").join(\"-\"); // Replacing underscores with hyphens for class\n switch (question.type) {\n case 'text':\n question[\"text\"] = true;\n break;\n case 'select':\n question[\"select\"] = true;\n break;\n case 'date':\n question[\"date\"] = true;\n break;\n case 'textbox':\n question[\"textbox\"] = true;\n break;\n case 'upload':\n question[\"upload\"] = true;\n break;\n case 'number':\n question[\"number\"] = true;\n break;\n }\n let q_data = Mustache.render(tmpl.innerHTML, question);\n all_quest_pd.append($.parseHTML(q_data)[1]);\n })\n if (that.is_anchor_product.value != 'true') {\n section = 'Section_-_3_-_Audit_Trails';\n all_quest_cpv.append($.parseHTML(Mustache.render(document.getElementById('question-header-tmpl').innerHTML, { name: \"Section - 2 - Audit Trails\" }))[1])\n questions[section].forEach(function (question) {\n question.section = section.split(\"_\").join(\"-\"); // Replacing underscores with hyphens for class\n switch (question.type) {\n case 'text':\n question[\"text\"] = true;\n break;\n case 'select':\n question[\"select\"] = true;\n break;\n case 'date':\n question[\"date\"] = true;\n break;\n case 'textbox':\n question[\"textbox\"] = true;\n break;\n case 'upload':\n question[\"upload\"] = true;\n break;\n case 'number':\n question[\"number\"] = true;\n break;\n }\n let q_data = Mustache.render(tmpl.innerHTML, question);\n all_quest_cpv.append($.parseHTML(q_data)[1]);\n })\n let maxDate = new Date().toISOString().split('T')[0];\n document.getElementById('date_of_visit').setAttribute('max', maxDate);\n }\n\n // Adding support for Section_-_4_-_Audit_Trails\n if (that.is_anchor_product.value == 'true') {\n section = 'Audit Trails';\n } else {\n section = 'Section_-_4_-_Audit_Trails';\n }\n all_quest_pd.append($.parseHTML(Mustache.render(document.getElementById('question-header-tmpl').innerHTML, { name: \"Section - 2 - Audit Trails\" }))[1])\n questions[section].forEach(function (question) {\n question.section = section.split(\"_\").join(\"-\"); // Replacing underscores with hyphens for class\n switch (question.type) {\n case 'text':\n question[\"text\"] = true;\n break;\n case 'select':\n question[\"select\"] = true;\n break;\n case 'date':\n question[\"date\"] = true;\n break;\n case 'textbox':\n question[\"textbox\"] = true;\n break;\n case 'upload':\n question[\"upload\"] = true;\n break;\n case 'number':\n question[\"number\"] = true;\n break;\n }\n let q_data = Mustache.render(tmpl.innerHTML, question);\n all_quest_pd.append($.parseHTML(q_data)[1]);\n })\n document.getElementById(\"counter_party_pd_latitude\").textContent = response.data.find(item => item.latitude)?.latitude || \"-\";\n document.getElementById(\"counter_party_pd_longitude\").textContent = response.data.find(item => item.longitude)?.longitude || \"-\";\n document.getElementById(\"counter_party_pd_location\").textContent = response.data.find(item => item.pincode)?.pincode || \"-\";\n\n that.uploadDocuments();\n that.fetchDropDownValuesIndustry();\n that.fetchDropDownLevel2();\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n}\n\n \n \n\n submitQuestions() {\n let that = this;\n document\n .getElementById(\"btn-quest-submit\")\n .addEventListener(\"click\", function () {\n that.validateValues();\n that.uploadDocuments();\n if (that.pass) {\n let values = that.getValues();\n Utils.requestHandler(\n \"/scf/api/counter_party/\" + that.counter_party_id.value + \"/pd-questions\",\n Constants.REQUEST.post,\n values\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"Responses submitted\",\n Constants.TOAST.success\n );\n // that.clearForm();\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n } else {\n Utils.showToast(\n \"Error\",\n \"Please Enter Required field\",\n Constants.TOAST.fail\n );\n }\n });\n }\n\n submitPDSectionQuestions() {\n let that = this;\n document\n .getElementById(\"btn-quest-pd-submit\")\n .addEventListener(\"click\", function () {\n that.validatePdValues();\n if (that.pass) {\n let values = that.getValues();\n Utils.requestHandler(\n \"/scf/api/counter_party/\" + that.counter_party_id.value + \"/pd-questions\",\n Constants.REQUEST.post,\n values\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"Responses submitted\",\n Constants.TOAST.success\n );\n // that.clearForm();\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n } else {\n Utils.showToast(\n \"Error\",\n \"Please Enter Required field\",\n Constants.TOAST.fail\n );\n }\n });\n }\n\n generatePdQuestionsPdf() {\n if(ScfPermission.isScfLender()){\n document.getElementById('btn_generate_pd_counter_party_pdf').classList.add('no-display');\n document.getElementById('btn-quest-submit').classList.add('no-display');\n }\n let that = this;\n document\n .getElementById(\"btn_generate_pd_counter_party_pdf\")\n .addEventListener(\"click\", function () {\n Utils.requestHandler(\n \"/scf/api/counter_party/\" +\n that.counter_party_id.value +\n \"/generate-pd-questions-pdf\",\n Constants.REQUEST.get\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"PDF Generation Started.\",\n Constants.TOAST.success\n );\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n\n fetchDropDownValuesIndustry() {\n let that = this;\n document\n .getElementById(\"business_segment\")\n .addEventListener(\"change\", function () {\n document.getElementById(\"industry_classification\").innerHTML = \"\";\n document.getElementById(\"industry_classification_2\").innerHTML = \"\";\n let segment = \"\";\n if (\n document.getElementById(\"business_segment\").value === \"Manufacturing / Trader\"\n ) {\n segment = \"HSN\";\n } else if (\n document.getElementById(\"business_segment\").value === \"Services\"\n ) {\n segment = \"SAC\";\n }\n let body = {\n level: 1,\n segment: segment,\n };\n Utils.requestHandler(\n \"/scf/api/application/pd-questions/industry-codes\",\n Constants.REQUEST.get,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n var dropdown = document.getElementById(\"industry_classification\");\n document.getElementById(\"industry_classification\").innerHTML = \"\";\n var option = document.createElement(\"option\");\n option.value = \"\";\n option.text = \"\";\n dropdown.appendChild(option);\n var values = response.data.data;\n for (var i = 0; i < values.length; i++) {\n var option = document.createElement(\"option\");\n option.value = values[i].code;\n option.text = values[i].name;\n dropdown.appendChild(option);\n }\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n \n fetchDropDownLevel2() {\n let that = this;\n document\n .getElementById(\"industry_classification\")\n .addEventListener(\"change\", function () {\n let segment = \"\";\n if (\n document.getElementById(\"business_segment\").value === \"Manufacturing / Trader\"\n ) {\n segment = \"HSN\";\n } else if (\n document.getElementById(\"business_segment\").value === \"Services\"\n ) {\n segment = \"SAC\";\n }\n let body = {\n level: 2,\n segment: segment,\n parent_code: document.getElementById(\"industry_classification\").value,\n };\n Utils.requestHandler(\n \"/scf/api/application/pd-questions/industry-codes\",\n Constants.REQUEST.get,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n var dropdown = document.getElementById(\"industry_classification_2\");\n document.getElementById(\"industry_classification_2\").innerHTML = \"\";\n var option = document.createElement(\"option\");\n option.value = \"\";\n option.text = \"\";\n dropdown.appendChild(option);\n var values = response.data.data;\n for (var i = 0; i < values.length; i++) {\n var option = document.createElement(\"option\");\n option.value = values[i].code;\n option.text = values[i].name;\n dropdown.appendChild(option);\n }\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n\n uploadDocuments(){\n let that = this;\n document.querySelectorAll('.pd-upload').forEach(element => {\n element.addEventListener('click', function(){\n let elem_file = element.parentElement.parentElement.firstElementChild;\n let file = elem_file.files[0];\n if (!file){\n Utils.showToast(\"Not Found\", \"File is mandatory\", Constants.TOAST.fail);\n return;\n }\n let data = new FormData();\n let file_code = elem_file.getAttribute('data-code');\n data.set('file_data', file);\n data.set('file_name', file.name);\n data.set('file_password', null);\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id.value +\n \"/document/upload/\" +\n file_code,\n Constants.REQUEST.post,\n data\n ).then(function (response){\n if(response.message === 'OK'){\n Utils.showToast(response.message, 'Document uploaded', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n })\n if(ScfPermission.isScfLender()){\n document.querySelectorAll('.pd-upload').forEach(element => {\n element.classList.add('no-display');\n })\n }\n }\n\n}\n\nclass PanelDecision {\n\n constructor(){\n this.counter_party_id = document.getElementById('counter_party_id');\n this.scf_application_id = document.getElementById('scf_application_id');\n this.elem_product_type = document.getElementById('product_type');\n this.elem_category_of_cp = document.getElementById('category_of_cp');\n this.elem_type_of_rating = document.getElementById('type_of_rating');\n this.elem_cp_rating_issuer = document.getElementById('cp_rating_issuer');\n this.elem_date_of_rating = document.getElementById('date_of_rating');\n this.elem_cp_rating = document.getElementById('cp_rating');\n this.elem_cp_exposure_limit = document.getElementById('cp_exposure_limit');\n this.elem_cp_tenure_cap = document.getElementById('cp_tenure_cap');\n this.elem_cp_margin_cap = document.getElementById('cp_margin_cap');\n this.elem_cp_allowed_underlying_instrument = document.getElementById('cp_allowed_underlying_instrument');\n this.elem_cp_require_escrow = document.getElementById('cp_require_escrow');\n this.elem_cp_status = document.getElementById('cp_status');\n this.elem_lender_hsn_list = document.getElementById('lender_hsn_list');\n this.elem_counter_party_beneficiary_id = document.getElementById('counter_party_beneficiary_id');\n this.elem_category_of_cp.addEventListener('change', this.toggleCreditRatingSection.bind(this));\n this.handler();\n }\n\n handler(){\n this.submitDecision();\n this.toggleCreditRatingSection();\n this.initializeScorecardEventListeners();\n }\n\n getValues() {\n this.product_type = Utils.getter(this.elem_product_type);\n this.category_of_cp = Utils.getter(this.elem_category_of_cp);\n this.type_of_rating = Utils.getter(this.elem_type_of_rating);\n this.cp_rating_issuer = Utils.getter(this.elem_cp_rating_issuer);\n this.date_of_rating = Utils.getter(this.elem_date_of_rating);\n this.cp_rating = Utils.getter(this.elem_cp_rating);\n this.cp_exposure_limit = Utils.getter(this.elem_cp_exposure_limit);\n this.cp_tenure_cap = Utils.getter(this.elem_cp_tenure_cap);\n this.cp_margin_cap = Utils.getter(this.elem_cp_margin_cap);\n this.cp_allowed_underlying_instrument = Utils.getter(this.elem_cp_allowed_underlying_instrument);\n this.cp_require_escrow = Utils.getter(this.elem_cp_require_escrow);\n this.cp_status = Utils.getter(this.elem_cp_status);\n this.lender_hsn_list = Utils.getter(this.elem_lender_hsn_list);\n this.counter_party_beneficiary_id = Utils.getter(this.elem_counter_party_beneficiary_id);\n }\n\n toggleCreditRatingSection() {\n var category_of_cp = document.getElementById('category_of_cp').value;\n var creditRatingSection = document.getElementById('credit-rating-hide');\n if (category_of_cp === 'rated_corporate') {\n creditRatingSection.style.display = 'block'; \n } else {\n creditRatingSection.style.display = 'none';\n }\n}\n\n setValues() {\n Utils.setter(this.elem_product_type, this.product_type);\n Utils.setter(this.elem_category_of_cp, this.category_of_cp);\n Utils.setter(this.elem_type_of_rating, this.type_of_rating);\n Utils.setter(this.elem_cp_rating_issuer, this.cp_rating_issuer);\n Utils.setter(this.elem_date_of_rating, this.date_of_rating);\n Utils.setter(this.elem_cp_rating, this.cp_rating);\n Utils.setter(this.elem_cp_exposure_limit, this.cp_exposure_limit);\n Utils.setter(this.elem_cp_tenure_cap, this.cp_tenure_cap);\n Utils.setter(this.elem_cp_margin_cap, this.cp_margin_cap);\n Utils.setter(this.elem_cp_allowed_underlying_instrument, this.cp_allowed_underlying_instrument);\n Utils.setter(this.elem_cp_require_escrow, this.cp_require_escrow);\n Utils.setter(this.elem_cp_status, this.cp_status);\n Utils.setter(this.elem_lender_hsn_list, this.lender_hsn_list);\n Utils.setter(this.elem_counter_party_beneficiary_id, this.counter_party_beneficiary_id);\n return true;\n } \n\n validateValues() {\n let that = this;\n that.pass = true;\n document.querySelectorAll(\".counterparty-question\").forEach((question) => {\n let label = question.getAttribute(\"data-label\");\n let field_id=question.getAttribute(\"id\");\n Utils.reInput(question);\n function toggleErrorMessage() {\n let value = question.value;\n if(field_id==\"cp_exposure_limit\" && parseInt(value)>9900){\n Utils.showInputError(question, \"CP Exposure Limit is invalid Max - 9900 Lakhs\");\n that.pass = false;\n }\n else if(field_id==\"cp_tenure_cap\" && parseInt(value)>365){\n Utils.showInputError(question, \"CP Tenure Cap is invalid (Max - 365 Days)\");\n that.pass = false;\n }\n else if(field_id==\"cp_margin_cap\" && parseInt(value)>100){\n Utils.showInputError(question,'CP Margin Cap is invalid (Max - 100%)');\n that.pass = false;\n }\n else if (!value) {\n Utils.showInputError(question, label + \" is mandatory\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n }\n toggleErrorMessage();\n question.addEventListener(\"input\", toggleErrorMessage);\n });\n return that.pass;\n }\n\n getDecision(){\n let that = this;\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value , Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.fillCounterPartyDecision(response);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n fillCounterPartyDecision(response) {\n let that = this;\n that.product_type = response.data.scf_application.product;\n that.category_of_cp = response.data.scf_counter_party.category;\n if(response.data.scf_counter_party.credit_rating!=null){\n that.type_of_rating = response.data.scf_counter_party.credit_rating.type_of_rating || '';\n that.cp_rating_issuer = response.data.scf_counter_party.credit_rating.cp_rating_issuer || '';\n that.date_of_rating = response.data.scf_counter_party.credit_rating.date_of_rating || '';\n that.cp_rating = response.data.scf_counter_party.credit_rating.rating || '';\n }\n that.cp_exposure_limit = response.data.scf_counter_party.exposure_limit || '';\n that.cp_tenure_cap = response.data.scf_counter_party.tenure_limit || '';\n that.cp_margin_cap = response.data.scf_counter_party.margin_limit || '';\n that.cp_allowed_underlying_instrument = response.data.scf_counter_party.allowed_underlying_instrument || '';\n that.cp_require_escrow = response.data.scf_counter_party.require_escrow || '';\n that.cp_status = response.data.scf_counter_party.status || '';\n that.lender_hsn_list = response.data.scf_counter_party.lender_hsn || '';\n that.counter_party_beneficiary_id = response.data.scf_counter_party.beneficiary_id || '';\n that.setValues();\n\n if (response.data.hsn_required !== 'Yes') {\n let lenderHsnListElement = document.getElementById('lender_hsn_list');\n lenderHsnListElement.parentNode.classList.add('d-none');\n lenderHsnListElement.classList.add('d-none');\n }\n if(response.data.scf_counter_party.counter_party_scorecard !=null){\n document.getElementById('cp_sc_borrower_rating').value = response.data.scf_counter_party.counter_party_scorecard.borrower_rating || '';\n document.getElementById('cp_sc_management_rating').value = response.data.scf_counter_party.counter_party_scorecard.management_rating || '';\n document.getElementById('cp_sc_financials_rating').value = response.data.scf_counter_party.counter_party_scorecard.financials_rating || '';\n document.getElementById('cp_sc_banking_rating').value = response.data.scf_counter_party.counter_party_scorecard.banking_rating || '';\n document.getElementById('cp_sc_bureau_p_rating').value = response.data.scf_counter_party.counter_party_scorecard.bureau_p_rating || '';\n document.getElementById('cp_sc_bureau_c_rating').value = response.data.scf_counter_party.counter_party_scorecard.bureau_c_rating || '';\n document.getElementById('cp_sc_gst_rating').value = response.data.scf_counter_party.counter_party_scorecard.gst_rating || '';\n document.getElementById('cp_sc_total_rating').value = response.data.scf_counter_party.counter_party_scorecard.total_rating || '';\n }\n document.getElementById('counter_party_beneficiary_id').value = response.data.scf_counter_party.beneficiary_id || '';\n document.getElementById('product_type').value = response.data.scf_application.product || '';\n}\n\n\n submitDecision(){\n let that = this;\n if(ScfPermission.isScfLender() || ScfPermission.isScfCounterparty()){\n document.getElementById('btn-submit-cp-credit-decision').classList.add('no-display');\n }\n document.getElementById('btn-submit-cp-credit-decision').addEventListener('click', function(){\n that.getValues();\n let credit_rating = {\n type_of_rating: that.type_of_rating,\n cp_rating_issuer: that.cp_rating_issuer,\n date_of_rating: that.date_of_rating,\n rating: that.cp_rating\n }\n const cp_scorecard = {\n borrower_rating: document.getElementById('cp_sc_borrower_rating').value,\n management_rating: document.getElementById('cp_sc_management_rating').value,\n financials_rating: document.getElementById('cp_sc_financials_rating').value,\n banking_rating: document.getElementById('cp_sc_banking_rating').value,\n bureau_p_rating: document.getElementById('cp_sc_bureau_p_rating').value,\n bureau_c_rating: document.getElementById('cp_sc_bureau_c_rating').value,\n gst_rating: document.getElementById('cp_sc_gst_rating').value,\n total_rating: document.getElementById('cp_sc_total_rating').value\n };\n let body = {\n counter_party_scorecard: cp_scorecard,\n category: that.category_of_cp,\n credit_rating: credit_rating,\n exposure_limit: that.cp_exposure_limit,\n tenure_limit: that.cp_tenure_cap,\n margin_limit: that.cp_margin_cap,\n allowed_underlying_instrument: that.cp_allowed_underlying_instrument,\n require_escrow: that.cp_require_escrow,\n status: that.cp_status,\n lender_hsn: that.lender_hsn_list,\n beneficiary_id: that.counter_party_beneficiary_id\n }\n if (that.validateValues()) {\n Utils.requestHandler('/scf/api/counter_party/' + that.counter_party_id.value + '/credit-decision', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n that.getDecision();\n Utils.showToast(response.message, 'Decision submitted', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n } \n })\n }\n\n initializeScorecardEventListeners() {\n const elements = document.querySelectorAll('.cp_scorecard_element');\n\n function calculateTotal() {\n let total = 0;\n elements.forEach(element => {\n total += Number(element.value) || 0;\n });\n document.getElementById('cp_sc_total_rating').value = total;\n }\n\n elements.forEach(element => {\n element.addEventListener('input', calculateTotal);\n });\n }\n\n}","import {Utils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nexport class ScfInvoiceConfirmation {\n\n constructor() {\n this.obj_banking = [];\n this.invoice_id = document.getElementById('invoice_id').value;\n }\n\n handler(){\n this.verify_token();\n }\n validateValues(){\n let that = this;\n that.pass=true;\n document.querySelectorAll('.select_cp_confirmation').forEach(function (elem){\n let label=elem.getAttribute('data-label');\n Utils.reInput(elem);\n function toggleMessage(){\n let value=elem.value;\n if(!value){\n Utils.showInputError(elem, label + ' is mandatory');\n that.pass=false;\n }else{\n Utils.hideInputError(elem); \n }\n }\n toggleMessage();\n elem.addEventListener('input', toggleMessage);\n\n })\n return that.pass;\n }\n\n setInvoiceDocument(elem_invoice_document, data){\n elem_invoice_document.setAttribute('data', data.invoice_document.service_url);\n elem_invoice_document.setAttribute('type', data.invoice_document.content_type);\n elem_invoice_document.setAttribute('src', data.invoice_document.service_url);\n }\n\n verify_token(){\n let that = this;\n const urlParams = new URLSearchParams(window.location.search);\n const token = urlParams.get('token');\n const application_id = urlParams.get('scf_application_id');\n let inv_type = 'invoice_discounting'\n let tmpl = document.getElementById('counter-party-invoice-confirmation-tmpl');\n let rejectTmpl = document.getElementById('counter-party-invoice-confirmation-reject-tmpl');\n let successTmpl = document.getElementById('counter-party-invoice-confirmation-success-tmpl');\n let tokenNull = document.getElementById('invocie-token-null-templ')\n let target = document.getElementById('cpInvoiceConfirmationPage');\n if (token){\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + \"/verify-invoice-token\", Constants.REQUEST.post, {token: token, inv_type: inv_type, scf_application_id: application_id})\n .then(function (response){\n if(response.data.valid_token==false){\n let rendered = Mustache.render(tokenNull.innerHTML, target);\n target.innerHTML = rendered\n }\n else if(response.data.valid_token == true){\n if (response.data.cp_invoice_confirmation_done == true && response.data.allowed == false){\n let rendered = Mustache.render(successTmpl.innerHTML, target);\n target.innerHTML = rendered;\n }else{\n if (response.data.is_admin == true){\n let rendered = Mustache.render(tmpl.innerHTML, target);\n target.innerHTML = rendered;\n } else {\n let rendered = Mustache.render(tmpl.innerHTML, target);\n target.innerHTML = rendered;\n }\n let elem_invoice_document = document.getElementById('inv_verification_document');\n that.setInvoiceDocument(elem_invoice_document, response.data);\n that.submitInvoiceConfirmation(); \n }\n }\n else {\n let rendered = Mustache.render(rejectTmpl.innerHTML, target);\n target.innerHTML = rendered\n }\n })\n }\n }\n\n submitInvoiceConfirmation(){\n let that = this;\n document.getElementById('btn-buyer-invoice-decision').addEventListener('click', function (){\n if (!that.validateValues()) {\n Utils.showToast('Validation Error', 'All fields are mandatory', Constants.TOAST.fail);\n return;\n }\n let decisionInvoice = document.getElementById('invoice_buyer_decision').value;\n let invoiceComment = document.getElementById('invoice_buyer_comment').value;\n const urlParams = new URLSearchParams(window.location.search);\n const application_id = urlParams.get('scf_application_id');\n let body = {\n decision_invoice: decisionInvoice,\n remarks: invoiceComment,\n inv_type: 'invoice_discounting',\n scf_application_id: application_id\n }\n let successTmpl = document.getElementById('counter-party-invoice-confirmation-success-tmpl');\n let target = document.getElementById('cpInvoiceConfirmationPage');\n Utils.requestHandler(\"/scf/api/invoice/\" + that.invoice_id + '/buyer-verified', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n let rendered = Mustache.render(successTmpl.innerHTML, target);\n target.innerHTML = rendered\n Utils.showToast(response.message, 'Invoice Verified Sucessfully', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n}","import {DocumentUtils, Utils} from \"../../core/utils\";\r\nimport * as Constants from \"../../core/constants\";\r\nimport Mustache from \"mustache\";\r\nimport {ScfPermission} from \"../scf_auth_handler\";\r\nimport {ScfAppPanelInvoice} from \"../application/scf_app_panel_invoice\";\r\nimport {SERVICE_BASE_BACKOFFICE} from \"../../core/constants\";\r\n\r\nexport class ScfInvoice {\r\n \r\n constructor(){\r\n Utils.initializePagers('pager-invoice');\r\n Utils.pageSanityHandler();\r\n this.userWisePanelHandler();\r\n this.userWisePermissoin();\r\n this.invoice_id = document.getElementById('invoice_id').value;\r\n this.scf_application_id = null;\r\n this.elem_invoice_document = document.getElementById('inv_document');\r\n this.elem_invoice_document_2 = document.getElementById('inv_document_2');\r\n this.elem_div_inv_data = document.getElementById('div_inv_data');\r\n this.scf_invoice_irn_document=null;\r\n \r\n this.elem_irn_modal_header = document.getElementById('irn_modal_header');\r\n this.elem_irn_modal = new bootstrap.Modal(document.getElementById('irn_modal'), {});\r\n \r\n this.invoice_no = null;\r\n this.invoice_po = null;\r\n this.invoice_date = null;\r\n this.due_date = null;\r\n this.irn = null;\r\n this.eway_bill = null;\r\n this.invoice_amount = null;\r\n this.amount_paid = null;\r\n this.amount_due = null;\r\n this.terms = null;\r\n this.buyer = null;\r\n this.buyer_gstin = null;\r\n this.seller = null;\r\n this.seller_gstin = null;\r\n this.verified = null;\r\n this.tranch_no = this.tranch_no;\r\n this.disbursement_date = this.disbursement_date;\r\n this.loan_tenure = this.loan_tenure;\r\n this.roi = this.roi;\r\n this.realized_interest = this.realized_interest;\r\n this.principal_due = this.principal_due;\r\n this.outstanding_due = this.outstanding_due;\r\n this.late_payment_charges = this.late_payment_charges;\r\n this.other_charges = this.other_charges;\r\n this.principal_dpd = this.principal_dpd;\r\n this.interest_dpd = this.interest_dpd;\r\n this.invoice_aging = this.invoice_aging;\r\n this.closed_date = this.closed_date;\r\n this.invoice_status = this.invoice_status;\r\n this.eod_date = this.eod_date;\r\n \r\n this.elem_scf_application_id = document.getElementById('scf_application_id');\r\n this.scf_invoice_irn_document=document.getElementById('irn_document');\r\n this.elem_scf_lender_application_id = document.getElementById('scf_lender_application_id');\r\n this.elem_scf_counter_party = document.getElementById('scf_counter_party');\r\n this.elem_scf_inv_status = document.getElementById('scf_inv_status');\r\n this.elem_invoice_no = document.getElementById('inv_no');\r\n this.elem_invoice_po = document.getElementById('inv_po');\r\n this.elem_invoice_date = document.getElementById('inv_date');\r\n this.elem_due_date = document.getElementById('inv_due_date');\r\n this.elem_irn = document.getElementById('inv_irn');\r\n this.elem_eway_bill = document.getElementById('inv_eway_bill');\r\n this.elem_invoice_amount = document.getElementById('inv_amount');\r\n this.elem_buyer = document.getElementById('buyer');\r\n this.elem_buyer_gstin = document.getElementById('buyer_gstin');\r\n this.elem_seller = document.getElementById('supplier');\r\n this.elem_seller_gstin = document.getElementById('supplier_gstin');\r\n this.elem_verified = document.getElementById('inv_verified');\r\n this.elem_e_invoice = document.getElementById('e_invoice_required');\r\n this.elem_tranch_no = document.getElementById('tranch_no');\r\n this.elem_disbursement_date = document.getElementById('disbursement_date');\r\n this.elem_loan_tenure = document.getElementById('loan_tenure');\r\n this.elem_roi = document.getElementById('roi');\r\n this.elem_realized_interest = document.getElementById('realized_interest');\r\n this.elem_principal_due = document.getElementById('principal_due');\r\n this.elem_outstanding_due = document.getElementById('outstanding_due');\r\n this.elem_late_payment_charges = document.getElementById('late_payment_charges');\r\n this.elem_other_charges = document.getElementById('other_charges');\r\n this.elem_principal_dpd = document.getElementById('principal_dpd');\r\n this.elem_interest_dpd = document.getElementById('interest_dpd');\r\n this.elem_invoice_aging = document.getElementById('invoice_aging');\r\n this.elem_closed_date = document.getElementById('closed_date');\r\n this.elem_invoice_status = document.getElementById('invoice_status');\r\n this.elem_eod_date = document.getElementById('eod_date');\r\n \r\n this.elem_div_irn_upload = document.getElementById('div_irn_upload');\r\n this.elem_btn_submit_irn = document.getElementById('btn-irn-upload-modal');\r\n this.elem_irn_preview = document.getElementById('irn_preview');\r\n let urlParams = new URLSearchParams(window.location.search);\r\n this.scf_application_invoice_id = urlParams.get('scf_application_id');\r\n this.lender_hsn = document.getElementById('inv_lender_hsn');\r\n \r\n new Drawdown(this.elem_scf_application_id);\r\n new BuyerVerification();\r\n new BankDetails();\r\n }\r\n \r\n userWisePermissoin() {\r\n if (ScfPermission.isScfLender()){\r\n document.getElementById(\"btn-invoice-submit\").classList.add(\"no-display\");\r\n }\r\n }\r\n \r\n userWisePanelHandler(){\r\n if(ScfPermission.isScfBorrower()){\r\n document.getElementById('pager-invoice').querySelectorAll('.pager-items').forEach(\r\n element => {\r\n element.classList.add('no-display')\r\n });\r\n document.getElementById('btn-inv-cp-verify').classList.add('no-display');\r\n }else if(ScfPermission.isScfCounterparty()){\r\n document.getElementById('pager-invoice').querySelectorAll('.pager-items').forEach(\r\n element => {\r\n element.classList.add('no-display')\r\n });\r\n document.getElementById('btn-inv-edit').classList.add('no-display');\r\n }\r\n // document.getElementById('nav-invoice-details').classList.remove('no-display');\r\n document.getElementById('nav-panel-drawdowns').classList.add(\"no-display\");\r\n if(ScfPermission.isInvoiceUploader()){\r\n document.getElementById('nav-panel-scoring').classList.add(\"no-display\");\r\n document.getElementById('nav-panel-drawdowns').classList.add(\"no-display\");\r\n }\r\n }\r\n \r\n getValues(){\r\n this.elem_invoice_no = document.getElementById('inv_no');\r\n this.elem_invoice_po = document.getElementById('inv_po');\r\n this.elem_invoice_date = document.getElementById('inv_date');\r\n this.elem_due_date = document.getElementById('inv_due_date');\r\n this.elem_irn = document.getElementById('inv_irn');\r\n this.elem_eway_bill = document.getElementById('inv_eway_bill');\r\n this.elem_invoice_amount = document.getElementById('inv_amount');\r\n this.elem_buyer = document.getElementById('buyer');\r\n this.elem_buyer_gstin = document.getElementById('buyer_gstin');\r\n this.elem_seller = document.getElementById('supplier');\r\n this.elem_seller_gstin = document.getElementById('supplier_gstin');\r\n this.elem_verified = document.getElementById('inv_verified');\r\n this.elem_e_invoice = document.getElementById('e_invoice_required');\r\n this.tranch_no = this.elem_tranch_no ? Utils.getter(this.elem_tranch_no) : null;\r\n this.disbursement_date = this.elem_disbursement_date ? Utils.getter(this.elem_disbursement_date) : null;\r\n this.loan_tenure = this.elem_loan_tenure ? Utils.getter(this.elem_loan_tenure) : null;\r\n this.roi = this.elem_roi ? Utils.getter(this.elem_roi) : null;\r\n console.log(this.roi, \"get value method value\");\r\n \r\n this.realized_interest = this.elem_realized_interest ? Utils.getter(this.elem_realized_interest) : null;\r\n this.principal_due = this.elem_principal_due ? Utils.getter(this.elem_principal_due) : null;\r\n this.outstanding_due = this.elem_outstanding_due ? Utils.getter(this.elem_outstanding_due) : null;\r\n this.late_payment_charges = this.elem_late_payment_charges ? Utils.getter(this.elem_late_payment_charges) : null;\r\n this.other_charges = this.elem_other_charges ? Utils.getter(this.elem_other_charges) : null;\r\n this.principal_dpd = this.elem_principal_dpd ? Utils.getter(this.elem_principal_dpd) : null;\r\n this.interest_dpd = this.elem_interest_dpd ? Utils.getter(this.elem_interest_dpd) : null;\r\n this.invoice_aging = this.elem_invoice_aging ? Utils.getter(this.elem_invoice_aging) : null;\r\n this.closed_date = this.elem_closed_date ? Utils.getter(this.elem_closed_date) : null;\r\n this.invoice_status = this.elem_invoice_status ? Utils.getter(this.elem_invoice_status) : null;\r\n this.eod_date = this.elem_eod_date ? Utils.getter(this.elem_eod_date) : null;\r\n \r\n this.invoice_no = Utils.getter(this.elem_invoice_no);\r\n this.invoice_po = Utils.getter(this.elem_invoice_po);\r\n this.invoice_date = Utils.getter(this.elem_invoice_date);\r\n this.due_date = Utils.getter(this.elem_due_date);\r\n this.irn = Utils.getter(this.elem_irn);\r\n this.eway_bill = Utils.getter(this.elem_eway_bill);\r\n this.invoice_amount = Utils.getter(this.elem_invoice_amount);\r\n this.amount_paid = 0;\r\n this.amount_due = 0;\r\n this.terms = 0;\r\n this.buyer = Utils.getter(this.elem_buyer);\r\n this.buyer_gstin = Utils.getter(this.elem_buyer_gstin);\r\n this.seller = Utils.getter(this.elem_seller);\r\n this.seller_gstin = Utils.getter(this.elem_seller_gstin);\r\n this.verified = Utils.getter(this.elem_verified);\r\n }\r\n \r\n validateValues() {\r\n let that = this;\r\n that.pass = true;\r\n document.querySelectorAll('.invoice-details-question').forEach(function (elem) {\r\n let label = elem.getAttribute('data-label');\r\n Utils.reInput(elem);\r\n function toggleMessage() {\r\n let value = elem.value;\r\n if (!value) {\r\n Utils.showInputError(elem, label + ' is mandatory');\r\n that.pass = false;\r\n } else {\r\n if ((elem.id === 'inv_amount' || elem.id === 'inv_no') && parseFloat(value) < 0) {\r\n Utils.showInputError(elem, label + ' should be a positive number');\r\n that.pass = false;\r\n } \r\n else if(elem.id==='inv_due_date' && value<=that.invoice_date ){\r\n Utils.showInputError(elem,'Due Date should be greater than Invoice Date');\r\n that.pass=false;\r\n }else{\r\n Utils.hideInputError(elem);\r\n }\r\n }\r\n }\r\n toggleMessage();\r\n elem.addEventListener('input', toggleMessage);\r\n })\r\n return that.pass;\r\n }\r\n \r\n handler(){\r\n this.getInvoiceData();\r\n this.updateInvoice();\r\n }\r\n \r\n invoiceBackbutton(){\r\n document.getElementById('btn-back').addEventListener('click', function(e){\r\n e.preventDefault();\r\n window.history.back();\r\n setTimeout(function() {\r\n document.getElementById('nav-invoice').click();\r\n }, 10);\r\n })\r\n }\r\n \r\n setInvoiceDocument(data) {\r\n if (!data.invoice_document || data.invoice_document.length === 0) {\r\n console.error('No invoice documents found in data');\r\n return;\r\n }\r\n function createOrUpdateElement(container, url, contentType) {\r\n if (contentType.startsWith('image/')) {\r\n container.innerHTML = `\"Invoice`;\r\n container.classList.add('embed-image');\r\n container.classList.remove('embed-pdf');\r\n } else if (contentType.startsWith('application/pdf')) {\r\n container.innerHTML = ``;\r\n container.classList.add('embed-pdf');\r\n container.classList.remove('embed-image');\r\n }\r\n }\r\n const documentContainer = document.getElementById('inv_document_container');\r\n const document2Container = document.getElementById('inv_document_2_container');\r\n createOrUpdateElement(documentContainer, data.invoice_document[0].service_url, data.invoice_document[0].content_type);\r\n if ((ScfPermission.isScfAdmin() || ScfPermission.isScfSuperAdmin()) && data.invoice_document.length > 1) {\r\n createOrUpdateElement(document2Container, data.invoice_document[1].service_url, data.invoice_document[1].content_type);\r\n document2Container.style.height = '45%';\r\n documentContainer.style.height = '45%';\r\n } else {\r\n document2Container.style.display = 'none';\r\n documentContainer.style.height = '100%';\r\n }\r\n }\r\n \r\n \r\n transformData(data){\r\n data.invoice.amount_due = 0;\r\n if(data.invoice.total_invoice_value && data.invoice.amount_paid){\r\n data.invoice.amount_due = parseInt(parseFloat(data.invoice.total_invoice_value) - parseFloat(data.invoice.amount_paid));\r\n }\r\n return data;\r\n }\r\n \r\n setInvoiceData(data){\r\n let that = this;\r\n let tmpl = document.getElementById('invoice-tmpl');\r\n let d = this.transformData(data);\r\n let rendered = Mustache.render(tmpl.innerHTML, d);\r\n this.elem_div_inv_data.append($.parseHTML(rendered)[1]);\r\n document.getElementById('cp_inovice_confirmation_link').setAttribute('href', '/scf/invoice/' + data.invoice.id + '/cp-verification' + '?token=' + data.invoice.invoice_token + '&scf_application_id=' + that.scf_application_invoice_id);\r\n document.getElementById('buyer').value = data.invoice.buyer_id;\r\n this.getBuyerGstins();\r\n const e = new Event(\"change\");\r\n const element = document.getElementById('buyer');\r\n element.dispatchEvent(e);\r\n \r\n \r\n this.buyer_gstin = data.invoice.buyer_gstin;\r\n document.getElementById('cp_id').value = data.invoice.buyer_id;\r\n document.getElementById('supplier_gstin').value = data.invoice.supplier_gstin;\r\n document.getElementById('inv_verified').value = data.invoice.verified;\r\n document.getElementById('e_invoice_required').value = data.invoice.e_invoice;\r\n document.getElementById('inv_lender_hsn').value = data.invoice.invoice_hsn;\r\n if (data.hsn_required === 'No') {\r\n document.getElementById('inv_lender_hsn').classList.add(\"no-display\");\r\n document.getElementById('invoice_hsn_required').classList.add(\"no-display\");\r\n }\r\n \r\n if (data.e_invoice == 'No') {\r\n document.getElementById('envoce_required').classList.add(\"no-display\");\r\n document.getElementById('e_invoice_required').classList.add(\"no-display\");\r\n }\r\n \r\n if (data.e_invoice === 'No'){\r\n document.getElementById('e_invoice_and_hsn').classList.add(\"no-display\");\r\n }\r\n \r\n this.uploadIrn();\r\n this.sendEmail();\r\n this.invoiceBackbutton();\r\n }\r\n \r\n getIrnDocument(){\r\n let that = this;\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id, Constants.REQUEST.get, {inv_type: 'invoice_discounting', scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n that.scf_invoice_irn_document=response.data.invoice.irn_document;\r\n document.getElementById('irn_document').classList.remove(\"no-display\");\r\n let irnDocumentLink = document.getElementById('irn_document');\r\n irnDocumentLink.href = that.scf_invoice_irn_document;\r\n irnDocumentLink.textContent = \"View Here\";\r\n }\r\n })\r\n }\r\n \r\n getInvoiceData(){\r\n let that = this;\r\n let urlParams = new URLSearchParams(window.location.search);\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id, Constants.REQUEST.get, {inv_type: 'invoice_discounting', scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n that.scf_application_id = response.data.invoice.application_id;\r\n that.scf_invoice_irn_document = response.data.invoice.irn_document;\r\n if(response.data.invoice.status === 'verified'){\r\n document.getElementById('btn-invoice-submit').classList.add('d-none');\r\n // that.invoiceBuyerApprove();\r\n }\r\n if(response.data.invoice.status === 'buyer_approved'){\r\n document.getElementById('btn-invoice-submit').classList.add('d-none');\r\n // that.invoiceBuyerReject();\r\n }\r\n\r\n if(response.data.invoice.status === 'buyer_approved'){\r\n document.getElementById('btn-invoice-reject').classList.remove('d-none');\r\n }\r\n if(response.data.invoice.irn_document){\r\n setTimeout(function(){\r\n let irnDocumentLink = document.getElementById('irn_document');\r\n irnDocumentLink.href = that.scf_invoice_irn_document;\r\n irnDocumentLink.textContent = \"View Here\";\r\n }, 100);\r\n }\r\n \r\n if(response.data.invoice.status === 'verified' || response.data.invoice.status === 'buyer_approved' || response.data.invoice.status === 'buyer_rejected' || response.data.invoice.status === 'flexi_approved' || response.data.invoice.status === 'flexi_rejected' || response.data.invoice.status === 'sent_to_checker'){\r\n document.getElementById('btn-invoice-submit').classList.add('d-none');\r\n }\r\n else{\r\n setTimeout(function(){\r\n document.getElementById('irn_document').classList.add(\"no-display\");\r\n }, 100);\r\n }\r\n that.elem_scf_application_id.value = that.scf_application_id;\r\n document.getElementById('scf_application_id_info').innerText = `Application Id: ${response.data.application_id}`;\r\n document.getElementById('trade_name_info').innerText = `Trade Name: ${response.data.trade_name}`;\r\n document.getElementById('business_applicant_info').innerText = `Business Applicant: ${response.data.business_applicant_name}`;\r\n that.elem_scf_lender_application_id.value = response.data.invoice.scf_lender_application_id;\r\n that.elem_scf_inv_status.value = response.data.invoice.status;\r\n if (response.data.invoice.status == 'flexi_approved' || response.data.invoice.status == 'sent_to_checker' || response.data.invoice.status === 'sent_for_ddr' || response.data.invoice.status === 'lender_disbursed') {\r\n document.getElementById('nav-panel-drawdowns').classList.remove(\"no-display\");\r\n }\r\n if (response.data.invoice.status == 'created' || response.data.invoice.status == 'finance_requested' || response.data.invoice.status === 'buyer_approved' || response.data.invoice.status === 'buyer_rejected'){\r\n document.getElementById('nav-panel-scoring').classList.add(\"no-display\");\r\n }\r\n if (ScfPermission.isInvoiceUploader()){\r\n document.getElementById('nav-panel-drawdowns').classList.add(\"no-display\");\r\n }\r\n that.setInvoiceData(response.data);\r\n that.setInvoiceDocument(response.data);\r\n new Score(response.data);\r\n if (response.data.product == 'purchase_invoice_discounting'){\r\n document.getElementById('verified_by_cp_modal').classList.add(\"no-display\");\r\n } \r\n if(response.data.invoice.status === 'flexi_approved'){\r\n document.getElementById('btn-inv-sent-to-checker').classList.remove('d-none');\r\n document.getElementById('btn-inv-decision').classList.add('d-none');\r\n document.getElementById('inv-submit-score').classList.add('d-none');\r\n }\r\n if(response.data.invoice.status === 'sent_to_checker' && ScfPermission.isScfAdmin()){\r\n document.getElementById('send-for-draw-down').classList.remove('d-none')\r\n document.getElementById('reject-from-ddr').classList.remove('d-none')\r\n }\r\n if(response.data.invoice.status === 'sent_for_ddr'){\r\n document.getElementById('btn-inv-decision').classList.add('d-none')\r\n document.getElementById('send-for-draw-down').classList.add('d-none')\r\n document.getElementById('reject-from-ddr').classList.add('d-none')\r\n }\r\n }else{\r\n window.history.back();\r\n setTimeout(function() {\r\n document.getElementById('nav-invoice').click();\r\n }, 10);\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n }\r\n \r\n invoiceFlexiApproveReject(){\r\n let that = this;\r\n document.getElementById('btn-invoice-flexi-approve').classList.remove('d-none');\r\n document.getElementById('btn-invoice-flexi-reject').classList.remove('d-none');\r\n document.getElementById('btn-invoice-flexi-approve').addEventListener('click', function() {\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/buyer-approve', Constants.REQUEST.post, {\r\n inv_type: 'invoice_discounting',\r\n scf_application_id: that.scf_application_invoice_id\r\n }).then(function(response) {\r\n if(response.message === 'OK'){\r\n Utils.showToast('Approved', response.data.invoice, Constants.TOAST.success);\r\n document.getElementById('btn-invoice-flexi-approve').classList.add('d-none');\r\n document.getElementById('btn-invoice-flexi-reject').classList.add('d-none');\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n });\r\n \r\n document.getElementById('btn-invoice-flexi-reject').addEventListener('click', function() {\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/buyer-reject', Constants.REQUEST.post, {\r\n inv_type: 'invoice_discounting',\r\n scf_application_id: that.scf_application_invoice_id\r\n }).then(function(response) {\r\n if(response.message === 'OK'){\r\n Utils.showToast('Rejected', response.data.invoice, Constants.TOAST.fail);\r\n document.getElementById('btn-invoice-flexi-approve').classList.add('d-none');\r\n document.getElementById('btn-invoice-flexi-reject').classList.add('d-none');\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n });\r\n };\r\n \r\n invoiceBuyerApprove(){\r\n let that = this;\r\n document.getElementById('btn-invoice-approve').classList.remove('d-none');\r\n document.getElementById('btn-invoice-reject').classList.remove('d-none');\r\n document.getElementById('btn-invoice-approve').addEventListener('click', function() {\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/buyer-approve', Constants.REQUEST.post, {\r\n inv_type: 'invoice_discounting',\r\n scf_application_id: that.scf_application_invoice_id\r\n }).then(function(response) {\r\n if(response.message === 'OK'){\r\n Utils.showToast('Approved', response.data.invoice, Constants.TOAST.success);\r\n document.getElementById('btn-invoice-approve').classList.add('d-none');\r\n document.getElementById('btn-invoice-reject').classList.add('d-none');\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n });\r\n };\r\n \r\n invoiceBuyerReject(){\r\n let that = this;\r\n document.getElementById('btn-invoice-reject').addEventListener('click', function() {\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/buyer-reject', Constants.REQUEST.post, {\r\n inv_type: 'invoice_discounting',\r\n scf_application_id: that.scf_application_invoice_id\r\n }).then(function(response) {\r\n if(response.message === 'OK'){\r\n Utils.showToast('Rejected', response.data.invoice, Constants.TOAST.fail);\r\n document.getElementById('btn-invoice-approve').classList.add('d-none');\r\n document.getElementById('btn-invoice-reject').classList.add('d-none');\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n });\r\n }\r\n updateInvoice(){\r\n let that = this;\r\n document.getElementById('btn-invoice-submit').addEventListener('click', function(){\r\n that.getValues();\r\n if(that.validateValues()){\r\n let body = {\r\n inv_type: 'invoice_discounting',\r\n invoice_no: that.invoice_no,\r\n purchase_order_no: that.invoice_po,\r\n invoice_date: that.invoice_date,\r\n due_date: that.due_date,\r\n irn: that.irn,\r\n e_way_bill_number: that.eway_bill,\r\n total_invoice_value: parseFloat(that.invoice_amount),\r\n amount_paid: that.amount_paid,\r\n pay_terms: that.terms,\r\n buyer_id: that.buyer,\r\n buyer_gstin: that.buyer_gstin,\r\n supplier_id: that.seller,\r\n supplier_gstin: that.seller_gstin,\r\n invoice_line_items: [],\r\n verified: that.verified,\r\n scf_application_id: that.scf_application_invoice_id,\r\n lender_hsn: document.getElementById('inv_lender_hsn').value,\r\n e_invoice: document.getElementById('e_invoice_required').value,\r\n tranch_no: document.getElementById('tranch_no').value,\r\n disbursement_date: document.getElementById('disbursement_date').value,\r\n loan_tenure: document.getElementById('loan_tenure').value,\r\n roi: document.getElementById('roi').value,\r\n realized_interest: document.getElementById('realized_interest').value,\r\n principal_due: document.getElementById('principal_due').value,\r\n outstanding_due: document.getElementById('outstanding_due').value,\r\n late_payment_charges: document.getElementById('late_payment_charges').value,\r\n other_charges: document.getElementById('other_charges').value,\r\n principal_dpd: document.getElementById('principal_dpd').value,\r\n interest_dpd: document.getElementById('interest_dpd').value,\r\n invoice_aging: document.getElementById('invoice_aging').value,\r\n closed_date: document.getElementById('closed_date').value,\r\n invoice_status: document.getElementById('invoice_status').value,\r\n eod_date: document.getElementById('eod_date').value\r\n }\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id, Constants.REQUEST.post, body)\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n Utils.showToast('Updated', response.data.invoice, Constants.TOAST.success);\r\n document.getElementById('btn-invoice-submit').disabled=true;\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n \r\n \r\n getBuyerGstins(){\r\n let that = this;\r\n document.getElementById('buyer').addEventListener('change', function(){\r\n let buyer = document.getElementById('buyer');\r\n let option = buyer.options[buyer.selectedIndex];\r\n let buyer_cp_id = option.getAttribute('value')\r\n Utils.requestHandler('/scf/api/counter_party/' + buyer_cp_id + '/gst-all', Constants.REQUEST.get, {})\r\n .then(function (response){\r\n let buyer_gstin = document.getElementById('buyer_gstin');\r\n buyer_gstin.innerHTML = '';\r\n if(response.message === 'OK'){\r\n let opt = document.createElement('option');\r\n opt.value = '';\r\n opt.innerHTML = 'Select GSTIN';\r\n buyer_gstin.append(opt);\r\n response.data.gstins.forEach(gst => {\r\n let opt = document.createElement('option');\r\n opt.value = gst.gstin;\r\n opt.innerHTML = gst.gstin;\r\n buyer_gstin.append(opt);\r\n })\r\n buyer_gstin.value = that.buyer_gstin;\r\n Utils.showToast('Fetched', 'GSTINs fetched', Constants.TOAST.success);\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n })\r\n }\r\n \r\n \r\n uploadIrn(){\r\n let that = this;\r\n DocumentUtils.bindInputElement(that.elem_div_irn_upload, null);\r\n DocumentUtils.showOfflinePreview(that.elem_div_irn_upload, that.elem_irn_preview);\r\n document.getElementById('btn-irn-upload').addEventListener('click', function (){\r\n document.querySelectorAll('.invoice-stage').forEach(function (elem){\r\n elem.classList.add('no-display')\r\n })\r\n document.getElementById('irn_stage_upload').classList.remove('no-display');\r\n that.elem_irn_modal_header.innerHTML = 'Upload IRN photo';\r\n that.elem_irn_modal.show();\r\n that.uploadIrnImage();\r\n })\r\n }\r\n \r\n static bindInputElement(action_element){\r\n action_element.addEventListener('click', function(){\r\n let inp_elem = action_element.parentElement.querySelector('.file-input');\r\n if (!inp_elem.files || inp_elem.files.length === 0) {\r\n inp_elem.dispatchEvent(new MouseEvent('click'));\r\n }\r\n })\r\n }\r\n \r\n static getFileData(inp_elem, more_params = null){\r\n let file_data = [];\r\n Array.from(inp_elem.files).forEach(function (fls){\r\n let body = new FormData();\r\n body.set('file_data', fls)\r\n body.set('file_name', fls.name);\r\n if(more_params){\r\n for (const m in more_params) {\r\n body.set(m, more_params[m]);\r\n }\r\n }\r\n file_data.push(body);\r\n })\r\n return file_data;\r\n }\r\n \r\n uploadIrnImage(){\r\n const inp_elem = this.elem_div_irn_upload.parentElement.querySelector('.file-input');\r\n const that = this;\r\n document.getElementById('btn-irn-upload-modal').addEventListener('click', function(){\r\n let body = {\r\n scf_application_id: that.scf_application_invoice_id\r\n };\r\n let fileData = ScfInvoice.getFileData(inp_elem, body);\r\n if (fileData.length > 0) {\r\n fileData.forEach(function(fileBody) {\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/irn-upload', Constants.REQUEST.post, fileBody)\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n Utils.showToast('Uploaded', 'Document uploaded', Constants.TOAST.success);\r\n that.elem_irn_modal.hide();\r\n setTimeout(function() {\r\n that.getIrnDocument();\r\n }, 4000);\r\n } else {\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n });\r\n });\r\n } else {\r\n Utils.showToast('Error', 'No files selected', Constants.TOAST.fail);\r\n }\r\n });\r\n } \r\n \r\n uploadIrnHelper() {\r\n const that = this;\r\n const inp_elem = that.elem_div_irn_upload.parentElement.querySelector('.file-input');\r\n this.elem_btn_submit_irn.addEventListener('click', function() {\r\n let body = {\r\n scf_application_id: that.scf_application_invoice_id\r\n };\r\n DocumentUtils.uploadOnElementTrigger(that.elem_btn_submit_irn, inp_elem, '/scf/api/invoice/' + that.invoice_id + '/irn-upload', body);\r\n });\r\n that.elem_btn_submit_irn.addEventListener('ev_document_uploaded', function() {\r\n Utils.clean(document.getElementById('irn_stage_upload'));\r\n that.elem_irn_preview.innerHTML = null;\r\n that.elem_irn_modal.hide();\r\n });\r\n }\r\n \r\n \r\n sendEmail(){\r\n let that = this;\r\n let body = {\r\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\r\n req_type: \"post\",\r\n scf_application_id:that.scf_application_invoice_id\r\n }\r\n document.getElementById('cp_invoice_send_email_confirmation').addEventListener('click', function() {\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/send-confirmation-link', Constants.REQUEST.post, body)\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n Utils.showToast(response.message, 'Email confirmation sent', Constants.TOAST.success);\r\n }else{\r\n Utils.showToast(response.message, response.errors.message, Constants.TOAST.fail);\r\n }\r\n })\r\n })\r\n }\r\n }\r\n \r\n class BankDetails {\r\n \r\n constructor(){\r\n this.account_no = null;\r\n this.ifsc_code = null;\r\n this.account_holder_name = null;\r\n this.account_type = null;\r\n \r\n this.elem_account_no = null;\r\n this.elem_ifsc_code = null;\r\n this.elem_account_holder_name = null;\r\n this.elem_account_type = null;\r\n this.elem_banking_details = document.getElementById('banking_details');\r\n \r\n this.setBankingDetails();\r\n this.getBankingDetails();\r\n if(!ScfPermission.isScfLender()){\r\n document.getElementById('btn-sanction').classList.add(\"no-display\");\r\n }\r\n }\r\n \r\n getBankingDetails(){\r\n document.getElementById('nav-panel-drawdowns').addEventListener('click', function(){\r\n Utils.requestHandler(\"/scf/api/counter_party/\" + document.getElementById('cp_id').value, Constants.REQUEST.get, {}).then(function (response){\r\n document.getElementById('account_no').value = response.data.cp_confirmed_bank_account.account_number;\r\n document.getElementById('ifsc_code').value = response.data.cp_confirmed_bank_account.ifsc_code;\r\n document.getElementById('account_holder_name').value = response.data.cp_confirmed_bank_account.primary_account_holder_name;\r\n });\r\n });\r\n }\r\n \r\n setBankingDetails(){\r\n let tmpl = document.getElementById('invoice-banking-tmpl');\r\n let rendered = Mustache.render(tmpl.innerHTML, {});\r\n \r\n this.elem_banking_details.append($.parseHTML(rendered)[1]);\r\n this.elem_account_no = document.getElementById('account_no');\r\n this.elem_ifsc_code = document.getElementById('ifsc_code');\r\n this.elem_account_holder_name = document.getElementById('account_holder_name');\r\n this.elem_account_type = document.getElementById('account_type');\r\n \r\n this.elem_account_no.addEventListener('input', function (){\r\n Utils.reInput(this);\r\n })\r\n this.elem_ifsc_code.addEventListener('input', function (){\r\n Utils.reInput(this);\r\n })\r\n this.elem_account_holder_name.addEventListener('input', function (){\r\n Utils.reInput(this);\r\n })\r\n // this.saveBankingDetails();\r\n }\r\n \r\n getValues(){\r\n this.account_no = Utils.getter(this.elem_account_no);\r\n this.ifsc_code = Utils.getter(this.elem_ifsc_code);\r\n this.account_holder_name = Utils.getter(this.elem_account_holder_name);\r\n this.account_type = Utils.getter(this.elem_account_type);\r\n }\r\n \r\n validateValues(){ \r\n let pass = true; \r\n if(!this.account_no){\r\n Utils.showInputError(this.elem_account_no, 'Account no is mandatory');\r\n pass = false;\r\n }\r\n \r\n if(!this.ifsc_code){\r\n Utils.showInputError(this.elem_ifsc_code, 'IFSC code is mandatory');\r\n pass = false;\r\n }\r\n \r\n if(!this.account_holder_name){\r\n Utils.showInputError(this.elem_account_holder_name, 'Account Holder name is mandatory');\r\n pass = false;\r\n }\r\n \r\n if(!this.account_type){\r\n Utils.showInputError(this.elem_account_type, 'Account Type is mandatory');\r\n pass = false;\r\n }\r\n return pass;\r\n }\r\n }\r\n \r\n class BuyerVerification {\r\n \r\n constructor() {\r\n let that = this;\r\n this.invoice_id = document.getElementById('invoice_id').value;\r\n this.elem_submit_buyer_btn = document.getElementById('btn-buyer-inv-decision');\r\n let urlParams = new URLSearchParams(window.location.search);\r\n this.scf_application_invoice_id = urlParams.get('scf_application_id');\r\n this.buyerVerify();\r\n }\r\n \r\n buyerVerify(){\r\n let that = this;\r\n that.elem_submit_buyer_btn.addEventListener('click', function (){\r\n Utils.requestHandler(\"/scf/api/invoice/\" + that.invoice_id + '/buyer-verified', Constants.REQUEST.post, {inv_type: 'invoice_discounting', scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response) {\r\n if (response.message === 'OK') {\r\n Utils.showToast('Success', 'Verified by maker', Constants.TOAST.success);\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n })\r\n }\r\n }\r\n \r\n class Drawdown {\r\n constructor(elem_scf_application_id){\r\n this.elem_scf_application_id = elem_scf_application_id;\r\n this.elem_scf_lender_application_id = document.getElementById('scf_lender_application_id');\r\n this.elem_scf_inv_status = document.getElementById('scf_inv_status');\r\n this.elem_sanction_checker = document.getElementById('btn-sanction');\r\n this.invoice_id = document.getElementById('invoice_id').value;\r\n this.submitChecker();\r\n this.financingPartnerChange();\r\n this.disbursedInvoice();\r\n let urlParams = new URLSearchParams(window.location.search);\r\n this.scf_application_invoice_id = urlParams.get('scf_application_id');\r\n }\r\n \r\n checkerLenderFinance(){\r\n let that = this;\r\n document.getElementById('nav-panel-drawdowns').addEventListener('click', function (){\r\n document.querySelectorAll('.invoice-stage').forEach(function (elem){\r\n elem.classList.add('no-display')\r\n })\r\n document.getElementById('inv_stage_req_fin_1').classList.remove('no-display');\r\n Utils.requestHandler(\"/scf/api/application/\" + that.elem_scf_application_id.value + '/app-limits', Constants.REQUEST.get, {})\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n if(response.data.lenders.length > 0){\r\n let dd = document.getElementById('inv_scf_lender_app');\r\n dd.innerHTML = null;\r\n let option = document.createElement('option');\r\n option.value = \"\";\r\n option.text = \"\";\r\n dd.add(option);\r\n response.data.lenders.forEach(function (limit_data){\r\n // if(limit_data.limit_type === 'lender_limit') {\r\n let option = document.createElement('option');\r\n option.value = limit_data.scf_lender_applications_id;\r\n option.setAttribute('data-foobar', JSON.stringify(limit_data));\r\n option.text = limit_data.lender_name;\r\n dd.add(option);\r\n // }\r\n })\r\n }\r\n }\r\n })\r\n if(that.elem_scf_inv_status.value === 'sanctioned') {\r\n that.elem_sanction_checker.setAttribute('disabled', 'disabled');\r\n that.elem_sanction_checker.innerHTML = 'Disbursement initiated'\r\n that.elem_sanction_checker.classList.remove('no-display');\r\n }\r\n })\r\n }\r\n \r\n financingPartnerChange(){\r\n let that = this;\r\n document.getElementById('inv_scf_lender_app').addEventListener('change', function () {\r\n Utils.requestHandler(\"/scf/api/invoice/\" + that.invoice_id + '/disburstment-data', Constants.REQUEST.get, {scf_lender_applications_id: document.getElementById('inv_scf_lender_app').value, inv_type: 'invoice_discounting', scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response) {\r\n document.getElementById('inv_sap_transaction_fee').textContent = \"-\";\r\n document.getElementById('processing_fee_value_label').textContent;\r\n document.getElementById('inv_sap_amount').textContent = \"-\"\r\n document.getElementById('inv_sap_funding_requested').textContent = \"-\";\r\n document.getElementById('inv_sap_margin').textContent = \"-\";\r\n document.getElementById('inv_sap_damount').textContent = \"-\";\r\n document.getElementById('inv_sap_activedis').textContent = \"-\";\r\n document.getElementById('inv_sap_roi').textContent = \"-\";\r\n document.getElementById('inv_sap_repay_date').textContent = \"-\";\r\n document.getElementById('inv_sap_repay').textContent = \"-\";\r\n document.getElementById('inv_sap_tenure').textContent = \"-\";\r\n document.getElementById('invoice_int_mode').textContent = \"-\";\r\n if(response.data.disbursal_data!=null && response.data.disbursal_data!=undefined){\r\n if (response.data.program_rule != null && response.data.program_rule != undefined){\r\n document.getElementById('inv_sap_transaction_fee').textContent = response.data.program_rule.transaction_fee_amount.max_value;\r\n document.getElementById('invoice_int_mode').textContent = response.data.program_rule.int_mode_value;\r\n document.getElementById('trans_fee_value_label').textContent = \"Transaction Fee [\" + response.data.program_rule.invoice_transcation_amount_applied_on + \"]\";\r\n if (response.data.program_rule.invoice_transcation_fee_applied_on != 'Yes') {\r\n document.getElementById('trans_fee_value_label').classList.add('no-display')\r\n document.getElementById('inv_sap_transaction_fee').classList.add('no-display')\r\n }\r\n }\r\n document.getElementById('inv_sap_amount').textContent = response.data.disbursal_data.invoice_amount;\r\n document.getElementById('inv_sap_funding_requested').textContent = response.data.disbursal_data.funding_amount;\r\n document.getElementById('inv_sap_margin').textContent = response.data.disbursal_data.margin;\r\n document.getElementById('inv_sap_damount').textContent = response.data.disbursal_data.disbursment_permissible;\r\n document.getElementById('inv_sap_activedis').textContent = response.data.disbursal_data.active_disbursment;\r\n document.getElementById('inv_sap_roi').textContent = response.data.disbursal_data.roi;\r\n document.getElementById('inv_sap_repay_date').textContent = response.data.disbursal_data.repayment_date;\r\n document.getElementById('inv_sap_repay').textContent = response.data.disbursal_data.disbursment_amount;\r\n document.getElementById('inv_sap_tenure').textContent = response.data.disbursal_data.tenure;\r\n }\r\n });\r\n })\r\n }\r\n \r\n disbursedInvoice(){\r\n let that = this;\r\n document.getElementById('nav-panel-drawdowns').addEventListener('click', function (){\r\n Utils.requestHandler(\"/scf/api/invoice/\" + that.invoice_id + '/disburstment-data', Constants.REQUEST.get,{scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n Utils.showToast(response.message, 'Disburshed fetched Sucessfully', Constants.TOAST.success);\r\n if(response.data.disbursal_data!=null && response.data.disbursal_data!=undefined){\r\n document.getElementById('inv_scf_lender_app').textContent = response.data.disbursal_data.lender_name;\r\n document.getElementById('inv_scf_lender_app').disabled = true;\r\n document.getElementById('inv_sap_amount').textContent = response.data.disbursal_data.invoice_amount;\r\n document.getElementById('inv_sap_funding_requested').textContent = response.data.disbursal_data.funding_amount;\r\n document.getElementById('inv_sap_margin').textContent = response.data.disbursal_data.margin;\r\n document.getElementById('inv_sap_damount').textContent = response.data.disbursal_data.disbursment_permissible;\r\n document.getElementById('inv_sap_activedis').textContent = response.data.disbursal_data.active_disbursment;\r\n document.getElementById('inv_sap_roi').textContent = response.data.disbursal_data.roi;\r\n document.getElementById('inv_sap_repay_date').textContent = response.data.disbursal_data.repayment_date;\r\n document.getElementById('inv_sap_repay').textContent = response.data.disbursal_data.disbursment_amount;\r\n document.getElementById('inv_sap_tenure').textContent = response.data.disbursal_data.tenure;\r\n document.getElementById('inv_sap_transaction_fee').textContent = response.data.program_rule.transaction_fee_amount;\r\n document.getElementById('invoice_int_mode').textContent = response.data.program_rule.int_mode_value;\r\n if (response.data.program_rule.invoice_transcation_fee_applied_on != 'Yes') {\r\n document.getElementById('trans_fee_value_label').classList.add('d-none')\r\n document.getElementById('inv_sap_transaction_fee').classList.add('d-none')\r\n }\r\n if (response.data.program_rule.invoice_transcation_fee_applied_on == 'Yes'){\r\n document.getElementById('trans_fee_value_label').innerHTML += \" [\"+response.data.program_rule.invoice_transcation_fee_applied_on+\" ]\";\r\n document.getElementById('inv_sap_transaction_fee').innerHTML = response.data.program_rule.transaction_fee_amount;\r\n }\r\n document.getElementById('inv_sap_transaction_fee').textContent = response.data.program_rule.transaction_fee_amount;\r\n document.getElementById('inv_sap_transaction_fee').setAttribute('disabled', 'disabled');\r\n }\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n document.getElementById('nav-panel-scoring').click();\r\n }\r\n })\r\n })\r\n }\r\n \r\n submitChecker(){\r\n let that = this;\r\n that.elem_sanction_checker.addEventListener('click', function (){\r\n Utils.requestHandler(\"/scf/api/invoice/\" + that.invoice_id + '/checker/sanction', Constants.REQUEST.post, {inv_type: 'invoice_discounting', scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response) {\r\n if (response.message === 'OK') {\r\n Utils.showToast('Success', 'Invoice verified by checker', Constants.TOAST.success);\r\n that.elem_sanction_maker.classList.add('no-display');\r\n that.elem_sanction_checker.classList.remove('no-display');\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n })\r\n }\r\n }\r\n \r\n class Score {\r\n constructor(inv_data){\r\n this.score = null;\r\n this.decision = null;\r\n this.comment = null;\r\n this.invoice_id = inv_data.invoice.id;\r\n \r\n this.elem_score = null;\r\n this.elem_decision = null;\r\n this.elem_comment = null;\r\n \r\n this.div_panel_score = document.getElementById('panel-score');\r\n \r\n this.renderInvoiceScore(inv_data);\r\n this.handler();\r\n this.invoice_status = document.getElementById('scf_inv_status').value;\r\n if(this.invoice_status == 'flexi_approved' || this.invoice_status == 'flexi_rejected' || this.invoice_status == 'sent_to_checker' || this.invoice_status == 'sent_for_ddr' || this.invoice_status === 'rejected_from_ddr' || this.invoice_status === 'lender_sanctioned' || this.invoice_status === 'lender_rejected' || this.invoice_status === 'lender_disbursed' || this.invoice_status === 'sent_for_ddr'){\r\n document.getElementById('btn-inv-decision').classList.add(\"no-display\");\r\n }\r\n if(this.invoice_status != 'approved'){\r\n document.getElementById('verified_by_cp_modal').classList.add(\"no-display\");\r\n }\r\n let urlParams = new URLSearchParams(window.location.search);\r\n this.scf_application_invoice_id = urlParams.get('scf_application_id');\r\n }\r\n \r\n handler(){\r\n let that=this;\r\n that.userWisePermissoin();\r\n }\r\n \r\n userWisePermissoin() {\r\n if (ScfPermission.isScfLender()){\r\n document.getElementById(\"inv-submit-score\").classList.add(\"no-display\");\r\n document.getElementById(\"verified_by_cp_modal\").classList.add(\"no-display\");\r\n }\r\n }\r\n \r\n \r\n getValues(){\r\n this.elem_score = document.getElementById('inv_score');\r\n this.elem_decision = document.getElementById('inv_decision');\r\n this.elem_comment = document.getElementById('inv_comment');\r\n \r\n this.score = Utils.getter(this.elem_score);\r\n this.decision = Utils.getter(this.elem_decision);\r\n this.comment = this.elem_comment.value;\r\n }\r\n \r\n renderInvoiceScore(inv_data){\r\n let tmpl = document.getElementById('tmpl-inv-score');\r\n let rendered = Mustache.render(tmpl.innerHTML, inv_data);\r\n this.div_panel_score.innerHTML = '';\r\n this.div_panel_score.append($.parseHTML(rendered)[1]);\r\n document.getElementById('inv_comment').value = inv_data.invoice.remarks;\r\n document.getElementById('inv_decision').value = inv_data.invoice.status;\r\n this.submitScore();\r\n this.submitDecision();\r\n this.sendTOChecker();\r\n this.submitDrawDownRequest();\r\n this.invoiceDDRreject();\r\n }\r\n \r\n validateScoring(){\r\n let that = this;\r\n that.pass = true;\r\n document.querySelectorAll('.scoring-details-question').forEach(function (elem){\r\n let label = elem.getAttribute('data-label');\r\n Utils.reInput(elem);\r\n function toggleMessage(){\r\n let value = elem.value;\r\n if(!value){\r\n Utils.showInputError(elem, label + ' is mandatory');\r\n that.pass = false;\r\n }else{\r\n Utils.hideInputError(elem);\r\n }\r\n }\r\n toggleMessage();\r\n elem.addEventListener('input', toggleMessage);\r\n })\r\n return that.pass;\r\n \r\n }\r\n \r\n validateDecision(){\r\n let that = this;\r\n that.pass = true;\r\n document.querySelectorAll('.invocie-decision-question').forEach(function (elem){\r\n let label = elem.getAttribute('data-label');\r\n Utils.reInput(elem);\r\n function toggleDecision(){\r\n let value = elem.value;\r\n if(!value){\r\n Utils.showInputError(elem, label + ' is mandatory');\r\n that.pass = false;\r\n } else {\r\n Utils.hideInputError(elem);\r\n }\r\n }\r\n toggleDecision();\r\n elem.addEventListener('input', toggleDecision);\r\n });\r\n return that.pass;\r\n }\r\n \r\n submitScore(){\r\n let that = this;\r\n document.getElementById('inv-submit-score').addEventListener('click', function(){\r\n that.getValues();\r\n if (that.score <= 0) {\r\n Utils.showToast('Error', 'Invalid Score', Constants.TOAST.fail);\r\n return;\r\n }\r\n that.validateScoring();\r\n if(that.pass){\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/score', Constants.REQUEST.post, {score: that.score, scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n Utils.showToast('Submitted', 'Invoice Score', Constants.TOAST.success);\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n invoiceDDRreject(){\r\n let that = this;\r\n document.getElementById('reject-from-draw-down').addEventListener('click', function() {\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/reject-draw-down-request', Constants.REQUEST.post, {\r\n inv_type: 'invoice_discounting',\r\n scf_application_id: that.scf_application_invoice_id\r\n }).then(function(response) {\r\n if(response.message === 'OK'){\r\n Utils.showToast('Rejected', response.data.invoice, Constants.TOAST.fail);\r\n document.getElementById('btn-invoice-flexi-approve').classList.add('d-none');\r\n document.getElementById('btn-invoice-flexi-reject').classList.add('d-none');\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n });\r\n }\r\n \r\n submitDecision(){\r\n let that = this;\r\n document.getElementById('btn-inv-decision').addEventListener('click', function(){\r\n that.getValues();\r\n that.validateDecision();\r\n if(that.pass){\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/decision', Constants.REQUEST.post, {decision: that.decision, remarks: that.comment, inv_type: 'invoice_discounting', scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n Utils.showToast('Submitted', 'Invoice decision', Constants.TOAST.success);\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n sendTOChecker(){\r\n let that = this;\r\n document.getElementById('btn-inv-sent-to-checker').addEventListener('click', function(){\r\n that.getValues();\r\n that.validateDecision();\r\n if(that.pass){\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/invoice-checker', Constants.REQUEST.post, {scf_application_id: that.scf_application_invoice_id})\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n document.getElementById('btn-inv-decision').classList.add('d-none')\r\n document.getElementById('inv-submit-score').classList.add('d-none')\r\n Utils.showToast('Invoice', response.data.invoice, Constants.TOAST.success);\r\n }else{\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n submitDisbursement(){\r\n let that = this;\r\n document.getElementById('btn-disbursement-submit').addEventListener('click', function() {\r\n let body = {\r\n invoice_amount: document.getElementById('inv_sap_amount').innerText,\r\n funding_requested: document.getElementById('inv_sap_funding_requested').innerText,\r\n disbursement_permissible: document.getElementById('inv_sap_damount').innerText,\r\n active_disbursement: document.getElementById('inv_sap_activedis').innerText,\r\n repayment_date: document.getElementById('inv_sap_repay_date').innerText,\r\n repayment_amount: document.getElementById('inv_sap_repay').innerText,\r\n scf_lender_applications_id: document.getElementById('inv_scf_lender_app').value, \r\n inv_type: 'invoice_discounting',\r\n scf_application_id: that.scf_application_invoice_id\r\n }\r\n Utils.requestHandler(\"/scf/api/invoice/\" + that.invoice_id + '/submit-disbursment', Constants.REQUEST.post, body)\r\n .then(function (response) {\r\n if(response.message === 'OK'){\r\n Utils.showToast(response.message, 'Financing Partner Submitted Successfully', Constants.TOAST.success);\r\n }else{\r\n Utils.showToast('Error','Select Financing Partner', Constants.TOAST.fail);\r\n }\r\n });\r\n });\r\n document.getElementById('btn-disbursement-submit').click();\r\n }\r\n \r\n submitDrawDownRequest(){\r\n let that = this;\r\n document.getElementById('send-for-draw-down').addEventListener('click', function(){\r\n let body = {\r\n url: SERVICE_BASE_BACKOFFICE + '/v2/draw-down-request',\r\n scf_application_id: that.scf_application_invoice_id\r\n }\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/send-draw-down-request', Constants.REQUEST.post, body)\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n Utils.showToast('DDR', 'DDR sent successfully', Constants.TOAST.success);\r\n document.getElementById('send-for-draw-down').classList.add('d-none');\r\n that.submitDisbursement();\r\n } else {\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n })\r\n }\r\n\r\n rejectDrawDownRequest(){\r\n let that = this;\r\n document.getElementById('reject-from-ddr').addEventListener('click', function(){\r\n let body = {\r\n url: SERVICE_BASE_BACKOFFICE + '/v2/draw-down-request',\r\n scf_application_id: that.scf_application_invoice_id\r\n }\r\n Utils.requestHandler('/scf/api/invoice/' + that.invoice_id + '/send-draw-down-request', Constants.REQUEST.post, body)\r\n .then(function (response){\r\n if(response.message === 'OK'){\r\n Utils.showToast('DDR', 'DDR sent successfully', Constants.TOAST.success);\r\n document.getElementById('reject-from-ddr').classList.add('d-none');\r\n that.submitDisbursement();\r\n } else {\r\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\r\n }\r\n })\r\n })\r\n }\r\n }\r\n","import {Utils, DocumentUtils} from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\nimport ScfOnbPanelDocument from './scf_onb_panel_document';\nimport ScfUdyamPanel from \"./scf_udyam_panel\";\nimport ScfBankingModule from \"./scf_onb_panel_banking\";\nimport ScfPromoterModule from \"./scf_onb_panel_promoter\";\nimport ScfPreApproval from \"./scf_pre_approval_panel\";\nimport ScfOnbPanelCounterParty from \"./scf_onb_panel_counterparty\";\nimport Moment from \"moment\";\nimport { ScfPermission } from \"../scf_auth_handler\";\n\n\nclass AbstractUser{\n\n constructor() {\n this.user_id = null;\n this.email = null;\n this.mobile = null;\n this.first_name = null;\n this.last_name = null;\n this.elem_email = document.getElementById('user_email');\n this.elem_mobile = document.getElementById('user_mobile');\n this.elem_mobile_otp = document.getElementById('user_mobile_otp');\n this.elem_email_otp = document.getElementById('user_email_otp');\n this.elem_pasword = document.getElementById('user_password');\n /* this.elem_pasword.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_mobile.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_mobile_otp.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_email.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_email_otp.addEventListener('input', function (){\n Utils.reInput(this);\n })\n */ \n }\n\n getValues(){\n this.email = Utils.getter(this.elem_email) == null ? \"\" : Utils.getter(this.elem_email).toLowerCase();\n this.mobile = Utils.getter(this.elem_mobile);\n this.first_name = Utils.capitalizeFirstLetter(Utils.getter(this.elem_mobile_otp));\n this.last_name = Utils.capitalizeFirstLetter(Utils.getter(this.elem_email_otp));\n this.name_of_org = Utils.getter(this.elem_pasword);\n }\n\n setValues(){\n Utils.setter(this.elem_email, this.email);\n Utils.setter(this.elem_mobile, this.mobile);\n Utils.setter(this.elem_mobile_otp, this.first_name);\n Utils.setter(this.elem_email_otp, this.last_name);\n Utils.setter(this.elem_pasword, this.name_of_org);\n return true;\n }\n\n validateValues() {\n let pass = true;\n\n if(!this.email){\n Utils.showInputError(this.elem_email, 'Email is mandatory');\n pass = false;\n }else if(!Utils.validatorEmail(this.email)){\n Utils.showInputError(this.elem_email, 'Incorrect email');\n pass = false;\n }\n if(!this.mobile){\n Utils.showInputError(this.elem_mobile, 'Mobile is mandatory');\n pass = false;\n }else if(!Utils.validatorMobile(this.mobile)){\n Utils.showInputError(this.elem_mobile, 'Incorrect mobile number');\n pass = false;\n }\n if(!this.first_name){\n Utils.showInputError(this.elem_mobile_otp, 'First name is mandatory');\n pass = false;\n }else if(!Utils.validatorText(this.first_name)){\n Utils.showInputError(this.elem_mobile_otp, 'Incorrect first name');\n pass = false;\n }\n if(!this.last_name){\n Utils.showInputError(this.elem_email_otp, 'Last name is mandatory');\n pass = false;\n }else if(!Utils.validatorText(this.last_name)){\n Utils.showInputError(this.elem_email_otp, 'Incorrect last name');\n pass = false;\n }\n if(!this.name_of_org){\n Utils.showInputError(this.elem_pasword, 'Organization name is mandatory');\n pass = false;\n }\n return pass;\n }\n\n}\n\nclass AbstractPan{\n\n constructor() {\n this.company_pan = null;\n this.company_pan_type = null;\n this.company_name = null;\n this.elem_company_pan = document.getElementById('company_pan');\n this.elem_company_pan_type = document.getElementById('company_pan_type');\n this.elem_company_name = document.getElementById('company_name');\n this.elem_company_pan.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_company_pan_type.addEventListener('change', function (){\n Utils.reInput(this);\n })\n }\n\n getValues(){\n this.company_pan = Utils.getter(this.elem_company_pan).toUpperCase();\n this.company_pan_type = Utils.getter(this.elem_company_pan_type);\n this.company_name = Utils.getter(this.elem_company_name);\n }\n\n setValues(){\n Utils.setter(this.elem_company_pan, this.company_pan);\n Utils.setter(this.elem_company_pan_type, this.company_pan_type);\n Utils.setter(this.elem_company_name, this.company_name);\n return true;\n }\n\n validateValues() {\n let pass = true;\n if(!this.company_pan_type){\n Utils.showInputError(this.elem_company_pan_type, 'Constitution is mandatory');\n pass = false;\n }\n if(!this.company_pan){\n Utils.showInputError(this.elem_company_pan, 'PAN is mandatory');\n pass = false;\n }\n\n if(this.company_pan && this.company_pan_type){\n if(this.company_pan_type === 'sole_proprietorship' && this.company_pan[3] !== 'P'){\n Utils.showInputError(this.elem_company_pan, 'Not a valid PAN for this constitution');\n pass = false;\n }else if(['private_ltd', 'public'].includes(this.company_pan_type) && this.company_pan[3] !== 'C'){\n Utils.showInputError(this.elem_company_pan, 'Not a valid PAN for this constitution');\n pass = false;\n }else if(['llp', 'partnership'].includes(this.company_pan_type) && this.company_pan[3] !== 'F'){\n Utils.showInputError(this.elem_company_pan, 'Not a valid PAN for this constitution');\n pass = false;\n }\n }\n return pass;\n } \n}\n\nclass AbstractMCA {\n constructor() {\n this.company_name = null;\n this.cin_or_llp_id = null;\n this.company_type = null;\n this.date_of_inc = null;\n this.company_address = null;\n this.company_city = null;\n this.company_state = null;\n this.company_zipcode = null;\n this.roc_code = null;\n this.company_email = null;\n this.elem_srch_company_cin = document.getElementById('srch_company_cin')\n this.elem_srch_company_name = document.getElementById('srch_company_name')\n this.elem_srch_company_list = document.getElementById('srch_company_list')\n this.elem_company_name = document.getElementById('mca_company_name')\n this.elem_cin_or_llp_id = document.getElementById('cin_or_llp_id')\n this.elem_company_type = document.getElementById('company_type')\n this.elem_date_of_inc = document.getElementById('date_of_inc')\n this.elem_company_address = document.getElementById('company_address')\n this.elem_company_city = document.getElementById('company_city')\n this.elem_company_state = document.getElementById('company_state')\n this.elem_roc_code = document.getElementById('roc_code')\n this.elem_company_zipcode = document.getElementById('company_zipcode')\n this.elem_company_email = document.getElementById('company_email');\n this.elem_select_company_modal = new bootstrap.Modal(document.getElementById('select_company_modal'), {});\n }\n\n getValues(){\n this.cin_or_llp_id = Utils.getter(this.elem_cin_or_llp_id).toUpperCase();\n this.company_name = Utils.getter(this.elem_company_name);\n this.company_type = Utils.getter(this.elem_company_type);\n this.date_of_inc = Utils.getter(this.elem_date_of_inc);\n this.company_address = Utils.getter(this.elem_company_address);\n this.company_city = Utils.getter(this.elem_company_city);\n this.company_state = Utils.getter(this.elem_company_state);\n this.company_zipcode = Utils.getter(this.elem_company_zipcode);\n this.roc_code = Utils.getter(this.elem_roc_code);\n this.company_email = Utils.getter(this.elem_company_email);\n }\n\n setValues(){\n Utils.setter(this.elem_company_name, this.company_name);\n Utils.setter(this.elem_cin_or_llp_id, this.cin_or_llp_id);\n Utils.setter(this.elem_company_type, this.company_type);\n Utils.setter(this.elem_date_of_inc, this.date_of_inc);\n Utils.setter(this.elem_company_address, this.company_address);\n Utils.setter(this.elem_company_city, this.company_city);\n Utils.setter(this.elem_company_state, this.company_state);\n Utils.setter(this.elem_company_zipcode, this.company_zipcode);\n Utils.setter(this.elem_roc_code, this.roc_code);\n Utils.setter(this.elem_company_email, this.company_email);\n return true;\n }\n\n}\n\nclass AbstractQuestion {\n\n constructor(){\n this.quest_values = {};\n }\n\n getValues(){\n let that = this;\n let all_quest = document.getElementsByClassName('questions-onb');\n [...all_quest].forEach(element => {\n that.quest_values[element.getAttribute('data-label')] = element.value\n });\n return true;\n }\n\n setValues(){\n let that = this;\n let all_quest = document.getElementsByClassName('questions-onb');\n [...all_quest].forEach(element => {\n Utils.setter(element, that.quest_values[element.getAttribute('data-label')]);\n });\n return true;\n }\n\n validateValues(){\n let pass = true;\n let that = this;\n let pan = localStorage.getItem('pan');\n let all_quest = null;\n if (pan[3] == 'C') {\n all_quest = document.querySelectorAll('#mca-tab .questions-onb');\n }else{\n all_quest = document.querySelectorAll('#gst-tab .questions-onb');\n }\n // let all_quest = document.getElementsByClassName('questions-onb');\n [...all_quest].forEach(element => {\n if(!element.value){\n function toggleErrorMessage() {\n let value = element.value;\n if (!value) {\n Utils.showInputError(element, 'Field is mandatory');\n } else {\n Utils.hideInputError(element);\n }\n }\n toggleErrorMessage();\n element.addEventListener('input', toggleErrorMessage);\n pass = false;\n }else if(element.getAttribute('data-label') == 'avg_monthly_sales' && !Utils.validatorNumber(element.value)) {\n Utils.showInputError(element, 'Invalid number');\n pass = false;\n }\n });\n return pass\n }\n}\n\nclass AbstractApplication{\n constructor() {\n this.required_amount = 0;\n this.required_tenure = null;\n this.product = null;\n this.required_amount_head = 0;\n this.elem_required_tenure = document.getElementById('application_tenure_required');\n this.elem_required_amount_range = document.getElementById('required_amount');\n // this.elem_required_amount_head = document.getElementById('required_amount_head');\n this.elem_application_product = document.getElementById('application_product');\n let that = this;\n // this.elem_required_amount_range.addEventListener('input', function (){\n // that.elem_required_amount_head.innerText = Utils.indianRepresentation(this.value);\n // })\n this.elem_application_product.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_required_tenure.addEventListener('input', function (){\n Utils.reInput(this);\n });\n that.productSelectHandler()\n }\n\n productSelectHandler() {\n document.getElementById('application_product').addEventListener('change', function() {\n let tenureField = document.getElementById('application_tenure_required');\n const selectedProduct = this.value;\n const errorMessage = tenureField.nextElementSibling;\n tenureField.innerHTML = '';\n if (errorMessage && errorMessage.classList.contains('error')) {\n errorMessage.classList.add('no-display');\n }\n \n if (selectedProduct === 'short_term_loan') {\n const inputField = document.createElement('input');\n inputField.type = 'number';\n inputField.className = 'form-control form-control-lg';\n inputField.id = 'application_tenure_required';\n inputField.placeholder = 'Enter tenure';\n inputField.max = 120;\n if (inputField.value === '') {\n errorMessage.textContent = 'Please enter a value between 1 and 120';\n errorMessage.classList.remove('no-display');\n }\n // Add event listener for input validation\n inputField.addEventListener('input', function() {\n const value = parseInt(this.value, 10);\n if (value > 120 || value <= 0) {\n errorMessage.textContent = 'Please enter a value between 1 and 120';\n errorMessage.classList.remove('no-display');\n } else {\n errorMessage.classList.add('no-display');\n }\n });\n \n tenureField.parentNode.replaceChild(inputField, tenureField);\n } else {\n const selectField = document.createElement('select');\n selectField.className = 'form-select form-control-lg';\n selectField.ariaLabel = 'vintage';\n selectField.id = 'application_tenure_required';\n selectField.dataset.label = 'vintage';\n \n const options = [\n { value: '', text: 'Select an option', disabled: true, selected: true },\n { value: '0-30 days', text: '0-30 days' },\n { value: '30-60 days', text: '30-60 days' },\n { value: '60-90 days', text: '60-90 days' },\n { value: '> 90 days', text: '> 90 days' }\n ];\n \n options.forEach(optionData => {\n const option = document.createElement('option');\n option.value = optionData.value;\n option.textContent = optionData.text;\n if (optionData.disabled) option.disabled = true;\n if (optionData.selected) option.selected = true;\n selectField.appendChild(option);\n });\n if (selectField.value === '') {\n errorMessage.textContent = 'Please select an option';\n errorMessage.classList.remove('no-display');\n } \n selectField.addEventListener('change', function() {\n if (this.value === '') {\n errorMessage.textContent = 'Please select an option';\n errorMessage.classList.remove('no-display');\n } else {\n errorMessage.classList.add('no-display');\n }\n }, { once: true });\n \n tenureField.parentNode.replaceChild(selectField, tenureField);\n }\n });\n }\n \n getValues(){\n // this.required_amount = Utils.getter(this.elem_required_amount_range);\n this.required_tenure = document.getElementById('application_tenure_required').value;\n this.required_amount = document.getElementById('required_amount').value;\n this.product = Utils.getter(this.elem_application_product);\n }\n\n setValues(){\n Utils.setter(this.elem_required_amount_range, this.required_amount);\n Utils.setter(this.elem_application_product, this.product);\n Utils.setter(this.elem_required_tenure, this.required_tenure);\n // this.elem_required_amount_head.innerText = Utils.indianRepresentation(this.required_amount)\n return true;\n }\n\n validateValues() {\n let pass = true;\n let that = this;\n let requiredAmountInput = document.getElementById('required_amount');\n \n function toggleErrorMessage() {\n let value = parseInt(requiredAmountInput.value, 10);\n if (isNaN(value) || value < 10000 || value > 100000000) {\n document.getElementById('error-required-amount').classList.remove('no-display');\n pass = false;\n } else {\n document.getElementById('error-required-amount').classList.add('no-display');\n }\n }\n requiredAmountInput.addEventListener('input', toggleErrorMessage);\n toggleErrorMessage();\n if (!this.product) {\n Utils.showInputError(this.elem_application_product, 'Product selection is mandatory');\n pass = false;\n }\n if (!this.required_tenure) {\n Utils.showInputError(this.elem_required_tenure, 'Tenure selection is mandatory');\n pass = false;\n }\n let business_type_elem=document.querySelectorAll('.question_product');\n business_type_elem.forEach(element => {\n if(!element.value){\n function toggleErrorMessage() {\n let value = element.value;\n if (!value) {\n Utils.showInputError(element, 'Field is mandatory');\n } else {\n Utils.hideInputError(element);\n }\n }\n toggleErrorMessage();\n element.addEventListener('input', toggleErrorMessage);\n pass = false;\n }\n });\n return pass;\n }\n}\n\nclass AbstractOwner {\n\n constructor(director_id) {\n this.director_id = director_id;\n this.first_name = null;\n this.last_name = null;\n this.email = null;\n this.mobile = null;\n this.city = null;\n this.state = null;\n this.address = null;\n this.gender = null;\n this.dob = null;\n this.pan = null;\n this.aadhaar = null;\n this.zipcode = null;\n this.elem_mobile_otp = document.getElementById('owner_first_name');\n this.elem_email_otp = document.getElementById('owner_last_name');\n this.elem_email = document.getElementById('owner_email');\n this.elem_mobile = document.getElementById('owner_mobile');\n this.elem_city = document.getElementById('owner_city');\n this.elem_state = document.getElementById('owner_state');\n this.elem_address = document.getElementById('owner_address');\n this.elem_gender = document.getElementById('owner_gender');\n this.elem_dob = document.getElementById('owner_dob');\n this.elem_pan = document.getElementById('owner_pan');\n this.elem_aadhaar = document.getElementById('owner_aadhaar');\n this.elem_zipcode = document.getElementById('owner_zipcode');\n\n this.elem_mobile_otp.addEventListener('input', function(){\n Utils.reInput(this);\n })\n\n this.elem_email_otp.addEventListener('input', function(){\n Utils.reInput(this);\n })\n\n this.elem_email.addEventListener('input', function(){\n Utils.reInput(this);\n })\n\n this.elem_mobile.addEventListener('input', function(){\n Utils.reInput(this);\n }) \n\n this.elem_city.addEventListener('input', function(){\n Utils.reInput(this);\n })\n\n this.elem_state.addEventListener('input', function(){\n Utils.reInput(this);\n })\n\n this.elem_address.addEventListener('input', function(){\n Utils.reInput(this);\n })\n\n this.elem_dob.addEventListener('input', function(){\n Utils.reInput(this);\n })\n\n this.elem_pan.addEventListener('input', function(){\n Utils.reInput(this);\n })\n\n this.elem_aadhaar.addEventListener('input', function(){\n Utils.reInput(this);\n }) \n\n this.elem_zipcode.addEventListener('input', function(){\n Utils.reInput(this);\n })\n }\n\n getValues(){\n this.first_name = Utils.getter(this.elem_mobile_otp);\n this.last_name = Utils.getter(this.elem_email_otp);\n this.email = Utils.getter(this.elem_email);\n this.mobile = Utils.getter(this.elem_mobile);\n this.city = Utils.getter(this.elem_city);\n this.state = Utils.getter(this.elem_state);\n this.address = Utils.getter(this.elem_address);\n this.gender = Utils.getter(this.elem_gender);\n this.dob = Utils.getter(this.elem_dob);\n this.pan = Utils.getter(this.elem_pan);\n this.aadhaar = Utils.getter(this.elem_aadhaar);\n this.zipcode = Utils.getter(this.elem_zipcode);\n }\n\n setValues(){\n Utils.setter(this.elem_mobile_otp, this.first_name);\n Utils.setter(this.elem_email_otp, this.last_name);\n Utils.setter(this.elem_email, this.email);\n Utils.setter(this.elem_mobile, this.mobile);\n Utils.setter(this.elem_city, this.city);\n Utils.setter(this.elem_state, this.state);\n Utils.setter(this.elem_address, this.address);\n Utils.setter(this.elem_gender, this.gender);\n Utils.setter(this.elem_dob, this.dob);\n Utils.setter(this.elem_pan, this.pan);\n Utils.setter(this.elem_aadhaar, this.aadhaar);\n Utils.setter(this.elem_zipcode, this.zipcode);\n }\n\n validateValues(){\n let result = true;\n if(!this.dob){\n Utils.showInputError(this.elem_dob, 'DOB is mandatory');\n result = false; \n }\n if(this.dob && (Moment(this.dob) - Moment()) > 0){\n Utils.showInputError(this.elem_dob, 'Date of Birth cannot be in future');\n result = false;\n }\n if(!this.mobile){\n Utils.showInputError(this.elem_mobile, 'Mobile is mandatory');\n result = false;\n }\n if(this.mobile && !Utils.validatorMobile(this.mobile)){\n Utils.showInputError(this.elem_mobile, 'Incorrect mobile number');\n result = false; \n }\n if(!this.zipcode){\n Utils.showInputError(this.elem_zipcode, 'Zipcode is mandatory');\n result = false; \n }\n if(!this.city){\n Utils.showInputError(this.elem_city, 'City is mandatory');\n result = false; \n }\n if(!this.state){\n Utils.showInputError(this.elem_state, 'State is mandatory');\n result = false; \n }\n if(!this.gender){\n Utils.showInputError(this.elem_gender, 'Gender is mandatory');\n result = false; \n }\n return result;\n }\n}\n\nclass AbstractBanking {\n\n constructor(id){\n this.id = id;\n this.account_number = null;\n this.account_type = null;\n this.account_holder = null;\n this.ifsc_code = null;\n this.bank_branch = null;\n this.bank_name = null;\n this.bank_micr = null;\n this.verified_account_holder = null;\n this.elem_account_number = document.getElementById('account_number');\n this.elem_account_holder = document.getElementById('account_holder');\n this.elem_account_type = document.getElementById('account_type');\n this.elem_ifsc_code = document.getElementById('ifsc_code');\n this.elem_bank_branch = document.getElementById('bank_branch');\n this.elem_bank_name = document.getElementById('bank_name');\n this.elem_bank_micr = document.getElementById('bank_micr');\n this.elem_verified_account_holder = document.getElementById('verified_account_holder');\n this.elem_bank_branch_full = document.getElementById('bank_branch_full');\n }\n\n getValues(){\n this.account_number = Utils.getter(this.elem_account_number);\n this.account_type = Utils.getter(this.elem_account_type);\n this.account_holder = Utils.getter(this.elem_account_holder);\n this.ifsc_code = Utils.getter(this.elem_ifsc_code);\n this.bank_branch = Utils.getter(this.elem_bank_branch);\n this.bank_name = Utils.getter(this.elem_bank_name);\n this.bank_micr = Utils.getter(this.elem_bank_micr);\n this.account_type = Utils.getter(this.elem_account_type);\n this.verified_account_holder = Utils.getter(this.elem_verified_account_holder);\n }\n\n setValues() {\n Utils.setter(this.elem_account_number, this.account_number);\n Utils.setter(this.elem_account_type, this.account_type);\n Utils.setter(this.elem_account_holder, this.account_holder);\n Utils.setter(this.elem_ifsc_code, this.ifsc_code);\n Utils.setter(this.elem_bank_branch, this.bank_branch);\n Utils.setter(this.elem_bank_name, this.bank_name);\n Utils.setter(this.elem_bank_micr, this.bank_micr);\n Utils.setter(this.elem_account_type, this.account_type);\n Utils.setter(this.elem_verified_account_holder, this.verified_account_holder);\n Utils.setter(this.elem_bank_branch_full, this.bank_branch);\n }\n\n validateValues(){\n return true;\n }\n}\n\nexport class ScfOnboarding{\n\n APP_MAX_ALLOWED_PANEL = 11;\n POST_APP_MAX_ALLOWED_PANEL = 13;\n\n constructor() {\n this.max_panel = 0;\n this.applicant_id = null;\n this.application_id = null;\n this.udyam_reg_no = null;\n this.is_edit = false;\n this.businessType=null;\n\n if(Constants.UAT){\n this.max_panel = this.APP_MAX_ALLOWED_PANEL;\n this.application_id = null;\n this.application_id = null;\n }\n this.obj_user = new AbstractUser();\n this.obj_pan = new AbstractPan();\n this.obj_application = new AbstractApplication();\n this.obj_mca = new AbstractMCA();\n this.obj_gst = [];\n this.obj_question = new AbstractQuestion();\n this.obj_owner = [];\n this.obj_banking = [];\n this.application_id = document.getElementById('scf_application_id').value;\n this.businessType = document.getElementById('businessType').value;\n this.elem_pan = document.getElementById('cp_pan');\n this.elem_mobile = document.getElementById('cp_mobile');\n this.elem_email = document.getElementById('cp_email');\n this.elem_name = document.getElementById('cp_name');\n this.elem_cp_extra_input_fields = document.getElementById('cp_extra_input_fields');\n this.elem_cp_vintage_month = document.getElementById('cp_vintage_month_select');\n this.elem_cp_vintage_year = document.getElementById('cp_vintage_year_select');\n this.elem_cp_contact_person_name = document.getElementById('cp_contact_person_name');\n this.elem_cp_contact_person_number = document.getElementById('cp_contact_person_number');\n this.elem_cp_contact_person_email = document.getElementById('cp_contact_person_email');\n this.elem_cp_contact_person_designation = document.getElementById('cp_contact_person_designation');\n this.elem_btn_cp_submit = document.getElementById('btn-cp-submit-counterparty');\n this.elem_btn_cp_validate = document.getElementById('btn-cp-validate-counterparty');\n // Utils.pageSanityHandler();\n this.elem_pan.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_mobile.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_email.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_cp_vintage_month.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_cp_vintage_year.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_cp_contact_person_designation.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_cp_contact_person_name.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_cp_contact_person_number.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_cp_contact_person_email.addEventListener('input', function (){\n Utils.reInput(this);\n })\n }\n\n handler(){\n this.userWisePanelHandler();\n this.editApplicationHandler();\n this.pagesValidator();\n this.changePageBasedOnEdit();\n // this.preApprovalPanelHandler();\n this.panelNavigationHandler();\n this.userPanelHandler();\n this.panPanelHandler();\n this.productPanelHandler();\n this.mcaPanelHandler();\n this.gstPanelHandler();\n this.completeOnboardingHandler();\n this.consenthandler();\n this.ownersPanelHandler();\n \n this.udyamPanelHandler();\n this.documentPanelHandler();\n this.counterPartyPanelHandler();\n this.consentPanelHandler();\n this.sideNavToggleHandler();\n this.businessPromoterDetailsHandler();\n this.setDefaultNavBar();\n this.formCardsToggle();\n // this.indicativeOfferPanelHandler();\n this.openModalAddCounterParty();\n this.fillCpVintageField();\n }\n\n userWisePanelHandler(){\n if (ScfPermission.isScfSales()) {\n document.getElementById(\"btn-consent-submit\").classList.add(\"no-display\");\n document.getElementById(\"btn_consent_add_skip\").classList.remove(\"no-display\");\n document.getElementById(\"btn-panel-consent\").classList.add(\"no-display\");\n document.getElementById('sales_consent_section').classList.remove(\"no-display\")\n }\n document.getElementById(\"btn-panel-complete\").classList.add(\"no-display\");\n }\n\n changePageBasedOnEdit(){\n if (this.is_edit == true){\n document.getElementById(\"btn-panel-consent\").classList.add(\"no-display\");\n document.getElementById('Build your Application_onb_module').classList.remove('d-none');\n }\n }\n \n \n\n fillCpVintageField() { \n let yearSelect = document.getElementById(\"cp_vintage_year_select\");\n let currentYear = new Date().getFullYear();\n for (let i = currentYear; i >= currentYear - 30; i--) {\n let option = document.createElement(\"option\");\n option.text = i;\n option.value = i;\n yearSelect.add(option);\n }\n }\n\n formCardsToggle(){\n const toggleIcons = document.querySelectorAll('[id$=\"_card_toggle_icon\"]');\n\n toggleIcons.forEach(icon => {\n icon.addEventListener('click', () => {\n\n const dynamicId = icon.id.replace('_toggle_icon', '');\n\n const dynamicElement = document.getElementById(dynamicId);\n \n\n if (dynamicElement) {\n dynamicElement.classList.toggle('d-none');\n }\n \n icon.classList.toggle('bi-chevron-down');\n icon.classList.toggle('bi-chevron-right');\n });\n });\n }\n\n pagesValidator(){\n let that = this;\n const panelLinks = document.querySelectorAll('[id^=\"btn-panel-\"]');\n\n // Add a click event listener to each element\n panelLinks.forEach(link => {\n link.addEventListener('click', function () {\n // Your logic here when a panel link is clicked\n const panelId = link.getAttribute('data-panel'); // You can retrieve the data-panel attribute if needed\n let body = {};\n if (that.application_id !== null && that.application_id !== undefined) {\n body = {\n scf_application_id: that.application_id\n }\n }\n Utils.requestHandler('/scf/api/onboarding/application' + '/onboarding_status/' + localStorage.getItem('business_applicant_id'), Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n const jsonData = response.data.onboarding_status;\n let firstFalseEncountered = false;\n let firstFalseElement;\n \n for (const key in jsonData) {\n if (jsonData.hasOwnProperty(key) && key !== 'latest') {\n const dataPanelNumberId = parseInt(key);\n const validationStatus = jsonData[key];\n \n const liElement = document.querySelector(`[data-panel-number-id=\"${dataPanelNumberId}\"]`);\n let elementId = \"panel_complete_check_\" + dataPanelNumberId;\n\n const icon = document.getElementById(elementId);\n \n if (liElement) {\n if (!validationStatus) {\n if (!firstFalseEncountered) {\n firstFalseEncountered = true;\n firstFalseElement = liElement;\n icon.classList.add('d-none');\n } else {\n liElement.classList.add('disabled-link');\n icon.classList.add('d-none');\n }\n } else {\n liElement.classList.remove('disabled-link');\n icon.classList.remove('d-none');\n }\n }\n }\n }\n \n // Remove the class from the first false element as an exception\n if (firstFalseElement) {\n firstFalseElement.classList.remove('disabled-link');\n }\n }\n else{\n \n // Utils.showToast(response.message, \"Please Add Atleast One Counter Party\", Constants.TOAST.fail);\n }\n })\n });\n });\n }\n\n\n\n businessPromoterDetailsHandler() {\n this.tempFeedData();\n this.tempUdyamSearch();\n this.tempUdyamAddressCopyPaste();\n this.populateNameFromPan();\n this.populateCityStateFromPincode();\n this.promoterDataSubmit();\n this.communicationAddressSubmit();\n this.populateTitleFromPanType();\n this.uploadDocumentsSubmit();\n this.bussinessAndPromotersSubmit();\n this.submitcpOnboarding();\n this.populateTitleRelationShipwith();\n this.populateRelationship();\n }\n\n populateTitleRelationShipwith() {\n const titleRelationShipwith = document.getElementById(\"titleRelationShipwith\");\n const relationships = [\"\",\"Father\", \"Mother\", \"Son\", \"Daughter\", \"Sister\", \"Brother\", \"Husband\", \"Wife\", \"Others\"];\n \n titleRelationShipwith.innerHTML = \"\"; \n\n relationships.forEach((relationship) => {\n const option = document.createElement(\"option\");\n option.text = relationship;\n option.value = relationship.toLowerCase().replace(' ', '_');\n\n titleRelationShipwith.add(option);\n });\n}\n\n populateRelationship(){\n document.getElementById('titleOfBorrower').addEventListener('change', function(){\n let title_of_borrower = document.getElementById('titleOfBorrower').value;\n if(title_of_borrower==='CO APPLICANT'){\n document.getElementById('relationshipHide').classList.remove(\"no-display\");\n document.getElementById('labelPromoterPan').classList.add(\"mt-4\");\n }\n else{\n document.getElementById('relationshipHide').classList.add(\"no-display\");\n document.getElementById('labelPromoterPan').classList.remove(\"mt-4\");\n }\n })\n }\n\n populateTitleFromPanType() {\n Utils.requestHandler(\"/scf/api/applicant/\" + localStorage.getItem('business_applicant_id'), Constants.REQUEST.get, {}).then(function (response) {\n const constitution = response.data.scf_applicant['constitution'];\n const titleOfBorrower = document.getElementById(\"titleOfBorrower\");\n const isCoapplicant = document.getElementById(\"isCoapplicant\");\n const titleOptionsMap = {\n \"partnership\": [\"Partner\", \"Authorized Signatory\",\"Co applicant\"],\n \"llp\": [\"Partner\", \"Authorized Signatory\",\"Co applicant\"],\n \"private_limited\": [\"Director\",\"Authorized Signatory\",\"Co applicant\"],\n \"public_company\": [\"Director\", \"Authorized Signatory\",\"Co applicant\"],\n \"sole_proprietorship\": [\"Proprietor\",\"Co applicant\"]\n };\n titleOfBorrower.innerHTML = \"\";\n if (constitution in titleOptionsMap) {\n titleOptionsMap[constitution].forEach((optionText) => {\n const option = document.createElement(\"option\");\n option.text = optionText;\n switch(optionText) {\n case \"Director\":\n option.value = \"DIRECTOR\";\n break;\n case \"Co applicant\":\n option.value = \"CO APPLICANT\";\n break;\n case \"Proprietor\":\n option.value = \"PROPRIETOR\";\n break;\n case \"Partner\":\n option.value = \"PARTNER\";\n break;\n case \"Authorized Signatory\":\n option.value = \"AUTHORIZED_SIGNATORY\";\n break;\n default:\n option.value = \"\";\n break;\n }\n titleOfBorrower.add(option);\n });\n }\n if(constitution==\"sole_proprietorship\"){\n document.getElementById(\"promotershareholding\").classList.add(\"no-display\");\n document.getElementById(\"label_share_holding\").classList.add(\"no-display\");\n }\n titleOfBorrower.addEventListener('change', function () {\n if (titleOfBorrower.value === \"PROPRIETOR\") {\n isCoapplicant.value = \"true\"; \n isCoapplicant.disabled = true; \n } else {\n isCoapplicant.value = \"false\"; \n isCoapplicant.disabled = false;\n }\n });\n });\n }\n\n setDefaultNavBar() {\n let button = document.getElementById([\"Check Your Eligibility_sidenav_toggle_parent\"]);\n let button2 = document.getElementById([\"Build your Application_sidenav_toggle_parent\"]);\n button.click();\n button2.click();\n let button_gst = document.getElementById(\"btn-panel-gst\");\n button_gst.click();\n }\n\n communicationAddressSubmit(){\n const communicationAddress = document.getElementById(\"communication-address-save\");\n communicationAddress.addEventListener('click', function () {\n const address = document.getElementById(\"businessContactAddress\").value;\n const pincode = document.getElementById(\"communicationZipcode\").value;\n const city = document.getElementById(\"communicationCity\").value;\n const state = document.getElementById(\"communicationState\").value;\n const primaryAddress = document.getElementById(\"primaryGstAddress\").value;\n const primaryCity = document.getElementById(\"primaryGstCity\").value;\n const primaryPincode = document.getElementById(\"primaryGstZipcode\").value;\n const primaryState = document.getElementById(\"primaryGstState\").value;\n const application_gst = document.getElementById(\"gstNumberUdyamPage\").value;\n let bankAccountSection = document.getElementById(\"communication-address-save\");\n\n // Create a data object to send to the API\n let body = {\n communication_address: address,\n communication_pincode: pincode,\n communication_city: city,\n communication_state: state,\n gst_number: application_gst\n };\n\n if (primaryAddress !== null && primaryCity !== null && primaryPincode !== null && primaryState !== null) {\n Utils.requestHandler('/scf/api/onboarding/application/' + document.getElementById('scf_application_id').value +'/business-details', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast('Created', 'Communication Address Created.', Constants.TOAST.success);\n bankAccountSection.scrollIntoView({ behavior: 'smooth' });\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n } else {\n Utils.showToast('Error', 'Primary Address is not complete.', Constants.TOAST.fail);\n }\n });\n\n }\n uploadDocumentsSubmit(){\n let that = this;\n const uploadAllDocuments = document.getElementById(\"upload-all-documents\");\n uploadAllDocuments.addEventListener('click', function () {\n Utils.requestHandler('/scf/api/onboarding/application/' + document.getElementById('scf_application_id').value +'/validate_documents', Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n if (ScfPermission.isScfSales() || that.is_edit == true) {\n document.getElementById('btn-panel-onb-complete').click();\n } else {\n that.proceedNext();\n }\n \n Utils.showToast('Success', 'All Documents Submitted', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n });\n\n }\n openModalAddCounterParty(){\n this.cp_modal = new bootstrap.Modal(document.getElementById('modal_cp_add'), {}); \n document.getElementById('btn_cp_add_modal_counterparty').addEventListener('click', () => {\n this.cp_modal.show();\n this.resetCpForm(); \n this.elem_pan.removeAttribute('readonly');\n this.elem_mobile.removeAttribute('readonly');\n this.elem_email.removeAttribute('readonly');\n this.elem_cp_extra_input_fields.classList.add('d-none');\n this.elem_btn_cp_submit.classList.add('no-display');\n this.elem_btn_cp_validate.classList.remove('no-display');\n this.elem_name.innerHTML = '-'\n this.elem_pan.value = '';\n this.elem_mobile.value = '';\n this.elem_email.value = '';\n this.elem_cp_vintage_year.value = '';\n this.elem_cp_vintage_month.value = '';\n this.elem_cp_contact_person_name.value = '';\n this.elem_cp_contact_person_number.value = '';\n this.elem_cp_contact_person_email.value = '';\n this.elem_cp_contact_person_designation.value = '';\n this.elem_pan.classList.remove('back-grey');\n this.elem_mobile.classList.remove('back-grey');\n });\n this.createCp();\n this.getNameFromPan();\n this.skipMethod();\n }\n resetCpForm() { \n if (this.elem_pan instanceof HTMLInputElement) this.elem_pan.removeAttribute('readonly');\n if (this.elem_mobile instanceof HTMLInputElement) this.elem_mobile.removeAttribute('readonly');\n if (this.elem_email instanceof HTMLInputElement) this.elem_email.removeAttribute('readonly');\n if (this.elem_cp_extra_input_fields instanceof HTMLElement) this.elem_cp_extra_input_fields.classList.add('d-none');\n if (this.elem_btn_cp_submit instanceof HTMLElement) this.elem_btn_cp_submit.classList.add('no-display');\n if (this.elem_btn_cp_validate instanceof HTMLElement) this.elem_btn_cp_validate.classList.remove('no-display');\n if (this.elem_name instanceof HTMLElement) this.elem_name.innerHTML = '-';\n if (this.elem_pan instanceof HTMLInputElement) this.elem_pan.value = '';\n if (this.elem_mobile instanceof HTMLInputElement) this.elem_mobile.value = '';\n if (this.elem_email instanceof HTMLInputElement) this.elem_email.value = '';\n if (this.elem_cp_vintage_year instanceof HTMLInputElement) this.elem_cp_vintage_year.value = '';\n if (this.elem_cp_vintage_month instanceof HTMLInputElement) this.elem_cp_vintage_month.value = '';\n if (this.elem_cp_contact_person_name instanceof HTMLInputElement) this.elem_cp_contact_person_name.value = ''; // Reset contact person name\n if (this.elem_cp_contact_person_number instanceof HTMLInputElement) this.elem_cp_contact_person_number.value = '';\n if (this.elem_cp_contact_person_email instanceof HTMLInputElement) this.elem_cp_contact_person_email.value = '';\n if (this.elem_cp_contact_person_designation instanceof HTMLInputElement) this.elem_cp_contact_person_designation.value = ''; // Reset contact person designation\n if (this.elem_pan instanceof HTMLElement) this.elem_pan.classList.remove('back-grey');\n if (this.elem_mobile instanceof HTMLElement) this.elem_mobile.classList.remove('back-grey');\n } \n skipMethod(){\n let that = this;\n const skipBtn = document.getElementById(\"btn_cp_add_skip\");\n skipBtn.addEventListener('click', function () {\n that.proceedNext();\n })\n }\n getNameFromPan(){\n let that = this;\n let elem_btn_cp_submit = document.getElementById('btn-cp-submit-counterparty');\n document.getElementById('btn-cp-validate-counterparty').addEventListener('click', function (){\n let elem_btn = this;\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.show);\n let body = {\n pan: that.elem_pan.value,\n scf_application_id: document.getElementById(\"scf_application_id\").value\n }\n Utils.requestHandler('/scf/api/counter_party/name', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message =='OK'){\n that.elem_name.setAttribute('data-name', response.data.full_name);\n that.elem_name.innerHTML = response.data.full_name;\n that.elem_cp_extra_input_fields.classList.remove('d-none'); \n if(that.elem_pan.value){\n that.elem_pan.setAttribute('readonly',true);\n that.elem_pan.classList.add('readonly-input'); \n }\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n elem_btn.classList.add('no-display');\n that.elem_btn_cp_submit.classList.remove('no-display');\n if (response.data.applicant_present == true){\n that.elem_mobile.value = response.data.mobile;\n that.elem_email.value = response.data.email;\n that.elem_mobile.setAttribute('readonly',true);\n that.elem_email.setAttribute('readonly',true);\n that.elem_email.classList.add('back-grey');\n that.elem_mobile.classList.add('back-grey');\n } \n Utils.showToast('Fetched', 'Pan fetched successfully', Constants.TOAST.success);\n }else{\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .then(function (){\n \n })\n \n })\n }\n \n createCp() {\n let that = this;\n let elem_btn_cp_submit = document.getElementById('btn-cp-submit-counterparty');\n let elem_btn_cp_validate = document.getElementById('btn-cp-validate-counterparty');\n \n elem_btn_cp_submit.addEventListener('click', function() {\n let elem_btn = this;\n if (that.validateValues()) {\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.show);\n \n let body = {\n pan: that.elem_pan.value,\n pan_name: that.elem_name.getAttribute('data-name'),\n scf_application_id: that.application_id,\n email: that.elem_email.value,\n mobile: that.elem_mobile.value,\n vintage_month: that.elem_cp_vintage_month.value,\n vintage_year: that.elem_cp_vintage_year.value,\n contact_person_name: that.elem_cp_contact_person_name.value || \"\",\n contact_person_designation: that.elem_cp_contact_person_designation.value || \"\",\n contact_person_number: that.elem_cp_contact_person_number.value || '',\n contact_person_email: that.elem_cp_contact_person_email.value || ''\n }; \n Utils.requestHandler('/scf/api/counter_party', Constants.REQUEST.post, body)\n .then(function(response) {\n if (response.message === 'OK') {\n if (that.elem_pan instanceof HTMLInputElement) that.elem_pan.removeAttribute('readonly');\n if (that.elem_name instanceof HTMLElement) that.elem_name.innerHTML = '-';\n if (that.elem_pan instanceof HTMLInputElement) that.elem_pan.value = '';\n if (that.elem_mobile instanceof HTMLInputElement) that.elem_mobile.value = '';\n if (that.elem_email instanceof HTMLInputElement) that.elem_email.value = '';\n if (that.elem_cp_contact_person_name instanceof HTMLInputElement) that.elem_cp_contact_person_name.value = '';\n if (that.elem_cp_contact_person_email instanceof HTMLInputElement) that.elem_cp_contact_person_email.value = '';\n if (that.elem_cp_contact_person_number instanceof HTMLInputElement) that.elem_cp_contact_person_number.value = '';\n if (that.elem_cp_contact_person_designation instanceof HTMLInputElement) that.elem_cp_contact_person_designation.value = '';\n \n Utils.showToast('Created', 'Counterparty created', Constants.TOAST.success);\n that.cp_modal.hide();\n that.renderCpRowsInTable();\n } else {\n console.error(\"Error creating counterparty:\", response);\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .then(function() {\n Utils.buttonWithLoader(elem_btn_cp_submit, Constants.ELEMENT_STATE.hide);\n elem_btn_cp_submit.classList.add('no-display');\n elem_btn_cp_validate.classList.remove('no-display');\n });\n }\n });\n }\n \n \n\n renderCpRowsInTable(){\n let that = this;\n Utils.requestHandler('/scf/api/application/'+that.application_id+'/counter-parties', Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n let tmpl = document.getElementById('cp-row-tmpl');\n let dx = document.getElementById('tb-cp-onboarding-tbody');\n dx.innerHTML = null;\n response.data.counter_parties.forEach(function (dd){\n dd.status = Utils.snakeToTitleCase(dd.status);\n dd.vintage = Utils.formatTimeRelative(dd.vintage);\n let rendered = Mustache.render(tmpl.innerHTML, dd);\n dx.append($.parseHTML(rendered)[1]);\n })\n }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n submitcpOnboarding(){\n let that = this;\n const submitcps = document.getElementById(\"btn-submit-cps\");\n submitcps.addEventListener('click', function () {\n Utils.requestHandler('/scf/api/application/'+that.application_id+'/validate-cp', Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast('Created', 'Counter Party Added Successfully', Constants.TOAST.success);\n that.proceedNext(); \n }\n else{\n Utils.showToast(response.message, \"Please Add Atleast One Counter Party\", Constants.TOAST.fail);\n }\n })\n });\n }\n \n validateValues(){\n let pass = true;\n if(!this.elem_email.value){\n Utils.showInputError(this.elem_email, 'Email is mandatory');\n pass = false;\n }else if(!Utils.validatorEmail(this.elem_email.value)){\n Utils.showInputError(this.elem_email, 'Incorrect email');\n pass = false;\n }\n if(!this.elem_mobile.value){\n Utils.showInputError(this.elem_mobile, 'Mobile is mandatory');\n pass = false;\n }else if(!Utils.validatorMobile(this.elem_mobile.value)){\n Utils.showInputError(this.elem_mobile, 'Incorrect mobile number');\n pass = false;\n }\n if(!this.elem_pan.value){\n Utils.showInputError(this.elem_pan, 'PAN is mandatory');\n pass = false;\n }else if(!Utils.validatorPan(this.elem_pan.value)){\n Utils.showInputError(this.elem_pan, 'Incorrect PAN');\n pass = false;\n }\n if(this.elem_cp_vintage_month.value == \"\"){\n Utils.showInputError(this.elem_cp_vintage_month, 'Vintage Month is mandatory');\n pass = false;\n }\n if(this.elem_cp_vintage_year.value == \"\"){\n Utils.showInputError(this.elem_cp_vintage_year, 'Vintage Year is mandatory');\n pass = false;\n }\n if (this.elem_cp_contact_person_designation.value == \"\") {\n Utils.showInputError(\n this.elem_cp_contact_person_designation,\n \"Contact person designation is Mandatory\"\n );\n pass = false;\n }\n if (this.elem_cp_contact_person_name.value == \"\") {\n Utils.showInputError(\n this.elem_cp_contact_person_name,\n \"Contact person name is mandatory\"\n );\n pass = false;\n }\n var currentDate = new Date();\n var currentYear = currentDate.getFullYear();\n var currentMonth = currentDate.getMonth() + 1; // Month is 0-based\n if(this.elem_cp_vintage_year.value > currentYear || (this.elem_cp_vintage_year.value >= currentYear && this.elem_cp_vintage_month.value > currentMonth)){\n Utils.showInputError(this.elem_cp_vintage_year, 'Date Cannot be in future');\n pass = false;\n }\n\n return pass;\n }\n \n\n bussinessAndPromotersSubmit(){\n let that = this;\n const uploadAllDocuments = document.getElementById(\"business_promoter_final_submit\");\n uploadAllDocuments.addEventListener('click', function () {\n Utils.requestHandler('/scf/api/onboarding/company/validate/business-and-promoter-details/' + document.getElementById('scf_application_id').value , Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n that.proceedNext();\n if(document.getElementById('application_product').value === 'short_term_loan'){\n that.proceedNext();\n }\n Utils.showToast('Success', 'Business & Directors submitted', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n });\n\n }\n\npromoterDataSubmit(){\n let promoterSave = document.getElementById(\"promoter-save\");\n\n promoterSave.addEventListener('click', function () {\n let that = this;\n\n let titleOfBorrower = document.getElementById(\"titleOfBorrower\").value;\n let promoterPan = document.getElementById(\"promoterPan\").value;\n let promoterName = document.getElementById(\"promoterName\").value;\n let promoterFirstName = document.getElementById(\"promoterFirstName\").value;\n let promoterLastName = document.getElementById(\"promoterLastName\").value;\n let promoterBirthDate = document.getElementById(\"promoterBirthDate\").value;\n let promoterGender = document.getElementById(\"promoterGender\").value;\n let promoterEmail = document.getElementById(\"promoterEmail\").value;\n let promoterMobile = document.getElementById(\"promoterMobile\").value;\n let promoterAddress = document.getElementById(\"promoterAddress\").value;\n let promoterPincode = document.getElementById(\"promoterPincode\").value;\n let promoterCity = document.getElementById(\"promoterCity\").value;\n let promoterState = document.getElementById(\"promoterState\").value;\n let promoterYearsAtCurrentAddress = document.getElementById(\"promoterYearsAtCurrentAddress\").value;\n let promotershareholding = document.getElementById('promotershareholding').value;\n let relationship = document.getElementById('titleRelationShipwith').value; \n let directorId = document.getElementById('promoterID').value;\n let isCoapplicant = document.getElementById('isCoapplicant').value;\n\n let scf_application_id = document.getElementById('scf_application_id').value\n \n let body = {\n ownership_type: titleOfBorrower,\n pan_number: promoterPan,\n first_name: promoterFirstName,\n last_name: promoterLastName,\n full_name: promoterName,\n date_of_birth: promoterBirthDate,\n gender: promoterGender,\n email: promoterEmail,\n mobile: promoterMobile,\n address: promoterAddress,\n zipcode: promoterPincode,\n city: promoterCity,\n state: promoterState,\n years_at_current_address: promoterYearsAtCurrentAddress,\n relationship: relationship,\n share_holding: promotershareholding,\n director_id: directorId,\n is_coapplicant: isCoapplicant\n };\n\n Utils.requestHandler('/scf/api/onboarding/company/director/' + scf_application_id, Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n document.getElementById(\"titleOfBorrower\").value = \"\";\n document.getElementById(\"promoterName\").removeAttribute(\"readonly\");\n document.getElementById(\"promoterName\").value = \"\";\n document.getElementById(\"promoterName\").setAttribute(\"readonly\", \"true\");\n document.getElementById(\"promoterPan\").value = \"\";\n document.getElementById(\"promoterFirstName\").value = \"\";\n document.getElementById(\"promoterLastName\").value = \"\";\n document.getElementById(\"promoterBirthDate\").value = \"\";\n document.getElementById(\"promoterGender\").value = \"\";\n document.getElementById(\"promoterEmail\").value = \"\";\n document.getElementById(\"promoterMobile\").value = \"\";\n document.getElementById(\"promoterAddress\").value = \"\";\n document.getElementById(\"promoterPincode\").value = \"\";\n document.getElementById(\"promoterCity\").value = \"\";\n document.getElementById(\"promoterState\").value = \"\";\n document.getElementById(\"promoterYearsAtCurrentAddress\").value = \"\";\n document.getElementById('titleRelationShipwith').value = \"\";\n\n document.getElementById('promotershareholding').value = \"\";\n\n Utils.showToast('Added', 'Business Promoter Added', Constants.TOAST.success);\n let closeModalButton = document.getElementById(\"btn-promoter-modal-close\"); \n closeModalButton.click();\n new ScfPromoterModule();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n });\n\n }\n\n\n populateCityStateFromPincode(){\n const communicationZipcode = document.getElementById(\"communicationZipcode\");\n const communicationCity = document.getElementById(\"communicationCity\");\n const communicationState = document.getElementById(\"communicationState\");\n const promoterPincode = document.getElementById(\"promoterPincode\");\n const promoterCity = document.getElementById(\"promoterCity\");\n const promoterState = document.getElementById(\"promoterState\");\n\n communicationZipcode.addEventListener('input', function () {\n const communicationZipcodeValue = communicationZipcode.value;\n \n if (communicationZipcodeValue.length === 6) {\n Utils.getZipcodeDetails(communicationZipcodeValue).then(function (response){\n if(response.message === 'OK'){\n communicationCity.value = response.data.set_value.district\n communicationState.value = response.data.set_value.state_name\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n\n } else {\n communicationCity.value = \"\";\n communicationState.value = \"\";\n }\n });\n\n promoterPincode.addEventListener('input', function () {\n const promoterPincodeValue = promoterPincode.value;\n \n if (promoterPincodeValue.length === 6) {\n Utils.getZipcodeDetails(promoterPincodeValue).then(function (response){\n if(response.message === 'OK'){\n promoterCity.value = response.data.set_value.district\n if(response.data.set_value.state_name!=undefined){\n promoterState.value = response.data.set_value.state_name;\n }\n else{\n promoterState.value = response.data.set_value.state;\n }\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n\n } else {\n promoterCity.value = \"\";\n promoterState.value = \"\";\n }\n });\n }\n\n populateNameFromPan(){\n const promoterPan = document.getElementById(\"promoterPan\");\n const promoterName = document.getElementById(\"promoterName\");\n const promoterFirstName = document.getElementById(\"promoterFirstName\");\n const promoterLastName = document.getElementById(\"promoterLastName\");\n promoterPan.addEventListener('input', function () {\n this.value = this.value.toLowerCase();\n const inputValue = promoterPan.value;\n if (inputValue.length === 10) {\n Utils.requestHandler(\"/scf/api/onboarding/name/\" + inputValue, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n promoterName.value = response.data.full_name\n promoterFirstName.value = response.data.pan_first_name\n promoterLastName.value = response.data.pan_last_name\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n \n }\n })\n\n\n } else {\n promoterName.value = \"\";\n promoterFirstName.value = \"\";\n promoterLastName.value = \"\";\n }\n });\n\n }\n\n tempUdyamAddressCopyPaste(){\n const primaryGstAddress = document.getElementById(\"primaryGstAddress\");\n const primaryGstCity = document.getElementById(\"primaryGstCity\");\n const primaryGstState = document.getElementById(\"primaryGstState\");\n const businessContactAddress = document.getElementById(\"businessContactAddress\");\n const SameAddressCheckbox = document.getElementById(\"SameAddressCheckbox\");\n const primaryGstZipcode = document.getElementById('primaryGstZipcode');\n const communicationZipcode = document.getElementById('communicationZipcode');\n const communicationCity = document.getElementById('communicationCity');\n const communicationState = document.getElementById('communicationState');\n\n\n SameAddressCheckbox.addEventListener('change', function () {\n if (SameAddressCheckbox.checked) {\n businessContactAddress.value = primaryGstAddress.value;\n communicationZipcode.value = primaryGstZipcode.value;\n communicationCity.value = primaryGstCity.value;\n communicationState.value = primaryGstState.value;\n } else {\n businessContactAddress.value = '';\n communicationZipcode.value = '';\n communicationCity.value = '';\n communicationState.value = '';\n }\n });\n }\n\n tempUdyamSearch(){\n let udyamSearchField = document.getElementById(\"udyamSearchField\");\n const udyamBusinessName = document.getElementById(\"udyamBusinessName\");\n const UdyamFetchedNameInForms = document.getElementById(\"UdyamFetchedNameInForms\");\n\n udyamSearchField.addEventListener('input', function () {\n const inputValue = udyamSearchField.value;\n \n if (inputValue.length === 19) {\n\n new ScfUdyamPanel(document.getElementById('scf_application_id').value, inputValue); \n const scfUdyamPanel = new ScfUdyamPanel(document.getElementById('scf_application_id').value, inputValue);\n \n scfUdyamPanel.fetchUdyamDetails()\n .then(data => {\n udyamBusinessName.value = data['udhyam_aadhaar'].name;\n UdyamFetchedNameInForms.classList.remove('d-none');\n });\n\n\n } else {\n UdyamFetchedNameInForms.classList.add('d-none');\n }\n });\n \n }\n \n tempFeedData(){\n let that = this;\n let feedData = document.getElementById(\"temp_feed_data\");\n const businessPanUdyamPage = document.getElementById('businessPanUdyamPage');\n const gstNumberUdyamPage = document.getElementById('gstNumberUdyamPage');\n const BusinessNameFromBusinessApplicant = document.getElementById('BusinessNameFromBusinessApplicant');\n let allGstsOnUdyamPage = [];\n const primaryGstNumber = \"\";\n document.getElementById('btn-panel-udyam').addEventListener('click', function (){\n businessPanUdyamPage.value = localStorage.getItem('pan');\n BusinessNameFromBusinessApplicant.textContent = localStorage.getItem('pan_name');\n Utils.requestHandler(\"/scf/api/applicant/\" + localStorage.getItem('business_applicant_id'), Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n while (gstNumberUdyamPage.options.length > 0) {\n gstNumberUdyamPage.remove(0);\n }\n allGstsOnUdyamPage = [];\n for (const item of response.data.business_gst) {\n if (item.gstin) {\n allGstsOnUdyamPage.push(item.gstin);\n }\n if(item.primary === true){\n that.primaryGstNumber = item.gstin;\n }\n }\n for (const optionText of allGstsOnUdyamPage) {\n const option = document.createElement('option');\n option.value = optionText;\n option.text = optionText;\n gstNumberUdyamPage.appendChild(option);\n }\n \n document.getElementById('primaryGstAddress').value = response.data.scf_applicant.address;\n document.getElementById('primaryGstZipcode').value = response.data.scf_applicant.zipcode;\n document.getElementById('primaryGstCity').value = response.data.scf_applicant.city;\n document.getElementById('primaryGstState').value = response.data.scf_applicant.state;\n \n if (that.primaryGstNumber) {\n gstNumberUdyamPage.value = that.primaryGstNumber;\n }\n\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n\n });\n }\n\n sideNavToggleHandler(){\n const categoryParents = document.querySelectorAll('[id$=\"_sidenav_toggle_parent\"]');\n categoryParents.forEach((parent) => {\n parent.addEventListener('click', () => {\n const categoryClass = parent.id.replace('_sidenav_toggle_parent', '');\n \n const childDivs = document.getElementById(`${categoryClass}_sidenav_toggle_child`);\n const childIconRight = document.getElementById(`${categoryClass}_sidenav_toggle_icon_right`);\n const childIconDown = document.getElementById(`${categoryClass}_sidenav_toggle_icon_down`);\n \n if (childDivs.classList.contains('d-none')) {\n childDivs.classList.remove('d-none');\n childDivs.classList.add('d-block');\n childIconRight.classList.add('d-none');\n childIconDown.classList.remove('d-none');\n } else {\n childDivs.classList.remove('d-block');\n childDivs.classList.add('d-none');\n childIconRight.classList.remove('d-none');\n childIconDown.classList.add('d-none');\n }\n });\n });\n\n }\n\n isSoleProprietor(){\n return this.obj_pan.company_pan_type && this.obj_pan.company_pan_type === 'sole_proprietorship';\n }\n\n panelNavigationHandler(){\n let that = this;\n let all_panel_btn = document.querySelectorAll('.nav-panel-link');\n all_panel_btn.forEach((element) => {\n element.addEventListener('click', event => {\n if (element === event.target || element.contains(event.target)) {\n if(that.isValidPanel(element)){\n if(that.isSoleProprietor() && element.id === 'btn-panel-mca'){\n Utils.showToast('Error', 'This step is not applicable', Constants.TOAST.fail);\n return;\n }\n all_panel_btn.forEach(element => {\n element.classList.remove('active')\n });\n element.classList.add('active');\n document.querySelectorAll('.panel').forEach(element => {\n element.classList.add('no-display')\n });\n document.getElementById(element.getAttribute('data-panel')).classList.remove('no-display');\n }\n }\n })\n })\n let elem_next = document.getElementById('btn-next');\n elem_next.addEventListener('click', function (){\n let active_panel_number = 0;\n let active_panel_id = null;\n all_panel_btn.forEach(function (panel, indx){\n if(panel.classList.contains('active')){\n active_panel_number = indx;\n active_panel_id = panel.id;\n return false;\n }\n })\n if(that.isSoleProprietor() && active_panel_id === 'btn-panel-quest'){\n that.panelActiveComplete('panel-mca');\n active_panel_number +=1;\n }\n if(all_panel_btn.length > active_panel_number + 1){\n if(active_panel_number +1 > that.max_panel){\n Utils.showToast('Complete step', 'Please complete this step first', Constants.TOAST.fail);\n return;\n }\n all_panel_btn[active_panel_number + 1].click();\n }\n })\n document.getElementById('btn-prev').addEventListener('click', function (){\n let active_panel_number = 0;\n let active_panel_id = null;\n all_panel_btn.forEach(function (panel, indx){\n if(panel.classList.contains('active')){\n active_panel_number = indx;\n active_panel_id = panel.id;\n return false;\n }\n })\n if(that.isSoleProprietor() && active_panel_id === 'btn-panel-gst'){\n active_panel_number -=1;\n }\n if(active_panel_number - 1 >= 0){\n all_panel_btn[active_panel_number - 1].click();\n }\n })\n this.onboardingLogoutButton();\n }\n \n onboardingLogoutButton(){\n let elem = document.getElementById('onb-logout-button');\n if(elem) {\n document.getElementById('onb-logout-button').addEventListener('click', function () {\n Utils.requestHandler('/core/api/authentication/logout', Constants.REQUEST.post, {})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.deleteCookie('_alf-permissions');\n Utils.deleteCookie('_alf-session-id');\n Utils.deleteCookie('_alf-user-id');\n localStorage.removeItem('user_id');\n localStorage.removeItem('business_applicant_id');\n localStorage.removeItem('pan');\n localStorage.removeItem('pan_name');\n window.location = '/scf/'\n Utils.showToast(response.message, 'Logout successful', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n }\n\n\n proceedNext(){\n document.getElementById('btn-next').click();\n }\n\n proceedPrevious(){\n document.getElementById('btn-prev').click();\n }\n\n panelActiveComplete(nav_panel_link_id, touch_max_panel = true){\n let clt = document.getElementById('btn-'+nav_panel_link_id);\n clt.classList.add('completed');\n if(touch_max_panel) {\n this.max_panel = Math.max(this.max_panel, parseInt(clt.getAttribute('data-panel-number')) + 1);\n }\n }\n\n isValidPanel(element, msg_show = true){\n let next_penal_number = parseInt(element.getAttribute('data-panel-number'));\n if(next_penal_number > this.max_panel){\n if(msg_show){\n Utils.showToast('Complete step', 'Please complete this step first', Constants.TOAST.fail);\n }\n return false;\n }\n return true;\n }\n\n udyamPanelHandler(){\n let that = this;\n document.getElementById('btn-panel-udyam').addEventListener('click', function() {\n ImageBitmapRenderingContext.pry\n new ScfBankingModule();\n new ScfPromoterModule();\n })\n \n }\n\n primaryGst() {\n const tabs = document.querySelectorAll('.gstin-item');\n\n // Add click event listeners to each tab\n tabs.forEach(tab => {\n tab.addEventListener('click', () => {\n // Remove the \"active\" class from all tabs\n tabs.forEach(t => {\n t.classList.remove('active');\n });\n \n // Add the \"active\" class to the clicked tab\n tab.classList.add('active');\n });\n });\n }\n\n userPanelHandler(){\n let that = this;\n document.getElementById('btn-user-submit').addEventListener('click', function(){\n that.obj_user.getValues();\n const elem_btn = this;\n if(that.obj_user.validateValues()){\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.show);\n let body = {\n first_name: that.obj_user.first_name,\n last_name: that.obj_user.last_name,\n email: that.obj_user.email,\n mobile: that.obj_user.mobile,\n id: that.obj_user.user_id,\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n req_type: \"post\"\n }\n Utils.requestHandler('/scf/api/onboarding/user/', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n that.obj_user.user_id = response.data.id;\n Utils.showToast('Created', 'User created', Constants.TOAST.success);\n that.panelActiveComplete('panel-sign-up');\n that.proceedNext();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .then(function (){\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n })\n }\n })\n }\n\n constitutionBasedChanges(){\n let owner_panel_head = document.getElementById('owner_panel_head');\n let owner_panel_left = document.querySelector('#btn-panel-owners > .content > label');\n let entity_panel_content = document.querySelector('#btn-panel-mca');\n switch (this.obj_pan.company_pan_type){\n case 'private_limited':\n owner_panel_head.innerHTML = \"Directors\";\n owner_panel_left.innerHTML = \"Directors\";\n entity_panel_content.classList.remove('no-display');\n break;\n case 'public_company':\n owner_panel_head.innerHTML = \"Directors\";\n owner_panel_left.innerHTML = \"Directors\";\n entity_panel_content.classList.remove('no-display');\n break;\n case 'sole_proprietorship':\n owner_panel_head.innerHTML = \"Proprietor\";\n owner_panel_left.innerHTML = \"Proprietor\";\n entity_panel_content.classList.add('no-display');\n break;\n case 'partnership':\n case 'llp':\n owner_panel_head.innerHTML = \"Partners\";\n owner_panel_left.innerHTML = \"Partners\";\n entity_panel_content.classList.remove('no-display');\n break;\n default:\n // code block\n }\n }\n\n panPanelHandler(){\n let that = this;\n let elem_submit = document.getElementById('btn-submit-pan');\n document.getElementById('btn-validate-pan').addEventListener('click', function(){\n that.obj_pan.getValues();\n const elem_btn = this;\n if(that.obj_pan.validateValues()){\n Utils.placeholderHandler(that.obj_pan.elem_company_name, Constants.ELEMENT_STATE.show);\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.show)\n Utils.requestHandler('/scf/api/onboarding/name/' + that.obj_pan.company_pan, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n if(response.data.full_name){\n that.obj_pan.company_name = response.data.full_name;\n that.obj_pan.elem_company_name.parentElement.classList.remove('no-display');\n that.obj_pan.elem_company_name.parentElement.querySelector('#danger').classList.add('no-display');\n that.obj_pan.elem_company_name.parentElement.querySelector('#success').classList.remove('no-display');\n elem_btn.classList.add('no-display');\n that.obj_mca.elem_srch_company_name.value = response.data.full_name;\n Utils.buttonWithLoader(elem_submit, Constants.ELEMENT_STATE.hide);\n that.panelActiveComplete('panel-pan');\n that.constitutionBasedChanges();\n }else{\n that.obj_pan.company_name = '-';\n that.obj_pan.elem_company_name.parentElement.querySelector('#danger').classList.remove('no-display');\n that.obj_pan.elem_company_name.parentElement.querySelector('#success').classList.add('no-display');\n Utils.showToast(response.message, 'No PAN matches this pattern', Constants.TOAST.fail);\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n }\n that.obj_pan.setValues();\n }else{\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n Utils.placeholderHandler(that.obj_pan.elem_company_name, Constants.ELEMENT_STATE.hide);\n })\n }\n\n })\n elem_submit.addEventListener('click', function(){\n let body = {\n name: that.obj_pan.company_name,\n pan_name: that.obj_pan.company_name,\n pan: that.obj_pan.company_pan,\n constitution: that.obj_pan.company_pan_type,\n user_id: that.obj_user.user_id\n }\n // Utils.requestHandler(\"/scf/api/onboarding/company/\", Constants.REQUEST.post, body)\n // .then(function (response){\n // if(response.message === 'OK'){\n // if(response.data.business_applicant_id){\n // that.applicant_id = response.data.business_applicant_id;\n // document.getElementById('business_applicant_id').value = that.applicant_id;\n // that.proceedNext();\n // }\n // Utils.showToast('Created', 'Business applicant created', Constants.TOAST.success);\n // }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n // }\n // })\n })\n }\n\n productPanelHandler(){\n this.submitProduct();\n }\n\n submitProduct(){\n let that = this;\n document.getElementById('btn-product-submit').addEventListener('click', function(){\n const elem_btn = this;\n that.obj_application.getValues();\n if(that.obj_application.validateValues()){\n let application_tenure = parseInt(that.obj_application.required_tenure);\n if(that.obj_application.product==='short_term_loan'){\n var currentDate = new Date();\n var nextMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);\n var nextValidMonth = new Date(currentDate.getFullYear(), parseInt(currentDate.getMonth()) + 1 + parseInt(application_tenure), 1);\n var timeDifference = nextValidMonth - nextMonth;\n var daysDifference = timeDifference / (1000 * 3600 * 24);\n application_tenure = daysDifference + ' days';\n }\n let businessType = document.getElementById('businessType').value;\n let natureOfBusiness = document.getElementById('natureOfBusiness').value;\n let body = {\n required_amount: that.obj_application.required_amount,\n requested_tenure: application_tenure,\n product: that.obj_application.product,\n scf_application_id: that.application_id,\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n req_type: \"post\",\n type_of_business: businessType,\n nature_of_business: natureOfBusiness\n }\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/onboarding/application/create/\" + localStorage.getItem('business_applicant_id'), Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n that.application_id = response.data.id;\n document.getElementById('scf_application_id').value = that.application_id;\n Utils.showToast(response.message, 'SCF Application created', Constants.TOAST.success);\n that.getPreApprovedOffer();\n that.panelActiveComplete('panel-product');\n if(that.obj_application.product==='short_term_loan'){\n document.getElementById('btn-panel-counterparty').classList.add('no-display');\n }\n else{\n document.getElementById('btn-panel-counterparty').classList.remove('no-display');\n }\n if(that.obj_application.product==='short_term_loan'){\n document.getElementById('div_cp_ledger_documents').classList.add('no-display');\n }\n if (that.is_edit == true || that.obj_application.product==='short_term_loan') {\n document.getElementById('btn-panel-udyam').click();\n }\n document.getElementById('Build your Application_onb_module').classList.remove('d-none');\n document.getElementById('btn-panel-udyam').click();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n Utils.buttonWithLoader(elem_btn, Constants.ELEMENT_STATE.hide);\n })\n\n }\n })\n \n }\n\n mcaPanelHandler(){\n this.mcaSearchCompany();\n this.mcaSearchCinOrLlp();\n this.mcaCreateBusinessApplicant();\n this.mcaBackToSelection();\n }\n\n getPreApprovedOffer() {\n let that = this;\n that.obj_question.getValues();\n that.elem_company_pre_amount = document.getElementById('company_pre_amount');\n let offerTenure = 0;\n if(that.obj_question.quest_values['vintage'] === '0-30 days') {\n offerTenure = 15;\n }\n else if (that.obj_question.quest_values['vintage'] === '30-60 days') {\n offerTenure = 45;\n } else {\n offerTenure = 90;\n }\n let offer = parseInt(that.obj_question.quest_values[\"avg_monthly_sales\"]) * offerTenure * 1.25/30;\n that.elem_company_pre_amount.innerText = Utils.indianRepresentation(offer) + \"*\";\n };\n\n\n // questPanelHandler(){\n // let that = this;\n // document.getElementById('btn-panel-quest').addEventListener('click', function (){\n // if(that.isValidPanel(this, false)){\n // that.questGetQuestionnaire();\n // }\n // })\n // this.questSetQuestionnaireAndPrimaryGst();\n // }\n\n gstPanelHandler(){\n let that = this;\n let pan = localStorage.getItem('pan');\n let pan_name = localStorage.getItem('pan_name');\n const elem_pan_name = document.getElementById('pan-name-gst-tab');\n let rendered = $.parseHTML(Mustache.render(document.getElementById('pan-name-tmpl').innerHTML, {pan_name: pan_name}))[1];\n elem_pan_name.append(rendered);\n if (pan[3] == 'C') {\n document.getElementById('gst-tab').classList.add('no-display')\n }else{\n document.getElementById('mca-tab').classList.add('no-display')\n }\n document.getElementById('btn-panel-gst').addEventListener('click', function (){\n if(that.isValidPanel(this, false)) {\n if (that.obj_gst.length === 0) {\n if (pan[3] !== 'C') {\n that.gstGetAllGsts();\n }\n that.questSetQuestionnaireAndPrimaryGst();\n }\n }\n })\n }\n\n completeOnboardingHandler(){\n let that = this;\n document.getElementById('btn-complete-submit').addEventListener('click', function (){\n Utils.requestHandler(\"/scf/api/onboarding/application/indicative_offer_confirmation/\" + that.application_id, Constants.REQUEST.post, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.proceedNext();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n\n }\n//adding consent page next on click method\nconsenthandler(){\n let that = this;\n document.getElementById('consent-btn').addEventListener('click', function (){\n that.proceedNextconsent();\n })\n this.skipConsentButton();\n }\n proceedNextconsent() {\n // Assuming you want to redirect to the '/dashboard' route\n window.location.href = '/scf/application';\n }\n \n skipConsentButton(){\n let that = this;\n const skipBtn = document.getElementById(\"btn_consent_add_skip\");\n skipBtn.addEventListener('click', function () {\n that.proceedNext();\n })\n}\n\n\n mcaCreateBusinessApplicant(){\n let that = this;\n document.getElementById('btn-create-business-applicant').addEventListener('click', function () {\n let body = {\n id: that.applicant_id,\n name: that.obj_mca.company_name,\n email: that.obj_mca.company_email,\n pan: that.obj_pan.company_pan,\n address: that.obj_mca.company_address,\n city: that.obj_mca.company_city,\n zipcode: that.obj_mca.company_zipcode,\n state: that.obj_mca.company_state,\n corporate_id: that.obj_mca.cin_or_llp_id\n }\n that.obj_question.getValues();\n if(that.obj_question.validateValues()){\n Utils.requestHandler(\"/scf/api/onboarding/application/questionnaire/\" + localStorage.getItem('business_applicant_id'), Constants.REQUEST.post, {questions: that.obj_question.quest_values})\n .then(function (response){\n if(response.message === 'OK'){\n Utils.requestHandler(\"/scf/api/onboarding/company/\" + localStorage.getItem('business_applicant_id'), Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n if(response.data.business_applicant_id){\n that.applicant_id = response.data.business_applicant_id;\n }\n that.panelActiveComplete('panel-gst');\n that.proceedNext();\n Utils.showToast('Created', 'Business applicant updated', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide)\n })\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n \n };\n })\n }\n\n mcaSearchCinOrLlp() {\n let that = this;\n document.getElementById('btn-srch-company-id').addEventListener('click', function () { \n if(that.obj_mca.elem_srch_company_cin.value){\n Utils.loaderToast(Constants.ELEMENT_STATE.show)\n Utils.requestHandler(\"/scf/api/onboarding/company/get_company_from_id/\" + localStorage.getItem('business_applicant_id') + \"/\" + that.obj_mca.elem_srch_company_cin.value, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.mcaSetCompanyDetails(response.data);\n document.getElementById('company_selection_div').classList.add('no-display');\n document.getElementById('company_details_div').classList.remove('no-display');\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide)\n })\n }else{\n Utils.showToast('Input error', 'Provide a valid CIN/LLP Pin', Constants.TOAST.fail);\n }\n })\n }\n\n mcaSearchCompany(){\n let that = this;\n document.getElementById('btn-srch-company-name').addEventListener('click', function(){\n if(that.obj_mca.elem_srch_company_name.value){\n Utils.loaderToast(Constants.ELEMENT_STATE.show)\n Utils.requestHandler(\"/scf/api/onboarding/companies/\" + that.obj_mca.elem_srch_company_name.value, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n if(response.data && response.data.companies.length > 0){\n that.mcaFillCompaniesList(response.data);\n }else{\n Utils.showToast(\"No Data found\", \"No company matched with search query\", Constants.TOAST.fail);\n }\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide)\n })\n }else{\n Utils.showToast('Input error', 'Provide a valid company name', Constants.TOAST.fail);\n }\n })\n }\n\n mcaFillCompaniesList(data) {\n const that = this;\n that.obj_mca.elem_srch_company_list.innerHTML = '';\n data.companies.forEach(company => {\n let li = document.createElement('li');\n li.setAttribute('data-company-id', company.company_id);\n li.innerHTML = \"
\"+company.name+\"
\"+company.company_id+\"
\"\n that.obj_mca.elem_srch_company_list.appendChild(li);\n })\n document.getElementById('srch_company_list_div').classList.remove('no-display');\n that.mcaGetCompanyDetails();\n that.obj_mca.elem_select_company_modal.show();\n }\n\n mcaGetCompanyDetails(){\n let that = this;\n that.obj_mca.elem_srch_company_list.querySelectorAll('li').forEach(element => {\n element.addEventListener('click', event => {\n that.obj_mca.elem_srch_company_list.querySelectorAll('li')\n .forEach(elem => {\n elem.classList.remove('active');\n })\n element.classList.add('active');\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/onboarding/company/get_company_from_id/\" + localStorage.getItem('business_applicant_id') + \"/\" + element.getAttribute('data-company-id'), Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n that.mcaSetCompanyDetails(response.data);\n that.obj_mca.elem_select_company_modal.hide();\n document.getElementById('company_selection_div').classList.add('no-display');\n document.getElementById('company_details_div').classList.remove('no-display');\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n })\n })\n }\n\n mcaBackToSelection(){\n document.getElementById('btn-back-selection').addEventListener('click',event => {\n document.getElementById('company_selection_div').classList.remove('no-display');\n document.getElementById('company_details_div').classList.add('no-display');\n })\n }\n mcaSetCompanyDetails(data){\n this.obj_mca.company_name = data.company_data.name;\n this.obj_mca.cin_or_llp_id = data.company_data.company_id;\n this.obj_mca.company_type = data.company_constitution;\n this.obj_mca.date_of_inc = data.company_data.date_of_incorporation;\n this.obj_mca.company_address = data.company_data.registered_address;\n this.obj_mca.company_city = data.company_data.city;\n this.obj_mca.company_state = data.company_data.state;\n this.obj_mca.company_zipcode = data.company_data.zipcode;\n this.obj_mca.roc_code = data.company_data.roc;\n this.obj_mca.company_email = data.company_data.email;\n this.obj_mca.setValues();\n }\n\n gstGetAllGsts(){\n let that = this;\n let applicant_id = localStorage.getItem('business_applicant_id');\n Utils.requestHandler(\"/scf/api/onboarding/company/gst-all/\" + applicant_id, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n const elem_all_gstins = document.getElementById('all_gstins');\n elem_all_gstins.innerHTML = null;\n response.data.gstins.forEach(gst_data => {\n let rendered = $.parseHTML(Mustache.render(document.getElementById('gstin-tmpl').innerHTML, {gstin: gst_data.gstin, state: gst_data.state}))[1];\n elem_all_gstins.append(rendered);\n that.obj_gst.push(gst_data.gstin);\n })\n that.primaryGst()\n Utils.showToast(response.message, 'All linked GST fetched', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n that.panelActiveComplete('panel-gst');\n that.gstGetGstDetails();\n })\n }\n\n gstGetGstDetails(){\n const elem_gstin_details = document.getElementById('gst-details');\n const tmpl_gst_details = document.getElementById('gst-details-tmpl');\n let business_applicant_id = localStorage.getItem('business_applicant_id');\n document.querySelectorAll('#all_gstins .gstin-item').forEach((elem) => {\n elem.addEventListener('click', event => {\n Utils.requestHandler(\"/scf/api/onboarding/company/gst/\" + business_applicant_id + \"/\" + elem.getAttribute('data-gstin'), Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n response.data.registration_date = Utils.formatDate(response.data.registration_date);\n response.data.reg_vintage = Utils.formatTimeRelative(response.data.registration_date);\n let rendered = $.parseHTML(Mustache.render(tmpl_gst_details.innerHTML, response.data))[1];\n elem_gstin_details.innerHTML = null;\n elem_gstin_details.append(rendered);\n // document.getElementById('gst_selection_div').classList.add('no-display');\n document.getElementById('gst_details_div').classList.remove('no-display');\n Utils.showToast(response.message, 'GST Details fetched', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n })\n // document.getElementById('btn-back-gst-selection').addEventListener('click', event => {\n // document.getElementById('gst_selection_div').classList.remove('no-display');\n // document.getElementById('gst_details_div').classList.add('no-display');\n // })\n }\n\n questSetQuestionnaireAndPrimaryGst(){\n let that = this;\n document.getElementById('btn-quest-onb-submit').addEventListener('click', function (){\n that.obj_question.getValues();\n let primaryGst = document.querySelectorAll('.gstin-item.active')[0].getAttribute(\"data-gstin\")\n if(that.obj_question.validateValues()){\n Utils.requestHandler(\"/scf/api/onboarding/application/questionnaire/\" + localStorage.getItem('business_applicant_id'), Constants.REQUEST.post, {questions: that.obj_question.quest_values, primary_gst: primaryGst})\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast(response.message, 'Questionnaire submitted', Constants.TOAST.success);\n that.panelActiveComplete('panel-gst');\n that.proceedNext();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n })\n }\n \n ownersPanelHandler(){\n /*\n let that = this;\n document.getElementById('btn-panel-owners').addEventListener('click', function (){\n if(that.isValidPanel(this, false)){\n if(that.obj_owner.length === 0){\n that.ownersGetDetails();\n }\n }\n })\n this.ownersZipcodeHandler();\n this.ownersCreateNew();\n this.saveOwnerDetails();\n */\n }\n\n ownersZipcodeHandler(){\n document.getElementById('owner_zipcode').addEventListener('input', function (){\n let zipcode = this.value;\n if(String(zipcode).length === 6){\n Utils.getZipcodeDetails(zipcode).then(function (response){\n if(response.data){\n document.getElementById('owner_city').value = response.data.set_value.district;\n document.getElementById('owner_state').value = response.data.set_value.state_name;\n }\n });\n }\n })\n }\n\n ownersGetDetails(){\n let that = this;\n Utils.requestHandler(\"/scf/api/onboarding/company/directors_by_application/\" + that.scf_application_id, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n let tbody = document.getElementById('owner_rows');\n let temp = document.getElementById('owner-table-row-tmpl');\n tbody.innerHTML = null;\n response.data.forEach(function (row){\n row.begin_date_formatted = Utils.formatDate(row.begin_date);\n row.business_director_id = row.id;\n let rend_row = Mustache.render(temp.innerHTML, row);\n tbody.append($.parseHTML(rend_row)[1])\n let director = new AbstractOwner(row.business_director_id);\n director.first_name = row.first_name;\n director.last_name = row.last_name;\n director.email = row.email;\n director.mobile = row.mobile;\n director.city = row.city;\n director.state = row.state;\n director.address = row.address;\n director.gender = row.gender;\n director.dob = row.date_of_birth;\n director.pan = row.pan_number;\n director.aadhaar = row.aadhaar_number;\n director.zipcode = row.zipcode;\n director.din = row.din;\n director.relationship=row.relationship;\n that.obj_owner.push(director);\n })\n that.panelActiveComplete('panel-owners');\n Utils.showToast(response.message, 'All company directors fetched', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function () {\n that.showOwnerDetails();\n })\n }\n\n ownersCreateNew(){\n let that = this;\n document.getElementById('create_new_owner').addEventListener('click', function (){\n let owner = new AbstractOwner(Math.random().toString(36));\n that.obj_owner.push(owner);\n that.ownersDetailsContainer(owner);\n })\n }\n\n ownersDetailsContainer(data){\n document.getElementById('owner_show_name').innerHTML = (data.first_name ? data.first_name : \"\") + \" \" + (data.last_name ? data.last_name : \"\");\n document.getElementById('owner_show_din').innerHTML = \"DIN - \" + (data.din ? data.din : \"\");\n document.getElementById('btn_save_owner').setAttribute('data-director-id', data.director_id);\n document.getElementById('director-details').classList.remove('no-display');\n data.setValues();\n }\n\n showOwnerDetails(){\n let that = this;\n document.querySelectorAll('.btn-owner-update').forEach(function (item) {\n item.addEventListener('click', function (e) {\n let abs_owner = null;\n that.obj_owner.forEach(function (owner) {\n if (owner.director_id === item.getAttribute('data-director-id')) {\n abs_owner = owner;\n return false;\n }\n })\n that.ownersDetailsContainer(abs_owner);\n })\n })\n }\n\n saveOwnerDetails(){\n let that = this;\n document.getElementById('btn_save_owner').addEventListener('click', function() {\n let bid = this.getAttribute('data-director-id');\n if(bid){\n let owner = null;\n that.obj_owner.forEach(function (abs_owner){\n if(abs_owner.director_id === bid){\n owner = abs_owner;\n return false;\n }\n })\n owner.getValues();\n if(owner.validateValues()){\n let body = {\n \"pan_number\": owner.pan,\n \"first_name\": owner.first_name,\n \"last_name\": owner.last_name,\n \"email\": owner.email,\n \"mobile\": owner.mobile,\n \"address\": owner.address,\n \"gender\": owner.gender,\n \"aadhaar_number\": owner.aadhaar,\n \"date_of_birth\": owner.dob,\n \"city\": owner.city,\n \"state\": owner.state,\n \"zipcode\": owner.zipcode,\n \"relationship\": relationship\n }\n Utils.requestHandler(\"/scf/api/onboarding/company/director/\" +that.applicant_id, Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n that.panelActiveComplete('panel-owners');\n Utils.showToast(response.message, 'Owner Details saved', Constants.TOAST.success);\n that.ownersGetDetails();\n document.getElementById('director-details').classList.add('no-display');\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n } else{\n Utils.showToast('Bad Request', 'Owner not found', Constants.TOAST.fail);\n }\n })\n }\n\n consentPanelHandler(){\n this.consentCreate();\n }\n\n consentCreate() {\n let that = this;\n let all_consents = document.querySelectorAll('.consent-box');\n document.getElementById('btn-consent-submit').addEventListener('click', function () {\n let brk = [];\n let allChecked = true;\n all_consents.forEach(function (inp_consent) {\n if (inp_consent.checked) {\n brk.push(inp_consent.value);\n } else {\n allChecked = false;\n }\n });\n if (!allChecked ) {\n Utils.showToast('Error', 'All Consents are mandatory', Constants.TOAST.fail);\n return false;\n }\n const response = confirm(\"Are you sure you want to submit?\");\n let body ={\n url: Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n req_type: \"post\",\n user_agent: window.navigator.userAgent,\n type: brk\n }\n if (response) {\n Utils.requestHandler(\"/scf/api/onboarding/application/consent/\" + document.getElementById('scf_application_id').value, Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'Consent submitted', Constants.TOAST.success);\n that.panelActiveComplete('panel-consent');\n that.proceedNext();\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n .catch(function (error) {\n Utils.showToast('Error', 'Failed to submit consents', Constants.TOAST.fail);\n });\n } else {\n that.proceedPrevious();\n that.proceedPrevious();\n that.proceedPrevious();\n }\n });\n }\n \n\n // preApprovalPanelHandler(){\n // new ScfPreApproval();\n // this.panelActiveComplete('panel-pre-offer');\n // }\n\n documentPanelHandler(){\n let that = this;\n let isAttached = false;\n document.getElementById('btn-panel-docs').addEventListener('click', function() {\n if(that.isValidPanel(this, false) && !isAttached) {\n that.panelActiveComplete('panel-docs');\n isAttached = true;\n }\n new ScfOnbPanelDocument();\n })\n }\n\n counterPartyPanelHandler(){\n let that = this;\n document.getElementById('btn-panel-counterparty').addEventListener('click', function() {\n that.renderCpRowsInTable();\n })\n }\n\n // documentCreatePlaceholders(data){\n // let doc_temp = document.getElementById('doc-tmpl');\n // let div_all_docs = document.getElementById('all_documents')\n // div_all_docs.innerHTML = null;\n // data.forEach(function (row){\n // row.id = Math.random().toString(36);\n // let rendered_tmpl = Mustache.render(doc_temp.innerHTML, row);\n // div_all_docs.append($.parseHTML(rendered_tmpl)[1])\n // })\n // this.getAllDocuments();\n // }\n //\n // documentUploadHandler(){\n // let that = this;\n // document.querySelectorAll('.upload-document').forEach((item) => {\n // item.addEventListener('click', function(){\n // let doc_container = document.getElementById(item.getAttribute('data-id'));\n // doc_container.querySelector('.file-input').dispatchEvent(new MouseEvent('click'));\n // })\n // })\n // document.querySelectorAll('.file-input').forEach((item) => {\n // item.addEventListener('change', function(){\n // that.documentUploadFile(item.getAttribute('data-id'));\n // })\n // })\n // }\n //\n // documentUploadFile(id){\n // let that = this;\n // let doc_container = document.getElementById(id);\n // let file_code = doc_container.getAttribute('data-file-code');\n // let file_input = doc_container.querySelector('.file-input');\n // let preview_container = doc_container.querySelector('.doc-preview');\n // let preview_tmpl = document.getElementById('doc-preview-tmpl');\n // let upload_btn = document.getElementById('btn-'+id);\n // Array.from(file_input.files).forEach(function (fls){\n // Utils.buttonWithLoader(upload_btn, Constants.ELEMENT_STATE.show);\n // preview_container.append($.parseHTML(Mustache.render(preview_tmpl.innerHTML, {name: fls.name}))[1])\n // let body = new FormData();\n // body.set('file_data', fls)\n // body.set('file_name', fls.name);\n // body.set('file_password', null);\n // let url = '/scf/api/application/' + that.application_id + '/document/upload/' + file_code;\n // Utils.requestHandler(url, Constants.REQUEST.post, body)\n // .then(function (response){\n // if(response.message === 'OK'){\n // document.getElementById('prev-'+fls.name).remove();\n // preview_container.append($.parseHTML(Mustache.render(preview_tmpl.innerHTML, {name: response.data.document_id, url: response.data.service_url}))[1])\n // Utils.showToast(response.message, 'Document uploaded', Constants.TOAST.success);\n // }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n // }\n // }).then(function (){\n // Utils.buttonWithLoader(upload_btn, Constants.ELEMENT_STATE.hide);\n // })\n // })\n // }\n\n productSelectHandler() {\n document.getElementById('application_product').addEventListener('change', function() {\n let tenureField = document.getElementById('application_tenure_required');\n const selectedProduct = this.value;\n const errorMessage = tenureField.nextElementSibling;\n tenureField.innerHTML = '';\n if (errorMessage && errorMessage.classList.contains('error')) {\n errorMessage.classList.add('no-display');\n }\n \n if (selectedProduct === 'short_term_loan') {\n const inputField = document.createElement('input');\n inputField.type = 'number';\n inputField.className = 'form-control form-control-lg';\n inputField.id = 'application_tenure_required';\n inputField.placeholder = 'Enter tenure in months';\n inputField.max = 120;\n if (inputField.value === '') {\n errorMessage.textContent = 'Please enter a value between 1 and 120';\n errorMessage.classList.remove('no-display');\n }\n // Add event listener for input validation\n inputField.addEventListener('input', function() {\n const value = parseInt(this.value, 10);\n if (value > 120 || value <= 0) {\n errorMessage.textContent = 'Please enter a value between 1 and 120';\n errorMessage.classList.remove('no-display');\n } else {\n errorMessage.classList.add('no-display');\n }\n });\n \n tenureField.parentNode.replaceChild(inputField, tenureField);\n } else {\n const selectField = document.createElement('select');\n selectField.className = 'form-select form-control-lg';\n selectField.ariaLabel = 'vintage';\n selectField.id = 'application_tenure_required';\n selectField.dataset.label = 'vintage';\n \n const options = [\n { value: '', text: 'Select an option', disabled: true, selected: true },\n { value: '0-30 days', text: '0-30 days' },\n { value: '30-60 days', text: '30-60 days' },\n { value: '60-90 days', text: '60-90 days' },\n { value: '> 90 days', text: '> 90 days' }\n ];\n \n options.forEach(optionData => {\n const option = document.createElement('option');\n option.value = optionData.value;\n option.textContent = optionData.text;\n if (optionData.disabled) option.disabled = true;\n if (optionData.selected) option.selected = true;\n selectField.appendChild(option);\n });\n if (selectField.value === '') {\n errorMessage.textContent = 'Please select an option';\n errorMessage.classList.remove('no-display');\n } \n selectField.addEventListener('change', function() {\n if (this.value === '') {\n errorMessage.textContent = 'Please select an option';\n errorMessage.classList.remove('no-display');\n } else {\n errorMessage.classList.add('no-display');\n }\n }, { once: true });\n \n tenureField.parentNode.replaceChild(selectField, tenureField);\n }\n }); \n }\n\n editApplicationHandler(){\n let that = this;\n let params = Utils.assembleParameters();\n that.productSelectHandler()\n this.application_id = params.application_id;\n this.applicant_id = params.applicant_id;\n this.pan_name = params.pan_name;\n this.pan = params.pan; \n if(this.application_id !== undefined){\n this.is_edit = true;\n this.max_panel = this.APP_MAX_ALLOWED_PANEL;\n Utils.requestHandler(\"/scf/api/onboarding/application/\" + this.application_id, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n if ((response.data.scf_application.status != 'application_drafted' && ScfPermission.isScfSales()) || response.data.scf_application.status == 'rejected' || response.data.lender_decision_submitted == true) {\n alert('User cannot edit this application. Redirecting...');\n window.location.href = '/scf/application';\n return;\n }\n that.application_id = response.data.scf_application.id;\n that.applicant_id = response.data.business_applicant.id;\n that.udyam_reg_no = response.data.udyam_reg_no;\n document.getElementById('scf_application_id').value = that.application_id;\n document.getElementById('business_applicant_id').value = that.applicant_id;\n localStorage.setItem('business_applicant_id', that.applicant_id);\n localStorage.setItem('pan_name', response.data.business_applicant.pan_name);\n localStorage.setItem('pan', response.data.business_applicant.pan);\n that.editFillProductPanel(response);\n that.editFillBusinessPagePanel(response);\n // that.editSetupUserPanel(response);\n // that.editSetupPanPanel(response.data.business_applicant);\n // that.editProductPanel(response.data.scf_application);\n // that.editQuestionPanel();\n // that.editSetupBusinessEntity(response.data.business_applicant);\n // that.editGstPanel();\n // that.editOwnersPanel();\n // that.editBankAccountsPanel();\n // that.editUdyamPanel();\n // that.editDocumentsPanel();\n // that.editConsentsPanel();\n // that.postApplicationPanels();\n }\n })\n\n document.getElementById('scf_application_id').value = this.application_id\n document.getElementById('business_applicant_id').value = this.applicant_id\n localStorage.setItem('business_applicant_id', this.applicant_id);\n localStorage.setItem('pan_name', this.pan_name);\n localStorage.setItem('pan', this.pan);\n \n }\n\n if (this.applicant_id && (this.application_id == undefined)){\n this.is_edit = true;\n this.max_panel = this.APP_MAX_ALLOWED_PANEL;\n\n document.getElementById('business_applicant_id').value = this.applicant_id\n localStorage.setItem('business_applicant_id', this.applicant_id);\n localStorage.setItem('pan_name', this.pan_name);\n localStorage.setItem('pan', this.pan);;\n }\n\n }\n\n editFillProductPanel(response){\n let val = response.data.scf_application.requested_tenure;\n if(val===\"0\"){\n document.getElementById('application_tenure_required').value = \"0-30 days\"\n }\n else if(val===\"30\"){\n document.getElementById('application_tenure_required').value = \"30-60 days\"\n }\n else if(val===\"60\"){\n document.getElementById('application_tenure_required').value = \"60-90 days\"\n }\n else if(val===\"90\"){\n document.getElementById('application_tenure_required').value = \">90 days\"\n }\n document.getElementById('required_amount').value = response.data.scf_application.required_amount;\n document.getElementById('businessType').value=response.data.scf_application.type_of_business\n document.getElementById('natureOfBusiness').value=response.data.scf_application.nature_of_business;\n document.getElementById('application_product').value = response.data.scf_application.product;\n if (response.data.scf_application.product === 'short_term_loan') {\n let tenureField = document.getElementById('application_tenure_required');\n const selectedProduct = this.value;\n const errorMessage = tenureField.nextElementSibling;\n tenureField.innerHTML = '';\n if (errorMessage && errorMessage.classList.contains('error')) {\n errorMessage.classList.add('no-display');\n }\n const inputField = document.createElement('input');\n inputField.type = 'number';\n inputField.className = 'form-control form-control-lg';\n inputField.id = 'application_tenure_required';\n inputField.placeholder = 'Enter tenure in months';\n inputField.max = 120;\n let requestedTenure = response.data.scf_application.requested_tenure.replace(/\\D/g, '');\n inputField.value = Math.floor(requestedTenure / 12);\n if (inputField.value === '') {\n errorMessage.textContent = 'Please enter a value between 1 and 120';\n errorMessage.classList.remove('no-display');\n }\n inputField.addEventListener('input', function() {\n const value = parseInt(this.value, 10);\n if (value > 120 || value <= 0) {\n errorMessage.textContent = 'Please enter a value between 1 and 120';\n errorMessage.classList.remove('no-display');\n } else {\n errorMessage.classList.add('no-display');\n }\n });\n tenureField.parentNode.replaceChild(inputField, tenureField);\n }\n if( response.data.scf_application.anchor_leads_lot_id != null){\n document.getElementById('application_product').disabled = true\n document.getElementById('div_cp_ledger_documents').classList.add('no-display');\n document.getElementById('btn_cp_add_modal_counterparty').classList.add(\"no-display\");\n }\n if(response.data.scf_application.product === 'short_term_loan'){\n document.getElementById('btn-panel-counterparty').classList.add(\"no-display\");\n }\n else{\n document.getElementById('btn-panel-counterparty').classList.remove(\"no-display\");\n }\n }\n\n editFillBusinessPagePanel(response){\n document.getElementById('businessContactAddress').value = response.data.scf_application.communication_address;\n document.getElementById('communicationZipcode').value = response.data.scf_application.communication_zipcode;\n document.getElementById('communicationCity').value = response.data.scf_application.communication_city;\n document.getElementById('communicationState').value = response.data.scf_application.communication_state;\n document.getElementById('udyamSearchField').value = response.data.udyam_reg_no;\n }\n\n editSetupUserPanel(response){\n let that = this;\n that.obj_user.user_id = response.data.user.id;\n that.obj_user.first_name = response.data.user.first_name;\n that.obj_user.last_name = response.data.user.last_name;\n that.obj_user.email = response.data.user.email;\n that.obj_user.mobile = response.data.user.mobile;\n that.obj_user.name_of_org = response.data.organization.name;\n that.obj_user.setValues();\n Utils.toggleInput(that.obj_user.elem_mobile_otp, false);\n Utils.toggleInput(that.obj_user.elem_email_otp, false);\n Utils.toggleInput(that.obj_user.elem_pasword, false);\n that.panelActiveComplete('panel-sign-up', false);\n }\n\n editSetupPanPanel(business_applicant){\n let that = this;\n that.obj_pan.company_name = business_applicant.name;\n that.obj_pan.company_pan = business_applicant.pan;\n that.obj_pan.company_pan_type = business_applicant.constitution;\n that.obj_pan.setValues();\n that.obj_pan.elem_company_name.parentElement.classList.remove('no-display');\n that.obj_pan.elem_company_name.parentElement.querySelector('#danger').classList.add('no-display');\n that.obj_pan.elem_company_name.parentElement.querySelector('#success').classList.remove('no-display');\n document.getElementById('btn-validate-pan').classList.add('no-display');\n Utils.toggleInput(that.obj_pan.elem_company_pan, false);\n Utils.toggleInput(that.obj_pan.elem_company_pan_type, false);\n Utils.toggleInput(that.obj_pan.elem_company_pan_type, false);\n that.panelActiveComplete('panel-pan', false);\n }\n\n editProductPanel(scf_application){\n let that = this;\n that.obj_application.product = scf_application.product;\n ImageBitmapRenderingContext.pry\n that.obj_application.requested_tenure = scf_application.required_tenure;\n that.obj_application.required_amount = scf_application.required_amount;\n that.obj_application.setValues();\n Utils.toggleInput(that.obj_application.elem_application_product, false);\n that.panelActiveComplete('panel-product', false);\n }\n\n editQuestionPanel(){\n let that = this;\n that.panelActiveComplete('panel-quest', false);\n }\n\n editSetupBusinessEntity(business_applicant){\n let that = this;\n that.obj_mca.cin_or_llp_id = business_applicant.corporate_id;\n that.obj_mca.company_name = business_applicant.name ;\n that.obj_mca.company_type = business_applicant.constitution ;\n that.obj_mca.company_address = business_applicant.address ;\n that.obj_mca.company_city = business_applicant.city ;\n that.obj_mca.company_state = business_applicant.state ;\n that.obj_mca.company_zipcode = business_applicant.zipcode ;\n that.obj_mca.company_email = business_applicant.email ;\n that.obj_mca.setValues();\n document.getElementById('company_selection_div').classList.add('no-display');\n document.getElementById('company_details_div').classList.remove('no-display');\n document.getElementById('btn-back-selection').classList.add('no-display');\n document.getElementById('btn-create-business-applicant').classList.add('no-display');\n that.panelActiveComplete('panel-mca', false);\n }\n\n editGstPanel(){\n this.panelActiveComplete('panel-gst', false);\n }\n\n editOwnersPanel(){\n this.panelActiveComplete('panel-owners', false);\n }\n\n editUdyamPanel(){\n this.panelActiveComplete('panel-udyam', false);\n }\n\n editBankAccountsPanel(){\n let that = this;\n Utils.requestHandler(\"/scf/api/application/\" + that.application_id + '/bank-accounts', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n response.data.bank_accounts.forEach(bank_account => {\n let abs_banking = new AbstractBanking(bank_account.id);\n abs_banking.account_number = bank_account.account_number;\n abs_banking.account_type = bank_account.account_type;\n abs_banking.account_holder = bank_account.primary_account_holder_name;\n abs_banking.verified_account_holder = bank_account.primary_account_holder_name;\n abs_banking.ifsc_code = bank_account.ifsc_code;\n abs_banking.bank_branch = bank_account.branch;\n abs_banking.bank_name = bank_account.bank_name;\n abs_banking.bank_micr = bank_account.micr_code;\n that.bankingSetupButtonIds(abs_banking.id);\n that.obj_banking.push(abs_banking);\n // that.panelActiveComplete('panel-banking', false);\n })\n that.bankRenderVerifiedAccounts();\n Utils.showToast('Fetched', 'Bank Accounts', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n editDocumentsPanel(){\n this.panelActiveComplete('panel-docs', false);\n }\n\n editConsentsPanel(){\n let all_consents = document.querySelectorAll('.consent-box');\n all_consents.forEach(function (inp_consent){\n inp_consent.checked = true;\n Utils.toggleInput(inp_consent, false);\n })\n this.panelActiveComplete('panel-consent');\n }\n\n postApplicationPanels(){\n this.max_panel = this.POST_APP_MAX_ALLOWED_PANEL;\n document.querySelectorAll('.post-onb').forEach(function (elem){\n elem.classList.remove('no-display');\n })\n this.counterPartiesPanel();\n this.postSanctionPanel();\n }\n\n counterPartiesPanel(){\n let that = this;\n document.getElementById('btn-panel-counterparty').addEventListener('click', function (){\n new ScfOnbPanelCounterParty();\n that.panelActiveComplete('panel-counterparty');\n })\n }\n\n postSanctionPanel(){\n this.uploadSampleInvoice();\n }\n\n uploadSampleInvoice(){\n let that = this;\n const elem_div_inv_upload = document.getElementById('div_inv_upload');\n const elem_inv_preview = document.getElementById('inv_preview');\n DocumentUtils.bindInputElement(elem_div_inv_upload);\n DocumentUtils.showOfflinePreview(elem_div_inv_upload, elem_inv_preview);\n let inp_elem = elem_div_inv_upload.parentElement.querySelector('.file-input');\n let btn_action = document.getElementById('btn-submit-invoice');\n btn_action.addEventListener('click', function (){\n let url = '/scf/api/application/' + that.application_id + '/document/upload/sample_invoice';\n DocumentUtils.uploadOnElementTrigger(btn_action, inp_elem, url);\n })\n btn_action.addEventListener('ev_document_uploaded', function (){\n Utils.clean(document.getElementById('sample_invoice_div'));\n elem_inv_preview.innerHTML = null;\n })\n }\n\n}\n","import { DocumentUtils, Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nexport class ScfSalesNewApplicationPage {\n constructor() {\n Utils.pageSanityHandler();\n this.new_applicant_pan_number = null;\n this.new_applicant_pan_name = null;\n this.new_applicant_email = null;\n this.new_applicant_mobile = null;\n\n this.elem_new_applicant_pan_number = document.getElementById('sales_enter_company_pan');\n this.elem_new_applicant_pan_name= document.getElementById('sales_new_company_pan_name');\n this.elem_new_applicant_email= document.getElementById('sales_new_company_email');\n this.elem_new_applicant_mobile= document.getElementById('sales_new_company_mobile');\n\n this.elem_new_applicant_pan_number.addEventListener('input', function (){\n Utils.reInput(this);\n })\n\n this.elem_new_applicant_email.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_new_applicant_mobile.addEventListener('input', function (){\n Utils.reInput(this);\n })\n }\n\n setValues(){\n Utils.setter(this.elem_new_applicant_pan_number, this.new_applicant_pan_number);\n Utils.setter(this.elem_new_applicant_pan_name, this.new_applicant_pan_name);\n Utils.setter(this.elem_new_applicant_email, this.new_applicant_email);\n Utils.setter(this.elem_new_applicant_mobile, this.new_applicant_mobile);\n }\n\n getValues(){\n let that = this;\n this.new_applicant_pan_number = Utils.getter(this.elem_new_applicant_pan_number);\n this.new_applicant_pan_name = Utils.getter(this.elem_new_applicant_pan_name);\n this.new_applicant_email = Utils.getter(this.elem_new_applicant_email);\n this.new_applicant_mobile = Utils.getter(this.elem_new_applicant_mobile);\n }\n\n validateValuesForPanSubmit(){\n let pass = true;\n if(!this.new_applicant_pan_number){\n Utils.showInputError(this.elem_new_applicant_pan_number, 'Pan is Mandatory');\n pass = false;\n }\n if(!Utils.validatorPan(this.new_applicant_pan_number)){\n Utils.showInputError(this.elem_new_applicant_pan_number, 'Wrong pan format');\n pass = false;\n }\n \n return pass;\n }\n\n validateValuesForNewUserSubmit(){\n let pass = true;\n if(!this.new_applicant_pan_number){\n Utils.showInputError(this.elem_new_applicant_pan_number, 'Pan is Mandatory');\n pass = false;\n }\n if(!Utils.validatorPan(this.new_applicant_pan_number)){\n Utils.showInputError(this.elem_new_applicant_pan_number, 'Wrong pan format');\n pass = false;\n }\n\n if(!this.new_applicant_pan_name){\n Utils.showInputError(this.elem_new_applicant_pan_name, 'Pan name is Mandatory');\n pass = false;\n }\n\n if(!this.new_applicant_email){\n Utils.showInputError(this.elem_new_applicant_email, 'Email is Mandatory');\n pass = false;\n }\n\n if(!this.new_applicant_mobile){\n Utils.showInputError(this.elem_new_applicant_mobile, 'Mobile is Mandatory');\n pass = false;\n }\n\n if(!Utils.validatorEmail(this.new_applicant_email)){\n Utils.showInputError(this.elem_new_applicant_email, 'Wrong email format');\n pass = false;\n }\n\n if(!Utils.validatorMobile(this.new_applicant_mobile)){\n Utils.showInputError(this.elem_new_applicant_mobile, 'Wrong mobile format');\n pass = false;\n }\n\n \n return pass;\n }\n\n\n\n handler() {\n this.submitPanNumber();\n this.createNewBorrower();\n }\n\n submitPanNumber(){\n let that = this;\n document.getElementById('btn-submit-sales-new-pan').addEventListener('click', function(){\n that.getValues();\n let panNumber = that.new_applicant_pan_number;\n if(that.validateValuesForPanSubmit()){\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler('/scf/api/applicant/applicant-from-pan/' + panNumber, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' && response.data.business_applicant){\n document.getElementById('sales_enter_company_pan').setAttribute('readonly', true);\n document.getElementById('sales_new_company_pan_name').value = response.data.business_applicant.name\n document.getElementById('btn-submit-sales-new-pan').classList.add('no-display')\n document.getElementById('btn-submit-sales-new-application').classList.remove('no-display')\n let newApplicationUrl = \"/scf/application/onboarding?applicant_id=\" + response.data.business_applicant.id + \"&pan_name=\" + response.data.business_applicant.pan_name + \"&pan=\" + response.data.business_applicant.pan\n document.getElementById('btn-submit-sales-new-application').href = newApplicationUrl;\n Utils.showToast('Success', 'Business Applicant: fetched', Constants.TOAST.success);\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n }else if (response.message === 'OK' && response.data.full_name) {\n document.getElementById('sales_enter_company_pan').setAttribute('readonly', true);\n document.getElementById('btn-submit-sales-new-pan').classList.add('no-display')\n document.getElementById('btn-submit-sales-new-applicant').classList.remove('no-display')\n document.getElementById('sales_new_company_email_form').classList.remove('no-display')\n document.getElementById('sales_new_company_mobile_form').classList.remove('no-display')\n document.getElementById('sales_new_company_pan_name').value = response.data.full_name\n document.getElementById('sales_new_company_email').removeAttribute('readonly');\n document.getElementById('sales_new_company_mobile').removeAttribute('readonly'); \n Utils.showToast('User Not Found', 'Please Create New Applicant', Constants.TOAST.info);\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n } else {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }) \n } \n });\n }\n\n createNewBorrower(){\n let that = this;\n document.getElementById('btn-submit-sales-new-applicant').addEventListener('click', function(){\n that.getValues();\n if(that.validateValuesForNewUserSubmit()){ \n Utils.loaderToast(Constants.ELEMENT_STATE.show); \n let body = {\n pan: that.new_applicant_pan_number,\n pan_name: that.new_applicant_pan_name, \n email: that.new_applicant_email,\n mobile: that.new_applicant_mobile\n }\n Utils.requestHandler('/scf/api/applicant/create_without_otp', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n document.getElementById('sales_new_company_pan_name').value = response.data.business_applicant.name\n document.getElementById('sales_new_company_email').value = response.data.user.email\n document.getElementById('sales_new_company_mobile').value = response.data.user.mobile\n document.getElementById('sales_new_company_email_form').classList.remove('no-display')\n document.getElementById('sales_new_company_mobile_form').classList.remove('no-display')\n document.getElementById('sales_new_company_email').setAttribute('readonly', true);\n document.getElementById('sales_new_company_mobile').setAttribute('readonly', true);\n document.getElementById('btn-submit-sales-new-pan').classList.add('no-display')\n document.getElementById('btn-submit-sales-new-application').classList.remove('no-display')\n document.getElementById('btn-submit-sales-new-applicant').classList.add('no-display')\n let newApplicationUrl = \"/scf/application/onboarding?applicant_id=\" + response.data.business_applicant.id + \"&pan_name=\" + response.data.business_applicant.pan_name + \"&pan=\" + response.data.business_applicant.pan\n document.getElementById('btn-submit-sales-new-application').href = newApplicationUrl;\n Utils.showToast('Success', 'New Business Applicant Created', Constants.TOAST.success);\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n }else {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n } \n });\n }\n\n}","import { DocumentUtils, Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nexport class ScfUserDashboard {\n constructor() {\n Utils.pageSanityHandler();\n\n this.user_first_name = null;\n this.user_last_name = null;\n this.user_email = null;\n this.user_mobile = null;\n this.user_password = null;\n this.user_password_confirmation = null;\n this.user_permission = null;\n this.user_lender = null;\n this.user_sales_manager=null;\n\n this.elem_user_first_name = document.getElementById('user_new_first_name');\n this.elem_user_last_name = document.getElementById('user_new_last_name');\n this.elem_user_email = document.getElementById('user_new_email');\n this.elem_user_mobile = document.getElementById('user_new_mobile');\n this.elem_user_password = document.getElementById('user_new_password');\n this.elem_user_password_confirmation = document.getElementById('user_new_password_confirmation');\n this.elem_user_permission = document.getElementById('user_new_permission');\n this.elem_user_lender = document.getElementById('user_select_lender');\n this.elem_user_sales_manager=document.getElementById('user_select_sales_manager');\n\n this.elem_user_sales_manager.addEventListener('input', function () {\n Utils.reInput(this);\n });\n this.elem_user_lender.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_user_first_name.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_user_last_name.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_user_email.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_user_mobile.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_user_password.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_user_password_confirmation.addEventListener('input', function () {\n Utils.reInput(this);\n })\n this.elem_user_permission.addEventListener('input', function () {\n Utils.reInput(this);\n })\n\n }\n\n setValues(){\n }\n\n getValues(){\n this.user_first_name = Utils.getter(this.elem_user_first_name);\n this.user_last_name = Utils.getter(this.elem_user_last_name);\n this.user_email = Utils.getter(this.elem_user_email);\n this.user_mobile = Utils.getter(this.elem_user_mobile);\n this.user_password = Utils.getter(this.elem_user_password);\n this.user_password_confirmation = Utils.getter(this.elem_user_password_confirmation);\n this.user_permission = Utils.getter(this.elem_user_permission);\n this.user_lender = Utils.getter(this.elem_user_lender);\n this.user_sales_manager = Utils.getter(this.elem_user_sales_manager);\n }\n\n validateValues() {\n let pass = true;\n if (!Utils.validatorEmail(this.user_email)) {\n Utils.showInputError(this.elem_user_email, 'Incorrect email address');\n pass = false;\n }\n if (!this.user_first_name) {\n Utils.showInputError(this.elem_user_first_name, 'First Name is mandatory');\n pass = false;\n }\n if (!this.user_last_name) {\n Utils.showInputError(this.elem_user_last_name, 'Last Name is mandatory');\n pass = false;\n }\n if (!this.user_email) {\n Utils.showInputError(this.elem_user_email, 'Email Name is mandatory');\n pass = false;\n }\n if (!this.user_mobile) {\n Utils.showInputError(this.elem_user_mobile, 'Mobile is mandatory');\n pass = false;\n }\n if (!this.user_password) {\n Utils.showInputError(this.elem_user_password, 'Password is mandatory');\n pass = false;\n }\n if (!this.user_password_confirmation) {\n Utils.showInputError(this.elem_user_password_confirmation, 'Password Confirmation is mandatory');\n pass = false;\n }\n if (!this.user_permission) {\n Utils.showInputError(this.elem_user_permission, 'Permission is mandatory');\n pass = false;\n }\n\n if (this.user_password != this.user_password_confirmation) {\n Utils.showInputError(this.elem_user_password_confirmation, 'Password does not match');\n pass = false;\n }\n\n if (!Utils.validatorMobile(this.user_mobile)) {\n Utils.showInputError(this.elem_user_mobile, 'Incorrect Mobile Format');\n pass = false;\n }\n if (this.elem_user_permission.value == 'scf_lender') {\n if (!this.user_lender) {\n Utils.showInputError(this.elem_user_lender, 'Lender is mandatory');\n pass = false;\n }\n }\n if(this.elem_user_sales_manager.value=='scf_sales_manager'){\n if(!this.user_sales_manager){\n Utils.showInputError(this.elem_user_sales_manager,'Sales Manager is mandatory');\n pass=false;\n }\n }\n\n return pass;\n}\n\n\n handler() {\n this.submitUserDetails();\n this.toggleExtraInputFields();\n this.fillLendersList();\n this.fillSalesManagersList();\n }\n\n fillLendersList(){\n Utils.requestHandler(\"/scf/api/lender_application/lenders/all\", Constants.REQUEST.get)\n .then(function (response){\n if(response.message === 'OK'){\n const selectField = document.getElementById('user_select_lender');\n response.data.lenders.forEach(lender => {\n const option = document.createElement('option');\n option.value = lender.id;\n option.text = lender.name;\n selectField.appendChild(option);\n });\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n \n });\n }\n\n fillSalesManagersList(){\n let body = {\n \"params\": {},\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/scf/fetch-sales-manager\",\n \"req_type\": \"get\"\n }\n Utils.requestHandler(\"/scf/api/application/sales-manager/all\", Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n const selectField = document.getElementById('user_select_sales_manager');\n response.data.forEach(manager => {\n const option = document.createElement('option');\n option.value = manager.id;\n option.text = manager.name;\n selectField.appendChild(option);\n });\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n }\n\n toggleExtraInputFields() {\n this.elem_user_permission.addEventListener('change', function (event) {\n const lenderElements = document.querySelectorAll(\".lender-extra-field\");\n const salesManagerElements = document.querySelectorAll(\".sales-manager-extra-field\");\n if (event.target.value == 'scf_lender') {\n lenderElements.forEach(element => {\n element.classList.remove(\"no-display\");\n });\n salesManagerElements.forEach(element => {\n element.classList.add(\"no-display\");\n });\n } \n else if (event.target.value == 'scf_sales') {\n salesManagerElements.forEach(element => {\n element.classList.remove(\"no-display\");\n });\n lenderElements.forEach(element => {\n element.classList.add(\"no-display\");\n });\n } \n else {\n lenderElements.forEach(element => {\n element.classList.add(\"no-display\");\n });\n salesManagerElements.forEach(element => {\n element.classList.add(\"no-display\");\n });\n }\n });\n}\n\n\n submitUserDetails(){\n let that = this;\n document.getElementById('btn-user-new-submit').addEventListener('click', function(){\n that.getValues();\n if( that.validateValues()){\n let body = {\n first_name: that.user_first_name,\n last_name: that.user_last_name,\n email: that.user_email,\n mobile: that.user_mobile,\n password: that.user_password,\n password_confirmation: that.user_password_confirmation,\n permission: that.user_permission,\n lender_id: that.user_lender,\n sales_manager_id: that.user_sales_manager\n }\n Utils.requestHandler(\"/scf/api/user/new-user-admin\", Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n Utils.showToast(response.message, 'User details updated', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n \n });\n }\n })\n }\n\n\n}","import { DocumentUtils, Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nexport class ScfUserSettings {\n constructor() {\n Utils.pageSanityHandler();\n\n this.user_first_name = null;\n this.user_last_name = null;\n this.user_email = null;\n this.user_email_otp = null;\n this.user_mobile = null;\n this.user_mobile_otp = null;\n this.user_old_password = null;\n this.user_new_password = null;\n\n this.elem_user_first_name = document.getElementById('user_edit_first_name');\n this.elem_user_last_name = document.getElementById('user_edit_last_name');\n this.elem_user_email = document.getElementById('user_edit_email');\n this.elem_user_email_otp = document.getElementById('user_email_otp_input');\n this.elem_user_mobile = document.getElementById('user_edit_mobile');\n this.elem_user_mobile_otp = document.getElementById('user_mobile_otp_input');\n this.elem_user_old_password = document.getElementById('user_edit_old_password');\n this.elem_user_new_password = document.getElementById('user_edit_new_password');\n }\n\n setValues(){\n }\n\n getValues(){\n this.user_first_name = Utils.getter(this.elem_user_first_name);\n this.user_last_name = Utils.getter(this.elem_user_last_name);\n this.user_email = Utils.getter(this.elem_user_email);\n this.user_email_otp = Utils.getter(this.elem_user_email_otp);\n this.user_mobile = Utils.getter(this.elem_user_mobile);\n this.user_mobile_otp = Utils.getter(this.elem_user_mobile_otp);\n this.user_old_password = Utils.getter(this.elem_user_old_password);\n this.user_new_password = Utils.getter(this.elem_user_new_password);\n }\n\n handler() {\n this.mobileOtpHandler();\n this.emailOtpHandler();\n this.fetchUserDetails();\n this.submitUserDetails();\n }\n\n fetchUserDetails(){\n let that = this;\n Utils.requestHandler(\"/scf/api/user/\" + localStorage.getItem('user_id'), Constants.REQUEST.get, {})\n .then(function (response){\n that.populateInputFields(response.data.user); \n });\n }\n\n submitUserDetails(){\n let that = this;\n document.getElementById('btn-user-edit-submit').addEventListener('click', function(){\n that.getValues();\n let body = {\n scf_user: { \n first_name: that.user_first_name,\n last_name: that.user_last_name,\n email: that.user_email,\n mobile: that.user_mobile,\n email_otp: that.user_email_otp,\n mobile_otp: that.user_mobile_otp,\n old_password: that.user_old_password,\n new_password: that.user_new_password\n }\n }\n Utils.requestHandler(\"/scf/api/user/update-user\", Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n that.populateInputFields(response.data.user); \n Utils.showToast(response.message, 'User details updated', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n \n });\n })\n }\n\n populateInputFields(data){\n this.elem_user_first_name.value = data.first_name;\n this.elem_user_last_name.value = data.last_name;\n this.elem_user_email.value = data.email;\n this.elem_user_mobile.value = data.mobile;\n\n }\n\n emailOtpHandler(){\n const emailOtpInputField = document.getElementById('user_email_otp_input');\n const sendEmailOtpButton = document.getElementById('user_edit_email_otp_btn');\n const resendEmailOtpButton = document.getElementById('resend_email_otp_btn');\n\n sendEmailOtpButton.addEventListener('click', function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let emailOtpInputValue = document.getElementById('user_edit_email').value;\n let that = this;\n if (Utils.validatorEmail(emailOtpInputValue)) {\n let body = {\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n \"req_type\": \"post\",\n \"mail\": emailOtpInputValue\n }\n Utils.requestHandler('/core/api/authentication/sign-up/send-email-otp', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n sendEmailOtpButton.classList.add('no-display');\n emailOtpInputField.classList.remove('no-display');\n resendEmailOtpButton.classList.remove('no-display');\n Utils.showToast(response.message, 'OTP Sent to Email', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, 'Unable to Send Email OTP', Constants.TOAST.fail);\n }\n });\n } else {\n Utils.showToast('Error', 'Incorrect Email', Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide); \n })\n\n resendEmailOtpButton.addEventListener('click', function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let emailOtpInputValue = document.getElementById('user_edit_email').value;\n let that = this;\n if (Utils.validatorEmail(emailOtpInputValue)) {\n let body = {\n \"url\": Constants.SERVICE_BASE_BACKOFFICE + \"/v2/send-email\",\n \"req_type\": \"post\",\n \"mail\": emailOtpInputValue\n }\n Utils.requestHandler('/core/api/authentication/sign-up/send-email-otp', Constants.REQUEST.post, body)\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'OTP Sent to Email', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, 'Unable to Send Email OTP', Constants.TOAST.fail);\n }\n });\n } else { \n Utils.showToast('Error', 'Incorrect Email', Constants.TOAST.fail);\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.hide); \n })\n }\n\n mobileOtpHandler(){\n const mobileOtpInputField = document.getElementById('user_mobile_otp_input');\n const sendMobileOtpButton = document.getElementById('user_edit_mobile_otp_btn');\n const resendMobileOtpButton = document.getElementById('resend_mobile_otp_btn');\n\n sendMobileOtpButton.addEventListener('click', function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let mobileOtpInputValue = document.getElementById('user_edit_mobile').value;\n let that = this;\n if (Utils.validatorMobile(mobileOtpInputValue)) {\n Utils.requestHandler('/core/api/authentication/sign-up/send-sms-otp', Constants.REQUEST.post, {mobile_number: mobileOtpInputValue})\n .then(function (response) {\n if (response.message === 'OK') {\n sendMobileOtpButton.classList.add('no-display');\n mobileOtpInputField.classList.remove('no-display');\n resendMobileOtpButton.classList.remove('no-display');\n Utils.showToast(response.message, 'OTP Sent to Mobile', Constants.TOAST.success);\n } else {\n Utils.showToast(response.message, 'Unable to Send Mobile OTP', Constants.TOAST.fail);\n }\n });\n } else {\n Utils.showToast('Error', 'Incorrect Mobile Number', Constants.TOAST.fail);\n } \n Utils.loaderToast(Constants.ELEMENT_STATE.hide); \n })\n\n resendMobileOtpButton.addEventListener('click', function () {\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n let mobileOtpInputValue = document.getElementById('user_edit_mobile').value;\n let that = this;\n if (Utils.validatorMobile(mobileOtpInputValue)) {\n Utils.requestHandler('/core/api/authentication/sign-up/send-sms-otp', Constants.REQUEST.post, {mobile_number: mobileOtpInputValue})\n .then(function (response) {\n if (response.message === 'OK') {\n Utils.showToast(response.message, 'OTP Sent to Mobile', Constants.TOAST.success); \n } else {\n Utils.showToast(response.message, 'Unable to Send Mobile OTP', Constants.TOAST.fail);\n }\n });\n } else {\n Utils.showToast('Error', 'Incorrect Mobile Number', Constants.TOAST.fail);\n } \n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n }\n}","import { DocumentUtils, Utils } from \"../../core/utils\";\nimport * as Constants from \"../../core/constants\";\nimport Mustache from 'mustache';\n\nexport class ScfUserNewBorrower {\n constructor() {\n let that = this;\n Utils.pageSanityHandler();\n this.new_applicant_pan_number = null;\n this.new_applicant_pan_name = null;\n this.new_applicant_email = null;\n this.new_applicant_mobile = null;\n this.new_applicant_cin = null;\n this.category_of_cp = null;\n this.type_of_rating = null;\n this.cp_rating_issuer = null;\n this.date_of_rating = null;\n this.cp_rating = null;\n\n this.elem_new_applicant_pan_number = document.getElementById('new_borrower_enter_company_pan');\n this.elem_new_applicant_pan_name= document.getElementById('new_borrower_new_company_pan_name');\n this.elem_new_applicant_email= document.getElementById('new_borrower_new_company_email');\n this.elem_new_applicant_mobile= document.getElementById('new_borrower_new_company_mobile');\n this.elem_new_applicant_cin = document.getElementById('new_borrower_new_company_cin');\n this.elem_category_of_cp = document.getElementById('category_of_cp');\n this.elem_type_of_rating = document.getElementById('type_of_rating');\n this.elem_cp_rating_issuer = document.getElementById('cp_rating_issuer');\n this.elem_date_of_rating = document.getElementById('date_of_rating');\n this.elem_cp_rating = document.getElementById('cp_rating');\n\n this.elem_new_applicant_pan_number.addEventListener('input', function (){\n Utils.reInput(this);\n })\n\n this.elem_new_applicant_email.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_new_applicant_mobile.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_new_applicant_cin.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_category_of_cp.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_type_of_rating.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_cp_rating_issuer.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_date_of_rating.addEventListener('input', function (){\n Utils.reInput(this);\n })\n this.elem_cp_rating.addEventListener('input', function (){\n Utils.reInput(this);\n })\n\n this.elem_category_of_cp.addEventListener('input', function (){\n Utils.reInput(that.elem_type_of_rating);\n Utils.reInput(that.elem_cp_rating_issuer);\n Utils.reInput(that.elem_date_of_rating);\n Utils.reInput(that.elem_cp_rating);\n })\n }\n\n setValues(){\n Utils.setter(this.elem_new_applicant_pan_number, this.new_applicant_pan_number);\n Utils.setter(this.elem_new_applicant_pan_name, this.new_applicant_pan_name);\n Utils.setter(this.elem_new_applicant_email, this.new_applicant_email);\n Utils.setter(this.elem_new_applicant_mobile, this.new_applicant_mobile);\n Utils.setter(this.elem_new_applicant_cin, this.new_applicant_cin);\n\n Utils.setter(this.elem_category_of_cp, this.category_of_cp);\n Utils.setter(this.elem_type_of_rating, this.type_of_rating);\n Utils.setter(this.elem_cp_rating_issuer, this.cp_rating_issuer);\n Utils.setter(this.elem_date_of_rating, this.date_of_rating);\n Utils.setter(this.elem_cp_rating, this.cp_rating);\n }\n\n getValues(){\n let that = this;\n this.new_applicant_pan_number = Utils.getter(this.elem_new_applicant_pan_number);\n this.new_applicant_pan_name = Utils.getter(this.elem_new_applicant_pan_name);\n this.new_applicant_email = Utils.getter(this.elem_new_applicant_email);\n this.new_applicant_mobile = Utils.getter(this.elem_new_applicant_mobile);\n this.new_applicant_cin = Utils.getter(this.elem_new_applicant_cin);\n\n this.category_of_cp = Utils.getter(this.elem_category_of_cp);\n this.type_of_rating = Utils.getter(this.elem_type_of_rating);\n this.cp_rating_issuer = Utils.getter(this.elem_cp_rating_issuer);\n this.date_of_rating = Utils.getter(this.elem_date_of_rating);\n this.cp_rating = Utils.getter(this.elem_cp_rating);\n }\n\n validateValuesForPanSubmit(){\n let pass = true;\n if(!this.new_applicant_pan_number){\n Utils.showInputError(this.elem_new_applicant_pan_number, 'Pan is Mandatory');\n pass = false;\n }\n if(!Utils.validatorPan(this.new_applicant_pan_number)){\n Utils.showInputError(this.elem_new_applicant_pan_number, 'Wrong pan format');\n pass = false;\n }\n \n return pass;\n }\n\n validateValuesForNewUserSubmit(){\n let pass = true;\n if(!this.new_applicant_pan_number){\n Utils.showInputError(this.elem_new_applicant_pan_number, 'Pan is Mandatory');\n pass = false;\n }\n if(!Utils.validatorPan(this.new_applicant_pan_number)){\n Utils.showInputError(this.elem_new_applicant_pan_number, 'Wrong pan format');\n pass = false;\n }\n\n if(!this.new_applicant_pan_name){\n Utils.showInputError(this.elem_new_applicant_pan_name, 'Pan name is Mandatory');\n pass = false;\n }\n\n if(!this.new_applicant_email){\n Utils.showInputError(this.elem_new_applicant_email, 'Email is Mandatory');\n pass = false;\n }\n\n if(!this.category_of_cp){\n Utils.showInputError(this.elem_category_of_cp, 'Category is Mandatory');\n pass = false;\n }\n\n if(this.category_of_cp == 'rated_corporate'){\n if(!this.type_of_rating){\n Utils.showInputError(this.elem_type_of_rating, 'Type is Mandatory');\n pass = false;\n }\n\n if(!this.cp_rating_issuer){\n Utils.showInputError(this.elem_cp_rating_issuer, 'Issuer is Mandatory');\n pass = false;\n }\n\n if(!this.date_of_rating){\n Utils.showInputError(this.elem_date_of_rating, 'Date is Mandatory');\n pass = false;\n }\n\n if(!this.cp_rating){\n Utils.showInputError(this.elem_cp_rating, 'Rating is Mandatory');\n pass = false;\n }\n }\n\n if(!this.new_applicant_mobile){\n Utils.showInputError(this.elem_new_applicant_mobile, 'Mobile is Mandatory');\n pass = false;\n }\n\n if( this.new_applicant_pan_number[3] == 'C' && !this.new_applicant_cin){\n Utils.showInputError(this.elem_new_applicant_cin, 'CIN is Mandatory');\n pass = false;\n }\n\n if(!Utils.validatorEmail(this.new_applicant_email)){\n Utils.showInputError(this.elem_new_applicant_email, 'Wrong email format');\n pass = false;\n }\n\n if(!Utils.validatorMobile(this.new_applicant_mobile)){\n Utils.showInputError(this.elem_new_applicant_mobile, 'Wrong mobile format');\n pass = false;\n }\n\n \n return pass;\n }\n\n\n\n handler() {\n this.submitPanNumber();\n this.createNewBorrower();\n }\n\n submitPanNumber(){\n let that = this;\n document.getElementById('btn-submit-sales-new-pan').addEventListener('click', function(){\n that.getValues();\n let panNumber = that.new_applicant_pan_number;\n if(that.validateValuesForPanSubmit()){\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler('/scf/api/applicant/applicant-from-pan/' + panNumber, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK' && response.data.business_applicant){\n document.getElementById('new_borrower_enter_company_pan').setAttribute('readonly', true);\n document.getElementById('new_borrower_new_company_pan_name').value = response.data.business_applicant.name\n document.getElementById('btn-submit-sales-new-pan').classList.add('no-display');\n document.getElementById('business_applicant_id').value = response.data.business_applicant.id\n if (response.data.anchor_applicant){\n document.getElementById('anchor_applicant_id').value = response.data.anchor_applicant.id\n document.getElementById('anchor_pd_section').classList.remove('no-display');\n } \n new ScfBankingModule();\n new ScfPromoterModule();\n new AnchorPdModule();\n document.getElementById('new_borrower_banking_details').classList.remove('no-display');\n // document.getElementById('new_borrower_promoter_details').classList.remove('no-display');\n Utils.showToast('Success', 'Business Applicant: fetched', Constants.TOAST.success);\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n }else if (response.message === 'OK' && response.data.full_name) {\n document.getElementById('new_borrower_enter_company_pan').setAttribute('readonly', true);\n document.getElementById('btn-submit-sales-new-pan').classList.add('no-display')\n document.getElementById('btn-submit-sales-new-applicant').classList.remove('no-display')\n document.getElementById('new_borrower_new_company_email_form').classList.remove('no-display')\n document.getElementById('new_borrower_new_company_mobile_form').classList.remove('no-display')\n document.getElementById('new_borrower_new_company_cin_form').classList.remove('no-display')\n document.getElementById('new_borrower_new_company_pan_name').value = response.data.full_name\n document.getElementById('new_borrower_new_company_email').removeAttribute('readonly');\n document.getElementById('new_borrower_new_company_mobile').removeAttribute('readonly'); \n\n that.elem_category_of_cp.removeAttribute('disabled'); \n that.elem_type_of_rating.removeAttribute('disabled'); \n that.elem_cp_rating_issuer.removeAttribute('disabled'); \n that.elem_date_of_rating.removeAttribute('readonly'); \n that.elem_cp_rating.removeAttribute('disabled'); \n\n document.getElementById('new_borrower_new_company_cin').removeAttribute('readonly'); \n document.getElementById('category_of_anchor_section').classList.remove('no-display');\n document.getElementById('borrower-rating-section').classList.remove('no-display');\n Utils.showToast('User Not Found', 'Please Create New Applicant', Constants.TOAST.info);\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n } else {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n }\n }) \n } \n });\n }\n\n createNewBorrower(){\n let that = this;\n document.getElementById('btn-submit-sales-new-applicant').addEventListener('click', function(){\n that.getValues();\n if(that.validateValuesForNewUserSubmit()){ \n Utils.loaderToast(Constants.ELEMENT_STATE.show); \n let credit_rating = {\n type_of_rating: that.type_of_rating,\n cp_rating_issuer: that.cp_rating_issuer,\n date_of_rating: that.date_of_rating,\n rating: that.cp_rating\n }\n let body = {\n pan: that.new_applicant_pan_number,\n pan_name: that.new_applicant_pan_name, \n email: that.new_applicant_email,\n mobile: that.new_applicant_mobile,\n is_anchor: true,\n cin: that.new_applicant_cin,\n credit_rating: credit_rating,\n category: that.category_of_cp\n }\n Utils.requestHandler('/scf/api/applicant/create_without_otp', Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n document.getElementById('new_borrower_new_company_pan_name').value = response.data.business_applicant.name\n document.getElementById('new_borrower_new_company_email').value = response.data.user.email\n document.getElementById('new_borrower_new_company_mobile').value = response.data.user.mobile\n document.getElementById('new_borrower_new_company_cin').value = response.data.business_applicant.corporate_id\n document.getElementById('new_borrower_new_company_email_form').classList.remove('no-display')\n document.getElementById('new_borrower_new_company_mobile_form').classList.remove('no-display')\n document.getElementById('new_borrower_new_company_cin_form').classList.remove('no-display')\n document.getElementById('new_borrower_new_company_email').setAttribute('readonly', true);\n document.getElementById('new_borrower_new_company_mobile').setAttribute('readonly', true);\n document.getElementById('new_borrower_new_company_cin').setAttribute('readonly', true);\n document.getElementById('btn-submit-sales-new-pan').classList.add('no-display')\n document.getElementById('btn-submit-sales-new-applicant').classList.add('no-display')\n document.getElementById('business_applicant_id').value = response.data.business_applicant.id\n document.getElementById('anchor_applicant_id').value = response.data.anchor_applicant.id\n that.elem_category_of_cp.setAttribute('disabled', true);\n that.elem_type_of_rating.setAttribute('disabled', true);\n that.elem_cp_rating_issuer.setAttribute('disabled', true);\n that.elem_date_of_rating.setAttribute('readonly', true);\n that.elem_cp_rating.setAttribute('disabled', true);\n new ScfBankingModule();\n new ScfPromoterModule();\n new AnchorPdModule();\n document.getElementById('anchor_pd_section').classList.remove('no-display');\n document.getElementById('new_borrower_banking_details').classList.remove('no-display');\n // document.getElementById('new_borrower_promoter_details').classList.remove('no-display');\n Utils.showToast('Success', 'New Business Applicant Created', Constants.TOAST.success);\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n }else {\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n } \n });\n }\n\n}\n\nclass AnchorPdModule {\n constructor(){\n let that = this;\n this.business_applicant_id = document.getElementById('business_applicant_id').value;\n that.showPdModal();\n that.getQuestions();\n that.submitQuestions();\n }\n\n showPdModal(){\n let that = this;\n document.getElementById('anchor_modal_pd_button').addEventListener('click', function () {\n var modal = new bootstrap.Modal(document.getElementById('anchorPDModal'), {});\n modal.show();\n });\n }\n\n getQuestions(){\n let anchor_id = document.getElementById('anchor_applicant_id').value\n let that = this;\n Utils.requestHandler(\"/anchor/api/applicant/\" + anchor_id + '/pd-questions', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n let all_quest = document.getElementById('all_questions');\n all_quest.innerHTML = null;\n let questions = {};\n response.data.forEach(function (question){\n if(questions[question.section]){\n questions[question.section].push(question)\n }else{\n questions[question.section] = [question]\n }\n })\n let tmpl = document.getElementById('question-tmpl')\n let section = 'PD';\n all_quest.append($.parseHTML(Mustache.render(document.getElementById('question-header-tmpl').innerHTML, {name: section.split(\"_\").join(\" \")}))[1])\n questions[section].forEach(function (question){\n switch(question.type){\n case 'text':\n question[\"text\"] = true;\n break;\n case 'select':\n question[\"select\"] = true;\n break;\n case 'date':\n question[\"date\"] = true;\n break;\n case 'textbox':\n question[\"textbox\"] = true;\n break;\n case 'upload':\n question[\"upload\"] = true;\n break;\n case 'number':\n question[\"number\"] = true;\n break;\n }\n let q_data = Mustache.render(tmpl.innerHTML, question);\n all_quest.append($.parseHTML(q_data)[1]);\n })\n section = 'Audit Trails';\n all_quest.append($.parseHTML(Mustache.render(document.getElementById('question-header-tmpl').innerHTML, {name: section.split(\"_\").join(\" \")}))[1])\n questions[section].forEach(function (question){\n switch(question.type){\n case 'text':\n question[\"text\"] = true;\n break;\n case 'select':\n question[\"select\"] = true;\n break;\n case 'date':\n question[\"date\"] = true;\n break;\n case 'textbox':\n question[\"textbox\"] = true;\n break;\n case 'upload':\n question[\"upload\"] = true;\n break;\n case 'number':\n question[\"number\"] = true;\n break;\n }\n let q_data = Mustache.render(tmpl.innerHTML, question);\n all_quest.append($.parseHTML(q_data)[1]);\n })\n\n that.fetchDropDownValuesIndustry();\n that.fetchDropDownLevel2();\n \n let maxDate = new Date().toISOString().split('T')[0];\n // document.getElementById('date_of_visit').setAttribute('max', maxDate);\n }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n submitQuestions() {\n let that = this;\n let anchor_id = document.getElementById('anchor_applicant_id').value\n document\n .getElementById(\"btn-quest-submit\")\n .addEventListener(\"click\", function () {\n that.validateValues();\n if (that.pass) {\n let values = that.getValues();\n Utils.requestHandler(\n \"/anchor/api/applicant/\" + anchor_id + \"/pd-questions\",\n Constants.REQUEST.post,\n values\n ).then(function (response) {\n if (response.message === \"OK\") {\n Utils.showToast(\n response.message,\n \"Responses submitted\",\n Constants.TOAST.success\n );\n // that.clearForm();\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n } else {\n Utils.showToast(\n \"Error\",\n \"Please Enter Required field\",\n Constants.TOAST.fail\n );\n }\n });\n }\n\n getValues(){\n let data = {};\n document.querySelectorAll('.questions').forEach(question => {\n let id = question.getAttribute('data-label');\n data[id] = question.value;\n })\n return data;\n }\n\n validateValues(){\n let that = this;\n that.pass = true;\n document.querySelectorAll(\".questions\").forEach((question) => {\n let mandatory = question.getAttribute(\"data-mandatory\");\n let label = question.getAttribute(\"data-label\");\n let label_title = Utils.snakeToTitleCase(label);\n Utils.reInput(question);\n function toggleErrorMessage() {\n let value = question.value;\n if (mandatory === \"true\" && !value) {\n Utils.showInputError(question, label_title + \" is mandatory\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n if (label.endsWith(\"mobile_no\") && value) {\n if (!/^\\d{10}$/.test(value)) {\n Utils.showInputError(question, \"Mobile number must be 10 digits\");\n that.pass = false;\n } else {\n Utils.hideInputError(question);\n }\n }\n }\n toggleErrorMessage();\n question.addEventListener(\"input\", toggleErrorMessage);\n });\n document\n .querySelectorAll('[data-code=\"photo_of_shop\"]')\n .forEach((element) => {\n if (element.files.length === 0) {\n Utils.showToast(\n \"Error\",\n \"Photo of the shop is mandatory\",\n Constants.TOAST.fail\n );\n that.pass = false;\n }\n });\n}\n\n uploadDocuments(){\n let that = this;\n document.querySelectorAll('.pd-upload').forEach(element => {\n element.addEventListener('click', function(){\n let elem_file = element.parentElement.parentElement.firstElementChild;\n let file = elem_file.files[0];\n if (!file){\n Utils.showToast(\"Not Found\", \"File is mandatory\", Constants.TOAST.fail);\n return;\n }\n let data = new FormData();\n let file_code = elem_file.getAttribute('data-code');\n data.set('file_data', file);\n data.set('file_name', file.name);\n data.set('file_password', null);\n Utils.requestHandler(\n \"/scf/api/application/\" +\n that.scf_application_id.value +\n \"/document/upload/\" +\n file_code,\n Constants.REQUEST.post,\n data\n ).then(function (response){\n if(response.message === 'OK'){\n Utils.showToast(response.message, 'Document uploaded', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n })\n }\n\n fetchDropDownValuesIndustry() {\n let that = this;\n document\n .getElementById(\"business_segment\")\n .addEventListener(\"change\", function () {\n document.getElementById(\"industry_classification\").innerHTML = \"\";\n document.getElementById(\"industry_classification_2\").innerHTML = \"\";\n let segment = \"\";\n if (\n document.getElementById(\"business_segment\").value === \"Manufacturing / Trader\"\n ) {\n segment = \"HSN\";\n } else if (\n document.getElementById(\"business_segment\").value === \"Services\"\n ) {\n segment = \"SAC\";\n }\n let body = {\n level: 1,\n segment: segment,\n };\n Utils.requestHandler(\n \"/scf/api/application/pd-questions/industry-codes\",\n Constants.REQUEST.get,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n var dropdown = document.getElementById(\"industry_classification\");\n document.getElementById(\"industry_classification\").innerHTML = \"\";\n var option = document.createElement(\"option\");\n option.value = \"\";\n option.text = \"\";\n dropdown.appendChild(option);\n var values = response.data.data;\n for (var i = 0; i < values.length; i++) {\n var option = document.createElement(\"option\");\n option.value = values[i].code;\n option.text = values[i].name;\n dropdown.appendChild(option);\n }\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n\n fetchDropDownLevel2() {\n let that = this;\n document\n .getElementById(\"industry_classification\")\n .addEventListener(\"change\", function () {\n let segment = \"\";\n if (\n document.getElementById(\"business_segment\").value === \"Manufacturing / Trader\"\n ) {\n segment = \"HSN\";\n } else if (\n document.getElementById(\"business_segment\").value === \"Services\"\n ) {\n segment = \"SAC\";\n }\n let body = {\n level: 2,\n segment: segment,\n parent_code: document.getElementById(\"industry_classification\").value,\n };\n Utils.requestHandler(\n \"/scf/api/application/pd-questions/industry-codes\",\n Constants.REQUEST.get,\n body\n ).then(function (response) {\n if (response.message === \"OK\") {\n var dropdown = document.getElementById(\"industry_classification_2\");\n document.getElementById(\"industry_classification_2\").innerHTML = \"\";\n var option = document.createElement(\"option\");\n option.value = \"\";\n option.text = \"\";\n dropdown.appendChild(option);\n var values = response.data.data;\n for (var i = 0; i < values.length; i++) {\n var option = document.createElement(\"option\");\n option.value = values[i].code;\n option.text = values[i].name;\n dropdown.appendChild(option);\n }\n } else {\n Utils.showToast(\n response.message,\n Utils.formatErrorMessage(response.errors),\n Constants.TOAST.fail\n );\n }\n });\n });\n }\n}\n\n\nexport class ScfBankingModule{\n\n constructor(){\n this.obj_banking = [];\n let that = this;\n this.business_applicant_id = document.getElementById('business_applicant_id').value;\n that.BankingPanelHandler();\n }\n\n BankingPanelHandler(){\n let that = this;\n that.editBankAccountsPanel();\n that.showBankingModal();\n that.bankingAddBankAccount();\n that.bankingValidateBankAccount();\n that.bankGetIfscDetails();\n that.bankAddBankAccount();\n }\n\n editBankAccountsPanel(){\n let that = this;\n Utils.requestHandler(\"/scf/api/applicant/\" + that.business_applicant_id + '/bank-accounts', Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n response.data.bank_accounts.forEach(bank_account => {\n let abs_banking = new AbstractBanking(bank_account.id);\n abs_banking.account_number = bank_account.account_number;\n abs_banking.account_type = bank_account.account_type;\n abs_banking.account_holder = bank_account.primary_account_holder_name;\n abs_banking.verified_account_holder = bank_account.primary_account_holder_name;\n abs_banking.ifsc_code = bank_account.ifsc_code;\n abs_banking.bank_branch = bank_account.branch;\n abs_banking.bank_name = bank_account.bank_name;\n abs_banking.bank_micr = bank_account.micr_code;\n that.bankingSetupButtonIds(abs_banking.id);\n that.obj_banking.push(abs_banking);\n })\n that.bankRenderVerifiedAccounts();\n // Utils.showToast('Fetched', 'Bank Accounts', Constants.TOAST.success);\n }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n showBankingModal(){\n let that = this;\n document.getElementById('btn_show_add_new_bank_account').addEventListener('click', function () {\n var modal = new bootstrap.Modal(document.getElementById('bankingList'), {});\n modal.show();\n document.getElementById('account_number').readOnly = false;\n document.getElementById('ifsc_code').readOnly = false;\n document.getElementById('add_bank_ac').classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n });\n }\n\n bankingAddBankAccount(){\n let that = this;\n document.getElementById('add_bank_ac').addEventListener('click', function (){\n let abs_banking = new AbstractBanking(Math.random().toString(36));\n abs_banking.setValues();\n that.bankingSetupButtonIds(abs_banking.id);\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-validate-ifsc').classList.remove('no-display');\n document.getElementById('add_bank_ac_pane').classList.remove('no-display');\n\n that.obj_banking.push(abs_banking);\n this.classList.add('no-display');\n })\n }\n\n bankingSetupButtonIds(btn_id){\n let bt1 = document.getElementById('btn-validate-account');\n bt1.setAttribute('data-id', btn_id);\n bt1.classList.add('no-display');\n let bt2 = document.getElementById('btn-submit-account');\n bt2.setAttribute('data-id', btn_id);\n bt1.classList.add('no-display');\n let bt3 = document.getElementById('btn-validate-ifsc')\n bt3.setAttribute('data-id', btn_id);\n bt3.classList.remove('no-display');\n }\n\n bankingValidateBankAccount(){\n let that = this;\n document.getElementById('btn-validate-account').addEventListener('click', function(){\n let abs_banking = null;\n let elm_btn = this;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n abs_banking.getValues();\n if(abs_banking.validateValues()){\n let body = {\n bank_ac_no: abs_banking.account_number,\n bank_ifsc: abs_banking.ifsc_code\n }\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/onboarding/company/\" + that.business_applicant_id + \"/validate/bank-account\", Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n if(response.data.status === 'active'){\n abs_banking.verified_account_holder = response.data.bank_ac_holder_name;\n abs_banking.setValues();\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('account_number').readOnly = true;\n document.getElementById('ifsc_code').readOnly = true;\n document.getElementById('btn-submit-account').classList.remove('no-display');\n Utils.showToast(response.message, 'Bank account validated', Constants.TOAST.success);\n }else{\n abs_banking.verified_account_holder = abs_banking.account_holder;\n abs_banking.setValues();\n // elm_btn.classList.add('no-display');\n // document.getElementById('btn-submit-account').classList.remove('no-display');\n Utils.showToast(\"Inactive\", \"Bank account is inactive\", Constants.TOAST.fail);\n }\n } else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n Utils.loaderToast(elm_btn, Constants.ELEMENT_STATE.hide);\n })\n} \n })\n }\n\n bankGetIfscDetails(){\n let that = this;\n document.getElementById('btn-validate-ifsc').addEventListener('click', function (){\n let abs_banking = null;\n let btn_elem = this;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n abs_banking.getValues();\n Utils.loaderToast(Constants.ELEMENT_STATE.show);\n Utils.requestHandler(\"/scf/api/onboarding/company/validate/bank-ifsc\", Constants.REQUEST.get, {bank_ifsc: abs_banking.ifsc_code})\n .then(function (response){\n if(response.message === 'OK'){\n abs_banking.ifsc_code = response.data.ifsc_data.ifsc;\n abs_banking.bank_micr = response.data.ifsc_data.micr;\n abs_banking.bank_name = response.data.ifsc_data.bank_name;\n abs_banking.bank_branch = response.data.ifsc_data.branch + \", \" + response.data.ifsc_data.city + \", \" + response.data.ifsc_data.state;\n Utils.setter(abs_banking.elem_ifsc_code, abs_banking.ifsc_code);\n Utils.setter(abs_banking.elem_bank_micr, abs_banking.bank_micr);\n Utils.setter(abs_banking.elem_bank_name, abs_banking.bank_name);\n Utils.setter(abs_banking.elem_bank_branch, abs_banking.bank_branch);\n Utils.setter(abs_banking.elem_bank_branch_full, abs_banking.bank_branch);\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-validate-account').classList.remove('no-display'); \n Utils.showToast(response.message, 'IFSC Details fetched', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n }).then(function (){\n Utils.loaderToast(Constants.ELEMENT_STATE.hide);\n })\n })\n }\n\n bankAddBankAccount(){\n let that = this;\n document.getElementById('btn-submit-account').addEventListener('click', function (){\n let abs_banking = null;\n let active_id = this.getAttribute('data-id');\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n let body = {\n \"bank_ifsc\": abs_banking.ifsc_code,\n \"bank_name\": abs_banking.bank_name,\n \"holder_name\": abs_banking.verified_account_holder,\n \"bank_branch\": abs_banking.bank_branch,\n \"bank_ac_type\": abs_banking.account_type,\n \"bank_ac_no\": abs_banking.account_number\n }\n\n Utils.requestHandler(\"/scf/api/onboarding/company/bank-account/\" + that.business_applicant_id, Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n new ScfBankingModule();\n document.getElementById('add_bank_ac_pane').classList.add('no-display');\n document.getElementById('add_bank_ac').classList.remove('no-display');\n let closeModalButton = document.getElementById(\"btn-banking-modal-close\"); \n closeModalButton.click();\n Utils.showToast(response.message, 'Bank Details added', Constants.TOAST.success);\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n })\n }\n\n bankRenderVerifiedAccounts(){\n let that = this;\n let temp = document.getElementById('banking-tr-tmpl-business-details');\n let ac_table = document.getElementById('verified_accounts_business_details');\n ac_table.innerHTML = null;\n this.obj_banking.forEach(function (abs_banking){\n if(abs_banking.account_holder != null && abs_banking.account_number != null){\n let rend_row = Mustache.render(temp.innerHTML, abs_banking);\n ac_table.append($.parseHTML(rend_row)[1]);\n that.bankEditButton(abs_banking.id); \n }\n })\n \n }\n\n bankEditButton(active_id){\n let that = this;\n document.getElementById('btn-edit-account-'+active_id).addEventListener('click', function () {\n var modal = new bootstrap.Modal(document.getElementById('bankingList'), {});\n modal.show();\n document.querySelectorAll('.btn-banking').forEach(element => {\n element.classList.add('no-display');\n });\n document.getElementById('btn-validate-ifsc').classList.remove('no-display');\n let abs_banking = null;\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding bank account\", Constants.TOAST.fail);\n }\n that.obj_banking.forEach(function (abs_bank){\n if(abs_bank.id === active_id){\n abs_banking = abs_bank;\n return false;\n }\n })\n abs_banking.elem_account_number.disabled = false;\n abs_banking.elem_account_holder.disabled = false;\n abs_banking.elem_account_type.disabled = false;\n abs_banking.elem_ifsc_code.disabled = false; \n that.bankingSetupButtonIds(active_id);\n abs_banking.setValues();\n document.getElementById('add_bank_ac_pane').classList.remove('no-display');\n document.getElementById('add_bank_ac').classList.add('no-display');\n })\n }\n\n}\n\nexport class ScfPromoterModule{\n\n constructor(){\n this.obj_promoter = [];\n let that = this;\n this.business_applicant_id = document.getElementById('business_applicant_id').value;\n that.pomoterPanelHandler();\n }\n\n pomoterPanelHandler(){\n let that = this;\n that.getAllPromoters();\n that.showNewPromoterModal();\n that.populateTitleFromPanType();\n that.populateTitleRelationShipwith();\n that.populateRelationship();\n that.promoterDataSubmit();\n that.populateCityStateFromPincode();\n that.populateNameFromPan();\n }\n\n promoterDataSubmit(){\n let promoterSave = document.getElementById(\"promoter-save\");\n let that = this;\n\n promoterSave.addEventListener('click', function () {\n\n let titleOfBorrower = document.getElementById(\"titleOfBorrower\").value;\n let promoterPan = document.getElementById(\"promoterPan\").value;\n let promoterName = document.getElementById(\"promoterName\").value;\n let promoterFirstName = document.getElementById(\"promoterFirstName\").value;\n let promoterLastName = document.getElementById(\"promoterLastName\").value;\n let promoterBirthDate = document.getElementById(\"promoterBirthDate\").value;\n let promoterGender = document.getElementById(\"promoterGender\").value;\n let promoterEmail = document.getElementById(\"promoterEmail\").value;\n let promoterMobile = document.getElementById(\"promoterMobile\").value;\n let promoterAddress = document.getElementById(\"promoterAddress\").value;\n let promoterPincode = document.getElementById(\"promoterPincode\").value;\n let promoterCity = document.getElementById(\"promoterCity\").value;\n let promoterState = document.getElementById(\"promoterState\").value;\n let promoterYearsAtCurrentAddress = document.getElementById(\"promoterYearsAtCurrentAddress\").value;\n let promotorShareHodling = document.getElementById(\"promotershareholding\").value;\n let relationship = document.getElementById('titleRelationShipwith').value;\n\n let body = {\n ownership_type: titleOfBorrower,\n pan_number: promoterPan,\n first_name: promoterFirstName,\n last_name: promoterLastName,\n full_name: promoterName,\n date_of_birth: promoterBirthDate,\n gender: promoterGender,\n email: promoterEmail,\n mobile: promoterMobile,\n address: promoterAddress,\n zipcode: promoterPincode,\n city: promoterCity,\n state: promoterState,\n years_at_current_address: promoterYearsAtCurrentAddress,\n share_holding: promotorShareHodling,\n relationship: relationship\n };\n\n Utils.requestHandler('/scf/api/onboarding/company/director/' + that.business_applicant_id, Constants.REQUEST.post, body)\n .then(function (response){\n if(response.message === 'OK'){\n document.getElementById(\"titleOfBorrower\").value = \"\";\n document.getElementById(\"promoterName\").removeAttribute(\"readonly\");\n document.getElementById(\"promoterName\").value = \"\";\n document.getElementById(\"promoterName\").setAttribute(\"readonly\", \"true\");\n document.getElementById(\"promoterPan\").value = \"\";\n document.getElementById(\"promoterFirstName\").value = \"\";\n document.getElementById(\"promoterLastName\").value = \"\";\n document.getElementById(\"promoterBirthDate\").value = \"\";\n document.getElementById(\"promoterGender\").value = \"\";\n document.getElementById(\"promoterEmail\").value = \"\";\n document.getElementById(\"promoterMobile\").value = \"\";\n document.getElementById(\"promoterAddress\").value = \"\";\n document.getElementById(\"promoterPincode\").value = \"\";\n document.getElementById(\"promoterCity\").value = \"\";\n document.getElementById(\"promoterState\").value = \"\";\n document.getElementById(\"promoterYearsAtCurrentAddress\").value = \"\";\n document.getElementById('titleRelationShipwith').value = \"\";\n document.getElementById('promotershareholding').value = \"\";\n that.obj_promoter = [];\n that.getAllPromoters();\n Utils.showToast('Added', 'Business Promoter Added', Constants.TOAST.success);\n let closeModalButton = document.getElementById(\"btn-promoter-modal-close\"); \n closeModalButton.click();\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n });\n\n }\n\n\n populateCityStateFromPincode(){\n const promoterPincode = document.getElementById(\"promoterPincode\");\n const promoterCity = document.getElementById(\"promoterCity\");\n const promoterState = document.getElementById(\"promoterState\");\n\n promoterPincode.addEventListener('input', function () {\n const promoterPincodeValue = promoterPincode.value;\n \n if (promoterPincodeValue.length === 6) {\n Utils.getZipcodeDetails(promoterPincodeValue).then(function (response){\n if(response.message === 'OK'){\n promoterCity.value = response.data.set_value.district\n promoterState.value = response.data.set_value.state_name\n } else {\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n });\n\n } else {\n promoterCity.value = \"\";\n promoterState.value = \"\";\n }\n });\n }\n\n populateNameFromPan(){\n const promoterPan = document.getElementById(\"promoterPan\");\n const promoterName = document.getElementById(\"promoterName\");\n const promoterFirstName = document.getElementById(\"promoterFirstName\");\n const promoterLastName = document.getElementById(\"promoterLastName\");\n promoterPan.addEventListener('input', function () {\n const inputValue = promoterPan.value;\n \n if (inputValue.length === 10) {\n Utils.requestHandler(\"/scf/api/onboarding/name/\" + inputValue, Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n promoterName.value = response.data.full_name\n promoterFirstName.value = response.data.first_name\n promoterLastName.value = response.data.last_name\n }else{\n Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n \n }\n })\n\n\n } else {\n promoterName.value = \"\";\n promoterFirstName.value = \"\";\n promoterLastName.value = \"\";\n }\n });\n\n }\n\n populateTitleRelationShipwith() {\n const titleRelationShipwith = document.getElementById(\"titleRelationShipwith\");\n const relationships = [\"\",\"Father\", \"Mother\", \"Son\", \"Daughter\", \"Sister\", \"Brother\", \"Husband\", \"Wife\", \"Others\"];\n \n titleRelationShipwith.innerHTML = \"\"; \n\n relationships.forEach((relationship) => {\n const option = document.createElement(\"option\");\n option.text = relationship;\n option.value = relationship.toLowerCase().replace(' ', '_');\n\n titleRelationShipwith.add(option);\n });\n }\n\n populateRelationship(){\n document.getElementById('titleOfBorrower').addEventListener('change', function(){\n let title_of_borrower = document.getElementById('titleOfBorrower').value;\n if(title_of_borrower==='CO APPLICANT'){\n document.getElementById('relationshipHide').classList.remove(\"no-display\");\n document.getElementById('labelPromoterPan').classList.add(\"mt-4\");\n }\n else{\n document.getElementById('relationshipHide').classList.add(\"no-display\");\n document.getElementById('labelPromoterPan').classList.remove(\"mt-4\");\n }\n })\n }\n\n populateTitleFromPanType() {\n Utils.requestHandler(\"/scf/api/applicant/\" + this.business_applicant_id, Constants.REQUEST.get, {}).then(function (response) {\n const constitution = response.data.scf_applicant['constitution'];\n const titleOfBorrower = document.getElementById(\"titleOfBorrower\"); const titleOptionsMap = {\n \"partnership\": [\"Partner\", \"Authorized Signatory\",\"Co applicant\"],\n \"llp\": [\"Partner\", \"Authorized Signatory\",\"Co applicant\"],\n \"private_limited\": [\"Director\",\"Authorized Signatory\",\"Co applicant\"],\n \"public_company\": [\"Director\", \"Authorized Signatory\",\"Co applicant\"],\n \"sole_proprietorship\": [\"Proprietor\",\"Co applicant\"]\n };\n titleOfBorrower.innerHTML = \"\";\n if (constitution in titleOptionsMap) {\n titleOptionsMap[constitution].forEach((optionText) => {\n const option = document.createElement(\"option\");\n option.text = optionText;\n switch(optionText) {\n case \"Director\":\n option.value = \"DIRECTOR\";\n break;\n case \"Co applicant\":\n option.value = \"CO APPLICANT\";\n break;\n case \"Proprietor\":\n option.value = \"PROPRIETOR\";\n break;\n case \"Partner\":\n option.value = \"PARTNER\";\n break;\n case \"Authorized Signatory\":\n option.value = \"AUTHORIZED_SIGNATORY\";\n break;\n default:\n option.value = \"\";\n break;\n }\n titleOfBorrower.add(option);\n });\n }\n });\n }\n\n\n showNewPromoterModal(){\n let pan = document.getElementById('new_borrower_enter_company_pan').value;\n if (pan[3] == 'C') {\n document.getElementById('btn_show_add_new_promoter').classList.add('no-display')\n }\n document.getElementById('btn_show_add_new_promoter').addEventListener('click', function (){\n let abs_promoter = new AbstractPromoter(Math.random().toString(36));\n abs_promoter.setValues();\n })\n }\n\n getAllPromoters(){\n let that = this;\n Utils.requestHandler(\"/scf/api/onboarding/company/directors/\" + that.business_applicant_id , Constants.REQUEST.get, {})\n .then(function (response){\n if(response.message === 'OK'){\n response.data.forEach(promoter => {\n let abs_promoter = new AbstractPromoter(promoter.id);\n abs_promoter.title = promoter.ownership_type;\n abs_promoter.pan = promoter.pan_number;\n abs_promoter.din=promoter.din_number;\n abs_promoter.full_name = \n (promoter.first_name && promoter.last_name) \n ? promoter.first_name + \" \" + promoter.last_name \n : promoter.din_full_name;\n abs_promoter.first_name = promoter.first_name;\n abs_promoter.last_name = promoter.last_name;\n abs_promoter.dob = promoter.date_of_birth;\n abs_promoter.gender = promoter.gender;\n abs_promoter.email = promoter.email;\n abs_promoter.mobile = promoter.mobile;\n abs_promoter.address = promoter.address;\n abs_promoter.pincode = promoter.zipcode;\n abs_promoter.city = promoter.city;\n abs_promoter.state = promoter.state;\n abs_promoter.years_at_current_address = promoter.years_at_current_address;\n abs_promoter.relationship = promoter.relationship;\n that.obj_promoter.push(abs_promoter);\n })\n that.rederVerifiedPromoters();\n // Utils.showToast('Fetched', 'Promoters', Constants.TOAST.success);\n }else{\n // Utils.showToast(response.message, Utils.formatErrorMessage(response.errors), Constants.TOAST.fail);\n }\n })\n }\n\n rederVerifiedPromoters(){\n let that = this;\n let temp = document.getElementById('promoters-tr-tmpl-business-details');\n let ac_table = document.getElementById('verified_promoters_details');\n ac_table.innerHTML = null;\n this.obj_promoter.forEach(function (obj_promoter_ind){\n if(obj_promoter_ind.full_name != null || obj_promoter_ind.pan != null){\n obj_promoter_ind.full_name = obj_promoter_ind.full_name || promoter.din_full_name || (promoter.pan_first_name + ' ' + promoter.pan_last_name);\n if(obj_promoter_ind['title']===\"PROPRIETOR\"){\n let dropdown = document.getElementById(\"titleOfBorrower\");\n let options = dropdown.options;\n for (let i = 0; i < options.length; i++) {\n if (options[i].value === \"PROPRIETOR\") {\n dropdown.remove(i);\n break; \n }\n }\n }\n let rend_row = Mustache.render(temp.innerHTML, obj_promoter_ind);\n ac_table.append($.parseHTML(rend_row)[1]);\n that.promoterEditButton(obj_promoter_ind.id); \n }\n })\n }\n\n promoterEditButton(active_id){\n let that = this;\n document.getElementById('btn-edit-promoter-'+active_id).addEventListener('click', function () {\n var modal = new bootstrap.Modal(document.getElementById('promoterList'), {});\n modal.show();\n let abs_promoter = null;\n if(!active_id){\n Utils.showToast(\"Search\", \"Error finding Promoter\", Constants.TOAST.fail);\n }\n that.obj_promoter.forEach(function (promoter){\n if(promoter.id === active_id){\n abs_promoter = promoter;\n return false;\n }\n })\n abs_promoter.setValues();\n })\n }\n\n} \n\nclass AbstractBanking {\n\n constructor(id){\n this.id = id;\n this.account_number = null;\n this.account_type = null;\n this.account_holder = null;\n this.ifsc_code = null;\n this.bank_branch = null;\n this.bank_name = null;\n this.bank_micr = null;\n this.verified_account_holder = null;\n this.elem_account_number = document.getElementById('account_number');\n this.elem_account_holder = document.getElementById('account_holder');\n this.elem_account_type = document.getElementById('account_type');\n this.elem_ifsc_code = document.getElementById('ifsc_code');\n this.elem_bank_branch = document.getElementById('bank_branch');\n this.elem_bank_name = document.getElementById('bank_name');\n this.elem_bank_micr = document.getElementById('bank_micr');\n this.elem_verified_account_holder = document.getElementById('verified_account_holder');\n this.elem_verified_account_holder_name = document.getElementById('account_holder');\n this.elem_bank_branch_full = document.getElementById('bank_branch_full');\n }\n\n getValues(){\n this.account_number = Utils.getter(this.elem_account_number);\n this.account_type = Utils.getter(this.elem_account_type);\n this.account_holder = Utils.getter(this.elem_account_holder);\n this.ifsc_code = Utils.getter(this.elem_ifsc_code);\n this.bank_branch = Utils.getter(this.elem_bank_branch);\n this.bank_name = Utils.getter(this.elem_bank_name);\n this.bank_micr = Utils.getter(this.elem_bank_micr);\n this.account_type = Utils.getter(this.elem_account_type);\n this.verified_account_holder = Utils.getter(this.elem_verified_account_holder);\n }\n\n setValues() {\n Utils.setter(this.elem_account_number, this.account_number);\n // Utils.setter(this.elem_account_type, this.account_type);\n Utils.setter(this.elem_account_type, \"current\");\n Utils.setter(this.elem_account_holder, this.account_holder);\n Utils.setter(this.elem_ifsc_code, this.ifsc_code);\n Utils.setter(this.elem_bank_branch, this.bank_branch);\n Utils.setter(this.elem_bank_name, this.bank_name);\n Utils.setter(this.elem_bank_micr, this.bank_micr);\n // Utils.setter(this.elem_account_type, this.account_type);\n Utils.setter(this.elem_account_type, \"current\");\n Utils.setter(this.elem_verified_account_holder, this.verified_account_holder);\n Utils.setter(this.elem_verified_account_holder_name, this.verified_account_holder);\n Utils.setter(this.elem_bank_branch_full, this.bank_branch);\n }\n\n validateValues(){\n return true;\n }\n}\n\nclass AbstractPromoter {\n\n constructor(id){\n this.id = id;\n this.title = null;\n this.pan = null;\n this.full_name = null;\n this.first_name = null;\n this.last_name = null;\n this.dob = null;\n this.gender = null;\n this.email = null;\n this.mobile = null;\n this.address = null;\n this.pincode = null;\n this.city = null;\n this.state = null;\n this.years_at_current_address = null;\n this.elem_title = document.getElementById('titleOfBorrower');\n this.elem_pan = document.getElementById('promoterPan');\n this.elem_full_name = document.getElementById('promoterName');\n this.elem_first_name = document.getElementById('promoterFirstName');\n this.elem_last_name = document.getElementById('promoterLastName');\n this.elem_dob = document.getElementById('promoterBirthDate');\n this.elem_gender = document.getElementById('promoterGender');\n this.elem_email = document.getElementById('promoterEmail');\n this.elem_mobile = document.getElementById('promoterMobile');\n this.elem_address = document.getElementById('promoterAddress');\n this.elem_pincode = document.getElementById('promoterPincode');\n this.elem_city = document.getElementById('promoterCity');\n this.elem_state = document.getElementById('promoterState');\n this.elem_years_at_current_address = document.getElementById('promoterYearsAtCurrentAddress');\n this.elem_share_holding = document.getElementById('promotershareholding');\n this.elem_relationship = document.getElementById('titleRelationShipwith');\n }\n\n getValues(){\n this.title = Utils.getter(this.elem_title);\n this.pan = Utils.getter(this.elem_pan);\n this.full_name = Utils.getter(this.elem_full_name);\n this.first_name = Utils.getter(this.elem_first_name);\n this.last_name = Utils.getter(this.elem_last_name);\n this.dob = Utils.getter(this.elem_dob);\n this.gender = Utils.getter(this.elem_gender);\n this.email = Utils.getter(this.elem_email);\n this.mobile = Utils.getter(this.elem_mobile);\n this.address = Utils.getter(this.elem_address);\n this.pincode = Utils.getter(this.elem_pincode);\n this.city = Utils.getter(this.elem_city);\n this.state = Utils.getter(this.elem_state);\n this.years_at_current_address = Utils.getter(this.elem_years_at_current_address);\n this.promoter_share_holdong = Utils.getter(this.elem_share_holding)\n this.relationship = Utils.getter(this.elem_relationship);\n }\n\n setValues() {\n Utils.setter(this.elem_title, this.title);\n Utils.setter(this.elem_pan, this.pan);\n Utils.setter(this.elem_full_name, this.full_name);\n Utils.setter(this.elem_first_name, this.first_name);\n Utils.setter(this.elem_last_name, this.last_name);\n Utils.setter(this.elem_dob, this.dob);\n Utils.setter(this.elem_gender, this.gender);\n Utils.setter(this.elem_email, this.email);\n Utils.setter(this.elem_mobile, this.mobile);\n Utils.setter(this.elem_address, this.address);\n Utils.setter(this.elem_pincode, this.pincode);\n Utils.setter(this.elem_city, this.city);\n Utils.setter(this.elem_state, this.state);\n Utils.setter(this.elem_years_at_current_address, this.years_at_current_address);\n Utils.setter(this.elem_relationship, this.relationship);\n Utils.setter(this.elem_share_holding, this.promoter_share_holdong);\n }\n\n validateValues(){\n return true;\n }\n}\n\n\n","import {ScfApplicationDashboard, ScfApplicationDetails} from './application/scf_application_handler';\nimport {ScfSignIn, ScfSignUp} from \"./scf_auth_handler\";\nimport {CollectionApplicationHandler} from \"../collections/collection_application_handler\";\nimport {ScfOnboarding} from \"./onboarding/scf_onboarding_handler\";\nimport {ScfInvoice} from \"./invoice/scf_invoice\";\nimport {ScfInvoiceDashboard} from \"./invoice/scf_invoice_dashboard\";\nimport {ScfDueInvoiceDashboard} from \"./invoice/scf_invoice_dashboard\";\nimport {ScfCounterParty} from \"./counterparty/scf_counterparty_handler\";\nimport {ScfCounterPartyConfirmation} from \"./counterparty/scf_counterparty_confirmation\";\nimport {ScfUserDashboard} from \"./users/scf_user\"\nimport {SupportPage} from \"../core/static_pages\"\nimport {ScfInvoiceConfirmation} from \"./invoice/scf_invoice_confirmation\"\nimport {ScfSalesNewApplicationPage} from \"./sales/scf_sales_new_application\"\nimport {ScfUserSettings} from \"./users/scf_user_settings\"\nimport {ScfUserNewBorrower} from \"./users/scf_new_borrower\"\nimport {AnchorNewLeadsLot} from \"../anchor/new_anchor_leads_lot\"\nimport {LeadsLotDetails} from \"../anchor/leads_lot_details\"\nimport {AnchorNewInvoicesLot} from \"../anchor/new_anchor_invoices_lot\"\nimport {AnchorBorrower} from \"../anchor/anchor_borrower\"\nimport {AnchorApplications} from \"../anchor/anchor_applications\"\nimport {AllAnchorsList} from \"../anchor/all_anchors_list\"\n\ndocument.addEventListener(\"turbolinks:load\", function() {\n let scrpt = document.getElementById('js_script').getAttribute('data-script');\n switch (scrpt){\n case 'ScfSignIn':\n new ScfSignIn().handler()\n break;\n case 'ScfSignUp':\n new ScfSignUp().handler()\n break;\n case 'ScfOnboarding':\n new ScfOnboarding().handler()\n break;\n case 'ScfApplicationDashboard':\n new ScfApplicationDashboard().handler()\n break;\n case 'ScfApplicationDetails':\n new ScfApplicationDetails().handler()\n break;\n case 'ScfCollectionDashboard':\n new CollectionApplicationHandler().handlerDashboard();\n break;\n case 'ScfCollectionDetails':\n new CollectionApplicationHandler().handlerDetails();\n break;\n case 'ScfInvoiceDashboard':\n new ScfInvoiceDashboard().handler();\n break;\n case 'ScfInvoiceDetails':\n new ScfInvoice().handler();\n break;\n case 'ScfCounterPartyDetails':\n new ScfCounterParty().handler();\n break;\n case 'ScfCounterPartyConfirmation':\n new ScfCounterPartyConfirmation().handler();\n break;\n case 'SupportPage':\n new SupportPage().handler();\n break;\n case 'ScfUserDashboard':\n new ScfUserDashboard().handler();\n break;\n case 'ScfInvoiceConfirmation':\n new ScfInvoiceConfirmation().handler();\n break;\n case 'ScfSalesNewApplicationPage':\n new ScfSalesNewApplicationPage().handler();\n break;\n case 'ScfUserSettings':\n new ScfUserSettings().handler();\n break;\n case 'ScfUserNewBorrower':\n new ScfUserNewBorrower().handler();\n break;\n case 'AnchorNewLeadsLot':\n new AnchorNewLeadsLot().handler();\n break;\n case 'AnchorNewInvoicesLot':\n new AnchorNewInvoicesLot().handler();\n break; \n case 'AnchorApplications':\n new AnchorApplications().handler();\n break; \n case 'AnchorBorrower':\n new AnchorBorrower().handler();\n break; \n case 'LeadsLotDetails':\n new LeadsLotDetails().handler();\n break; \n case 'AllAnchorsList':\n new AllAnchorsList().handler();\n break;\n case 'ScfDueInvoiceDashboard':\n new ScfDueInvoiceDashboard().handler();\n break; \n default:\n console.log(\"No JS for the page\");\n }\n});\n\n"],"sourceRoot":""}