{"version":3,"sources":["custom/newbiz/redux/actions/premiumCalcActions.js","custom/newbiz/redux/actions/reportOptionsActions.js","core/utils/setAuthConfig.js","core/uicore/QuestionModalFooter.js","core/hooks/useRouter.js","core/api/trackingWebService.js","core/uicore/Alert.js","core/redux/actions/rolesActions.js","core/uicore/ButtonBar.js","core/uicore/Modal.js","core/uicore/ModalTitle.js","core/hooks/ScrollToTop.js","core/uicore/Logo.js","core/controls/Button.js","core/controls/Checkbox.js","core/controls/ComboModal.js","core/controls/Datebox.js","core/controls/FileUpload.js","core/controls/Label.js","core/controls/MaskedTextbox.js","core/controls/MultiCheckbox.js","core/controls/PillButtons.js","core/controls/Radiobuttons.js","core/controls/Selectbox.js","core/controls/Textareabox.js","core/controls/Textbox.js","core/controls/TextboxSubmit.js","core/controls/TileButtons.js","custom/common/api/postReportWebServices.js","core/uicore/CalcTable.js","core/uicore/FieldContainer.js","core/uicore/FullPremiumTable.js","core/uicore/Icon.js","core/uicore/SidebarContainer.js","core/uicore/Tab.js","core/uicore/TabContent.js","core/uicore/TabLayout.js","core/uicore/TooltipIcon.js","core/uicore/Tabs.js","core/uicore/TooltipText.js","assets/User-white.png","assets/Help-white.png","assets/procomp.svg","assets/Add-white.png","assets/Folder-white.png","assets/magnifying-glass.png","assets/Help.png","assets/Vision-blue.png","assets/Upload-blue.png","assets/Diskette-blue.png","assets/arrow.svg","assets/chevron-blue-right.svg","assets/pages.svg","assets/chevron-blue.svg","assets/chevron-white.svg","assets/threedots.svg","assets/Signoff-white.png","assets/Switch-white.png","assets/Checkmark-white.png","assets/Checkmark-white-circle.png","assets/Checkmark-circle.svg","assets/Warning-white.png","assets/Account-sample.png","assets/Flag-white.png","assets/hourglass.svg","assets/About_ProCompPPR.png","assets/About_ProCompIllustration.png","assets/Trash.svg","assets/help_outline-blue-18dp.svg","assets/eAppPlaceholder.svg","assets/Zoom.svg","assets/Close.svg","assets/Bank Info Illustration.svg","assets/Dog on bed.svg","assets/Whiteboard with plants.svg","assets/Clock.svg","assets/fullScreen.png","assets/sharedConcept/Corp-money.svg","assets/sharedConcept/Corp-time.svg","assets/sharedConcept/Corp.svg","assets/sharedConcept/Exec.svg","assets/sharedConcept/Blue-exec.svg","assets/sharedConcept/Exec-money.svg","assets/sharedConcept/Exec_time.svg","assets/sharedConcept/gavel.svg","assets/sharedConcept/time.svg","assets/sharedConcept/Purple-exec-plus-corp.svg","assets/sharedConcept/icon_money.svg","assets/sharedConcept/plus.svg","assets/sharedConcept/Purple-Exec-Corp.svg","assets/sharedConcept/ProcompLogo_grey.svg","assets/sharedConcept/Arrow-45-money.svg","assets/sharedConcept/Arrow-curved.svg","assets/sharedConcept/arrow-curved-long.svg","assets/sharedConcept/arrow-straight-small.svg","assets/sharedConcept/Arrow-straight-money.svg","assets/sharedConcept/Arrow-straight.svg","assets/sharedConcept/ProcompLogo_magenta.svg","assets/Procomp-logo-blue.png","assets/Plant-book.png","assets/Scenario-window.png","assets/calculator.svg","assets/icon-print.svg","assets/icon-save.svg","assets/Add-blue.png","assets/Illustration-Magic.svg","assets/illustration-dino.png","assets/drag-icon.svg","custom/inforce/utils/Tree.js","custom/inforce/redux/actions/inforceActions.js","custom/common/utils/lookupFunctions.js","core/hooks/usePCTranslation.ts","core/report/buildOutput.js","core/uicore/TabsHeader.js","custom/common/utils/functions.js","assets/Clipboard.png","core/uicore/PremiumDisplay.js","assets/spinner.gif","core/uicore/Spinner.js","assets/Text-documents.png","core/uicore/PanelItemGroup.js","custom/inforce/report/buildReportFunctions.js","custom/common/redux/Types.js","custom/dataReports/utils/functions.js","custom/inforce/utils/constants.js","core/redux/types.js","core/hooks/index.js","core/redux/actions/authActions.js","core/redux/actions/alertActions.js","core/redux/actions/setupActions.js","custom/common/redux/actions/routesAction.js","custom/common/redux/actions/utilActions.js","core/redux/actions/formDataActions.js","core/utils/calcUtils.js","custom/common/utils/constants.js","core/constants/uiConstants.js","core/formValidation/StatusContext.js","core/formValidation/FormStatus.js","core/formValidation/ValidationContext.ts","core/formValidation/FormValidator.js","core/formValidation/coreValidation.js","core/formValidation/StatusMessage.js","core/formValidation/StatusDisplay.js","core/formValidation/ValidationMessage.js","core/formValidation/ErrorDisplay.js","core/utils/util.js","core/hocs/PrivateRoute.js","core/hocs/withPCTranslation.js","core/constants/calcConstants.js","core/utils/inputTypeUtils.js","custom/dataReports/redux/actions/dataReportActions.js","custom/common/ui/AboutModal.js","custom/common/auth/Login.js","custom/common/ui/SwitchProductModal.js","custom/common/ui/TabbedHeader.js","custom/profile/ui/ProfileSettings.js","custom/profile/ui/UserInformation.js","custom/profile/utils/data.js","custom/common/ui/WidgetCard.js","custom/common/ui/ProfileWidgets.js","custom/common/ui/ProfileModal.js","custom/sharedOwnership/ui/SharedConceptModalFooter.js","custom/sharedOwnership/ui/BasicInfoModal_.js","custom/sharedOwnership/ui/PremiumAllocationModal_.js","custom/sharedOwnership/ui/IntroModal1.js","custom/sharedOwnership/ui/IntroModal2.js","custom/sharedOwnership/ui/IntroModal3.js","custom/sharedOwnership/ui/IntroModal5.js","custom/sharedOwnership/ui/IntroModal6.js","custom/sharedOwnership/ui/IntroModal7.js","custom/sharedOwnership/ui/IntroModal8.js","custom/sharedOwnership/ui/IntroModal10.js","custom/sharedOwnership/ui/IntroModal11.js","custom/sharedOwnership/ui/IntroModal14.js","custom/sharedOwnership/ui/IntroModal15.js","custom/sharedOwnership/ui/IntroModal16.js","custom/sharedOwnership/ui/IntroModal17.js","custom/sharedOwnership/ui/ReadonlyModal.js","custom/sharedOwnership/ui/BeneficiaryDesignationsModal_.js","custom/sharedOwnership/ui/ProductSelectionModal_.js","custom/sharedOwnership/ui/ModalSelection.js","custom/sharedOwnership/SharedOwnershipModal.js","custom/common/ui/PageHeader.js","custom/common/ui/PageHeaderM.js","custom/common/ui/Header.js","custom/common/ui/WelcomeModal.js","custom/bi/utils/data.js","custom/bi/ui/QueryListDisplay.js","custom/bi/ui/BIReports.js","custom/bi/BusinessIntelligence.js","custom/common/ui/Routes.js","custom/common/ui/StoreConnector.js","custom/alphaLookup/redux/actions/alphaLookupActions.js","custom/bi/redux/actions/index.js","custom/common/App.js","serviceWorker.js","core/utils/i18n.js","BrowserUnsupported.js","index.tsx","custom/inforce/utils/inforceUtils.js","core/constants/reportConstants.js","custom/newbiz/utils/constants.js","core/utils/globalUtils.js","custom/common/utils/customEvents.js","custom/common/utils/customFormValidation.js","core/report/reportUtils.js","core/utils/globalEvents.js","core/hocs/withCoreEvents.js","lib/authConfig.js","custom/common/redux/reducers/routesReducers.js","custom/newbiz/redux/reducers/premiumCalcReducers.js","custom/inforce/redux/reducers/inforceReducers.js","custom/alphaLookup/redux/reducers/alphaLookupReducers.js","custom/dataReports/redux/reducers/dataReportsReducers.js","core/redux/reducers/rolesReducers.js","core/redux/reducers/alertReducers.js","core/redux/reducers/authReducers.js","core/redux/reducers/formDataReducers.js","core/redux/reducers/index.js","core/redux/reducers/setupReducers.js","core/redux/store/dataStore.js"],"names":["cancelToken","getFirstYearPremium","formData","dispatch","a","cancel","axios","CancelToken","source","post","token","res","type","ActionTypes","GET_FIRSTYEAR_PREMIUM","payload","updateStoreFormData","firstYearPremium","console","log","updateReportOptionsProfile","getState","user","auth","isAuthenticated","getPageConceptSelection","pageSelection","conceptSelection","reportFormData","chkCoverPage","chkTaxPage","chkUnderwritingPage","chkComplianceNotice","chkProductCompare","chkInternalRoR","chkCharitableGiving","chkInsuranceInvestment","chkSharedOwnership","txtCharitableGivingIntRate","txtCharitableGivingTaxRate","txtInsuranceInvestmentIntRate","txtInsuranceInvestmentTaxRate","txtEmployerBenefitPeriod","txtEmployerPayPeriod","rdoDuration","cboSelectedYears","cboIntervalYears","txtPy1","txtPy2","txtPy3","txtPy4","txtPy5","txtAgeD1","txtAgeD2","txtAgeD3","txtAgeD4","txtAgeD5","userFormData","UPDATE_PROFILE","data","response","setAlert","setAuthToken","refreshToken","JSON","parse","sessionStorage","getItem","defaults","headers","jwt","refreshAccessToken","account","msalInstance","getActiveAccount","acquireTokenSilent","tokenRequest","accessToken","InteractionRequiredAuthError","acquireTokenPopup","then","resp","catch","err","dataStore","logout","error","setInterceptorAD","interceptors","request","use","config","setItem","stringify","Promise","reject","setInterceptor","isRefreshing","failedQueue","processQueue","forEach","promise","resolve","originalRequest","status","_retry","push","url","finally","QuestionModalFooter","isDisable","controlGetFocus","controlLostFocus","controlClick","setElement","onSelectOK","onSelectCancel","btnCancel","btnOK","isInfo","isButtonTogether","isReverse","className","text","getfocusCallback","getclickCallback","event","name","value","lostfocusCallback","refItem","propStyle","label","control","disableButton","defaultProps","useRouter","params","useParams","location","useLocation","history","useHistory","match","useRouteMatch","useMemo","replace","pathname","query","queryString","search","sendTrackingInfo","trackingData","header","trackingID","alertLogo","Success","checkLogo","Error","warningLogo","Secondary","flagLogo","Alert","styling","alert","useSelector","state","alertType","src","alt","msg","id","getAllRoles","get","ALL_ROLES","ButtonBar","children","buttonbar","STYLES","BUTTONBAR","document","getElementById","Modal","onClick","ReactDOM","createPortal","querySelector","ModalTitle","title","fontSize","t","showUserName","username","ScrollToTopController","withRouter","prevProps","this","props","window","scrollTo","Component","condition","useEffect","top","left","behavior","Logo","companyName","LOGO","logo","Button","autoFocus","logoRight","showIcon","showIconRight","isActive","allowPropagation","errors","useContext","ValidationContext","usePCTranslation","controlItem","setupItems","controlItems","isDisabled","disableOnError","Object","keys","length","displayDisabled","useState","disabled","setDisabled","containerClass","BASIC","BUTTON","displayHidden","onFocus","target","stopPropagation","onBlur","persist","delayTime","setTimeout","ref","classLogo","srcLogo","altLogo","Checkbox","getchangeCallback","stateData","checked","readOnly","displayName","disableControl","customLabel","undefined","formErrors","controlOnChange","locked","controlOnFocus","controlOnLostFocus","INPUTCONTAINER","checkcontainer","isDirty","checkInput","CHECK","onChange","LABEL","showTooltip","showTooltipIcon","TOOLTIP","ComboModal","optionItems","onSelectProduct","onCancel","btnX","btnChoose","modalTitle","isUseInformation","selectedItem","setSelectedItem","e","closeIcon","map","key","isTranslateOptions","tickLogo","Datebox","format","ageFieldName","minDate","maxDate","disable","rawValue","rawChange","blnDateCheck","date","Date","DATE","datecontainer","openToDate","setFullYear","getFullYear","handleChangeRaw","dateInput","selected","preventDefault","moment","isValid","onChangeRaw","onInputClick","onClickOutside","dateFormat","showMonthDropdown","showYearDropdown","dropdownMode","placeholderText","toLowerCase","FileUpload","controlChange","useDropzone","noClick","noKeyboard","getRootProps","getInputProps","open","acceptedFiles","useDispatch","size","handleImportUser","f","FormData","append","result","radiocontainer","inputcontainer","radioGroup","child","Label","useTranslation","labelText","labelbox","LABELCOMPONENT","labelcomponent","MaskedTextbox","step","styleProp","inputLanguage","toUpperCase","textcontainer","textInput","mask","getMaskForInput","fieldType","TEXT","guide","maxLength","style","autoComplete","showLabel","field","validationmsg","MultiCheckbox","options","values","setValues","split","useOptions","tempVal","includes","i","splice","join","checkLabel","multicheckcontainer","checkGroup","PillButtons","disableChoice","pillLabel","pills","PILLCONTAINER","pillcontainer","PILL","CHILD","isSecondaryText","secondaryText","Radiobuttons","choice","radioContainerClass","RADIOCONTAINER","radioLabel","RADIO","Selectbox","isModalOptions","btnXCancel","isModalOpen","setIsModalOpen","selectcontainer","handleSelectOption","selectInput","SELECT","tooltip","Textareabox","placeholder","cols","rows","textValue","setTextValue","currentState","formattedState","formatDisplay","decimalPlaces","INPUTTYPES","INPUT_REAL","INPUT_DOLLAR","INPUT_PERCENT","decimalToComma","focus","setFocus","isReadOnly","cursorPos","selectionStart","parseInput","commaToDecimal","lengthOffset","lengthDifference","setSelectionRange","oldVal","newVal","onInput","Textbox","isOptional","TextboxSubmit","buttonName","buttonType","setIsDisable","controlOnClick","submitInput","INPUTSUBMIT","submitButton","input","b","charcode","parseInt","String","fromCharCode","TileButtons","tiles","tilecontainer","postReportData","finalReport","postNewBusinessReportData","postDataReportsData","postBIReportsData","reportAPIPath","exportDownload","excelFile","responseType","URL","createObjectURL","createElement","href","download","click","CalcTable","insuranceData","dblTableData_Main","tblMain","grid","slice","item","index","col","idx","TABLE","table","THEAD","head","TROW","row","columnItems","TDATA","TBODY","body","FieldContainer","tabName","activeTab","collapsable","isHidden","setIsHidden","classContent","FIELDCONTENT","content","classHeader","FIELDCONTAINERHEADER","FIELDCONTAINER","container","FullPremiumTable","storeFormData","Icon","styles","svg","display","verticalAlign","margin","float","color","path","fill","newStyle","assign","width","height","viewBox","d","icon","SidebarContainer","isVisible","classSidebarContainer","SIDEBARCONTAINER","Tab","TABLISTITEM","TABLISTACTIVE","TabContent","active","setActive","classNames","TABCONTENT","TABCONTENTACTIVE","TabLayout","TABLAYOUT","TooltipIcon","TOOLTIPICON","TooltipText","TOOLTIPTEXT","displayArray","policyTree","treeIndex","globalBgColor","styleTypes","WHITE","Node","expanded","displayStatusType","Tree","root","updateInforce","inforceData","policy","inforcePolicy","policyType","PolicyTypes","UL","addT10","coverageID","planCode","aPolicy","isInforce","faceAmount","insuredAge","insuredName","insuredSex","insuredSmokingClass","insuredRateClass","insuredRatings","insuredRating","insuredFlatExtra","insuredFlatExtraDuration","strInforce","baseCoverage","coverages","coverage","cloneDeep","parentCoverageID","prodID","issueDate","illustrationDate","issueAge","meRating","coiType","COITypes","YRT","unitValue","units","initialFaceAmount","meRatingDuration","expiryDuration","meRatingExpiryDate","expiryDate","flatExtraDuration","flatExtra","isUseRatings","issuedUnits","issuedUnitValue","issuedFaceAmount","premiumPayMode","premiumMode","insured","insureds","rateClass","smokeClass","gender","firstName","lastName","premiumRateData","maxPremiumRateData","cashValueRateData","dividendRateData","ncpiRateData","nprRateData","coiyrtRateData","coiLevelRateData","etpyrtRateData","etpLevelRateData","rpuRateData","policyFeeRateData","surrenderChargeRateData","guaranteedCOIRateData","meRateData","deathBenefitRateData","funds","globalVariables","isAddRiderWP","aCoverageItem","coverageType","CoverageTypes","BENEFIT","riderType","RiderTypes","WAIVER","newCoverage","newInsured","productSetup","PolicyType","fundItems","runGetSetup","RIDER","TERM","splitName","fillInforceCoverage","coverageLayers","newCoverageLayer","coverageLayerType","etpFaceAmount","basisDate","durationStart","expiryAge","attainedAge","getMonth","getDate","currentAttainedAge","premCoverage","premFlatExtra","premMultipleExtra","policyFee","premWaiver","premADB","premAnnual","cashValue","modePremiumAmount","beneficiaries","coverageStatus","nameArr","middleName","pop","responderEnd","populateTree","tree","WholeLife","DecreasingIncreasingTerm","Endowment","Enhanced","LevelTerm","PaidUpLife","TermWithCV","Disability","CriticalIllness","DeferredAnnuity","ImmediateAnnuity","addParLifeOwnerBranch","RRIF","ESA_ISA","ownerNode","fullName","owners","sin","strPolicyStatus","policyOwner","insuredPolicyPayor","blnFirst","baseCoverageItem","getCoverageItemByType","BASE","HEAD","BOLD","getCurrentBgColor","isRegistered","EMPTY","policyNumber","toggleBgColor","TextLookup_PolicyCStatCode","policyCStatCode","RED","CstatCode","DEATH","format_Display_Date","dateOfDeath","isInPayout","SegregatedFundRRIF","TextLookup_PayoutFrequency","formatIsAmountAboveZero","annualPayoutAmount","formatDollar","modalFactor","annualPayoutMode","payoutTaxWithheld","payoutAdditionalTaxWithheld","Translate_NextPaymentDate","payoutPaymentDate","payoutEffectiveDate","currentDate","toProperCase","TextLookup_PayoutMethodCode","payoutMethodCode","payoutMethod","BillingMethodTypes","EFT","payor","bankName","bankNo","bankBranchNo","bankAccountNo","bankAccountHolderName","TextLookup_PremiumModePolicy","PCRound","totalModalPremium","totalAnnualizedPremium","billingMethod","isLoanAvailable","availableLoan","formatAllocationPercent","availableLoanInterestRate","terminatedDate","strBeneficiary","beneficiaryItem","TextLookup_BeneficiaryCode","beneficiaryTypeCode","beneficiaryRelationship","beneficiaryPercent","spouseContributorType","SpouseContributorTypes","Spouse","spouseContributor","fullNameWithSalutation","display1","diaValue","diaInterestRate","giaValue","indexedFundValue","pdfBalance","pdfInterestRate","mva","surrenderCharge","INDENT","policyValue","addFundOwnerBranch","SegregatedFund","guaranteedMaturityDate","guaranteedMaturityAmount","guaranteedDeathAmount","addSegFundOwnerBranch","parentNode","owner","consent","phoneNumber","FormatPhoneNumber","address1","strAddressTemp","address2","address3","trim","address4","city","province","postalCode","payoutType","PayoutTypes","None","payoutInsuredType","PayoutInsuredTypes","payoutInsured","getEmailAddress","emails","caslConsent","addClientBranch","addParLifeBranches","addBasicCoverageBranch","riderRoot","termRidersNode","coverageItem","addBaseCoverageBranch","addRiderCoveragesBranches","addULIncreaseRidersBranch","addTermRidersBranch","addUnembeddedSupplementaryBenefitsBranch","IsProdIDFlexLife2","addDIABranch1","TextLookup_AccountType","addSegFundBranch1","addGIABranch1","isLoanOnPolicy","strNodeText","fundItem","fundType","FundTypes","DIA","isFundLoan","fundID","addFundBranch","addLoanBranch","addULLifeBranches","addFundBranches","node","strRRIFCode","Translate_RRIF_Code","TextLookup_ProductName","fundsLockedIn","payoutTaxCalculationPercent","intAge","calculateAgeFromJan1","Annuitant","toString","TextLookup_PayoutType","minPayoutThisYear","maxPayoutThisYear","addPayoutBranch","addPayoutHeaderBranch","addSegFundBranch","TextLookup_PolicyName","addDIABranch","strText","addGIABranch","GIA","SegFund","addSegFundBranch2","insuredItem","fundName","formatSIN","interestStartDate","depositAge","TextLookup_Sex","TextLookup_SmokeClass","formatSmokeClass","formatInterestRate","interestRate","currentFundValue","depositTerm","depositAmount","fundValue","maturityValue","maturityDate","reInvestmentInstructions","format_Display_Date_Short","depositAllocation","allocationPercent","withdrawalAllocation","FormatnDecimals","unitPrice","GPO","PIB","DMB","OTHER","AIB","ADB","OYT","basicCoverageNode","coverageRoot","riderNode","addRiderCoverageBranch","riderCoverageItem","aParentCoverage","blnIsWPADBonUL","POLICYTYPE","getCoverageByID","translateSubTable1","isProductHealth","translateSubTable2","translateSubTable3","translateSubTable4","translateCOIType","translateDeathBenefitType","beneficiaryColor","isUseParentFaceAmount","strPremLabel","isCoveragePaidUp","Format2Decimals","Format5Decimals","strTempInsuredNames","intInsuredMaxAge","waiverCoverage","tempInsuredItem","substring","strTemp","intInsuredCounter","NONE","policyBaseCoverage","clientID","strTemp2","feRatingDurationFromIssue","meRatingDurationFromIssue","getCoverageItemByRiderType","dividendEnhancedAmount","sumInsured","isUseDeathBenefitRateTable","isProdIDSOSBAEndowment","isRestrictPremium","isProdIDGradedPremium","isProdIDProPlan","premSubtractDividend","modalFactorPolicyFee","policyStatus","isPolicyPaidUp","nextMonthiversaryDate","paidToDate","TextLookup_NFOption","nonForfeitureOption","fDividendPaidLabel","aIssueDate","isAnniversaryPassed","DividendPaidLabel","dividendPayoutType","DividendPayoutTypes","TextLookup_DividendPayout","dividendThisYear","TAFaceAmnt","puaFaceAmount","segFundValue","indexedFundValueDate","loanBalance","loanInterestRate","basicCashValue","puaCashValue","dodBalance","dodInterestRate","premiumRefund","emailAddress","GREY","LevelGuaranteed","dbOption","DBOptionTypes","Level","isUseProperCase","strCode","isPlanExcludeHealthMatch","TextLookup_SubTable1","disabilityItem","getDisabilityItem","disabilityItems","disabilityCode","TextLookup_SubTable2","TextLookup_SubTable3","TextLookup_SubTable4","loadInforceData","policyNum","GetPolicyObject","INFORCE_LOAD","errorCode","populateTreeAction","INFORCE_LOAD_ERROR","TREE_BUILD","updateInforcePolicy","isProductLIF","isProdIDSOSBA","isProductEssentialLife","isProductPar","isProductParticipatingTerm","isProductParticipatingT100","IsProductPremOffset","inforceFormData","PUA","DOD","isInPremiumOffset","isPremiumOffsetSelected","isProductADBPlus","IsProductExcludeRPU","IsProductTruncateRPU","IsProductParticipatingTerm","IsProductNonParticipatingTerm","IsProductParticipatingT100","IsProductNonParticipatingT100","IsProductCurrentPremiumT100","paidUpDate","PlanCode","isPolicyMaturing","checkMonthsToMaturity","dtExpiryDate","d1","d2","months","monthDiff","mode","TextLookup_tEdit","typeID","valueID","useProperCase","outText","getPlanCode","code","cStatCode","TextLookup_Relationship","TextLookup_Consent","accountType","dateString","aDate","Intl","DateTimeFormat","year","month","day","getCurrentDate","format_Display_Date_Object","dateObject","getCurrentDateFormatted","amount","dollarValue","NumberFormat","currency","minimumFractionDigits","booleanToString","boolValue","Format0Decimals","Number","toFixed","n","output","str","txt","charAt","substr","TextLookup_PremiumModeULReport","billingTypeCode","temp","TextLookup_PremiumModeReport","PremiumModeTypes","Monthly","Annual","Quarterly","SemiAnnual","billingStatus","BILLINGSTATUS_BILLING","TextLookup_PremiumMode","policyCstatCode","drawDay","TextLookup_BillingTypeCode","dividendPayout","DRP","LRD","PIC","Minimum","Maximum","FlatAmount","nfOption","indexOf","sex","paymentDate","effectiveDate","currDate","stringRemoveNull","aString","FormatMailingAddress1","addressItem","addressItemRemoveNulls","FormatMailingAddress2","FormatMailingAddress3","FormatChurchName","churchName","churchCity","churchProvince","padStart","GetBeneficaryString","GetFullName","GetFullNameWithSalutation","salutation","outName","partyType","PartyTypes","Person","BillingTypeCode","PREMIUMOFFSET","isNonExemptNew","exemptStatus","ExemptStatus","NonExemptNew","taxAccrualRule","TaxAccrualRule","TranslatePaymentModeReport","birthdate","today","calcType","date1","Difference_In_Days","getTime","age","Math","trunc","round","calcAge","dateOfBirth","calcAgeNearest","dtBirthDate","dtToday","birthDate","lastBirthDay","GetLastAnniversaryDate","intYears","dateDiffMS","intMonths","intDays","policyIssueDate","interval","startingDate","endingDate","yearDiff","startDate","toISOString","endDate","swap","startYear","daysInMonth","dayDiff","dateDiff","tInput","tReport","ReportBuilder","buildDataArrayOutput","dataArray","buildColumnItemsOutput","columnNumber","buildSettingsOutput","reportSettings","reportSettingsArray","buildColumnStringItemsOutput","columnStringItems","columnStringItemsObj","buildDataArrayStringOutput","dataArrayStringItems","dataArrayStringObj","ReportData","reportInputItems","reportNumber","reportName","reportID","uuid","reportListItems","reportScalarItems","reportDataArrayString","isRunExcel","isRunPDF","xlsFileName","pdfFileName","isOverridePath","pathType","xlsOverridePath","pdfOverridePath","isDeleteWhenDone","buildListItemsOutput","reportColumnItems","reportDataArray","reportColumnStringItems","reportLanguage","arrayItem","booleanValue","reportFile","custom","required","pageBreak","custColFile","ListItemsArray","TabsHeader","setActiveTab","permissions","TABS","TABLIST","permissionName","Boolean","tab","sessionStore","formName","cacheData","updateStoreFormSessionData","PremiumDisplay","msg_basepremium","msg_annualpremium","msg_modalpremium","msg_nodata","msg_notApplicable","summary","coveragetype","coveragevalue","HEADER","jointAgeError","PREMIUMDISPLAY","SUMMARY","SUMMARYCONTAINER","formatValue","getInitialPremiumByID","coverageListItems","COVERAGETYPE","COVERAGEVALUE","annualPremium","getInitialCalcValueByName","strCoverageID","columnItem","strName","withPCTranslation","Spinner","spinner","PanelItemGroup","PANELITEMGROUP","buildScalarOutput","isStatus","reportBuildModel","aGlobalVariable","intYear","intYearCol","scalarReportArray","buildScalarFromControlItems","aBaseCoverage","addScalarItem","ScalarTypes","SCALAR_BOOLEAN","SCALAR_STRING","isEmpty","getScalarItem","premiumOffsetPluginName","profileName","phoneNumberPrimary","faxNumber","phoneNumberSecondary","BuildInvestmentAllocationScalars","strInPayout","transactionStartDate","aDec21982Date","isShowTaxText","SCALAR_INTEGER","Grandfathered","ExemptWithTesting","ExemptWithoutTesting","ExemptWithoutTestingNew","NonExempt","Trienniel","CalendarYear","PolicyYear","showSumInsured","SOSBA_MONTHS_TO_MATURITY","DIVIDEND_ALTERNATESCALE","Alternate_IntRate","Reduction","GetColumnNumber","integerValue","Reduction_UL","ALTERNATE_COI_INCREASE","ulDepositsThisYear","ulPaidToDate","ulLastDepositDate","isLastDate","nextAnniversary","ulMaxDepositThisYear","prodName","policyStatusCode","SCALAR_DOUBLE","billToDate","Mail","BillError","minPrem","isVanishPrem","sideFundBalance","sideFundInterestRate","cashSurrenderValue","max","annualPayoutModeCode","payoutEndDate","scheduledWithdrawalMethod","assigneeType","AssigneeTypes","Absolute","Collateral","ownerAddressItem","GetAddressItem","addresses","addressTypes","Mailing","Residence","churchID","ownerPhone","phoneNumbers","GetPhoneItem","phoneTypes","aBusinessPhoneItem","Business","agent","writingAgent","beneText","beneTemp","intLength","beneArray","min","lstSummaryItems","aSummaryCoverageItem","BuildSummaryPolicyExpiryColumnText","strSummaryText","BuildSummaryColumnText","premiumDurationYear","aBenefitSummaryCoverageItem","sort","summaryColumnCount","strSummaryItem","skipYear","iSkip","strDate","GetSkipPaymentYear","ReportColumns","offsetDate","esa_TransactionCount","segFund_ActivityCount","buildReportListItems","isStatusReport","outArray","ul_TransactionCount","ul_COIActivityCount","buildReportSettings","longIntValue","doubleValue","singleValue","stringValue","dataType","REPORT_SETTING","STRING","BOOLEAN","INTEGER","buildStatusInsuranceData","reportData","maxRows","tableDataString","HIDE_DEV_ROUTE","SET_ROUTES","HIDE_TRACKING","HIDE_USERS","HIDE_BI_DETAILS","GET_ROLE_BY_NAME","UPDATE_ROLE","DELETE_ROLE","REMOVE_FIRSTYEAR_PREMIUM","INSURANCEDATA_LOAD","CREATE_ILLUSTRATION","GET_ILLUSTRATION_HEADERS","GET_ILLUSTRATION_CASE","DELETE_ILLUSTRATION_CASE","CHECK_ILLUSTRATION_CASE_EXIST","INFORCE_REMOVE","INFORCE_POST","TREE_UPDATE","TREE_REMOVE","CREATE_GLOBAL_ARRAY","FETCH_ALPHALOOKUP","FETCHERROR_ALPHALOOKUP","CLEAR_ALPHALOOKUP","FETCH_DATAREPORTS","FETCHERROR_DATAREPORTS","CLEAR_DATAREPORTS","CLEAR_CUSTOM_STORE","buildAgentName","padAgent","agentID","PadRight","agentName","padString","padCharacter","padLength","newString","repeat","NORMAL","BACKGROUNDCOLOR","BOLDANDRED","BOLDANDINDENT","Beeper","BusinessFax","Cellular","Other","Pager","ResidenceFax","Residence2","SelectPhone","Billing","Disbursement","Vacation","DATA_LOAD","DATA_LOADING","DATA_REMOVE","CONTROLITEMS_LOAD","UPDATE_CONTROLITEMS","PRODUCTSETUPITEMS_LOAD","INTERFACESETUPITEMS_LOAD","INTERFACESETUPITEMS_UPDATE","ALLSETUPS_LOAD","SET_FORMDATA","UPDATE_FORMDATA","CLEAR_FORMDATA","USER_LOADED","AUTH_ERROR","LOGIN_REQUEST","LOGIN_SUCCESS","LOGIN_FAIL","AUTH_FAIL","AUTH_SUCCESS","REFRESH_TOKEN_SUCCESS","REFRESH_TOKEN_FAIL","GET_PROFILE","CLEAR_PROFILE","LOGOUT","SESSION_TIMEOUT","SET_USERNAME","ALL_USERS","SET_ALERT","REMOVE_ALERT","timeout","removeAlert","loadControlItems","loadDataFail","loadInterfaceSetupItems","interfaceSetupArray","interfaceItem","find","updateControlItems","parameter","updateControlItemsDB","deleteControlItemDB","controls","updateInterfaceSetupItemsDB","interfaceSetupItem","deleteInterfaceSetupItemDB","setRoutes","isAdminSystem","system","isAdminSystemAdministrator","isBusinessIntelligence","isAdmin","isDeveloper","clearCustomStore","trackLoginUser","trackingUserName","detail","CurrentField","eventType","timestamp","now","loginUserName","fetchUser","isRefresh","responseAD","classList","add","remove","login","password","generateTrackingUserName","updateUserProfileField","fieldName","updateUserProfile","getAllUsers","updatedUser","currentUser","callApi","tokenMethod","sessionTimeout","filter","removeItem","documentElement","setStoreFormData","useSessionStorage","initialFormData","startsWith","updateWholeFormData","updatedFormData","clearStoreFormData","columnItemsMerge","colArray1","colArray2","prefixStr","mergedArray","arrItem","dblTableDataMerge","arr1","arr2","temp0Arr","new2dArr","temp1dArr","finalLen","Array","concat","ResetFaceAmounts","ResetFundValues","ResetFundValuesInCoverage","aFundItem","initialFundValue","fundValueArray","AdjustCOIMultiplier","coiIncrease","increaseStartYear","coiRateMultiplier","coiRateMultiplierStartYear","returnItem","hasOwnProperty","disabilityType","ignoreParentID","getSolveByName","solves","solveItem","addSolveItem","getSolveIndex","setSolveIsActive","InitializeCalcArray","calcArray","MAX_ARRAY","removeFromProductSetupList","aList","removeFund","aFundItems","setFundAllocations","aCalcPolicy","aPPRPolicy","dblTotal","dblFundValue","isExternalFund","getFundValue","aPPRFundItem","FindFundbyID","setPolicyFeeMultiplier","calcPolicy","multiplier","customRateMultiplier","setULCOIMultiplier","setCoverageULCOIMultiplier","isCalcPremium","isCalculateCharges","InitializeInterestRatesUL","InitializeFundInterestRates","InitializeDIAInterestRates","InitializeGIAInterestRates","InitializeSegFundInterestRates","RestoreInterestRatesUL","RestoreFundInterestRates","RestoreDIAInterestRates","RestoreGIAInterestRates","RestoreSegFundInterestRates","CopyInterestRateDataToInitial","RestoreInterestRateDataFromInitial","initialIsUseInterestRate","isUseInterestRate","initialInterestRate","initialFundRateData","rateArray","fundRateData","AdjustDODInterestRate","intRateAdjustAmount","AdjustFundInterestRate","StartYear","ResetDODInterestRateFlag","isReadRate","ResetFundInterestRateFlag","AdjustInterestRatesUL","StartYear_UL","AdjustDIAInterestRate","AdjustGIAInterestRate","AdjustSegFundInterestRate","SetInterestRatesULTwoTier","dblRate1","intFromYear","intToYear","dblRate2","intMaxDuration","FundType","intRateStartYear","AdjustDividendMultiplier","dividendAlternateScalePercent","dividendMultiplier","aPUACoverage","TruncateRPUs","columnPrefix","colRPU","colAge","colTotalDeathBenefitBaseBOY","endAge","tblDataArray_Main","SetFundAverageInterestRate","averageRate","chargeAllocation","AverageInterestRate","calculateAverageInterestRate","ModalFactor","columnName","GetInitialColumn","dblTableMain","GetInitialPremiumBase","BasePremium","FlatExtraPremium","MultipleExtraPremium","GetInitialPremiumBaseFE","GetInitialPremiumBaseME","GetInitialPremium","GetCoverageID","coverageName","FindFund","FindFundInCoverage","digits","negative","multiplicator","pow","parseFloat","NEW_BUSINESS","INFORCE","SHARED_OWNERSHIP","EAPPLICATION","EAPP_SETTINGS","SWITCH_PRODUCTS","PROFILE","ABOUT","ADMIN","BI","INPUT_TEXT","INPUT_UPPER","INPUT_NAME","INPUT_NUMBER","INPUT_DOLLAR_INTEGER","INPUT_INTEGER","INPUT_BUTTON","INPUT_COMBO","INPUT_CHECK","INPUT_RADIO","INPUT_DATE","INPUT_MULTICHECK","INPUT_MULTISELECT","INPUT_PHONE","INPUT_LABEL","INPUT_TAB","INPUT_PAGE","INPUT_EMAIL","INPUT_POSTALCODE","INPUT_ZIPCODE","INPUT_SIN","INPUT_SSN","INPUT_CREDITCARD","INPUT_LONGINT","INPUT_OPTION","INPUT_DEV","INPUT_ARRAY","ICONS","BUBBLE","ENLARGE2","SHRINK2","BIN2","CLOUD_CHECK","UNDERLINE","ITALIC","PARAGRAPH_LEFT","PARAGRAPH_CENTER","PARAGRAPH_RIGHT","GOOGLE","FACEBOOK","TWITTER","LINKEDIN2","ERROR","DASH","BULLET","MULTISELECT","MULTICHECK","INPUTBOX","INPUT","PRODUCT","INFORCEPRODUCT","INFORCEPOLICYHEADER","ALPHALOOKUPHEADER","BUTTONS","CARD","GROUP","SUMMARYFIELDSET","PAGEHEADER","PAGEHEADERM","POLICYHEADER","PROFILEBUTTONS","PAGEFOOTER","VALIDATION","ERRORICON","TABCONTAINER","LAYOUT","SUBFIELDSET","STATUSDISPLAY","INFORCEPOLICYSUMMARY","StatusContext","React","createContext","getStatusForField","FormStatus","handleGetFocus","ev","setState","dirty","handleLostFocus","formSubmitted","Fragment","Provider","rulesData","useLimits","limits","minLimit","maxLimit","initialContextValue","getMessagesForField","FormValidator","clearFormErrors","handleChange","formValid","fieldsValid","handleClick","submitField","validateForm","submit","rules","errorCount","msg_range","msg_textLength","msg_checked","msg_required","msg_min","msg_max","msg_option","msg_validEmail","msg_validPhone","fielderrors","val","isError","validator","isEmail","useMinLength","minLength","allowZero","isInt","isFloat","decimal_digits","cache","ValidateData","StatusMessage","testObject","context","message","useIcon","contextType","StatusDisplay","isArray","msg_status","ValidationMessage","erroricon","errorArray","listEl","fieldError","ErrorDisplay","dirtyCount","obj","dataseleniumid","x","formatBytes","c","floor","PrivateRoute","isAuthorized","isNewBusiness","rest","to","from","defaultApp","defaultApplication","render","WrappedComponent","connect","withTranslation","toggle","toggleState","prevState","ENHANCED","CALCPREMREFUND","LIF","LevelCurrent","Increasing","YRTToLevel","IncreasingToLevel","Indexed","LevelPlusFund","Company","SolveInputType","ColumnValue","GlobalItemValue","RateArray","PolicyProperty","CoverageProperty","FundProperty","InsuredProperty","SolveInputDirectionType","Increase","Decrease","SolveGuessMethodType","FromInput","MidPoint","SolveTargetType","CashValue","SolveTargetTolerance","Converge","FirstCorrectAnswer","SolveMethodType","Secant","Bisection","DepositTypes","LevelMaximum","YearlyMaximum","PRM","SideFund","Loan","MAIL","APL","PolicyLookupResultTypes","PolicyFound","PolicyNotFound","PolicyNotQuotable","PolicyPremiumRestrict","PolicyTerminated","PolicyPaidUp","PolicyRejected","PolicyETI","PolicyNoFuturePremiums","PolicyNotLoadable","Year","Age","FilterCol","IsCalc","inputType","regex","strVal","reg","RegExp","regexPhone","toTitleCase","test","decimalHashes","isForced","decimals","formattedStr","tempPostalCode","formattedCode","tempCode","tempSIN","retStr","capitalizeApostrophe","policyStatusListOptionItems","policyStatusList","policyStatusOptions","policyStatusDescription","churchListOptionItems","churchList","churchOptions","churchNumber","denominationListOptionItems","denominationList","denominationOptions","AboutModal","route","xmlns","fillRule","clipRule","fontWeight","padding","paddingTop","IllustrationMagic","textAlign","borderRadius","backgroundColor","process","Login","isHeadOffice","setFormData","setTokenMethod","isAboutModal","setIsAboutModal","useMsal","instance","inProgress","useIsAuthenticated","isAuthenticating","elementItems","element","defaultFrom","getUser","InteractionStatus","onSubmit","loginRequest","loginHint","loginPopup","dummy","onDummyLogin","Startup","userLogo","helpLogo","SwitchProductModal","isMobile","shallowEqual","handleSelectItem","switchButton","switchBtnName","itemId","isPermitted","logoName","isDisplayed","isConcepts","isEapplication","TabbedHeader","sticky","isUserAdmin","routes","page","tempArr","subModule","appName","paths","handleClickRoute","button","routeId","ProfileSettings","disableApplication","UserInformation","profileFormData","txtUserName","txtEmailAddress","txtPrimaryPhone","txtSecondaryPhone","txtFaxNumber","chkPrimaryPhone","chkSecondaryPhone","imgProfilePicture","rdoInputLanguage","rdoReportLanguage","rdoFontSize","rdoDefaultApp","btnSaveProfile","btnCancelProfile","useStyles","makeStyles","minWidth","cursor","bullet","transform","pos","marginBottom","OutlinedCard","widget","onToggle","moveCard","classes","widgetID","useRef","useDrop","accept","collect","monitor","handlerId","getHandlerId","hover","current","dragIndex","hoverIndex","hoverBoundingRect","getBoundingClientRect","hoverMiddleY","bottom","hoverClientY","getClientOffset","y","drop","useDrag","isDragging","opacity","drag","Card","variant","CardContent","dragIcon","Typography","component","longText","parts","len","part","formatLongText","gridTemplateColumns","ProfileWidgets","widgetsData","updateWidgetsData","handleToggle","cloneWidgets","card","update","$splice","backend","HTML5Backend","ProfileModal","profileData","isLoading","updateProfileFormData","globalChange","globalClick","globalGetFocus","globalLostFocus","submitProfile","widgets","displayOrder","onSaveProfile","handleCancel","fetchUserWidgets","widget1","widget2","loadProfileData","onLoad","submitData","ValidateForm","SharedConceptModalFooter","onSelectBack","btnBack","modalIndex","modalName","totalPages","BasicInfoModal","updateFormData","personalInfo","ProcompGreyLogo","PremiumAllocationModal","premiumAllocation","corpMoneyLogo","execMoneyLogo","IntroModal1","imgArray","procompMagentaLogo","IntroModal2","execLogo","IntroModal3","IntroModal5","blueExecLogo","arrowCurvedLogo","purpleExecPlusCorpLogo","IntroModal6","arrowLongCurvedLogo","purpleExecCorpLogo","minHeight","maxWidth","arrowSmallLogo","IntroModal7","arrow45MoneyLogo","arrowStraightMoneyLogo","corpLogo","IntroModal8","arrowStraightLogo","IntroModal10","gavelLogo","IntroModal11","IntroModal14","execTimeLogo","IntroModal15","IntroModal16","corpTimeLogo","ReadonlyModal","IntroModal17","BeneficiaryDesignationsModal","beneficiaryDesignations","ProductSelectionModal","productSelection","ModalSelection","isVisited","setIsVisited","BENEFICIARY_DESIGNATIONS","PRODUCT_SELECTION","PERSONAL_INFO","PREMIUM_ALLOCATION","READ_ONLY","SharedOwnershipModal","pageCount","currPage","numErrors","txtSharedInsuredName","txtSharedAge","txtSharedRetirementAge","rdoSharedSex","rdoSharedSmokeClass","txtCompanyName","txtSharedEmployerPayPeriod","txtSharedEmployerBenefitPeriod","txtSharedBeneficiaryName1","cboSharedRelationshipToInsured1","txtSharedPercentShare1","chkSharedIrrevocable1","txtSharedBeneficiaryName2","cboSharedRelationshipToInsured2","txtSharedPercentShare2","chkSharedIrrevocable2","txtSharedBeneficiaryName3","cboSharedRelationshipToInsured3","txtSharedPercentShare3","chkSharedIrrevocable3","txtSharedBeneficiaryName4","cboSharedRelationshipToInsured4","txtSharedPercentShare4","chkSharedIrrevocable4","txtSharedBeneficiaryName5","cboSharedRelationshipToInsured5","txtSharedPercentShare5","chkSharedIrrevocable5","rdoSharedPaymentMode","txtSharedPremiumAmount","txtSharedDeathBenefitAmount","rdoSharedCOIType","rdoSharedDeathBenefitType","chkSharedFundSelection1","cboSharedFundSelection1","txtSharedFundSelectionInterestRate1","txtSharedFundSelectionAllocationPercent1","chkSharedFundSelection2","cboSharedFundSelection2","txtSharedFundSelectionInterestRate2","txtSharedFundSelectionAllocationPercent2","chkSharedFundSelection3","cboSharedFundSelection3","txtSharedFundSelectionInterestRate3","txtSharedFundSelectionAllocationPercent3","chkSharedFundSelection4","cboSharedFundSelection4","txtSharedFundSelectionInterestRate4","txtSharedFundSelectionAllocationPercent4","modalNames","handleBack","handleNext","handleFinish","flattenData","onFinish","updateModalFormData","setBtnNext","loadSetupItems","sleep","seconds","PageHeader","tabHeaderSticky","accounts","isProfileModal","setIsProfileModal","isSharedOwnershipModal","setIsSharedOwnershipModal","isSwitchProductModalOpen","setIsSwitchProductModalOpen","pageheaderData","setPageheaderData","headerData","updatePageheaderData","pageHeader","pathArray","logOff","logoutRedirect","postLogoutRedirectUri","switchLogo","aboutLogo","signOffLogo","product","updateIllusForm","PageHeaderM","isHeaderModal","setIsHeaderModal","handleCancelPageHeaderModal","threedotsLogo","updateIllustrationForm","Header","screenWidth","WelcomeModal","onWelcomeModalClose","chkWelcomeMessageRepeat","btnWelcomeOK","updateWelcomeModalFormData","biReportsFormData","chkStoreInExcel","dtBIReportsStartDate","dtBIReportsEndDate","ReportGroupsName","permission","queryList","QueryListDisplay","handleQueryClick","cardIndex","cardItem","BIReports","isLoadingReport","updatBIReportFormData","updateBIReportFormDataWithMultipleFields","fields","updateBIOptionsProfile","handleCreateReport","SCALAR_DATE","repoBuild","buildDataReport","resReportsData","resultCode","errorText","reportOutputFile","handleReportClick","isModal","setMonth","setDate","columnGap","alignItems","Tracking","lazy","BIDashboard","BusinessIntelligence","fallback","TemplateApp","DeveloperApp","Admin","ProNeeds","Illustration","SavedIllustration","Inforce","Eapplication","EAppSettings","Routes","myRef","setMyRef","setIsLoading","invalidUrl","setInvalidUrl","welcomeModal","setWelcomeModal","illusRef","savedIllusRef","isAdminAccessible","isInforceAccessible","isNewBusinessAccessible","isWhiteLabel","whiteLabelProfile","ScrollToTop","isSharedOwnershipComplete","loadSharedOwnershipModalForm","isEapplicationAccessible","isEapplicationAdministrator","isBusinessIntelligenceAccesible","mapDispatchToProps","loadAlphaLookupData","queryObject","errorMessage","clearAlphaLookupData","loadDataReportsData","res1","res2","churchOptionItems","policyStatusOptionItems","denominationOptionItems","clearDataReportsData","biFormData","StoreConnector","interfaceSetupItems","allSetupItems","eAppFormData","alphaLookupFormData","alphaLookupData","dataReports","roles","alertList","setScreenWidth","innerWidth","toggleSticky","currentScrollPos","pageYOffset","tabHeaderOffset","offsetHeight","policyHeaderOffset","policyHeaderSticky","offsetTop","tabsSticky","isEapplicationAvailable","isConceptsAvailable","isConceptsAccessible","isNewBusinessAvailable","isInforceAvailable","isUserNewBusinessBatch","isNewBusinessBatch","isUserInforceBatch","isInforceBatch","isAdminUserManagementAccessible","isNewBusinessBatchRunAllowed","isInforceBatchRunAllowed","permisions","isNeedsAnalysisLite","isNeedsAnalysisFull","pca","routeProps","addEventListener","removeEventListener","withCoreEvents","store","hostname","i18n","Backend","initReactI18next","init","lng","fallbackLng","debug","ns","defaultNS","keySeparator","interpolation","escapeValue","formatSeparator","returnEmptyString","react","wait","useSuspense","BrowserUnsupported","background","backgroundImage","IllustrationDino","backgroundSize","marginTop","textDecoration","procompBlueLogo","position","isIE","navigator","serviceWorker","ready","registration","unregister","phoneItems","phoneType","aPhoneItem","addressItems","addressType","aAddressItem","skipPUAPaymentName","intSkipPUAPayment","coverageIssueDate","intAddYear","strReturn","aBaseCoverageItem","SetSelectedDurations","rowCount","globalVariablesInsuranceData","dblDIAGIATotal","dblDIAGIARate","intCounter","dblAverageInterestRate","getGlobalVariablesInsuranceDataItem","itemName","variable","SCALAR_LONGINT","PathTypes","PATH_CUSTOM","PATH_ADMINPOLICIESPATH","PATH_REPORTPATH","PATH_BATCHPATH","LONGINT","DOUBLE","SINGLE","ConstantValues","ROWHIGHLIGHT_SPACING","ProdID","TERM10","TERM20","TERM30","TERM100JOINT","TERM100","WHOLELIFE","WHOLELIFE20PAY","UL2","DivOptions","RAP","ENH","JOINTFIRST","JOINTLAST","RatingOptions","STANDARD","RATING125","RATING150","RATING175","RATING200","interfaceItemsPolicyTypes","LEVELTERM","isTermPolicy","prodId","isTerm100Policy","isWholeLifePolicy","isUniversalLifePolicy","$","require","hideControl","isUpdateControlItems","each","el","hide","showControl","show","removeAttr","enableControl","controlFields","cboRateClass","chkTerm10","chkTerm20","chkTerm30","chkADO","initializePageConceptSelection","useSession","sessData","updateConceptItem","sessConcept","GlobalCustomLostFocus","runAll","isRecall","GlobalCustomClickBusinessRules","customClickBusinessRules","GlobalCustomBusinessRules","customBusinessRules","GlobalCustomBuildTrackingData","showControlBatch","fieldArray","hideControlBatch","enableControlBatch","disableControlBatch","lockControl","unlockControl","updatePageItem","updateControlFields","sessContext","PolicyTypesNewbiz","primaryBeneficiaryField","contingentBeneficiaryField","primaryBene","contingentBene","getOptionText","formatRatingText","fieldValue","displayText","newText","blankLocation","scalarItemsArray","filterArray","scalarItem","desc","nameDesc","name_String","value_String","buildScalarsFromCalculationGlobalVariables","aScalarReportItem","copyGlobalToReportItem","dateValue","scalarItemObject","formattedDate","parseDate","getIllustrationNumber","parseDay","getHours","getMinutes","getSeconds","dd","mm","yyyy","formatDate","GlobalGetFocus","GlobalLostFocus","customEvents","recallItems","GlobalRunLostRecalls","BUTTON_CLICK","GlobalBuildTrackingData","getEventType","customData","GlobalTrackingEvents","isTracking","GlobalChange","GlobalRunRecalls","GlobalClick","PublicClientApplication","msalConfig","getAllAccounts","setActiveAccount","addEventCallback","EventType","ContainerComponent","isAppLoading","isAppChanging","appLoad","appRunAllBusinessRules","appGetFocus","globalEvents","appLostFocus","appChange","appClick","handleRedirectPromise","ua","userAgent","clientId","REACT_APP_CLIENT_ID","authority","REACT_APP_TENANT_ID","redirectUri","REACT_APP_REDIRECT_URI","cacheLocation","storeAuthStateInCookie","loggerOptions","loggerCallback","level","containsPii","LogLevel","Info","Verbose","Warning","warn","apiConfig","resourceUri","resourceScopes","REACT_APP_RESOURCE_SCOPE","scopes","initialState","admin","illustration","inforce","eapplication","proneeds","template","developer","bi","routesReducer","action","adminRoutes","biRoutes","devRoutes","loadInforceDataReducer","loadTreeDataReducer","alphaLookupReducer","isLoaded","dataReportsReducer","rolesReducer","combineReducers","newState","clear","users","isDataLoading","middlewares","thunk","createStore","rootReducers","composeWithDevTools","applyMiddleware"],"mappings":"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ACLptB,EAAO,I,+BCVpB,sGAAO,IAAM5e,EAAa,CACxBisC,WAAY,aACZC,YAAa,cACbC,WAAY,aACZjsC,aAAc,eACdksC,aAAc,eACdC,qBAAsB,uBACtBC,cAAe,gBACfC,aAAc,eACdC,YAAa,cACbC,YAAa,cACbC,YAAa,cACbzsC,WAAY,aACZ0sC,WAAY,aACZC,iBAAkB,mBAClBC,kBAAmB,oBACnB1sC,cAAe,gBACf2sC,YAAa,cACbC,YAAa,cACbC,UAAW,YACXC,WAAY,aACZC,YAAa,cACbC,iBAAkB,mBAClBC,cAAe,gBACfC,UAAW,YACXC,UAAW,YACXC,iBAAkB,mBAClBC,cAAe,gBACfC,aAAc,eACdC,UAAW,YACXC,YAAa,eAGFC,EAAQ,CACnBC,OACE,2SACFC,SACE,0GACFC,QACE,2GACFC,KACE,gHACFC,YACE,waACFv8B,KACE,gUACFw8B,UACE,6QACFC,OAAQ,iEACRC,eACE,4GACFC,iBACE,gHACFC,gBACE,gHACFC,OACE,4RACFC,SACE,mIACFC,QACE,kkBACFC,UACE,sWACFC,MACE,odACFC,KACE,iIACFC,OACE,2NAESx9C,EAAS,CACpBwD,MAAO,GACP1B,KAAM,gDACNiM,OAAQ,kDACR9C,KAAM,0DACNzF,MAAO,oBACPiC,KAAM,OACN5B,QAAS,UACTwQ,YAAa,mEACbF,YAAa,eACb1S,OAAQ,wCACRg6C,YAAa,cACbC,WAAY,yBACZpwC,MAAO,oBACPT,KAAM,mBACNnH,MAAO,QACPoH,MAAO,QACPzC,eAAgB,iBAChBszC,SAAU,WACVC,MAAO,sDACPvtC,YAAa,4BACbwtC,QAAS,UACTC,eAAgB,iBAChBC,oBAAqB,mCACrBC,kBAAmB,gCACnBC,QAAS,UACTrf,KAAM,OACNC,QAAS,2CACTrpB,YAAa,4EACbC,cAAe,+BACfM,iBAAkB,mBAClBD,WAAY,aACZooC,KAAM,OACNC,MAAO,QACP1rC,MAAO,QACPE,MAAO,QACPE,KAAM,OACNG,MAAO,QACPC,MAAO,QACPmrC,gBAAiB,kBACjBne,QAAS,6EACTC,iBAAkB,mBAClBJ,OAAQ,gCACRue,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D,EACAqX,EACAv0B,EACAw0B,EACAxO,EACA7lB,EACAt3B,GAEAk5D,EACEvzE,EACAzG,EACAyM,EACA7N,EACAu2D,EACAqX,EACAvO,EACA7lB,EACAt3B,GAEF24D,IACEhzE,EACAzG,EACAyM,EACA7N,EACAu2D,EACAqX,EACAv0B,EACAw0B,EACAxO,EACA7lB,EACAt3B,GACA,GACA,GA/PJ,SACEra,EACAzG,EACAyM,EACA7N,EACAu2D,EACAqX,EACAv0B,EACAw0B,EACAxO,EACA7lB,EACAt3B,GAGErU,GACAA,EAAahG,IACqB,MAAlCgG,EAAahG,GAAMizE,aAGnBjtE,EAAahG,GAAMizE,YAAY50E,SAAQ,SAAC2B,GACtCgzE,IACEhzE,EACAzG,EACAyM,EACA7N,EACAu2D,EACAqX,EACAv0B,EACAw0B,EACAxO,EACA7lB,EACAt3B,GACA,GACA,MAgONq5D,CACE1zE,EACAzG,EACAyM,EACA7N,EACAu2D,EACAqX,EACAv0B,EACAw0B,EACAxO,EACA7lB,EACAt3B,GAIG,SAASs5D,EACd3zE,EACAzG,EACAyM,EACA7N,EACAu2D,EACAqX,EACAC,EACAxO,EACA7lB,EACAt3B,GAEAk5D,EACEvzE,EACAzG,EACAyM,EACA7N,EACAu2D,EACAqX,EACAvO,EACA7lB,EACAt3B,GAEF24D,IACEhzE,EACAzG,EACAyM,EACA7N,EACAu2D,EACAqX,EACAC,EACAxO,EACA7lB,EACAt3B,G,8EChVS3d,EAAe,IAAIk3E,IAAwBC,KAGlDhV,EAAWniE,EAAao3E,iBAC1BjV,EAASx4D,OAAS,GACpB3J,EAAaq3E,iBAAiBlV,EAAS,IAGzCniE,EAAas3E,kBAAiB,SAACj0E,GAC7B,GAAIA,EAAMgzC,YAAckhC,IAAU5jC,eAAiBtwC,EAAM/G,QAAQyD,QAAS,CACxE,IAAMA,EAAUsD,EAAM/G,QAAQyD,QAC9BC,EAAaq3E,iBAAiBt3E,OAyNnB4rE,IArNe,SAAC7gB,GAAsB,IAC7C0sB,EAD4C,4MAEhD3xE,MAAQ,CACN4xE,cAAc,EACdC,eAAe,GAJ+B,EAMhDC,Q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","file":"static/js/main.9d40bb29.chunk.js","sourcesContent":["import {ActionTypes} from 'custom/common/redux/Types';\r\nimport axios from 'axios';\r\nimport {updateStoreFormData} from 'core/redux/actions';\r\n\r\nlet cancelToken;\r\nexport const getFirstYearPremium = (formData) => async (dispatch) => {\r\n if (typeof cancelToken != typeof undefined) {\r\n cancelToken.cancel('Operation canceled due to new request.');\r\n }\r\n cancelToken = axios.CancelToken.source();\r\n try {\r\n const res = await axios.post('/api/GetFirstYearPremium', formData, {cancelToken: cancelToken.token});\r\n dispatch({\r\n type: ActionTypes.GET_FIRSTYEAR_PREMIUM,\r\n payload: res['data'],\r\n });\r\n\r\n dispatch(updateStoreFormData('lblPremium', res['data'].firstYearPremium, 'newBusiness'));\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const getFullPremium = (formData) => async (dispatch) => {\r\n try {\r\n const res = await axios.post('/api/GetFullPremium', formData);\r\n dispatch({\r\n type: ActionTypes.GET_FULL_PREMIUM,\r\n payload: res.data,\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n","import {ActionTypes} from 'custom/common/redux/Types';\r\nimport axios from 'axios';\r\nimport {getPageConceptSelection} from 'custom/common/utils/customEvents';\r\nimport {setAlert} from 'core/redux/actions';\r\n\r\nexport const updateReportOptionsProfile = (formData) => async (dispatch, getState) => {\r\n let user = {...getState().auth.user};\r\n const isAuthenticated = getState().auth.isAuthenticated;\r\n\r\n if (isAuthenticated) {\r\n let {pageSelection, conceptSelection} = getPageConceptSelection();\r\n let reportFormData = {\r\n chkCoverPage: pageSelection[\"chkCoverPage\"],\r\n chkTaxPage: pageSelection[\"chkTaxPage\"],\r\n chkUnderwritingPage: pageSelection[\"chkUnderwritingPage\"],\r\n chkComplianceNotice: pageSelection[\"chkComplianceNotice\"],\r\n chkProductCompare: conceptSelection[\"chkProductCompare\"],\r\n chkInternalRoR: conceptSelection[\"chkInternalRoR\"],\r\n chkCharitableGiving: conceptSelection[\"chkCharitableGiving\"],\r\n chkInsuranceInvestment: conceptSelection[\"chkInsuranceInvestment\"],\r\n chkSharedOwnership: conceptSelection[\"chkSharedOwnership\"],\r\n txtCharitableGivingIntRate: formData[\"txtCharitableGivingIntRate\"],\r\n txtCharitableGivingTaxRate: formData[\"txtCharitableGivingTaxRate\"],\r\n txtInsuranceInvestmentIntRate: formData[\"txtInsuranceInvestmentIntRate\"],\r\n txtInsuranceInvestmentTaxRate: formData[\"txtInsuranceInvestmentTaxRate\"],\r\n txtEmployerBenefitPeriod: formData[\"txtEmployerBenefitPeriod\"],\r\n txtEmployerPayPeriod: formData[\"txtEmployerPayPeriod\"],\r\n rdoDuration: formData[\"rdoDuration\"],\r\n cboSelectedYears: formData[\"cboSelectedYears\"],\r\n cboIntervalYears: formData[\"cboIntervalYears\"],\r\n txtPy1: formData[\"txtPy1\"],\r\n txtPy2: formData[\"txtPy2\"],\r\n txtPy3: formData[\"txtPy3\"],\r\n txtPy4: formData[\"txtPy4\"],\r\n txtPy5: formData[\"txtPy5\"],\r\n txtAgeD1: formData[\"txtAgeD1\"],\r\n txtAgeD2: formData[\"txtAgeD2\"],\r\n txtAgeD3: formData[\"txtAgeD3\"],\r\n txtAgeD4: formData[\"txtAgeD4\"],\r\n txtAgeD5: formData[\"txtAgeD5\"],\r\n };\r\n const userFormData = { ...user[\"formData\"], ...reportFormData };\r\n user[\"formData\"] = reportFormData;\r\n\r\n try {\r\n const res = await axios.post(\"/users/update\", user);\r\n user[\"formData\"] = userFormData;\r\n dispatch({\r\n type: ActionTypes.UPDATE_PROFILE,\r\n payload: user,\r\n });\r\n console.log(\"Updating reports profile\", res.data);\r\n } catch (error) {\r\n if (error && error.response) {\r\n dispatch(\r\n setAlert(\r\n error.response.data[\"message\"],\r\n \"Error\",\r\n \"updateProfile\",\r\n 5000\r\n )\r\n );\r\n console.log(error.response);\r\n }\r\n }\r\n }\r\n};\r\n","import axios from 'axios';\r\nimport {dataStore} from 'core/redux/store';\r\nimport {logout} from 'core/redux/actions';\r\nimport {tokenRequest} from 'lib/authConfig';\r\nimport {InteractionRequiredAuthError} from '@azure/msal-browser';\r\nimport {msalInstance} from 'core/hocs/withCoreEvents';\r\n\r\nexport const setAuthToken = () => {\r\n const refreshToken = JSON.parse(sessionStorage.getItem('refreshToken'));\r\n if (refreshToken) {\r\n axios.defaults.headers['Authorization'] = `Bearer ${refreshToken.jwt}`;\r\n } else {\r\n delete axios.defaults.headers['Authorization'];\r\n }\r\n axios.defaults.headers['Content-Type'] = 'application/json';\r\n};\r\n\r\nexport const refreshAccessToken = async () => {\r\n const account = msalInstance.getActiveAccount();\r\n try {\r\n const token = await msalInstance.acquireTokenSilent({\r\n ...tokenRequest,\r\n account,\r\n });\r\n return token.accessToken;\r\n } catch (error) {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n return msalInstance\r\n .acquireTokenPopup(tokenRequest)\r\n .then((resp) => {\r\n return resp.accessToken;\r\n })\r\n .catch((err) => {\r\n dataStore.dispatch(logout());\r\n return null;\r\n });\r\n } else {\r\n console.error(error);\r\n }\r\n }\r\n};\r\n\r\nexport const setInterceptorAD = () => {\r\n axios.interceptors.request.use(\r\n async (config) => {\r\n config.headers['x-api-challenge'] = sessionStorage.getItem('challenge') || 'no-key-found';\r\n // refreshAccessToken method is the one which makes acquireTokenSilent call .\r\n const token = await refreshAccessToken();\r\n if (token) {\r\n config.headers['Authorization'] = `Bearer ${token}`;\r\n sessionStorage.setItem('refreshToken', JSON.stringify({jwt: token}));\r\n setAuthToken();\r\n }\r\n return config;\r\n },\r\n (error) => Promise.reject(error)\r\n );\r\n};\r\n//For AD Refresh\r\nexport const setInterceptorAD1 = () => {\r\n setAuthToken();\r\n let isRefreshing = false;\r\n let failedQueue = [];\r\n const processQueue = (err, token = null) => {\r\n failedQueue.forEach((promise) => {\r\n if (!err) {\r\n promise.resolve(token);\r\n } else {\r\n promise.reject(err);\r\n // dataStore.dispatch(logout());\r\n }\r\n });\r\n failedQueue = [];\r\n };\r\n\r\n axios.interceptors.response.use(\r\n (response) => response,\r\n (error) => {\r\n const originalRequest = error.config;\r\n if (error.response && error.response.status === 401 && !originalRequest._retry) {\r\n if (isRefreshing) {\r\n return new Promise((resolve, reject) => {\r\n failedQueue.push({resolve, reject});\r\n })\r\n .then((token) => {\r\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\r\n return axios(originalRequest);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n originalRequest._retry = true;\r\n isRefreshing = true;\r\n\r\n const refreshToken = JSON.parse(sessionStorage.getItem('refreshToken'));\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const account = msalInstance.getActiveAccount();\r\n const response = await msalInstance.acquireTokenSilent({\r\n ...tokenRequest,\r\n account,\r\n });\r\n console.log(response);\r\n const refreshToken = {jwt: response.accessToken};\r\n sessionStorage.setItem('refreshToken', JSON.stringify(refreshToken));\r\n setAuthToken();\r\n originalRequest.headers['Authorization'] = 'Bearer ' + refreshToken.jwt;\r\n //Login route uses refresh token as body object. So body object needs to be updated for new refresh token\r\n if (originalRequest.url === '/users/login') {\r\n originalRequest.data = JSON.stringify(refreshToken);\r\n }\r\n processQueue(null, refreshToken.jwt);\r\n resolve(axios(originalRequest));\r\n } catch (error) {\r\n processQueue(error, null);\r\n dataStore.dispatch(logout());\r\n }\r\n isRefreshing = false;\r\n });\r\n }\r\n return Promise.reject(error);\r\n }\r\n );\r\n};\r\n\r\n// for multiple requests\r\nexport const setInterceptor = () => {\r\n setAuthToken();\r\n let isRefreshing = false;\r\n let failedQueue = [];\r\n const processQueue = (err, token = null) => {\r\n failedQueue.forEach((promise) => {\r\n if (!err) {\r\n promise.resolve(token);\r\n } else {\r\n promise.reject(err);\r\n // dataStore.dispatch(logout());\r\n }\r\n });\r\n failedQueue = [];\r\n };\r\n\r\n axios.interceptors.response.use(\r\n (response) => response,\r\n (error) => {\r\n const originalRequest = error.config;\r\n if (error.response && error.response.status === 401 && !originalRequest._retry) {\r\n if (isRefreshing) {\r\n return new Promise((resolve, reject) => {\r\n failedQueue.push({resolve, reject});\r\n })\r\n .then((token) => {\r\n originalRequest.headers['Authorization'] = 'Bearer ' + token;\r\n return axios(originalRequest);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n originalRequest._retry = true;\r\n isRefreshing = true;\r\n\r\n const refreshToken = JSON.parse(sessionStorage.getItem('refreshToken'));\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post('/users/refresh', refreshToken)\r\n .then(({data}) => {\r\n sessionStorage.setItem('refreshToken', JSON.stringify(data));\r\n setAuthToken();\r\n originalRequest.headers['Authorization'] = 'Bearer ' + data.jwt;\r\n //Login route uses refresh token as body object. So body object needs to be updated for new refresh token\r\n if (originalRequest.url === '/users/login') {\r\n originalRequest.data = JSON.stringify(data);\r\n }\r\n\r\n processQueue(null, data.jwt);\r\n resolve(axios(originalRequest));\r\n })\r\n .catch((err) => {\r\n processQueue(err, null);\r\n dataStore.dispatch(logout());\r\n // reject(err);\r\n })\r\n .finally(() => {\r\n isRefreshing = false;\r\n });\r\n });\r\n }\r\n return Promise.reject(error);\r\n }\r\n );\r\n};\r\n\r\n//For single request\r\nexport const setInterceptor1 = () => {\r\n setAuthToken();\r\n\r\n axios.interceptors.response.use(\r\n (response) => response,\r\n (error) => {\r\n const originalRequest = error.config;\r\n console.log(error, error.config, error.response);\r\n if (error.response.status === 401 && !originalRequest._retry) {\r\n originalRequest._retry = true;\r\n const refreshToken = JSON.parse(sessionStorage.getItem('refreshToken'));\r\n return axios\r\n .post('/users/refresh', refreshToken)\r\n .then(({data}) => {\r\n sessionStorage.setItem('refreshToken', JSON.stringify(data));\r\n setAuthToken();\r\n originalRequest.headers['Authorization'] = 'Bearer ' + data.jwt;\r\n\r\n //Login route uses refresh token as body object. So body object needs to be updated for new refresh token\r\n if (originalRequest.url === '/users/login') {\r\n originalRequest.data = JSON.stringify(data);\r\n }\r\n return axios(originalRequest);\r\n })\r\n .catch((error) => {\r\n dataStore.dispatch(logout());\r\n });\r\n }\r\n return Promise.reject(error);\r\n }\r\n );\r\n};\r\n","import React from 'react';\r\nimport {Button} from 'core/controls';\r\n\r\nconst QuestionModalFooter = ({\r\n isDisable,\r\n controlGetFocus,\r\n controlLostFocus,\r\n controlClick,\r\n setElement,\r\n onSelectOK,\r\n onSelectCancel,\r\n btnCancel,\r\n btnOK,\r\n isInfo,\r\n isButtonTogether = false,\r\n isReverse = false,\r\n}) => {\r\n return (\r\n \r\n {!isInfo && (\r\n {\r\n controlClick(event, name, value);\r\n onSelectCancel();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name={btnCancel}\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttoncontrol bgPrimaryColor borderRadiusAll paddingMedWide marginMed ${\r\n !isReverse ? 'buttonOutline' : ''\r\n }`,\r\n }}\r\n />\r\n )}\r\n {\r\n controlClick(event, name, value);\r\n onSelectOK();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name={btnOK}\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttoncontrol bgPrimaryColor borderRadiusAll paddingMedWide marginMed ${\r\n isReverse ? 'buttonOutline' : ''\r\n }`,\r\n }}\r\n disableButton={isDisable}\r\n />\r\n \r\n );\r\n};\r\nQuestionModalFooter.defaultProps = {\r\n isDisable: false,\r\n};\r\n\r\nexport default QuestionModalFooter;\r\n","import {useMemo} from 'react';\r\nimport {useParams, useLocation, useHistory, useRouteMatch} from 'react-router-dom';\r\nimport queryString from 'query-string';\r\n\r\n// Hook\r\nexport function useRouter() {\r\n const params = useParams();\r\n const location = useLocation();\r\n const history = useHistory();\r\n const match = useRouteMatch();\r\n\r\n // Return our custom router object\r\n // Memoize so that a new object is only returned if something changes\r\n return useMemo(() => {\r\n return {\r\n // For convenience add push(), replace(), pathname at top level\r\n push: history.push,\r\n replace: history.replace,\r\n pathname: location.pathname,\r\n // Merge params and parsed query string into single \"query\" object\r\n // so that they can be used interchangeably.\r\n // Example: /:topic?sort=popular -> { topic: \"react\", sort: \"popular\" }\r\n query: {\r\n ...queryString.parse(location.search), // Convert string to object\r\n ...params,\r\n },\r\n // Include match, location, history objects so we have\r\n // access to extra React Router functionality if needed.\r\n match,\r\n location,\r\n history,\r\n };\r\n }, [params, match, location, history]);\r\n}\r\n\r\n// Usage\r\nfunction MyComponent() {\r\n // Get the router object\r\n const router = useRouter();\r\n\r\n // Get value from query string (?postId=123) or route param (/:postId)\r\n console.log(router.query.postId);\r\n\r\n // Get current pathname\r\n console.log(router.pathname);\r\n const logout = () => {\r\n router.push('/logout');\r\n };\r\n // Navigate with with router.push()\r\n return null;\r\n}\r\n\r\nexport default useRouter;\r\n","import axios from 'axios';\r\n\r\nexport const sendTrackingInfo = async (trackingData) => {\r\n try {\r\n const {data} = await axios.post('/tracking/sendTrackingInfo', trackingData);\r\n if(data?.header?.trackingID){\r\n sessionStorage.setItem('currentTrackingID', data.header.trackingID);\r\n }\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const getTrackingInfo = async (userName) => {\r\n try {\r\n let res = await axios.get(`/tracking/getTrackingInfo/${userName}`);\r\n return res.data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const getAllTrackingInfo = async () => {\r\n try {\r\n let res = await axios.get('/tracking/getAllTrackingInfo');\r\n return res.data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n","import React, {Fragment, useEffect} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {checkLogo, warningLogo, flagLogo} from 'assets';\r\n\r\nconst alertLogo = {\r\n Success: checkLogo,\r\n Error: warningLogo,\r\n Secondary: flagLogo,\r\n};\r\n\r\nconst Alert = ({name, styling}) => {\r\n const {alert} = useSelector((state) => ({\r\n alert: state.alert[name] || null,\r\n }));\r\n return (\r\n \r\n {alert && (\r\n
\r\n \r\n {alert.msg}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Alert;\r\n","import {ActionTypes} from 'custom/common/redux/Types';\r\nimport axios from 'axios';\r\nimport {setAlert} from 'core/redux/actions';\r\n//Api for only Admin user\r\nexport const getAllRoles = (isUpdating = false) => async (dispatch) => {\r\n try {\r\n const {data} = await axios.get('/users/GetAllRoles');\r\n dispatch({type: ActionTypes.ALL_ROLES, payload: data});\r\n } catch (error) {\r\n if (error) {\r\n console.log(error);\r\n }\r\n }\r\n};\r\n\r\nexport const getRoleByName = (roleName) => async (dispatch) => {\r\n try {\r\n const {data} = await axios.get(`/users/GetRoleByName/${roleName}`);\r\n dispatch({type: ActionTypes.GET_ROLE_BY_NAME, payload: data});\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n","import React from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\n\r\nconst ButtonBar = ({children, name, buttonbar}) => (\r\n
\r\n {children}\r\n
\r\n);\r\n\r\nexport default ButtonBar;\r\n","import React, {Component} from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nconst modalRoot = document.getElementById('modal-root');\r\n\r\nconst Modal = ({onClick, children, propStyle}) => {\r\n return ReactDOM.createPortal(\r\n
\r\n {children}\r\n
,\r\n document.querySelector('#modal-root')\r\n );\r\n};\r\n// class Modal extends Component {\r\n// constructor(props){\r\n// super(props);\r\n// this.el = document.createElement('div');\r\n// }\r\n// componentDidMount(){\r\n// modalRoot.appendChild(this.el);\r\n// }\r\n// componentWillUnmount(){\r\n// modalRoot.removeChild(this.el);\r\n// }\r\n// render() {\r\n// return ReactDOM.createPortal(this.props.children, this.el)\r\n// }\r\n// }\r\n\r\nexport default Modal;\r\n","import React from 'react';\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst ModalTitle = ({title, fontSize, t, showUserName=false}) => {\r\n const { username } = useSelector(state => state.auth.user);\r\n\r\n return

{t(title)}{showUserName && `- ${username}`}

;\r\n};\r\n\r\nexport default ModalTitle;\r\n","import React, {Component, useEffect} from 'react';\r\nimport {withRouter} from 'react-router';\r\nimport {useLocation} from 'react-router-dom';\r\n\r\n// Scroll restoration based on https://reacttraining.com/react-router/web/guides/scroll-restoration.\r\n\r\n//ScrollToTop HoC implementation\r\nexport const withScrollToTop = withRouter(\r\n class ScrollToTopWithoutRouter extends Component {\r\n componentDidUpdate(prevProps) {\r\n if (this.props.location !== prevProps.location) {\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n render() {\r\n return null;\r\n }\r\n }\r\n);\r\n\r\n//ScrollToTop - Hook implementation\r\nexport const ScrollToTopController = ({condition}) => {\r\n // console.log(condition);\r\n // this assumes that current router state is accessed via hook\r\n // but it does not matter, pathname and search (or that ever) may come from props, context, etc.\r\n // const location = useLocation();\r\n\r\n // just run the effect on pathname and/or search change\r\n useEffect(() => {\r\n try {\r\n // trying to use new API - https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n } catch (error) {\r\n // just a fallback for older browsers\r\n window.scrollTo(0, 0);\r\n }\r\n }, [condition]);\r\n\r\n // renders nothing, since nothing is needed\r\n return null;\r\n};\r\n","import React from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {companyLogo} from 'assets';\r\nimport {Label} from 'core/controls';\r\n\r\nexport const Logo = ({name, companyName, propStyle}) => {\r\n return (\r\n
\r\n {/* \"Header\"\r\n */}\r\n
\r\n );\r\n};\r\nexport default Logo;\r\n","import React, {useState, useEffect, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {ValidationContext} from 'core/formValidation';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst Button = ({\r\n getclickCallback,\r\n getfocusCallback,\r\n lostfocusCallback,\r\n autoFocus,\r\n name,\r\n refItem,\r\n propStyle,\r\n logo,\r\n logoRight,\r\n showIcon,\r\n showIconRight,\r\n disableButton,\r\n isActive,\r\n type,\r\n allowPropagation,\r\n //t\r\n}) => {\r\n const {errors} = useContext(ValidationContext);\r\n const {t} = usePCTranslation();\r\n const {controlItem} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems ? state.setupItems.controlItems[name] : null,\r\n }));\r\n // const {tInput} = useTranslation();\r\n // const [buttonText, setButtonText] = useState(\"\")\r\n // useEffect(() => {\r\n // setButtonText(t(`${name}-label`));\r\n // console.log(buttonText)\r\n // }, []);\r\n // console.log(buttonText);\r\n let isDisabled = false;\r\n //This condition is to disable buttons(like viewReport) in case of field level validation failed.\r\n if (controlItem && controlItem.disableOnError && Object.keys(errors).length > 0) {\r\n isDisabled = true;\r\n } else {\r\n isDisabled = disableButton;\r\n }\r\n // temp local variable\r\n if (controlItem && controlItem.displayDisabled) {\r\n isDisabled = controlItem.displayDisabled;\r\n }\r\n const [disabled, setDisabled] = useState(false);\r\n useEffect(() => {\r\n setDisabled(isDisabled);\r\n }, [isDisabled]);\r\n\r\n const controlOnClick = (event) => {\r\n event.persist();\r\n //the event.target.value is the after-change value here but...\r\n getclickCallback(event, name, event.target.value);\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n if (controlItem && controlItem.delayTime > 0 && !isDisabled) {\r\n setDisabled(true);\r\n setTimeout(() => {\r\n setDisabled(false);\r\n }, controlItem.delayTime);\r\n }\r\n };\r\n const controlOnFocus = (event) => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n if (!allowPropagation) {\r\n event.stopPropagation();\r\n }\r\n };\r\n\r\n const controlOnLostFocus = (event) => {\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n if (!allowPropagation) {\r\n event.stopPropagation();\r\n }\r\n };\r\n\r\n let containerClass = `${STYLES.BASIC} ${STYLES.BUTTON} ${propStyle.control}`;\r\n if (disabled) {\r\n containerClass += ' button-disable';\r\n }\r\n if (controlItem && controlItem.displayHidden) {\r\n containerClass += ' hiddenField';\r\n }\r\n if (isActive) {\r\n containerClass += ' activeButton';\r\n }\r\n\r\n const convertUnicode = (input) => {\r\n return input.replace(/\\\\u(\\w\\w\\w\\w)/g, (a, b) => {\r\n var charcode = parseInt(b, 16);\r\n return String.fromCharCode(charcode);\r\n });\r\n };\r\n\r\n return (\r\n \r\n {showIcon && (\r\n \r\n )}\r\n {t(`${name}-label`)}\r\n {showIconRight && (\r\n \r\n )}\r\n {/* {t(`${name}-label`)} */}\r\n \r\n );\r\n};\r\n\r\nButton.defaultProps = {\r\n autoFocus: false,\r\n showIcon: false,\r\n showIconRight: false,\r\n disableButton: false,\r\n type: 'button',\r\n isActive: false,\r\n allowPropagation: false,\r\n};\r\nexport {Button};\r\n","import React, {Fragment, memo, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {usePCTranslation} from 'core/hooks';\r\nimport {ValidationContext} from 'core/formValidation';\r\n\r\nconst Checkbox = ({\r\n getchangeCallback,\r\n getfocusCallback,\r\n lostfocusCallback,\r\n stateData,\r\n checked,\r\n readOnly,\r\n name,\r\n text,\r\n autoFocus,\r\n refItem,\r\n propStyle,\r\n displayName,\r\n disableControl,\r\n customLabel = undefined,\r\n}) => {\r\n const {t} = usePCTranslation();\r\n const {errors, formErrors} = useContext(ValidationContext);\r\n const {controlItem} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems ? state.setupItems.controlItems[name] : null,\r\n }));\r\n\r\n const controlOnChange = (event) => {\r\n event.persist();\r\n //setIsChecked(event.target.checked);\r\n if (!controlItem || !controlItem.locked) {\r\n getchangeCallback(event, event.target.name, event.target.checked);\r\n }\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n //event.stopPropagation();\r\n };\r\n\r\n const controlOnFocus = (event) => {\r\n getfocusCallback(event, event.target.name, event.target.checked);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnLostFocus = (event) => {\r\n lostfocusCallback(event, event.target.name, event.target.checked);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.checkcontainer}`;\r\n if (disableControl || (controlItem && controlItem.displayDisabled)) {\r\n containerClass += ' disabled';\r\n }\r\n if (controlItem && controlItem.displayHidden) {\r\n containerClass += ' hiddenField';\r\n }\r\n if (controlItem && controlItem.locked) {\r\n containerClass += ' locked';\r\n } else {\r\n containerClass.replace('locked', '');\r\n }\r\n if ((formErrors[name] || errors[name]) && controlItem && controlItem.isDirty) {\r\n containerClass += ' errorState';\r\n }\r\n\r\n const checkInput = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n return (\r\n
\r\n {!controlItem || !controlItem.showTooltip ? (\r\n checkInput()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n {checkInput()}\r\n
\r\n \r\n \r\n
\r\n
\r\n ) : (\r\n
\r\n \r\n {checkInput()}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nCheckbox.defaultProps = {\r\n autoFocus: false,\r\n readOnly: false,\r\n disableControl: false,\r\n};\r\nexport {Checkbox};\r\n","import React, {useState, useEffect} from 'react';\r\nimport ModalTitle from 'core/uicore/ModalTitle';\r\nimport {Modal} from 'core/uicore';\r\nimport {Button} from 'core/controls';\r\nimport {tickLogo, closeIcon} from 'assets';\r\nimport {usePCTranslation} from 'core/hooks';\r\nimport QuestionModalFooter from 'core/uicore/QuestionModalFooter';\r\n\r\nconst ComboModal = ({\r\n name,\r\n controlItem,\r\n optionItems,\r\n controlClick,\r\n controlGetFocus,\r\n onSelectProduct,\r\n onCancel,\r\n controlLostFocus,\r\n setElement,\r\n btnX,\r\n btnCancel,\r\n btnChoose,\r\n modalTitle,\r\n value,\r\n isUseInformation,\r\n}) => {\r\n const {t} = usePCTranslation();\r\n const [selectedItem, setSelectedItem] = useState('');\r\n\r\n useEffect(() => {\r\n setSelectedItem(value);\r\n }, []);\r\n\r\n // This is for clicking the product, item is index of the product\r\n const handleSelectItem = (item) => {\r\n setSelectedItem(item);\r\n };\r\n\r\n //This is for clicking Choose button and closing modal\r\n const handleChoose = () => {\r\n let event = {target: {name, value: selectedItem}, persist: () => {}, stopPropagation: () => {}};\r\n onSelectProduct(event);\r\n };\r\n\r\n return (\r\n e.stopPropagation()} propStyle=\"modalDark\">\r\n
\r\n {\r\n controlClick(event, name, value);\r\n onCancel();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name={btnX}\r\n refItem={setElement}\r\n propStyle={{\r\n label: \"buttonlabel\",\r\n control: `modalClose`,\r\n }}\r\n logo={{\r\n srcLogo: closeIcon,\r\n altLogo: \"\",\r\n classLogo: \"branding-image-filter\",\r\n }}\r\n showIcon={true}\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n {Object.keys(optionItems).map((key) => (\r\n handleSelectItem(key)}\r\n className={`PAGELINK flexContainer alignCenter paddingMed cursorPointer borderRadiusAll ${\r\n selectedItem === key ? \"activeLink\" : \"\"\r\n }`}\r\n >\r\n
\r\n
\r\n \r\n {isUseInformation &&

{t(`${key}-information`)}

}\r\n
\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport {ComboModal};\r\n","//https://reactdatepicker.com/\r\nimport React, {Fragment} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport DatePicker from 'react-datepicker';\r\n// import \"react-datepicker/dist/react-datepicker.css\";\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {usePCTranslation} from 'core/hooks';\r\nimport {TooltipText, TooltipIcon} from 'core/uicore';\r\nimport moment from 'moment';\r\n\r\nconst Datebox = ({\r\n getchangeCallback,\r\n getfocusCallback,\r\n lostfocusCallback,\r\n stateData,\r\n name,\r\n text,\r\n type,\r\n autoFocus,\r\n refItem,\r\n propStyle,\r\n format,\r\n ageFieldName,\r\n minDate = null,\r\n maxDate = null,\r\n disable = false,\r\n}) => {\r\n const { t } = usePCTranslation();\r\n const { controlItem } = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems\r\n ? state.setupItems.controlItems[name]\r\n : null,\r\n }));\r\n let rawValue = \"\";\r\n let rawChange = false;\r\n let blnDateCheck = false;\r\n const controlOnChange = (date) => {\r\n //event.persist();\r\n //let value = formattedDate(date);\r\n //console.log(value);\r\n let event = {\r\n persist: () => {},\r\n preventDefault: () => {},\r\n stopPropagation: () => {},\r\n target: {\r\n name,\r\n date,\r\n },\r\n };\r\n\r\n if (rawChange) {\r\n blnDateCheck = moment(rawValue, \"YYYY-MM-DD\", true).isValid();\r\n } else {\r\n blnDateCheck = true;\r\n }\r\n\r\n console.log(\"inside controlOnChange\");\r\n console.log(\"inside controlOnChange rawChange = \", rawChange);\r\n //If the rawValue from the date component is in the format yyyy-mm-dd then call the change callback or if we clicked the calendar\r\n if (blnDateCheck) {\r\n getchangeCallback(event, name, date);\r\n }\r\n rawChange = false;\r\n };\r\n\r\n const controlOnFocus = () => {\r\n let event = {\r\n target: {\r\n name,\r\n date: new Date(),\r\n },\r\n };\r\n getfocusCallback(event, event.target.name, event.target.date);\r\n };\r\n const controlOnLostFocus = () => {\r\n let event = {\r\n target: {\r\n name,\r\n date: new Date(),\r\n },\r\n };\r\n lostfocusCallback(event, event.target.name, event.target.date);\r\n };\r\n\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${STYLES.DATE} ${propStyle.datecontainer}`;\r\n if (controlItem?.displayDisabled) containerClass += \" disabled\";\r\n if (controlItem?.displayHidden) containerClass += \" hiddenField\";\r\n const openToDate =\r\n stateData[name] ||\r\n new Date().setFullYear(new Date().getFullYear() - +stateData[ageFieldName]);\r\n const handleChangeRaw = (e) => {\r\n console.log(\"Raw value: \", e.target.value);\r\n rawValue = e.target.value;\r\n rawChange = true;\r\n };\r\n const dateInput = () => (\r\n
\r\n controlOnChange(date)}\r\n onChangeRaw={handleChangeRaw}\r\n openToDate={openToDate}\r\n onInputClick={controlOnFocus}\r\n onClickOutside={controlOnLostFocus}\r\n disabled={controlItem?.displayDisabled || disable}\r\n dateFormat={format}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n showMonthDropdown\r\n showYearDropdown\r\n dropdownMode=\"select\"\r\n ref={refItem}\r\n placeholderText={format.toLowerCase()}\r\n name={name}\r\n className={propStyle?.dateInput || \"\"}\r\n />\r\n
\r\n );\r\n return (\r\n
\r\n {!controlItem.showTooltip ? (\r\n \r\n \r\n {t(`${name}-caption`)}\r\n \r\n {dateInput()}\r\n \r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n \r\n {t(`${name}-caption`)}\r\n \r\n
\r\n \r\n \r\n
\r\n {dateInput()}\r\n
\r\n ) : (\r\n
\r\n \r\n {t(`${name}-caption`)}\r\n \r\n {dateInput()}\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\nDatebox.defaultProps = {\r\n format: 'dd/MM/yyyy',\r\n};\r\nexport {Datebox};\r\n","import React, {useEffect} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {useDropzone} from 'react-dropzone';\r\nimport {Button, Radiobuttons} from 'core/controls';\r\nimport axios from 'axios';\r\nimport {setAlert} from 'core/redux/actions';\r\n\r\nconst FileUpload = ({name, formData, controlClick, controlGetFocus, controlLostFocus, controlChange, setElement}) => {\r\n const {getRootProps, getInputProps, open, acceptedFiles} = useDropzone({\r\n // accept: 'application/vnd.ms-excel',\r\n noClick: true,\r\n noKeyboard: true,\r\n });\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n console.log(acceptedFiles);\r\n if (acceptedFiles.length > 0) {\r\n // if (formData[name].length > 0) {\r\n // newFile = formData[name].filter((file) => file.fileName === acceptedFiles[0].name);\r\n // }\r\n if (acceptedFiles[0].name !== formData['fileUserUploadName']) {\r\n let event = {\r\n target: {\r\n value: acceptedFiles[0].name,\r\n name: 'fileUserUploadName',\r\n },\r\n persist: () => {}, //To fix persist not found issue in Main Page component file\r\n };\r\n controlChange(event, 'fileUserUploadName', acceptedFiles[0].name);\r\n event = {\r\n target: {\r\n value: acceptedFiles[0].size,\r\n name: 'fileUserUploadSize',\r\n },\r\n persist: () => {}, //To fix persist not found issue in Main Page component file\r\n };\r\n controlChange(event, 'fileUserUploadSize', acceptedFiles[0].size);\r\n }\r\n // if (newFile.length === 0) {\r\n // let tempFiles = [];\r\n // tempFiles.push({\r\n // fileName: acceptedFiles[0].name,\r\n // size: acceptedFiles[0].size,\r\n // });\r\n // let event = {\r\n // target: {\r\n // value: tempFiles,\r\n // name,\r\n // },\r\n // };\r\n // controlChange(event, name, tempFiles);\r\n // }\r\n }\r\n }, [acceptedFiles]);\r\n\r\n const handleImportUser = async () => {\r\n let f = new FormData();\r\n f.append('File', acceptedFiles[0]);\r\n f.append('FileDirectory', '');\r\n f.append('isFullUpdate', formData['rdoFileImportType'] !== 'Full' ? false : true);\r\n try {\r\n let result = await axios.post('/users/Uploadusers', f, {headers: {'Content-Type': 'multipart/form-data'}});\r\n if (result) {\r\n console.log(result);\r\n dispatch(setAlert('Users imported successfully', 'Success', 'importUsers', 5000));\r\n }\r\n } catch (error) {\r\n console.log('upload error = ', error);\r\n dispatch(setAlert('Users import error', 'Error', 'importUsers', 5000));\r\n }\r\n };\r\n\r\n // const files = formData[name].map((file) => (\r\n //
  • \r\n // {file.fileName} - {file.size} bytes\r\n //
  • \r\n // ));\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n {\r\n open(event);\r\n controlClick(event, name, value);\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n stateData={formData}\r\n name='btnSelectUserFile'\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttoncontrol bgPrimaryColor borderRadiusAll`,\r\n }}\r\n allowPropagation={true}\r\n />\r\n
    \r\n {formData['fileUserUploadSize'] > 0 && (\r\n \r\n )}\r\n \r\n {\r\n handleImportUser();\r\n controlClick(event, name, value);\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n stateData={formData}\r\n name='btnImportUser'\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttoncontrol bgPrimaryColor borderRadiusAll`,\r\n }}\r\n allowPropagation={true}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport {FileUpload};\r\n","import React, {Fragment} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst Label = ({text, name, propStyle, useTranslation}) => {\r\n const {t} = usePCTranslation();\r\n const {controlItems} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems,\r\n }));\r\n let labelText = useTranslation ? t(`${name}-label`) : text;\r\n\r\n const labelbox = () => (\r\n \r\n );\r\n return (\r\n
    \r\n {controlItems && controlItems[name] && controlItems[name].showTooltipIcon ? (\r\n \r\n
    \r\n \r\n \r\n
    \r\n {labelbox()}\r\n
    \r\n ) : (\r\n \r\n {controlItems && controlItems[name] && controlItems[name].showTooltip ? (\r\n \r\n
    \r\n \r\n {labelbox()}\r\n
    \r\n
    \r\n ) : (\r\n labelbox()\r\n )}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\nLabel.defaultProps = {\r\n useTranslation: true,\r\n};\r\n\r\nexport {Label};\r\n","//https://github.com/text-mask/text-mask Reference link for MaskedInput component\r\n\r\nimport React, {useState, Fragment, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport MaskedInput from 'react-text-mask';\r\nimport {usePCTranslation} from 'core/hooks';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {ValidationContext, ValidationMessage} from 'core/formValidation';\r\nimport {TooltipText, TooltipIcon} from 'core/uicore';\r\nimport {getMaskForInput} from 'core/utils/inputTypeUtils';\r\n\r\nconst MaskedTextbox = ({getchangeCallback, getfocusCallback, lostfocusCallback, stateData, name, text, type, autoFocus, refItem, propStyle, readOnly, step, styleProp}) => {\r\n const {t} = usePCTranslation();\r\n const {errors, formErrors} = useContext(ValidationContext);\r\n const {controlItem, inputLanguage} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems ? state.setupItems.controlItems[name] : null,\r\n inputLanguage: state.auth.user ? state.auth.user['inputLanguage'] : 'English',\r\n }));\r\n\r\n const controlOnChange = async (event) => {\r\n event.target.value = event.target.value.toUpperCase();\r\n await getchangeCallback(event, event.target.name, event.target.value);\r\n event.stopPropagation();\r\n };\r\n const controlOnFocus = (event) => {\r\n event.persist();\r\n setTimeout(() => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n }, 0);\r\n };\r\n const controlOnLostFocus = (event) => {\r\n event.persist();\r\n // setFocus(false);\r\n setTimeout(() => {\r\n // console.log('controlOnLostFocus', event);\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n }, 0);\r\n };\r\n\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.textcontainer}`;\r\n if ((errors[name] || formErrors[name]) && controlItem && controlItem.isDirty) {\r\n containerClass += ' errorState';\r\n }\r\n if (controlItem && controlItem.displayDisabled) {\r\n containerClass += ' disabled';\r\n }\r\n if (controlItem && controlItem.displayHidden) {\r\n containerClass += ' hiddenField';\r\n }\r\n\r\n const textInput = () => {\r\n return (\r\n {}}\r\n autoFocus={autoFocus}\r\n onBlur={controlOnLostFocus}\r\n ref={refItem}\r\n maxLength={controlItem.maxLength}\r\n style={styleProp}\r\n autoComplete='new_off'\r\n />\r\n );\r\n };\r\n return (\r\n
    \r\n \r\n {!controlItem.showTooltip ? (\r\n textInput()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n
    \r\n \r\n \r\n
    \r\n {textInput()}\r\n
    \r\n ) : (\r\n
    \r\n \r\n {textInput()}\r\n
    \r\n )}\r\n\r\n {controlItem && controlItem.isDirty && }\r\n
    \r\n );\r\n};\r\nMaskedTextbox.defaultProps = {\r\n autoFocus: false,\r\n readOnly: false,\r\n step: 0,\r\n styleProp: {},\r\n};\r\n\r\nexport {MaskedTextbox};\r\n","import React, {Fragment, useState, useEffect} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {usePCTranslation} from 'core/hooks';\r\n//ToDo: Problem with this implemenation is that if the name of the group of checkboxes is defaulted to a string, it does not automatically populate the control\r\n\r\nconst MultiCheckbox = ({name, text, stateData, options, refItem, autoFocus, getfocusCallback, lostfocusCallback, getchangeCallback, propStyle}) => {\r\n const [values, setValues] = useState([]);\r\n //Initialize the multi check values from StateData in case of refresh page.\r\n useEffect(() => {\r\n if (stateData && stateData[name]) {\r\n setValues(stateData[name].split('|'));\r\n }\r\n }, [stateData && stateData[name], name]);\r\n const {t} = usePCTranslation();\r\n const {controlItem} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems ? state.setupItems.controlItems[name] : null,\r\n }));\r\n\r\n let optionItems = {};\r\n if (controlItem && controlItem.useOptions) {\r\n optionItems = controlItem.optionItems;\r\n } else {\r\n optionItems = options;\r\n }\r\n const controlOnChange = (event) => {\r\n event.persist();\r\n // let valArray = [];\r\n // valArray = stateData[name].split(\"|\");\r\n let tempVal = [...values];\r\n if (!tempVal.includes(event.target.value)) {\r\n tempVal.push(event.target.value);\r\n } else {\r\n for (let i = 0; i < tempVal.length; i++) {\r\n if (tempVal[i] === event.target.value) {\r\n tempVal.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n setValues(tempVal);\r\n // console.log(values);\r\n getchangeCallback(event, event.target.name, tempVal.join('|'));\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n\r\n // this.setState(\r\n // state => {\r\n // if (event.target.checked) {\r\n // state[this.props.name].push(event.target.value);\r\n // } else {\r\n // let index = state[this.props.name].indexOf(event.target.value);\r\n // state[this.props.name].splice(index, 1);\r\n // }\r\n // },\r\n // () => {\r\n // this.props.getchangeCallback(event, this.state, this.props.name);\r\n // }\r\n // );\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n //event.stopPropagation();\r\n };\r\n\r\n const controlOnFocus = (event) => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnLostFocus = (event) => {\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const checkLabel = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {!controlItem.showTooltip ? (\r\n checkLabel()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n {checkLabel()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n {checkLabel()}\r\n
    \r\n )}\r\n
    \r\n {Object.keys(optionItems).map((key) => (\r\n
    \r\n \r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nMultiCheckbox.defaultProps = {\r\n autoFocus: false,\r\n};\r\nexport {MultiCheckbox};\r\n","import React, {Fragment, memo} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst PillButtons = ({\r\n getchangeCallback,\r\n getfocusCallback,\r\n lostfocusCallback,\r\n text,\r\n name,\r\n autoFocus,\r\n disableChoice,\r\n readOnly,\r\n options,\r\n stateData,\r\n refItem,\r\n propStyle,\r\n isDisabled = false,\r\n}) => {\r\n const { t } = usePCTranslation();\r\n const { controlItem } = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems\r\n ? state.setupItems.controlItems[name]\r\n : null,\r\n }));\r\n\r\n let optionItems = {};\r\n if (controlItem && controlItem.useOptions) {\r\n optionItems = controlItem.optionItems;\r\n }\r\n const controlOnChange = (event) => {\r\n //setSelectedOption(event.target.value);\r\n event.persist();\r\n //the event.target.value is the after-change value here but...\r\n getchangeCallback(event, event.target.name, event.target.value);\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnFocus = (event) => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnLostFocus = (event) => {\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.inputcontainer}`;\r\n if (controlItem && controlItem.displayDisabled) containerClass += \" disabled\";\r\n if (controlItem && controlItem.displayHidden)\r\n containerClass += \" hiddenField\";\r\n\r\n const pillLabel = () => {\r\n return (\r\n \r\n {t(`${name}-caption`)}\r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {!controlItem.showTooltip ? (\r\n pillLabel()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n {pillLabel()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n {pillLabel()}\r\n
    \r\n )}\r\n
    \r\n {Object.keys(optionItems).map((key) => (\r\n \r\n \r\n \r\n {controlItem.isTranslateOptions === true\r\n ? t(optionItems[key])\r\n : optionItems[key]}\r\n {controlItem.isSecondaryText && (\r\n \r\n {t(controlItem.secondaryText[key])}\r\n \r\n )}\r\n \r\n
    \r\n ))}\r\n
    \r\n \r\n );\r\n};\r\n\r\nPillButtons.defaultProps = {\r\n autoFocus: false,\r\n disableChoice: '',\r\n readOnly: false,\r\n};\r\n\r\nexport {PillButtons};\r\n","import React, {Fragment} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst Radiobuttons = ({\r\n getchangeCallback,\r\n getfocusCallback,\r\n lostfocusCallback,\r\n text,\r\n name,\r\n autoFocus,\r\n choice,\r\n readOnly,\r\n options,\r\n stateData,\r\n refItem,\r\n propStyle,\r\n isDisabled = false,\r\n}) => {\r\n const { t } = usePCTranslation();\r\n const { controlItem } = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems\r\n ? state.setupItems.controlItems[name]\r\n : null,\r\n }));\r\n\r\n let optionItems = {};\r\n if (controlItem && controlItem.useOptions) {\r\n optionItems = controlItem.optionItems;\r\n }\r\n const controlOnChange = (event) => {\r\n //setSelectedOption(event.target.value);\r\n event.persist();\r\n //the event.target.value is the after-change value here but...\r\n getchangeCallback(event, event.target.name, event.target.value);\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnFocus = (event) => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnLostFocus = (event) => {\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.inputcontainer}`;\r\n if (isDisabled || (controlItem && controlItem.displayDisabled)) {\r\n containerClass += \" disabled\";\r\n }\r\n if (controlItem && controlItem.displayHidden) {\r\n containerClass += \" hiddenField\";\r\n }\r\n let radioContainerClass = `${STYLES.BASIC} ${STYLES.RADIOCONTAINER} ${propStyle.radiocontainer}`;\r\n if (isDisabled || (controlItem && controlItem.displayDisabled)) {\r\n radioContainerClass += \" disabled\";\r\n }\r\n\r\n const radioLabel = () => {\r\n return (\r\n \r\n {t(`${name}-caption`)}\r\n \r\n );\r\n };\r\n return (\r\n
    \r\n {!controlItem.showTooltip ? (\r\n radioLabel()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n {radioLabel()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n {radioLabel()}\r\n
    \r\n )}\r\n
    \r\n {Object.keys(optionItems).map((key) => (\r\n
    \r\n \r\n \r\n {t(optionItems[key])}\r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nRadiobuttons.defaultProps = {\r\n autoFocus: false,\r\n choice: '',\r\n readOnly: false,\r\n};\r\n\r\nexport {Radiobuttons};\r\n","import React, {Fragment, memo, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {ComboModal} from 'core/controls';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst Selectbox = ({\r\n getchangeCallback,\r\n getfocusCallback,\r\n lostfocusCallback,\r\n getclickCallback,\r\n stateData,\r\n name,\r\n text,\r\n options,\r\n autoFocus,\r\n refItem,\r\n propStyle,\r\n disable,\r\n showLabel,\r\n styleProp,\r\n isModalOptions,\r\n isUseInformation,\r\n btnXCancel,\r\n btnCancel,\r\n btnChoose,\r\n modalTitle,\r\n}) => {\r\n const {t} = usePCTranslation();\r\n const {controlItem} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems ? state.setupItems.controlItems[name] : null,\r\n }));\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n\r\n let optionItems = controlItem?.optionItems;\r\n\r\n /**\r\n * Below condition is used by Data Reports and other apps where options is passed as a prop. Use Options is false\r\n * For Pro needs case, child's Uni year options is coming via controlItems. But useOptions is false in that case too.\r\n *\r\n */\r\n if (!controlItem || !controlItem.useOptions) {\r\n optionItems = options;\r\n }\r\n if (!optionItems) {\r\n optionItems = {};\r\n }\r\n\r\n const controlOnChange = (event) => {\r\n event.persist();\r\n getchangeCallback(event, event.target.name, event.target.value);\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnFocus = (event) => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnLostFocus = (event) => {\r\n if (!isModalOptions) {\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n }\r\n };\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.selectcontainer}`;\r\n if ((controlItem && controlItem.displayDisabled) || disable) {\r\n containerClass += ' disabled';\r\n }\r\n if (controlItem && controlItem.displayHidden) {\r\n containerClass += ' hiddenField';\r\n }\r\n\r\n const handleModalOpen = () => {\r\n if (isModalOptions) {\r\n setIsModalOpen(true);\r\n }\r\n };\r\n const handleSelectOption = async (event) => {\r\n await controlOnChange(event);\r\n // lostfocusCallback(event, event.target.name, event.target.value);\r\n setIsModalOpen(false);\r\n };\r\n\r\n const handleCancelModal = () => {\r\n setIsModalOpen(false);\r\n };\r\n\r\n const selectInput = () => {\r\n return (\r\n //
    \r\n // {/*
    */}\r\n \r\n {!isModalOptions &&\r\n Object.keys(optionItems).map((key) => (\r\n \r\n ))}\r\n \r\n //
    \r\n );\r\n };\r\n return (\r\n
    \r\n {showLabel && (\r\n \r\n )}\r\n {!controlItem || !controlItem.showTooltip ? (\r\n selectInput()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n
    \r\n \r\n \r\n
    \r\n {selectInput()}\r\n
    \r\n ) : (\r\n
    \r\n \r\n {selectInput()}\r\n
    \r\n )}\r\n {isModalOptions && isModalOpen && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nSelectbox.defaultProps = {\r\n isModalOptions: false,\r\n autoFocus: false,\r\n showLabel: true,\r\n styleProp: {},\r\n disable: false,\r\n options: {},\r\n getclickCallback: (event, name, value) => {},\r\n btnChoose: '',\r\n btnCancel: '',\r\n btnXCancel: '',\r\n modalTitle: '',\r\n isUseInformation: true,\r\n};\r\n\r\nexport {Selectbox};\r\n","import React, {useState, Fragment, memo, useEffect, useMemo, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {ValidationMessage, ValidationContext} from '../formValidation';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {formatDisplay, parseInput, decimalToComma, commaToDecimal} from 'core/utils/inputTypeUtils';\r\nimport {INPUTTYPES, STYLES} from 'core/constants/uiConstants';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst Textareabox = ({getchangeCallback, getfocusCallback, lostfocusCallback, stateData, name, text, type, autoFocus, refItem, propStyle, readOnly, step, placeholder, styleProp, cols, rows}) => {\r\n const {t} = usePCTranslation();\r\n const {errors, formErrors} = useContext(ValidationContext);\r\n const {controlItem, inputLanguage} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems ? state.setupItems.controlItems[name] : null,\r\n inputLanguage: state.auth.user ? state.auth.user['inputLanguage'] : 'English',\r\n }));\r\n const [textValue, setTextValue] = useState('');\r\n let currentState = stateData ? stateData : '';\r\n let formattedState = formatDisplay(inputLanguage, currentState, controlItem.fieldType, controlItem.decimalPlaces);\r\n\r\n if (\r\n controlItem &&\r\n (controlItem.fieldType === INPUTTYPES.INPUT_REAL || controlItem.fieldType === INPUTTYPES.INPUT_DOLLAR || controlItem.fieldType === INPUTTYPES.INPUT_PERCENT) &&\r\n inputLanguage === 'French'\r\n ) {\r\n currentState = decimalToComma(currentState);\r\n }\r\n const [focus, setFocus] = useState(false);\r\n\r\n // let isFocus = (stateData && stateData[\"CurrentField\"]===name) || false;\r\n let isReadOnly = controlItem.readOnly || readOnly;\r\n useEffect(() => {\r\n if (focus && !isReadOnly) {\r\n setTextValue(currentState);\r\n } else {\r\n setTextValue(formattedState);\r\n }\r\n // console.log(currentState, \"Use Effect testing\");\r\n }, [currentState, focus, formattedState]);\r\n\r\n //Label text\r\n // const [labelText, setLabelText] = useState(\"\");\r\n\r\n // useMemo(() => {setLabelText(t(`${name}-caption`))}, [inputLanguage]);\r\n const controlOnChange = async (event) => {\r\n //Cursor position was resetting to end of text box, as we are formatting the typed text in \"parseInput\" to meet certain input types criteria\r\n const cursorPos = event.target.selectionStart;\r\n\r\n // console.log(event);\r\n event.persist();\r\n let value = parseInput(inputLanguage, stateData, event, controlItem);\r\n // console.log(value);\r\n if ((controlItem.fieldType === INPUTTYPES.INPUT_REAL || controlItem.fieldType === INPUTTYPES.INPUT_DOLLAR || controlItem.fieldType === INPUTTYPES.INPUT_PERCENT) && inputLanguage === 'French') {\r\n value = commaToDecimal(value);\r\n }\r\n let lengthOffset = lengthDifference(event.target.value, value);\r\n\r\n if (value !== textValue) {\r\n //setTextValue(value);\r\n await getchangeCallback(event, event.target.name, value);\r\n }\r\n event.target.setSelectionRange(cursorPos + lengthOffset, cursorPos + lengthOffset);\r\n\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n const lengthDifference = (oldVal, newVal) => {\r\n return newVal.length - oldVal.length;\r\n };\r\n const controlOnFocus = (event) => {\r\n event.persist();\r\n setFocus(true);\r\n setTimeout(() => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n }, 0);\r\n };\r\n const controlOnLostFocus = (event) => {\r\n event.persist();\r\n setFocus(false);\r\n setTimeout(() => {\r\n // console.log('controlOnLostFocus', event);\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n }, 0);\r\n };\r\n\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.textcontainer}`;\r\n if ((errors[name] || formErrors[name]) && controlItem && controlItem.isDirty) {\r\n containerClass += ' errorState';\r\n }\r\n if (controlItem && controlItem.displayDisabled) {\r\n containerClass += ' disabled';\r\n }\r\n if (controlItem && controlItem.displayHidden) {\r\n containerClass += ' hiddenField';\r\n }\r\n // console.logarea(\"Textareabox render test\");\r\n //utility internal function\r\n const textInput = () => {\r\n return (\r\n \r\n {}}\r\n onInput={controlOnChange}\r\n autoFocus={autoFocus}\r\n onBlur={controlOnLostFocus}\r\n ref={refItem}\r\n maxLength={controlItem.maxLength}\r\n style={styleProp}\r\n autoComplete='new_off'\r\n placeholder={placeholder}\r\n />\r\n \r\n );\r\n };\r\n return (\r\n
    \r\n {/* {controlItems[name].showLabel && ( */}\r\n \r\n {/* )} */}\r\n {!controlItem.showTooltip ? (\r\n textInput()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n
    \r\n \r\n \r\n
    \r\n {textInput()}\r\n
    \r\n ) : (\r\n
    \r\n \r\n {textInput()}\r\n
    \r\n )}\r\n\r\n \r\n
    \r\n );\r\n};\r\nTextareabox.defaultProps = {\r\n autoFocus: false,\r\n readOnly: false,\r\n step: 0,\r\n styleProp: {},\r\n placeholder: '',\r\n};\r\nexport {Textareabox};\r\n","import React, {useState, Fragment, memo, useEffect, useMemo, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {ValidationMessage, ValidationContext} from '../formValidation';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {formatDisplay, parseInput, decimalToComma, commaToDecimal} from 'core/utils/inputTypeUtils';\r\nimport {INPUTTYPES, STYLES} from 'core/constants/uiConstants';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst Textbox = ({\r\n getchangeCallback,\r\n getfocusCallback,\r\n lostfocusCallback,\r\n stateData,\r\n name,\r\n text,\r\n type,\r\n autoFocus,\r\n refItem,\r\n propStyle,\r\n readOnly,\r\n step,\r\n placeholder,\r\n styleProp,\r\n}) => {\r\n const {t} = usePCTranslation();\r\n const {errors, formErrors} = useContext(ValidationContext);\r\n const {controlItem, inputLanguage} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems ? state.setupItems.controlItems[name] : null,\r\n inputLanguage: state.auth.user ? state.auth.user['inputLanguage'] : 'English',\r\n }));\r\n const [textValue, setTextValue] = useState('');\r\n let currentState = stateData ? stateData : '';\r\n\r\n let formattedState = formatDisplay(\r\n inputLanguage,\r\n currentState,\r\n controlItem.fieldType,\r\n controlItem.decimalPlaces\r\n );\r\n if (\r\n controlItem &&\r\n (controlItem.fieldType === INPUTTYPES.INPUT_REAL ||\r\n controlItem.fieldType === INPUTTYPES.INPUT_DOLLAR ||\r\n controlItem.fieldType === INPUTTYPES.INPUT_PERCENT) &&\r\n inputLanguage === 'French'\r\n ) {\r\n currentState = decimalToComma(currentState);\r\n }\r\n const [focus, setFocus] = useState(false);\r\n\r\n // let isFocus = (stateData && stateData[\"CurrentField\"]===name) || false;\r\n let isReadOnly = controlItem.readOnly || readOnly;\r\n useEffect(() => {\r\n if (focus && !isReadOnly) {\r\n setTextValue(currentState);\r\n } else {\r\n setTextValue(formattedState);\r\n }\r\n // console.log(currentState, \"Use Effect testing\");\r\n }, [currentState, focus, formattedState]);\r\n\r\n //Label text\r\n // const [labelText, setLabelText] = useState(\"\");\r\n\r\n // useMemo(() => {setLabelText(t(`${name}-caption`))}, [inputLanguage]);\r\n const controlOnChange = async (event) => {\r\n //Cursor position was resetting to end of text box, as we are formatting the typed text in \"parseInput\" to meet certain input types criteria\r\n const cursorPos = event.target.selectionStart;\r\n\r\n // console.log(event);\r\n event.persist();\r\n let value = parseInput(inputLanguage, stateData, event, controlItem);\r\n // console.log(value);\r\n if (\r\n (controlItem.fieldType === INPUTTYPES.INPUT_REAL ||\r\n controlItem.fieldType === INPUTTYPES.INPUT_DOLLAR ||\r\n controlItem.fieldType === INPUTTYPES.INPUT_PERCENT) &&\r\n inputLanguage === \"French\"\r\n ) {\r\n value = commaToDecimal(value);\r\n }\r\n let lengthOffset = lengthDifference(event.target.value, value);\r\n\r\n if (value !== textValue) {\r\n //setTextValue(value);\r\n getchangeCallback(event, event.target.name, value);\r\n }\r\n event.target.setSelectionRange(\r\n cursorPos + lengthOffset,\r\n cursorPos + lengthOffset\r\n );\r\n\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n const lengthDifference = (oldVal, newVal) => {\r\n return newVal.length - oldVal.length;\r\n };\r\n const controlOnFocus = (event) => {\r\n event.persist();\r\n setFocus(true);\r\n setTimeout(() => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n }, 0);\r\n };\r\n const removeLastPeriod = () => {\r\n if (stateData[stateData.length - 1] === \".\") {\r\n stateData.splice(-1);\r\n }\r\n };\r\n const controlOnLostFocus = (event) => {\r\n event.persist();\r\n setFocus(false);\r\n setTimeout(() => {\r\n // console.log(\"controlOnLostFocus\",event);\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n }, 0);\r\n };\r\n\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.textcontainer}`;\r\n if (\r\n (errors[name] || formErrors[name]) &&\r\n controlItem &&\r\n controlItem.isDirty\r\n ) {\r\n containerClass += \" errorState\";\r\n }\r\n if (controlItem && controlItem.displayDisabled) {\r\n containerClass += \" disabled\";\r\n }\r\n if (controlItem && controlItem.displayHidden) {\r\n containerClass += \" hiddenField\";\r\n }\r\n if (name === \"txtInsuredStreetAddress\") console.log(\"Text Value\", textValue);\r\n // console.log(\"Textbox render test\");\r\n //utility internal function\r\n const textInput = () => {\r\n return (\r\n \r\n {}}\r\n onInput={controlOnChange}\r\n autoFocus={autoFocus}\r\n onBlur={controlOnLostFocus}\r\n ref={refItem}\r\n maxLength={controlItem.maxLength}\r\n style={styleProp}\r\n autoComplete=\"new_off\"\r\n placeholder={placeholder}\r\n />\r\n \r\n );\r\n };\r\n return (\r\n
    \r\n {/* {controlItems[name].showLabel && ( */}\r\n \r\n {!controlItem.showTooltip ? (\r\n textInput()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n
    \r\n \r\n \r\n
    \r\n {textInput()}\r\n
    \r\n ) : (\r\n
    \r\n \r\n {textInput()}\r\n
    \r\n )}\r\n {controlItem && controlItem.isDirty && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\nTextbox.defaultProps = {\r\n autoFocus: false,\r\n readOnly: false,\r\n step: 0,\r\n styleProp: {},\r\n placeholder: '',\r\n};\r\n\r\nexport {Textbox};\r\n","import React, {useState, useEffect, Fragment, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {ValidationMessage, ValidationContext} from '../formValidation';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst TextboxSubmit = ({getchangeCallback, getfocusCallback, lostfocusCallback, getclickCallback, stateData, name, text, autoFocus, readOnly, refItem, propStyle, buttonName, buttonType}) => {\r\n const {t} = usePCTranslation();\r\n const {errors, formErrors} = useContext(ValidationContext);\r\n const {controlItems} = useSelector((state) => ({\r\n controlItems: state.setupItems.controlItems ? state.setupItems.controlItems : null,\r\n }));\r\n\r\n let isDisabled = false;\r\n if (controlItems && controlItems[buttonName]) {\r\n isDisabled = controlItems[buttonName].displayDisabled;\r\n }\r\n const [isDisable, setIsDisable] = useState(false);\r\n useEffect(() => {\r\n setIsDisable(isDisabled);\r\n }, [isDisabled]);\r\n\r\n const controlOnChange = (event) => {\r\n event.persist();\r\n event.preventDefault();\r\n //the event.target.value is the after-change value here but...\r\n getchangeCallback(event, event.target.name, event.target.value);\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnClick = (event) => {\r\n event.persist();\r\n //the event.target.value is the after-change value here but...\r\n getclickCallback(event, buttonName, event.target.value);\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnFocus = (event) => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnLostFocus = (event) => {\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.textcontainer}`;\r\n if ((errors[name] || formErrors[name]) && controlItems[name] && controlItems[name].isDirty) {\r\n containerClass += ' errorState';\r\n }\r\n if (controlItems && controlItems[name] && controlItems[name].displayDisabled) containerClass += ' disabled';\r\n if (controlItems && controlItems[name] && controlItems[name].displayHidden) containerClass += ' hiddenField';\r\n\r\n const convertUnicode = (input) => {\r\n return input.replace(/\\\\u(\\w\\w\\w\\w)/g, (a, b) => {\r\n var charcode = parseInt(b, 16);\r\n return String.fromCharCode(charcode);\r\n });\r\n };\r\n\r\n const submitInput = () => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n \r\n {!controlItems[name].showTooltip ? (\r\n submitInput()\r\n ) : controlItems[name].showTooltipIcon ? (\r\n \r\n
    \r\n \r\n \r\n
    \r\n {submitInput()}\r\n
    \r\n ) : (\r\n
    \r\n \r\n {submitInput()}\r\n
    \r\n )}\r\n\r\n \r\n
    \r\n );\r\n};\r\nTextboxSubmit.defaultProps = {\r\n autoFocus: false,\r\n readOnly: false,\r\n};\r\n\r\nexport {TextboxSubmit};\r\n","import React, {Fragment} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {TooltipIcon, TooltipText} from '../uicore';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst TileButtons = ({\r\n getchangeCallback,\r\n getfocusCallback,\r\n lostfocusCallback,\r\n text,\r\n name,\r\n autoFocus,\r\n disableChoice,\r\n readOnly,\r\n options,\r\n stateData,\r\n refItem,\r\n propStyle,\r\n isDisabled = false,\r\n}) => {\r\n const { t } = usePCTranslation();\r\n const { controlItem } = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems\r\n ? state.setupItems.controlItems[name]\r\n : null,\r\n }));\r\n\r\n let optionItems = {};\r\n if (controlItem && controlItem.useOptions) {\r\n optionItems = controlItem.optionItems;\r\n }\r\n const controlOnChange = (event) => {\r\n //setSelectedOption(event.target.value);\r\n event.persist();\r\n //the event.target.value is the after-change value here but...\r\n getchangeCallback(event, event.target.name, event.target.value);\r\n //We do not want to stop this so that it can go to the validation routines\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnFocus = (event) => {\r\n getfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n const controlOnLostFocus = (event) => {\r\n lostfocusCallback(event, event.target.name, event.target.value);\r\n //DO NOT propagate this event up as it should only be for the current control\r\n event.stopPropagation();\r\n };\r\n\r\n let containerClass = `${STYLES.INPUTCONTAINER} ${propStyle.inputcontainer}`;\r\n if (controlItem && controlItem.displayDisabled) containerClass += \" disabled\";\r\n if (controlItem && controlItem.displayHidden)\r\n containerClass += \" hiddenField\";\r\n\r\n const pillLabel = () => {\r\n return (\r\n \r\n {t(`${name}-caption`)}\r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {!controlItem.showTooltip ? (\r\n pillLabel()\r\n ) : controlItem.showTooltipIcon ? (\r\n \r\n {pillLabel()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n {pillLabel()}\r\n
    \r\n )}\r\n
    \r\n {Object.keys(optionItems).map((key) => (\r\n
    \r\n \r\n \r\n {t(optionItems[key])}\r\n {controlItem.isSecondaryText && (\r\n \r\n {t(controlItem.secondaryText[key])}\r\n \r\n )}\r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nTileButtons.defaultProps = {\r\n autoFocus: false,\r\n disableChoice: '',\r\n readOnly: false,\r\n};\r\n\r\nexport {TileButtons};\r\n","import axios from 'axios';\r\n\r\nexport const postReportData = async (finalReport) => {\r\n try {\r\n const {data} = await axios.post('/api/ReportData', finalReport);\r\n console.log('Result: ', data);\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const postNewBusinessReportData = async (finalReport) => {\r\n try {\r\n const { data } = await axios.post('/Report/NewBusinessReport', finalReport);\r\n console.log('Result: ', data);\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const postDataReportsData = async (finalReport) => {\r\n try {\r\n let res = await axios.post('/api/RunReportData', finalReport);\r\n console.log('Result: ', res.data);\r\n return res.data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const postDataBIProQuoteReportsData = async (finalReport) => {\r\n try {\r\n let res = await axios.post('/api/BI/BIProQuote/RunReportData', finalReport);\r\n console.log('Result: ', res.data);\r\n return res.data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const postBIReportsData = async (finalReport, reportAPIPath) => {\r\n try {\r\n let res = await axios.post(`${reportAPIPath}/RunReportData`, finalReport);\r\n console.log(\"Result: \", res.data);\r\n return res.data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const exportDownload = async (id, excelFile) => {\r\n try {\r\n let res = await axios.get(`/DB${id}/${excelFile}`, {\r\n responseType: 'blob',\r\n });\r\n let url = window.URL.createObjectURL(res.data);\r\n let a = document.createElement('a');\r\n a.href = url;\r\n a.download = excelFile;\r\n a.click();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n","import React, {Fragment} from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\n\r\nconst tableDisplay = (headRow, grid, propStyle, freeze = false) => {\r\n return (\r\n \r\n \r\n \r\n {headRow.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n \r\n \r\n {grid.map((row, index) => (\r\n \r\n {row.map((val, idx) => (\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n
    \r\n {val}\r\n
    \r\n );\r\n};\r\n\r\nconst CalcTable = ({insuranceData, propStyle}) => {\r\n if (!insuranceData.dblTableData_Main) {\r\n return null;\r\n }\r\n let tblMain = insuranceData.dblTableData_Main;\r\n\r\n // let headRow1 = insuranceData.columnItems.slice(0,3);\r\n // let headRow2 = insuranceData.columnItems.slice(3);\r\n\r\n // let grid1 = [];\r\n // let grid2= [];\r\n\r\n // tblMain.slice(1).map(row=>{\r\n // grid1.push(row.slice(1,4));\r\n // grid2.push(row.slice(4));\r\n // });\r\n // return (\r\n //
    \r\n // {tableDisplay(headRow1, grid1, propStyle, true)}\r\n // {tableDisplay(headRow2, grid2, propStyle, false)}\r\n //
    \r\n // )\r\n\r\n //We slice off the first row and column as they are index '0' and not used\r\n const grid = Object.keys(tblMain)\r\n .slice(1)\r\n .map((item, index) => (\r\n \r\n {tblMain[item].slice(1).map((col, idx) => (\r\n \r\n {col}\r\n \r\n ))}\r\n \r\n ));\r\n\r\n return (\r\n \r\n \r\n \r\n {insuranceData.columnItems.map((item, idx) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n \r\n\r\n {grid}\r\n
    \r\n );\r\n};\r\n\r\n// CalcTable.defaultProps = {};\r\n\r\nexport default CalcTable;\r\n","import React, {useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst FieldContainer = ({\r\n children,\r\n name,\r\n tabName,\r\n activeTab,\r\n styling,\r\n // t,\r\n collapsable = true,\r\n // controlItems\r\n}) => {\r\n let [isHidden, setIsHidden] = useState(false);\r\n let {t} = usePCTranslation();\r\n let {controlItem} = useSelector((state) => ({\r\n controlItem: state.setupItems.controlItems ? state.setupItems.controlItems[name] : null,\r\n }));\r\n let classContent = `${STYLES.FIELDCONTENT} ${styling.content}`;\r\n let classHeader = `${STYLES.FIELDCONTAINERHEADER}${\r\n collapsable ? ' cursorPointer collapseIndicator collapseBlue collapseLeft' : ''\r\n }`;\r\n let containerClass = `${STYLES.FIELDCONTAINER} ${styling.container}`;\r\n if (controlItem && controlItem.displayHidden) {\r\n classContent += ' hiddenField';\r\n containerClass += ' hiddenField';\r\n }\r\n if (isHidden) {\r\n classContent += ' hiddenField';\r\n classHeader += ' collapsedHdr';\r\n }\r\n\r\n return (\r\n
    \r\n {collapsable ? (\r\n
    setIsHidden(!isHidden)} name={name}>\r\n {t(`${name}-label`)}\r\n
    \r\n ) : (\r\n
    \r\n {t(`${name}-label`)}\r\n
    \r\n )}\r\n\r\n
    \r\n {children}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nFieldContainer.defaultProps = {\r\n activeTab: '',\r\n tabName: '',\r\n};\r\n\r\nexport default FieldContainer;\r\n","import React, { Fragment } from \"react\";\r\n//import Button from \"../controls/Button\";\r\nimport CalcTable from \"./CalcTable\";\r\n\r\nconst FullPremiumTable = ({\r\n controlGetFocus,\r\n controlLostFocus,\r\n storeFormData,\r\n setElement,\r\n insuranceData, //,\r\n //illustrationState\r\n}) => {\r\n return (\r\n \r\n {/* */}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default FullPremiumTable;\r\n","import React from 'react';\r\n//const { PropTypes } = React;\r\nimport PropTypes from 'prop-types';\r\n\r\n//ToDo: get icon color working!\r\nexport const Icon = (props) => {\r\n const styles = {\r\n svg: {\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n margin: '10px',\r\n float: 'right',\r\n color: 'purple',\r\n },\r\n path: {\r\n fill: props.color,\r\n },\r\n };\r\n let newStyle = {};\r\n Object.assign(newStyle, styles.svg);\r\n newStyle['float'] = props.float;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nIcon.propTypes = {\r\n icon: PropTypes.string.isRequired,\r\n size: PropTypes.number,\r\n color: PropTypes.string,\r\n};\r\n\r\nIcon.defaultProps = {\r\n size: 16,\r\n float: 'right',\r\n};\r\n\r\nexport default Icon;\r\n","import React, {useState} from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\n\r\nconst SidebarContainer = ({children, name, styling}) => {\r\n const [isVisible, setIsVisible] = useState(true);\r\n let classSidebarContainer = `${STYLES.SIDEBARCONTAINER} ${styling}`;\r\n\r\n const toggleSideBar = (event) => {\r\n if (event.target.name && event.target.name !== name) {\r\n } else {\r\n setIsVisible(!isVisible);\r\n }\r\n };\r\n if (isVisible) {\r\n classSidebarContainer += ' sidebar-toggle';\r\n }\r\n return (\r\n \r\n {children}\r\n
    \r\n );\r\n};\r\n\r\nexport default SidebarContainer;\r\n","import React from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst Tab = ({activeTab, name, onClick}) => {\r\n const {t} = usePCTranslation();\r\n\r\n let className = STYLES.TABLISTITEM;\r\n if (activeTab === name) {\r\n className = `${className} ${STYLES.TABLISTACTIVE}`;\r\n }\r\n const onClickItem = (event) => {\r\n onClick(event, name, event.target.value);\r\n };\r\n return (\r\n
  • \r\n {t(`${name}-label`)}\r\n
  • \r\n );\r\n};\r\nexport default Tab;\r\n","import React, {Fragment, useState, useEffect} from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\n\r\nconst TabContent = ({children, activeTab}) => {\r\n const [active, setActive] = useState('');\r\n\r\n useEffect(() => {\r\n if (activeTab === '') {\r\n setActive(children[0].props.name);\r\n } else {\r\n setActive(activeTab);\r\n }\r\n }, [activeTab]);\r\n return (\r\n \r\n {children.map((child) => {\r\n if (child === undefined) {\r\n return undefined;\r\n }\r\n const {name, children, styling} = child.props;\r\n let classNames = `${STYLES.TABCONTENT} ${styling} `;\r\n if (name === active) classNames += STYLES.TABCONTENTACTIVE;\r\n return (\r\n
    \r\n {children}\r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nexport default TabContent;\r\n","import React from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\n\r\nconst TabLayout = ({children, label, styling, active}) => {\r\n let classNames = `${STYLES.TABLAYOUT} ${styling}`;\r\n if (label === active) classNames = classNames + ' active-tab';\r\n return (\r\n
    \r\n {children}\r\n
    \r\n );\r\n};\r\n\r\nexport default TabLayout;\r\n","import React from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\n\r\nconst TooltipIcon = ({name}) => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default TooltipIcon;\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Tab from './Tab';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport TabContent from './TabContent';\r\n\r\nclass Tabs extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n activeTab: this.props.children[0].props.name,\r\n };\r\n }\r\n\r\n onClickTabItem = (event, tab, value) => {\r\n this.setState({activeTab: tab});\r\n this.props.setActiveTab(event, tab, value);\r\n };\r\n\r\n render() {\r\n const {\r\n onClickTabItem,\r\n props: {children},\r\n state: {activeTab},\r\n } = this;\r\n\r\n return (\r\n
    \r\n
      \r\n {children.map((child) => {\r\n if (child === undefined) {\r\n return undefined;\r\n }\r\n const {name} = child.props;\r\n\r\n return ;\r\n })}\r\n
    \r\n {children.map((child) => {\r\n if (child === undefined) {\r\n return undefined;\r\n }\r\n const {name, children, styling} = child.props;\r\n let classNames = `${STYLES.TABCONTENT} ${styling} `;\r\n if (name === activeTab) classNames += STYLES.TABCONTENTACTIVE;\r\n return (\r\n // \r\n
    \r\n {children}\r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n }\r\n}\r\nTabs.propTypes = {\r\n children: PropTypes.instanceOf(Array).isRequired,\r\n};\r\n\r\nexport default Tabs;\r\n","import React from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst TooltipText = ({name}) => {\r\n const {t} = usePCTranslation();\r\n return (\r\n
    \r\n {t(`${name}-tooltip`)}\r\n
    \r\n );\r\n};\r\n\r\nexport default TooltipText;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAAHhxWh1AAAAAXNSR0IArs4c6QAABEBJREFUWAnFmFuITWEUx+fMIKZxS8m4RLlEITFJwyRNCYMUDy7lEqVQRjIeeEAiXpRXRHlQSMqDpDSiECnlkstQGEm5kyFsv3XOt7759t7f3mcfTln1n7W+//qvtfY5+3K+PRUVxoIgeKlx3kMELlFpFufEkztm1h5HdoJLh1qx2OcmM8Sheq8exSBgp3orvKSvHcJ3yhO/0DjvIT6Dg6BBE8RzQOH7wv/ShM+TnxTiIbaD1yHSXZC0p4JwMKhz897YLdJz5xUqaUVUXlfS+Me6tiKIn0pS8DCXy43SdcjrceBzoYQsJIk1aYJ4CtgLCt0J7EdXketJL5Yuy1wyGic2IdEgSewtaAYbwAsgtiTayLtG+Ats8yYhyS0CqR8jX5tFJBpsQNIw2wjRkCQRua7SJSlveTRVIsTi5w5VIRX0tQXFAgp+gzuqIz4nTXSd6tHVg/tSoKYFrDuUw7eB2ZqzHvITeGSJjAE1V0Dhria4AY5krI3JqG0BH3P8+U3W+8XGqv6GYMBocBV8BzfB5LQ+7r1tdRS9YfEAtIFV4CaQr+AbPptJE9DuU8PfAR2+XIhDNAKkXiuSx+Kn3u2E4BI46XLRmPwu8CrKh9YIPoC1ITKyID8dxI46+mXfoK4+UhtdToV4HiVDawYtAXJdJRr5d2BnokATiGKHrTnxSfnoRxOt3LS3JYga/Am491E+cS1TsaGugHVNng2C7i6fGlOw1BTViJBY7kmxHamFviRF58EZyeH3gKc+nZdDfAB8AWozTKNhSuDlAXcIxJ8YkAuA2HOwGswCvd1prKsNvwKvT9GNVgM5CogNt2SGAH2/fFUQNOblZrE+Q21MQm2j1NtGMUUJhDbyXZAltClIaTaii4TateQOnQWlHRADZct3HMiPZzG7gGBc56wyRjSeBuTHREyu1y3Ae8vBV4KV4DVQW162w6HjMdP1K35iKY3RDwTtpv5aKbVeLY22mmayw6j2ijKQ1N41fY5mkCdLaPLENErcmCZXd2bosdD0kWuvW2cmHhW7qgv7p4qKrvHSkhitl1+51F+6YgfUasbOLWl8XKz1V3kJsi9FcVkRhq+3J9BtbHMRuTdNvTz41f79MUAn2VCozfROTSApkg3bD1NcfMOR0CdG03C+aSpuaUzgIdDVAX2Atngk/0bRfCyQZ5HYPdDf1xG+B7gIxOSA5vh0ZeMYsMYMwgWb3casm4Q0tt/NZY2L3WW2D0Nkl9YH4jJ4ZhLRi3S84T/jT4ke9DLc3zkajAGyQUsz+T1b55sAPw/IK0ya3SLZ4Ku3HAJpJP8uEJP/OcipqbKCMgX0lBvkKVALnfb8GDJnTVbeB0aWaXZqG+b0BY/NXLlJCh+eYLch5WvWR3xqs3ImmXnNzD+d78vilSE2lXNQ1l7Mnm3mi+slW89aUywvBYuzNiqjzn3nqpV98GGgT1TC/2atTK78AxwcMFkjZy/xAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/procomp.824ccc3a.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAqCAYAAAG2MSnwAAAAAXNSR0IArs4c6QAABYhJREFUWAndmWuIVkUYx9dd3e0iqSUqpRRB0WWLivpS60ZE9KlCKAKTosBL0sWyoOiTViBEQkYqRG0KSbqSdCFCUrpaRJCQUFGmVmuIaDfB266n3/+cmdmZc+ac875vbwU98D/zXP7PM3POmTMz725Hh5EkSZ4H86wdtAS6O7i8EngxOsGevLNgkznTOTEmgS7nkIJjtAzGUT+K3e9sjMQa6j0QYl2dXDbLOwYxUdumHV0TpMgg4yi42A9gvw7udz6MC5yRJbmByE98RJfDxuhGL4hiTogucgaK2KU2sU1gbY4wgm+i70t1nJPBJ2BTIWgdBIPu5C/4cGyzCfnWkZ1iGNjLI+QH9L625AMR+zmNY44CqhyRQzYmwpBfATvWdaKup/nEEr039VPlWAkh+oiC50jyeSDwBcWI9YJzAmeZAXE+sPIZyrNgEXgVHAOSg6CnrEbqT2lJ8mklyQvCn2JyVnnu9J0sVCBwegahJTXxa10cZaozvCK+Snx5A5y74AyP4bKD5EE+/iW2CL6F6P7zeRh7OngCpF8srWQdefsy1XwNJH8MCrPKktQSHwClj8RyUw4XjbKSTLiRW34G3q60OMrZoLQooTtq4i8SD9ZdW/gXAifsLdS1cB9RR8hllVwIPeCAmEZO0O61hmmfrCwSC5J4J9gIfgD6YlaCM2Nc64vtJGNJ0q3rmb4MjoMXwIfgEjCkGLIYvVog3Z1Sk+TtKiac8w1vuJQHIZ0atI0saGkduNoLirMDX58CiP91lHbuB8jZBsKFUpWQPp/o61k4GfB9vm7i96Y+jMWg/FnAMgkb/SK+TlyLbXbrtNowb/cJeV1kpLSg+BklOb24GeSrjZLrCuoFrRibz8epieuPeJzhXE/sIY9/hKXLX6k/ItZXGCFJOus0Ku7DIGEeGHIO2zO99oBATGxr4MwMfyG5At72tCCVR89otnKx/bXoCjy3Yr2vW/4ZPBWEcgZxSd1LcdPmUrFzNQJTcaS0ILFHwYhLwjgCVjtHTiEmeTzndmYW9k4ROLqMs9+xGlTI00lia4GO80JTtHQk+ST4+sr25/3OJniqKaol/yIXyCnEtClJ3suF4iZEPWRf9mFoNFb+RBkfy66cfyRpns4A+hx1/tzLfD5A2x6hAz2SB8EHYBg0KnqEn4PHwKT2jMZUoeDV4BtgRY/yTaD9bHJdZ3AmAh08tBsfB1Z2odxQlx+Nk6hpbvdA1OQncF2U3IKTWtoSdwMrq1AKK3O0NMR7bBbtBtD0vhotHHGqNlgPrCyI0DIXDJ1nvjXMH2mnlpIjAfhnAZ2Et4Pgp3KEHrjgTwNakyXfgfBp4hgP9KlKyn+yBmVDgzx/SpSuw2FWaFHjLQ0A0cHvFEXtfrcZfQrYwGc/S4H/Quj7Jvp9A+js9046BkY6V0NGtLOfljpbuJD7t5+guqXOGcAuYbP1BG8z4xngDv4weiuNfRvK9fWmapmFe51JmqURHwSSubFK+PWLbacIbZYdsf7kox9tBpLv9bX8BrS6TwAF4Y5EXErgPnBSgZA5VCf4Gxb2TnA4Cxeu8lf97rVj+V2j1VonWV8o04SD/LbMQXVJLe1UkpdkXJmq2eWqJsYUUElvywCpM9MbT28nr/ALelppehsk2B30/C8a9K0p9JrpcgVjG52nBNeake+nbXq5IUd/wLIy2Ox9kTgB2L8brInmQ3ja9kA7P0qqcJJzC5gNmlpm4C8AVpZVdJFOUP0lXPuh5BD4x3YWat9s+qBJ9oDa45sbPOTp4EtgZQvK5Y7QokIN/TZ/1xal/Rqc22K59IlqIdRr2w180clnGegHM4D9Fa2VQedJnW502F0KvgK+6DCgLTb8n0XLo/QSKToO3AhWA3VUJ9qp1gDNz5O9Uv8P9S+y9+tXVSfDTAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAgCAYAAAEXqgqWAAAAAXNSR0IArs4c6QAAA1xJREFUWAnVmM+LjVEYx++dGQbDZiRrUv4BitmgpvErZVhYy05RysLCUFKUjWzsLJRJ02QlSWGDyIJZSZGNpJRkXKaMuT7fc89znPfcee/c9525tzz1zPOc58f3fN/znvO+751KBanX6zOyJlUCc9VqtQc7YEFVzaFHQ0COgpmAD86Q+BInqj7xD69SeR0XOJ+uz/MF64GSZams41+0sSyUxwIj8m/iZOyTOx8K40Tqa5Yegh+xw2kyGdeE+ALVtWfWMyms6GJGIPtACfxxzPuk6Cn5+0qO+KIB/Pn0pGtUIXo6QckMyU86RJzmVY5KyR+yQi1yS9HytCUq3I/mIjLtmJC0PFPYafSsApHoakdZGredonhL120eKvbYmqfVTHiG2M40nox3M74ARmPv0GT3pg9/MTKULuJEMnPR4V7dPp1WYyh2m4uiqF6NyIaUoQ7b2zKA6qH3QwAEfVVZoLi3DxAB/TIw8Ta/oF3j6uk/jE6j7kxH9lRBQFcuhpPoPjSwdJlK5THgg6yLOwE+tqDRxq7T1HQaCPfSPYveRt+1QBKRS0C4pcoFFACgumn35LeQQXJbjVQToAhTUPSO/zBArWEQwF4y2BICBRx6/wDa63a49REsu2UCToahgBcDqv4mQFsLJYuIEYmP3sYiAHEtYKE3AFIwhH6NCwv4oTcFfFYAJC4VoOtdcsBwV7WoyI542nb9Rqvv9YNeb/vbBbE6+txpwy5TTNtmHNVDQKJHWMMr9vcu2+23awHgCFpGzhWbs2Q1zGY9uwPtQFCrV/eE75G53E5f6Rom0FtZ4t7M7QJRr31xU41LKA/BWpHhQKAUwQzIEgzgcdVf6PMMXCuC5Najt9DvaLekxkSjRrLpYW0JinbhP/LjE9gnluugXQv2NfQO81/nJB/PJUjRQU/kE1Zfi6W+GD1GEWO/lsJzK69Zz3OJflquc153/mzy07xylqVsOiTElkfx4e7wch8X/dG8boHil13MYzsD+1R0b8U42UF/WzSvW8E8gnZ7p9ioPztIKIWO53Uf5gsR7ObqiawRDPP+fwTZpHqc6NeBJFxJY9i5v3nz6lvpCtPav0xsv9kvk2+do5RB1jNvwEdusO+PWdZOqr40VxJcjebdduvphNVHYw1itRT8LzR5W+tumyEbAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAA4hJREFUWAnVmEtIVFEYxx1LyN4lmBUmKZWLWvQ0K7CooMciWrWJFq7aGLQJImjVLiKIghbtgjZFUUJFi8RFhPYwJMqU6EmZSaRhD0jt98978jRzz9wzM3e0PvjN+e453/c/35x779xzJ1HgacPDw0sI3QmboRzKYAb0Qjc8h5twPZFI6HhsjMJ2Qzv42hCBt2BNXitkguVwD5JNBXyANrgNKr4HwuwKnVrpeA3RPTCQNGMzx/thXths9C+EA3AfbHvDwcqwnKz6EDtkq+Nrpbb6ihGbAH3Bl2DsK852Xw1nHCLbQKfQ2BmcImdCmgHyZoMuAWN9OLrRsjOSF0CvUaNtyE5pNAuNIrhoaT7FnzYa4emRVAgtltBJz9TIMDSnwGNL+3RkUnIAyTssARU6ITkml2P0FoNOsewbZHZnk9CozMD0Qxy7oX3YTEB73HsCgitgEGR3vBMzDES7FH5oEkyrOdFHopCgvaBWdnmkif+Tx18PqpcC5em0q3xmUWE1VuANy8+H22iJbrJ8p6sClwajg7Qdzsh4BrShMFZpnHStCiwJAno4DUPpgmMYe2FplFq+01WBk4PRfmdUfAOfkDKL4PWDrQL7gvnNSsZXTqrSfLo0p2xgpEn/qeD3QUgJt35Wz930U/w1WmkddVq+01WBbcFogna1MzKegWpLptXyna4KtH+cc98SOaf6PaDfXGMtxknbclrngHmSdOHH+hw2k6O7DIy1m36vlqxrJpO23ispwyB0z1lz7MsoncQaK/k1fqx3NHq7wGyE9QqQ+c1I0nkw1oSTuUjIsqBTBZ/B2NGQsOgusmeBvp0x7YTNj3i0QEgE+RXwBGzr4GBuSHh0F4m6kM3GUqKPoCo6MzWCvDpwvY7mVGQtwt1g7DvOCfC6LonTKb0A5prDDbWciixH8kGSrF4dr0I9rIAymASK1U12EJrgJ/jaMwKzPt3FJB8B+wL3nVhxb0Ffpg6+gMtUZOifAakXTkgPyXq/PQYS8rFWgvQPRLGRw98AWRWp56+3MckigreA+XdrJr52Qx/hIdxlT/mKNsVUJJ3asU9NGRzp6KLZSP47x3j+uylyfcRKdjKuLdn4WVBkP63L/oki11FduiK1aRn3lfwviqyNWMnm8bsYg5kpUEXaj1cO/9hYvMhFrwHluIo8FZ09RhEUuRbsldRjNZYtX2xfgYKq4Sw0gN6XCn4B4Lx3XZPCrDsAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAABAdJREFUWAndmFmIT1Ecx/2Hse+aMUaWUpJ4IJRCRKHJUkrZnix58Ca74kUzHhBR4kGKJqVEkQdLZpBkiUQeLCH7vmcbn+/9n9/MHf9lzr3z/xv51eeec8/5bf9z7zn3nH+iWQypqakpxGw0TIJ+UAI9oBu8gieOO5THoTqRSPygzK+Q2GiohLcQRd6gvA9GRs0w4WOA48HolUNZSP8X9QtwER6DRk2jp1EsdSih4RCOc4j7VYzobcrGCYkVwjb4CSZnqcyHYh/v6JXCYrgMJt+plEOBj4+0OhgXwRkwuUFlalplj0ZsEzAL7oLJUSodPczrq2A0EO47L78o10Lz+lrx7vDTEraCyU0qvb29oayRuweSDzDN2ziCIn4XwDeQXIN2DZqj1ArOgUTJDWnQqBEK+J8Ieh8lhyA8mVI9o7BLmogmxZRUjdy3EGeJAjpZkzECCkNB75tkRUbFPHQQzwbmE3UtUalCx0mQ6H2IPP2xmQlPHDNTI2RuwaYDPAfJ7hRNGicHXcnLxBQFjwZMn4V8PPMwqaeCrT3qH9QH/Nl50Dk/Wa8jwg32D50PFQ8jmAaq2OijYGtkRa09jW3gI0jm1XZErGCrGXndEfcpbMBecqs2PDdTg6bkdO9a29EEFfIY7nJR0VcpaDJoyySp4gP+OlmNfsWhRnAvnIdV0T0EFpe4auMhGaVLC+ijCnI1WcS+6vWY46zvxvHCAPHbaq5ha7uhYARt3bHM4/jOpY3lEeyW9Ij/+QQ7uZ//LpfD0AhflkewedAI2qLavRFOc2lqeQQTVgnaM7dHnctgcXxZHs9lHE6wZxxvebCxBF9YgjddkDF5CBbJJUtMawxGOCMdWYMRPOIaBqGgM25TyniCa3LoDF2tRPSItXo/0g0yPVk02dWOF2dZtN8qiwKt3pSHXUqLGEV9Xf66EFfnadtHWj7BCCqZrfAd+sNCiCPh73i47utrDYpak2W7J8WIX7AdJE+hfYpCHhuI1we+gmRp2lB0FMN7aSD70yrloZFY2qhWKSjyADST0wudegdN4m6Z0jvP0EowOzDpJFmWQa2uGSV71Drhza7ryX0N/8vBZLVXBLRbwAlnpSTXQ/YDtZfnOiX8KcZOMDlQ1+tRw6ojHDNrSh2qijxMG1TBTy84BSaVVDK/d5k8YlQAm8wLpSaQ/kRqm8kmWzt2naACvoBET2ddNhuvPpzMhfCZV4fzLTAWmmdzQr9m6ATYAS/B5BGVGdlsrc/r3cKZ1sVloDUq2Eg6B/pH9QpoyybC/7BqdzQMOoPJRyobYTNfsM/WmLOSREtgJVwAPSIfkZ5OesvANqPeOXmNYDpvLtg4+nQqLAb9098F9KnSLl0bzvtwmtEKNp/U/z/5DTq0APMfKQurAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/arrow.0801cc9a.svg\";","export default __webpack_public_path__ + \"static/media/chevron-blue-right.3353afa1.svg\";","export default __webpack_public_path__ + \"static/media/pages.70e1765e.svg\";","export default __webpack_public_path__ + \"static/media/chevron-blue.21c16af4.svg\";","export default __webpack_public_path__ + \"static/media/chevron-white.63df8668.svg\";","export default __webpack_public_path__ + \"static/media/threedots.a948f8bc.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAAG3RoyQAAAAAXNSR0IArs4c6QAAAi9JREFUOBGVlU1IVFEYhr1q/pBQgiKaQUiFkoi5CFy4E3HTLnDRKqiViGAELUJmFei6jbhxJdrSApEIUgRXrloECiKYJC0zQsef2/Oeud+dc48zogcev+973/ecuTN35lpR4a84jt/4s+sRv1wQi0Kklkw+iqIaai1jk4SDYiboMLXWMzLCKxMqGarhLsId6r6MSmjkRfY0UGUsq3eL4aYaaqw/vwpy4S9ztetoPoLWDT9g5rgazBxMlwqc+KKCNtNvQaRLP+DqLh6fJPEe0p7rZSZBb6vswl91Js192A2TaCvwLNRt08+ShonsbIb3oNUNPealFXEOpiRQ46SO0n73Q+8Q+k2wYBJuYf7mPJo/FkpMd6Jp+BsWfG1imeAw4U59fpkTmB/5G+l/u5l05lsRhPTmFqXpxCWGtjCgGb2K0pt6CDswmAqFUAfakWnuHnPjOxDOMA5B64x5CL3Ogleqhb3Fr95lm9wrW4CNEbwFXcEJuLvq+V1o+3AOi3DbvEzF0M/zM/yF4YzJgKaV83XmVvgBu3Av9Ria4B98SMWgwdPKBbIb0Z86l2rCV4SFUmHTkg05m8OKPwG6qFp9hgOwEoaCOc98HGj+uMRQD336fDZg1nev27P/OZxCgw58kAwvrnuQ8uzV4yUPL9P9DLdAd2wTmlPjkoZcFczAETwpGcXQHf8EWmswBv2gn81jGIF5OIZtSB8sdqD7t2NDWNmg5287tIAeOHv8zA6pZdd/OEz2rSHR4IUAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAQCAYAAAGDw3T0AAAAAXNSR0IArs4c6QAAAZRJREFUOBGdk00oRGEUhueOKfnJ0DRMyFhOZKNolIydkoWsrWiWFiIbGws29rJiKVNWysqUkEhK06Smyd+CWMpQdtdz7nzfde81bpmvnvue855zvvsfCKhlmmbOCgmutFlBKQ+Kjd5AKcghSz4kpmEYvciHxJUX3ctQ76piNEHKNkmKOiE+hls54y6cwE8nXeQG7EMB8nrQUoxhaITy7bmqKqHYAueSoiG4U/GnavEXBl78O6jSNAbtEpzClncCbxZyYNo14jedEGchBn2won1LMVIgzyrqKjgTimcgd9vt9O2YwiWExUAz0AkJWBKjCIdQY0+UG9N4z2AazoI3pt6P9+X1/5WzSS0cgFxNh7yuKXaIgZy9B2Zgja9xFXUteusw9mAANuAenmAc0vB7MZSEd5iXKtoAR5CHVj1BHIdpnfsqjfJVypdwDRHf5r+KDIbhAuS1NUsfug0P0KXniCMwqXP5YUZI2pQRR+fgESZ4biXUXvSGSHZAfrx1KMAoLMICVL/YXC5mE14hUf1OapJNgnqTb74SVk5UtOeZAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAARCAYAAAGwf1ymAAAAAXNSR0IArs4c6QAAAWxJREFUOBG1lL1KA0EUhRMLfQVBCAgWgqCgoKKghYUWNimsbGxsUtmYysbOxspGG7G1E59An8DeQhBEEEEkiBL/1u9u7p2MsxN3MTpwcuee+e6ZDQtbKvkrSZIj6alJ6lPP0439YPTL8SZaMbNzhRpHLuyB/QVqdh7hBGCiHBKYEtPbfrgW2co2WihZ1ndfCRtKIy2VOh2LxV8wkNr+AzTPerArg+xr2n/EgpwHdKNgw5m/3RB0VngW+FpvPskdArxX+LgI/KTwnoPVyLw1/Fc923KwbDCXwiH6T/XWv8HWcDhlQ16t2nm0Ag578FwUCk0GBtBo6P9bz2UVdIlkPaLZP7mMoBF0i/x1StPX1QUEzCB5Un8d0vS4YGnQAZJXW3MHP2zgltEL8tdOdASiipo+yX47BuOvofeA3YixGY+hedQIhvfpy6ge+G/0q5mQIgaDY+guCLRWPkSLRXJyGYIG0ZUmy5d9MncoAnwBCa319ZgDPsQAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/Checkmark-circle.96e3d139.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAoCAYAAAH25/i8AAAAAXNSR0IArs4c6QAABRNJREFUWAnFmVuIVWUUx8dhrCwq8WHMoDyJoBSCQRchiLIbSS9R5EvRQwn1YEXZS0FNEPViYAQZlJD0FHR9CLpSUFAY2INYQWJFUChUo1FTM+nu99/nW5/r2/dzzjgt+M9a67/+a33fuey9z94zNuYsy7KdLu2HkFmJNILaJvCR5WMklynBrw9+UsljpiA+zeLoIR+PSTGgmG6A/CewJhFCLBaBXxb8OYnAJ4h2+zyPIVeASbAIXF8SeALBZ8rxa8CNIT7kNROWIMgWYZbj8xhqeakmwgkrQ9OME7yIIq5Uqe6T0p74nLyQwhGf18a2rPkm4b2+SMPLPk9im+b8TCKwBMGsi+O7ZI2qjZsA/4KLfbjFJ/oE4yQVanMKV4DkvSZPXmgYcGdpSii8J+8tXy3/49mauKtOq++VGPug77Lfa2YORjPsONjnu8h3aRHPDRxrAPaINRI/5eJr8ypHkXGdPE1nhsbV1kCuA1a2yXFL+lR2oXHe+y9VziO+meCoDmrsgBcXY+ozEsHvp2+qWE9yBG9oJwkZEujSzr2Ouj6b/Z6LMYWjYDoSQwT0fwuOJ60QslcTspBQfzBXZdmbhVKSonlSupzE/wXeTRQjJsx7HmQTfB6n4/WWVL7XQ64zFz7o9nbW1VdzHzgIVrV3dFQwbDGQTQNdKGW9ju3NMgYl3yLyLzS9uatDlRk6t8qK51dxD3UYUS/RBKz0FYV7QIX6zpYKvTv9AOL14CprUw3bY/lAvt+b3WRNIY+7Je8F7mzTdPI0/Qz+8eIwKA5XDe5HMOd1jTHitWHQGV4YuGS46oG/xWtr4yD+pChoGL5DtaK+lKOZqhOKl5WaIPqV7LWqWuSC6K5IuCDU6oZvCPXkeIjtFL8B6bk4VvPdzWmAo5KQUnIkxyIF/QqWTUZywIBeOwddkrRSKP18SAQkaC4AG4q8z6m/DU68OuJ7EsKrXSyNzFGVYV+Vbc+LIXm0UulIdFvA046qDNFs1sy8GINK6XCkZmIr7Dv6zHBjyl0M3arJeQWve7/5trvLy47AsLuV4LuaXeoYaL7RG2HtoVvZ1MNuw58Sn6VheN2ZPudqbw29yHw3sqlX3Mbuq5pP/VKgc4BMZ7D8pr1Ke9I5Ftc9sd0oEWZXNy1KXc8G9KtKdgQsb9KflBqLLgO/Atmf4LwuC6GbALoDkekTuLxL37xoWOxicAzIDoBT/WBy3X/9BmSzoOfriuFeVzFY5RW12DNSzkJ32Gr4d6qGwdstmUnjTaXXU5wyAX6Hr81rzPDtbqF4C11cBE2njasP7a1u5ofFWSPnDH/fLbC5aSC6zhvXHPQXgfy3EP4HsKRpfqeahoDvgexfsK6tEc1AG9c8epaCw0Cm2+GVbevU1mnuhSG4fOjSWrEroB1442qnT6fXL4HZNW5st5DO66wbvwd0fgSEdqiN287o3w3M7je+1dOxzbrwu1obKgT03Q4+Btsqyq2U+oDZS10a/OW7+6ttnTy4gF3fYDvHfw7KnzrkQJfvpm0wazX4A8h0dbytSd9Uo3cV+BvIfgH5j7e8h2Soy3fdgsyzR6OEuT1Rp+3CM0HPxeypka7Ea23j+rUm0w+f5PLdZfBCadjb19okNgPG9ejWHkZM83QueeqxUJvquM6hoDsFP6Hb/o3gK3C+Xg5e/6XZC46B/9t0QOqiZw8JtKeNvMGz8Uhlzz1InUmuBOeC0oN0uIU2vZGHgZ7KPcuG4/8y/gMVulxRCOR52AAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/Account-sample.e2536de5.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAqCAYAAAGsDcl+AAAAAXNSR0IArs4c6QAABBdJREFUWAntmEuIjWEYx2eGGIWJyK3ktkGhXMolHcmlZGGBBSuFmmympFxiFpIpNRSLIZuJKAvEgtmYBUqZYqFJzMICMw0ZMwzT4Pj9v/O+n/d7z/edOd+YU8o89T/P/f++5/mu55SVIdlsdqp0KATqQAvIhkEZfqAikjXOSDcY6cD56SbF9zISkOO31LoVeStGArS2RvsN4W2j97tceTbtF93VsavkI6f0ETSga0Mnj6KszN+QaiVVbm1kRuWImwxtukaBt2EgzqDgmuLorrh8ECPZY4owA2nIKybcDKrdBP5H0AUaQVbLqCjjFrm2iiIjcJOuna5ItEY6XBbZIZMGaWQKxTdMwydqbkcmbhko3m5taTHpDH0gJ1GgLTfU99BXjD0lsSEpQeNXsNXmsceLzPqpNH39anbkkCUgthRoMUmTjbuaeHfgY+gI14IMKLgb0hXgDHgPXoBVIBs7bXc13+ZI/CJ20CBIw/Pn2PoNaf3wJPEbWWUymODHk/xYIgjm8xU6wSdszeQ+kGjoM1wy/GA8sTOCoNUWm5lssr40zWtQu0A/OEJNeSwRyYJC30MKhKiwwgnwHVyOZlJ4ND8GEp1H34CuwvQiBrfL991cITvpqK0o1BSb0w6QOUqiKwMv+vEZd0lssxukaFu0L9uHP9bWYF9w8hkbt5rcFvA48E3hRmlb4GtSx0yd1F1wHOjCDSQkkqGIT+D7lKwFT0AvuA4yINdnDav95kI+PQFR7FEr1JiU+x+JGGJwkibNxI/nzQgC3bx0ONukjRz1G2N9FSthml64RcQ2mLhUvZszPQ3Ec++KqjDB3InlV+NTskgNqkV0GQUvr4HHNRq0yBmIyHJTqnv4YaCzeqeNpyaKNDpO3rCdXCozJGKbifMpmhGOWeCpyGKkg9j6osn+tpDF9jib2O3yEV8MPph8o5srmc1ib8yCegDnCbkZJi81O69giAN68H8xnAsSuBc68dNsaia+HjH6UfEctIC7vAz0ov9eWGA66AYSHZ5qoJfPHeAZcEU/K5pAI9DjqB34codA6qc0PePAqPAb4TSDJFkZFiYYNE4CJ4E27cojnO1gtN9KrBLoJvIDBBLW4NkN1SqIn8mVDO4yplffuAa8tjwF9CubC+8f4c6GyOCc6gH1YB4oKCy51y5bsg3ZBdLq4Q0NNLHhCQ3JhLgkp4FzwD5m7FWqG2MDWA9GDLRYMflifzO+g0zvYbdAHWgHE8FysBnsA7p3Senvg/PgLNd6pwKDEsgSb4zkxhVDSt0ycBP8Alb6MK6CzWCMy4O/DjwEVm6EeSKJGwqLUhpwzgX1oBMkif5LOACCQ17sIUu5lVw5h6wNq8agKI5/7rKPm9Bqxqf/weYU9ZVKVcQm9Cqr/0F8uVSqNeN4fwOwXNrkHLqZgAAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/hourglass.b9e0e824.svg\";","export default __webpack_public_path__ + \"static/media/About_ProCompPPR.10e4e012.png\";","export default __webpack_public_path__ + \"static/media/About_ProCompIllustration.f98d9289.png\";","export default __webpack_public_path__ + \"static/media/Trash.3ecd2085.svg\";","export default __webpack_public_path__ + \"static/media/help_outline-blue-18dp.49fb0025.svg\";","export default __webpack_public_path__ + \"static/media/eAppPlaceholder.09b075fa.svg\";","export default __webpack_public_path__ + \"static/media/Zoom.d471eed0.svg\";","export default __webpack_public_path__ + \"static/media/Close.8a2ed51f.svg\";","export default __webpack_public_path__ + \"static/media/Bank Info Illustration.f57af41f.svg\";","export default __webpack_public_path__ + \"static/media/Dog on bed.3d6f1e6a.svg\";","export default __webpack_public_path__ + \"static/media/Whiteboard with plants.15797888.svg\";","export default __webpack_public_path__ + \"static/media/Clock.db5e5b0a.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/klEQVR4nO2aTU7DMBBGP8QV4DBkxQnKBisLOBHtCnEsitRDQLukEqxa1ShSKnmRxr8z45B5kheVGtvzbKce14CiKIqiKMplHgDsANiEsgewBHCFeLpnVn0dKW1vASxQgG1iB9zSJLTbFGj3s4QAW6DcCQk4SQvYA3jJWALLjCVwLmQCjgCeIY8BcJAQYCuQ4AueRMBh4HMLftoLfSEX8DjQEPdMMBf68MQhAMISxoIHlwApCb7gWQVwSwgJnl0Al4TQ4EUEUEuICV5MAJWE2OBFBZSWkBI8iYC9U9l3xgYlZrOUU0dsf72snAq7xIY6gFyBKf31ZmVNn9LGZHUpgZSYPan9JSHmnZC65qunHQhsDeDa8x2pJIt8JmwA3Mxh5IckvM81+DOzmvZjzG7kXWYdfBsw7d1lMruRvwXwUclps0jwG+JDlaqn/fo//iKYiBdeDafNo8lFM6Fk6L4vRVg5nen+q6s9HX5znnvFDA9Efp1nflAAG3HEVHKTk/pOKH4kZgMrpNjhpUgQEWAIt7exEtgFGIa9fYwEVgGGMbEJlcAmwAhkdSESWAQYwZTWJ4FcgKkgnx+TQC7gkLnJmfwVGSs48iEzgU3AsZJjLJ+EbGxGkbwrXEzAKbMDkneFiwj4mvBd4e6idzaL/tb11O4K7/qr/oqiKIqiKBjiD43AZEL/q98bAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/Corp-money.1de7e98b.svg\";","export default __webpack_public_path__ + \"static/media/Corp-time.b740cefa.svg\";","export default __webpack_public_path__ + \"static/media/Corp.54121544.svg\";","export default __webpack_public_path__ + \"static/media/Exec.8b62e4ee.svg\";","export default __webpack_public_path__ + \"static/media/Blue-exec.92ffbdde.svg\";","export default __webpack_public_path__ + \"static/media/Exec-money.a60de3af.svg\";","export default __webpack_public_path__ + \"static/media/Exec_time.3e431611.svg\";","export default __webpack_public_path__ + \"static/media/gavel.97f5faeb.svg\";","export default __webpack_public_path__ + \"static/media/time.be542a01.svg\";","export default __webpack_public_path__ + \"static/media/Purple-exec-plus-corp.9456c0b9.svg\";","export default __webpack_public_path__ + \"static/media/icon_money.9a3c3c85.svg\";","export default __webpack_public_path__ + \"static/media/plus.33c085dd.svg\";","export default __webpack_public_path__ + \"static/media/Purple-Exec-Corp.0b1f2069.svg\";","export default __webpack_public_path__ + \"static/media/ProcompLogo_grey.9df341d1.svg\";","export default __webpack_public_path__ + \"static/media/Arrow-45-money.6dc23076.svg\";","export default __webpack_public_path__ + \"static/media/Arrow-curved.0c462db2.svg\";","export default __webpack_public_path__ + \"static/media/arrow-curved-long.5e0ae3f6.svg\";","export default __webpack_public_path__ + \"static/media/arrow-straight-small.d35f3802.svg\";","export default __webpack_public_path__ + \"static/media/Arrow-straight-money.0f2001e1.svg\";","export default __webpack_public_path__ + \"static/media/Arrow-straight.374f7cf4.svg\";","export default __webpack_public_path__ + \"static/media/ProcompLogo_magenta.bae45850.svg\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/Plant-book.4ecd55bc.png\";","export default __webpack_public_path__ + \"static/media/Scenario-window.d0135816.png\";","export default __webpack_public_path__ + \"static/media/calculator.4e6cb1b8.svg\";","export default __webpack_public_path__ + \"static/media/icon-print.f5dd47cc.svg\";","export default __webpack_public_path__ + \"static/media/icon-save.4610711d.svg\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABUCAYAAAAVgLC7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAF8WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NzUzLCAyMDIxLzAyLzE1LTExOjUyOjEzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTA0LTEyVDA4OjU0OjM1LTA0OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wNC0xMlQwODo1ODo0MS0wNDowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wNC0xMlQwODo1ODo0MS0wNDowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3OTc4NGQ5ZC1mN2I2LTVhNDktOWQzOS1kMmNmMzNmNTU5MDAiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDphMDE5MTM5Ny0zNThhLTMwNGEtOWEyMC04NzQ3MjRlZmU0NWQiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2M2M2YjAwZS1kOGZkLWZkNDItYWE5OC05NDU2NDk3Nzg4M2EiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzYzZiMDBlLWQ4ZmQtZmQ0Mi1hYTk4LTk0NTY0OTc3ODgzYSIgc3RFdnQ6d2hlbj0iMjAyMS0wNC0xMlQwODo1NDozNS0wNDowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo3OTc4NGQ5ZC1mN2I2LTVhNDktOWQzOS1kMmNmMzNmNTU5MDAiIHN0RXZ0OndoZW49IjIwMjEtMDQtMTJUMDg6NTg6NDEtMDQ6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4zIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6OtJ7WAAAK9klEQVR4nO2ce5AcRR3HP7N3fAMSAgoh4RmBAKHAB1i8DM8Eg0YQqyghaIKFUmKgKKBQg0RAwIASeakgSlmGt6IESkEhhEABEt6VQgJJSCDyCiivGF73k7v1j569m+vpud2d3dm7JXyqpmqnp6f7d7/r7un+9a9/0aYXzQWAchmiiFYiqQRsH19j42tzYHjiKgFvx9c7wH+A5fH1DLDMzN5rqeAJOnt/tUh5knYGJgITgP2BjRosskvSQmABcBfwkJl1N1hmzUS9LbBAJG0BfAM4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\"","export default __webpack_public_path__ + \"static/media/Illustration-Magic.57ac7aac.svg\";","export default __webpack_public_path__ + \"static/media/illustration-dino.18acb110.png\";","export default __webpack_public_path__ + \"static/media/drag-icon.601b68f9.svg\";","import {styleTypes} from './constants';\r\nimport axios from 'axios';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport {globalVariables, toProperCase} from 'core/utils/util';\r\nimport {getCoverageItemByRiderType, getCoverageItemByType, getDisabilityItem, getCoverageByID, PCRound} from 'core/utils/calcUtils';\r\nimport {\r\n PolicyTypes,\r\n RiderTypes,\r\n CoverageTypes,\r\n COITypes,\r\n BillingMethodTypes,\r\n PayoutInsuredTypes,\r\n FundTypes,\r\n CstatCode,\r\n DividendPayoutTypes,\r\n SpouseContributorTypes,\r\n PayoutTypes,\r\n DBOptionTypes,\r\n PartyTypes,\r\n} from 'core/constants/calcConstants';\r\nimport {\r\n formatDollar,\r\n Format5Decimals,\r\n formatAllocationPercent,\r\n formatInterestRate,\r\n format_Display_Date,\r\n format_Display_Date_Short,\r\n format_Display_Date_Object,\r\n TextLookup_SubTable1,\r\n TextLookup_SubTable2,\r\n TextLookup_SubTable3,\r\n TextLookup_SubTable4,\r\n TextLookup_ProductName,\r\n Translate_RRIF_Code,\r\n TextLookup_PayoutFrequency,\r\n TextLookup_PayoutMethodCode,\r\n formatIsAmountAboveZero,\r\n Translate_NextPaymentDate,\r\n TextLookup_PayoutType,\r\n IsProdIDFlexLife2,\r\n TextLookup_AccountType,\r\n TextLookup_PolicyName,\r\n TextLookup_Sex,\r\n TextLookup_SmokeClass,\r\n TextLookup_PremiumModePolicy,\r\n TextLookup_PolicyCStatCode,\r\n TextLookup_NFOption,\r\n TextLookup_DividendPayout,\r\n isProductHealth,\r\n Format2Decimals,\r\n FormatnDecimals,\r\n isProdIDSOSBAEndowment,\r\n isProdIDGradedPremium,\r\n isProdIDProPlan,\r\n isPolicyPaidUp,\r\n TextLookup_BeneficiaryCode,\r\n FormatPhoneNumber,\r\n isPlanExcludeHealthMatch,\r\n formatSIN,\r\n fullName,\r\n isInPayout,\r\n isFundLoan,\r\n modalFactor,\r\n calculateAgeFromJan1,\r\n} from 'custom/common/utils/lookupFunctions';\r\n\r\nlet displayArray = [];\r\nlet policyTree = [];\r\nlet treeIndex = 0;\r\nlet globalBgColor = styleTypes.WHITE;\r\nclass Node {\r\n constructor(data, idx) {\r\n this.title = data.title;\r\n this.expanded = data.expanded;\r\n this.id = idx;\r\n this.head = data.head || false;\r\n this.displayStatusType = data.displayStatusType;\r\n this.children = [];\r\n }\r\n}\r\n\r\nclass Tree {\r\n constructor(data) {\r\n data.expanded = true;\r\n this.root = new Node(data, data.id);\r\n }\r\n}\r\nexport async function updateInforce(inforceData, formData) {\r\n let policy = inforceData.policy;\r\n let inforcePolicy = inforceData.inforcePolicy;\r\n console.log('Inside updateInforce');\r\n\r\n if (inforceData.policy.policyType === PolicyTypes.UL) {\r\n policy = await addT10('094', '08U101', 'UL - 2008 Term 10 Rider - Base Insured', formData, policy, false);\r\n inforcePolicy = await addT10('094', '08U101', 'UL - 2008 Term 10 Rider - Base Insured', formData, inforcePolicy, true);\r\n } else {\r\n policy = await addT10('093', '06T101', 'Term 10 - 2006 (Base Insured)', formData, policy, false);\r\n inforcePolicy = await addT10('093', '06T101', 'Term 10 - 2006 (Base Insured)', formData, inforcePolicy, true);\r\n }\r\n\r\n inforceData.policy = policy;\r\n inforceData.inforcePolicy = inforcePolicy;\r\n return inforceData;\r\n}\r\n\r\nasync function addT10(coverageID, planCode, name, formData, aPolicy, isInforce) {\r\n let faceAmount = formData['txtTermRiderFaceAmount'];\r\n let insuredAge = formData['txtTermRiderAge'];\r\n let insuredName = formData['txtTermRiderInsuredName'];\r\n let insuredSex = formData['cboTermRiderSex'];\r\n let insuredSmokingClass = formData['cboTermRiderSmokeClass'];\r\n let insuredRateClass = formData['cboTermRiderRateClass'];\r\n let insuredRatings = formData['chkTermRiderRatings'];\r\n let insuredRating = formData['cboTermRiderRating'];\r\n let insuredFlatExtra = formData['txtTermRiderFlatExtra'];\r\n let insuredFlatExtraDuration = formData['txtTermRiderFlatExtraDuration'];\r\n\r\n let strInforce = '';\r\n if (isInforce) {\r\n strInforce = ' inforce';\r\n }\r\n console.log('In addT10');\r\n console.log(strInforce + ' policy at start of AddT10', aPolicy);\r\n let baseCoverage = aPolicy.coverages[0];\r\n\r\n let coverage = cloneDeep(baseCoverage); //first clone baseCoverage so that all of the fields are there then overwrite the ones we want\r\n coverage.isActive = true;\r\n coverage.coverageID = coverageID;\r\n coverage.parentCoverageID = '001';\r\n coverage.displayStatusType = 1; //Shows that this coverage was added through add T10\r\n\r\n coverage.planCode = planCode;\r\n coverage.prodID = aPolicy.prodID;\r\n\r\n coverage.issueDate = aPolicy.illustrationDate;\r\n coverage.issueAge = insuredAge;\r\n\r\n coverage.name = name;\r\n //coverage.Name = TextLookup_PolicyName(coverage.planCode);\r\n\r\n coverage.meRating = insuredRating;\r\n coverage.coiType = COITypes.YRT;\r\n\r\n coverage.unitValue = 1000;\r\n coverage.units = faceAmount / coverage.unitValue;\r\n coverage.faceAmount = faceAmount;\r\n coverage.initialFaceAmount = coverage.faceAmount;\r\n coverage.meRatingDuration = coverage.expiryDuration;\r\n coverage.meRatingExpiryDate = coverage.expiryDate;\r\n coverage.flatExtraDuration = insuredFlatExtraDuration;\r\n coverage.flatExtra = insuredFlatExtra;\r\n coverage.isUseRatings = insuredRatings;\r\n\r\n coverage.issuedUnits = coverage.units;\r\n coverage.issuedUnitValue = coverage.unitValue;\r\n coverage.issuedFaceAmount = coverage.faceAmount;\r\n\r\n coverage.premiumPayMode = baseCoverage.premiumPayMode;\r\n coverage.premiumMode = baseCoverage.premiumMode;\r\n\r\n let insured = coverage.insureds[0];\r\n //insured = cloneDeep(baseCoverage.insured);\r\n //insured.attainedAge = baseCoverage.insured.attainedAge;\r\n //insured.category = baseCoverage.insured.category;\r\n //insured.clientID = baseCoverage.insured.clientID;\r\n //insured.duration = baseCoverage.insured.duration;\r\n //insured.gender = baseCoverage.insured.gender;\r\n //insured.insuredType = baseCoverage.insured.insuredType;\r\n insured.issueAge = insuredAge;\r\n insured.rateClass = insuredRateClass;\r\n if (insured.rateClass === '') {\r\n insured.rateClass = 'S';\r\n //} else {\r\n // insured.rateClass = baseCoverage.insured.rateClass;\r\n }\r\n\r\n //insured.smokeClass = baseCoverage.insured.smokeClass;\r\n insured.smokeClass = insuredSmokingClass;\r\n insured.gender = insuredSex;\r\n insured.name = insuredName;\r\n insured.firstName = '';\r\n insured.lastName = '';\r\n\r\n //if ((baseCoverage.insured.smokeClass === \"C\") || (baseCoverage.insured.smokeClass === \"\")) {\r\n // insured.smokeClass = \"N\";\r\n //} else {\r\n // insured.smokeClass = baseCoverage.insured.smokeClass;\r\n //}\r\n\r\n //if (isInforce) {\r\n //insured.sIN = baseCoverage.insured.sIN;\r\n //}\r\n\r\n coverage.insured = insured;\r\n //let insureds = [];\r\n //insureds.push(insured);\r\n //coverage.insureds = insureds;\r\n\r\n coverage.premiumRateData = null;\r\n coverage.maxPremiumRateData = null;\r\n coverage.cashValueRateData = null;\r\n coverage.dividendRateData = null;\r\n coverage.ncpiRateData = null;\r\n coverage.nprRateData = null;\r\n coverage.coiyrtRateData = null;\r\n coverage.coiLevelRateData = null;\r\n coverage.etpyrtRateData = null;\r\n coverage.etpLevelRateData = null;\r\n coverage.rpuRateData = null;\r\n coverage.policyFeeRateData = null;\r\n coverage.surrenderChargeRateData = null;\r\n coverage.guaranteedCOIRateData = null;\r\n coverage.meRateData = null;\r\n coverage.deathBenefitRateData = null;\r\n\r\n let funds = [];\r\n coverage.funds = funds;\r\n\r\n //We do not want to clear out all coverages\r\n //for now we will keep waiver if it exists\r\n let coverages = [];\r\n globalVariables.isAddRiderWP = false;\r\n for (let aCoverageItem of coverage.coverages) {\r\n if (aCoverageItem.coverageType === CoverageTypes.BENEFIT && aCoverageItem.riderType === RiderTypes.WAIVER) {\r\n let newCoverage = cloneDeep(aCoverageItem);\r\n globalVariables.isAddRiderWP = true;\r\n newCoverage.issueDate = coverage.issueDate;\r\n newCoverage.planCode = coverage.planCode;\r\n newCoverage.prodID = coverage.prodID;\r\n\r\n let newInsured = newCoverage.insureds[0];\r\n newInsured = coverage.insured;\r\n\r\n //newInsured.issueAge = insuredAge;\r\n //newInsured.rateClass = insuredRateClass;\r\n //if (newInsured.rateClass === \"\") {\r\n // newInsured.rateClass = \"S\";\r\n //}\r\n\r\n //newInsured.smokeClass = insuredSmokingClass;\r\n //newInsured.gender = insuredSex;\r\n newCoverage.insured = newInsured;\r\n\r\n newCoverage.premiumRateData = null;\r\n newCoverage.maxPremiumRateData = null;\r\n newCoverage.cashValueRateData = null;\r\n newCoverage.dividendRateData = null;\r\n newCoverage.ncpiRateData = null;\r\n newCoverage.nprRateData = null;\r\n newCoverage.coiyrtRateData = null;\r\n newCoverage.coiLevelRateData = null;\r\n newCoverage.etpyrtRateData = null;\r\n newCoverage.etpLevelRateData = null;\r\n newCoverage.rpuRateData = null;\r\n newCoverage.policyFeeRateData = null;\r\n newCoverage.surrenderChargeRateData = null;\r\n newCoverage.guaranteedCOIRateData = null;\r\n newCoverage.meRateData = null;\r\n newCoverage.deathBenefitRateData = null;\r\n newCoverage.insured = newInsured;\r\n coverages.push(newCoverage);\r\n }\r\n }\r\n\r\n coverage.coverages = coverages;\r\n\r\n let productSetup = {};\r\n productSetup.name = 'T10';\r\n productSetup.PolicyType = 'None';\r\n\r\n let fundItems = [];\r\n productSetup.fundItems = fundItems;\r\n\r\n coverage.productSetup = productSetup;\r\n if (!isInforce) {\r\n //-------- RUN GET SETUP --------------\r\n console.log('before runGetSetup');\r\n coverage = await runGetSetup(coverage);\r\n console.log('after runGetSetup');\r\n }\r\n //--------------------------------------\r\n\r\n if (isInforce) {\r\n coverage.coverageType = CoverageTypes.RIDER;\r\n coverage.riderType = RiderTypes.TERM;\r\n coverage.insured = splitName(coverage.insured, insuredName);\r\n coverage.insureds[0] = splitName(coverage.insureds[0], insuredName);\r\n fillInforceCoverage(coverage, baseCoverage);\r\n for (let aCoverageItem of coverage.coverages) {\r\n fillInforceCoverage(aCoverageItem, baseCoverage);\r\n aCoverageItem.insured = splitName(aCoverageItem.insured, insuredName);\r\n aCoverageItem.insureds[0] = splitName(aCoverageItem.insureds[0], insuredName);\r\n }\r\n } else {\r\n //----- Handle coverageLayers ----- \r\n let coverageLayers = [];\r\n console.log('coverage layer 1');\r\n console.log('coverage.coverageLayers', coverage.coverageLayers);\r\n if (coverage.coverageLayers === null) {\r\n console.log('coverage layer null');\r\n } else {\r\n console.log('coverage layer 2');\r\n if (coverage.coverageLayers.length > 0) {\r\n console.log('coverage layer 3');\r\n console.log('coverage.coverageLayers[0] = ', coverage.coverageLayers[0]);\r\n let newCoverageLayer = cloneDeep(coverage.coverageLayers[0]);\r\n newCoverageLayer.coverageID = coverageID;\r\n newCoverageLayer.coverageLayerType = 1;\r\n newCoverageLayer.faceAmount = faceAmount;\r\n newCoverageLayer.etpFaceAmount = faceAmount;\r\n newCoverageLayer.basisDate = coverage.issueDate;\r\n newCoverageLayer.durationStart = 1;\r\n newCoverageLayer.etpyrtRateData.insured = coverage.insured;\r\n newCoverageLayer.etpLevelRateData.insured = coverage.insured;\r\n newCoverageLayer.insured = coverage.insured;\r\n coverageLayers.push(newCoverageLayer);\r\n coverage.coverageLayers = coverageLayers;\r\n }\r\n console.log('coverage layer 4');\r\n }\r\n console.log('coverage layer 5');\r\n }\r\n\r\n let illustrationDate = new Date(aPolicy.illustrationDate);\r\n let issueDate = new Date(coverage.issueDate);\r\n\r\n coverage.expiryDate = new Date(\r\n issueDate.getFullYear() + coverage.expiryAge - coverage.insured.attainedAge,\r\n issueDate.getMonth(),\r\n issueDate.getDate()\r\n );\r\n //coverage.expiryDate = DateAdd(DateInterval.Year, coverage.expiryAge - coverage.insured.attainedAge, coverage.IssueDate)\r\n\r\n //-----------CalculateDurationInformation\r\n //Need to consider off-anniversary policies\r\n\r\n if (illustrationDate.getMonth() === issueDate.getMonth()) {\r\n coverage.durationStart = illustrationDate.getFullYear() - issueDate.getFullYear() + 1;\r\n } else {\r\n //Use the Calculate Age Last method to get the Duration Start for off-anniversary policies\r\n coverage.durationStart = illustrationDate.getFullYear() - issueDate.getFullYear() + 1;\r\n //coverage.durationStart = CalcAge(aCoverageItem.IssueDate, aPolicy.IllustrationDate, -1) + 1\r\n }\r\n\r\n //This is the expiry Duration assuming the illustration date is duration 1\r\n coverage.expiryDuration = coverage.expiryDate.getFullYear() - issueDate.getFullYear() + 1 - coverage.durationStart;\r\n coverage.expiryAge = coverage.issueAge + coverage.expiryDate.getFullYear() - issueDate.getFullYear();\r\n console.log('AdT10 coverage', coverage);\r\n aPolicy.coverages.push(coverage);\r\n console.log(strInforce + 'policy at end of AddT10', aPolicy);\r\n return aPolicy;\r\n}\r\n\r\nfunction fillInforceCoverage(coverage, baseCoverage) {\r\n coverage.displayStatusType = 1; //Shows that this coverage was added through add T10\r\n coverage.insured.currentAttainedAge = coverage.insured.attainedAge;\r\n coverage.insureds[0].currentAttainedAge = coverage.insureds[0].attainedAge;\r\n coverage.premCoverage = 0;\r\n coverage.premFlatExtra = 0;\r\n coverage.premMultipleExtra = 0;\r\n coverage.policyFee = 0;\r\n coverage.premWaiver = 0;\r\n coverage.premADB = 0;\r\n coverage.premAnnual = 0;\r\n coverage.cashValue = 0;\r\n coverage.modePremiumAmount = 0;\r\n\r\n coverage.beneficiaries = baseCoverage.beneficiaries;\r\n coverage.coverageStatus = 'Active Coverage';\r\n}\r\n\r\nfunction splitName(insured, name) {\r\n let nameArr = name.split(' ');\r\n insured.name = name;\r\n insured.middleName = '';\r\n\r\n if (nameArr.length > 1) {\r\n insured.lastName = nameArr.pop();\r\n insured.firstName = nameArr.join(' ');\r\n } else {\r\n insured.firstName = nameArr[0];\r\n //insured.lastName = nameArr[nameArr.length - 1];\r\n insured.lastName = '';\r\n }\r\n\r\n // return the copy\r\n return insured;\r\n}\r\n\r\nasync function runGetSetup(coverage) {\r\n console.log('runGetSetup coverage', coverage);\r\n try {\r\n let res = await axios.post('/api/GetCoverageSetup', coverage);\r\n console.log(res.data);\r\n return res.data;\r\n } catch (error) {\r\n if (error.response) {\r\n console.log(error.responderEnd);\r\n }\r\n }\r\n}\r\n\r\nexport function populateTree(inforcePolicy, t) {\r\n let data = {};\r\n data.title = '';\r\n data.id = 1;\r\n data.displayStatusType = 0;\r\n treeIndex = 0;\r\n let tree = new Tree(data);\r\n displayArray = [];\r\n policyTree = [];\r\n treeIndex++;\r\n switch (inforcePolicy.policyType) {\r\n case PolicyTypes.WholeLife:\r\n case PolicyTypes.DecreasingIncreasingTerm:\r\n case PolicyTypes.Endowment:\r\n case PolicyTypes.Enhanced:\r\n case PolicyTypes.LevelTerm:\r\n case PolicyTypes.PaidUpLife:\r\n case PolicyTypes.TermWithCV:\r\n case PolicyTypes.Disability:\r\n case PolicyTypes.CriticalIllness:\r\n addParLifeOwnerBranch(inforcePolicy, tree.root, t);\r\n break;\r\n case PolicyTypes.UL:\r\n addParLifeOwnerBranch(inforcePolicy, tree.root, t);\r\n break;\r\n case PolicyTypes.DeferredAnnuity:\r\n case PolicyTypes.ImmediateAnnuity:\r\n addParLifeOwnerBranch(inforcePolicy, tree.root, t);\r\n break;\r\n case PolicyTypes.RRIF:\r\n case PolicyTypes.ESA_ISA:\r\n addFundOwnerBranch(inforcePolicy, tree.root, t);\r\n break;\r\n case PolicyTypes.SegregatedFund:\r\n case PolicyTypes.SegregatedFundRRIF:\r\n addSegFundOwnerBranch(inforcePolicy, tree.root, t);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n treeIndex++;\r\n addClientBranch(inforcePolicy, tree.root, t);\r\n treeIndex++;\r\n\r\n switch (inforcePolicy.policyType) {\r\n case PolicyTypes.WholeLife:\r\n case PolicyTypes.DecreasingIncreasingTerm:\r\n case PolicyTypes.Endowment:\r\n case PolicyTypes.Enhanced:\r\n case PolicyTypes.LevelTerm:\r\n case PolicyTypes.PaidUpLife:\r\n case PolicyTypes.TermWithCV:\r\n case PolicyTypes.Disability:\r\n case PolicyTypes.CriticalIllness:\r\n addParLifeBranches(inforcePolicy, tree.root, t);\r\n break;\r\n case PolicyTypes.UL:\r\n addULLifeBranches(inforcePolicy, tree.root, t);\r\n break;\r\n case PolicyTypes.DeferredAnnuity:\r\n case PolicyTypes.ImmediateAnnuity:\r\n addParLifeBranches(inforcePolicy, tree.root, t);\r\n break;\r\n case PolicyTypes.ESA_ISA:\r\n case PolicyTypes.SegregatedFund:\r\n addFundBranches(inforcePolicy, tree.root, t);\r\n break;\r\n case PolicyTypes.RRIF:\r\n case PolicyTypes.SegregatedFundRRIF:\r\n addFundBranches(inforcePolicy, tree.root, t);\r\n addPayoutHeaderBranch(inforcePolicy, tree.root, t);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n policyTree.push(tree.root);\r\n return {policyTree, displayArray};\r\n}\r\nfunction addPayoutHeaderBranch(inforcePolicy, parentNode, t) {\r\n let data = {};\r\n data.expanded = true;\r\n data.head = true;\r\n let node;\r\n let strRRIFCode = Translate_RRIF_Code(inforcePolicy.prodID);\r\n data.title = TextLookup_ProductName(strRRIFCode, t);\r\n node = new Node(data, treeIndex);\r\n parentNode.children.push(node);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n addPayoutBranch(inforcePolicy, node, t);\r\n treeIndex++;\r\n}\r\nfunction addPayoutBranch(inforcePolicy, parentNode, t) {\r\n let data = {};\r\n data.expanded = true;\r\n data.title = t('Payout Information');\r\n let node = new Node(data, treeIndex);\r\n let insuredItem = inforcePolicy.insured;\r\n let policyOwner = inforcePolicy.owners[0];\r\n let display = [];\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n let insuredPolicyPayor = '';\r\n parentNode.children.push(node);\r\n globalBgColor = styleTypes.WHITE;\r\n if (inforcePolicy.fundsLockedIn) {\r\n display.push([t('LIF Information'), '', styleTypes.HEAD]);\r\n } else {\r\n display.push([t('RRIF Information'), '', styleTypes.HEAD]);\r\n }\r\n display.push([t('Plan Name'), baseCoverageItem.name, styleTypes.BOLD + getCurrentBgColor()]);\r\n display.push([t('Plan Identification'), baseCoverageItem.planCode, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Issue Date'), format_Display_Date(inforcePolicy.issueDate), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Payout Frequency'), TextLookup_PayoutFrequency(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n if (inforcePolicy.payoutMethod === BillingMethodTypes.EFT) {\r\n display.push([\r\n t('Payout Method'),\r\n toProperCase(TextLookup_PayoutMethodCode(inforcePolicy.payoutMethodCode, t)),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n\r\n if (inforcePolicy.payor) {\r\n insuredPolicyPayor = inforcePolicy.payor;\r\n } else {\r\n insuredPolicyPayor = policyOwner;\r\n }\r\n display.push([t('Bank Deposit Information'), `${insuredPolicyPayor.bankName} ${insuredPolicyPayor.bankNo}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n '',\r\n ` ${t('Branch')} ${insuredPolicyPayor.bankBranchNo} ${t('PCA Acct')} ${insuredPolicyPayor.bankAccountNo} `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push(['', ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n } else {\r\n display.push([\r\n t('Payout Method'),\r\n toProperCase(TextLookup_PayoutMethodCode(inforcePolicy.payoutMethodCode, t)),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n console.log(`t(\"Gross Payout Amount\") = ${t('Gross Payout Amount')}`);\r\n display.push([\r\n t('Gross Payout Amount'),\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n `${formatDollar(inforcePolicy.annualPayoutAmount)} (${t('Annualized')} ${formatDollar(\r\n inforcePolicy.annualPayoutAmount * modalFactor(inforcePolicy.annualPayoutMode)\r\n )})`\r\n ),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Tax Withheld'), formatDollar(inforcePolicy.payoutTaxWithheld), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Tax Calculation Percent'),\r\n formatAllocationPercent(inforcePolicy.payoutTaxCalculationPercent / 100),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Additional Tax Withheld'), formatDollar(inforcePolicy.payoutAdditionalTaxWithheld), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Net Payout Amount'),\r\n `${formatDollar(inforcePolicy.annualPayoutAmount - inforcePolicy.payoutTaxWithheld - inforcePolicy.payoutAdditionalTaxWithheld)} (${t(\r\n 'Annualized'\r\n )} ${formatDollar(\r\n (inforcePolicy.annualPayoutAmount - inforcePolicy.payoutTaxWithheld - inforcePolicy.payoutAdditionalTaxWithheld) *\r\n modalFactor(inforcePolicy.annualPayoutMode)\r\n )})`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Next Payment Date'),\r\n Translate_NextPaymentDate(inforcePolicy.payoutPaymentDate, inforcePolicy.payoutEffectiveDate, inforcePolicy.currentDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n\r\n let intAge = calculateAgeFromJan1(inforcePolicy.payoutInsured, inforcePolicy.currentDate);\r\n\r\n if (inforcePolicy.payoutInsuredType === PayoutInsuredTypes.Annuitant) {\r\n display.push([t('Minimum Payout Based On'), `${t('Annuitant')}, aged ${intAge.toString()}`, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Minimum Payout Based On'), `${t('Spouse, aged')} ${intAge.toString()}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n\r\n display.push([t('Payout Type'), TextLookup_PayoutType(inforcePolicy.payoutType, t), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Minimum Payout this Year'), formatDollar(inforcePolicy.minPayoutThisYear), styleTypes.BOLD + toggleBgColor()]);\r\n if (inforcePolicy.fundsLockedIn) {\r\n if (inforcePolicy.maxPayoutThisYear < 100000 && inforcePolicy.maxPayoutThisYear > 0) {\r\n display.push([t('Maximum Payout this Year'), formatDollar(inforcePolicy.maxPayoutThisYear), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Maximum Payout this Year'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display.push([t('Funds are Locked In'), t('Yes'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Funds are Locked In'), t('No'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n if (inforcePolicy.isActive) {\r\n display.push([t('Maturity/Expiry Date'), format_Display_Date(inforcePolicy.expiryDate), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Maturity/Expiry Date'), format_Display_Date(inforcePolicy.terminatedDate), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n displayArray[treeIndex] = display;\r\n}\r\nfunction addParLifeBranches(inforcePolicy, parentNode, t) {\r\n addBasicCoverageBranch(inforcePolicy, parentNode, t);\r\n addTermRidersBranch(inforcePolicy, parentNode, t);\r\n addUnembeddedSupplementaryBenefitsBranch(inforcePolicy, parentNode, t);\r\n}\r\nfunction addULLifeBranches(inforcePolicy, parentNode, t) {\r\n addBasicCoverageBranch(inforcePolicy, parentNode, t);\r\n addULIncreaseRidersBranch(inforcePolicy, parentNode, t);\r\n addTermRidersBranch(inforcePolicy, parentNode, t);\r\n addUnembeddedSupplementaryBenefitsBranch(inforcePolicy, parentNode, t);\r\n\r\n if (IsProdIDFlexLife2(inforcePolicy.prodID)) {\r\n addDIABranch1(inforcePolicy, parentNode, TextLookup_AccountType('DIA', t), t);\r\n addSegFundBranch1(inforcePolicy, parentNode, TextLookup_AccountType('SEGFUND', t), t);\r\n addGIABranch1(inforcePolicy, parentNode, TextLookup_AccountType('GIA', t), t);\r\n if (inforcePolicy.isLoanOnPolicy) {\r\n addLoanBranch(inforcePolicy, parentNode, t('Loan Collateral Fund'), t);\r\n }\r\n }\r\n}\r\n\r\nfunction addFundBranches(inforcePolicy, parentNode, t) {\r\n if (inforcePolicy.policyType === PolicyTypes.SegregatedFund || inforcePolicy.policyType === PolicyTypes.SegregatedFundRRIF) {\r\n addSegFundBranch(inforcePolicy, parentNode, t);\r\n } else {\r\n addDIABranch(inforcePolicy, parentNode, t);\r\n addGIABranch(inforcePolicy, parentNode, t);\r\n }\r\n}\r\nfunction addDIABranch(inforcePolicy, parentNode, t) {\r\n addDIABranch1(inforcePolicy, parentNode, TextLookup_PolicyName(inforcePolicy.planCode, t), t);\r\n}\r\n//Doubt\r\nfunction addDIABranch1(inforcePolicy, parentNode, strNodeText, t) {\r\n let data = {};\r\n data.expanded = true;\r\n if (isInPayout(inforcePolicy)) {\r\n data.title = strNodeText + t('(In Payout)');\r\n } else {\r\n data.title = strNodeText;\r\n }\r\n let fundCoverageNode;\r\n let node = new Node(data, treeIndex);\r\n parentNode.children.push(node);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n if (!isInPayout(inforcePolicy)) {\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n for (let fundItem of baseCoverageItem.funds) {\r\n if (fundItem.isActive && fundItem.fundType === FundTypes.DIA && !isFundLoan(fundItem.fundID)) {\r\n fundCoverageNode = addFundBranch(inforcePolicy, baseCoverageItem, fundItem, node, t);\r\n treeIndex++;\r\n }\r\n }\r\n }\r\n}\r\nfunction addGIABranch(inforcePolicy, parentNode, t) {\r\n let strText;\r\n if (inforcePolicy.policyType === PolicyTypes.RRIF) {\r\n strText = t('GIA - RRIF');\r\n } else {\r\n strText = t('GIA - ISA');\r\n }\r\n addGIABranch1(inforcePolicy, parentNode, strText, t);\r\n}\r\nfunction addGIABranch1(inforcePolicy, parentNode, strNodeText, t) {\r\n let data = {};\r\n data.expanded = true;\r\n data.title = strNodeText;\r\n let node = new Node(data, treeIndex);\r\n let fundCoverageNode;\r\n let policyOwner = inforcePolicy.owners[0];\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n parentNode.children.push(node);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n for (let fundItem of baseCoverageItem.funds) {\r\n if (fundItem.isActive && fundItem.fundType === FundTypes.GIA) {\r\n fundCoverageNode = addFundBranch(inforcePolicy, baseCoverageItem, fundItem, node, t);\r\n treeIndex++;\r\n }\r\n }\r\n}\r\nfunction addLoanBranch(inforcePolicy, parentNode, strNodeText, t) {\r\n let data = {};\r\n data.expanded = true;\r\n data.title = strNodeText;\r\n let fundCoverageNode;\r\n let termRidersNode = new Node(data, treeIndex);\r\n parentNode.children.push(termRidersNode);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n\r\n for (let fundItem of baseCoverageItem.funds) {\r\n if (fundItem.isActive && fundItem.fundType === FundTypes.DIA && isFundLoan(fundItem.fundID)) {\r\n fundCoverageNode = addFundBranch(inforcePolicy, baseCoverageItem, fundItem, termRidersNode, t);\r\n treeIndex++;\r\n }\r\n }\r\n}\r\nfunction addSegFundBranch(inforcePolicy, parentNode, t) {\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n addSegFundBranch1(inforcePolicy, parentNode, TextLookup_ProductName(baseCoverageItem.planCode, t), t);\r\n //addSegFundBranch1(inforcePolicy, parentNode, baseCoverageItem.productSetup.name, t);\r\n}\r\nfunction addSegFundBranch1(inforcePolicy, parentNode, strNodeText, t) {\r\n let data = {};\r\n let fundCoverageNode;\r\n data.expanded = true;\r\n data.head = true;\r\n if (isInPayout(inforcePolicy)) {\r\n data.title = strNodeText + t('(In Payout)');\r\n } else {\r\n data.title = strNodeText;\r\n }\r\n let termRidersNode = new Node(data, treeIndex);\r\n parentNode.children.push(termRidersNode);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n if (inforcePolicy.isActive) {\r\n for (let fundItem of baseCoverageItem.funds) {\r\n if (fundItem.isActive && fundItem.fundType === FundTypes.SegFund) {\r\n fundCoverageNode = addSegFundBranch2(inforcePolicy, baseCoverageItem, fundItem, termRidersNode, t);\r\n treeIndex++;\r\n }\r\n }\r\n }\r\n}\r\nfunction addFundBranch(inforcePolicy, baseCoverageItem, fundItem, parentNode, t) {\r\n let display = [];\r\n let insuredItem = baseCoverageItem.insured;\r\n globalBgColor = styleTypes.WHITE;\r\n display.push([t('Deposit Information'), '', styleTypes.HEAD]);\r\n //display.push([\"\", \"\", styleTypes.BOLD+styleTypes.WHITE]);\r\n display.push([t('Deposit Type'), fundItem.fundName, styleTypes.BOLD + getCurrentBgColor()]);\r\n display.push([t('Deposit Identification'), fundItem.fundID, styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n display.push([`${t('Annuitant')}:`, `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`, styleTypes.BOLD + toggleBgColor()]);\r\n if (fundItem.fundType === FundTypes.DIA) {\r\n display.push([t('Deposit Date'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Deposit Age'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Deposit Date'), format_Display_Date(fundItem.interestStartDate), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Deposit Age'), fundItem.depositAge.toString(), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display.push([t('Sex'), TextLookup_Sex(insuredItem.gender, t), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Smoker Status'),\r\n TextLookup_SmokeClass(formatSmokeClass(insuredItem.smokeClass, insuredItem.issueAge), t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Sub Table 1'), '', styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sub Table 2'), '', styleTypes.BOLD + toggleBgColor()]);\r\n if (fundItem.fundType === FundTypes.DIA) {\r\n display.push([t('Cvg Attained Age'), insuredItem.currentAttainedAge.toString(), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Cvg Attained Age'), insuredItem.attainedAge.toString(), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n if (fundItem.fundType === FundTypes.DIA) {\r\n display.push([t('Deposit Term'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Current Interest Rate'), formatInterestRate(fundItem.interestRate), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Deposit Amount'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Current Value'), formatDollar(fundItem.currentFundValue), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Maturity Value'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Maturity Date'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Deposit Term'), `${fundItem.depositTerm.toString()} ${t('months')}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Guaranteed Interest Rate'), formatAllocationPercent(fundItem.interestRate * 100), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Deposit Amount'), formatDollar(fundItem.depositAmount), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Current Value'),\r\n `${formatDollar(fundItem.fundValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Mkt Value Adjust')} ${formatDollar(fundItem.mva)}`,\r\n ]);\r\n display.push([t('Maturity Value'), formatDollar(fundItem.maturityValue), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Maturity Date'), format_Display_Date(fundItem.maturityDate), styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n display.push([t('Reinvestment Instructions'), t(fundItem.reInvestmentInstructions), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n let data = {};\r\n data.expanded = true;\r\n if (fundItem.fundType === FundTypes.DIA) {\r\n data.title = `${t('Value')} ${formatDollar(fundItem.currentFundValue)} ${t('Current Rate')} ${formatInterestRate(fundItem.interestRate)}`;\r\n } else {\r\n data.title = `${formatDollar(fundItem.fundValue)}, ${formatInterestRate(fundItem.interestRate)} ${t(\r\n '(C) Matures'\r\n )} ${format_Display_Date_Short(fundItem.maturityDate)}`;\r\n }\r\n parentNode.children.push(new Node(data, treeIndex));\r\n displayArray[treeIndex] = display;\r\n}\r\n\r\nfunction addSegFundBranch2(inforcePolicy, baseCoverageItem, fundItem, parentNode, t) {\r\n let data = {};\r\n data.expanded = true;\r\n data.title = t(fundItem.fundName);\r\n let owner = inforcePolicy.owners[0];\r\n parentNode.children.push(new Node(data, treeIndex));\r\n let display = [];\r\n let insuredItem = baseCoverageItem.insured;\r\n globalBgColor = styleTypes.WHITE;\r\n display.push([t('Segregated Fund Information'), '', styleTypes.HEAD]);\r\n //display.push([\"\", \"\", styleTypes.BOLD + styleTypes.WHITE]);\r\n display.push([t('Fund Name'), fundItem.fundName, styleTypes.BOLD + getCurrentBgColor()]);\r\n display.push([t('Fund Identification'), fundItem.fundID, styleTypes.BOLD + getCurrentBgColor()]);\r\n if (inforcePolicy.policyType === PolicyTypes.SegregatedFund || inforcePolicy.policyType === PolicyTypes.UL) {\r\n display.push([\r\n t('Deposit Allocation'),\r\n `${formatAllocationPercent(fundItem.depositAllocation.allocationPercent)} ${t('to this fund')}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Payout Allocation'),\r\n `${formatAllocationPercent(fundItem.withdrawalAllocation.allocationPercent)} ${t('from this fund')}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n display.push([`${t('Annuitant')}:`, `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sex'), TextLookup_Sex(insuredItem.gender, t), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Smoker Status'),\r\n TextLookup_SmokeClass(formatSmokeClass(insuredItem.smokeClass, insuredItem.issueAge), t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Sub Table 1'), '', styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sub Table 2'), '', styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Cvg Attained Age'), insuredItem.currentAttainedAge.toString(), styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n\r\n display.push([t('Fund Valuation Date'), format_Display_Date(inforcePolicy.currentDate), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Number of Units Held'), FormatnDecimals(fundItem.units, 4), styleTypes.BOLD + toggleBgColor()]); //format fundItem.units\r\n display.push([t('Unit Value'), '$' + FormatnDecimals(fundItem.unitPrice, 4), styleTypes.BOLD + toggleBgColor()]); //formatUnitValue\r\n display.push([t('Current Value'), formatDollar(fundItem.fundValue), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Maturity Date'), format_Display_Date(fundItem.maturityDate), styleTypes.BOLD + toggleBgColor()]);\r\n\r\n displayArray[treeIndex] = display;\r\n}\r\n\r\nfunction addUnembeddedSupplementaryBenefitsBranch(inforcePolicy, parentNode, t) {\r\n let data = {};\r\n let riderRoot = {};\r\n data.expanded = true;\r\n data.head = true;\r\n data.title = t('Supplementary Benefits');\r\n let termRidersNode = new Node(data, treeIndex);\r\n parentNode.children.push(termRidersNode);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n for (let coverageItem of inforcePolicy.coverages) {\r\n switch (coverageItem.riderType) {\r\n case RiderTypes.GPO:\r\n case RiderTypes.PIB:\r\n case RiderTypes.DMB:\r\n case RiderTypes.OTHER:\r\n riderRoot = addBaseCoverageBranch(inforcePolicy, coverageItem, termRidersNode, t);\r\n treeIndex++;\r\n if (coverageItem.riderType === RiderTypes.TERM) {\r\n addRiderCoveragesBranches(inforcePolicy, coverageItem, riderRoot, t);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n for (let coverageItem of baseCoverageItem.coverages) {\r\n switch (coverageItem.riderType) {\r\n case RiderTypes.GPO:\r\n case RiderTypes.PIB:\r\n case RiderTypes.DMB:\r\n case RiderTypes.OTHER:\r\n riderRoot = addBaseCoverageBranch(inforcePolicy, coverageItem, termRidersNode, t);\r\n treeIndex++;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\nfunction addULIncreaseRidersBranch(inforcePolicy, parentNode, t) {\r\n let data = {};\r\n let riderRoot = {};\r\n data.expanded = true;\r\n data.head = true;\r\n data.title = t('U L Coverage Increase Riders');\r\n let termRidersNode = new Node(data, treeIndex);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n parentNode.children.push(termRidersNode);\r\n\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n for (let coverageItem of inforcePolicy.coverages) {\r\n if (coverageItem.riderType === RiderTypes.UL) {\r\n riderRoot = addBaseCoverageBranch(inforcePolicy, coverageItem, termRidersNode, t);\r\n\r\n treeIndex++;\r\n addRiderCoveragesBranches(inforcePolicy, coverageItem, riderRoot, t);\r\n }\r\n }\r\n for (let coverageItem of baseCoverageItem.coverages) {\r\n if (coverageItem.riderType === RiderTypes.UL) {\r\n riderRoot = addBaseCoverageBranch(inforcePolicy, coverageItem, termRidersNode, t);\r\n\r\n treeIndex++;\r\n addRiderCoveragesBranches(inforcePolicy, coverageItem, riderRoot, t);\r\n }\r\n }\r\n}\r\n\r\nfunction addTermRidersBranch(inforcePolicy, parentNode, t) {\r\n let data = {};\r\n let riderRoot = {};\r\n data.expanded = true;\r\n data.head = true;\r\n data.title = t('Term Riders');\r\n let termRidersNode = new Node(data, treeIndex);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n parentNode.children.push(termRidersNode);\r\n\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n for (let coverageItem of inforcePolicy.coverages) {\r\n if (\r\n coverageItem.riderType === RiderTypes.CHILD ||\r\n coverageItem.riderType === RiderTypes.TERM ||\r\n coverageItem.riderType === RiderTypes.AIB ||\r\n coverageItem.riderType === RiderTypes.ADB ||\r\n coverageItem.coverageType === CoverageTypes.OYT\r\n ) {\r\n riderRoot = addBaseCoverageBranch(inforcePolicy, coverageItem, termRidersNode, t);\r\n treeIndex++;\r\n if (coverageItem.riderType === RiderTypes.TERM) {\r\n addRiderCoveragesBranches(inforcePolicy, coverageItem, riderRoot, t);\r\n }\r\n }\r\n }\r\n\r\n for (let coverageItem of baseCoverageItem.coverages) {\r\n if (\r\n coverageItem.riderType === RiderTypes.CHILD ||\r\n coverageItem.riderType === RiderTypes.TERM ||\r\n coverageItem.riderType === RiderTypes.AIB ||\r\n coverageItem.coverageType === CoverageTypes.OYT\r\n ) {\r\n riderRoot = addBaseCoverageBranch(inforcePolicy, coverageItem, termRidersNode, t);\r\n treeIndex++;\r\n if (coverageItem.riderType === RiderTypes.TERM) {\r\n addRiderCoveragesBranches(inforcePolicy, coverageItem, riderRoot, t);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction addBasicCoverageBranch(inforcePolicy, parentNode, t) {\r\n let data = {};\r\n data.expanded = true;\r\n data.head = true;\r\n data.title = t('Basic Coverage');\r\n // data.displayStatusType = 0;\r\n let basicCoverageNode = new Node(data, treeIndex);\r\n displayArray[treeIndex] = [];\r\n treeIndex++;\r\n parentNode.children.push(basicCoverageNode);\r\n\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n let coverageRoot = addBaseCoverageBranch(inforcePolicy, baseCoverageItem, basicCoverageNode, t);\r\n treeIndex++;\r\n addRiderCoveragesBranches(inforcePolicy, baseCoverageItem, coverageRoot, t);\r\n}\r\n//Recurse through coverages to add child coverages\r\nfunction addRiderCoveragesBranches(inforcePolicy, baseCoverageItem, coverageRoot, t) {\r\n let riderNode = {};\r\n for (let coverageItem of baseCoverageItem.coverages) {\r\n if (coverageItem.riderType === RiderTypes.WAIVER || coverageItem.riderType === RiderTypes.ADB) {\r\n riderNode = addRiderCoverageBranch(inforcePolicy, coverageItem, coverageRoot, treeIndex, t);\r\n treeIndex++;\r\n if (coverageItem.coverages.length > 0) {\r\n addRiderCoveragesBranches(inforcePolicy, coverageItem, riderNode, t);\r\n }\r\n }\r\n }\r\n}\r\nfunction addRiderCoverageBranch(inforcePolicy, riderCoverageItem, coverageRoot, treeIndex, t) {\r\n let data = {};\r\n let aParentCoverage;\r\n data.expanded = true;\r\n data.title = t(riderCoverageItem.name) || 'error testing';\r\n data.displayStatusType = riderCoverageItem.displayStatusType;\r\n let node = new Node(data, treeIndex);\r\n let insuredItem = riderCoverageItem.insured;\r\n coverageRoot.children.push(node);\r\n let blnIsWPADBonUL =\r\n (riderCoverageItem.riderType === RiderTypes.WAIVER || riderCoverageItem.riderType === RiderTypes.ADB) &&\r\n inforcePolicy.policyType === PolicyTypes.UL;\r\n let display = [];\r\n globalBgColor = styleTypes.WHITE;\r\n display.push([data.title, '', styleTypes.POLICYTYPE]);\r\n display.push([t('Coverage Information'), '', styleTypes.HEAD]);\r\n //display.push([\"\", \"\", styleTypes.BOLD + styleTypes.WHITE]);\r\n display.push([t('Plan Name'), t(riderCoverageItem.name), styleTypes.BOLD + getCurrentBgColor()]);\r\n aParentCoverage = getCoverageByID(inforcePolicy.coverages, riderCoverageItem.parentCoverageID, '', true);\r\n if (\r\n aParentCoverage /*this is just for running code, else null pointer exception thrown */ &&\r\n riderCoverageItem.planCode === aParentCoverage.planCode // ParentCoverage is null, fix - TODO\r\n ) {\r\n display.push([t('Plan Identification'), t('None'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Plan Identification'), riderCoverageItem.planCode, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display.push([t('Life Insured'), `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Issue Date'), `${format_Display_Date(riderCoverageItem.issueDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Issue Age'), `${insuredItem.issueAge}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sex'), TextLookup_Sex(insuredItem.gender, t), styleTypes.BOLD + toggleBgColor()]); //LOOKUP\r\n display.push([\r\n t('Smoker Status'),\r\n TextLookup_SmokeClass(formatSmokeClass(insuredItem.smokeClass, insuredItem.issueAge), t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Sub Table 1'), `${translateSubTable1(riderCoverageItem, true, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n if (isProductHealth(riderCoverageItem.prodID)) {\r\n display.push([t('Sub Table 2'), `EP: ${translateSubTable2(riderCoverageItem, false, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sub Table 3'), `BP: ${translateSubTable3(riderCoverageItem, false, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sub Table 4'), `${translateSubTable4(riderCoverageItem, false, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n } else if (blnIsWPADBonUL) {\r\n display.push([t('Sub Table 2'), `${translateSubTable2(aParentCoverage, false, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n if (aParentCoverage.riderType === RiderTypes.UL || aParentCoverage.coverageType === CoverageTypes.BASE) {\r\n display.push([t('COI Type'), translateCOIType(aParentCoverage, t), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n }\r\n display.push([t('Death Benefit Type'), translateDeathBenefitType(aParentCoverage, inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n\r\n display.push([t('Cvg Attained Age'), insuredItem.currentAttainedAge, styleTypes.BOLD + toggleBgColor()]);\r\n let blnFirst = true;\r\n let strBeneficiary = '';\r\n let beneficiaryColor = toggleBgColor();\r\n for (let beneficiaryItem of riderCoverageItem.beneficiaries) {\r\n if (blnFirst) {\r\n strBeneficiary = t('Beneficiary');\r\n blnFirst = false;\r\n } else strBeneficiary = '';\r\n display.push([\r\n strBeneficiary,\r\n `${fullName(beneficiaryItem)}, ${t(beneficiaryItem.beneficiaryRelationship)}, ${formatAllocationPercent(beneficiaryItem.beneficiaryPercent)}`,\r\n styleTypes.BOLD + beneficiaryColor,\r\n ]);\r\n }\r\n display.push([t('Cash Value'), formatDollar(0), styleTypes.BOLD + toggleBgColor()]);\r\n\r\n if (riderCoverageItem.productSetup.isUseParentFaceAmount) {\r\n display.push([t('Face Amount'), t('Not Applicable'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Face Amount'), formatDollar(riderCoverageItem.faceAmount), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n let strPremLabel = '';\r\n if (blnIsWPADBonUL) {\r\n strPremLabel = t('Last Monthly COI');\r\n } else {\r\n strPremLabel = `${t('Annual Premium')}:`;\r\n }\r\n if (isCoveragePaidUp(riderCoverageItem)) {\r\n display.push([strPremLabel, t('Not Applicable'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n if (riderCoverageItem.isUseRatings && riderCoverageItem.meRating !== 0) {\r\n display.push([\r\n strPremLabel,\r\n `${formatDollar(riderCoverageItem.premAnnual)} ${Format2Decimals(riderCoverageItem.meRating)} ${t('times standard')}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([strPremLabel, formatDollar(riderCoverageItem.premCoverage), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n }\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n if (blnIsWPADBonUL) {\r\n display.push([t('Expiry Date'), format_Display_Date(riderCoverageItem.expiryDate), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Premium Frequency'), TextLookup_PremiumModePolicy(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n if (isCoveragePaidUp(riderCoverageItem)) {\r\n display.push([t('Mode Premium Amount'), t('Not Applicable'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([\r\n t('Mode Premium Amount'),\r\n `${formatDollar(PCRound(riderCoverageItem.modePremiumAmount, 2))}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Mode Factor')} ${Format5Decimals(riderCoverageItem.modalFactor)}`,\r\n ]);\r\n }\r\n display.push([t('Maturity/Expiry Date'), format_Display_Date(riderCoverageItem.expiryDate), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n\r\n displayArray[treeIndex] = display;\r\n return node;\r\n}\r\n\r\nfunction addBaseCoverageBranch(inforcePolicy, baseCoverageItem, parentNode, t) {\r\n let data = {};\r\n data.expanded = true;\r\n data.title = t(baseCoverageItem.name) || 'error testing';\r\n data.displayStatusType = baseCoverageItem.displayStatusType;\r\n let node = new Node(data, treeIndex);\r\n parentNode.children.push(node);\r\n\r\n let display = [];\r\n let strTempInsuredNames = '';\r\n let insuredItem = {};\r\n let intInsuredMaxAge = 0;\r\n let strBeneficiary = '';\r\n let waiverCoverage = {};\r\n globalBgColor = styleTypes.WHITE;\r\n for (let tempInsuredItem of baseCoverageItem.insureds) {\r\n if (tempInsuredItem.issueAge >= intInsuredMaxAge) {\r\n insuredItem = tempInsuredItem;\r\n intInsuredMaxAge = tempInsuredItem.issueAge;\r\n }\r\n strTempInsuredNames += fullName(tempInsuredItem) + ', ';\r\n }\r\n insuredItem = baseCoverageItem.insured;\r\n\r\n //remove last comma\r\n strTempInsuredNames = strTempInsuredNames.substring(0, strTempInsuredNames.length - 2);\r\n display.push([data.title, '', styleTypes.POLICYTYPE]);\r\n display.push([t('Coverage Information'), '', styleTypes.HEAD]);\r\n //display.push([\"\", \"\", styleTypes.BOLD+styleTypes.WHITE]);\r\n display.push([t('Plan Name'), baseCoverageItem.name, styleTypes.BOLD + getCurrentBgColor()]);\r\n display.push([t('Plan Identification'), baseCoverageItem.planCode, styleTypes.BOLD + toggleBgColor()]);\r\n\r\n //console.log(` ${}`);\r\n if (baseCoverageItem.insureds.length > 1) {\r\n if (baseCoverageItem.riderType === RiderTypes.CHILD) {\r\n display.push([t('Lives Insured'), strTempInsuredNames, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n let strTemp = '';\r\n let intInsuredCounter = 0;\r\n for (let tempInsuredItem of baseCoverageItem.insureds) {\r\n strTemp = fullName(tempInsuredItem) + ', SIN# ' + formatSIN(tempInsuredItem.sin);\r\n //console.log(` ${}`);\r\n if (intInsuredCounter === 0) {\r\n display.push([t('Lives Insured'), strTemp, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push(['', strTemp, styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n intInsuredCounter++;\r\n }\r\n }\r\n } else {\r\n display.push([t('Life Insured'), `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n\r\n display.push([t('Issue Date'), format_Display_Date(baseCoverageItem.issueDate), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Issue Age'), insuredItem.issueAge, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sex'), TextLookup_Sex(insuredItem.gender, t), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Smoker Status'),\r\n TextLookup_SmokeClass(formatSmokeClass(insuredItem.smokeClass, insuredItem.issueAge), t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Sub Table 1'), `${translateSubTable1(baseCoverageItem, true, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n\r\n if (isProductHealth(baseCoverageItem.prodID)) {\r\n display.push([t('Sub Table 2'), `EP: ${translateSubTable2(baseCoverageItem, false, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sub Table 3'), `BP: ${translateSubTable3(baseCoverageItem, false, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Sub Table 4'), `${translateSubTable4(baseCoverageItem, false, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n } else if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n display.push([t('Sub Table 2'), `${translateSubTable2(baseCoverageItem, false, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n if (baseCoverageItem.riderType === RiderTypes.NONE || baseCoverageItem.riderType === RiderTypes.UL) {\r\n display.push([t('COI Type'), `${translateCOIType(baseCoverageItem, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n }\r\n display.push([t('Death Benefit Type'), `${translateDeathBenefitType(baseCoverageItem, inforcePolicy, t)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n\r\n display.push([t('Cvg Attained Age'), insuredItem.currentAttainedAge, styleTypes.BOLD + toggleBgColor()]);\r\n let policyBaseCoverage = {};\r\n let blnFirst = false;\r\n if (baseCoverageItem.riderType !== RiderTypes.GPO) {\r\n if (baseCoverageItem.coverageType !== CoverageTypes.BASE && baseCoverageItem.beneficiaries.length === 0) {\r\n policyBaseCoverage = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n\r\n if (baseCoverageItem.insured.clientID === policyBaseCoverage.insured.clientID) {\r\n blnFirst = true;\r\n let beneficiaryColor = toggleBgColor();\r\n for (let beneficiaryItem of policyBaseCoverage.beneficiaries) {\r\n if (blnFirst) {\r\n strBeneficiary = t('Beneficiary');\r\n blnFirst = false;\r\n } else {\r\n strBeneficiary = '';\r\n }\r\n display.push([\r\n strBeneficiary,\r\n `${fullName(beneficiaryItem)}, ${t(beneficiaryItem.beneficiaryRelationship)}, ${formatAllocationPercent(\r\n beneficiaryItem.beneficiaryPercent\r\n )}`,\r\n styleTypes.BOLD + beneficiaryColor,\r\n ]);\r\n }\r\n }\r\n } else {\r\n blnFirst = true;\r\n let beneficiaryColor = toggleBgColor();\r\n for (let beneficiaryItem of baseCoverageItem.beneficiaries) {\r\n if (blnFirst) {\r\n strBeneficiary = t('Beneficiary');\r\n blnFirst = false;\r\n } else {\r\n strBeneficiary = '';\r\n }\r\n display.push([\r\n strBeneficiary,\r\n `${fullName(beneficiaryItem)}, ${t(beneficiaryItem.beneficiaryRelationship)}, ${formatAllocationPercent(\r\n beneficiaryItem.beneficiaryPercent\r\n )}`,\r\n styleTypes.BOLD + beneficiaryColor,\r\n ]);\r\n }\r\n }\r\n }\r\n let strTemp = '';\r\n let strTemp2 = '';\r\n if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n display.push([t('Investment Value'), formatDollar(baseCoverageItem.cashValue), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Face Amount'), formatDollar(baseCoverageItem.faceAmount), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Last Monthly COI'), '', styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Coverages'), formatDollar(baseCoverageItem.premCoverage), styleTypes.INDENT + getCurrentBgColor()]);\r\n if (baseCoverageItem.flatExtra > 0) {\r\n if (baseCoverageItem.flatExtraDuration === 999) {\r\n strTemp = t('for life');\r\n } else {\r\n strTemp = `${t('for')} ${baseCoverageItem.feRatingDurationFromIssue.toString()} ${t('years')}`;\r\n }\r\n } else {\r\n strTemp = '';\r\n }\r\n display.push([t('Flat Extra'), `${formatDollar(baseCoverageItem.premFlatExtra)} ${strTemp}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n if (baseCoverageItem.meRatingDurationFromIssue) {\r\n display.push([\r\n t('Multiple Ex'),\r\n `${formatDollar(baseCoverageItem.premMultipleExtra)} ${t('for')} ${baseCoverageItem.meRatingDurationFromIssue.toString()} ${t('years')}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([t('Multiple Ex'), `${formatDollar(baseCoverageItem.premMultipleExtra)}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n }\r\n display.push([t('Load Fee'), formatDollar(baseCoverageItem.policyFee), styleTypes.INDENT + toggleBgColor()]);\r\n if (baseCoverageItem.premWaiver > 0) {\r\n waiverCoverage = getCoverageItemByRiderType(baseCoverageItem.coverages, CoverageTypes.BENEFIT, RiderTypes.WAIVER);\r\n if (waiverCoverage.isUseRatings && waiverCoverage.meRating !== 1) {\r\n display.push([\r\n t('Waiver'),\r\n `${formatDollar(baseCoverageItem.premWaiver)} ${Format2Decimals(waiverCoverage.meRatingExpiryDate)} ${t('times standard')}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([t('Waiver'), `${formatDollar(baseCoverageItem.premWaiver)}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n }\r\n } else {\r\n display.push([t('Waiver'), formatDollar(baseCoverageItem.premWaiver), styleTypes.INDENT + getCurrentBgColor()]);\r\n }\r\n display.push([t('ADB'), formatDollar(baseCoverageItem.premADB), styleTypes.INDENT + getCurrentBgColor()]);\r\n display.push([t('Total'), formatDollar(baseCoverageItem.modePremiumAmount), styleTypes.INDENT + getCurrentBgColor()]);\r\n } else {\r\n display.push([t('Cash Value'), formatDollar(baseCoverageItem.cashValue), styleTypes.BOLD + toggleBgColor()]);\r\n if (baseCoverageItem.coverageType === CoverageTypes.OYT) {\r\n display.push([\r\n t('Face Amount'),\r\n `${formatDollar(inforcePolicy.dividendEnhancedAmount)} ${t('Sum Insured')}: ${formatDollar(baseCoverageItem.faceAmount)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else if (\r\n // baseCoverageItem.policy.policyType === PolicyTypes.ImmediateAnnuity ||\r\n // baseCoverageItem.policy.policyType === PolicyTypes.DeferredAnnuity\r\n inforcePolicy.policyType === PolicyTypes.ImmediateAnnuity ||\r\n inforcePolicy.policyType === PolicyTypes.DeferredAnnuity\r\n ) {\r\n display.push([\r\n t('Number of Units'),\r\n `${baseCoverageItem.units.toString()} ${t('Sum Insured')}: ${formatDollar(baseCoverageItem.sumInsured)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else if (\r\n (baseCoverageItem.isUseDeathBenefitRateTable || isProdIDSOSBAEndowment(baseCoverageItem.prodID)) &&\r\n baseCoverageItem.faceAmount !== baseCoverageItem.sumInsured\r\n ) {\r\n display.push([\r\n t('Face Amount'),\r\n `${formatDollar(baseCoverageItem.faceAmount)} ${t('Sum Insured')}: ${formatDollar(baseCoverageItem.sumInsured)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([t('Face Amount'), `${formatDollar(baseCoverageItem.faceAmount)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n if (inforcePolicy.isRestrictPremium) {\r\n strTemp = t('Future Calculation Restricted');\r\n } else {\r\n strTemp = '';\r\n }\r\n if (isCoveragePaidUp(baseCoverageItem)) {\r\n display.push([t('Annual prem'), t('Not Applicable'), styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + toggleBgColor()]);\r\n display.push([t('Premium Frequency'), TextLookup_PremiumModePolicy(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Mode Premium Amount'), t('Not Applicable'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([`${t('Annual Premium')}:`, '', styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Coverage'), `${formatDollar(baseCoverageItem.premCoverage)} ${strTemp}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n if (baseCoverageItem.flatExtra > 0) {\r\n if (baseCoverageItem.flatExtraDuration === 999) {\r\n strTemp = t('for life');\r\n } else {\r\n strTemp = `${t('for')} ${baseCoverageItem.feRatingDurationFromIssue.toString()}`;\r\n }\r\n } else {\r\n strTemp = '';\r\n }\r\n\r\n display.push([t('Flat Extra'), `${formatDollar(baseCoverageItem.premFlatExtra)} ${strTemp}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n\r\n if (baseCoverageItem.meRatingDurationFromIssue > 0) {\r\n display.push([\r\n t('Multiple Ex'),\r\n `${formatDollar(baseCoverageItem.premMultipleExtra)} ${t('for')} ${baseCoverageItem.meRatingDurationFromIssue.toString()} ${t(\r\n 'years'\r\n )}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([t('Multiple Ex'), `${formatDollar(baseCoverageItem.premMultipleExtra)} `, styleTypes.INDENT + getCurrentBgColor()]);\r\n }\r\n display.push([t('Policy Fee'), `${formatDollar(baseCoverageItem.policyFee)}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n\r\n if (baseCoverageItem.premWaiver > 0) {\r\n waiverCoverage = getCoverageItemByRiderType(baseCoverageItem.coverages, CoverageTypes.BENEFIT, RiderTypes.WAIVER);\r\n if (waiverCoverage.isUseRatings && waiverCoverage.meRating !== 1) {\r\n display.push([\r\n t('Waiver'),\r\n `${formatDollar(baseCoverageItem.premWaiver)} ${Format2Decimals(waiverCoverage.meRating)} ${t('times standard')}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([t('Waiver'), `${formatDollar(baseCoverageItem.premWaiver)}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n }\r\n }\r\n\r\n display.push([t('ADB'), `${formatDollar(baseCoverageItem.premADB)}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n if (isProdIDGradedPremium(inforcePolicy.prodID) || isProdIDProPlan(inforcePolicy.prodID)) {\r\n display.push([t('Subtract Dividend'), `(${formatDollar(baseCoverageItem.premSubtractDividend)})`, styleTypes.INDENT + getCurrentBgColor()]);\r\n }\r\n display.push([t('Total'), formatDollar(baseCoverageItem.premAnnual), styleTypes.INDENT + getCurrentBgColor()]);\r\n display.push([t('Premium Frequency'), TextLookup_PremiumModePolicy(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n strTemp = `${formatDollar(baseCoverageItem.modePremiumAmount)}`;\r\n strTemp2 = `${t('Factor')} ${Format5Decimals(baseCoverageItem.modalFactor)}`;\r\n if (baseCoverageItem.policyFee) {\r\n strTemp2 = `${strTemp2}, ${t('PFee')} ${Format5Decimals(baseCoverageItem.modalFactorPolicyFee)}`;\r\n }\r\n display.push([t('Mode Premium Amount'), strTemp, styleTypes.BOLD + toggleBgColor(), strTemp2]);\r\n }\r\n }\r\n\r\n display.push([t('Maturity/Expiry Date'), format_Display_Date(baseCoverageItem.expiryDate), styleTypes.BOLD + toggleBgColor()]);\r\n\r\n displayArray[treeIndex] = display;\r\n return node;\r\n}\r\nfunction addEmptyTab() {}\r\nfunction addParLifeOwnerBranch(inforcePolicy, ownerNode, t) {\r\n // ownerNode.title = `Owner: ${fullName(inforcePolicy.owners[0])} SIN# ${\r\n // inforcePolicy.owners[0].sin\r\n // }`;\r\n\r\n //This is not used\r\n // ownerNode.title = `Owner: ${fullName(inforcePolicy.insureds[0])} SIN# ${\r\n // inforcePolicy.insureds[0].sin\r\n // }`;\r\n ownerNode.title = 'xxxx';\r\n\r\n let display = [];\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n globalBgColor = styleTypes.WHITE;\r\n let policyOwner = inforcePolicy.owners[0];\r\n let insuredPolicyPayor = {};\r\n display.push([t('Policy Information'), '', styleTypes.HEAD]);\r\n //display.push([\" \", \"\", styleTypes.BOLD+toggleBgColor()]);\r\n\r\n display.push([t('txtPolicyNumber-caption'), inforcePolicy.policyNumber, styleTypes.BOLD + toggleBgColor()]);\r\n\r\n let policyStatus = TextLookup_PolicyCStatCode(inforcePolicy.policyCStatCode, t);\r\n\r\n if (inforcePolicy.policyCStatCode === CstatCode.DEATH) {\r\n policyStatus = policyStatus + ` ${format_Display_Date(baseCoverageItem.insured.dateOfDeath)}`;\r\n }\r\n let style = styleTypes.BOLD + getCurrentBgColor();\r\n if (!inforcePolicy.isActive) {\r\n style = styleTypes.RED + getCurrentBgColor();\r\n }\r\n display.push([t('Policy Status'), policyStatus, style]);\r\n\r\n display.push([t('Policy Issue Date'), `${format_Display_Date(inforcePolicy.issueDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n\r\n if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n display.push([t('Deposit Frequency'), TextLookup_PremiumModePolicy(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Last Billed Mode Deposit Amount'),\r\n `${formatDollar(inforcePolicy.totalModalPremium)} ${t('Annualized Amt')}: ${formatDollar(inforcePolicy.totalAnnualizedPremium)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([t('Premium Frequency'), TextLookup_PremiumModePolicy(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n if (isPolicyPaidUp(inforcePolicy)) {\r\n display.push([t('Last Billed Mode Premium Amount'), t('NIL'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Last Billed Mode Premium Amount'), `${formatDollar(inforcePolicy.totalModalPremium)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n }\r\n if (inforcePolicy.billingMethod === BillingMethodTypes.EFT) {\r\n if (inforcePolicy.payor) {\r\n insuredPolicyPayor = inforcePolicy.payor;\r\n } else {\r\n insuredPolicyPayor = policyOwner;\r\n }\r\n display.push([t('Bank Deposit Information'), `${insuredPolicyPayor.bankName} ${insuredPolicyPayor.bankNo}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n '',\r\n ` ${t('Branch')} ${insuredPolicyPayor.bankBranchNo} ${t('PCA Acct')} ${insuredPolicyPayor.bankAccountNo} `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push(['', ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n display.push([t('Next Monthiversary Date'), `${format_Display_Date(inforcePolicy.nextMonthiversaryDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n if (inforcePolicy.isRegistered || !inforcePolicy.isLoanAvailable) {\r\n display.push([t('Loan Available'), t('Not permitted on this policy'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([\r\n t('Loan Available'),\r\n `${formatDollar(inforcePolicy.availableLoan)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.availableLoanInterestRate * 100)}`,\r\n ]);\r\n }\r\n } else {\r\n if (isPolicyPaidUp(inforcePolicy)) {\r\n display.push([t('Paid to Date'), t('Not Applicable'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Paid to Date'), `${format_Display_Date(inforcePolicy.paidToDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n if (inforcePolicy.isRegistered === true || inforcePolicy.isLoanAvailable === false) {\r\n display.push([t('Loan Available'), t('Not permitted on this policy'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([\r\n t('Loan Available'),\r\n `${formatDollar(inforcePolicy.availableLoan)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.availableLoanInterestRate * 100)}`,\r\n ]);\r\n }\r\n display.push([t('Nonforfeiture Option'), TextLookup_NFOption(inforcePolicy.nonForfeitureOption || '', t), styleTypes.BOLD + toggleBgColor()]);\r\n let fDividendPaidLabel = '';\r\n let currentDate = getCurrentDate();\r\n if (isAnniversaryPassed(currentDate, inforcePolicy.issueDate)) {\r\n fDividendPaidLabel = `${t('Div Paid This Year')} ( ${currentDate.getFullYear()} ):`;\r\n } else {\r\n fDividendPaidLabel = `${t('Div Payable This Yr')} ( ${currentDate.getFullYear()} ):`;\r\n }\r\n\r\n //Write this to globalVariables as it is used in the BuildScalars routine\r\n globalVariables.DividendPaidLabel = fDividendPaidLabel;\r\n\r\n if (inforcePolicy.dividendPayoutType === DividendPayoutTypes.Enhanced) {\r\n display.push([\r\n t('Dividend Option'),\r\n `${TextLookup_DividendPayout(inforcePolicy.dividendPayoutType, t)} ${formatDollar(inforcePolicy.dividendEnhancedAmount)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([fDividendPaidLabel, `${formatDollar(inforcePolicy.dividendThisYear)}`, styleTypes.BOLD + toggleBgColor()]);\r\n let TAFaceAmnt = inforcePolicy.dividendEnhancedAmount - inforcePolicy.puaFaceAmount;\r\n display.push([\r\n t('PUA Face Amount'),\r\n `${formatDollar(inforcePolicy.puaFaceAmount)} ${t('TA Face Amt')} ${formatDollar(TAFaceAmnt)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([t('Dividend Option'), TextLookup_DividendPayout(inforcePolicy.dividendPayoutType, t), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([fDividendPaidLabel, `${formatDollar(inforcePolicy.dividendThisYear)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('PUA Face Amount'), `${formatDollar(inforcePolicy.puaFaceAmount)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n }\r\n\r\n if (inforcePolicy.isActive) {\r\n display.push([t('Maturity/Expiry Date'), `${format_Display_Date(inforcePolicy.expiryDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Maturity/Expiry Date'), `${format_Display_Date(inforcePolicy.terminatedDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display.push([t('Assignee'), t('None'), styleTypes.BOLD + toggleBgColor()]);\r\n\r\n displayArray[treeIndex++] = display;\r\n\r\n //Policy Values separate branch implementation\r\n globalBgColor = styleTypes.WHITE;\r\n let display1 = [];\r\n\r\n display1.push([t('Policy Values'), '', styleTypes.HEAD]);\r\n\r\n if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n display1.push([\r\n t('DIA Value'),\r\n `+${formatDollar(inforcePolicy.diaValue)}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.diaInterestRate * 100)}`,\r\n ]);\r\n display1.push([t('GIA Value'), `+${formatDollar(inforcePolicy.giaValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n let indexedFundValue = inforcePolicy.indexedFundValue + inforcePolicy.segFundValue;\r\n if (IsProdIDFlexLife2(inforcePolicy.prodID)) {\r\n if (indexedFundValue > 0) {\r\n display1.push([\r\n t('Indexed Funds Value'),\r\n `+${formatDollar(indexedFundValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `Date: ${format_Display_Date(inforcePolicy.indexedFundValueDate)}`,\r\n ]);\r\n } else {\r\n display1.push([t('Indexed Funds Value'), `+${formatDollar(indexedFundValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n } else {\r\n display1.push([t('Indexed Funds Value'), `+${formatDollar(indexedFundValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display1.push([\r\n t('PDF Balance'),\r\n `+${formatDollar(inforcePolicy.pdfBalance)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.pdfInterestRate * 100)}`,\r\n ]);\r\n display1.push([\r\n t('Loan Balance'),\r\n `-${formatDollar(inforcePolicy.loanBalance)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.loanInterestRate * 100)}`,\r\n ]);\r\n display1.push([t('Surr Chrg Market Val Adj'), `-${formatDollar(inforcePolicy.mva)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([t('Early Withdrawal'), `-${formatDollar(inforcePolicy.surrenderCharge)}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n display1.push([t('Policy Value'), `${formatDollar(inforcePolicy.policyValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display1.push([t('Basic Cash Value'), `+${formatDollar(inforcePolicy.basicCashValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([t('PUA Cash Value'), `+${formatDollar(inforcePolicy.puaCashValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([\r\n t('Div on Deposit Balance'),\r\n `+${formatDollar(inforcePolicy.dodBalance)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.dodInterestRate * 100)}`,\r\n ]);\r\n display1.push([\r\n t('PDF Balance'),\r\n `+${formatDollar(inforcePolicy.pdfBalance)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.pdfInterestRate * 100)}`,\r\n ]);\r\n display1.push([\r\n t('Loan Balance'),\r\n `-${formatDollar(inforcePolicy.loanBalance)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.loanInterestRate * 100)}`,\r\n ]);\r\n display1.push([t('Premium Refund (approx)'), `+${formatDollar(inforcePolicy.premiumRefund)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([t('Policy Cash Value'), `${formatDollar(inforcePolicy.policyValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n displayArray[treeIndex] = display1;\r\n}\r\nfunction addFundOwnerBranch(inforcePolicy, ownerNode, t) {\r\n console.log('inside Fund Owner Branch');\r\n ownerNode.title = `${t('Owner')}: ${fullName(inforcePolicy.owners[0])} SIN# ${inforcePolicy.insureds[0].sin}`;\r\n\r\n let display = [];\r\n let strPolicyStatus = '';\r\n let policyOwner = inforcePolicy.owners[0];\r\n let insuredPolicyPayor = {};\r\n let blnFirst = true;\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n globalBgColor = styleTypes.WHITE;\r\n display.push([t('Policy Information'), '', styleTypes.HEAD]);\r\n if (inforcePolicy.policyType === PolicyTypes.RRIF) {\r\n display.push([t('This policy is registered as a RRIF'), '', styleTypes.BOLD + getCurrentBgColor()]);\r\n } else if (inforcePolicy.isRegistered) {\r\n display.push([t('This policy is registered as an RRSP'), '', styleTypes.BOLD + getCurrentBgColor()]);\r\n } else {\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n }\r\n\r\n display.push([t('txtPolicyNumber-caption'), inforcePolicy.policyNumber, styleTypes.BOLD + toggleBgColor()]);\r\n strPolicyStatus = TextLookup_PolicyCStatCode(inforcePolicy.policyCStatCode, t);\r\n\r\n let style = styleTypes.BOLD + toggleBgColor();\r\n if (!inforcePolicy.isActive) {\r\n style = styleTypes.RED + toggleBgColor();\r\n }\r\n\r\n if (inforcePolicy.policyCStatCode === CstatCode.DEATH) {\r\n display.push([t('Policy Status'), `${strPolicyStatus} ${format_Display_Date(baseCoverageItem.insured.dateOfDeath)}`, style]);\r\n } else {\r\n display.push([t('Policy Status'), `${strPolicyStatus}`, style]);\r\n }\r\n\r\n display.push([t('Policy Issue Date'), `${format_Display_Date(inforcePolicy.issueDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n\r\n if (isInPayout(inforcePolicy) || inforcePolicy.policyType === PolicyTypes.RRIF || inforcePolicy.policyType === PolicyTypes.SegregatedFundRRIF) {\r\n display.push([t('Payout Frequency'), TextLookup_PayoutFrequency(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n //FormatAmountAboveZero & its paramters is TODO\r\n display.push([\r\n t('Gross Payout Amount'),\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n `${formatDollar(inforcePolicy.annualPayoutAmount)} (${t('Annualized')} ${formatDollar(\r\n inforcePolicy.annualPayoutAmount * modalFactor(inforcePolicy.annualPayoutMode)\r\n )})`\r\n ),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Net Payout Amount'),\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n `${formatDollar(inforcePolicy.annualPayoutAmount - inforcePolicy.payoutTaxWithheld - inforcePolicy.payoutAdditionalTaxWithheld)} (${t(\r\n 'Annualized'\r\n )} ${formatDollar(\r\n (inforcePolicy.annualPayoutAmount - inforcePolicy.payoutTaxWithheld - inforcePolicy.payoutAdditionalTaxWithheld) *\r\n modalFactor(inforcePolicy.annualPayoutMode)\r\n )})`\r\n ),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Next Payment Date'),\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n Translate_NextPaymentDate(inforcePolicy.payoutPaymentDate, inforcePolicy.payoutEffectiveDate, inforcePolicy.currentDate)\r\n ),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Payout Method'),\r\n toProperCase(TextLookup_PayoutMethodCode(inforcePolicy.payoutMethodCode, t)),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (inforcePolicy.annualPayoutAmount > 0) {\r\n if (inforcePolicy.payoutMethod === BillingMethodTypes.EFT) {\r\n if (inforcePolicy.payor) {\r\n insuredPolicyPayor = inforcePolicy.payor;\r\n } else {\r\n insuredPolicyPayor = policyOwner;\r\n }\r\n display.push([\r\n t('Bank Deposit Information'),\r\n `${insuredPolicyPayor.bankName} (${insuredPolicyPayor.bankNo})`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Branch')} ${insuredPolicyPayor.bankBranchNo} ${t('PCA Acct')} ${insuredPolicyPayor.bankAccountNo} `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push(['', ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n }\r\n } else {\r\n display.push([t('Deposit Frequency'), TextLookup_PremiumModePolicy(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n // TODO - PCAtuarial.Round and FormatDollar stuff\r\n display.push([\r\n t('Mode Deposit Amount'),\r\n `${formatDollar(PCRound(inforcePolicy.totalModalPremium, 2))} ${t('Annualized Amt')}: ${formatDollar(\r\n inforcePolicy.totalAnnualizedPremium\r\n )}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (inforcePolicy.billingMethod === BillingMethodTypes.EFT) {\r\n if (inforcePolicy.payor) {\r\n insuredPolicyPayor = inforcePolicy.payor;\r\n } else {\r\n insuredPolicyPayor = policyOwner;\r\n }\r\n display.push([\r\n t('Bank Deposit Information'),\r\n `${insuredPolicyPayor.bankName} (${insuredPolicyPayor.bankNo})`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Branch')} ${insuredPolicyPayor.bankBranchNo} ${t('PCA Acct')} ${insuredPolicyPayor.bankAccountNo} `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push(['', ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n display.push([t('Next Monthiversary Date'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n\r\n if (inforcePolicy.isRegistered || !inforcePolicy.isLoanAvailable) {\r\n display.push([t('Loan Available'), t('Not permitted on this policy'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([\r\n t('Loan Available'),\r\n `${formatDollar(inforcePolicy.availableLoan)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.availableLoanInterestRate * 100)}`,\r\n ]);\r\n }\r\n if (inforcePolicy.isActive) {\r\n display.push([t('Maturity/Expiry Date'), `${format_Display_Date(inforcePolicy.expiryDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Maturity/Expiry Date'), `${format_Display_Date(inforcePolicy.terminatedDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n if (baseCoverageItem.beneficiaries.length <= /*BENEFICIARIES_MAX_DISPLAY*/ 5) {\r\n let strBeneficiary = '';\r\n for (let beneficiaryItem of baseCoverageItem.beneficiaries) {\r\n if (blnFirst) {\r\n strBeneficiary = TextLookup_BeneficiaryCode(beneficiaryItem.beneficiaryTypeCode, t);\r\n strBeneficiary = t('Beneficiary (Class') + strBeneficiary + '):';\r\n blnFirst = false;\r\n } else {\r\n strBeneficiary = '';\r\n }\r\n display.push([\r\n strBeneficiary,\r\n `${fullName(beneficiaryItem)}, ${t(beneficiaryItem.beneficiaryRelationship)}, ${formatAllocationPercent(beneficiaryItem.beneficiaryPercent)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n } else {\r\n let beneficiaryItem = baseCoverageItem.beneficiaries[0];\r\n let strBeneficiary = '';\r\n strBeneficiary = TextLookup_BeneficiaryCode(beneficiaryItem.beneficiaryTypeCode, t);\r\n strBeneficiary = t('Beneficiary (Class') + strBeneficiary + '):';\r\n display.push([strBeneficiary, '', styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display.push([t('Assignee'), t('None'), styleTypes.BOLD + toggleBgColor()]);\r\n if (inforcePolicy.isRegistered) {\r\n if (inforcePolicy.spouseContributorType === SpouseContributorTypes.Spouse) {\r\n display.push([t('Spousal Contributor'), inforcePolicy.spouseContributor.fullNameWithSalutation, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Spousal Contributor'), t('None'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n }\r\n displayArray[treeIndex++] = display;\r\n //Policy Values separate branch implementation\r\n globalBgColor = styleTypes.WHITE;\r\n let display1 = [];\r\n\r\n display1.push([t('Policy Values'), '', styleTypes.HEAD]);\r\n if (inforcePolicy.diaValue === 0) {\r\n display1.push([t('DIA Value'), `+${formatDollar(inforcePolicy.diaValue)}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n } else {\r\n display1.push([\r\n t('DIA Value'),\r\n `+${formatDollar(inforcePolicy.diaValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.diaInterestRate * 100)}`,\r\n ]);\r\n }\r\n display1.push([t('GIA Value'), `+${formatDollar(inforcePolicy.giaValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([t('Indexed Funds Value'), `+${formatDollar(inforcePolicy.indexedFundValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([\r\n t('PDF Balance'),\r\n `+${formatDollar(inforcePolicy.pdfBalance)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.pdfInterestRate * 100)}`,\r\n ]);\r\n display1.push([t('Surr Chrg Market Val Adj'), `-${formatDollar(inforcePolicy.mva)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([t('Early Withdrawal'), `-${formatDollar(inforcePolicy.surrenderCharge)}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n display1.push([t('Policy Value'), `${formatDollar(inforcePolicy.policyValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n displayArray[treeIndex] = display1;\r\n}\r\nfunction addSegFundOwnerBranch(inforcePolicy, ownerNode, t) {\r\n ownerNode.title = `Owner: ${fullName(inforcePolicy.owners[0])} SIN# ${inforcePolicy.owners[0].sin}`;\r\n let display = [];\r\n let strPolicyStatus = '';\r\n let policyOwner = inforcePolicy.owners[0];\r\n let insuredPolicyPayor = {};\r\n let blnFirst = true;\r\n let baseCoverageItem = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n globalBgColor = styleTypes.WHITE;\r\n display.push([t('Policy Information'), '', styleTypes.HEAD]);\r\n if (inforcePolicy.policyType === PolicyTypes.SegregatedFundRRIF) {\r\n display.push([t('This policy is registered as a RRIF'), '', styleTypes.BOLD + getCurrentBgColor()]);\r\n } else if (inforcePolicy.isRegistered) {\r\n display.push([t('This policy is registered as an RRSP'), '', styleTypes.BOLD + getCurrentBgColor()]);\r\n } else {\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n }\r\n\r\n display.push([t('txtPolicyNumber-caption'), inforcePolicy.policyNumber, styleTypes.BOLD + toggleBgColor()]);\r\n\r\n strPolicyStatus = TextLookup_PolicyCStatCode(inforcePolicy.policyCStatCode, t);\r\n\r\n let style = styleTypes.BOLD + toggleBgColor();\r\n if (!inforcePolicy.isActive) {\r\n style = styleTypes.RED + toggleBgColor();\r\n }\r\n\r\n if (inforcePolicy.policyCStatCode === CstatCode.DEATH) {\r\n display.push([t('Policy Status'), `${strPolicyStatus} ${format_Display_Date(baseCoverageItem.insured.dateOfDeath)}`, style]);\r\n } else {\r\n display.push([t('Policy Status'), `${strPolicyStatus}`, style]);\r\n }\r\n\r\n display.push([t('Policy Issue Date'), `${format_Display_Date(inforcePolicy.issueDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n\r\n if (isInPayout(inforcePolicy) || inforcePolicy.policyType === PolicyTypes.RRIF || inforcePolicy.policyType === PolicyTypes.SegregatedFundRRIF) {\r\n display.push([t('Payout Frequency'), TextLookup_PayoutFrequency(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n //FormatAmountAboveZero & its paramters is TODO\r\n console.log(`t(\"Gross Payout Amount 3\") = ${t('Gross Payout Amount')}`);\r\n display.push([\r\n t('Gross Payout Amount'),\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n `${formatDollar(inforcePolicy.annualPayoutAmount)} (Annualized ${formatDollar(\r\n inforcePolicy.annualPayoutAmount * modalFactor(inforcePolicy.annualPayoutMode)\r\n )})`\r\n ),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Net Payout Amount'),\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n `${formatDollar(\r\n inforcePolicy.annualPayoutAmount - inforcePolicy.payoutTaxWithheld - inforcePolicy.payoutAdditionalTaxWithheld\r\n )} (Annualized ${formatDollar(\r\n (inforcePolicy.annualPayoutAmount - inforcePolicy.payoutTaxWithheld - inforcePolicy.payoutAdditionalTaxWithheld) *\r\n modalFactor(inforcePolicy.annualPayoutMode)\r\n )})`\r\n ),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Next Payment Date'),\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n Translate_NextPaymentDate(inforcePolicy.payoutPaymentDate, inforcePolicy.payoutEffectiveDate, inforcePolicy.currentDate)\r\n ),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Payout Method'),\r\n toProperCase(TextLookup_PayoutMethodCode(inforcePolicy.payoutMethodCode, t)),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (inforcePolicy.annualPayoutAmount > 0) {\r\n if (inforcePolicy.payoutMethod === BillingMethodTypes.EFT) {\r\n if (inforcePolicy.payor) {\r\n insuredPolicyPayor = inforcePolicy.payor;\r\n } else {\r\n insuredPolicyPayor = policyOwner;\r\n }\r\n display.push([\r\n t('Bank Deposit Information'),\r\n `${insuredPolicyPayor.bankName} (${insuredPolicyPayor.bankNo})`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Branch')} ${insuredPolicyPayor.bankBranchNo} ${t('PCA Acct')} ${insuredPolicyPayor.bankAccountNo} `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push(['', ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n }\r\n } else {\r\n display.push([t('Deposit Frequency'), TextLookup_PremiumModePolicy(inforcePolicy, t), styleTypes.BOLD + toggleBgColor()]);\r\n // TODO - PCAtuarial.Round and FormatDollar stuff\r\n display.push([\r\n t('Mode Deposit Amount'),\r\n `${formatDollar(PCRound(inforcePolicy.totalModalPremium, 2))} ${t('Annualized Amt')}: ${formatDollar(\r\n inforcePolicy.totalAnnualizedPremium\r\n )}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (inforcePolicy.billingMethod === BillingMethodTypes.EFT) {\r\n if (inforcePolicy.payor) {\r\n insuredPolicyPayor = inforcePolicy.payor;\r\n } else {\r\n insuredPolicyPayor = policyOwner;\r\n }\r\n display.push([\r\n t('Bank Deposit Information'),\r\n `${insuredPolicyPayor.bankName} (${insuredPolicyPayor.bankNo})`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Branch')} ${insuredPolicyPayor.bankBranchNo} ${t('PCA Acct')} ${insuredPolicyPayor.bankAccountNo} `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push(['', ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n display.push([t('Next Monthiversary Date'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n\r\n if (inforcePolicy.isRegistered || !inforcePolicy.isLoanAvailable) {\r\n display.push([t('Loan Available'), t('Not permitted on this policy'), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([\r\n t('Loan Available'),\r\n `${formatDollar(inforcePolicy.availableLoan)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.availableLoanInterestRate * 100)}`,\r\n ]);\r\n }\r\n if (inforcePolicy.isActive) {\r\n display.push([t('Maturity/Expiry Date'), `${format_Display_Date(inforcePolicy.expiryDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Maturity/Expiry Date'), `${format_Display_Date(inforcePolicy.terminatedDate)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n if (baseCoverageItem.beneficiaries.length <= /*BENEFICIARIES_MAX_DISPLAY*/ 5) {\r\n let strBeneficiary = '';\r\n for (let beneficiaryItem of baseCoverageItem.beneficiaries) {\r\n if (blnFirst) {\r\n strBeneficiary = TextLookup_BeneficiaryCode(beneficiaryItem.beneficiaryTypeCode, t);\r\n strBeneficiary = t('Beneficiary (Class') + strBeneficiary + '):';\r\n blnFirst = false;\r\n } else {\r\n strBeneficiary = '';\r\n }\r\n display.push([\r\n strBeneficiary,\r\n `${fullName(beneficiaryItem)}, ${t(beneficiaryItem.beneficiaryRelationship)}, ${formatAllocationPercent(beneficiaryItem.beneficiaryPercent)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n } else {\r\n let beneficiaryItem = baseCoverageItem.beneficiaries[0];\r\n let strBeneficiary = TextLookup_BeneficiaryCode(beneficiaryItem.beneficiaryTypeCode, t);\r\n strBeneficiary = t('Beneficiary (Class') + strBeneficiary + '):';\r\n display.push([strBeneficiary, '', styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display.push([t('Assignee'), t('None'), styleTypes.BOLD + toggleBgColor()]);\r\n if (inforcePolicy.isRegistered) {\r\n if (inforcePolicy.spouseContributorType === SpouseContributorTypes.Spouse) {\r\n display.push([t('Spousal Contributor'), inforcePolicy.spouseContributor.fullNameWithSalutation, styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Spousal Contributor'), t('None'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n }\r\n displayArray[treeIndex++] = display;\r\n\r\n //Policy Values separate branch implementation\r\n globalBgColor = styleTypes.WHITE;\r\n let display1 = [];\r\n\r\n display1.push([t('Policy Values'), '', styleTypes.HEAD]);\r\n if (inforcePolicy.isActive) {\r\n console.log(`inforcePolicy.currentDate = ${inforcePolicy.currentDate}`);\r\n display1.push([t('Fund Valuation Date'), format_Display_Date(inforcePolicy.currentDate), styleTypes.BOLD + getCurrentBgColor()]); //TODO\r\n } else {\r\n display1.push([t('Fund Valuation Date'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display1.push([t('Current Value'), formatDollar(inforcePolicy.policyValue), styleTypes.BOLD + toggleBgColor()]);\r\n\r\n display1.push([\r\n t('PDF Balance'),\r\n `+${formatDollar(inforcePolicy.pdfBalance)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n `${t('Interest Rate')} ${formatAllocationPercent(inforcePolicy.pdfInterestRate * 100)}`,\r\n ]);\r\n display1.push([t('Surr Chrg Market Val Adj'), `-${formatDollar(inforcePolicy.mva)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([t('Early Withdrawal'), `-${formatDollar(inforcePolicy.surrenderCharge)}`, styleTypes.INDENT + getCurrentBgColor()]);\r\n display1.push([t('Policy Value'), `${formatDollar(inforcePolicy.policyValue)}`, styleTypes.BOLD + toggleBgColor()]);\r\n if (inforcePolicy.isActive) {\r\n display1.push([t('Gtd Maturity Date'), format_Display_Date(inforcePolicy.guaranteedMaturityDate), styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([t('Gtd Maturity Amount'), formatDollar(inforcePolicy.guaranteedMaturityAmount), styleTypes.BOLD + toggleBgColor()]);\r\n display1.push([t('Gtd Death Amount'), formatDollar(inforcePolicy.guaranteedDeathAmount), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n displayArray[treeIndex] = display1;\r\n}\r\n\r\nfunction addClientBranch(inforcePolicy, parentNode, t) {\r\n let data = {};\r\n data.expanded = true;\r\n data.title = t('Client Information');\r\n let owner = inforcePolicy.owners[0];\r\n //let owner = inforcePolicy.insureds[0];\r\n\r\n parentNode.children.push(new Node(data, treeIndex));\r\n globalBgColor = styleTypes.WHITE;\r\n let display = [];\r\n\r\n display.push([data.title, '', styleTypes.HEAD]);\r\n //display.push([\"\", \"\", styleTypes.BOLD+toggleBgColor()]);\r\n display.push([t('Owner'), `${fullName(owner)}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n display.push(['', `${t(owner.consent)}`, styleTypes.BOLD + getCurrentBgColor()]);\r\n\r\n if (owner.phoneNumber && owner.phoneNumber.length > 0) {\r\n display.push([t('Owner Phone'), FormatPhoneNumber(owner.phoneNumber), styleTypes.BOLD + toggleBgColor()]);\r\n } else {\r\n display.push([t('Owner Phone'), t('Not on File'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display.push([t('Owner Address'), `${owner.address1}`, styleTypes.BOLD + toggleBgColor()]);\r\n let strAddressTemp = ((owner.address2 + ' ' + owner.address3).trim() + ' ' + owner.address4).trim();\r\n\r\n if (strAddressTemp.length > 0) {\r\n display.push(['', strAddressTemp, styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n strAddressTemp = ((owner.city + ' ' + owner.province).trim() + ' ' + owner.postalCode).trim();\r\n display.push(['', strAddressTemp, styleTypes.BOLD + getCurrentBgColor()]);\r\n //JA - Jan 26 - Removing church from display\r\n //display.push([`${t('Church')} (${owner.churchID}):`, formatChurchName(owner, t), styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n\r\n if (inforcePolicy.payoutType === PayoutTypes.None) {\r\n //We want our entry for each unique life insured\r\n for (let insured of inforcePolicy.insureds) {\r\n display.push([t('Life Insured'), fullName(insured), styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', t(insured.consent), styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n } else {\r\n for (let insured of inforcePolicy.insureds) {\r\n display.push([`${t('Annuitant')}:`, fullName(insured), styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', t(insured.consent), styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n if (inforcePolicy.payoutInsuredType === PayoutInsuredTypes.Spouse.None) {\r\n display.push([`${t('Annuitant')}:`, fullName(inforcePolicy.payoutInsured), styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', t(inforcePolicy.payoutInsured.consent), styleTypes.BOLD + getCurrentBgColor()]);\r\n }\r\n }\r\n display.push(['', '', styleTypes.EMPTY + toggleBgColor()]);\r\n\r\n // Client information update - 2 March, 2020\r\n display.push([t('Email/CASL Consent'), '', styleTypes.HEAD]);\r\n display.push([t('Owner'), `${fullName(owner)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Email'), `${getEmailAddress(owner.emails)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Consent'), `${t(owner.caslConsent)}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push(['', '', styleTypes.BOLD + toggleBgColor()]);\r\n for (let insured of inforcePolicy.insureds) {\r\n display.push([t('Life Insured'), fullName(insured), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Email'), `${getEmailAddress(insured.emails)}`, styleTypes.BOLD + toggleBgColor()]); // No email, getting exception\r\n display.push([t('Consent'), `${t(insured.caslConsent)}`, styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n\r\n displayArray[treeIndex] = display;\r\n //console.log(\"displayArray:\", displayArray);\r\n}\r\n\r\n// ------------------ HELPER FUNCTIONS -------------------\r\nfunction getEmailAddress(emails) {\r\n if (emails.length === 0) {\r\n return '';\r\n } else {\r\n return emails[0].emailAddress;\r\n }\r\n}\r\n\r\nfunction toggleBgColor() {\r\n globalBgColor = globalBgColor === styleTypes.WHITE ? styleTypes.GREY : styleTypes.WHITE;\r\n return globalBgColor;\r\n}\r\nfunction getCurrentBgColor() {\r\n return globalBgColor;\r\n}\r\n\r\nfunction getCurrentDate() {\r\n //our data is as of Oct 8, 2019\r\n return new Date(2019, 10, 8);\r\n /*\r\nreturn new Date(\r\n new Date().getFullYear(),\r\n new Date().getMonth(),\r\n new Date().getDate()\r\n);\r\n*/\r\n}\r\n\r\nfunction isCoveragePaidUp(riderCoverageItem) {\r\n return riderCoverageItem.coverageStatus.toUpperCase() === 'PAID UP' || riderCoverageItem.coverageStatus.toUpperCase() === 'COVERAGE PAID UP';\r\n}\r\n\r\nfunction translateCOIType(riderCoverageItem, t) {\r\n switch (riderCoverageItem.coiType) {\r\n case COITypes.LevelGuaranteed:\r\n return t('Level');\r\n case COITypes.YRT:\r\n return t('Increasing');\r\n default:\r\n break;\r\n }\r\n return t('Increasing');\r\n}\r\n\r\nfunction translateDeathBenefitType(riderCoverageItem, inforcePolicy, t) {\r\n switch (riderCoverageItem.coiType) {\r\n case COITypes.LevelGuaranteed:\r\n case COITypes.YRT:\r\n if (inforcePolicy.dbOption === DBOptionTypes.Level) {\r\n return t('Level');\r\n } else {\r\n return t('Increasing');\r\n }\r\n case COITypes.None:\r\n return t('Level');\r\n default:\r\n break;\r\n }\r\n return '';\r\n}\r\n\r\nfunction translateSubTable1(riderCoverageItem, isUseProperCase, t) {\r\n let strCode = '';\r\n if (riderCoverageItem.coverageID === '056') {\r\n strCode = 'D';\r\n } else if (riderCoverageItem.coverageID === '060') {\r\n strCode = 'DD';\r\n } else if (isPlanExcludeHealthMatch(riderCoverageItem.planCode)) {\r\n } else {\r\n switch (riderCoverageItem.insured.rateClass) {\r\n case 'P':\r\n strCode = 'HP';\r\n break;\r\n case 'S':\r\n strCode = 'HS';\r\n break;\r\n case 'U':\r\n strCode = 'HU';\r\n break;\r\n default:\r\n return '';\r\n }\r\n }\r\n return TextLookup_SubTable1(strCode, isUseProperCase, t);\r\n}\r\n\r\nfunction translateSubTable2(riderCoverageItem, isUseProperCase, t) {\r\n let strCode = '';\r\n\r\n if (riderCoverageItem.policyType === PolicyTypes.UL) {\r\n switch (riderCoverageItem.coiType) {\r\n case COITypes.LevelGuaranteed:\r\n strCode = 'LEV';\r\n break;\r\n case COITypes.YRT:\r\n strCode = 'YRT';\r\n break;\r\n default:\r\n return '';\r\n }\r\n } else if (isProductHealth(riderCoverageItem.prodID)) {\r\n let disabilityItem = getDisabilityItem(riderCoverageItem.disabilityItems, 'EP');\r\n if (disabilityItem === undefined) {\r\n return '';\r\n } else {\r\n strCode = disabilityItem.disabilityCode;\r\n }\r\n }\r\n return TextLookup_SubTable2(strCode, isUseProperCase, t);\r\n}\r\n\r\nfunction translateSubTable3(riderCoverageItem, isUseProperCase, t) {\r\n let strCode = '';\r\n\r\n if (isProductHealth(riderCoverageItem.prodID)) {\r\n let disabilityItem = getDisabilityItem(riderCoverageItem.disabilityItems, 'BP');\r\n if (disabilityItem === undefined) {\r\n return '';\r\n } else {\r\n strCode = disabilityItem.disabilityCode;\r\n }\r\n }\r\n return TextLookup_SubTable3(strCode, isUseProperCase, t);\r\n}\r\n\r\nfunction translateSubTable4(riderCoverageItem, isUseProperCase, t) {\r\n let strCode = '';\r\n\r\n if (isProductHealth(riderCoverageItem.prodID)) {\r\n let disabilityItem = getDisabilityItem(riderCoverageItem.disabilityItems, 'OC');\r\n if (disabilityItem === undefined) {\r\n return '';\r\n } else {\r\n strCode = disabilityItem.disabilityCode;\r\n }\r\n }\r\n return TextLookup_SubTable4(strCode, isUseProperCase, t);\r\n}\r\n\r\nfunction formatSmokeClass(smokeClass, issueAge) {\r\n if (issueAge < 18 && smokeClass !== 'C') {\r\n return 'R';\r\n } else {\r\n return smokeClass;\r\n }\r\n}\r\n\r\nfunction isAnniversaryPassed(currentDate, issueDate) {\r\n //if the month is greater than the issue month\r\n //OR\r\n //current month = issue month and current day > issue day\r\n //then return true\r\n let aIssueDate = new Date(issueDate);\r\n return (\r\n currentDate.getMonth() > aIssueDate.getMonth() ||\r\n (currentDate.getMonth() === aIssueDate.getMonth() && currentDate.getDate() >= aIssueDate.getDate())\r\n );\r\n}\r\n\r\nfunction formatChurchName(insuredItem, t) {\r\n let strTemp = '';\r\n\r\n strTemp = toProperCase(insuredItem.churchName.trim() + ', ' + insuredItem.churchCity.trim()) + insuredItem.churchProvince;\r\n if (strTemp === ', ') {\r\n return t('NAME NOT ON FILE');\r\n }\r\n return strTemp;\r\n}\r\n","import {ActionTypes} from 'custom/common/redux/Types';\r\nimport axios from 'axios';\r\nimport {updateInforce, populateTree} from '../../utils/Tree';\r\nimport {setAlert} from 'core/redux/actions';\r\nimport {globalVariables} from 'core/utils/util';\r\n\r\nexport const loadInforceData = (policyNum, t) => async (dispatch, getState) => {\r\n try {\r\n let user = getState().auth.user;\r\n let isStatusReport = false;\r\n console.log('loadInforceData: user', user);\r\n //let res2 = await axios.get(`/api/GetReportStatusInfo/${policyNum}`, { params: { user, isStatusReport } });\r\n //console.log(\"GetReportStatusInfo data\", res2.data);\r\n\r\n let GetPolicyObject = {\r\n policyNumber: policyNum,\r\n user: user\r\n };\r\n\r\n let res = await axios.post('/api/getpolicy', GetPolicyObject);\r\n dispatch({\r\n type: ActionTypes.INFORCE_LOAD,\r\n payload: res.data,\r\n });\r\n console.log('inforce Data', res.data);\r\n if (res.data.errorCode === 1 || res.data.errorCode === 3 || res.data.errorCode === 5 || res.data.errorCode === 9) {\r\n //If error do not populate tree\r\n dispatch(populateTreeAction(res.data.inforcePolicy, t));\r\n }\r\n } catch (error) {\r\n console.log('Inforce Load Error', error.response);\r\n dispatch({\r\n type: ActionTypes.INFORCE_LOAD_ERROR,\r\n payload: error.response,\r\n });\r\n }\r\n};\r\n\r\nexport const populateTreeAction = (inforcePolicy, t) => async (dispatch) => {\r\n let result = populateTree(inforcePolicy, t);\r\n dispatch({\r\n type: ActionTypes.TREE_BUILD,\r\n payload: result,\r\n });\r\n};\r\nexport const updateInforcePolicy = (formData, t) => async (dispatch, getState) => {\r\n let result = await updateInforce(getState().inforceData, formData);\r\n dispatch({\r\n type: ActionTypes.INFORCE_LOAD,\r\n payload: result,\r\n });\r\n if (result['errorCode'] === 1 || result['errorCode'] === 3 || result['errorCode'] === 5 || result['errorCode'] === 9) {\r\n //If error do not populate tree\r\n dispatch(populateTreeAction(result.inforcePolicy, t));\r\n if (globalVariables.isAddRiderWP) {\r\n dispatch(setAlert(t('msg-AddedTermRiderWithWP'), 'Success', 'addTermRider', 1000000));\r\n } else {\r\n dispatch(setAlert(t('msg-AddedTermRider'), 'Success', 'addTermRider', 1000000));\r\n }\r\n }\r\n};\r\n\r\nexport const postInforceReport = ({formData}) => async (dispatch) => {\r\n try {\r\n let res = await axios.post('/api/inforcereport', {params: formData});\r\n dispatch({\r\n type: ActionTypes.INFORCE_POST,\r\n payload: res.data,\r\n });\r\n } catch (error) {\r\n console.log('Inforce Post Error: ', error);\r\n }\r\n};\r\n","import {\r\n PolicyTypes,\r\n DividendPayoutTypes,\r\n PremiumModeTypes,\r\n BILLINGSTATUS_BILLING,\r\n PayoutTypes,\r\n BillingTypeCode,\r\n ExemptStatus,\r\n TaxAccrualRule,\r\n PartyTypes,\r\n} from 'core/constants/calcConstants';\r\n\r\n//ToDo: This should be moved to a core report utils module\r\n\r\n//ToDo: Move this to a central utlity module\r\n//Custom - Inforce\r\nexport function isProductLIF(prodID) {\r\n return (\r\n prodID === 658 ||\r\n prodID === 659 ||\r\n prodID === 667 ||\r\n prodID === 668 ||\r\n prodID === 669 ||\r\n prodID === 670 ||\r\n prodID === 671\r\n );\r\n}\r\n//Custom - Inforce\r\n//ToDo: Move this to a central utlity module\r\nexport function isProdIDSOSBA(prodID) {\r\n return (\r\n prodID === 800 ||\r\n prodID === 801 ||\r\n prodID === 802 ||\r\n prodID === 803 ||\r\n prodID === 804 ||\r\n prodID === 805 ||\r\n prodID === 806 ||\r\n prodID === 807\r\n );\r\n}\r\n\r\n//Custom - Inforce\r\n//ToDo: Move this to a central utlity module\r\nexport function isProductEssentialLife(prodID) {\r\n return (\r\n prodID === 370 ||\r\n prodID === 371 ||\r\n prodID === 372 ||\r\n prodID === 373 ||\r\n prodID === 374 ||\r\n prodID === 375 ||\r\n prodID === 376 ||\r\n prodID === 377 ||\r\n prodID === 378 ||\r\n prodID === 379\r\n );\r\n}\r\n//Custom - Inforce\r\n//ToDo: Move this to a central utlity module\r\nfunction isProductParticipatingTerm(prodID) {\r\n return (\r\n prodID === 114 ||\r\n prodID === 116 ||\r\n prodID === 117 ||\r\n prodID === 118 ||\r\n prodID === 119 ||\r\n prodID === 121 ||\r\n prodID === 122 ||\r\n prodID === 123\r\n );\r\n}\r\n//Custom - Inforce\r\n//ToDo: Move this to a central utlity module\r\nfunction isProductParticipatingT100(prodID) {\r\n return (\r\n prodID === 553 ||\r\n prodID === 554 ||\r\n prodID === 556 ||\r\n prodID === 557 ||\r\n prodID === 558 ||\r\n prodID === 559\r\n );\r\n}\r\n\r\nexport function isProductPar(policyType, prodID) {\r\n return (\r\n policyType === PolicyTypes.Endowment ||\r\n policyType === PolicyTypes.Enhanced ||\r\n policyType === PolicyTypes.WholeLife ||\r\n policyType === PolicyTypes.DeferredAnnuity ||\r\n isProductParticipatingTerm(prodID) ||\r\n isProductParticipatingT100(prodID)\r\n );\r\n}\r\n//Custom - Inforce\r\nexport function IsProductPremOffset(inforcePolicy, controlItems, inforceFormData) {\r\n if (\r\n inforcePolicy.dividendPayoutType === DividendPayoutTypes.PUA ||\r\n inforcePolicy.dividendPayoutType === DividendPayoutTypes.DOD\r\n ) {\r\n if (\r\n isInPremiumOffset(inforcePolicy) ||\r\n isPremiumOffsetSelected(controlItems, inforceFormData)\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n//Custom - Inforce\r\nexport function isPremiumOffsetSelected(controlItems, inforceFormData) {\r\n return !controlItems['chkPremiumOffset'].disabled && inforceFormData['chkPremiumOffset'];\r\n}\r\n\r\n//Custom - Inforce\r\nexport function IsProdIDFlexLife2(prodID) {\r\n return prodID === 602 || prodID === 603;\r\n}\r\n//Custom - Inforce\r\nexport function isProductADBPlus(prodID) {\r\n return prodID === 790 || prodID === 791;\r\n}\r\n//Custom - Inforce\r\nexport function IsProductExcludeRPU(prodID) {\r\n return prodID === 805 || prodID === 807;\r\n}\r\n\r\nexport function IsProductTruncateRPU(prodID) {\r\n return (\r\n prodID === 370 ||\r\n prodID === 371 ||\r\n prodID === 372 ||\r\n prodID === 373 ||\r\n prodID === 374 ||\r\n prodID === 375 ||\r\n prodID === 376 ||\r\n prodID === 377 ||\r\n prodID === 378 ||\r\n prodID === 379 ||\r\n prodID === 545 ||\r\n prodID === 546 ||\r\n prodID === 547 ||\r\n prodID === 548\r\n );\r\n}\r\n//Custom - Inforce\r\nexport function IsProductParticipatingTerm(prodID) {\r\n return (\r\n prodID === 114 ||\r\n prodID === 116 ||\r\n prodID === 117 ||\r\n prodID === 118 ||\r\n prodID === 119 ||\r\n prodID === 121 ||\r\n prodID === 122 ||\r\n prodID === 123\r\n );\r\n}\r\n\r\nexport function IsProductNonParticipatingTerm(prodID) {\r\n //T100s that do not 'participate'. Used for determining output report\r\n return (\r\n prodID === 101 ||\r\n prodID === 102 ||\r\n prodID === 103 ||\r\n prodID === 104 ||\r\n prodID === 105 ||\r\n prodID === 107 ||\r\n prodID === 108 ||\r\n prodID === 109 ||\r\n prodID === 110 ||\r\n prodID === 111 ||\r\n prodID === 113 ||\r\n prodID === 115 ||\r\n prodID === 120 ||\r\n prodID === 124 ||\r\n prodID === 125 ||\r\n prodID === 126 ||\r\n prodID === 127 ||\r\n prodID === 128 ||\r\n prodID === 129 ||\r\n prodID === 130 ||\r\n prodID === 131 ||\r\n prodID === 132 ||\r\n prodID === 133 ||\r\n prodID === 790 ||\r\n prodID === 791\r\n );\r\n //Include 790 and 791 (ADB Plus)\r\n}\r\n\r\nexport function IsProductParticipatingT100(prodID) {\r\n //T100s that do not 'participate'. Used for determining output report\r\n return (\r\n prodID === 553 ||\r\n prodID === 554 ||\r\n prodID === 556 ||\r\n prodID === 557 ||\r\n prodID === 558 ||\r\n prodID === 559\r\n );\r\n}\r\n\r\nexport function IsProductNonParticipatingT100(prodID) {\r\n //T100s that do not 'participate'. Used for determining output report\r\n return (\r\n prodID === 545 ||\r\n prodID === 546 ||\r\n prodID === 547 ||\r\n prodID === 548 ||\r\n prodID === 549 ||\r\n prodID === 550 ||\r\n prodID === 551 ||\r\n prodID === 552 ||\r\n prodID === 805 ||\r\n prodID === 806 ||\r\n prodID === 807\r\n );\r\n}\r\n\r\nexport function IsProductCurrentPremiumT100(prodID) {\r\n //T100s that do not 'participate'. Used for determining output report\r\n return prodID === 560 || prodID === 561 || prodID === 562 || prodID === 563;\r\n}\r\n\r\nexport function isProdIDGradedPremium(prodID) {\r\n return prodID === 341 || prodID === 343 || prodID === 330;\r\n}\r\n\r\n//Custom - Inforce\r\nexport function isProdIDProPlan(prodID) {\r\n return (\r\n prodID === 553 ||\r\n prodID === 554 ||\r\n prodID === 556 ||\r\n prodID === 557 ||\r\n prodID === 558 ||\r\n prodID === 559\r\n );\r\n}\r\n\r\nexport function isProdIDSOSBAEndowment(prodID) {\r\n return prodID === 801 || prodID === 802;\r\n}\r\n\r\nexport function isProductHealth(prodID) {\r\n return (\r\n prodID === 200 ||\r\n prodID === 201 ||\r\n prodID === 202 ||\r\n prodID === 203 ||\r\n prodID === 204 ||\r\n prodID === 205 ||\r\n prodID === 206 ||\r\n prodID === 207 ||\r\n prodID === 208 ||\r\n prodID === 209\r\n );\r\n}\r\n\r\nexport function isPolicyPaidUp(inforcePolicy) {\r\n let aDate = new Date(inforcePolicy.paidUpDate);\r\n return (\r\n aDate <= inforcePolicy.currentDate ||\r\n inforcePolicy.policyCStatCode === '3' ||\r\n inforcePolicy.policyCStatCode === '4'\r\n );\r\n return true;\r\n}\r\n\r\nexport function isPlanExcludeHealthMatch(PlanCode) {\r\n let strTemp = PlanCode.toUpperCase();\r\n return (\r\n strTemp === '88W 1' ||\r\n strTemp === '88W J' ||\r\n strTemp === '88P651' ||\r\n strTemp === '88P652' ||\r\n strTemp === '11L1 1' ||\r\n strTemp === '11L1 J' ||\r\n strTemp === '11L201' ||\r\n strTemp === '11L20J'\r\n );\r\n}\r\n\r\nexport function isPolicyMaturing(inforcePolicy, checkMonthsToMaturity) {\r\n let dtExpiryDate = new Date(inforcePolicy.expiryDate);\r\n let dtCurrentDate = new Date(inforcePolicy.currentDate);\r\n\r\n let monthsToMaturity = monthDiff(dtCurrentDate, dtExpiryDate);\r\n return monthsToMaturity <= checkMonthsToMaturity;\r\n}\r\n\r\nexport function isFundLoan(fundID) {\r\n return fundID.toUpperCase() === 'LOAN' || fundID.toUpperCase() === 'ULCF';\r\n}\r\n\r\nexport function modalFactor(mode) {\r\n return 12 / mode;\r\n}\r\n\r\n//Custom - Inforce\r\n//This is a duplicate from Tree.js. This needs to be moved to a core module\r\nfunction TextLookup_tEdit(typeID, valueID, useProperCase, t) {\r\n let outText = '';\r\n let lookupText = '';\r\n lookupText = t(`tEdit-${typeID}-${valueID}`);\r\n outText = lookupText.trim();\r\n if (useProperCase) {\r\n outText = toProperCase(outText);\r\n }\r\n return outText;\r\n}\r\n\r\n//UTILITY Function for trimming planCode: FACFMR ==>> FACFM\r\nfunction getPlanCode(planCode) {\r\n let code = planCode;\r\n if (code.length > 0 && code[code.length - 1] === 'R') {\r\n code = code.substring(0, code.length - 1);\r\n }\r\n return code;\r\n}\r\nexport function TextLookup_ProductName(planCode, t) {\r\n return TextLookup_tEdit('PROD', getPlanCode(planCode), false, t);\r\n}\r\n\r\nexport function TextLookup_PolicyName(planCode, t) {\r\n //console.log(`PlanCode = **${planCode.trim()}**`);\r\n //console.log(`lookup = ${TextLookup_tEdit('PNAME', planCode.trim(), false)}`);\r\n return TextLookup_tEdit('PNAME', getPlanCode(planCode.trim()), false, t);\r\n}\r\n\r\nexport function TextLookup_PolicyCStatCode(cStatCode, t) {\r\n return TextLookup_tEdit('POLST', cStatCode.toUpperCase(), false, t);\r\n}\r\n\r\nexport function TextLookup_PayoutMethodCode(payoutMethodCode, t) {\r\n return TextLookup_tEdit('APOT', payoutMethodCode, false, t);\r\n}\r\n\r\nexport function TextLookup_SubTable1(strCode, isUseProperCase, t) {\r\n return TextLookup_tEdit('STB1', strCode, isUseProperCase, t);\r\n}\r\n\r\nexport function TextLookup_SubTable2(strCode, isUseProperCase, t) {\r\n return TextLookup_tEdit('STB2', strCode, isUseProperCase, t);\r\n}\r\n\r\nexport function TextLookup_SubTable3(strCode, isUseProperCase, t) {\r\n return TextLookup_tEdit('STB3', strCode, isUseProperCase, t);\r\n}\r\n\r\nexport function TextLookup_SubTable4(strCode, isUseProperCase, t) {\r\n return TextLookup_tEdit('STB4', strCode, isUseProperCase, t);\r\n}\r\n\r\nexport function TextLookup_Relationship(strCode, t) {\r\n return TextLookup_tEdit('RELCD', strCode, false, t);\r\n}\r\n\r\nexport function TextLookup_Consent(strCode, t) {\r\n return TextLookup_tEdit('PRIV', strCode, false, t);\r\n}\r\n\r\nexport function TextLookup_AccountType(accountType, t) {\r\n switch (accountType.toUpperCase()) {\r\n case 'DIA':\r\n return t('FL Daily Interest Account');\r\n case 'GIA':\r\n return t('FL Guar Interest Accounts');\r\n case 'SEGFUND':\r\n return t('FL Equity-Linked Accounts');\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\n//Custom - Inforce\r\nexport function Translate_RRIF_Code(prodID) {\r\n switch (prodID) {\r\n case 666:\r\n return 'RRIF 3';\r\n case 652:\r\n case 657:\r\n return 'RRIF 4';\r\n case 731:\r\n return 'RRIF 6';\r\n case 753:\r\n return 'RRIF 1';\r\n case 754:\r\n return 'RRIF 2';\r\n case 658:\r\n case 667:\r\n return 'LIFFA';\r\n case 659:\r\n case 669:\r\n return 'LIFFC';\r\n case 668:\r\n return 'LIFFB';\r\n case 670:\r\n return 'LIFFM';\r\n case 671:\r\n return 'LIFFO';\r\n case 672:\r\n return 'LIFFS';\r\n case 680:\r\n return 'LIFFS2';\r\n case 734:\r\n return 'LIFEA';\r\n case 736:\r\n return 'LIFEC';\r\n case 737:\r\n return 'LIFEC1';\r\n case 747:\r\n return 'LIFEM';\r\n case 748:\r\n return 'LIFEM1';\r\n case 751:\r\n return 'LIFEO';\r\n case 752:\r\n return 'LIFEO1';\r\n case 756:\r\n return 'LIFES';\r\n case 757:\r\n return 'LIFES2';\r\n default:\r\n // Error condition\r\n return 'unkwn';\r\n }\r\n}\r\n//Core - format data\r\n//Todo this is a duplicate from Tree.js. Should be moved to a core module\r\nexport function format_Display_Date(dateString) {\r\n let aDate = new Date(dateString);\r\n return new Intl.DateTimeFormat('en-US', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n }).format(aDate);\r\n}\r\n\r\n//Todo this is a duplicate from Tree.js. Should be moved to a core module\r\nexport function format_Display_Date_Short(dateString) {\r\n let aDate = new Date(dateString);\r\n return new Intl.DateTimeFormat('en-US', {\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n }).format(aDate);\r\n}\r\n\r\n//Todo this is a duplicate from Tree.js. Should be moved to a core module\r\nexport function getCurrentDate() {\r\n //Note that the date.getDate() function actually gets the day of the month (.getDay() gives the day of the week)\r\n return new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\r\n}\r\n\r\n//ToDo: This needs to be moved to a core utils module\r\nexport function format_Display_Date_Object(dateObject) {\r\n return new Intl.DateTimeFormat('en-US', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n }).format(dateObject);\r\n}\r\n\r\nexport function getCurrentDateFormatted() {\r\n //Note that the date.getDate() function actually gets the day of the month (.getDay() gives the day of the week)\r\n let aDateObject = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\r\n return format_Display_Date_Object(aDateObject);\r\n}\r\n\r\nexport function formatDollar(amount) {\r\n let dollarValue = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n }).format(amount);\r\n //For negative numbers we remove the negative symbol and replace with brackets around the number\r\n if (dollarValue.substring(0, 1) === '-') {\r\n dollarValue = '(' + dollarValue.substring(1) + ')';\r\n }\r\n return dollarValue;\r\n}\r\n\r\nexport function formatAllocationPercent(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'percent',\r\n minimumFractionDigits: 2,\r\n }).format(amount / 100);\r\n}\r\n\r\nexport function formatInterestRate(amount) {\r\n return new Intl.NumberFormat('en-US', {\r\n style: 'percent',\r\n minimumFractionDigits: 2,\r\n }).format(amount);\r\n}\r\n\r\nexport function booleanToString(boolValue) {\r\n if (boolValue) {\r\n return '1';\r\n } else {\r\n return '0';\r\n }\r\n}\r\n\r\nexport function Format0Decimals(value) {\r\n return Number(value).toFixed(0);\r\n}\r\n\r\nexport function Format2Decimals(value) {\r\n return Number(value).toFixed(2);\r\n}\r\n\r\nexport function Format5Decimals(value) {\r\n return Number(value).toFixed(5);\r\n}\r\n\r\nexport function FormatnDecimals(value, n) {\r\n return Number(value).toFixed(n);\r\n}\r\n\r\nexport function formatSIN(sin) {\r\n if (sin.trim() === '' || sin === '000000000') {\r\n return 'Not Available';\r\n } else {\r\n let strTemp = '000000000' + sin;\r\n strTemp = strTemp.substring(strTemp.length - 9);\r\n let strTemp2 =\r\n strTemp.substring(0, 3) + '- ' + strTemp.substring(3, 6) + '-' + strTemp.substring(6, 9);\r\n return strTemp2;\r\n }\r\n}\r\n\r\n//Core - format data\r\nexport function formatIsAmountAboveZero(amount, output) {\r\n if (amount > 0) {\r\n return output;\r\n } else {\r\n return 'Not Selected';\r\n }\r\n}\r\n\r\n//Core - format data\r\nexport function toProperCase(str) {\r\n return str.replace(/\\w\\S*/g, function (txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n}\r\n//Custom Inforce\r\nexport function isInPayout(policy) {\r\n return (\r\n policy.policyType !== PolicyTypes.UL &&\r\n policy.policyType !== PolicyTypes.RRIF &&\r\n policy.annualPayoutAmount > 0\r\n );\r\n}\r\n\r\nexport function TextLookup_PremiumModeULReport(premiumMode, billingTypeCode, t) {\r\n let temp = TextLookup_PremiumModeReport(premiumMode, t).toLowerCase();\r\n if (billingTypeCode === '4') {\r\n temp = temp + ' by pre-authorized debit';\r\n }\r\n return temp;\r\n}\r\n\r\nexport function TextLookup_PremiumModeReport(premiumMode, t) {\r\n switch (premiumMode) {\r\n case PremiumModeTypes.Monthly:\r\n return t('msg-ReportMonthly');\r\n case PremiumModeTypes.Annual:\r\n return t('msg-ReportAnnual');\r\n case PremiumModeTypes.Quarterly:\r\n return t('msg-ReportQuarterly');\r\n case PremiumModeTypes.SemiAnnual:\r\n return t('msg-ReportSemiAnnual');\r\n default:\r\n break;\r\n }\r\n}\r\n\r\nexport function TextLookup_PremiumModePolicy(policy, t) {\r\n let temp = '';\r\n if (\r\n policy.policyCStatCode !== '3' &&\r\n policy.policyCStatCode !== '4' &&\r\n policy.billingStatus !== BILLINGSTATUS_BILLING\r\n ) {\r\n return 'N/A';\r\n }\r\n\r\n switch (policy.policyCStatCode) {\r\n case '3':\r\n case '4':\r\n return t('Paid Up');\r\n case '2':\r\n temp = t('Waived');\r\n break;\r\n default:\r\n break;\r\n }\r\n temp = temp + TextLookup_PremiumMode(policy.premiumMode, t);\r\n if (policy.policyCstatCode !== '2') {\r\n temp = temp + TextLookup_BillingTypeCode(policy.billingTypeCode, policy, t);\r\n }\r\n return temp;\r\n}\r\n\r\nexport function TextLookup_PremiumMode(premiumMode, t) {\r\n let valueID = '';\r\n switch (premiumMode) {\r\n case PremiumModeTypes.Monthly:\r\n valueID = '1';\r\n break;\r\n case PremiumModeTypes.Quarterly:\r\n valueID = '3';\r\n break;\r\n case PremiumModeTypes.SemiAnnual:\r\n valueID = '6';\r\n break;\r\n case PremiumModeTypes.Annual:\r\n valueID = '12';\r\n break;\r\n default:\r\n return '';\r\n }\r\n return TextLookup_tEdit('PAYM', valueID, false, t);\r\n}\r\n\r\nfunction TextLookup_BillingTypeCode(billingTypeCode, policy, t) {\r\n switch (billingTypeCode) {\r\n case '4':\r\n return ` ${t('PAD (Draw Day')} ${policy.drawDay} )`;\r\n case '5':\r\n return ` ${t('Military Pay')}`;\r\n case 'S':\r\n return ` ${t('Salary Deduction')}`;\r\n case 'D':\r\n return ` ${t('Premium Offset')}`;\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function TextLookup_DividendPayout(dividendPayout, t) {\r\n let valueID = '';\r\n\r\n switch (dividendPayout) {\r\n case DividendPayoutTypes.DOD:\r\n valueID = '4';\r\n break;\r\n case DividendPayoutTypes.DRP:\r\n valueID = '2';\r\n break;\r\n case DividendPayoutTypes.Enhanced:\r\n valueID = 'E';\r\n break;\r\n case DividendPayoutTypes.LRD:\r\n valueID = '6';\r\n break;\r\n case DividendPayoutTypes.None:\r\n valueID = '0';\r\n break;\r\n case DividendPayoutTypes.OYT:\r\n valueID = '5';\r\n break;\r\n case DividendPayoutTypes.PIC:\r\n valueID = '1';\r\n break;\r\n case DividendPayoutTypes.PUA:\r\n valueID = '3';\r\n break;\r\n default:\r\n return 'N/A';\r\n }\r\n return TextLookup_tEdit('DIV', valueID, false, t);\r\n}\r\n\r\nexport function TextLookup_PayoutFrequency(policy, t) {\r\n //Annually is not in tEdit so leaving it for now\r\n switch (policy.annualPayoutMode) {\r\n case PremiumModeTypes.Monthly:\r\n return t('Monthly');\r\n case PremiumModeTypes.Quarterly:\r\n return t('Quarterly');\r\n case PremiumModeTypes.SemiAnnual:\r\n return t('Semi-Annual');\r\n case PremiumModeTypes.Annual:\r\n return t('Annually');\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function TextLookup_PayoutType(payoutType, t) {\r\n switch (payoutType) {\r\n case PayoutTypes.Minimum:\r\n return t('Minimum');\r\n case PayoutTypes.Maximum:\r\n return t('Maximum');\r\n case PayoutTypes.FlatAmount:\r\n default:\r\n return t('Level');\r\n }\r\n}\r\n\r\nexport function TextLookup_NFOption(nfOption, t) {\r\n let valueID = '';\r\n let result = '';\r\n\r\n switch (nfOption) {\r\n case '':\r\n return t('N/A');\r\n case 'APL':\r\n valueID = '4';\r\n break;\r\n case 'ETI':\r\n valueID = '0';\r\n break;\r\n case 'PIC':\r\n valueID = '3';\r\n break;\r\n case 'RPU':\r\n valueID = '2';\r\n break;\r\n default:\r\n }\r\n result = TextLookup_tEdit('NFO', valueID, false, t);\r\n //some NF Options have a value in brackets that we do not want to display\r\n let index = result.indexOf('(', 0);\r\n if (index > -1) {\r\n result = result.substr(0, index);\r\n }\r\n return result;\r\n}\r\n\r\nexport function TextLookup_SmokeClass(smokeClass, t) {\r\n //For some reason this is not in tEdit so it is hard-coded\r\n switch (smokeClass.toUpperCase()) {\r\n case 'S':\r\n return t('Regular');\r\n case 'N':\r\n return t('Non-Smoker');\r\n case 'R':\r\n return t('Regular');\r\n default:\r\n return t('N/A');\r\n }\r\n}\r\n//Custom Inforce\r\nexport function TextLookup_Sex(sex, t) {\r\n //For some reason this is not in tEdit so it is hard-coded\r\n switch (sex.toUpperCase()) {\r\n case 'F':\r\n return t('Female');\r\n case 'M':\r\n return t('Male');\r\n case 'J':\r\n return t('Joint');\r\n default:\r\n return '';\r\n }\r\n}\r\n//Core - Inforce\r\nexport function Translate_NextPaymentDate(payoutPaymentDate, payoutEffectiveDate, currentDate) {\r\n let paymentDate = new Date(payoutPaymentDate);\r\n let effectiveDate = new Date(payoutEffectiveDate);\r\n let currDate = new Date(currentDate);\r\n if (paymentDate >= currDate) {\r\n return format_Display_Date(payoutPaymentDate);\r\n } else if (effectiveDate >= currDate) {\r\n return format_Display_Date(payoutEffectiveDate);\r\n } else {\r\n return 'Not Selected';\r\n }\r\n}\r\n//Custom - formatting data\r\nfunction addressItemRemoveNulls(addressItem) {\r\n addressItem.address1 = stringRemoveNull(addressItem.address1);\r\n addressItem.address2 = stringRemoveNull(addressItem.address2);\r\n addressItem.address3 = stringRemoveNull(addressItem.address3);\r\n addressItem.address4 = stringRemoveNull(addressItem.address4);\r\n return addressItem;\r\n}\r\n\r\nfunction stringRemoveNull(aString) {\r\n if (aString === null) {\r\n aString = '';\r\n }\r\n return aString;\r\n}\r\n\r\nexport function FormatMailingAddress1(addressItem) {\r\n //First remove nulls from address items and convert them to blanks\r\n addressItem = addressItemRemoveNulls(addressItem);\r\n return (addressItem.address1 + ' ' + addressItem.address3).trim() + ' ' + addressItem.address4;\r\n}\r\n\r\nexport function FormatMailingAddress2(addressItem) {\r\n return (addressItem.address2 + ' ' + addressItem.address3).trim() + ' ' + addressItem.address4;\r\n}\r\n\r\nexport function FormatMailingAddress3(addressItem) {\r\n return (\r\n (addressItem.city + ' ' + addressItem.province).trim() +\r\n ' ' +\r\n addressItem.postalCode\r\n ).trim();\r\n}\r\n//Custom - formatting data\r\nexport function FormatChurchName(insuredItem) {\r\n let temp =\r\n toProperCase((insuredItem.churchName.trim() + ', ' + insuredItem.churchCity).trim()) +\r\n ' ' +\r\n insuredItem.churchProvince;\r\n if (temp === ', ') {\r\n return 'NAME NOT ON FILE';\r\n }\r\n return temp;\r\n}\r\n//Core - formatting data\r\nexport function FormatPhoneNumber(phoneNumber) {\r\n if (phoneNumber === '') {\r\n return '';\r\n } else {\r\n //let temp = phoneNumber.padStart(10, \"0\");\r\n //This clears all non digit characters and returns only digits\r\n let temp = phoneNumber.replace(/\\D/g, ''); //\"(905) 640-2667\" => \"9056402667\"\r\n temp.padStart(10, '0');\r\n return '(' + temp.substr(0, 3) + ')' + ' ' + temp.substr(3, 3) + '-' + temp.slice(-4);\r\n }\r\n}\r\n//Custom - inforce\r\nexport function GetBeneficaryString(coverageItem, t) {\r\n let temp = '';\r\n\r\n if (coverageItem.beneficiaries.length > 0) {\r\n for (let insuredItem of coverageItem.beneficiaries) {\r\n temp =\r\n temp +\r\n fullName(insuredItem) +\r\n ', ' +\r\n insuredItem.beneficiaryRelationship +\r\n ' ' +\r\n formatAllocationPercent(insuredItem.beneficiaryPercent) +\r\n ' ';\r\n }\r\n\r\n if (temp !== '') {\r\n temp = temp.substr(0, temp.length - 1);\r\n }\r\n let beneficiary = coverageItem.beneficiaries[coverageItem.beneficiaries.length - 1];\r\n temp =\r\n temp +\r\n ' Class: ' +\r\n toProperCase(TextLookup_BeneficiaryCode(beneficiary.beneficiaryTypeCode, t));\r\n } else {\r\n return '';\r\n }\r\n return temp;\r\n}\r\n//Custom - inforce\r\nexport function TextLookup_BeneficiaryCode(beneficiaryTypeCode, t) {\r\n let valueID = '';\r\n switch (beneficiaryTypeCode.toUpperCase()) {\r\n case 'R':\r\n valueID = 'O';\r\n break;\r\n default:\r\n valueID = beneficiaryTypeCode.toUpperCase();\r\n }\r\n return TextLookup_tEdit('BTYPE', valueID, false, t);\r\n}\r\n\r\nexport function GetFullName(insuredItem) {\r\n return (insuredItem.firstName + ' ' + insuredItem.middleName).trim() + ' ' + insuredItem.lastName;\r\n}\r\n\r\nexport function GetFullNameWithSalutation(insuredItem) {\r\n //why is salutation null?\r\n return (insuredItem.salutation + ' ' + GetFullName(insuredItem)).trim();\r\n return GetFullName(insuredItem);\r\n}\r\n\r\nexport function fullName(insuredItem) {\r\n let salutation = '';\r\n let outName = '';\r\n\r\n if (insuredItem.partyType === PartyTypes.Person) {\r\n salutation = insuredItem.salutation.toUpperCase();\r\n if (\r\n salutation !== '' &&\r\n salutation !== 'MR' &&\r\n salutation !== 'MRS' &&\r\n salutation !== 'MISS' &&\r\n salutation !== 'MS'\r\n ) {\r\n outName =\r\n (\r\n (insuredItem.salutation + ' ' + insuredItem.firstName).trim() +\r\n ' ' +\r\n insuredItem.middleName\r\n ).trim() +\r\n ' ' +\r\n insuredItem.lastName;\r\n } else {\r\n outName =\r\n (insuredItem.firstName + ' ' + insuredItem.middleName).trim() + ' ' + insuredItem.lastName;\r\n }\r\n\r\n let deathDate = new Date(insuredItem.dateOfDeath);\r\n let blankDate = new Date(1900, 1, 1);\r\n\r\n if (deathDate > blankDate) {\r\n outName = outName + ' (Deceased)';\r\n }\r\n return outName;\r\n } else {\r\n return insuredItem.companyName;\r\n }\r\n}\r\n\r\n//Custom - inforce\r\nexport function isInPremiumOffset(inforcePolicy) {\r\n return inforcePolicy.billingTypeCode === BillingTypeCode.PREMIUMOFFSET;\r\n}\r\n\r\n//Custom - inforce\r\nexport function isNonExemptNew(inforcePolicy) {\r\n return (\r\n inforcePolicy.exemptStatus === ExemptStatus.NonExemptNew &&\r\n inforcePolicy.taxAccrualRule !== TaxAccrualRule.None\r\n );\r\n}\r\n\r\nexport function TranslatePaymentModeReport(item, formData, t) {\r\n switch (formData[item]) {\r\n case '012':\r\n return t('msg-Annual');\r\n case '06':\r\n return t('msg-SemiAnnual');\r\n case '03':\r\n return t('msg-Quarterly');\r\n case '01':\r\n return t('msg-Monthly');\r\n default:\r\n return t('msg-Monthly');\r\n }\r\n}\r\n\r\nexport function calculateAgeFromJan1(insured, currentDate) {\r\n //ToDo create this function\r\n return calcAge(insured.dateOfBirth, currentDate, -1);\r\n}\r\n\r\nfunction calcAge(birthdate, today, calcType) {\r\n //calcType -1 = age last, 0 = age nearest, 1 = age next\r\n let date1 = new Date(birthdate);\r\n let date2 = new Date(today);\r\n\r\n let Difference_In_Time = date2.getTime() - date1.getTime();\r\n\r\n // To calculate the no. of days between two dates\r\n let Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);\r\n if (Difference_In_Days < 0) {\r\n return 0;\r\n }\r\n\r\n let age = Difference_In_Days / 365;\r\n\r\n switch (calcType) {\r\n case -1: //age last\r\n return Math.trunc(age);\r\n case 0: //age nearest\r\n return Math.round(age);\r\n case 1: //age next\r\n return Math.trunc(age) + 1;\r\n default:\r\n //age last\r\n return Math.trunc(age);\r\n }\r\n}\r\n\r\nexport function calcAgeNearest(dtBirthDate, dtToday) {\r\n //Note that the date.getDate() function actually gets the day of the month (.getDay() gives the day of the week)\r\n let birthDate = new Date(dtBirthDate);\r\n let today = new Date(dtToday);\r\n let lastBirthDay = GetLastAnniversaryDate(birthDate, today);\r\n\r\n //complete years since birth date\r\n let intYears = dateDiffMS('Year', birthDate, today);\r\n if (\r\n today.getMonth() < birthDate.getMonth() ||\r\n (today.getMonth() == birthDate.getMonth() && today.getDate() < birthDate.getDate())\r\n ) {\r\n intYears = intYears - 1;\r\n }\r\n //Complete Months since last birthday\r\n let intMonths = dateDiffMS('Month', lastBirthDay, today);\r\n if (today.getDate() < lastBirthDay.getDate()) {\r\n intMonths = intMonths - 1;\r\n }\r\n\r\n //Days since last birthday plus months\r\n let intDays = dateDiffMS(\r\n 'Day',\r\n new Date(\r\n lastBirthDay.getFullYear(),\r\n lastBirthDay.getMonth() + intMonths,\r\n lastBirthDay.getDate()\r\n ),\r\n today\r\n );\r\n let intAge = intYears;\r\n if ((intMonths > 6) || (intMonths == 6 && intDays > 0)) {\r\n intAge = intAge + 1;\r\n }\r\n return intAge;\r\n}\r\n\r\nexport function GetLastAnniversaryDate(policyIssueDate, currentDate) {\r\n //Note that the date.getDate() function actually gets the day of the month (.getDay() gives the day of the week)\r\n let issueDate = new Date(policyIssueDate);\r\n let today = new Date(currentDate);\r\n //This function will return the date of the last anniversary\r\n\r\n if (issueDate.getMonth() < today.getMonth()) {\r\n //use current year\r\n return new Date(\r\n today.getFullYear(),\r\n issueDate.getMonth(),\r\n issueDate.getDate()\r\n );\r\n } else if (issueDate.getMonth() > today.getMonth()) {\r\n //use previous year\r\n return new Date(\r\n today.getFullYear() - 1,\r\n issueDate.getMonth(),\r\n issueDate.getDate()\r\n );\r\n } else {\r\n //month is the same\r\n if (issueDate.getDate() <= today.getDate()) {\r\n //'use the current year\r\n return new Date(\r\n today.getFullYear(),\r\n issueDate.getMonth(),\r\n issueDate.getDate()\r\n );\r\n } else {\r\n //use the previous year\r\n return new Date(\r\n today.getFullYear() - 1,\r\n issueDate.getMonth(),\r\n issueDate.getDate()\r\n );\r\n }\r\n }\r\n}\r\n\r\n//This function gets full months between two dates. The first date, d1, is the earliest of the two\r\nfunction monthDiff(d1, d2) {\r\n var months;\r\n months = (d2.getFullYear() - d1.getFullYear()) * 12;\r\n months -= d1.getMonth();\r\n months += d2.getMonth();\r\n return months <= 0 ? 0 : months;\r\n}\r\n\r\nfunction dateDiffMS(interval, startingDate, endingDate) {\r\n //This function is meant to mimic the MicroSoft DateDiff which is expected in our age nearest calculation and matches the desktop calculation\r\n var yearDiff = endingDate.getFullYear() - startingDate.getFullYear();\r\n if (interval.toUpperCase() == 'YEAR') {\r\n return yearDiff;\r\n } else if (interval.toUpperCase() == 'MONTH') {\r\n var monthDiff = endingDate.getMonth() - startingDate.getMonth();\r\n monthDiff += yearDiff * 12;\r\n return monthDiff;\r\n } else {\r\n return dateDiff(interval, startingDate, endingDate);\r\n }\r\n}\r\n\r\nfunction dateDiff(interval, startingDate, endingDate) {\r\n //Note that the date.getDate() function actually gets the day of the month (.getDay() gives the day of the week)\r\n //Returns the difference between two dates.\r\n //Interval should be \"Year\", \"Month\", \"Day\". Will default to Day if interval is incorrect.\r\n //var startDate = new Date(new Date(startingDate).toISOString().substr(0, 10));\r\n var startDate = new Date(startingDate);\r\n if (!endingDate) {\r\n endingDate = new Date().toISOString().substr(0, 10); // need date in YYYY-MM-DD format\r\n }\r\n var endDate = new Date(endingDate);\r\n if (startDate > endDate) {\r\n var swap = startDate;\r\n startDate = endDate;\r\n endDate = swap;\r\n }\r\n var startYear = startDate.getFullYear();\r\n var february = (startYear % 4 === 0 && startYear % 100 !== 0) || startYear % 400 === 0 ? 29 : 28;\r\n var daysInMonth = [31, february, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n var yearDiff = endDate.getFullYear() - startYear;\r\n var monthDiff = endDate.getMonth() - startDate.getMonth();\r\n if (monthDiff < 0) {\r\n yearDiff--;\r\n monthDiff += 12;\r\n }\r\n var dayDiff = endDate.getDate() - startDate.getDate();\r\n if (dayDiff < 0) {\r\n if (monthDiff > 0) {\r\n monthDiff--;\r\n } else {\r\n yearDiff--;\r\n monthDiff = 11;\r\n }\r\n dayDiff += daysInMonth[startDate.getMonth()];\r\n }\r\n\r\n if (interval.toUpperCase() == 'YEAR') {\r\n return yearDiff;\r\n } else if (interval.toUpperCase() == 'MONTH') {\r\n return monthDiff;\r\n } else {\r\n return dayDiff;\r\n }\r\n}\r\n\r\nexport function toTitleCase(str) {\r\n return str.replace(/\\w\\S*/g, function (txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n}\r\n","// import React, { useState, useEffect } from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {useTranslation} from 'react-i18next';\r\n// import translation from 'assets/translation.json';\r\n// import {useMemo, useCallback} from 'react';\r\n\r\ninterface ITransProps {\r\n t?: (key: string) => string;\r\n tInput?: (key: string) => string;\r\n tReport?: (key: string) => string;\r\n}\r\nexport const usePCTranslation = () => {\r\n const {t} = useTranslation();\r\n const user = useSelector((state) => state.auth.user);\r\n\r\n // const data = useMemo(() => JSON.parse(JSON.stringify(translation)), []);\r\n // const t = useCallback((key) => data[key], [data]);\r\n\r\n const tInput = (key: string, options) => {\r\n let value: string;\r\n if (user && user['inputLanguage'] === 'French') {\r\n value = t(`${key}-fr`, options);\r\n if (value === `${key}-fr`) {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n } else {\r\n value = t(`${key}-en`, options);\r\n if (value === `${key}-en`) {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n }\r\n };\r\n const tReport = (key: string, options) => {\r\n let value: string;\r\n if (user && user['reportLanguage'] === 'French') {\r\n value = t(`${key}-fr`, options);\r\n if (value === `${key}-fr`) {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n } else {\r\n value = t(`${key}-en`, options);\r\n if (value === `${key}-en`) {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n }\r\n };\r\n\r\n return {t: tInput, tInput, tReport};\r\n};\r\n\r\nexport default usePCTranslation;\r\n","import uuid from 'uuid';\r\n//Core - Report engine\r\nexport class ReportBuilder {\r\n constructor() {\r\n this.ReportData = {};\r\n }\r\n\r\n buildDataReport(user, reportInputItems, reportSettings, reportNumber, reportName) {\r\n this.ReportData.user = user;\r\n this.ReportData.reportID = uuid();\r\n this.ReportData.reportName = reportName;\r\n this.ReportData.reportNumber = reportNumber;\r\n this.ReportData.reportSettings = this.buildSettingsOutput(reportSettings);\r\n this.ReportData.reportInputItems = reportInputItems;\r\n return this.ReportData;\r\n }\r\n\r\n buildReport(\r\n reportListItems,\r\n reportScalarItems,\r\n controlItems,\r\n formData,\r\n insuranceData,\r\n reportSettings,\r\n columnStringItems,\r\n reportDataArrayString,\r\n isRunExcel,\r\n isRunPDF,\r\n xlsFileName,\r\n pdfFileName,\r\n isOverridePath,\r\n pathType,\r\n xlsOverridePath,\r\n pdfOverridePath,\r\n isDeleteWhenDone\r\n ) {\r\n this.ReportData.reportID = uuid();\r\n this.ReportData.isRunExcel = isRunExcel;\r\n this.ReportData.isRunPDF = isRunPDF;\r\n this.ReportData.pdfFileName = pdfFileName;\r\n this.ReportData.xlsFileName = xlsFileName;\r\n this.ReportData.isOverridePath = isOverridePath;\r\n this.ReportData.pathType = pathType;\r\n this.ReportData.pdfOverridePath = pdfOverridePath;\r\n this.ReportData.xlsOverridePath = xlsOverridePath;\r\n this.ReportData.isDeleteWhenDone = isDeleteWhenDone;\r\n\r\n this.ReportData.reportListItems = this.buildListItemsOutput(reportListItems);\r\n this.ReportData.reportSettings = this.buildSettingsOutput(reportSettings);\r\n this.ReportData.reportScalarItems = reportScalarItems;\r\n\r\n this.ReportData.reportColumnItems = this.buildColumnItemsOutput(insuranceData);\r\n this.ReportData.reportDataArray = this.buildDataArrayOutput(insuranceData);\r\n this.ReportData.reportColumnStringItems = this.buildColumnStringItemsOutput(columnStringItems);\r\n this.ReportData.reportDataArrayString = this.buildDataArrayStringOutput(reportDataArrayString);\r\n return this.ReportData;\r\n }\r\n\r\n buildNewBusinessReport(\r\n controlItems,\r\n formData,\r\n insuranceData,\r\n isRunExcel,\r\n isRunPDF,\r\n xlsFileName,\r\n pdfFileName,\r\n isOverridePath,\r\n pathType,\r\n xlsOverridePath,\r\n pdfOverridePath,\r\n isDeleteWhenDone,\r\n reportLanguage\r\n ) {\r\n console.log(\"insuranceData = \", insuranceData);\r\n\r\n //The API for globalVariables.booleanValue is an integer (1 or 0)\r\n //but the value in the field returned from the calculation API is boolean ( true or false)\r\n //so we must convert it before sending it back.\r\n insuranceData.globalVariables.forEach(function (arrayItem) {\r\n arrayItem.booleanValue = JSON.parse(arrayItem.booleanValue) ? 1 : 0;\r\n });\r\n\r\n this.ReportData.reportID = uuid();\r\n this.ReportData.isRunExcel = isRunExcel;\r\n this.ReportData.isRunPDF = isRunPDF;\r\n this.ReportData.pdfFileName = pdfFileName;\r\n this.ReportData.xlsFileName = xlsFileName;\r\n this.ReportData.isOverridePath = isOverridePath;\r\n this.ReportData.pathType = pathType;\r\n this.ReportData.pdfOverridePath = pdfOverridePath;\r\n this.ReportData.xlsOverridePath = xlsOverridePath;\r\n this.ReportData.isDeleteWhenDone = isDeleteWhenDone;\r\n this.ReportData.reportLanguage = reportLanguage;\r\n this.ReportData.insuranceData = insuranceData;\r\n this.ReportData.formData = formData;\r\n ////this.ReportData.controlItems = controlItems; //not currently in the ReportData object\r\n return this.ReportData;\r\n }\r\n\r\n //Report List items data generation\r\n addReportListItem(name, reportFile, custom, required, pageBreak, custColFile) {\r\n return {name, reportFile, custom, required, pageBreak, custColFile};\r\n }\r\n buildListItemsOutput(reportListItems) {\r\n let ListItemsArray = [];\r\n reportListItems.forEach((item) => {\r\n ListItemsArray.push({...item});\r\n });\r\n return ListItemsArray;\r\n }\r\n //Report List End\r\n\r\n buildDataArrayOutput = (insuranceData) => {\r\n let dataArray = [];\r\n insuranceData.dblTableData_Main.forEach((item) => {\r\n dataArray.push(item);\r\n });\r\n //console.log('DataArray: ', dataArray);\r\n return dataArray;\r\n };\r\n\r\n buildColumnItemsOutput = (insuranceData) => {\r\n let columnItems = [];\r\n insuranceData.columnItems.forEach((item) => {\r\n const {name, displayName, columnNumber} = item;\r\n columnItems.push({name, displayName, columnNumber});\r\n });\r\n return columnItems;\r\n };\r\n //Insurance End\r\n\r\n buildSettingsOutput = (reportSettings) => {\r\n let reportSettingsArray = [];\r\n reportSettings.forEach((item) => {\r\n reportSettingsArray.push({...item});\r\n });\r\n return reportSettingsArray;\r\n };\r\n //Settings End\r\n\r\n //Column String Items\r\n buildColumnStringItemsOutput = (columnStringItems) => {\r\n let columnStringItemsObj = [];\r\n columnStringItems.forEach((item) => {\r\n let {name, displayName, columnNumber} = item;\r\n columnStringItemsObj.push({name, displayName, columnNumber});\r\n });\r\n\r\n return columnStringItemsObj;\r\n };\r\n //Column String End\r\n\r\n //Data Array String\r\n buildDataArrayStringOutput = (dataArrayStringItems) => {\r\n let dataArrayStringObj = [];\r\n dataArrayStringItems.forEach((item) => dataArrayStringObj.push(item));\r\n\r\n return dataArrayStringObj;\r\n };\r\n // Data Array String End\r\n}\r\n","import React, {useState, useEffect} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst TabsHeader = ({children, setActiveTab}) => {\r\n const {t} = usePCTranslation();\r\n const controlItems = useSelector((state) => state.setupItems.controlItems);\r\n const [active, setActive] = useState(children[0].props.name);\r\n const onClickTabItem = (event, tab, value) => {\r\n setActive(tab);\r\n setActiveTab(event, tab, value);\r\n };\r\n\r\n const { permissions } = useSelector(state => state.auth.user);\r\n\r\n\r\n return (\r\n
    \r\n
      \r\n {children.map((child) => {\r\n if (child === undefined || child.props.isHidden || permissions[child?.props?.permissionName]?.isActive === Boolean(false)) {\r\n return null;\r\n }\r\n const {name} = child.props;\r\n if (controlItems[name] && controlItems[name].disabled) {\r\n return (\r\n
    • \r\n {t(`${name}-label`)}\r\n
    • \r\n );\r\n }\r\n return (\r\n
    • onClickTabItem(e, name, e.target.value)}>\r\n {t(`${name}-label`)}\r\n
    • \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\nexport default TabsHeader;\r\n","function sessionStore(formName, name, value) {\r\n let cacheData = {};\r\n if (sessionStorage.getItem(formName)) {\r\n cacheData = JSON.parse(sessionStorage.getItem(formName));\r\n cacheData = {...cacheData, [name]: value};\r\n sessionStorage.setItem(formName, JSON.stringify(cacheData));\r\n }\r\n}\r\n//this utility will update store as well as session storage\r\nexport function updateStoreFormSessionData(formData, name, value = \"\") {\r\n switch (formData[\"formName\"]) {\r\n case \"illustration\":\r\n formData[name] = value;\r\n sessionStore(\"newBusiness\", name, value);\r\n break;\r\n case \"inforce\":\r\n formData[name] = value;\r\n sessionStore(\"inforceFormData\", name, value);\r\n break;\r\n case \"alphalookup\":\r\n break;\r\n case \"eApplication\":\r\n formData[name] = value;\r\n sessionStore(\"eAppFormData\", name, value);\r\n break;\r\n case \"dataReports\":\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n}\r\n\r\nexport const setContentHeight = (delay = 100) => {\r\n // setTimeout(() => {\r\n // let height = 0;\r\n // let list = document.querySelectorAll('.fixedPageHdr');\r\n // list.forEach((item) => {\r\n // height += item.offsetHeight;\r\n // });\r\n // let contentEl = document.getElementById('content-id');\r\n // if (contentEl) {\r\n // contentEl.style.marginTop = height + 'px';\r\n // }\r\n // }, 100);\r\n // setTimeout(() => {\r\n // let height = 0;\r\n // let list = document.querySelectorAll('.fixedPageHdr');\r\n // list.forEach((item) => {\r\n // height += item.offsetHeight;\r\n // });\r\n // let contentEl = document.getElementById('content-id');\r\n // if (contentEl) {\r\n // contentEl.style.marginTop = height + 'px';\r\n // }\r\n // }, 200);\r\n // setTimeout(() => {\r\n // let height = 0;\r\n // let list = document.querySelectorAll('.fixedPageHdr');\r\n // list.forEach((item) => {\r\n // height += item.offsetHeight;\r\n // });\r\n // let contentEl = document.getElementById('content-id');\r\n // if (contentEl) {\r\n // contentEl.style.marginTop = height + 'px';\r\n // }\r\n // }, 300);\r\n};\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAA8CAYAAAAUufjgAAAAAXNSR0IArs4c6QAAA+JJREFUaAXtWltsDFEY/v8zgxWNS6RdbTWuSeMSFUFIEJK6BKteEA+IqCCtxpMHXhBeRCJdt4gHiQcEESvVRII2QhAaIq4PEre26pqo7eruzvz+3ZqxmtmZWad4OfOw859zvu8//37nP+dM5gyC5DX0cGRCIkmbAXA8ApQCUAIInxHAfaHp+1urF72S6YJ9/tk1JFyfz7GECWEFEP86XFwZBwFHA3kDtr5cO+e7A8SzytGxF2vEsUgwFoOrRDTOC5tuR7yi9REVLRtCHb7wGSA9w/Zljg7X9/kWS1zj4MZaBER4A4jHAEWTIFPn4Z1GBJWMyU9jiMrNTuM82wssjt97zgoGwxdqgKDW7gDxFKtT2V2d4oNXBifN6Gke/nIbq4lQW/WSOrvswxA+MDZk+PGGAE+AbVYFIjbMGrJkVffgUu3N1eWfYGBgKWOeWHgwabdt+zRyCrCzPTqFZ2nQ9o1i19nlaNjlbkbb6vlRQNpnVxOVFR26XGKXfRieQ1wcrh9KmJgEIIRB5kIesvVdfrFdaLQGSeOUy34RmHkmwQl7pguxRwO8ZyAltV54m9X/mJ3Ni5dbY+HBS8PISD4moH5uOIm21oF5WPp8XUV7Nh/pAFMzM0rJ5YRUxsBABngUz8ScZ14G39PkHD3LoPc2kCDKujVtrAmd24FoYvDI5QKMxxp5nMbYIGfDZGefnJtyq7WXHxcaAt4I9O8/V8dEbJ+P4HiZg5Z3NRU5JbhT/8vOkHa9NZJ0asus47SaEWv/ul3nXWoez8x0G493ExsvbSBCCS+4U+1yDxgf8hsRWn854j/eyN1njsxYSzAkmMs7ya9lQ+jalpaq0A2LXhS+uNIA86RV7ol7/ofZ9BQititNaNuaq0O3rIrC2oureOaf6CpTMKd10HLyL+8qQFm1OQf9XTxZtJIDkSJ/6Oyom1/qfPeZ8pILuDBuUnP2rn22fM+6dTs6cM1Bfk6OO7J6sJKXlE43d64Ban17N/Bu/cLNgUwb7xZ3BhWMfOTmw3WI31Yu+MwrfynnTTElhOuDhVsnTm2aZibfbFzcwttn1y7hBOI61wBTnJ/Pe6+z8KWqcZM33XWIvel/H6EClNVYKagUlFVAlq9yUCkoq4AsX+WgUlBWAVm+ykGloKwCsnyVg0pBWQVk+SoHlYKyCsjyVQ4qBWUVkOWrHJRVUOf3unF+B9s75cg0zOlFtXWmrFMZvonGxJ9Hh+wGO3U+xnzIp+GTU075mHSvAZ4HkTL9e3N/e2NNjwQJ3OnN+g8IhISm99ot0p+J8OcifCRwl9+4u55Z/IswOYYOjuU6f7E0s7lq0YMfuawtl1s7RlwAAAAASUVORK5CYII=\"","import React, {Component} from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {withPCTranslation} from 'core/hocs';\r\n\r\nclass PremiumDisplay extends Component {\r\n formatValue(n) {\r\n return '$' + n.toFixed(2).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n }\r\n\r\n render() {\r\n let insuranceData = this.props.insuranceData;\r\n //let msg_premiumsummary = this.props.t('msg-PremiumSummary');\r\n let msg_basepremium = this.props.t('msg-BasePremium');\r\n let msg_annualpremium = this.props.t('msg-AnnualPremium');\r\n let msg_modalpremium = this.props.t('msg-ModalPremium');\r\n let msg_nodata = this.props.t('msg-NoData');\r\n let msg_notApplicable = this.props.t('msg-NotApplicable');\r\n const {\r\n propStyle: {container, header, summary, coveragetype, coveragevalue},\r\n } = this.props;\r\n\r\n if (Object.keys(insuranceData).length === 0) {\r\n return (\r\n
    \r\n {msg_nodata}\r\n
    \r\n );\r\n } else {\r\n //const errors = this.props.stateData['numErrors'] == 0;\r\n if (this.props.stateData['numErrors'] > 0 || insuranceData.jointAgeError) {\r\n return (\r\n
    \r\n {/*
    \r\n {msg_premiumsummary}\r\n
    */}\r\n
    \r\n {msg_notApplicable}\r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n {/*
    \r\n {msg_premiumsummary}\r\n
    */}\r\n
    \r\n
    \r\n
    {msg_basepremium}
    \r\n
    \r\n {this.formatValue(this.getInitialPremiumByID('001'))}\r\n
    \r\n
    \r\n {Object.keys(insuranceData.coverageListItems).map((i) => (\r\n \r\n
    \r\n {insuranceData.coverageListItems[i].coverageType}\r\n
    \r\n
    \r\n {this.formatValue(insuranceData.coverageListItems[i].annualPremium)}\r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    {msg_annualpremium}
    \r\n
    \r\n {this.formatValue(this.getInitialCalcValueByName('AnnualPremium'))}\r\n
    \r\n
    \r\n
    \r\n
    {msg_modalpremium}
    \r\n
    \r\n {this.formatValue(this.getInitialCalcValueByName('ModalPremium'))}\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n }\r\n }\r\n\r\n getInitialPremiumByID(strCoverageID) {\r\n for (let columnItem of this.props.insuranceData.columnItems) {\r\n if (columnItem.name === 'AnnualPremium_' + strCoverageID) {\r\n //console.log(\"FOUND\");\r\n //Object.keys(aColumnItem).map(i => console.log(`${i} = ${aColumnItem[i]}`));\r\n //console.log(this.props.insuranceData.dblTableData_Main[1][aColumnItem.columnNumber]);\r\n return this.props.insuranceData.dblTableData_Main[1][columnItem.columnNumber];\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n getInitialPremiumByName(strName) {\r\n for (let columnItem of this.props.insuranceData.columnItems) {\r\n if (columnItem.name === strName) {\r\n //console.log(\"FOUND\");\r\n return this.getInitialPremiumByID(columnItem.coverageID);\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n getInitialCalcValueByName(strName) {\r\n for (let columnItem of this.props.insuranceData.columnItems) {\r\n if (columnItem.name === strName) {\r\n //console.log(\"FOUND\");\r\n return this.props.insuranceData.dblTableData_Main[1][columnItem.columnNumber];\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n}\r\n\r\nexport default withPCTranslation(PremiumDisplay);\r\n","export default __webpack_public_path__ + \"static/media/spinner.fb3e9da4.gif\";","import React, { Fragment } from \"react\";\r\nimport spinner from \"assets/spinner.gif\";\r\n\r\nconst Spinner = ({ styling=\"\" }) => (\r\n
    \r\n \r\n
    \r\n);\r\n\r\nexport default Spinner;\r\n","export default \"data:image/png;base64,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\"","import React from 'react';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\n\r\nconst PanelItemGroup = ({children, styling, onClick}) => {\r\n return (\r\n
    \r\n {children}\r\n
    \r\n );\r\n};\r\n\r\nexport default PanelItemGroup;\r\n","import {addScalarItem, buildScalarFromControlItems, getIllustrationNumber, getScalarItem} from 'core/report/reportUtils';\r\nimport {globalVariables, toProperCase, isEmpty} from 'core/utils/util';\r\nimport {\r\n isProductPar,\r\n IsProductParticipatingTerm,\r\n IsProductNonParticipatingTerm,\r\n IsProductParticipatingT100,\r\n IsProductNonParticipatingT100,\r\n IsProductCurrentPremiumT100,\r\n Translate_RRIF_Code,\r\n TextLookup_PolicyName,\r\n format_Display_Date,\r\n formatDollar,\r\n TextLookup_PolicyCStatCode,\r\n TextLookup_PremiumModePolicy,\r\n booleanToString,\r\n IsProductPremOffset,\r\n isProdIDProPlan,\r\n IsProdIDFlexLife2,\r\n FormatPhoneNumber,\r\n FormatMailingAddress1,\r\n FormatMailingAddress2,\r\n FormatMailingAddress3,\r\n formatIsAmountAboveZero,\r\n GetFullName,\r\n fullName,\r\n getCurrentDate,\r\n isInPayout,\r\n format_Display_Date_Short,\r\n isProductHealth,\r\n isProdIDSOSBAEndowment,\r\n isPolicyMaturing,\r\n Format0Decimals,\r\n Format2Decimals,\r\n TextLookup_PremiumModeULReport,\r\n format_Display_Date_Object,\r\n TextLookup_PremiumModeReport,\r\n isPolicyPaidUp,\r\n formatInterestRate,\r\n TextLookup_NFOption,\r\n TextLookup_DividendPayout,\r\n TextLookup_PayoutFrequency,\r\n TextLookup_PayoutMethodCode,\r\n TextLookup_PayoutType,\r\n isProductLIF,\r\n Translate_NextPaymentDate,\r\n FormatChurchName,\r\n GetFullNameWithSalutation,\r\n GetBeneficaryString,\r\n isProductADBPlus,\r\n isInPremiumOffset,\r\n isPremiumOffsetSelected,\r\n IsProductExcludeRPU,\r\n isProdIDSOSBA,\r\n isProductEssentialLife,\r\n modalFactor,\r\n calculateAgeFromJan1,\r\n} from 'custom/common/utils/lookupFunctions';\r\nimport {getCoverageItemByType, GetColumnNumber, getCoverageByID} from 'core/utils/calcUtils';\r\nimport {\r\n CoverageTypes,\r\n ExemptStatus,\r\n DividendPayoutTypes,\r\n PolicyTypes,\r\n TaxAccrualRule,\r\n BillingMethodTypes,\r\n AssigneeTypes,\r\n SpouseContributorTypes,\r\n PayoutTypes,\r\n PayoutInsuredTypes,\r\n DIVIDEND_ALTERNATESCALE,\r\n Alternate_IntRate,\r\n ALTERNATE_COI_INCREASE,\r\n ReportColumns,\r\n SOSBA_MONTHS_TO_MATURITY,\r\n} from 'core/constants/calcConstants';\r\n// import {REPORT_SETTING} from 'core/report/constants';\r\nimport {GetPhoneItem, GetAddressItem, BuildSummaryPolicyExpiryColumnText, BuildSummaryColumnText, GetSkipPaymentYear, BuildInvestmentAllocationScalars} from '../utils/inforceUtils';\r\nimport {ScalarTypes, REPORT_SETTING} from 'core/constants/reportConstants';\r\nimport {phoneTypes, addressTypes} from '../utils/constants';\r\n\r\n//Custom - inforce\r\nexport const buildScalarOutput = (controlItems, formData, insuranceData, inforceData, isStatus, user, t, reportBuildModel) => {\r\n let scalarReportArray = [];\r\n let aGlobalVariable;\r\n let intYear;\r\n let intYearCol;\r\n\r\n console.log('inforceData', inforceData);\r\n console.log('formData', formData);\r\n\r\n // //New Business Scalars\r\n // scalarReportArray.push(this.addScalarItem(\"Policy Type Choice\", 1, ScalarTypes.SCALAR_LONGINT));\r\n // return scalarReportArray;\r\n\r\n //Core - Move this to core function for Report\r\n buildScalarFromControlItems(controlItems, scalarReportArray, formData, user, t);\r\n\r\n //Adding Custom Scalars\r\n //ToDo separate out core code above from this custom code\r\n console.log('starting custom inforce scalars');\r\n console.log('globalVariables', globalVariables);\r\n console.log('insuranceData.globalVariables', insuranceData.globalVariables);\r\n console.log('formData', formData);\r\n\r\n //Inforce Scalars\r\n let inforcePolicy = inforceData.inforcePolicy;\r\n let aBaseCoverage = getCoverageItemByType(inforcePolicy.coverages, CoverageTypes.BASE);\r\n\r\n scalarReportArray.push(addScalarItem('Report All Years', !formData['chkSelectDuration'], ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('Illustration Number', 'PPR# ' + inforcePolicy.policyNumber + formData['txtIllustrationNumber'], ScalarTypes.SCALAR_STRING)); //ToDo: add format(now, yyyyMMddHHmmss\")\r\n scalarReportArray.push(addScalarItem('Policy Number', inforcePolicy.policyNumber, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Policy Type Footer', 'Life - PPR', ScalarTypes.SCALAR_STRING));\r\n\r\n if (!isEmpty(insuranceData.globalVariables))\r\n {\r\n aGlobalVariable = getScalarItem(insuranceData.globalVariables, 'ISLOANLAPSE');\r\n if (!isEmpty(aGlobalVariable)) {\r\n scalarReportArray.push(addScalarItem('Is Loan Lapse', aGlobalVariable.booleanValue, ScalarTypes.SCALAR_BOOLEAN));\r\n }\r\n }\r\n\r\n scalarReportArray.push(\r\n addScalarItem('Is Par', booleanToString(isProductPar(inforcePolicy.policyType, inforcePolicy.prodID) && inforcePolicy.dividendPayoutType !== DividendPayoutTypes.None), ScalarTypes.SCALAR_BOOLEAN)\r\n );\r\n\r\n console.log('inforcepolicy = ', inforcePolicy);\r\n scalarReportArray.push(\r\n addScalarItem('Is Premium Offset', booleanToString(IsProductPremOffset(inforcePolicy, controlItems, formData) && inforcePolicy.premiumOffsetPluginName != ''), ScalarTypes.SCALAR_BOOLEAN)\r\n );\r\n scalarReportArray.push(addScalarItem('Plan Title', aBaseCoverage.name, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Is FlexLife2', IsProdIDFlexLife2(inforcePolicy.prodID), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('Is ProPlan', booleanToString(isProdIDProPlan(inforcePolicy.prodID)), ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n scalarReportArray.push(addScalarItem('Agent Name', user.profileName, ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('Agent Phone', FormatPhoneNumber(user.phoneNumberPrimary), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Agent Email', user.emailAddress, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Agent Fax', user.faxNumber, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Agent Phone(Secondary)', FormatPhoneNumber(user.phoneNumberSecondary), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Owner', inforcePolicy.owners[0].name, ScalarTypes.SCALAR_STRING));\r\n if (IsProdIDFlexLife2(inforcePolicy.prodID)) {\r\n if (!isEmpty(insuranceData.globalVariables)) {\r\n BuildInvestmentAllocationScalars(scalarReportArray, inforceData.policy, formData, insuranceData);\r\n }\r\n }\r\n let strInPayout = '';\r\n if (inforcePolicy.policyType === PolicyTypes.RRIF || inforcePolicy.policyType === PolicyTypes.SegregatedFundRRIF) {\r\n scalarReportArray.push(addScalarItem('Policy Type', TextLookup_PolicyName(Translate_RRIF_Code(inforcePolicy.prodID), t), ScalarTypes.SCALAR_STRING));\r\n } else {\r\n if (isInPayout(inforcePolicy)) {\r\n strInPayout = ' (In Payout)';\r\n }\r\n scalarReportArray.push(addScalarItem('Policy Type', TextLookup_PolicyName(inforcePolicy.planCode, t) + strInPayout, ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Illustration Date', format_Display_Date(inforcePolicy.illustrationDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Illustration Date Short', format_Display_Date_Short(inforcePolicy.illustrationDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Current Data Date', format_Display_Date(inforceData.currentDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Current Data Date Short', format_Display_Date_Short(inforceData.currentDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Current Date', format_Display_Date(getCurrentDate()), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Transaction Start Date', format_Display_Date(inforcePolicy.transactionStartDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Version', '1.0.0', ScalarTypes.SCALAR_STRING));\r\n let aDec21982Date = new Date(1982, 12, 2);\r\n let aIssueDate = new Date(inforcePolicy.issueDate);\r\n scalarReportArray.push(addScalarItem('Is Before Dec 2 1982', aIssueDate < aDec21982Date, ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n //For the tax comments on the PPR_Status report we are going to break it down to 2 switches.\r\n // 1. IsShowTaxText (true/false). This will hide/show the tax text memo field\r\n // 2. TaxTextID (numeric). This will dictate which text will show using report logic\r\n let isShowTaxText = false;\r\n\r\n if (inforcePolicy.isRegistered) {\r\n isShowTaxText = true;\r\n scalarReportArray.push(addScalarItem('TaxTextID', 1, ScalarTypes.SCALAR_INTEGER));\r\n } else {\r\n if (isProductHealth(inforcePolicy.prodID)) {\r\n isShowTaxText = true;\r\n scalarReportArray.push(addScalarItem('TaxTextID', 0, ScalarTypes.SCALAR_INTEGER));\r\n } else {\r\n switch (inforcePolicy.exemptStatus) {\r\n case ExemptStatus.Grandfathered:\r\n isShowTaxText = true;\r\n scalarReportArray.push(addScalarItem('TaxTextID', 2, ScalarTypes.SCALAR_INTEGER));\r\n break;\r\n case ExemptStatus.ExemptWithTesting:\r\n case ExemptStatus.ExemptWithoutTesting:\r\n case ExemptStatus.ExemptWithoutTestingNew:\r\n isShowTaxText = false;\r\n break;\r\n case ExemptStatus.NonExempt:\r\n case ExemptStatus.NonExemptNew:\r\n switch (inforcePolicy.taxAccrualRule) {\r\n case TaxAccrualRule.None:\r\n isShowTaxText = true;\r\n scalarReportArray.push(addScalarItem('TaxTextID', 3, ScalarTypes.SCALAR_INTEGER));\r\n break;\r\n case TaxAccrualRule.Trienniel:\r\n isShowTaxText = true;\r\n scalarReportArray.push(addScalarItem('TaxTextID', 4, ScalarTypes.SCALAR_INTEGER));\r\n break;\r\n case TaxAccrualRule.CalendarYear:\r\n case TaxAccrualRule.PolicyYear:\r\n isShowTaxText = true;\r\n scalarReportArray.push(addScalarItem('TaxTextID', 5, ScalarTypes.SCALAR_INTEGER));\r\n break;\r\n default:\r\n isShowTaxText = true;\r\n scalarReportArray.push(addScalarItem('TaxTextID', 3, ScalarTypes.SCALAR_INTEGER));\r\n break;\r\n }\r\n break;\r\n default:\r\n isShowTaxText = true;\r\n scalarReportArray.push(addScalarItem('TaxTextID', 2, ScalarTypes.SCALAR_INTEGER));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('isShowTaxText', booleanToString(isShowTaxText), ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n let showSumInsured = (aBaseCoverage.isUseDeathBenefitRateTable || (isProdIDSOSBAEndowment(aBaseCoverage.prodID)) && !isPolicyMaturing(inforcePolicy, SOSBA_MONTHS_TO_MATURITY)) && aBaseCoverage.sumInsured !== aBaseCoverage.faceAmount;\r\n scalarReportArray.push(addScalarItem('is show sum insured', booleanToString(showSumInsured), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('Dividend - Alternate Scale', DIVIDEND_ALTERNATESCALE, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend - Int Rate Reduction', Format0Decimals(Alternate_IntRate.Reduction), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Dividend - Int Rate Red 2 Dec', Format2Decimals(Alternate_IntRate.Reduction), ScalarTypes.SCALAR_STRING));\r\n\r\n //UL Scalars\r\n if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n if (!isStatus) {\r\n intYearCol = GetColumnNumber('CalendarYear', insuranceData.columnItems);\r\n aGlobalVariable = getScalarItem(insuranceData.globalVariables, 'BP');\r\n if (!isEmpty(aGlobalVariable)) {\r\n intYear = insuranceData.dblTableData_Main[aGlobalVariable.integerValue][intYearCol];\r\n scalarReportArray.push(addScalarItem('UL - Policy End Year', intYear, ScalarTypes.SCALAR_INTEGER));\r\n }\r\n intYearCol = GetColumnNumber('ALT_CalendarYear', insuranceData.columnItems);\r\n\r\n aGlobalVariable = getScalarItem(insuranceData.globalVariables, 'ALT_BP');\r\n if (!isEmpty(aGlobalVariable)) {\r\n intYear = insuranceData.dblTableData_Main[aGlobalVariable.integerValue][intYearCol];\r\n scalarReportArray.push(addScalarItem('UL - Policy End Year ALT', intYear, ScalarTypes.SCALAR_INTEGER));\r\n }\r\n\r\n if (formData['chkUseClientRates'] === true) {\r\n aGlobalVariable = getScalarItem(insuranceData.globalVariables, 'ALT2_BP');\r\n if (!isEmpty(aGlobalVariable)) {\r\n intYearCol = GetColumnNumber('ALT2_CalendarYear', insuranceData.columnItems);\r\n intYear = insuranceData.dblTableData_Main[aGlobalVariable.integerValue][intYearCol];\r\n scalarReportArray.push(addScalarItem('UL - Policy End Year ALT2', intYear, ScalarTypes.SCALAR_INTEGER));\r\n }\r\n }\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('UL - Int Rate Reduction', Format0Decimals(Alternate_IntRate.Reduction_UL), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('UL - Int Rate Red 2 Dec', Format2Decimals(Alternate_IntRate.Reduction_UL), ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('UL - COI Increase', Format0Decimals(ALTERNATE_COI_INCREASE * 100), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Premium Frequency UL Report', TextLookup_PremiumModeULReport(inforcePolicy.premiumMode, inforcePolicy.billingTypeCode, t), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Mode Deposit Amount', formatDollar(inforcePolicy.totalModalPremium.toFixed(2)), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('UL - Deposits This Year', formatDollar(inforcePolicy.ulDepositsThisYear), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('UL - Paid To Date', format_Display_Date(inforcePolicy.ulPaidToDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('UL - Last Deposit Date', format_Display_Date(inforcePolicy.ulLastDepositDate), ScalarTypes.SCALAR_STRING));\r\n //ToDo: Check to see if this is supposed to be current date or current data date\r\n let currentDate = getCurrentDate();\r\n let lastDepositDate = new Date(inforcePolicy.ulLastDepositDate);\r\n let isLastDate = lastDepositDate < currentDate;\r\n scalarReportArray.push(addScalarItem('UL - Last Deposit Date Passed', booleanToString(isLastDate), ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n scalarReportArray.push(addScalarItem('Last Anniversary Date', format_Display_Date(inforcePolicy.illustrationDate), ScalarTypes.SCALAR_STRING));\r\n\r\n let nextAnniversary = new Date(inforcePolicy.illustrationDate);\r\n nextAnniversary.setFullYear(nextAnniversary.getFullYear() + 1);\r\n scalarReportArray.push(addScalarItem('Next Anniversary Date', format_Display_Date_Object(nextAnniversary), ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('UL - Max Deposit This Year', formatDollar(inforcePolicy.ulMaxDepositThisYear), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('UL - Max Deposit Next Year', formatDollar(inforcePolicy.ulMaxDepositThisYear), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('UL - Level Exempt Deposit', formatDollar(0), ScalarTypes.SCALAR_STRING));\r\n //Remaining Max Deposit = Maximum Deposit for the year - FPPRPolicy.ulDepositsThisYear\r\n scalarReportArray.push(addScalarItem('UL - Remaining Max Deposit', formatDollar(inforcePolicy.ulMaxDepositThisYear - inforcePolicy.ulDepositsThisYear), ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('ProdName', inforcePolicy.prodName.trim(), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('ProdID', inforcePolicy.prodID, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Policy Status Code', inforcePolicy.policyStatusCode, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Policy Status CStatCode', inforcePolicy.policyCStatCode, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Policy Status', TextLookup_PolicyCStatCode(inforcePolicy.policyCStatCode, t), ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('Total Annualized Premium', inforcePolicy.totalAnnualizedPremium, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Total Modal Premium', inforcePolicy.totalModalPremium, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Premium Frequency', TextLookup_PremiumModePolicy(inforcePolicy, t), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Premium Mode', TextLookup_PremiumModeReport(inforcePolicy.premiumMode, t), ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('Expiry Date', format_Display_Date(inforcePolicy.expiryDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Terminated Date', format_Display_Date(inforcePolicy.terminatedDate), ScalarTypes.SCALAR_STRING));\r\n\r\n if (isPolicyPaidUp(inforcePolicy)) {\r\n scalarReportArray.push(addScalarItem('Paid To Date', 'N/A', ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Paid To Date', format_Display_Date(inforcePolicy.paidToDate), ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Bill To Date', format_Display_Date(inforcePolicy.billToDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Next Monthiversary Date', format_Display_Date(inforcePolicy.nextMonthiversaryDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Policy Value', inforcePolicy.policyValue, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Is Loan Available', booleanToString(inforcePolicy.isLoanAvailable), ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n if (inforcePolicy.isRegistered || !inforcePolicy.isLoanAvailable) {\r\n scalarReportArray.push(addScalarItem('Available Loan', 'Not Permitted on this Policy', ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Available Loan Amount', formatDollar(0), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Available Loan Value', 0, ScalarTypes.SCALAR_DOUBLE));\r\n } else {\r\n scalarReportArray.push(\r\n addScalarItem('Available Loan', formatDollar(inforcePolicy.availableLoan) + ' Int Rate: ' + formatInterestRate(inforcePolicy.availableLoanInterestRate), ScalarTypes.SCALAR_STRING)\r\n );\r\n scalarReportArray.push(addScalarItem('Available Loan Amount', formatDollar(inforcePolicy.availableLoan), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Available Loan Value', inforcePolicy.availableLoan, ScalarTypes.SCALAR_DOUBLE));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Available Loan Interest Rate', inforcePolicy.availableLoanInterestRate, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Non Forfeiture Option', TextLookup_NFOption(inforcePolicy.nonForfeitureOption || '', t), ScalarTypes.SCALAR_STRING));\r\n\r\n if (inforcePolicy.dividendPayoutType === DividendPayoutTypes.Enhanced) {\r\n scalarReportArray.push(\r\n addScalarItem('Dividend Option', TextLookup_DividendPayout(inforcePolicy.dividendPayoutType, t) + ' ' + formatDollar(inforcePolicy.dividendEnhancedAmount), ScalarTypes.SCALAR_STRING)\r\n );\r\n } else {\r\n scalarReportArray.push(addScalarItem('Dividend Option', TextLookup_DividendPayout(inforcePolicy.dividendPayoutType, t), ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Dividend Payout Type', inforcePolicy.dividendPayoutType, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Type - None', DividendPayoutTypes.None, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Type - PUA', DividendPayoutTypes.PUA, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Type - DRP', DividendPayoutTypes.DRP, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Type - DOD', DividendPayoutTypes.DOD, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Type - Enhanced', DividendPayoutTypes.Enhanced, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Type - LRD', DividendPayoutTypes.LRD, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Type - PIC', DividendPayoutTypes.PIC, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Type - OYT', DividendPayoutTypes.OYT, ScalarTypes.SCALAR_INTEGER));\r\n\r\n scalarReportArray.push(addScalarItem('Premium Refund', inforcePolicy.premiumRefund, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Draw Day', inforcePolicy.drawDay, ScalarTypes.SCALAR_INTEGER));\r\n\r\n scalarReportArray.push(addScalarItem('Billing Type Code', inforcePolicy.billingTypeCode, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Billing Method', inforcePolicy.billingMethod, ScalarTypes.SCALAR_INTEGER));\r\n\r\n scalarReportArray.push(addScalarItem('Billing Method - EFT', BillingMethodTypes.EFT, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Billing Method - Mail', BillingMethodTypes.Mail, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Billing Method - Bill Error', BillingMethodTypes.BillError, ScalarTypes.SCALAR_INTEGER));\r\n\r\n switch (inforcePolicy.billingMethod) {\r\n case BillingMethodTypes.EFT:\r\n scalarReportArray.push(addScalarItem('Billing Method String', 'pre-authorized debit', ScalarTypes.SCALAR_STRING));\r\n break;\r\n case BillingMethodTypes.Mail:\r\n scalarReportArray.push(addScalarItem('Billing Method String', 'cheque', ScalarTypes.SCALAR_STRING));\r\n break;\r\n case BillingMethodTypes.BillError:\r\n scalarReportArray.push(addScalarItem('Billing Method String', t('unknown'), ScalarTypes.SCALAR_STRING));\r\n break;\r\n default:\r\n scalarReportArray.push(addScalarItem('Billing Method String', 'pre-authorized debit', ScalarTypes.SCALAR_STRING));\r\n break;\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Billing Status', inforcePolicy.billingStatus, ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('Minimum Premium', inforcePolicy.minPrem, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Is Active', booleanToString(inforcePolicy.isActive), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('Is Vanish Prem', booleanToString(inforcePolicy.isVanishPrem), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('Is Registered', booleanToString(inforcePolicy.isRegistered), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('Is Restrict Premium', booleanToString(inforcePolicy.isRestrictPremium), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('DIA Value', inforcePolicy.diaValue, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('DIA Interest Rate', inforcePolicy.diaInterestRate * 100, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('DIA Interest Rate - ALT', inforcePolicy.diaInterestRate * 100 - Alternate_IntRate.Reduction_UL, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('GIA Value', inforcePolicy.giaValue, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Indexed Fund Value', inforcePolicy.indexedFundValue + inforcePolicy.segFundValue, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Indexed Fund Value Date', format_Display_Date_Short(inforcePolicy.indexedFundValueDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('SegFund Value', inforcePolicy.segFundValue, ScalarTypes.SCALAR_DOUBLE));\r\n\r\n scalarReportArray.push(addScalarItem('PDF Balance', inforcePolicy.pdfBalance, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('PDF Balance Text', formatDollar(inforcePolicy.pdfBalance), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('PDF Interest Rate', inforcePolicy.pdfInterestRate * 100, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('DOD Balance', inforcePolicy.dodBalance, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('DOD Interest Rate', inforcePolicy.dodInterestRate * 100, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Side Fund Balance', inforcePolicy.sideFundBalance, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Side Fund Interest Rate', inforcePolicy.sideFundInterestRate * 100, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Loan Balance', inforcePolicy.loanBalance, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Loan Balance Text', formatDollar(inforcePolicy.loanBalance), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Loan Interest Rate', inforcePolicy.loanInterestRate * 100, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Loan Interest Rate Text', formatInterestRate(inforcePolicy.loanInterestRate), ScalarTypes.SCALAR_STRING));\r\n //why is inforcePolicy.loanInterestRateType coming in as null??\r\n //scalarReportArray.push(addScalarItem(\"Loan Interest Rate Type\", inforcePolicy.loanInterestRateType, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('MVA', inforcePolicy.mva, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Surrender Charge', inforcePolicy.surrenderCharge, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Cash Surrender Value', inforcePolicy.cashSurrenderValue, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('PUA Cash Value', inforcePolicy.puaCashValue, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('PUA Face Amount', inforcePolicy.puaFaceAmount, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Term Additions Face Amount', Math.max(inforcePolicy.dividendEnhancedAmount - inforcePolicy.puaFaceAmount, 0), ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Basic Cash Value', inforcePolicy.basicCashValue, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Dividend This Year', inforcePolicy.dividendThisYear, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Annual Payout Amount', inforcePolicy.annualPayoutAmount, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Payout Frequency', TextLookup_PayoutFrequency(inforcePolicy, t), ScalarTypes.SCALAR_STRING));\r\n //sometimes inforcePolicy.annualPayoutModeCode is null\r\n if (inforcePolicy.annualPayoutModeCode === null) {\r\n scalarReportArray.push(addScalarItem('Annual Payout Mode Code', '', ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Annual Payout Mode Code', inforcePolicy.annualPayoutModeCode, ScalarTypes.SCALAR_STRING));\r\n }\r\n scalarReportArray.push(addScalarItem('Payout Method Code', inforcePolicy.payoutMethodCode, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Payout Method', toProperCase(TextLookup_PayoutMethodCode(inforcePolicy.payoutMethodCode, t)), ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('Payout Payment Date', format_Display_Date(inforcePolicy.payoutPaymentDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Payout Effective Date', format_Display_Date(inforcePolicy.payoutEffectiveDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Payout End Date', format_Display_Date(inforcePolicy.payoutEndDate), ScalarTypes.SCALAR_STRING));\r\n //sometimes inforcePolicy.scheduledWithdrawalMethod is null\r\n if (inforcePolicy.scheduledWithdrawalMethod === null) {\r\n scalarReportArray.push(addScalarItem('Scheduled Withdrawal Method', '', ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Scheduled Withdrawal Method', inforcePolicy.scheduledWithdrawalMethod, ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Payout Tax Withheld', inforcePolicy.payoutTaxWithheld, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Payout Tax Calculation Percent', inforcePolicy.payoutTaxCalculationPercent, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Payout Additional Tax Withheld', inforcePolicy.payoutAdditionalTaxWithheld, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Payout Insured Type', inforcePolicy.payoutInsuredType, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Payout Insured Type - Annuitant', PayoutInsuredTypes.Annuitant, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Payout Insured Type - Spouse', PayoutInsuredTypes.Spouse, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Payout Type Code', inforcePolicy.payoutType, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Payout Type', TextLookup_PayoutType(inforcePolicy.payoutType, t), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Payout Type - Minimum', PayoutTypes.Minimum, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Payout Type - Maximum', PayoutTypes.Maximum, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Payout Type - Flat Amount', PayoutTypes.FlatAmount, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Min Payout This Year', inforcePolicy.minPayoutThisYear, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Max Payout This Year', inforcePolicy.maxPayoutThisYear, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('IsLIF', booleanToString(isProductLIF(inforcePolicy.prodID)), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('Funds Locked In', booleanToString(inforcePolicy.fundsLockedIn), ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n scalarReportArray.push(\r\n addScalarItem(\r\n 'Payout - Gross Payout Amount',\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n formatDollar(inforcePolicy.annualPayoutAmount) + ' (Annualized ' + formatDollar(inforcePolicy.annualPayoutAmount * modalFactor(inforcePolicy.annualPayoutMode)) + ')'\r\n ),\r\n ScalarTypes.SCALAR_STRING\r\n )\r\n );\r\n\r\n scalarReportArray.push(\r\n addScalarItem(\r\n 'Payout - Net Payout Amt',\r\n formatIsAmountAboveZero(\r\n inforcePolicy.annualPayoutAmount,\r\n formatDollar(inforcePolicy.annualPayoutAmount - inforcePolicy.payoutTaxWithheld - inforcePolicy.payoutAdditionalTaxWithheld) +\r\n ' (Annualized ' +\r\n formatDollar((inforcePolicy.annualPayoutAmount - inforcePolicy.payoutTaxWithheld - inforcePolicy.payoutAdditionalTaxWithheld) * modalFactor(inforcePolicy.annualPayoutMode)) +\r\n ')'\r\n ),\r\n ScalarTypes.SCALAR_STRING\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n 'Payout - Next Payment Date',\r\n formatIsAmountAboveZero(inforcePolicy.annualPayoutAmount, Translate_NextPaymentDate(inforcePolicy.payoutPaymentDate, inforcePolicy.payoutEffectiveDate, inforcePolicy.currentDate)),\r\n ScalarTypes.SCALAR_STRING\r\n )\r\n );\r\n\r\n //ToDo create age calculation routines\r\n //let intAge = CalculateAgeFromJan1(FPPRPolicy.PayoutInsured, FCurrentDate)\r\n if (inforcePolicy.payoutInsuredType === PayoutInsuredTypes.Annuitant) {\r\n scalarReportArray.push(\r\n addScalarItem('Payout - Minimum Payout Based On', 'Annuitant, aged ' + calculateAgeFromJan1(inforcePolicy.payoutInsured, inforcePolicy.currentDate), ScalarTypes.SCALAR_STRING)\r\n );\r\n } else {\r\n scalarReportArray.push(\r\n addScalarItem('Payout - Minimum Payout Based On', 'Spouse, aged ' + calculateAgeFromJan1(inforcePolicy.payoutInsured, inforcePolicy.currentDate), ScalarTypes.SCALAR_STRING)\r\n );\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Guaranteed Maturity Date', format_Display_Date(inforcePolicy.guaranteedMaturityDate), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Guaranteed Maturity Amount', inforcePolicy.guaranteedMaturityAmount, ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('Guaranteed Death Amount', inforcePolicy.guaranteedDeathAmount, ScalarTypes.SCALAR_DOUBLE));\r\n\r\n scalarReportArray.push(addScalarItem('Assignee Type', inforcePolicy.assigneeType, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Assignee Type - Absolute', AssigneeTypes.Absolute, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Assignee Type - Collateral', AssigneeTypes.Collateral, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Assignee Type - None', AssigneeTypes.None, ScalarTypes.SCALAR_INTEGER));\r\n\r\n let insuredItem = inforcePolicy.owners[0];\r\n scalarReportArray.push(addScalarItem('Owner Name', fullName(insuredItem), ScalarTypes.SCALAR_STRING));\r\n\r\n let ownerAddressItem = GetAddressItem(insuredItem.addresses, addressTypes.Mailing);\r\n if (!ownerAddressItem) {\r\n ownerAddressItem = GetAddressItem(insuredItem.addresses, addressTypes.Residence);\r\n }\r\n\r\n if (!ownerAddressItem) {\r\n scalarReportArray.push(addScalarItem('Owner Address1', '', ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Owner Address2', '', ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Owner Address3', '', ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Owner Address1', FormatMailingAddress1(ownerAddressItem), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Owner Address2', FormatMailingAddress2(ownerAddressItem), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Owner Address3', FormatMailingAddress3(ownerAddressItem), ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Annuitant Name', fullName(aBaseCoverage.insured), ScalarTypes.SCALAR_STRING));\r\n\r\n if (inforcePolicy.planCode.slice(-1) === 'J' && aBaseCoverage.insureds.length > 1) {\r\n scalarReportArray.push(addScalarItem('IsJoint', '1', ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('Annuitant Name 2', fullName(aBaseCoverage.insureds[1]), ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('IsJoint', '0', ScalarTypes.SCALAR_BOOLEAN));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Church ID', insuredItem.churchID, ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Church Name', FormatChurchName(insuredItem), ScalarTypes.SCALAR_STRING));\r\n\r\n let ownerPhone = '';\r\n if (insuredItem.phoneNumbers.length === 0) {\r\n ownerPhone = 'R: Not on File, ';\r\n } else {\r\n let ownerPhoneItem = GetPhoneItem(insuredItem.phoneNumbers, phoneTypes.Residence);\r\n if (!ownerPhoneItem) {\r\n //do nothing if null\r\n } else {\r\n ownerPhone = 'R: ' + FormatPhoneNumber(insuredItem.phoneNumbers[0].phoneNumber) + ', ';\r\n }\r\n }\r\n\r\n let aBusinessPhoneItem = GetPhoneItem(insuredItem.phoneNumbers, phoneTypes.Business);\r\n if (!aBusinessPhoneItem) {\r\n ownerPhone = ownerPhone + 'B: Not on File';\r\n } else {\r\n ownerPhone = ownerPhone + 'B: ' + FormatPhoneNumber(aBusinessPhoneItem.phoneNumber);\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Owner Phone', ownerPhone, ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('Servicing Agent', fullName(inforcePolicy.agent), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Servicing Agent Phone', FormatPhoneNumber(inforcePolicy.agent.phoneNumber), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Writing Agent', fullName(inforcePolicy.writingAgent), ScalarTypes.SCALAR_STRING));\r\n scalarReportArray.push(addScalarItem('Policy Issue Date', format_Display_Date_Object(aIssueDate), ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('Spouse Contributor Type', inforcePolicy.spouseContributorType, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Spouse Contributor Type - Spouse', SpouseContributorTypes.Spouse, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Spouse Contributor Type - None', SpouseContributorTypes.None, ScalarTypes.SCALAR_INTEGER));\r\n\r\n if (inforcePolicy.isRegistered) {\r\n if (inforcePolicy.spouseContributorType === SpouseContributorTypes.Spouse) {\r\n scalarReportArray.push(addScalarItem('Spousal Contributor', GetFullNameWithSalutation(inforcePolicy.spouseContributor), ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Spousal Contributor', 'None', ScalarTypes.SCALAR_STRING));\r\n }\r\n }\r\n\r\n if (controlItems['btnViewReportInforce'].displayDisabled) {\r\n scalarReportArray.push(addScalarItem('Policy Progress Report Text', 'Not Available', ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Policy Progress Report Text', 'Available', ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n let beneText = GetBeneficaryString(aBaseCoverage, t);\r\n //To be able to pass these as variables, they need to be broken up into 100 character chunks\r\n let beneTemp = beneText;\r\n let intLength = 0;\r\n let beneArray = [];\r\n let i = 0;\r\n\r\n for (i = 1; i <= Math.trunc(beneText.length / 100) + 1; i++) {\r\n intLength = Math.min(100, beneTemp.length);\r\n beneArray[i] = beneTemp.slice(0, intLength);\r\n if (intLength < 100) {\r\n break;\r\n } else {\r\n beneTemp = beneTemp.slice(intLength);\r\n }\r\n }\r\n\r\n for (i = 1; i <= beneArray.length; i++) {\r\n scalarReportArray.push(addScalarItem('Beneficiary Text ' + i.toString(), beneArray[i], ScalarTypes.SCALAR_STRING));\r\n }\r\n scalarReportArray.push(addScalarItem('Beneficiary Count', aBaseCoverage.beneficiaries.length, ScalarTypes.SCALAR_INTEGER));\r\n\r\n if (!isStatus) {\r\n //if (true) {\r\n let lstSummaryItems = [];\r\n //Build Summary\r\n for (let aSummaryCoverageItem of inforcePolicy.coverages) {\r\n if (aSummaryCoverageItem.coverageType === CoverageTypes.BASE) {\r\n //For now we do not show this for UL or LevelTerm. Testing will try to bear out all the rules for this\r\n if (\r\n !(\r\n inforcePolicy.policyType === PolicyTypes.UL ||\r\n inforcePolicy.policyType === PolicyTypes.LevelTerm ||\r\n inforcePolicy.policyType === PolicyTypes.TermWithCV ||\r\n inforcePolicy.policyType === PolicyTypes.WholeLife ||\r\n inforcePolicy.policyType === PolicyTypes.Enhanced ||\r\n inforcePolicy.policyType === PolicyTypes.CriticalIllness ||\r\n inforcePolicy.policyType === PolicyTypes.DeferredAnnuity\r\n )\r\n ) {\r\n lstSummaryItems.push(BuildSummaryPolicyExpiryColumnText(insuranceData, aSummaryCoverageItem));\r\n }\r\n\r\n if (isProductADBPlus(inforcePolicy.prodID)) {\r\n let strSummaryText = BuildSummaryColumnText(aSummaryCoverageItem, inforceData, insuranceData);\r\n if (strSummaryText !== '') {\r\n lstSummaryItems.push(strSummaryText);\r\n }\r\n }\r\n\r\n let strSummaryText = '';\r\n //This is not displayed for enhanced\r\n if (!(inforcePolicy.policyType === PolicyTypes.Enhanced || inforcePolicy.policyType === PolicyTypes.CriticalIllness)) {\r\n //We need to get the calc CoverageItem becuase the calc engine calculated the PremiumDurationYear which we need for this\r\n let aCoverageItem = getCoverageByID(insuranceData.policy.coverages, aSummaryCoverageItem.coverageID, aSummaryCoverageItem.parentCoverageID, false);\r\n if (aCoverageItem.premiumDurationYear < aCoverageItem.expiryDuration - 1) {\r\n strSummaryText = BuildSummaryColumnText(aSummaryCoverageItem, inforceData, insuranceData);\r\n if (strSummaryText !== '') {\r\n lstSummaryItems.push(strSummaryText);\r\n }\r\n }\r\n }\r\n\r\n for (let aBenefitSummaryCoverageItem of aSummaryCoverageItem.coverages) {\r\n if (aBenefitSummaryCoverageItem.coverageType === CoverageTypes.BENEFIT || aBenefitSummaryCoverageItem.coverageType === CoverageTypes.RIDER) {\r\n lstSummaryItems.push(BuildSummaryColumnText(aBenefitSummaryCoverageItem, inforceData, insuranceData));\r\n }\r\n }\r\n } else {\r\n if (aSummaryCoverageItem.coverageType === CoverageTypes.BENEFIT || aSummaryCoverageItem.coverageType === CoverageTypes.RIDER) {\r\n lstSummaryItems.push(BuildSummaryColumnText(aSummaryCoverageItem, inforceData, insuranceData));\r\n }\r\n }\r\n }\r\n\r\n lstSummaryItems.sort();\r\n\r\n //Add a final blank line to separate it from the next section\r\n lstSummaryItems.push('');\r\n\r\n let summaryColumnCount = 0;\r\n for (let strSummaryItem of lstSummaryItems) {\r\n summaryColumnCount = summaryColumnCount + 1;\r\n scalarReportArray.push(addScalarItem('SummaryColumn' + summaryColumnCount.toString(), strSummaryItem, ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('SummaryColumnCount', summaryColumnCount, ScalarTypes.SCALAR_INTEGER));\r\n let skipYear = 0;\r\n let iSkip = 0;\r\n let strDate = '';\r\n if (isInPremiumOffset(inforcePolicy)) {\r\n iSkip = GetSkipPaymentYear('SkipPUAPayment', insuranceData);\r\n if (iSkip !== -1) {\r\n skipYear = insuranceData.dblTableData_Main[iSkip][ReportColumns.CalendarYear];\r\n strDate = format_Display_Date_Object(new Date(skipYear, aIssueDate.getMonth(), aIssueDate.getDate()));\r\n scalarReportArray.push(addScalarItem('PremOff - Skip PUA Pymt', '1', ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n scalarReportArray.push(addScalarItem('PremOff - Skip Date', strDate, ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('PremOff - Skip PUA Pymnt', '0', ScalarTypes.SCALAR_BOOLEAN));\r\n }\r\n\r\n iSkip = GetSkipPaymentYear('ALT_SkipPUAPayment', insuranceData);\r\n if (iSkip !== -1) {\r\n skipYear = insuranceData.dblTableData_Main[iSkip][ReportColumns.CalendarYear];\r\n strDate = format_Display_Date_Object(new Date(skipYear, aIssueDate.getMonth(), aIssueDate.getDate()));\r\n\r\n scalarReportArray.push(addScalarItem('PremOff - Skip PUA Pymnt ALT', '1', ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('PremOff - Skip Date ALT', strDate, ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('PremOff - Skip PUA Pymnt ALT', '0', ScalarTypes.SCALAR_BOOLEAN));\r\n }\r\n } else {\r\n if (isPremiumOffsetSelected(controlItems, formData)) {\r\n let offsetDate;\r\n let expiryDate;\r\n aGlobalVariable = getScalarItem(insuranceData.globalVariables, 'PO_PremiumOffsetDuration');\r\n if (!isEmpty(aGlobalVariable)) {\r\n iSkip = aGlobalVariable.integerValue;\r\n skipYear = insuranceData.dblTableData_Main[iSkip][ReportColumns.CalendarYear];\r\n\r\n offsetDate = new Date(skipYear, aIssueDate.getMonth(), aIssueDate.getDate());\r\n expiryDate = new Date(inforcePolicy.expiryDate);\r\n //strDate = format_Display_Date_Object(new Date(skipYear, inforcePolicy.issueDate.getMonth(), inforcePolicy.issueDate.getDate));\r\n\r\n scalarReportArray.push(addScalarItem('PremOff - Cannot elect PO', booleanToString(offsetDate >= expiryDate), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('PremOff - Skip Date PO', format_Display_Date_Object(offsetDate), ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n aGlobalVariable = getScalarItem(insuranceData.globalVariables, 'PO_ALT_PremiumOffsetDuration');\r\n if (!isEmpty(aGlobalVariable)) {\r\n iSkip = aGlobalVariable.integerValue;\r\n skipYear = insuranceData.dblTableData_Main[iSkip][ReportColumns.CalendarYear];\r\n\r\n offsetDate = new Date(skipYear, aIssueDate.getMonth(), aIssueDate.getDate());\r\n scalarReportArray.push(addScalarItem('PremOff - Cannot elect PO_ALT', booleanToString(offsetDate >= expiryDate), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('PremOff - Skip Date PO_ALT', format_Display_Date_Object(offsetDate), ScalarTypes.SCALAR_STRING));\r\n }\r\n }\r\n scalarReportArray.push(addScalarItem('PremOff - Skip PUA Pymnt', '0', ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('PremOff - Skip PUA Pymnt ALT', '0', ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('PremOff - Skip PUA Pymnt PO_ALT', '0', ScalarTypes.SCALAR_BOOLEAN));\r\n }\r\n aGlobalVariable = getScalarItem(insuranceData.globalVariables, 'PO_IsOffsetBeforePremDur');\r\n if (!isEmpty(aGlobalVariable)) {\r\n scalarReportArray.push(addScalarItem('PO_IsOffsetBeforePremDur', aGlobalVariable.booleanValue, ScalarTypes.SCALAR_BOOLEAN));\r\n }\r\n\r\n aGlobalVariable = getScalarItem(insuranceData.globalVariables, 'PO_ALT_IsOffsetBeforePremDur');\r\n if (!isEmpty(aGlobalVariable)) {\r\n scalarReportArray.push(addScalarItem('PO_ALT_IsOffsetBeforePremDur', aGlobalVariable.booleanValue, ScalarTypes.SCALAR_BOOLEAN));\r\n }\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('ESA_TransactionCount', reportBuildModel.esa_TransactionCount, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('SegFund_ActivityCount', reportBuildModel.segFund_ActivityCount, ScalarTypes.SCALAR_INTEGER));\r\n scalarReportArray.push(addScalarItem('Dividend Paid Label', globalVariables.DividendPaidLabel, ScalarTypes.SCALAR_STRING));\r\n\r\n scalarReportArray.push(addScalarItem('Show RPU', booleanToString(!IsProductExcludeRPU(inforcePolicy.prodID)), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('IsPaidUp', isPolicyPaidUp(inforcePolicy), ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n //***************** Added for Solve Demo ******************\r\n scalarReportArray.push(addScalarItem('chkUseSolve', booleanToString(formData['chkUseSolve']), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('rdoTakeLoan', booleanToString(formData['chkTakeLoan']), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('rdoPartialSurrenderWL', booleanToString(formData['chkPartialSurrWL']), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('rdoPartialSurrenderUL', booleanToString(formData['chkPartialSurrUL']), ScalarTypes.SCALAR_BOOLEAN));\r\n scalarReportArray.push(addScalarItem('rdoFaceReduction', booleanToString(formData['chkFaceReduction']), ScalarTypes.SCALAR_BOOLEAN));\r\n\r\n scalarReportArray.push(addScalarItem('txtLoanAmount', formData['txtLoanAmount'], ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('txtPartialSurrenderAmountWL', formData['txtCashSurrAmtWL'], ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('txtPartialSurrenderAmountUL', formData['txtCashSurrAmtUL'], ScalarTypes.SCALAR_DOUBLE));\r\n scalarReportArray.push(addScalarItem('txtNewFaceAmount', formData['txtNewFaceAmount'], ScalarTypes.SCALAR_DOUBLE));\r\n\r\n //*********************************************************\r\n\r\n console.log('ending custom inforce scalars');\r\n return scalarReportArray;\r\n};\r\n\r\nexport function buildReportListItems(isStatusReport, inforceData, inforceFormData, controlItems, reportBuildModel) {\r\n let outArray = [];\r\n\r\n if (isStatusReport) {\r\n switch (inforceData.policy.policyType) {\r\n case PolicyTypes.DecreasingIncreasingTerm:\r\n case PolicyTypes.Disability:\r\n case PolicyTypes.Endowment:\r\n case PolicyTypes.Enhanced:\r\n case PolicyTypes.LevelTerm:\r\n case PolicyTypes.PaidUpLife:\r\n case PolicyTypes.TermWithCV:\r\n case PolicyTypes.WholeLife:\r\n case PolicyTypes.CriticalIllness:\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_T10.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case PolicyTypes.UL:\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_UL.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n //ToDo: check if not terminated\r\n if (reportBuildModel.ul_TransactionCount > 0) {\r\n outArray.push({name: 'Transactions', reportFile: 'Transactions_UL.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n\r\n //if UL_COIActivityCount > 0 add PPR_COIActivity_UL.rtm\r\n if (reportBuildModel.ul_COIActivityCount > 0) {\r\n outArray.push({name: 'COI Activity', reportFile: 'COIActivity.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n\r\n break;\r\n case PolicyTypes.DeferredAnnuity:\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_APRA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case PolicyTypes.ESA_ISA:\r\n if (inforceData.inforcePolicy.annualPayoutAmount > 0) {\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_ESA_Payout.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_ESA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n if (reportBuildModel.esa_TransactionCount > 0) {\r\n outArray.push({name: 'Transactions', reportFile: 'Transactions_ESA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n break;\r\n case PolicyTypes.RRIF:\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_ESARRIF.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n if (reportBuildModel.esa_TransactionCount > 0) {\r\n outArray.push({name: 'Transactions', reportFile: 'Transactions_ESA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n\r\n break;\r\n case PolicyTypes.SegregatedFund:\r\n if (inforceData.inforcePolicy.annualPayoutAmount > 0) {\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_SegFund_Payout.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_SegFund.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n if (reportBuildModel.segFund_ActivityCount > 0) {\r\n outArray.push({name: 'Activity', reportFile: 'Activity_SegFund.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n break;\r\n case PolicyTypes.SegregatedFundRRIF:\r\n if (isProductLIF(inforceData.policy.prodID)) {\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_SegFundLIF.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_SegFundRRIF.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n if (reportBuildModel.segFund_ActivityCount > 0) {\r\n outArray.push({name: 'Activity', reportFile: 'Activity_SegFund.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n if ((inforceData.policy.policyType === PolicyTypes.UL && inforceFormData['chkCoverPageInforce'] === true) || inforceData.policy.policyType !== PolicyTypes.UL) {\r\n outArray.push({\r\n name: 'Cover',\r\n reportFile: 'Cover_PPR.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n\r\n if (!(inforceData.policy.policyType === PolicyTypes.UL)) {\r\n outArray.push({\r\n name: 'Policy',\r\n reportFile: 'PolicyDescription.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n\r\n switch (inforceData.policy.policyType) {\r\n case PolicyTypes.DecreasingIncreasingTerm:\r\n case PolicyTypes.Disability:\r\n case PolicyTypes.Endowment:\r\n outArray.push({name: 'Status', reportFile: 'PPR_Status_T10.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n break;\r\n case PolicyTypes.LevelTerm:\r\n outArray.push({name: 'Status', reportFile: 'PPR_Status_T10.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n if (IsProductParticipatingTerm(inforceData.policy.prodID)) {\r\n outArray.push({name: 'Status', reportFile: 'PolicyValue_T10_Par.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n outArray.push({name: 'Status', reportFile: 'PolicyValue_T10_ALT_Par.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n } else if (IsProductNonParticipatingTerm(inforceData.policy.prodID)) {\r\n outArray.push({name: 'Policy Value', reportFile: 'PolicyValue_T10.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n } else if (IsProductParticipatingT100(inforceData.policy.prodID)) {\r\n outArray.push({name: 'Status', reportFile: 'PolicyValue_T100_Par.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n outArray.push({name: 'Status', reportFile: 'PolicyValue_T100_ALT_Par.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n } else if (IsProductCurrentPremiumT100(inforceData.policy.prodID)) {\r\n outArray.push({name: 'Status', reportFile: 'PolicyValue_T100_Current.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n } else if (IsProductNonParticipatingT100(inforceData.policy.prodID)) {\r\n outArray.push({name: 'Policy Value', reportFile: 'PolicyValue_T100.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n break;\r\n case PolicyTypes.PaidUpLife:\r\n outArray.push({name: 'Status', reportFile: 'PPR_Status_T10.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_T10.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case PolicyTypes.TermWithCV:\r\n //Status Page is not included in the demo because it requires a lot of code to build summary items and string data array columns\r\n outArray.push({name: 'Status', reportFile: 'PPR_Status_T10.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n break;\r\n case PolicyTypes.WholeLife:\r\n case PolicyTypes.Enhanced:\r\n case PolicyTypes.DeferredAnnuity:\r\n if (inforceData.policy.policyType === PolicyTypes.DeferredAnnuity) {\r\n //Status Page is not included in the demo because it requires a lot of code to build summary items and string data array columns\r\n outArray.push({name: 'Status', reportFile: 'PPR_Status_APRA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n } else {\r\n //Status Page is not included in the demo because it requires a lot of code to build summary items and string data array columns\r\n outArray.push({name: 'Status', reportFile: 'PPR_Status_T10.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n switch (inforceData.policy.dividendPayoutType) {\r\n case DividendPayoutTypes.PUA:\r\n if (inforceFormData['chkUseSolve'] && inforceFormData['chkPartialSurrWL']) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PUA_Surrender.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PUA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_ALT_PUA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n if (isPremiumOffsetSelected(controlItems, inforceFormData)) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PO_PUA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PO_ALT_PUA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n break;\r\n case DividendPayoutTypes.DOD:\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_DOD.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_ALT_DOD.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n if (isPremiumOffsetSelected(controlItems, inforceFormData)) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PO_DOD.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PO_ALT_DOD.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n break;\r\n case DividendPayoutTypes.DRP:\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_DRP.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_ALT_DRP.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case DividendPayoutTypes.LRD:\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_LRD.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_ALT_LRD.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case DividendPayoutTypes.PIC:\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PIC.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_ALT_PIC.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case DividendPayoutTypes.Enhanced:\r\n if (inforceFormData['chkUseSolve'] && inforceFormData['chkPartialSurrWL']) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PUA_Surrender.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_ENH.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_ALT_ENH.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n if (isPremiumOffsetSelected(controlItems, inforceFormData)) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PO_PUA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_PO_ALT_PUA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n break;\r\n case DividendPayoutTypes.None:\r\n if (isProdIDSOSBA(inforceData.policy.prodID)) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_NONE.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_WL_ALT_NONE.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n if (isProductEssentialLife(inforceData.policy.prodID)) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_EssentialLife.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_T100.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n break;\r\n case PolicyTypes.CriticalIllness:\r\n outArray.push({name: 'Status', reportFile: 'PPR_Status_T10.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_CI.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case PolicyTypes.UL:\r\n outArray.push({name: 'Status', reportFile: 'PPR_Status_UL.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyDescription_UL.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n\r\n if (inforceFormData['chkTransactionInfo'] === true) {\r\n //if UL_TransactionCount > 0 add PPR_Transactions_UL.rtm\r\n if (reportBuildModel.ul_TransactionCount > 0) {\r\n outArray.push({name: 'Transactions', reportFile: 'PPR_Transactions_UL.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n }\r\n\r\n if (inforceFormData['chkCOIInfo'] === true) {\r\n //if UL_COIActivityCount > 0 add PPR_COIActivity_UL.rtm\r\n if (reportBuildModel.ul_COIActivityCount > 0) {\r\n outArray.push({name: 'COI Activity', reportFile: 'PPR_COIActivity_UL.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n }\r\n }\r\n\r\n if (inforceFormData['chkFutureScenarios'] === true) {\r\n if (inforceFormData['chkUseSolve'] === true && inforceFormData['chkPartialSurrUL'] === true) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_UL_Surrender.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_UL.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n\r\n if ((inforceFormData['cboSolveType'] === 'I') || (inforceFormData['cboSolveType'] === 'VI')) {\r\n outArray.push({\r\n name: 'Income Distribution',\r\n reportFile: 'Income_UL.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_UL_ALT.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n\r\n if (inforceFormData['chkUseClientRates'] === true) {\r\n outArray.push({\r\n name: 'Policy Value',\r\n reportFile: 'PolicyValue_UL_ALT2.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n }\r\n break;\r\n case PolicyTypes.RRIF:\r\n case PolicyTypes.ESA_ISA:\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_ESA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Transactions',\r\n reportFile: 'Transactions_ESA.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case PolicyTypes.SegregatedFund:\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_SegFund.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Activity',\r\n reportFile: 'Activity_SegFund.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n case PolicyTypes.SegregatedFundRRIF:\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_SegFundRRIF.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n outArray.push({\r\n name: 'Activity',\r\n reportFile: 'Activity_SegFund.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n // ********************* ADDED FOR SOLVE DEMO *****************\r\n if (inforceFormData['chkUseSolve']) {\r\n if (inforceFormData['chkTakeLoan']) {\r\n if (inforceData.policy.policyType === PolicyTypes.WholeLife || inforceData.policy.policyType === PolicyTypes.Enhanced) {\r\n outArray.push({\r\n name: 'Policy Loan',\r\n reportFile: 'LoanValue_WL.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else if (inforceData.policy.policyType === PolicyTypes.UL) {\r\n outArray.push({\r\n name: 'Policy Loan',\r\n reportFile: 'LoanValue_UL.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return outArray;\r\n}\r\n\r\n//Not used. Coming from BackEnd call\r\nexport function buildReportColumnStringItems() {\r\n let reportColumnStringItems = [\r\n {name: 'String Column 1', displayName: 'String 1', columnNumber: 1},\r\n {name: 'String Column 2', displayName: 'String 2', columnNumber: 2},\r\n ];\r\n\r\n return reportColumnStringItems;\r\n}\r\nexport function buildReportSettings() {\r\n let reportSettings = [\r\n {\r\n name: 'FormatLanguage',\r\n integerValue: 0,\r\n longIntValue: 0,\r\n doubleValue: 0,\r\n singleValue: 0,\r\n booleanValue: 0,\r\n stringValue: 'E',\r\n dataType: REPORT_SETTING.STRING,\r\n },\r\n {\r\n name: 'RecreateArrayTable',\r\n booleanValue: 1,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {\r\n name: 'RecreateScalarTable',\r\n booleanValue: 1,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {\r\n name: 'ScalarMethod',\r\n stringValue: 'D',\r\n dataType: REPORT_SETTING.STRING,\r\n },\r\n {\r\n name: 'ReadArrayData',\r\n booleanValue: 1,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {\r\n name: 'ReadScalarData',\r\n booleanValue: 1,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {\r\n name: 'ReadReportList',\r\n booleanValue: 1,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {\r\n name: 'ReportTitle',\r\n stringValue: 'ProUI Report One',\r\n dataType: REPORT_SETTING.STRING,\r\n },\r\n {\r\n name: 'OwnerPassword',\r\n stringValue: 'PDFOwner',\r\n dataType: REPORT_SETTING.STRING,\r\n },\r\n {\r\n name: 'CustomDialog',\r\n booleanValue: 1,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {\r\n name: 'ZoomSetting',\r\n stringValue: 'PERCENTAGE',\r\n dataType: REPORT_SETTING.STRING,\r\n },\r\n {\r\n name: 'ZoomPercentage',\r\n integerValue: 121,\r\n dataType: REPORT_SETTING.INTEGER,\r\n },\r\n {\r\n name: 'ShowThumbnails',\r\n booleanValue: 1,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {\r\n name: 'ShowReportSelection',\r\n booleanValue: 0,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {name: 'PDFPath', stringValue: '', dataType: REPORT_SETTING.STRING},\r\n {\r\n name: 'ExcelPath',\r\n stringValue: '',\r\n dataType: REPORT_SETTING.STRING,\r\n },\r\n {\r\n name: 'OpenExcelonPrint',\r\n booleanValue: 0,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n {\r\n name: 'OpenPDFOnPrint',\r\n booleanValue: 0,\r\n dataType: REPORT_SETTING.BOOLEAN,\r\n },\r\n ];\r\n\r\n return reportSettings;\r\n}\r\n\r\n//Not used. Coming from back end call.\r\nexport function buildReportDataArrayString() {\r\n let reportDataArrayString = [\r\n ['one', 'two'],\r\n ['three', 'four'],\r\n ['Five', 'six'],\r\n ['seven', 'eight'],\r\n ];\r\n\r\n return reportDataArrayString;\r\n}\r\n\r\nexport function buildStatusInsuranceData(reportBuildModel, insuranceData) {\r\n let reportData = [];\r\n let reportCols = [\r\n {name: 'Year', displayName: 'Year', columnNumber: 1},\r\n {name: 'CalendarYear', displayName: 'CalendarYear', columnNumber: 2},\r\n {name: 'Age', displayName: 'Age', columnNumber: 3},\r\n {name: 'FilterCol', displayName: 'FilterCol', columnNumber: 4},\r\n ];\r\n\r\n let maxRows = reportBuildModel.tableDataString[0].length;\r\n for (let i = 1; i <= maxRows; i++) {\r\n reportData[i] = [];\r\n reportData[i][0] = 0;\r\n reportData[i][1] = 0;\r\n reportData[i][2] = 0;\r\n reportData[i][3] = 0;\r\n reportData[i][4] = 1;\r\n }\r\n\r\n insuranceData.columnItems = reportCols;\r\n insuranceData.dblTableData_Main = reportData;\r\n return insuranceData;\r\n}\r\n","// export const DataTypes = {\r\n// CONTROLITEMS: 'controlItems',\r\n// INSURANCEDATA: 'insuranceData',\r\n// INSURANCEDATAFULL: 'insuranceDataFull',\r\n// PRODUCTSETUPITEMS: 'productSetupItems',\r\n// INTERFACESETUPITEMS: 'interfaceSetupItems',\r\n// };\r\n\r\nexport const ActionTypes = {\r\n HIDE_DEV_ROUTE: \"HIDE_DEV_ROUTE\",\r\n SET_ROUTES: \"SET_ROUTES\",\r\n HIDE_TRACKING: \"HIDE_TRACKING\",\r\n HIDE_USERS: \"HIDE_USERS\",\r\n HIDE_BI_DETAILS: \"HIDE_BI_DETAILS\",\r\n ALL_ROLES: \"ALL_ROLES\",\r\n GET_ROLE_BY_NAME: \"GET_ROLE_BY_NAME\",\r\n UPDATE_ROLE: \"UPDATE_ROLE\",\r\n DELETE_ROLE: \"DELETE_ROLE\",\r\n GET_FIRSTYEAR_PREMIUM: \"get_first_year_premium\",\r\n REMOVE_FIRSTYEAR_PREMIUM: \"remove_first_year_premium\",\r\n INSURANCEDATA_LOAD: \"insurancedata_load\",\r\n CREATE_ILLUSTRATION: \"CREATE_ILLUSTRATION\",\r\n GET_ILLUSTRATION_HEADERS: \"GET_ILLUSTRATION_HEADERS\",\r\n GET_ILLUSTRATION_CASE: \"GET_ILLUSTRATION_CASE\",\r\n DELETE_ILLUSTRATION_CASE: \"DELETE_ILLUSTRATION_CASE\",\r\n CHECK_ILLUSTRATION_CASE_EXIST: \"CHECK_ILLUSTRATION_CASE_EXIST\",\r\n INFORCE_LOAD: \"inforce_load\",\r\n INFORCE_LOAD_ERROR: \"inforce_load_error\",\r\n INFORCE_REMOVE: \"inforce_remove\",\r\n INFORCE_POST: \"inforce_post\",\r\n TREE_BUILD: \"tree-build\",\r\n TREE_UPDATE: \"tree-update\",\r\n TREE_REMOVE: \"tree_remove\",\r\n CREATE_GLOBAL_ARRAY: \"global_array\",\r\n FETCH_ALPHALOOKUP: \"FETCH_ALPHALOOKUP\",\r\n FETCHERROR_ALPHALOOKUP: \"FETCHERROR_ALPHALOOKUP\",\r\n CLEAR_ALPHALOOKUP: \"CLEAR_ALPHALOOKUP\",\r\n FETCH_DATAREPORTS: \"FETCH_DATAREPORTS\",\r\n FETCHERROR_DATAREPORTS: \"FETCHERROR_DATAREPORTS\",\r\n CLEAR_DATAREPORTS: \"CLEAR_DATAREPORTS\",\r\n CLEAR_CUSTOM_STORE: \"CLEAR_CUSTOM_STORE\",\r\n UPDATE_PROFILE: \"UPDATE_PROFILE\",\r\n};\r\n","export const isLaterDate = (to, fro) => {\r\n //Date format is DD/MM/YYYY\r\n let toNumeric = parseInt(to.slice(6) + to.slice(3, 5) + to.slice(0, 2));\r\n let froNumeric = parseInt(fro.slice(6) + fro.slice(3, 5) + fro.slice(0, 2));\r\n\r\n return toNumeric >= froNumeric;\r\n};\r\n\r\nexport const buildAgentName = (agent) => {\r\n //remove all 0s first\r\n let padAgent = agent.agentID.replace('0', '');\r\n padAgent = PadRight(padAgent, '0', 6);\r\n if (padAgent === '') {\r\n return agent.agentName;\r\n } else {\r\n return agent.agentName + \" #\" + padAgent;\r\n }\r\n}\r\n\r\nexport const PadRight = (padString, padCharacter, padLength) => {\r\n if (padString.trim() === '') {\r\n return '';\r\n } else {\r\n let newString = padCharacter.repeat(padLength) + padString;\r\n return newString.substring(newString.length - padLength, newString.length);\r\n }\r\n}","export const styleTypes = {\r\n NORMAL: 0,\r\n POLICYTYPE: 1,\r\n HEAD: 2,\r\n BOLD: 3,\r\n BACKGROUNDCOLOR: 5,\r\n BOLDANDRED: 6,\r\n BOLDANDINDENT: 7,\r\n WHITE: 8,\r\n GREY: 9,\r\n INDENT: 10,\r\n EMPTY: 15,// temporary\r\n RED: 20\r\n};\r\n\r\nexport const phoneTypes = {\r\n Beeper: 1,\r\n Business: 2,\r\n BusinessFax: 3,\r\n Cellular: 4,\r\n Mailing: 5,\r\n Other: 6,\r\n Pager: 7,\r\n Residence: 8,\r\n ResidenceFax: 9,\r\n Residence2: 10,\r\n SelectPhone: 11\r\n}\r\n\r\nexport const addressTypes = {\r\n Billing: 1,\r\n Business: 2,\r\n Disbursement: 3,\r\n Mailing: 4,\r\n Other: 5,\r\n Residence: 6,\r\n Vacation: 7\r\n}\r\n","export const ActionTypes = {\r\n DATA_LOAD: 'data_load',\r\n DATA_LOADING: 'DATA_LOADING',\r\n DATA_REMOVE: 'data_remove',\r\n CONTROLITEMS_LOAD: 'controlitems_load',\r\n UPDATE_CONTROLITEMS: 'UPDATE_CONTROLITEMS',\r\n PRODUCTSETUPITEMS_LOAD: 'productsetupitems_load',\r\n INTERFACESETUPITEMS_LOAD: 'interfacesetupitems_load',\r\n INTERFACESETUPITEMS_UPDATE: 'INTERFACESETUPITEMS_UPDATE',\r\n ALLSETUPS_LOAD: 'ALLSETUPS_LOAD',\r\n SET_FORMDATA: 'set_formdata',\r\n UPDATE_FORMDATA: 'update_formdata',\r\n CLEAR_FORMDATA: 'clear_formdata',\r\n USER_LOADED: 'USER_LOADED',\r\n AUTH_ERROR: 'AUTH_ERROR',\r\n LOGIN_REQUEST: 'LOGIN_REQUEST',\r\n LOGIN_SUCCESS: 'LOGIN_SUCCESS',\r\n LOGIN_FAIL: 'LOGIN_FAIL',\r\n AUTH_FAIL: 'AUTH_FAIL',\r\n AUTH_SUCCESS: 'AUTH_SUCCESS',\r\n REFRESH_TOKEN_SUCCESS: 'REFRESH_TOKEN_SUCCESS',\r\n REFRESH_TOKEN_FAIL: 'REFRESH_TOKEN_FAIL',\r\n GET_PROFILE: 'GET_PROFILE',\r\n CLEAR_PROFILE: 'CLEAR_PROFILE',\r\n UPDATE_PROFILE: 'UPDATE_PROFILE',\r\n LOGOUT: 'LOGOUT',\r\n SESSION_TIMEOUT: 'SESSION_TIMEOUT',\r\n SET_USERNAME: 'SET_USERNAME',\r\n ALL_USERS: 'ALL_USERS',\r\n SET_ALERT: 'SET_ALERT',\r\n REMOVE_ALERT: 'REMOVE_ALERT',\r\n CLEAR_CUSTOM_STORE: 'CLEAR_CUSTOM_STORE',\r\n};\r\n","export {usePCTranslation} from './usePCTranslation';\r\nexport {useRouter} from './useRouter';\r\nexport {ScrollToTopController} from './ScrollToTop';\r\n","import axios from 'axios';\r\nimport {ActionTypes} from '../types';\r\nimport {setAlert} from './alertActions';\r\nimport {setAuthToken, setInterceptor} from 'core/utils/setAuthConfig';\r\nimport {loadControlItems} from './setupActions';\r\nimport {setRoutes, clearCustomStore} from 'custom/common/redux/actions';\r\nimport {sendTrackingInfo} from 'core/api/trackingWebService';\r\n\r\n//LoginTracking\r\nconst trackLoginUser = (user) => {\r\n const { trackingUserName, username, agentID } = user;\r\n const trackingData = {\r\n detail: {\r\n formName: 'login',\r\n CurrentField: 'btnLogin',\r\n },\r\n header: {\r\n agentID,\r\n eventType: 'BUTTON_CLICK',\r\n formName: 'login',\r\n name: 'btnLogin',\r\n timestamp: Math.trunc(Date.now() / 1000),\r\n username: trackingUserName,\r\n loginUserName: username\r\n },\r\n };\r\n sendTrackingInfo(trackingData);\r\n};\r\n//Fetch User\r\nexport const fetchUser = (account = {}, isRefresh) => async (dispatch, getState) => {\r\n dispatch({type: ActionTypes.LOGIN_REQUEST});\r\n const token = JSON.parse(sessionStorage.getItem('refreshToken'));\r\n try {\r\n let data;\r\n const tokenMethod = sessionStorage.getItem('tokenMethod');\r\n if (tokenMethod === 'AD') {\r\n const responseAD = await axios.get(`/users/${account?.username}`);\r\n data = responseAD.data;\r\n } else {\r\n const response = await axios.post('/users/login', token);\r\n data = response.data;\r\n }\r\n /**\r\n * Below check is for session expiry case. Where form data persists in session storage\r\n * After session expiry, if some different user tries to login. All session storage and redux data is first cleared with logout() action\r\n * Then latest captured refresh token is restored in session which also gets cleared in logout() action call.\r\n * Paramater in logout ensures we don't make unnecessary call to backend to clear our refresh token\r\n * After this normal code execution continues\r\n */\r\n const username = sessionStorage.getItem('username');\r\n if (username && username !== data.username) {\r\n dispatch(logout(false));\r\n sessionStorage.setItem('refreshToken', JSON.stringify(token));\r\n }\r\n dispatch({\r\n type: ActionTypes.LOGIN_SUCCESS,\r\n payload: data,\r\n });\r\n dispatch(setRoutes(data));\r\n if (data['fontSize'] === 'Large') {\r\n document.body.classList.add('altFont');\r\n } else if (data['data'] === 'Small') {\r\n document.body.classList.remove('altFont');\r\n }\r\n if (!getState().setupItems.controlItems) {\r\n dispatch(loadControlItems());\r\n }\r\n if (!isRefresh) {\r\n trackLoginUser(data);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n dispatch({type: ActionTypes.LOGIN_FAIL});\r\n if (error.response) {\r\n dispatch(setAlert(error.response.data['message'], 'Error', 'login'));\r\n }\r\n }\r\n};\r\n\r\n// Login User\r\nlet cancelToken;\r\nexport const login = (username, password) => async (dispatch) => {\r\n dispatch({type: ActionTypes.LOGIN_REQUEST});\r\n if (typeof cancelToken != typeof undefined) {\r\n cancelToken.cancel('Operation canceled due to new request.');\r\n }\r\n cancelToken = axios.CancelToken.source();\r\n var generateTrackingUserName = false;\r\n const body = { username, password, generateTrackingUserName };\r\n try {\r\n const {data} = await axios.post('/users/authenticate', body, {cancelToken: cancelToken.token});\r\n\r\n sessionStorage.setItem('refreshToken', JSON.stringify(data));\r\n // setAuthToken(data.jwt);\r\n setInterceptor();\r\n dispatch({type: ActionTypes.AUTH_SUCCESS, payload: data});\r\n dispatch(fetchUser(undefined, false));\r\n } catch (error) {\r\n dispatch({type: ActionTypes.AUTH_ERROR});\r\n if (error && error.response) {\r\n dispatch(setAlert(error.response.data['message'], 'Error', 'login'));\r\n }\r\n console.log(error);\r\n }\r\n};\r\n\r\n//Update user profile field\r\nexport const updateUserProfileField = (fieldName, value) => async (dispatch, getState) => {\r\n let user = {...getState().auth.user};\r\n const isAuthenticated = getState().auth.isAuthenticated;\r\n\r\n if (isAuthenticated) {\r\n user[fieldName] = value;\r\n try {\r\n const res = await axios.post('/users/update', user);\r\n dispatch({\r\n type: ActionTypes.UPDATE_PROFILE,\r\n payload: res.data,\r\n });\r\n } catch (error) {\r\n if (error && error.response) {\r\n console.log(error.response.data);\r\n }\r\n }\r\n }\r\n};\r\n\r\n//Update User Profile\r\nexport const updateUserProfile = (formData, t) => async (dispatch, getState) => {\r\n let user = {...getState().auth.user};\r\n const isAuthenticated = getState().auth.isAuthenticated;\r\n\r\n if (isAuthenticated) {\r\n user['profileName'] = formData['txtUserName'];\r\n user['emailAddress'] = formData['txtEmailAddress'];\r\n user['phoneNumberPrimary'] = formData['txtPrimaryPhone'];\r\n user['phoneNumberSecondary'] = formData['txtSecondaryPhone'];\r\n user['faxNumber'] = formData['txtFaxNumber'];\r\n user['isMobilePrimary'] = formData['chkPrimaryPhone'];\r\n user['isMobileSecondary'] = formData['chkSecondaryPhone'];\r\n user['inputLanguage'] = formData['rdoInputLanguage'];\r\n user['reportLanguage'] = formData['rdoReportLanguage'];\r\n user['fontSize'] = formData['rdoFontSize'];\r\n user['defaultApplication'] = formData['rdoDefaultApp'];\r\n user['formData'] = {};\r\n if (formData['widgetsData']) {\r\n user['widgets'] = formData['widgetsData'];\r\n }\r\n try {\r\n const res = await axios.post('/users/update', user);\r\n dispatch({\r\n type: ActionTypes.UPDATE_PROFILE,\r\n payload: res.data,\r\n });\r\n dispatch(setAlert(t('msg-InfoUpdatedSaved'), 'Success', 'updateProfile'));\r\n } catch (error) {\r\n dispatch(setAlert(error.response.data['message'], 'Error', 'updateProfile', 5000));\r\n console.log(error.response.data);\r\n // dispatch({type: ActionTypes.LOGIN_FAIL});\r\n }\r\n }\r\n};\r\n\r\n//Api for only Admin user\r\nexport const getAllUsers = (updatedUser) => async (dispatch, getState) => {\r\n let res;\r\n try {\r\n res = await axios.get('/users');\r\n console.log(res.data);\r\n dispatch({type: ActionTypes.ALL_USERS, payload: res.data});\r\n } catch (error) {\r\n if (error.response) {\r\n console.log(error.responderEnd);\r\n }\r\n }\r\n\r\n if (updatedUser) {\r\n const currentUser = getState().auth.user;\r\n if (currentUser.username === updatedUser.username) {\r\n updatedUser.formData = {...currentUser.formData};\r\n updatedUser.system = {...currentUser.system};\r\n dispatch({\r\n type: ActionTypes.UPDATE_PROFILE,\r\n payload: updatedUser,\r\n });\r\n }\r\n }\r\n};\r\n\r\n// Logout / Clear Profile\r\nexport const logout =\r\n (callApi = true) =>\r\n async (dispatch) => {\r\n let token = JSON.parse(sessionStorage.getItem(\"refreshToken\"));\r\n const tokenMethod = sessionStorage.getItem(\"tokenMethod\");\r\n\r\n dispatch({ type: ActionTypes.REMOVE_ALERT, name: \"updateProfile\" });\r\n dispatch({ type: ActionTypes.LOGOUT });\r\n dispatch({ type: ActionTypes.CLEAR_PROFILE });\r\n dispatch({ type: ActionTypes.CLEAR_FORMDATA, payload: {} });\r\n dispatch({ type: ActionTypes.DATA_REMOVE });\r\n dispatch(clearCustomStore());\r\n\r\n if (callApi && token && tokenMethod !== \"AD\") {\r\n try {\r\n console.log(\"Logout by clicking logout button\");\r\n await axios.post(\"/users/logout\", token);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n };\r\n\r\n// Session Timeout\r\nexport const sessionTimeout = () => async (dispatch) => {\r\n let token = JSON.parse(sessionStorage.getItem(\"refreshToken\"));\r\n const tokenMethod = sessionStorage.getItem(\"tokenMethod\");\r\n\r\n if (token && tokenMethod !== \"AD\") {\r\n try {\r\n console.log(\"Session timed out\");\r\n await axios.post(\"/users/logout\", token);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n } else {\r\n let keys = Object.keys(sessionStorage);\r\n let adKeys = keys.filter((key) => key.includes(\"login.windows.net\"));\r\n adKeys.forEach((key) => sessionStorage.removeItem(key));\r\n }\r\n\r\n document.documentElement.classList.remove(\r\n ...document.documentElement.classList\r\n );\r\n\r\n // dispatch({type: ActionTypes.DATA_REMOVE});\r\n dispatch({ type: ActionTypes.SESSION_TIMEOUT });\r\n};\r\n","import {ActionTypes} from '../types';\r\n\r\nexport const setAlert = (msg, alertType, name, timeout = 5000) => (dispatch) => {\r\n dispatch({\r\n type: ActionTypes.SET_ALERT,\r\n name,\r\n payload: {msg, alertType},\r\n });\r\n\r\n setTimeout(() => dispatch({type: ActionTypes.REMOVE_ALERT, name}), timeout);\r\n};\r\n\r\nexport const removeAlert = (name) => {\r\n return {\r\n type: ActionTypes.REMOVE_ALERT,\r\n name,\r\n };\r\n};\r\n","import axios from 'axios';\r\nimport {ActionTypes} from '../types';\r\nimport {setAlert} from './alertActions';\r\n\r\nexport const loadControlItems = () => async (dispatch) => {\r\n dispatch({type: ActionTypes.DATA_LOADING});\r\n try {\r\n const {data} = await axios.get('/api/GetControlItems');\r\n if (data && Object.keys(data).length > 0) {\r\n dispatch({\r\n type: ActionTypes.CONTROLITEMS_LOAD,\r\n payload: data,\r\n });\r\n } else {\r\n dispatch(loadDataFail());\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n dispatch(loadDataFail());\r\n }\r\n};\r\n\r\nexport const loadInterfaceSetupItems = (id = 0) => async (dispatch, getState) => {\r\n dispatch({type: ActionTypes.DATA_LOADING});\r\n let res;\r\n try {\r\n if (id === 0) {\r\n res = await axios.get(`/api/getAllInterfaceSetupItems/`);\r\n dispatch({\r\n type: ActionTypes.INTERFACESETUPITEMS_LOAD,\r\n payload: res.data,\r\n });\r\n } else if (getState().setupItems && getState().setupItems.interfaceSetupArray) {\r\n let interfaceItem = getState().setupItems.interfaceSetupArray.find(\r\n (item) => item.prodID === id\r\n );\r\n\r\n dispatch({\r\n type: ActionTypes.INTERFACESETUPITEMS_UPDATE,\r\n payload: interfaceItem,\r\n });\r\n\r\n res = await axios.get(`/api/allSetups/${id}`);\r\n dispatch({\r\n type: ActionTypes.ALLSETUPS_LOAD,\r\n payload: res.data,\r\n });\r\n } else {\r\n dispatch(loadDataFail());\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n dispatch(loadDataFail());\r\n }\r\n};\r\n\r\nexport const loadDataFail = () => (dispatch) => {\r\n dispatch({type: ActionTypes.DATA_REMOVE});\r\n dispatch({type: ActionTypes.AUTH_ERROR});\r\n};\r\n\r\nexport const updateControlItems = (name, parameter, value) => {\r\n return {\r\n type: ActionTypes.UPDATE_CONTROLITEMS,\r\n payload: {\r\n name,\r\n parameter,\r\n value,\r\n },\r\n };\r\n};\r\n\r\nexport const updateControlItemsDB = (controlItems) => async (dispatch) => {\r\n try {\r\n const res = await axios.post('/api/updateControlItems', controlItems);\r\n dispatch(loadControlItems());\r\n dispatch(setAlert('Control is successfully saved', 'Success', 'controlItem'));\r\n } catch (error) {\r\n console.log(error);\r\n dispatch(\r\n setAlert('An error occurred while saving. Please try again!!!', 'Error', 'controlItem')\r\n );\r\n }\r\n};\r\n\r\nexport const deleteControlItemDB = (controls) => async (dispatch) => {\r\n try {\r\n const res = await axios.post('/api/deleteControlItems', controls);\r\n dispatch(loadControlItems());\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n\r\nexport const updateInterfaceSetupItemsDB = (interfaceSetupItem) => async (dispatch) => {\r\n try {\r\n const res = await axios.post('/api/updateInterfaceSetup', interfaceSetupItem);\r\n dispatch(loadInterfaceSetupItems());\r\n dispatch(setAlert('InterfaceSetup is successfully saved', 'Success', 'interfaceSetupItem'));\r\n } catch (error) {\r\n console.log(error);\r\n dispatch(\r\n setAlert('An error occurred while saving. Please try again!!!', 'Error', 'controlItem')\r\n );\r\n }\r\n};\r\n\r\nexport const deleteInterfaceSetupItemDB = (interfaceSetupItem) => async (dispatch) => {\r\n try {\r\n const res = await axios.post('/api/deleteInterfaceSetup', interfaceSetupItem);\r\n dispatch(loadInterfaceSetupItems());\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\n","import {ActionTypes} from '../Types';\r\n\r\nexport const setRoutes = (user) => (dispatch) => {\r\n dispatch({type: ActionTypes.SET_ROUTES});\r\n\r\n if (user) {\r\n const {permissions} = user;\r\n const isAdminSystem =\r\n user.system?.isAdminSystem &&\r\n (permissions?.isAdminSystem?.isActive || permissions?.isAdminSystemAdministrator?.isActive);\r\n\r\n if (\r\n !user.system.isBusinessIntelligence ||\r\n !(\r\n user.system.isBusinessIntelligence &&\r\n (permissions?.isAdmin?.isActive ||\r\n permissions?.isBusinessIntelligence?.isActive ||\r\n isAdminSystem)\r\n )\r\n ) {\r\n dispatch({\r\n type: ActionTypes.HIDE_TRACKING,\r\n });\r\n }\r\n if (!permissions?.isAdmin?.isActive) {\r\n dispatch({\r\n type: ActionTypes.HIDE_USERS,\r\n });\r\n }\r\n if (!permissions?.isDeveloper?.isActive) {\r\n dispatch({\r\n type: ActionTypes.HIDE_DEV_ROUTE,\r\n });\r\n }\r\n\r\n if (\r\n user.system.isBusinessIntelligence &&\r\n user.permissions?.isBusinessIntelligence?.isActive &&\r\n !(user.permissions?.isAdmin?.isActive || isAdminSystem)\r\n ) {\r\n dispatch({\r\n type: ActionTypes.HIDE_BI_DETAILS,\r\n });\r\n }\r\n }\r\n};\r\n","import {ActionTypes} from '../Types';\r\n\r\nexport const createGlobalVariableArray = (key, value) => {\r\n return {\r\n type: ActionTypes.CREATE_GLOBAL_ARRAY,\r\n payload: {key, value},\r\n };\r\n};\r\n\r\n//This is hook to the core implementation from where it is called for clearing redux on logout\r\nexport const clearCustomStore = () => (dispatch) => {\r\n dispatch({type: ActionTypes.INFORCE_REMOVE});\r\n dispatch({type: ActionTypes.CLEAR_ALPHALOOKUP});\r\n dispatch({type: ActionTypes.CLEAR_DATAREPORTS});\r\n dispatch({type: ActionTypes.TREE_REMOVE});\r\n dispatch({type: ActionTypes.REMOVE_FIRSTYEAR_PREMIUM});\r\n};\r\n","import {ActionTypes} from '../types';\r\n\r\nexport const setStoreFormData = (\r\n formData,\r\n dataType,\r\n useSessionStorage = true\r\n) => {\r\n // console.log(formData);\r\n let initialFormData = formData;\r\n\r\n //Session store will\r\n if (sessionStorage.getItem(dataType) && useSessionStorage) {\r\n initialFormData = JSON.parse(sessionStorage.getItem(dataType));\r\n }\r\n //Custom code for Date components. Either, will move state to Component level state or handle it differently.\r\n Object.keys(initialFormData).forEach((item) => {\r\n // controlItems[item].fieldType === 'input_Date';\r\n if (item.startsWith(\"dt\")) {\r\n if (initialFormData[item] === \"\") {\r\n initialFormData[item] = new Date();\r\n } else {\r\n initialFormData[item] = new Date(initialFormData[item]);\r\n }\r\n }\r\n });\r\n return {\r\n type: ActionTypes.SET_FORMDATA,\r\n payload: { formData: initialFormData, dataType },\r\n };\r\n};\r\nexport const updateWholeFormData = (updatedFormData, dataType) => {\r\n return {\r\n type: ActionTypes.SET_FORMDATA,\r\n payload: { formData: updatedFormData, dataType },\r\n };\r\n};\r\n\r\n\r\nexport const updateStoreFormData = (name, value, dataType) => {\r\n return {\r\n type: ActionTypes.UPDATE_FORMDATA,\r\n payload: {name, value, dataType},\r\n };\r\n};\r\n\r\nexport const clearStoreFormData = (dataType, formData /*Initializing with default values */) => {\r\n return {\r\n type: ActionTypes.CLEAR_FORMDATA,\r\n payload: {dataType, formData},\r\n };\r\n};\r\n","import {\r\n PolicyTypes,\r\n MAX_ARRAY,\r\n RiderTypes,\r\n FundTypes,\r\n Alternate_IntRate,\r\n CoverageTypes,\r\n} from 'core/constants/calcConstants';\r\nimport {IsProdIDFlexLife2} from 'custom/common/utils/lookupFunctions';\r\nimport {globalVariables} from './util';\r\n\r\n//Core - Calculation Object\r\nexport function columnItemsMerge(colArray1, colArray2, prefixStr) {\r\n let mergedArray = [...colArray1];\r\n for (let idx = 0; idx < colArray2.length; idx++) {\r\n let arrItem = {...colArray2[idx]};\r\n arrItem.name = prefixStr + '_' + colArray2[idx].name;\r\n arrItem.displayName = prefixStr + ' ' + colArray2[idx].displayName;\r\n arrItem.columnNumber = mergedArray.length + 1;\r\n\r\n mergedArray.push(arrItem);\r\n }\r\n return mergedArray;\r\n}\r\n//Core - Calculation Object\r\nexport function dblTableDataMerge(arr1, arr2) {\r\n let new2dArr = [];\r\n let temp1dArr = [];\r\n let temp0Arr;\r\n let finalLen = 0;\r\n if (arr1.length > arr2.length) {\r\n temp0Arr = Array(arr2[0].length).fill(0);\r\n finalLen = arr1.length;\r\n } else {\r\n temp0Arr = Array(arr1[0].length).fill(0);\r\n finalLen = arr2.length;\r\n }\r\n\r\n for (let idx = 0; idx < finalLen; idx++) {\r\n if (idx < arr1.length) {\r\n temp1dArr = [...arr1[idx]];\r\n } else {\r\n temp1dArr = [...temp0Arr];\r\n }\r\n if (idx < arr2.length) {\r\n temp1dArr = temp1dArr.concat(arr2[idx].slice(1));\r\n } else {\r\n temp1dArr = temp1dArr.concat(temp0Arr.slice(1));\r\n }\r\n new2dArr.push(temp1dArr);\r\n }\r\n\r\n return new2dArr;\r\n}\r\n\r\n//Core - Calculation Object\r\nexport function ResetFaceAmounts(coverages) {\r\n for (let aCoverageItem of coverages) {\r\n aCoverageItem.faceAmount = aCoverageItem.initialFaceAmount;\r\n if (aCoverageItem.coverages.length > 0) {\r\n ResetFaceAmounts(aCoverageItem.coverages);\r\n }\r\n }\r\n}\r\n\r\n//Core - Calculation Object\r\nexport function ResetFundValues(coverages) {\r\n for (let aCoverageItem of coverages) {\r\n ResetFundValuesInCoverage(aCoverageItem);\r\n if (aCoverageItem.coverages.length > 0) {\r\n ResetFundValues(aCoverageItem.coverages);\r\n }\r\n }\r\n}\r\n//Core - Calculation Object\r\nexport function ResetFundValuesInCoverage(aCoverageItem) {\r\n for (let aFundItem of aCoverageItem.funds) {\r\n aFundItem.fundValue = aFundItem.initialFundValue;\r\n for (let i = 0; i < aFundItem.fundValueArray.length; i++) {\r\n aFundItem.fundValueArray[i] = 0;\r\n }\r\n }\r\n}\r\n\r\n//Core - Calculation Object\r\nexport function AdjustCOIMultiplier(coverages, coiIncrease, increaseStartYear) {\r\n for (let aCoverageItem of coverages) {\r\n if (aCoverageItem.policyType === PolicyTypes.UL || aCoverageItem.riderType === RiderTypes.UL) {\r\n aCoverageItem.coiRateMultiplier = coiIncrease;\r\n aCoverageItem.coiRateMultiplierStartYear = increaseStartYear;\r\n }\r\n if (aCoverageItem.coverages.length > 0) {\r\n AdjustCOIMultiplier(aCoverageItem.coverages, coiIncrease, increaseStartYear);\r\n }\r\n }\r\n}\r\n\r\nexport function getCoverageItemByType(coverages, coverageType) {\r\n let returnItem = {};\r\n for (let coverageItem of coverages) {\r\n if (coverageItem.coverageType === coverageType) {\r\n return coverageItem;\r\n }\r\n\r\n if (coverageItem.coverages.length > 0) {\r\n returnItem = getCoverageItemByType(coverageItem.coverages, coverageType);\r\n //We check to see if the object is empty by seeing if it has the coverageID property\r\n if (returnItem.hasOwnProperty('coverageID')) {\r\n return returnItem;\r\n }\r\n }\r\n }\r\n return returnItem;\r\n}\r\n\r\nexport function getCoverageItemByRiderType(coverages, coverageType, riderType) {\r\n let returnItem = {};\r\n for (let coverageItem of coverages) {\r\n if (coverageItem.coverageType === coverageType && coverageItem.riderType === riderType) {\r\n return coverageItem;\r\n }\r\n\r\n if (coverageItem.coverages.length > 0) {\r\n returnItem = getCoverageItemByRiderType(coverageItem.coverages, coverageType, riderType);\r\n //We check to see if the object is empty by seeing if it has the coverageID property\r\n if (returnItem.hasOwnProperty('coverageID')) {\r\n return returnItem;\r\n }\r\n }\r\n }\r\n return returnItem;\r\n}\r\n\r\nexport function getCoverageItemByCoverageID(coverages, coverageID) {\r\n let returnItem = {};\r\n for (let coverageItem of coverages) {\r\n if (coverageItem.coverageID === coverageID) {\r\n return coverageItem;\r\n }\r\n\r\n if (coverageItem.coverages.length > 0) {\r\n returnItem = getCoverageItemByCoverageID(coverageItem.coverages, coverageID);\r\n //We check to see if the object is empty by seeing if it has the coverageID property\r\n if (returnItem.hasOwnProperty('coverageID')) {\r\n return returnItem;\r\n }\r\n }\r\n }\r\n return returnItem;\r\n}\r\n\r\nexport function getDisabilityItem(disabilityItems, disabilityType) {\r\n for (let disabilityItem of disabilityItems) {\r\n if (disabilityItem.disabilityType.toUpperCase() === disabilityType.toUpperCase()) {\r\n return disabilityItem;\r\n }\r\n }\r\n return {};\r\n}\r\nexport function getCoverageByID(coverages, coverageID, parentCoverageID, ignoreParentID) {\r\n let returnItem = {};\r\n\r\n for (let coverageItem of coverages) {\r\n if (ignoreParentID) {\r\n if (coverageItem.coverageID === coverageID) {\r\n return coverageItem;\r\n }\r\n } else {\r\n if (\r\n coverageItem.coverageID === coverageID &&\r\n coverageItem.parentCoverageID === parentCoverageID\r\n ) {\r\n return coverageItem;\r\n }\r\n }\r\n\r\n if (coverageItem.coverages.length > 0) {\r\n returnItem = getCoverageByID(\r\n coverageItem.coverages,\r\n coverageID,\r\n parentCoverageID,\r\n ignoreParentID\r\n );\r\n //We check to see if the object is empty by seeing if it has the coverageID property\r\n if (returnItem.hasOwnProperty('coverageID')) {\r\n return returnItem;\r\n }\r\n }\r\n }\r\n return returnItem;\r\n}\r\n//Core - Calculation Object\r\nexport function getSolveByName(policy, name) {\r\n for (let solveItem of policy.solves) {\r\n if (solveItem.name.toUpperCase() === name.toUpperCase()) {\r\n return solveItem;\r\n }\r\n }\r\n return {};\r\n}\r\n//Core - Calculation Object\r\nexport function addSolveItem(policy, name, solveItem) {\r\n let index = getSolveIndex(policy, name);\r\n if (index === -1) {\r\n policy.solves.push(solveItem);\r\n } else {\r\n policy.solves[index] = solveItem;\r\n }\r\n}\r\n//Core - Calculation Object\r\nfunction getSolveIndex(policy, name) {\r\n for (let i = 0; i < policy.solves.length - 1; i++) {\r\n if (policy.solves[i].name.toUpperCase() === name.toUpperCase()) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n}\r\n//Core - Calculation Object\r\nexport function setSolveIsActive(policy, name, isActive) {\r\n let index = getSolveIndex(policy, name);\r\n if (index > -1) {\r\n policy.solves[index].isActive = isActive;\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function InitializeCalcArray(calcArray) {\r\n calcArray = [];\r\n for (let i = 0; i <= MAX_ARRAY; i++) {\r\n calcArray.push(0);\r\n }\r\n return calcArray;\r\n}\r\n//Core - calculation object\r\nexport function removeFromProductSetupList(aList, name) {\r\n let index = -1;\r\n for (let i = 0; i < aList.length; i++) {\r\n if (aList[i].toUpperCase() === name.toUpperCase()) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index >= 0) {\r\n aList.splice(index, 1);\r\n }\r\n return aList;\r\n}\r\n\r\n//Core - calculation object\r\nexport function removeFund(aFundItems, fundName) {\r\n let index = -1;\r\n for (let i = 0; i < aFundItems.length; i++) {\r\n if (aFundItems[i].fundName.toUpperCase() === fundName.toUpperCase()) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index >= 0) {\r\n aFundItems.splice(index, 1);\r\n }\r\n return aFundItems;\r\n}\r\n\r\n//Core - calculation object\r\nexport function setFundAllocations(aCalcPolicy, aPPRPolicy) {\r\n let dblTotal = 0;\r\n let dblAllocation = 0;\r\n let dblFundValue = 0;\r\n\r\n for (let aFundItem of aCalcPolicy.coverages[0].funds) {\r\n if (!aFundItem.isExternalFund) {\r\n dblTotal = dblTotal + getFundValue(aFundItem, aPPRPolicy);\r\n }\r\n }\r\n\r\n dblTotal = PCRound(dblTotal, 2);\r\n\r\n for (let aFundItem of aCalcPolicy.coverages[0].funds) {\r\n if (!aFundItem.isExternalFund) {\r\n dblFundValue = getFundValue(aFundItem, aPPRPolicy);\r\n\r\n if (dblFundValue === 0) {\r\n dblAllocation = 0;\r\n } else {\r\n dblAllocation = PCRound((dblFundValue / dblTotal) * 100, 4);\r\n }\r\n\r\n //aFundItem.ChargeAllocation.AllocationPercent = dblAllocation\r\n //aFundItem.ChargeAllocation.IsIncludedInAllocation = True\r\n\r\n //aFundItem.DepositAllocation.AllocationPercent = dblAllocation\r\n //aFundItem.DepositAllocation.IsIncludedInAllocation = True\r\n }\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function getFundValue(aFundItem, aPPRPolicy) {\r\n console.log('inside calcUtils.getFundValue');\r\n //for DIA we use the fund's current value not the value on calculation start\r\n if (aFundItem.fundType === FundTypes.DIA) {\r\n let aPPRFundItem = FindFundbyID(aPPRPolicy.coverages[0].funds, aFundItem.fundID);\r\n if (aPPRFundItem) {\r\n return aPPRFundItem.currentFundValue;\r\n }\r\n }\r\n return aFundItem.fundValue;\r\n}\r\n\r\n//Core - calculation object\r\nexport function setPolicyFeeMultiplier(calcPolicy, multiplier) {\r\n calcPolicy.baseCoverage.policyFeeRateData.customRateMultiplier =\r\n calcPolicy.baseCoverage.policyFeeRateData.customRateMultiplier * multiplier;\r\n}\r\n\r\n//Core - calculation object\r\nexport function setULCOIMultiplier(coverages, multiplier) {\r\n for (let aCoverageItem of coverages) {\r\n setCoverageULCOIMultiplier(aCoverageItem, multiplier);\r\n if (aCoverageItem.coverages.length > 0) {\r\n setULCOIMultiplier(aCoverageItem.coverages, multiplier);\r\n }\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function setCoverageULCOIMultiplier(aCoverageItem, multiplier) {\r\n if (aCoverageItem.productSetup.isCalcPremium) {\r\n aCoverageItem.premiumRateData.customRateMultiplier =\r\n aCoverageItem.premiumRateData.customRateMultiplier * multiplier;\r\n }\r\n\r\n if (aCoverageItem.productSetup.isCalculateCharges) {\r\n aCoverageItem.coiLevelRateData.customRateMultiplier =\r\n aCoverageItem.coiLevelRateData.customRateMultiplier * multiplier;\r\n aCoverageItem.coiyrtRateData.customRateMultiplier =\r\n aCoverageItem.coiyrtRateData.customRateMultiplier * multiplier;\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function InitializeInterestRatesUL(calcPolicy) {\r\n InitializeDIAInterestRates(calcPolicy);\r\n if (IsProdIDFlexLife2(calcPolicy.prodID)) {\r\n InitializeGIAInterestRates(calcPolicy);\r\n InitializeSegFundInterestRates(calcPolicy);\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function RestoreInterestRatesUL(calcPolicy) {\r\n RestoreDIAInterestRates(calcPolicy);\r\n if (IsProdIDFlexLife2(calcPolicy.prodID)) {\r\n RestoreGIAInterestRates(calcPolicy);\r\n RestoreSegFundInterestRates(calcPolicy);\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function InitializeDIAInterestRates(calcPolicy) {\r\n InitializeFundInterestRates(FundTypes.DIA, calcPolicy);\r\n}\r\n\r\n//Core - calculation object\r\nexport function RestoreDIAInterestRates(calcPolicy) {\r\n RestoreFundInterestRates(FundTypes.DIA, calcPolicy);\r\n}\r\n\r\n//Core - calculation object\r\nexport function InitializeGIAInterestRates(calcPolicy) {\r\n InitializeFundInterestRates(FundTypes.GIA, calcPolicy);\r\n}\r\n\r\n//Core - calculation object\r\nexport function RestoreGIAInterestRates(calcPolicy) {\r\n RestoreFundInterestRates(FundTypes.GIA, calcPolicy);\r\n}\r\n\r\n//Core - calculation object\r\nexport function InitializeSegFundInterestRates(calcPolicy) {\r\n InitializeFundInterestRates(FundTypes.SegFund, calcPolicy);\r\n}\r\n\r\n//Core - calculation object\r\nexport function RestoreSegFundInterestRates(calcPolicy) {\r\n RestoreFundInterestRates(FundTypes.SegFund, calcPolicy);\r\n}\r\n\r\n//Core - calculation object\r\nexport function InitializeFundInterestRates(fundType, calcPolicy) {\r\n for (let aFundItem of calcPolicy.coverages[0].funds) {\r\n if (aFundItem.fundType === fundType) {\r\n CopyInterestRateDataToInitial(aFundItem);\r\n }\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function RestoreFundInterestRates(fundType, calcPolicy) {\r\n for (let aFundItem of calcPolicy.coverages[0].funds) {\r\n if (aFundItem.fundType === fundType) {\r\n RestoreInterestRateDataFromInitial(aFundItem);\r\n }\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function CopyInterestRateDataToInitial(fundItem) {\r\n fundItem.initialIsUseInterestRate = fundItem.isUseInterestRate;\r\n fundItem.initialInterestRate = fundItem.interestRate;\r\n\r\n fundItem.initialFundRateData.rateArray = [];\r\n for (let i = 0; i < fundItem.fundRateData.rateArray.length; i++) {\r\n fundItem.initialFundRateData.rateArray[i] = fundItem.fundRateData.rateArray[i];\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function RestoreInterestRateDataFromInitial(fundItem) {\r\n fundItem.isUseInterestRate = fundItem.initialIsUseInterestRate;\r\n fundItem.interestRate = fundItem.initialInterestRate;\r\n\r\n fundItem.fundRateData.rateArray = [];\r\n for (let i = 0; i < fundItem.initialFundRateData.rateArray.length; i++) {\r\n fundItem.fundRateData.rateArray[i] = fundItem.initialFundRateData.rateArray[i];\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function AdjustDODInterestRate(intRateAdjustAmount, calcPolicy) {\r\n //The interest rate adjustment occurs from year 2 onwards\r\n AdjustFundInterestRate(\r\n intRateAdjustAmount,\r\n Alternate_IntRate.StartYear,\r\n FundTypes.DOD,\r\n calcPolicy\r\n );\r\n}\r\n\r\nexport function ResetDODInterestRateFlag(calcPolicy) {\r\n ResetFundInterestRateFlag(FundTypes.DOD, calcPolicy);\r\n}\r\n\r\n//Core - calculation object\r\nexport function AdjustInterestRatesUL(intRateAdjustAmount, calcPolicy) {\r\n AdjustDIAInterestRate(intRateAdjustAmount, calcPolicy);\r\n if (IsProdIDFlexLife2(calcPolicy.prodID)) {\r\n AdjustGIAInterestRate(intRateAdjustAmount, calcPolicy);\r\n AdjustSegFundInterestRate(intRateAdjustAmount, calcPolicy);\r\n }\r\n}\r\n\r\nexport function SetInterestRatesULTwoTier(dblRate1, intFromYear, intToYear, dblRate2, calcPolicy) {\r\n let intMaxDuration;\r\n let rateArray = [];\r\n\r\n for (let aFundItem of calcPolicy.coverages[0].funds) {\r\n if (\r\n (aFundItem.fundType = FundTypes.DIA) ||\r\n (IsProdIDFlexLife2(calcPolicy.prodID) &&\r\n ((aFundItem.FundType = aFundItem.fundType = FundTypes.GIA) ||\r\n (aFundItem.FundType = aFundItem.fundType = FundTypes.SegFund)))\r\n ) {\r\n //we must change it to use the interest rate array and populate the array accordingly\r\n aFundItem.isUseInterestRate = false;\r\n aFundItem.fundRateData.isReadRate = false;\r\n intMaxDuration = aFundItem.fundRateData.rateArray.length - 1;\r\n console.log(`intMaxDuration=${intMaxDuration}`);\r\n\r\n for (let i = intFromYear; i <= Math.min(intMaxDuration, intToYear); i++) {\r\n aFundItem.fundRateData.rateArray[i] = dblRate1;\r\n //console.log(`i=${i}`);\r\n //console.log(`dblRate1=${dblRate1}`);\r\n }\r\n\r\n for (let i = Math.min(intMaxDuration, intToYear) + 1; i <= intMaxDuration; i++) {\r\n aFundItem.fundRateData.rateArray[i] = dblRate2;\r\n }\r\n }\r\n }\r\n}\r\n\r\n//Core - calculation object\r\nexport function AdjustDIAInterestRate(intRateAdjustAmount, calcPolicy) {\r\n //'The interest rate adjustment occurs from year 3 onwards\r\n AdjustFundInterestRate(\r\n intRateAdjustAmount,\r\n Alternate_IntRate.StartYear_UL,\r\n FundTypes.DIA,\r\n calcPolicy\r\n );\r\n}\r\n\r\n//Core - calculation object\r\nexport function AdjustGIAInterestRate(intRateAdjustAmount, calcPolicy) {\r\n //'The interest rate adjustment occurs from year 3 onwards\r\n AdjustFundInterestRate(\r\n intRateAdjustAmount,\r\n Alternate_IntRate.StartYear_UL,\r\n FundTypes.GIA,\r\n calcPolicy\r\n );\r\n}\r\n\r\n//Core - calculation object\r\nexport function AdjustSegFundInterestRate(intRateAdjustAmount, calcPolicy) {\r\n //'The interest rate adjustment occurs from year 3 onwards\r\n AdjustFundInterestRate(\r\n intRateAdjustAmount,\r\n Alternate_IntRate.StartYear_UL,\r\n FundTypes.SegFund,\r\n calcPolicy\r\n );\r\n}\r\n\r\n//Core - calculation object\r\nexport function AdjustFundInterestRate(\r\n intRateAdjustAmount,\r\n intRateStartYear,\r\n fundType,\r\n calcPolicy\r\n) {\r\n for (let aFundItem of calcPolicy.coverages[0].funds) {\r\n if (aFundItem.fundType === fundType) {\r\n aFundItem.fundRateData.isReadRate = false;\r\n if (aFundItem.isUseInterestRate) {\r\n //we must change it to use the interest rate array and populate the array accordingly\r\n aFundItem.isUseInterestRate = false;\r\n for (let i = 1; i <= intRateStartYear - 1; i++) {\r\n aFundItem.fundRateData.rateArray[i] = aFundItem.interestRate;\r\n }\r\n for (let i = intRateStartYear; i < aFundItem.fundRateData.rateArray.length; i++) {\r\n aFundItem.fundRateData.rateArray[i] = aFundItem.interestRate + intRateAdjustAmount;\r\n }\r\n } else {\r\n for (let i = intRateStartYear; i < aFundItem.fundRateData.rateArray.length; i++) {\r\n aFundItem.fundRateData.rateArray[i] =\r\n aFundItem.fundRateData.rateArray[i] + intRateAdjustAmount;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function ResetFundInterestRateFlag(fundType, calcPolicy) {\r\n //This function resets aFundItem.fundRateData.isReadRate to true so that the InitializeCalculation will\r\n //reset the rates by reading them again\r\n for (let aFundItem of calcPolicy.coverages[0].funds) {\r\n if (aFundItem.fundType === fundType) {\r\n aFundItem.fundRateData.isReadRate = true;\r\n }\r\n }\r\n}\r\n\r\nexport function AdjustDividendMultiplier(policy, dividendAlternateScalePercent) {\r\n let aBaseCoverage = policy.coverages[0];\r\n aBaseCoverage.dividendMultiplier = dividendAlternateScalePercent;\r\n let aPUACoverage = getCoverageItemByType(policy.coverages, CoverageTypes.PUA);\r\n if (aPUACoverage) {\r\n aPUACoverage.dividendMultiplier = dividendAlternateScalePercent;\r\n }\r\n}\r\nexport function TruncateRPUs(insuranceData, inforcePolicy, columnPrefix) {\r\n //show the RPU death benefit according to issue age, as follows:\r\n //Issue age < 65, start with the 20th policy anniversary\r\n //Between 66 and 75 inclusive start at anniversary following 85th birthday\r\n //Over age 75, start with the 10th policy anniversary\r\n //ALSO it turns out that the RPU rate at age 100 is wrong so we have to adjust the age 100 RPU value\r\n\r\n let colRPU = GetColumnNumber(columnPrefix & 'RPU', insuranceData.columnItems);\r\n let colAge = GetColumnNumber(columnPrefix & 'Age', insuranceData.columnItems);\r\n let colTotalDeathBenefitBaseBOY = GetColumnNumber(\r\n columnPrefix & 'TotalDeathBenefitBaseBOY',\r\n insuranceData.columnItems\r\n );\r\n\r\n let endAge = 0;\r\n\r\n if (colRPU !== 0 && colAge !== 0) {\r\n let issueAge = inforcePolicy.baseCoverage.insured.issueAge;\r\n if (issueAge < 65) {\r\n endAge = issueAge + 20;\r\n } else {\r\n if (issueAge > 75) {\r\n endAge = issueAge + 20;\r\n } //between 65 and 75, inclusive\r\n else endAge = 86;\r\n }\r\n }\r\n\r\n for (let i = 1; i <= insuranceData.tblDataArray_Main.length; i++) {\r\n if (insuranceData.tblDataArray_Main[i][colAge] < endAge) {\r\n insuranceData.tblDataArray_Main[i][colRPU] = 0;\r\n } else {\r\n if (insuranceData.tblDataArray_Main[i][colAge] === 100) {\r\n insuranceData.tblDataArray_Main[i][colRPU] =\r\n insuranceData.tblDataArray_Main[i][colTotalDeathBenefitBaseBOY];\r\n }\r\n }\r\n }\r\n}\r\nexport function SetFundAverageInterestRate(policy) {\r\n let averageRate = calculateAverageInterestRate(policy);\r\n\r\n if (policy.baseCoverage.funds.length === 2) {\r\n //do nothing\r\n return '';\r\n }\r\n\r\n for (let aFundItem of policy.coverages[0].funds) {\r\n if (!aFundItem.isExternalFund) {\r\n aFundItem.fundRateData.isReadRate = false;\r\n for (let i = 1; i === aFundItem.fundRateData.rateArray.length; i++) {\r\n aFundItem.fundRateData.rateArray[i] = averageRate;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function ReSetFundAverageInterestRate(policy) {\r\n if (policy.baseCoverage.funds.length === 2) {\r\n //do nothing\r\n return '';\r\n }\r\n\r\n for (let aFundItem of policy.coverages[0].funds) {\r\n if (!aFundItem.isExternalFund) {\r\n aFundItem.isReadRate = true;\r\n }\r\n }\r\n}\r\n\r\nfunction calculateAverageInterestRate(policy) {\r\n let averageRate = 0;\r\n let fundName = '';\r\n console.log('inside calculateAverageInterestRate policy = ', policy);\r\n\r\n for (let aFundItem of policy.coverages[0].funds) {\r\n if (!aFundItem.isExternalFund) {\r\n fundName = 'InterestRate_' + aFundItem.fundID;\r\n globalVariables[fundName] = aFundItem.fundRateData.rateArray[1];\r\n averageRate =\r\n averageRate +\r\n (aFundItem.chargeAllocation.allocationPercent.toFixed(3) / 100) *\r\n aFundItem.fundRateData.rateArray[1];\r\n }\r\n }\r\n averageRate = averageRate.toFixed(5);\r\n globalVariables.AverageInterestRate = averageRate;\r\n console.log('inside calculateAverageInterestRate global variables = ', globalVariables);\r\n return averageRate;\r\n}\r\n//Core - calculation object\r\nexport function ModalFactor(premiumMode) {\r\n return 12 / premiumMode;\r\n}\r\n\r\n//Core - util\r\nfunction Min(a, b) {\r\n if (a < b) {\r\n return a;\r\n } else {\r\n return b;\r\n }\r\n}\r\n\r\n//Core - Calculation Object\r\n//ToDo: this is duplicate from illustration.js. This should be in a core module.\r\nexport function GetColumnNumber(columnName, columnItems) {\r\n for (let columnItem of columnItems) {\r\n if (columnItem.name.toUpperCase() === columnName.toUpperCase()) {\r\n return columnItem.columnNumber;\r\n }\r\n }\r\n return 0;\r\n}\r\n\r\nexport function GetInitialColumn(columnName, columnItems, dblTableMain) {\r\n let columnNumber = GetColumnNumber(columnName, columnItems);\r\n // console.log(columnNumber)\r\n return dblTableMain[1][columnNumber];\r\n}\r\n\r\nexport function GetInitialPremiumBase(coverageID, columnItems, dblTableMain) {\r\n let BasePremium = GetInitialColumn('AnnualPremium_' + coverageID, columnItems, dblTableMain);\r\n let FlatExtraPremium = GetInitialColumn(\r\n 'AnnualFEPremium_' + coverageID,\r\n columnItems,\r\n dblTableMain\r\n );\r\n let MultipleExtraPremium = GetInitialColumn(\r\n 'AnnualMEPremium_' + coverageID,\r\n columnItems,\r\n dblTableMain\r\n );\r\n console.log(\r\n `BasePremium: ${BasePremium}, FlatExtraPremium: ${FlatExtraPremium}, MultiExtraPremium: ${MultipleExtraPremium}`\r\n );\r\n\r\n return BasePremium - FlatExtraPremium - MultipleExtraPremium;\r\n}\r\n\r\nexport function GetInitialPremiumBaseFE(coverageID, columnItems, dblTableMain) {\r\n return GetInitialColumn('AnnualFEPremium_' + coverageID, columnItems, dblTableMain);\r\n}\r\n\r\nexport function GetInitialPremiumBaseME(coverageID, columnItems, dblTableMain) {\r\n return GetInitialColumn('AnnualMEPremium_' + coverageID, columnItems, dblTableMain);\r\n}\r\n\r\nexport function GetInitialPremium(coverageID, columnItems, dblTableMain) {\r\n //Flip-Flopping between showing Annual and Modal for the riders/beneftis\r\n return GetInitialColumn('AnnualPremium_' + coverageID, columnItems, dblTableMain);\r\n //return GetInitialColumn('ModalPremium_' + coverageID, columnItems, dblTableMain);\r\n}\r\n\r\nexport function GetCoverageID(coverageName, coverageListItems) {\r\n if (coverageListItems[coverageName]) return coverageListItems[coverageName].coverageID;\r\n else return '000';\r\n coverageListItems.forEach((coverageListItem) => {\r\n if (coverageListItem.name.toUpperCase() === coverageName.toUpperCase()) {\r\n return coverageListItem.coverageID;\r\n }\r\n });\r\n return '000';\r\n}\r\n\r\n//ToDo This needs to be moved to a core utils module\r\nexport function FindFund(coverages, fundType) {\r\n for (let coverageItem of coverages) {\r\n let aFundItem = FindFundInCoverage(coverageItem, fundType);\r\n if (aFundItem) {\r\n return aFundItem;\r\n }\r\n if (coverageItem.coverages.length > 0) {\r\n let aFundItem = FindFund(coverageItem.coverages, fundType);\r\n if (aFundItem) {\r\n return aFundItem;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function FindFundInCoverage(coverageItem, fundType) {\r\n for (let fundItem of coverageItem.funds) {\r\n if (fundItem.isActive) {\r\n if (fundItem.fundType === fundType) {\r\n return fundItem;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction FindFundbyID(coverageItem, fundID) {\r\n for (let fundItem of coverageItem.funds) {\r\n if (fundItem.isActive) {\r\n if (fundItem.fundID === fundID) {\r\n return fundItem;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function PCRound(n, digits) {\r\n var negative = false;\r\n if (digits === undefined) {\r\n digits = 0;\r\n }\r\n if (n < 0) {\r\n negative = true;\r\n n = n * -1;\r\n }\r\n var multiplicator = Math.pow(10, digits);\r\n n = parseFloat((n * multiplicator).toFixed(11));\r\n n = (Math.round(n) / multiplicator).toFixed(2);\r\n if (negative) {\r\n n = (n * -1).toFixed(2);\r\n }\r\n return n;\r\n}\r\n","export const NEW_BUSINESS = 'illustration';\r\nexport const INFORCE = 'inforce';\r\nexport const SHARED_OWNERSHIP = 'sharedOwnership';\r\nexport const EAPPLICATION = 'eapplication';\r\nexport const EAPP_SETTINGS = 'eapp-settings';\r\nexport const SWITCH_PRODUCTS = 'switchProducts';\r\nexport const PROFILE = 'profile';\r\nexport const ABOUT = 'about';\r\nexport const ADMIN = 'admin';\r\nexport const BI = 'bi';\r\nexport const NONE = '';\r\n\r\nexport const routes = {\r\n admin: [\r\n {\r\n routeId: 'admin01',\r\n appName: 'Admin',\r\n subModule: 'dashboard',\r\n path: '/admin/dashboard',\r\n displayName: 'titleAdmin',\r\n button: 'btnDashboard',\r\n isActive: false,\r\n },\r\n {\r\n routeId: 'admin02',\r\n appName: 'Admin',\r\n subModule: 'users',\r\n path: '/admin/users',\r\n displayName: 'titleAdmin',\r\n button: 'btnUsers',\r\n isActive: false,\r\n },\r\n {\r\n routeId: 'admin03',\r\n appName: 'Admin',\r\n subModule: 'bi',\r\n path: '/admin/bi',\r\n displayName: 'titleAdmin',\r\n button: 'btnTracking',\r\n isActive: false,\r\n },\r\n ],\r\n illustration: [\r\n {\r\n routeId: 'illus01',\r\n appName: 'NewBusiness',\r\n subModule: 'illustration',\r\n path: '/illustration',\r\n button: 'btnCreateIllustration',\r\n displayName: 'titleNewBusiness',\r\n isActive: true,\r\n },\r\n {\r\n routeId: 'illus02',\r\n appName: 'NewBusiness',\r\n subModule: 'savedIllustration',\r\n path: '/illustration/savedIllustration',\r\n button: 'btnSavedIllustration',\r\n displayName: 'titleNewBusiness',\r\n isActive: false,\r\n },\r\n ],\r\n inforce: [\r\n {\r\n routeId: 'inforce01',\r\n appName: 'Inforce',\r\n subModule: 'policyLookup',\r\n path: '/inforce/policyLookup',\r\n button: 'btnPolicyLookup',\r\n displayName: 'titleInforce',\r\n isActive: true,\r\n },\r\n {\r\n routeId: 'inforce02',\r\n appName: 'Inforce',\r\n subModule: 'alphalookup',\r\n path: '/inforce/alphalookup',\r\n button: 'btnAlphaLookup',\r\n displayName: 'titleInforce',\r\n isActive: false,\r\n },\r\n {\r\n routeId: 'inforce03',\r\n appName: 'Inforce',\r\n subModule: 'dataReports',\r\n path: '/inforce/dataReports',\r\n displayName: 'titleInforce',\r\n button: 'btnDataReports',\r\n isActive: false,\r\n },\r\n ],\r\n eapplication: [\r\n {\r\n routeId: 'eapp01',\r\n appName: 'EApplication',\r\n subModule: 'eApplication',\r\n path: '/eapplication',\r\n displayName: 'titleEApplication',\r\n button: 'btnEApplication',\r\n isActive: false,\r\n },\r\n ],\r\n proneeds: [\r\n {\r\n routeId: 'proneeds01',\r\n appName: 'ProNeeds',\r\n subModule: 'proneeds',\r\n path: '/proneeds',\r\n displayName: 'titleProNeeds',\r\n button: 'btnProneeds',\r\n isActive: false,\r\n },\r\n ],\r\n};\r\n","export const INPUTTYPES = {\r\n INPUT_TEXT: 'input_Text',\r\n INPUT_UPPER: 'input_Upper',\r\n INPUT_NAME: 'input_Name',\r\n INPUT_DOLLAR: 'input_Dollar', //Includes floating point dollar\r\n INPUT_NUMBER: 'input_Number', // Inclues floating point numers\r\n INPUT_DOLLAR_INTEGER: 'input_Dollar_Integer', // Only integer dollar\r\n INPUT_INTEGER: 'input_Integer', //Only integers\r\n INPUT_BUTTON: 'input_Button',\r\n INPUT_COMBO: 'input_Combo',\r\n INPUT_CHECK: 'input_Check',\r\n INPUT_RADIO: 'input_Radio',\r\n INPUT_REAL: 'input_Real',\r\n INPUT_DATE: 'input_Date',\r\n INPUT_MULTICHECK: 'input_MultiCheck',\r\n INPUT_MULTISELECT: 'input_MultiSelect',\r\n INPUT_PERCENT: 'input_Percent',\r\n INPUT_PHONE: 'input_Phone',\r\n INPUT_LABEL: 'input_Label',\r\n INPUT_TAB: 'input_Tab',\r\n INPUT_PAGE: 'input_Page',\r\n INPUT_EMAIL: 'input_Email',\r\n INPUT_POSTALCODE: 'input_PostalCode',\r\n INPUT_ZIPCODE: 'input_ZipCode',\r\n INPUT_SIN: 'input_SIN',\r\n INPUT_SSN: 'input_SSN',\r\n INPUT_CREDITCARD: 'input_CreditCard',\r\n INPUT_LONGINT: 'input_LongInt',\r\n INPUT_OPTION: 'input_Option',\r\n INPUT_DEV: 'input_Dev',\r\n INPUT_ARRAY: 'input_Array',\r\n};\r\n\r\nexport const ICONS = {\r\n BUBBLE:\r\n 'M512 64c282.77 0 512 186.25 512 416 0 229.752-229.23 416-512 416-27.156 0-53.81-1.734-79.824-5.044-109.978 109.978-241.25 129.7-368.176 132.596v-26.916c68.536-33.578 128-94.74 128-164.636 0-9.754-0.758-19.33-2.164-28.696-115.796-76.264-189.836-192.754-189.836-323.304 0-229.75 229.23-416 512-416z',\r\n ENLARGE2:\r\n 'M1024 0v416l-160-160-192 192-96-96 192-192-160-160zM448 672l-192 192 160 160h-416v-416l160 160 192-192z',\r\n SHRINK2:\r\n 'M448 576v416l-160-160-192 192-96-96 192-192-160-160zM1024 96l-192 192 160 160h-416v-416l160 160 192-192z',\r\n BIN2:\r\n 'M192 1024h640l64-704h-768zM640 128v-128h-256v128h-320v192l64-64h768l64 64v-192h-320zM576 128h-128v-64h128v64z',\r\n CLOUD_CHECK:\r\n 'M892.268 514.49c2.442-11.108 3.732-22.646 3.732-34.49 0-88.366-71.634-160-160-160-14.224 0-28.014 1.868-41.134 5.352-24.796-77.352-97.288-133.352-182.866-133.352-87.348 0-161.054 58.336-184.326 138.17-22.742-6.62-46.792-10.17-71.674-10.17-141.384 0-256 114.616-256 256 0 141.382 114.616 256 256 256h608c88.366 0 160-71.632 160-160 0-78.718-56.854-144.16-131.732-157.51zM416 768l-160-160 64-64 96 96 224-224 64 64-288 288z',\r\n BOLD:\r\n 'M707.88 484.652c37.498-44.542 60.12-102.008 60.12-164.652 0-141.16-114.842-256-256-256h-320v896h384c141.158 0 256-114.842 256-256 0-92.956-49.798-174.496-124.12-219.348zM384 192h101.5c55.968 0 101.5 57.42 101.5 128s-45.532 128-101.5 128h-101.5v-256zM543 832h-159v-256h159c58.45 0 106 57.42 106 128s-47.55 128-106 128z',\r\n UNDERLINE:\r\n 'M704 64h128v416c0 159.058-143.268 288-320 288-176.73 0-320-128.942-320-288v-416h128v416c0 40.166 18.238 78.704 51.354 108.506 36.896 33.204 86.846 51.494 140.646 51.494s103.75-18.29 140.646-51.494c33.116-29.802 51.354-68.34 51.354-108.506v-416zM192 832h640v128h-640z',\r\n ITALIC: 'M896 64v64h-128l-320 768h128v64h-448v-64h128l320-768h-128v-64z',\r\n PARAGRAPH_LEFT:\r\n 'M0 64h1024v128h-1024zM0 256h640v128h-640zM0 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z',\r\n PARAGRAPH_CENTER:\r\n 'M0 64h1024v128h-1024zM192 256h640v128h-640zM192 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z',\r\n PARAGRAPH_RIGHT:\r\n 'M0 64h1024v128h-1024zM384 256h640v128h-640zM384 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z',\r\n GOOGLE:\r\n 'M522.2 438.8v175.6h290.4c-11.8 75.4-87.8 220.8-290.4 220.8-174.8 0-317.4-144.8-317.4-323.2s142.6-323.2 317.4-323.2c99.4 0 166 42.4 204 79l139-133.8c-89.2-83.6-204.8-134-343-134-283 0-512 229-512 512s229 512 512 512c295.4 0 491.6-207.8 491.6-500.2 0-33.6-3.6-59.2-8-84.8l-483.6-0.2z',\r\n FACEBOOK:\r\n 'M608 192h160v-192h-160c-123.514 0-224 100.486-224 224v96h-128v192h128v512h192v-512h160l32-192h-192v-96c0-17.346 14.654-32 32-32z',\r\n TWITTER:\r\n 'M1024 226.4c-37.6 16.8-78.2 28-120.6 33 43.4-26 76.6-67.2 92.4-116.2-40.6 24-85.6 41.6-133.4 51-38.4-40.8-93-66.2-153.4-66.2-116 0-210 94-210 210 0 16.4 1.8 32.4 5.4 47.8-174.6-8.8-329.4-92.4-433-219.6-18 31-28.4 67.2-28.4 105.6 0 72.8 37 137.2 93.4 174.8-34.4-1-66.8-10.6-95.2-26.2 0 0.8 0 1.8 0 2.6 0 101.8 72.4 186.8 168.6 206-17.6 4.8-36.2 7.4-55.4 7.4-13.6 0-26.6-1.4-39.6-3.8 26.8 83.4 104.4 144.2 196.2 146-72 56.4-162.4 90-261 90-17 0-33.6-1-50.2-3 93.2 59.8 203.6 94.4 322.2 94.4 386.4 0 597.8-320.2 597.8-597.8 0-9.2-0.2-18.2-0.6-27.2 41-29.4 76.6-66.4 104.8-108.6z',\r\n LINKEDIN2:\r\n 'M384 384h177.106v90.782h2.532c24.64-44.194 84.958-90.782 174.842-90.782 186.946 0 221.52 116.376 221.52 267.734v308.266h-184.61v-273.278c0-65.184-1.334-149.026-96.028-149.026-96.148 0-110.82 70.986-110.82 144.292v278.012h-184.542v-576z M64 384h192v576h-192v-576z M256 224c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z',\r\n ERROR:\r\n 'M512 92.774l429.102 855.226h-858.206l429.104-855.226zM512 0c-22.070 0-44.14 14.882-60.884 44.648l-437.074 871.112c-33.486 59.532-5 108.24 63.304 108.24h869.308c68.3 0 96.792-48.708 63.3-108.24h0.002l-437.074-871.112c-16.742-29.766-38.812-44.648-60.882-44.648v0z M576 832c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64z M512 704c-35.346 0-64-28.654-64-64v-192c0-35.346 28.654-64 64-64s64 28.654 64 64v192c0 35.346-28.654 64-64 64z',\r\n DASH:\r\n 'M0 416v192c0 17.672 14.328 32 32 32h960c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32h-960c-17.672 0-32 14.328-32 32z',\r\n BULLET:\r\n 'M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 640c-70.692 0-128-57.306-128-128 0-70.692 57.308-128 128-128 70.694 0 128 57.308 128 128 0 70.694-57.306 128-128 128z',\r\n};\r\nexport const STYLES = {\r\n BASIC: '',\r\n LOGO: 'LOGO flexContainer alignCenter bgPrimaryShade',\r\n SELECT: 'SELECT borderThin borderNeutral borderRadiusAll',\r\n TEXT: 'TEXT borderThin borderNeutral borderRadiusAll marginMed',\r\n CHECK: 'CHECK opacityNone',\r\n DATE: 'DATE',\r\n TOOLTIP: 'tooltip',\r\n TOOLTIPTEXT: 'tooltiptext bgDark fontSm borderRadiusAll paddingMed opacityNone',\r\n TOOLTIPICON: 'tooltip-icon',\r\n BUTTON: 'BUTTON paddingMed marginSm borderNone',\r\n MULTISELECT: 'MULTISELECT',\r\n MULTICHECK: 'MULTICHECK opacityNone',\r\n RADIO: 'RADIO opacityNone',\r\n PILL: 'PILL opacityNone',\r\n LABEL: 'LABEL',\r\n CHILD: 'CHILD',\r\n LABELCOMPONENT: 'LABELCOMPONENT',\r\n INPUTBOX: 'INPUTBOX',\r\n INPUT: 'INPUT TEXT borderThin borderNeutral borderRadiusAll',\r\n INPUTSUBMIT: 'INPUTSUBMIT flexContainer',\r\n PRODUCT: 'PRODUCT',\r\n INFORCEPRODUCT: 'INFORCEPRODUCT',\r\n INFORCEPOLICYHEADER: 'INFORCEPOLICYHEADER alignStretch',\r\n ALPHALOOKUPHEADER: 'ALPHALOOKUPHEADER alignCenter',\r\n BUTTONS: 'BUTTONS',\r\n TABS: 'TABS',\r\n TABLIST: 'TABLIST flexContainer paddingNone noCols',\r\n TABLISTITEM: 'TABLISTITEM fontPrimaryColor paddingMedWide borderRadiusTop cursorPointer',\r\n TABLISTACTIVE: 'TABLISTACTIVE bgPrimaryColor',\r\n TABCONTENTACTIVE: 'TABCONTENTACTIVE',\r\n TABCONTENT: 'TABCONTENT',\r\n CARD: 'CARD',\r\n GROUP: 'GROUP',\r\n TABLE: 'TABLE',\r\n THEAD: 'THEAD',\r\n TROW: 'TROW',\r\n TDATA: 'TDATA',\r\n TBODY: 'TBODY',\r\n SUMMARYFIELDSET: 'SUMMARYFIELDSET',\r\n SUMMARY: 'SUMMARY borderThin borderNeutral borderBottom flexContainer justifyBetween',\r\n SUMMARYCONTAINER: 'SUMMARYCONTAINER',\r\n HEADER: 'HEADER fontSubHeader fontHdr3',\r\n PAGEHEADER: 'PAGEHEADER bgPrimaryShade justifyBetween flexContainer alignStretch',\r\n PAGEHEADERM: 'PAGEHEADERM bgPrimaryShade justifyBetween flexContainer alignStretch',\r\n BUTTONBAR: 'BUTTONBAR',\r\n POLICYHEADER: 'POLICYHEADER bgWhite',\r\n PREMIUMDISPLAY: 'PREMIUMDISPLAY',\r\n PROFILEBUTTONS: 'PROFILEBUTTONS',\r\n PAGEFOOTER: 'PAGEFOOTER',\r\n VALIDATION: 'VALIDATION',\r\n ERRORICON: 'ERRORICON errorIcon',\r\n INPUTCONTAINER: 'INPUTCONTAINER marginSm',\r\n RADIOCONTAINER: 'RADIOCONTAINER',\r\n PILLCONTAINER: 'PILLCONTAINER',\r\n TABLAYOUT: 'TABLAYOUT paddingLg borderThin borderColor',\r\n TABCONTAINER: 'TABCONTAINER',\r\n LAYOUT: 'LAYOUT flexContainer',\r\n SIDEBARCONTAINER: 'SIDEBARCONTAINER bgNeutral',\r\n FIELDCONTAINER: 'FIELDCONTAINER borderThin borderNeutral borderBottom',\r\n FIELDCONTAINERHEADER: 'FIELDCONTAINERHEADER fontHdr2 flexContainer alignCenter marginNone',\r\n FIELDCONTENT: 'FIELDCONTENT toggleableField',\r\n SUBFIELDSET: 'SUBFIELDSET sub-fieldset fullWidth flexContainer',\r\n STATUSDISPLAY: 'STATUSDISPLAY',\r\n COVERAGETYPE: 'COVERAGETYPE',\r\n COVERAGEVALUE: 'COVERAGEVALUE',\r\n\r\n INFORCEPOLICYSUMMARY: 'INFORCEPOLICYSUMMARY',\r\n PANELITEMGROUP: 'PANELITEMGROUP paddingLgWide',\r\n};\r\n","import React from \"react\";\r\n\r\nconst StatusContext = React.createContext({\r\n getStatusForField: field => []\r\n});\r\n\r\nexport default StatusContext;\r\n","import React, {Component} from 'react';\r\nimport StatusContext from './StatusContext';\r\nimport {withPCTranslation} from 'core/hocs';\r\nimport {formatDisplay} from 'core/utils/inputTypeUtils';\r\n\r\nclass FormStatus extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n status: {},\r\n dirty: {},\r\n formSubmitted: true,\r\n getStatusForField: this.getStatusForField,\r\n };\r\n }\r\n\r\n //This runs when FormValidator is instantiated and rendered\r\n static getDerivedStateFromProps(props, state) {\r\n state.status = {};\r\n\r\n //This condition prevents unusual crash occurs due to session timeout. Example: \"Cannot read property 'inputLanguage' of null\"\r\n if (!props.user) {\r\n return state;\r\n }\r\n if (props.data && props.data['CurrentField'] === '') {\r\n //do nothing\r\n } else {\r\n if (!(props.controlItems === undefined)) {\r\n let rulesData = props.controlItems[props.data['CurrentField']];\r\n if (!(rulesData === undefined)) {\r\n //In case rulesData has not loaded yet\r\n state.status['current'] = props.t(`${props.data['CurrentField']}-status`);\r\n //state.status['current'] = rulesData.statusText;\r\n // if (rulesData.useLimits) {\r\n // state.status['current'] = `${state.status['current']} - Limits: ${\r\n // rulesData.min\r\n // } - ${rulesData.max} `;\r\n // }\r\n\r\n if (rulesData.useLimits) {\r\n //props.user need to be checked for case when session logs out.\r\n const status = props.t(`${props.data['CurrentField']}-status`);\r\n const limits = props.t('msg-Limits');\r\n const field = `${props.data['CurrentField']}`;\r\n let minLimit = formatDisplay(\r\n props.user.inputLanguage,\r\n props.controlItems[field].min,\r\n props.controlItems[field].fieldType,\r\n props.controlItems[field].decimalPlaces\r\n );\r\n let maxLimit = formatDisplay(\r\n props.user.inputLanguage,\r\n props.controlItems[field].max,\r\n props.controlItems[field].fieldType,\r\n props.controlItems[field].decimalPlaces\r\n );\r\n\r\n state.status['current'] = `${status} - ${limits}: ${minLimit} - ${maxLimit} `;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return state;\r\n }\r\n\r\n get formValid() {\r\n return Object.keys(this.state.errors).length === 0;\r\n }\r\n\r\n handleGetFocus = (ev) => {\r\n ev.persist();\r\n let name = ev.target.name;\r\n this.setState((state) => (state.dirty[name] = true));\r\n //this.setState(state => state.status = {});\r\n };\r\n\r\n handleLostFocus = (ev) => {\r\n ev.persist();\r\n let name = ev.target.name;\r\n this.setState((state) => (state.status[name] = ''));\r\n };\r\n\r\n getStatusForField = (field) => {\r\n if (field === '') {\r\n return this.state.status;\r\n } else {\r\n return this.state.formSubmitted || this.state.dirty[field] || true ? this.state.status[field] || [] : [];\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n
    \r\n {this.props.children}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withPCTranslation(FormStatus);\r\n","import React, {createContext} from \"react\";\r\n\r\ninterface ContextProps {\r\n errors: {\r\n [field: string]: string[]\r\n };\r\n formErrors: {\r\n [field: string]: string\r\n };\r\n dirty: {\r\n [field: string]: boolean\r\n };\r\n formSubmitted: boolean;\r\n getMessagesForField(field: string): string[];\r\n}\r\n\r\nconst initialContextValue = {\r\n formSubmitted: false,\r\n errors: {},\r\n formErrors: {},\r\n dirty: {},\r\n getMessagesForField: (field: string) => [],\r\n}\r\n\r\nexport default createContext(initialContextValue);\r\n","import React, {Component} from 'react';\r\nimport {ValidateData} from './coreValidation';\r\nimport ValidationContext from './ValidationContext';\r\nimport {withPCTranslation} from 'core/hocs';\r\n\r\nclass FormValidator extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n errors: {},\r\n formErrors: {},\r\n dirty: {},\r\n formSubmitted: false,\r\n getMessagesForField: this.getMessagesForField,\r\n };\r\n }\r\n\r\n //This runs when FormValidator is instantiated and rendered\r\n static getDerivedStateFromProps(props, state) {\r\n /* temporary for testing\r\n Object.keys(props.data).map(i => console.log(`props.data - ${i} = ${props.data[i]}`));\r\n Object.keys(props.rules).map(i => {\r\n console.log(`props.rules - ${i} = ${props.rules[i]}`)\r\n Object.keys(props.rules[i]).map(j => console.log(`props.rules[i][j] - ${j} = ${props.rules[i][j]}`));\r\n }\r\n );\r\n */\r\n\r\n //pass in a blank object if props.rules is undefined\r\n //state.errors = ValidateData(props.data, props.rules || {}, props.t, props.updateStoreFormData);\r\n state.errors = ValidateData(props.data, props.controlItems || {}, props.t, props.user || {});\r\n //Temporary logging function to log all errors\r\n // Object.keys(state.errors).map((i) => console.log(`log error ${i} = ${state.errors[i]}`));\r\n\r\n //console.log(state.errors.form)\r\n // if (state.formSubmitted && Object.keys(state.errors).length === 0) {\r\n // let formErrors = props.validateForm(props.data, props.controlItems);\r\n // console.log(formErrors);\r\n // if (Object.keys(formErrors).length > 0) {\r\n // state.formErrors = formErrors;\r\n // }\r\n // state.formSubmitted = false;\r\n // }\r\n return state;\r\n }\r\n\r\n clearFormErrors = (field = '') => {\r\n if (this.state.formSubmitted === true) {\r\n if (field === '') {\r\n this.setState({formSubmitted: false, formErrors: {}});\r\n } else if (this.state.formErrors[field]) {\r\n let formErrors = {...this.state.formErrors};\r\n delete formErrors[field];\r\n this.setState({formErrors});\r\n }\r\n }\r\n };\r\n\r\n handleChange = (event) => {\r\n event.persist();\r\n let name = event.target.name;\r\n this.setState((state) => (state.dirty[name] = true));\r\n this.clearFormErrors(name);\r\n };\r\n formValid = () => {\r\n return Object.keys(this.state.formErrors).length === 0;\r\n };\r\n fieldsValid = () => {\r\n return Object.keys(this.state.errors).length === 0;\r\n };\r\n handleClick = (event) => {\r\n //event should be persisted so that event.target does not loose its value after async operation\r\n event.persist();\r\n this.clearFormErrors(event.target.name);\r\n if (\r\n event.target &&\r\n event.target.name &&\r\n this.props.submitField &&\r\n this.props.submitField.includes(event.target.name)\r\n ) {\r\n this.clearFormErrors();\r\n let formErrors = this.props.validateForm(this.props.data, this.props.controlItems);\r\n this.setState({formSubmitted: true, dirty: {}, formErrors}, () => {\r\n if (Object.keys(this.state.errors).length > 0) {\r\n Object.keys(this.state.errors).forEach(\r\n (field) => (this.props.controlItems[field].isDirty = true)\r\n );\r\n }\r\n Object.keys(formErrors).forEach((field) => (this.props.controlItems[field].isDirty = true));\r\n if (this.formValid() && this.fieldsValid()) {\r\n this.props.submit(event, event.target.name, event.target.value);\r\n } else {\r\n this.props.error(formErrors, event, event.target.name, event.target.value);\r\n }\r\n });\r\n }\r\n };\r\n\r\n getButtonClasses() {\r\n return this.state.formSubmitted && !this.formValid ? 'btn-danger' : 'btn-primary';\r\n }\r\n\r\n getMessagesForField = (field) => {\r\n if (field === '') {\r\n return this.state.errors;\r\n } else if (field === 'form') {\r\n return this.state.formErrors;\r\n // return this.state.formSubmitted || this.state.dirty[field] || true ? this.state.formErrors || [] : [];\r\n } else {\r\n return this.state.formSubmitted || this.state.dirty[field] || true\r\n ? this.state.errors[field] || []\r\n : [];\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n/**\r\n * withPCTranslation: provides translation and controlItems\r\n */\r\nexport default withPCTranslation(FormValidator);\r\n","import validator from 'validator';\r\nimport {formatDisplay} from '../utils/inputTypeUtils';\r\n\r\n//The 'rules' fields will match the ControlItem fields:\r\n//FieldType, UseLimits, Min, Max, Disabled, ShowStatus, LoadText, ShowToolTip, IsError, UseChoiceItems, UseRecallItems, UseOptionItems, UseLinkItems\r\n//ChoiceItems, ToolTipItems, RecallItems, OptionItems, LinkItems, AllowZero, SkipBusinessRules, IncludeInReporting, DecimalPlaces\r\n//---- Extra fields added for React: true, required\r\n//let temp = 0;\r\nexport function ValidateData(data, rules, t, user /*, updateData*/) {\r\n let errors = {};\r\n if (!user) {\r\n return errors;\r\n }\r\n let errorCount = 0;\r\n let msg_range = t('msg-Range');\r\n let msg_textLength = t('msg-TextLength');\r\n let msg_checked = t('msg-checked');\r\n let msg_required = t('msg-required');\r\n\r\n let msg_min = t('msg-min');\r\n let msg_max = t('msg-max');\r\n let msg_option = t('msg-Option');\r\n let msg_validEmail = t('msg-ValidEmail');\r\n let msg_validPhone = t('msg-ValidPhone');\r\n //return errors;\r\n Object.keys(data).forEach((field) => {\r\n //console.log(`validate field = ${field}`);\r\n //console.log(`inside custom validation`);\r\n if (rules.hasOwnProperty(field)) {\r\n let fielderrors = [];\r\n //console.log(data);\r\n let val = data[field];\r\n\r\n //To avoid running runRecalls in case of error for a field\r\n rules[field].isError = false;\r\n // if(field==='txtTermRiderAge'){\r\n // console.log(temp++)\r\n // }\r\n //Checkboxes cause things to blow up so we ignore them if not required\r\n if (\r\n // (rules[field].fieldType === \"input_Check\" ||\r\n // rules[field].fieldType === \"input_MultiCheck\" ||\r\n // rules[field].fieldType === \"input_List\" ||\r\n // rules[field].fieldType === \"input_Radio\" ||\r\n // rules[field].fieldType === \"input_Group\" ||\r\n // rules[field].fieldType === \"input_Date\" ||\r\n // rules[field].fieldType === \"input_Label\" ||\r\n // rules[field].fieldType === \"input_Combo\" ||\r\n // rules[field].fieldType === \"input_Text\" ||\r\n // rules[field].fieldType === \"input_Number\" ||\r\n // rules[field].fieldType === \"input_Email\" ||\r\n // rules[field].fieldType === \"input_Phone\" ||\r\n // rules[field].fieldType === \"input_Name\") &&\r\n // !rules[field].required ||\r\n rules[field].disabled ||\r\n rules[field].displayHidden ||\r\n rules[field].fieldType === 'input_Date' ||\r\n rules[field].fieldType === 'input_Files' ||\r\n rules[field].fieldType === 'input_List' ||\r\n rules[field].fieldType === 'input_Button'\r\n ) {\r\n //do nothing\r\n } else {\r\n if (rules[field].fieldType === 'input_Email') {\r\n if (data['CurrentField'] !== field && rules[field].required) {\r\n if (validator.isEmpty(val)) {\r\n fielderrors.push(msg_required);\r\n rules[field].isError = true;\r\n } else if (!validator.isEmail(val)) {\r\n fielderrors.push(msg_validEmail);\r\n rules[field].isError = true;\r\n }\r\n }\r\n } else if (rules[field].fieldType === 'input_Check') {\r\n if (!val && rules[field].required) {\r\n //fielderrors.push(\"Must be checked\");\r\n fielderrors.push(msg_checked);\r\n rules[field].isError = true;\r\n }\r\n } else if (rules[field].fieldType === 'input_Combo') {\r\n if (validator.isEmpty(val) && rules[field].required) {\r\n fielderrors.push(msg_option);\r\n rules[field].isError = true;\r\n }\r\n } else if (rules[field].fieldType === 'input_Radio') {\r\n if (validator.isEmpty(val) && rules[field].required) {\r\n fielderrors.push(msg_option);\r\n rules[field].isError = true;\r\n }\r\n } else if (rules[field].fieldType === 'input_Phone') {\r\n if (data['CurrentField'] !== field) {\r\n if (validator.isEmpty(val) && rules[field].required) {\r\n fielderrors.push(msg_required);\r\n rules[field].isError = true;\r\n } else if (data[field].length !== rules[field].maxLength && data[field].length > 0) {\r\n fielderrors.push(msg_validPhone);\r\n rules[field].isError = true;\r\n }\r\n }\r\n } else {\r\n if (rules[field].required && validator.isEmpty(val)) {\r\n fielderrors.push(msg_required);\r\n rules[field].isError = true;\r\n }\r\n if (!validator.isEmpty(val)) {\r\n if (rules[field].useMinLength) {\r\n if (rules[field].fieldType === 'input_Text') {\r\n if (data[field].length < rules[field].minLength && data['CurrentField'] !== field) {\r\n fielderrors.push(`${msg_textLength}: ${msg_min}: ${rules[field].minLength} ${msg_max}: ${rules[field].maxLength}`);\r\n rules[field].isError = true;\r\n }\r\n }\r\n }\r\n if (rules[field].useLimits) {\r\n let minLimit = formatDisplay(user.inputLanguage, rules[field].min, rules[field].fieldType, rules[field].decimalPlaces);\r\n let maxLimit = formatDisplay(user.inputLanguage, rules[field].max, rules[field].fieldType, rules[field].decimalPlaces);\r\n if (rules[field].fieldType === 'input_Integer' || rules[field].fieldType === 'input_Dollar_Integer' || rules[field].fieldType === 'input_Number') {\r\n if (rules[field].allowZero && parseInt(val) === 0) {\r\n //Do Nothing\r\n } else if (!validator.isInt(val, {min: rules[field].min, max: rules[field].max})) {\r\n fielderrors.push(`${msg_range}: ${msg_min}: ${minLimit} ${msg_max}: ${maxLimit}`);\r\n rules[field].isError = true;\r\n }\r\n } else {\r\n if (rules[field].fieldType === 'input_Real' || rules[field].fieldType === 'input_Dollar' || rules[field].fieldType === 'input_Percent') {\r\n if (rules[field].allowZero && parseFloat(val) === 0) {\r\n //Do Nothing\r\n } else if (!validator.isFloat(val, {min: rules[field].min, max: rules[field].max, decimal_digits: rules[field].decimalPlaces})) {\r\n fielderrors.push(`${msg_range}: ${msg_min}: ${minLimit} ${msg_max}: ${maxLimit}`);\r\n rules[field].isError = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (fielderrors.length > 0) {\r\n errors[field] = fielderrors;\r\n }\r\n }\r\n errorCount = errorCount + fielderrors.length;\r\n }\r\n });\r\n data['numErrors'] = errorCount;\r\n if (errorCount > 0) {\r\n data['lblPremium'] = 'Not Applicable';\r\n }\r\n //errors['numErrors'] = errorCount;\r\n if (sessionStorage.getItem('newBusiness')) {\r\n let cache = JSON.parse(sessionStorage.getItem('newBusiness'));\r\n cache['numErrors'] = errorCount;\r\n sessionStorage.setItem('newBusiness', JSON.stringify(cache));\r\n }\r\n //updateData('numErrors', errorCount, 'newBusiness');\r\n return errors;\r\n}\r\n","import React, {Component} from 'react';\r\nimport StatusContext from './StatusContext';\r\nimport {ICONS, STYLES} from 'core/constants/uiConstants';\r\nimport {Icon} from 'core/uicore';\r\n\r\nclass StatusMessage extends Component {\r\n static contextType = StatusContext;\r\n\r\n render() {\r\n //When the field is blank then we display nothing\r\n if (this.props.field === '') {\r\n let testObject = this.context.getStatusForField('');\r\n\r\n return Object.keys(testObject).map((item) => (\r\n \r\n {this.props.useIcon && }\r\n {testObject[item]}\r\n \r\n ));\r\n }\r\n }\r\n}\r\n\r\n//This is setting the property to true even when it is being passed in?\r\nStatusMessage.defaultProps = {\r\n useIcon: true,\r\n};\r\n\r\nexport default StatusMessage;\r\n","import React, {Component} from 'react';\r\nimport {StatusMessage, StatusContext} from '.';\r\n//import { StatusContext } from \"../formValidation\";\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport {withPCTranslation} from 'core/hocs';\r\n\r\nclass StatusDisplay extends Component {\r\n static contextType = StatusContext;\r\n\r\n formatValue = (data) => (Array.isArray(data) ? data.join(', ') : data.toString());\r\n\r\n render() {\r\n let testObject = this.context.getStatusForField('');\r\n let msg_status = this.props.t('msg-Status');\r\n const {\r\n propStyle: {container, header, summary, message},\r\n } = this.props;\r\n return (\r\n
    \r\n
    {msg_status}
    \r\n {Object.keys(testObject).length === 0 ? (\r\n
    \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withPCTranslation(StatusDisplay);\r\n","import React, {Fragment, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {ICONS, INPUTTYPES, STYLES} from 'core/constants/uiConstants';\r\nimport ValidationContext from './ValidationContext';\r\nimport {Icon} from 'core/uicore';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst ValidationMessage = ({field, useIcon, propStyle: {validationmsg, erroricon}}) => {\r\n const {errors, formErrors} = useContext(ValidationContext);\r\n const {t} = usePCTranslation();\r\n const controlItems = useSelector((state) => state.setupItems.controlItems);\r\n\r\n if (field === '') {\r\n const errorArray = Object.keys(errors).filter((item) => controlItems[item].isDirty === true);\r\n const listEl = (item) => (\r\n
  • \r\n {useIcon && }\r\n {t(`${item}-error`) === '' ? t(`${item}-caption`) : t(`${item}-error`)}\r\n {/* {controlItems[item].fieldType === INPUTTYPES.INPUT_CHECK ? t(`${item}-error`) : t(`${item}-caption`)} */}\r\n
  • \r\n );\r\n\r\n return
      {errorArray.map((item) => listEl(item))}
    ;\r\n } else if (field === 'form') {\r\n return (\r\n \r\n {Object.keys(formErrors).map((error) => (\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n );\r\n } else {\r\n const fieldError = errors[field];\r\n if (fieldError && fieldError.length > 0) {\r\n if (useIcon) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n};\r\nexport default ValidationMessage;\r\n","import React, {Fragment, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {usePCTranslation} from 'core/hooks';\r\nimport ValidationContext from './ValidationContext';\r\nimport {Icon} from 'core/uicore';\r\nimport {ICONS, STYLES} from 'core/constants/uiConstants';\r\nimport ValidationMessage from './ValidationMessage';\r\n\r\nconst ErrorDisplay = ({propStyle: {container, header, summary}, useIcon, icon}) => {\r\n const {errors} = useContext(ValidationContext);\r\n const {t} = usePCTranslation();\r\n const controlItems = useSelector((state) => state.setupItems.controlItems);\r\n let dirtyCount = 0;\r\n\r\n Object.keys(errors).forEach((obj) => {\r\n if (controlItems[obj].isDirty) {\r\n dirtyCount++;\r\n }\r\n });\r\n if (dirtyCount <= 0) {\r\n return ;\r\n }\r\n return (\r\n
    \r\n
    \r\n {' '}\r\n \r\n {dirtyCount} {dirtyCount === 1 ? t('msg-Error') : t('msg-Errors')}\r\n \r\n
    \r\n\r\n
    {dirtyCount === 1 ? t('msg-ErrormessageSingular') : t('msg-ErrormessagePlural')}
    \r\n\r\n {dirtyCount === 0 ? (\r\n
    \r\n
    {t('msg-NoErrors')}
    \r\n
    \r\n ) : (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ErrorDisplay;\r\n","//Found this routine on stack overflow as the fastest way to do this\r\nexport function isEmpty(obj) {\r\n for (var x in obj) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport function formatBytes(a /*Number like 1024 or string like '1024' */, b = 2 /*Decimal Places */) {\r\n if (0 === a) return '0 Bytes';\r\n const c = 0 > b ? 0 : b,\r\n d = Math.floor(Math.log(a) / Math.log(1024));\r\n return parseFloat((a / Math.pow(1024, d)).toFixed(c)) + ' ' + ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'][d];\r\n}\r\nexport function defaultToString(item) {\r\n if (item === null) {\r\n return 'NULL';\r\n } else if (item === undefined) {\r\n return 'UNDEFINED';\r\n } else if (typeof item === 'string' || item instanceof String) {\r\n return item;\r\n }\r\n return item.toString();\r\n}\r\n\r\nexport function toProperCase(str) {\r\n return str.replace(/\\w\\S*/g, function (txt) {\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n}\r\n\r\nexport class ValuePair {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n }\r\n toString() {\r\n return `[#${this.key}: ${this.value}]`;\r\n }\r\n}\r\n\r\nexport let globalVariables = {};\r\n","import React from 'react';\r\nimport {Route, Redirect} from 'react-router-dom';\r\nimport {useSelector} from 'react-redux';\r\nimport {Spinner} from 'core/uicore';\r\nimport {useRouter} from 'core/hooks/useRouter';\r\n\r\nexport const PrivateRoute = ({\r\n isAuthorized,\r\n children,\r\n isAdmin,\r\n isInforce,\r\n isNewBusiness,\r\n ...rest\r\n}) => {\r\n const {isAuthenticated, user, controlItems} = useSelector((state) => ({\r\n isAuthenticated: state.auth.isAuthenticated,\r\n user: state.auth.user,\r\n controlItems: state.setupItems.controlItems,\r\n }));\r\n const {location} = useRouter();\r\n\r\n if (!isAuthenticated) {\r\n return ;\r\n }\r\n if (!controlItems) {\r\n return ;\r\n }\r\n let defaultApp = '/login';\r\n if (isNewBusiness && isNewBusiness() && user?.defaultApplication === 'New Business') {\r\n defaultApp = '/illustration';\r\n } else if (isInforce && isInforce() && user?.defaultApplication === 'Inforce') {\r\n defaultApp = '/inforce';\r\n } else if (isAdmin && isAdmin() && user?.defaultApplication === 'Admin') {\r\n defaultApp = '/admin';\r\n } else if (isNewBusiness && isNewBusiness()) {\r\n defaultApp = '/illustration';\r\n } else if (isInforce && isInforce()) {\r\n defaultApp = '/inforce';\r\n }\r\n return (\r\n \r\n isAuthorized ? children : \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default PrivateRoute;\r\n","import React, {Component} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport {withTranslation} from 'react-i18next';\r\n\r\nexport const withPCTranslation = (WrappedComponent) => {\r\n const mapStateToProps = (state) => ({\r\n user: state.auth.user,\r\n controlItems: state.setupItems.controlItems,\r\n });\r\n return connect(mapStateToProps)(\r\n withTranslation()(\r\n class ContainerComponent extends Component {\r\n state = {\r\n toggle: false,\r\n };\r\n toggleState = () => {\r\n this.setState((prevState) => {\r\n return {toggle: !prevState.toggle};\r\n });\r\n };\r\n\r\n tInput = (key, options) => {\r\n let value;\r\n if (this.props.user && this.props.user['inputLanguage'] === 'French') {\r\n value = this.props.t(`${key}-fr`, options);\r\n if (value === `${key}-fr`) {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n } else {\r\n value = this.props.t(`${key}-en`, options);\r\n if (value === `${key}-en`) {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n }\r\n };\r\n tReport = (key, options) => {\r\n let value;\r\n if (this.props.user && this.props.user['reportLanguage'] === 'French') {\r\n value = this.props.t(`${key}-fr`, options);\r\n if (value === `${key}-fr`) {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n } else {\r\n value = this.props.t(`${key}-en`, options);\r\n if (value === `${key}-en`) {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n }\r\n };\r\n render() {\r\n return ;\r\n }\r\n }\r\n )\r\n );\r\n};\r\n\r\nexport default withPCTranslation;\r\n","\r\nexport const MAX_ARRAY = 120;\r\n\r\nexport const CoverageTypes = {\r\n NONE: 0,\r\n BASE: 1,\r\n RIDER: 2,\r\n BENEFIT: 3,\r\n PUA: 4,\r\n OYT: 5,\r\n ENHANCED: 6\r\n};\r\n\r\nexport const RiderTypes = {\r\n NONE: 0,\r\n ADB: 1,\r\n WAIVER: 2,\r\n AIB: 3,\r\n GPO: 4,\r\n CHILD: 5,\r\n PIB: 6,\r\n TERM: 7,\r\n UL: 8,\r\n OTHER: 9,\r\n DMB: 10\r\n};\r\n\r\nexport const CstatCode = {\r\n DEATH: \"D\",\r\n CALCPREMREFUND: \"1\"\r\n};\r\n\r\nexport const PolicyTypes = {\r\n None: 0,\r\n UL: 1,\r\n WholeLife: 2,\r\n LevelTerm: 3,\r\n TermWithCV: 4,\r\n DecreasingIncreasingTerm: 5,\r\n PaidUpLife: 6,\r\n Endowment: 7,\r\n ImmediateAnnuity: 8,\r\n RRIF: 9,\r\n LIF: 10,\r\n ESA_ISA: 11,\r\n Disability: 12,\r\n SegregatedFund: 13,\r\n SegregatedFundRRIF: 14,\r\n DeferredAnnuity: 15,\r\n Enhanced: 16,\r\n CriticalIllness: 17\r\n};\r\nexport const BillingMethodTypes = {\r\n Mail: 0,\r\n EFT: 1,\r\n BillError: 2\r\n};\r\nexport const DividendPayoutTypes = {\r\n None: 1,\r\n PUA: 2,\r\n DRP: 3,\r\n DOD: 4,\r\n Enhanced: 5,\r\n LRD: 6,\r\n PIC: 7,\r\n OYT: 8\r\n};\r\n\r\nexport const COITypes = {\r\n None: 0,\r\n LevelCurrent: 1,\r\n LevelGuaranteed: 2,\r\n YRT: 3,\r\n Increasing: 4,\r\n YRTToLevel: 5,\r\n IncreasingToLevel: 6\r\n};\r\n\r\nexport const DBOptionTypes = {\r\n None: 0,\r\n Level: 1,\r\n Indexed: 2,\r\n LevelPlusFund: 3\r\n};\r\n\r\nexport const PartyTypes = {\r\n Person: 1,\r\n Company: 2\r\n};\r\nexport const SpouseContributorTypes = {\r\n None: 0,\r\n Spouse: 1\r\n};\r\n\r\nexport const SolveInputType = {\r\n ColumnValue: 1,\r\n GlobalItemValue: 2,\r\n RateArray: 3,\r\n PolicyProperty: 4,\r\n CoverageProperty: 5,\r\n FundProperty: 6,\r\n InsuredProperty: 7\r\n}\r\n\r\nexport const SolveInputDirectionType = {\r\n Increase: 1,\r\n Decrease: 2\r\n}\r\n\r\nexport const SolveGuessMethodType = {\r\n FromInput: 1,\r\n MidPoint: 2,\r\n}\r\n\r\nexport const SolveTargetType = {\r\n CashValue: 1,\r\n ColumnValue: 2,\r\n GlobalItemValue: 3,\r\n}\r\n\r\nexport const SolveTargetTolerance = {\r\n Converge: 1,\r\n FirstCorrectAnswer: 2,\r\n}\r\n\r\nexport const SolveMethodType = {\r\n Secant: 1,\r\n Bisection: 2\r\n}\r\n\r\nexport const DepositTypes = {\r\n FlatAmount: 0,\r\n Array: 1,\r\n Minimum: 2,\r\n LevelMaximum: 3,\r\n YearlyMaximum: 4\r\n}\r\n\r\n\r\n//ToDo: This needs to be moved to a core constant file\r\nexport const FundTypes = {\r\n DIA: 1,\r\n GIA: 2,\r\n DRP: 3,\r\n PRM: 4,\r\n DOD: 5,\r\n SideFund: 6,\r\n Loan: 7,\r\n SegFund: 8\r\n}\r\n\r\nexport const ConstantValues = {\r\n DIVIDEND_ALTERNATESCALE: 75,\r\n ROWHIGHLIGHT_SPACING: 4\r\n};\r\n\r\nexport const BillingTypeCode = {\r\n MAIL: '1',\r\n PREMIUMOFFSET: 'D',\r\n EFT: '4',\r\n APL: '9'\r\n}\r\n\r\nexport const PremiumModeTypes = {\r\n //Months between payments\r\n Annual: 12,\r\n Monthly: 1,\r\n Quarterly: 3,\r\n SemiAnnual: 6\r\n}\r\n\r\nexport const ExemptStatus = {\r\n ExemptWithTesting: 1,\r\n ExemptWithoutTesting: 2,\r\n NonExempt: 3,\r\n Grandfathered: 4,\r\n ExemptWithoutTestingNew: 5,\r\n NonExemptNew: 6\r\n}\r\n\r\nexport const TaxAccrualRule = {\r\n None: 1,\r\n Trienniel: 2,\r\n CalendarYear: 3,\r\n PolicyYear: 4\r\n}\r\n\r\nexport const BILLINGSTATUS_BILLING = 'B';\r\nexport const DIVIDEND_ALTERNATESCALE = 85;\r\nexport const ALTERNATE_COI_INCREASE = 1.25;\r\nexport const CLIENT_INTRATE_MAX_ADDITION = 3;\r\n\r\n\r\nexport const Alternate_IntRate = {\r\n Reduction: 1,\r\n StartYear: 2,\r\n Reduction_UL: 1,\r\n StartYear_UL: 4\r\n}\r\n\r\nexport const PayoutInsuredTypes = {\r\n None: 0,\r\n Annuitant: 1,\r\n Spouse: 2\r\n}\r\n\r\nexport const PayoutTypes = {\r\n None: 0,\r\n Minimum: 1,\r\n Maximum: 2,\r\n FlatAmount: 3\r\n}\r\n\r\nexport const AssigneeTypes = {\r\n None: 0,\r\n Absolute: 1,\r\n Collateral: 2\r\n}\r\n\r\nexport const PolicyLookupResultTypes = {\r\n PolicyFound: 1,\r\n PolicyNotFound: 2,\r\n PolicyNotQuotable: 3,\r\n PolicyPremiumRestrict: 4,\r\n PolicyTerminated: 5,\r\n PolicyPaidUp: 6,\r\n PolicyRejected: 7,\r\n PolicyETI: 8,\r\n PolicyNoFuturePremiums: 9,\r\n PolicyNotLoadable: 10\r\n}\r\n\r\n//The first 5 columns of the calculation engine are hard-coded\r\nexport const ReportColumns = {\r\n Year: 1,\r\n CalendarYear: 2,\r\n Age: 3,\r\n FilterCol: 4,\r\n IsCalc: 5\r\n}\r\n\r\nexport const SOSBA_MONTHS_TO_MATURITY = 6;\r\n\r\n\r\n","import format from 'number-format.js';\r\nimport {INPUTTYPES} from 'core/constants/uiConstants';\r\n\r\nexport const getMaskForInput = (inputType) => {\r\n switch (inputType) {\r\n case INPUTTYPES.INPUT_PHONE:\r\n return ['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\r\n case INPUTTYPES.INPUT_POSTALCODE:\r\n return [/[a-zA-Z]/, /[0-9]/, /[a-zA-Z]/, ' ', /[0-9]/, /[a-zA-Z]/, /[0-9]/];\r\n case INPUTTYPES.INPUT_ZIPCODE:\r\n return [/[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[1-9]/, /[1-9]/, /[1-9]/, /[1-9]/];\r\n case INPUTTYPES.INPUT_CREDITCARD:\r\n return;\r\n case INPUTTYPES.INPUT_SIN:\r\n return [\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ' ',\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ' ',\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n case INPUTTYPES.INPUT_SSN:\r\n return [\r\n /[1-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n '-',\r\n /[0-9]/,\r\n /[0-9]/,\r\n '-',\r\n /[1-9]/,\r\n /[1-9]/,\r\n /[1-9]/,\r\n /[1-9]/,\r\n ];\r\n case INPUTTYPES.INPUT_TEXT:\r\n return false;\r\n default:\r\n return false;\r\n }\r\n};\r\n\r\nexport const decimalToComma = (value) => {\r\n let str = value.split('.').join(',');\r\n // console.log(str);\r\n return str;\r\n};\r\nexport const commaToDecimal = (value) => {\r\n let str = value.split(',').join('.');\r\n console.log(str);\r\n return str;\r\n};\r\nconst emailMask = (email) => {\r\n let maskedEmail = email.replace(/([^@\\.])/g, '*').split('');\r\n let previous = '';\r\n for (let i = 0; i < maskedEmail.length; i++) {\r\n if (i <= 1 || previous === '.' || previous === '@') {\r\n maskedEmail[i] = email[i];\r\n }\r\n previous = email[i];\r\n }\r\n return maskedEmail.join('');\r\n};\r\n\r\nexport const parseInput = (inputLanguage, oldVal, event, controlItem) => {\r\n let regex = /./;\r\n let strVal = event.target.value.slice();\r\n // console.log(event.target.value)\r\n if (event.target.value !== '') {\r\n if (event.target.value.length > controlItem.maxLength) {\r\n strVal = event.target.value.slice(0, controlItem.maxLength);\r\n }\r\n switch (controlItem.fieldType) {\r\n case INPUTTYPES.INPUT_TEXT:\r\n regex = /./;\r\n break;\r\n case INPUTTYPES.INPUT_UPPER:\r\n // regex = /^[A-Z0-9.' ]*$/;\r\n // strVal=strVal.toUpperCase();\r\n break;\r\n case INPUTTYPES.INPUT_EMAIL:\r\n // emailMask(strVal);\r\n // regex = /^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$/;\r\n break;\r\n case INPUTTYPES.INPUT_POSTALCODE:\r\n let reg = '^';\r\n for (let i = 1; i <= strVal.length; i++) {\r\n if (i % 2 === 1) {\r\n reg = reg + '[a-zA-Z]';\r\n } else {\r\n reg = reg + '[0-9]';\r\n }\r\n }\r\n reg += '$';\r\n regex = new RegExp(reg);\r\n strVal = strVal.toUpperCase();\r\n break;\r\n case INPUTTYPES.INPUT_PHONE:\r\n let val = strVal.split('');\r\n let regexPhone = '^';\r\n if (strVal.length === 1 && strVal.split('')[0] !== '(') {\r\n strVal = '(' + strVal;\r\n }\r\n if (strVal.length === 5 && strVal.split('')[4] !== ')') {\r\n strVal = strVal.slice(0, strVal.length - 1) + ')' + strVal.slice(strVal.length - 1);\r\n }\r\n if (strVal.length === 6 && strVal.split('')[5] !== ' ') {\r\n strVal = strVal.slice(0, strVal.length - 1) + ' ' + strVal.slice(strVal.length - 1);\r\n }\r\n if (strVal.length === 10 && strVal.split('')[9] !== '-') {\r\n strVal = strVal.slice(0, strVal.length - 1) + '-' + strVal.slice(strVal.length - 1);\r\n }\r\n for (let i = 0; i < strVal.length; i++) {\r\n if (i === 0) {\r\n regexPhone += '[(]';\r\n } else if ((i > 0 && i < 4) || (i > 5 && i < 9) || (i > 9 && i < 14)) {\r\n regexPhone += '[0-9]';\r\n }\r\n if (i === 4) {\r\n regexPhone += '[)]';\r\n }\r\n if (i === 5) {\r\n regexPhone += '[ ]';\r\n }\r\n if (i === 9) {\r\n regexPhone += '[-]';\r\n }\r\n }\r\n regexPhone += '$';\r\n regex = new RegExp(regexPhone);\r\n break;\r\n case INPUTTYPES.INPUT_NAME:\r\n regex = /^[a-zA-Z0-9.' ]*$/;\r\n strVal = toTitleCase(strVal);\r\n break;\r\n case INPUTTYPES.INPUT_INTEGER:\r\n case INPUTTYPES.INPUT_DOLLAR_INTEGER:\r\n case INPUTTYPES.INPUT_NUMBER:\r\n case INPUTTYPES.INPUT_ZIPCODE:\r\n case INPUTTYPES.INPUT_SIN:\r\n case INPUTTYPES.INPUT_SSN:\r\n regex = /^\\d*$/;\r\n break;\r\n // strVal = removeDecimal(strVal);\r\n // returnVal = parseInt(strVal);\r\n case INPUTTYPES.INPUT_REAL:\r\n case INPUTTYPES.INPUT_DOLLAR:\r\n case INPUTTYPES.INPUT_PERCENT:\r\n if (inputLanguage === 'English') {\r\n regex = new RegExp(`^\\\\d+\\\\.{0,1}(\\\\d{0,${controlItem.decimalPlaces}})$`);\r\n } else {\r\n regex = new RegExp(`^\\\\d+\\\\,{0,1}(\\\\d{0,${controlItem.decimalPlaces}})$`);\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n if (regex.test(strVal)) {\r\n return strVal;\r\n } else {\r\n return oldVal || '';\r\n }\r\n }\r\n return strVal;\r\n};\r\n\r\nconst decimalHashes = (decimalPlaces, isForced = false) => {\r\n // isForced means - all decimal places must be used. Reference: http://mottie.github.io/javascript-number-formatter/\r\n let str = '';\r\n if (isForced === true) {\r\n for (let i = 0; i < decimalPlaces - 1; i++) {\r\n str += '#';\r\n }\r\n str += '0'; //forcing display till last place\r\n } else {\r\n for (let i = 0; i < decimalPlaces; i++) {\r\n str += '#';\r\n }\r\n }\r\n return str;\r\n};\r\nexport const formatDisplay = (inputLanguage, value, fieldType, decimalPlaces = 0) => {\r\n let decimals;\r\n switch (fieldType) {\r\n case INPUTTYPES.INPUT_UPPER:\r\n case INPUTTYPES.INPUT_NUMBER:\r\n break;\r\n case INPUTTYPES.INPUT_PHONE:\r\n // let formattedPhone = \"\";\r\n // let tempPhone = value.split(\"\");\r\n // for(let i =0; i< tempPhone.length; i++){\r\n // if(i===0) formattedPhone += \"(\";\r\n // formattedPhone += tempPhone[i];\r\n // if(i===2) formattedPhone += \") \";\r\n // if(i===5) formattedPhone += \"-\"\r\n // }\r\n // return formattedPhone;\r\n break;\r\n case INPUTTYPES.INPUT_POSTALCODE: //CA\r\n let formattedStr = '';\r\n let tempPostalCode = value.split('');\r\n for (let i = 0; i < tempPostalCode.length; i++) {\r\n formattedStr += tempPostalCode[i];\r\n if (i === 2) {\r\n formattedStr += ' ';\r\n }\r\n }\r\n return formattedStr;\r\n case INPUTTYPES.INPUT_ZIPCODE: //US\r\n let formattedCode = '';\r\n let tempCode = value.split('');\r\n for (let i = 0; i < tempCode.length; i++) {\r\n formattedCode += tempCode[i];\r\n if (i === 4) {\r\n formattedCode += '-';\r\n }\r\n }\r\n return formattedCode;\r\n case INPUTTYPES.INPUT_SIN:\r\n let sin = '';\r\n let tempSIN = value.split('');\r\n for (let i = 0; i < tempSIN.length; i++) {\r\n sin += tempSIN[i];\r\n if (i === 2 || i === 5) {\r\n sin += ' ';\r\n }\r\n }\r\n return sin;\r\n\r\n case INPUTTYPES.INPUT_SSN:\r\n return;\r\n case INPUTTYPES.INPUT_INTEGER:\r\n if (inputLanguage === 'English') {\r\n return format('#,##0.', value);\r\n } else {\r\n return format('# ##0.', value);\r\n }\r\n\r\n case INPUTTYPES.INPUT_REAL:\r\n if (inputLanguage === 'English') {\r\n decimals = decimalHashes(decimalPlaces, true);\r\n return format(`#,##0.${decimals}`, value);\r\n } else {\r\n //French\r\n decimals = decimalHashes(decimalPlaces, true);\r\n return format(`# ##0,${decimals}`, value);\r\n }\r\n case INPUTTYPES.INPUT_PERCENT:\r\n if (inputLanguage === 'English') {\r\n decimals = decimalHashes(decimalPlaces, true);\r\n return format(`#0.${decimals} %`, value);\r\n } else {\r\n decimals = decimalHashes(decimalPlaces, true);\r\n return format(`#0,${decimals} %`, value);\r\n }\r\n case INPUTTYPES.INPUT_DOLLAR:\r\n if (inputLanguage === 'English') {\r\n return format('$#,##0.00', value);\r\n } else {\r\n return format('$# ##0,00', value);\r\n }\r\n case INPUTTYPES.INPUT_DOLLAR_INTEGER:\r\n if (inputLanguage === 'English') {\r\n return format('$#,##0.', value);\r\n } else {\r\n return format('$# ##0.', value);\r\n }\r\n default:\r\n break;\r\n }\r\n return value;\r\n};\r\n\r\nconst removeDecimal = (val) => {\r\n let ret = '';\r\n for (let i = 0; i < val.length; i++) {\r\n if (val[i] !== '.') {\r\n ret += val[i];\r\n }\r\n }\r\n return ret;\r\n};\r\n\r\nexport const camelCase = (str) => {\r\n return str\r\n .replace(/\\s(.)/g, function (a) {\r\n return a.toUpperCase();\r\n })\r\n .replace(/\\s/g, '')\r\n .replace(/^(.)/, function (b) {\r\n return b.toLowerCase();\r\n });\r\n};\r\n\r\nconst capitalizeApostrophe = (str) => {\r\n let retStr = str.split('');\r\n\r\n for (let i = 0; i < retStr.length; i++) {\r\n if (retStr[i] === \"'\" && i + 1 < retStr.length) {\r\n retStr[i + 1] = retStr[i + 1].toUpperCase();\r\n }\r\n }\r\n return retStr.join('');\r\n};\r\n\r\nexport const toTitleCase = (str) => {\r\n let str1 = str.replace(/\\w\\S*/g, function (txt) {\r\n // return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n return txt.charAt(0).toUpperCase() + txt.substr(1);\r\n });\r\n return capitalizeApostrophe(str1);\r\n};\r\n\r\nexport const onFocusInputPattern = (controlItem) => {\r\n switch (controlItem['fieldType']) {\r\n case INPUTTYPES.INPUT_UPPER:\r\n break;\r\n case INPUTTYPES.INPUT_REAL:\r\n return '/^([0-9]+(.[0-9]+)?)/';\r\n case INPUTTYPES.INPUT_INTEGER:\r\n return '[0-9]';\r\n case INPUTTYPES.INPUT_PERCENT:\r\n break;\r\n case INPUTTYPES.INPUT_DOLLAR:\r\n break;\r\n default:\r\n break;\r\n }\r\n};\r\n","import {ActionTypes} from 'custom/common/redux/Types';\r\nimport axios from 'axios';\r\nimport {setAlert, removeAlert} from 'core/redux/actions';\r\n\r\nfunction sleep(sec) {\r\n return new Promise((resolve) => setTimeout(resolve, sec * 1000));\r\n}\r\nlet result = {\r\n data: {\r\n agentID: '000005967',\r\n agentList: [\r\n {agentID: 'All', agentName: 'All Listed Below', isActive: true},\r\n {agentID: '000005968', agentName: 'Jo Agent', isActive: true},\r\n {agentID: '000005969', agentName: 'J Agent', isActive: true},\r\n {agentID: '000005970', agentName: 'Joe', isActive: false},\r\n ],\r\n productList: [\r\n {productID: 0, productName: 'All'},\r\n {productID: 1, productName: 'Accident & Sickness'},\r\n {productID: 2, productName: 'ADB'},\r\n {productID: 3, productName: 'Annuity'},\r\n {productID: 5, productName: 'APRA'},\r\n {productID: 6, productName: 'Critical Illness'},\r\n {productID: 7, productName: 'Essential Life'},\r\n {productID: 8, productName: 'Life - Permament'},\r\n {productID: 9, productName: 'Life - Term'},\r\n {productID: 10, productName: 'Life - UL'},\r\n {productID: 11, productName: 'Reduced Paid-Up'},\r\n {productID: 12, productName: 'Segregated Funds'},\r\n {productID: 13, productName: 'Term 100'},\r\n ],\r\n planList: [\r\n {planID: 'All', planName: 'All'},\r\n {planID: 'S8124', planName: '10 Yr Level Term Rider S8124'},\r\n {planID: 'S7074', planName: '10 Yr Level Term S7074'},\r\n {planID: 'S8071', planName: '10 Yr Level Term S8071'},\r\n {planID: '15Yr', planName: '15 Yr Monthly Income Rider'},\r\n {planID: '1911', planName: '1911 Paid-Up Life'},\r\n {planID: '1929', planName: '1929 Whole Life'},\r\n ],\r\n },\r\n};\r\nconst policyStatusListOptionItems = (policyStatusList) => {\r\n let policyStatusOptions = {};\r\n\r\n policyStatusList.map(({policyStatusCode, policyStatusDescription}) => {\r\n policyStatusOptions[policyStatusCode] = policyStatusDescription;\r\n return policyStatusCode;\r\n });\r\n return policyStatusOptions;\r\n};\r\nconst churchListOptionItems = (churchList) => {\r\n let churchOptions = {};\r\n\r\n churchList.map(({churchNumber, churchName, churchCity, churchProvince}) => {\r\n churchOptions[churchNumber] = `${churchName}, ${churchCity} ${churchProvince}, ${churchNumber}`;\r\n return churchNumber;\r\n });\r\n return churchOptions;\r\n};\r\nconst denominationListOptionItems = (denominationList) => {\r\n let denominationOptions = {};\r\n console.log('denominationListOptionItems', denominationList);\r\n denominationList.map((val) => {\r\n denominationOptions[val] = val;\r\n return val;\r\n });\r\n return denominationOptions;\r\n};\r\n\r\nconst loadDataReportsData = () => async (dispatch, getState) => {\r\n //let res;\r\n try {\r\n let res1 = await axios.post('/api/DataReports', getState().auth.user);\r\n //await sleep(1);\r\n //res = result;\r\n let res2 = await axios.post('/api/DataReportLists');\r\n console.log('loadDataReportsData', res1.data, res2.data);\r\n console.log(\"res2.data['denominationList']\", res2.data['denominationList']);\r\n\r\n //For testing, adding 2nd Agent to avoid skipping Agent page. Agent page is not completed for designing and feature wise\r\n // let agentList = res1.data['agentList'].slice();\r\n // agentList.push({\r\n // agentID: '000005968',\r\n // agentName: 'J A Agent',\r\n // isActive: false,\r\n // });\r\n // agentList.push({\r\n // agentID: '000005969',\r\n // agentName: 'J Agent',\r\n // isActive: false,\r\n // });\r\n // console.log(agentList, res1.data.agentList);\r\n\r\n let churchOptionItems = churchListOptionItems(res2.data['churchList']);\r\n let policyStatusOptionItems = policyStatusListOptionItems(res2.data['policyStatusList']);\r\n let denominationOptionItems = denominationListOptionItems(res2.data['denominationList']);\r\n console.log('DenominationOptionItems', denominationOptionItems);\r\n dispatch({\r\n type: ActionTypes.FETCH_DATAREPORTS,\r\n payload: {\r\n ...res1.data,\r\n ...res2.data,\r\n churchOptionItems,\r\n policyStatusOptionItems,\r\n // agentList,\r\n denominationOptionItems,\r\n }, //spread all objects of both api call results\r\n });\r\n } catch (error) {\r\n console.log('Data Reports Error: ', error.response);\r\n dispatch({\r\n type: ActionTypes.FETCHERROR_DATAREPORTS,\r\n });\r\n // dispatch(\r\n // setAlert(\r\n // error.response.data[0].errorMessage,\r\n // \"Error\",\r\n // \"alphaLookup\",\r\n // 10000\r\n // )\r\n // );\r\n }\r\n};\r\nconst clearDataReportsData = () => (dispatch, getState) => {\r\n // This is to remove alert if any existing on data fetch\r\n if (getState().alert['alphaLookup']) {\r\n dispatch(removeAlert('alphaLookup'));\r\n }\r\n dispatch({type: ActionTypes.CLEAR_DATAREPORTS});\r\n};\r\n\r\nexport {loadDataReportsData, clearDataReportsData};\r\n","import React from 'react';\r\nimport {companyLogo, closeIcon, IllustrationMagic} from 'assets';\r\nimport {Button} from 'core/controls';\r\nimport {Modal} from 'core/uicore';\r\n\r\nconst AboutModal = ({\r\n controlGetFocus,\r\n controlLostFocus,\r\n controlClick,\r\n onCancel,\r\n setElement,\r\n route,\r\n}) => {\r\n return (\r\n e.stopPropagation()} propStyle=\"modalDark\">\r\n
    \r\n {\r\n controlClick(event, name, value);\r\n onCancel();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name=\"btnXAboutCancel\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `modalClose`,\r\n }}\r\n logo={{\r\n srcLogo: closeIcon,\r\n altLogo: '',\r\n classLogo: 'close-logo',\r\n }}\r\n showIcon={true}\r\n />\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Hello!

    \r\n

    We are Procomp consulting

    \r\n
    \r\n

    \r\n We combine acturial and IT expertise to provide you with the products or people to\r\n meet your insurance products needs.\r\n

    \r\n
    \r\n

    \r\n Acme Financial Help Desk\r\n

    \r\n

    \r\n Phone (416) 123-4367x321\r\n

    \r\n

    \r\n Toll free 1-800-123-4256 x321\r\n

    \r\n

    \r\n Email help.desk@acmefinancial.ca\r\n

    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n\r\n
    \r\n

    \r\n ProCloud Illustration System\r\n \r\n (905) 640-2667\r\n

    \r\n

    \r\n Copyright © 2015-2022, ProComp Consulting Inc. All rights reserved\r\n

    \r\n

    Version {process.env.REACT_APP_VERSION}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AboutModal;\r\n","import React, {useEffect, Fragment, useState} from 'react';\r\nimport {Redirect, useLocation} from 'react-router-dom';\r\nimport {useSelector, useDispatch} from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport {fetchUser, loadControlItems, login, setAlert} from 'core/redux/actions';\r\nimport {userLogo, helpLogo} from 'assets';\r\nimport {HeaderContainer, ButtonBar, Spinner, Modal} from 'core/uicore';\r\nimport {Button} from 'core/controls';\r\nimport Alert from 'core/uicore/Alert';\r\nimport {Logo} from 'core/uicore/Logo';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport axios from 'axios';\r\nimport {useMsal, useIsAuthenticated} from '@azure/msal-react';\r\nimport {loginRequest, tokenRequest} from 'lib/authConfig';\r\nimport {InteractionStatus} from '@azure/msal-browser';\r\nimport {setInterceptorAD} from 'core/utils/setAuthConfig';\r\nimport AboutModal from '../ui/AboutModal';\r\n\r\nconst Login = ({isInforce, isNewBusiness, isHeadOffice, isAdmin}) => {\r\n const location = useLocation();\r\n const [formData, setFormData] = useState({\r\n username: 'user1',\r\n password: 'ProComp',\r\n });\r\n const [tokenMethod, setTokenMethod] = useState('');\r\n const [isAboutModal, setIsAboutModal] = useState(false);\r\n const auth = useSelector((state) => state.auth);\r\n const dispatch = useDispatch();\r\n const {instance, inProgress} = useMsal();\r\n const isAuthenticatedUser = useIsAuthenticated();\r\n\r\n useEffect(() => {\r\n setTokenMethod(sessionStorage.getItem('tokenMethod'));\r\n }, [sessionStorage.getItem('tokenMethod')]);\r\n\r\n const {isAuthenticated, isAuthenticating, user} = auth;\r\n const {username, password} = formData;\r\n const elementItems = {};\r\n\r\n const setElement = (element) => {\r\n if (element !== null) {\r\n //console.log(`element name = ${element.name}`);\r\n //this.controlItems[element.name].element = element;\r\n elementItems[element.name] = element;\r\n }\r\n };\r\n\r\n //This is just to pass empty data to control Click callback, which inturns handle tracking events in framework\r\n const loginFormData = {formName: 'Login'};\r\n const updateFormData = () => {};\r\n\r\n //Tracking pending for Login page\r\n const controlClick = (event, name, value) => {\r\n event.persist();\r\n };\r\n\r\n let defaultFrom = '/login';\r\n if (user) {\r\n if (isNewBusiness && isNewBusiness() && user.defaultApplication === 'New Business') {\r\n defaultFrom = {pathname: 'illustration'};\r\n } else if (isInforce && isInforce() && user.defaultApplication === 'Inforce') {\r\n defaultFrom = {pathname: 'inforce'};\r\n } else if (isAdmin && isAdmin() && user.defaultApplication === 'Admin') {\r\n defaultFrom = {pathname: '/admin'};\r\n } else if (isNewBusiness && isNewBusiness()) {\r\n defaultFrom = {pathname: 'illustration'};\r\n } else if (isInforce && isInforce()) {\r\n defaultFrom = {pathname: 'inforce'};\r\n }\r\n }\r\n\r\n //Don't save previous state, on login user should go to default screen\r\n\r\n let from = defaultFrom;\r\n // let isSessionExpired = sessionStorage.getItem('isSessionExpired');\r\n if (user /*&& isSessionExpired*/) {\r\n from = location.state ? location.state.from : from;\r\n sessionStorage.setItem('isSessionExpired', false);\r\n }\r\n\r\n const handleChange = (e) => setFormData({...formData, [e.target.name]: e.target.value});\r\n\r\n const getUser = async () => {\r\n const account = instance.getActiveAccount();\r\n if (inProgress === InteractionStatus.None) {\r\n try {\r\n const response = await instance.acquireTokenSilent({\r\n ...tokenRequest,\r\n account,\r\n });\r\n const refreshToken = {jwt: response.accessToken};\r\n sessionStorage.setItem('refreshToken', JSON.stringify(refreshToken));\r\n\r\n setInterceptorAD();\r\n dispatch(fetchUser(account, false));\r\n } catch (error) {\r\n // dispatch({type: ActionTypes.AUTH_FAIL});\r\n if (error && error.response) {\r\n dispatch(setAlert(error.response.data['message'], 'Error', 'login'));\r\n }\r\n }\r\n }\r\n };\r\n\r\n const onSubmit = async (e) => {\r\n e.preventDefault();\r\n\r\n const tokenMethod = sessionStorage.getItem('tokenMethod');\r\n if (tokenMethod === 'AD') {\r\n const request = {...loginRequest, loginHint: username};\r\n try {\r\n const result = await instance.loginPopup(request);\r\n getUser();\r\n } catch (error) {\r\n console.log('error occured: ' + error);\r\n }\r\n } else {\r\n dispatch(login(username, password));\r\n }\r\n };\r\n\r\n if (isAuthenticated) {\r\n return ;\r\n }\r\n\r\n const dummy = (event, name, value) => {\r\n // console.log('Do Nothing');\r\n };\r\n\r\n const onDummyLogin = async () => {\r\n try {\r\n var generateTrackingUserName = false;\r\n const { data } = await axios.post('/users/authenticate', { username, password, generateTrackingUserName });\r\n console.log(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {(isAuthenticating ||\r\n (inProgress !== InteractionStatus.Startup && inProgress !== InteractionStatus.None)) && (\r\n e.stopPropagation()} className=\"modalDark\">\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n {\r\n controlClick(event, name, value);\r\n // onSubmit(event);\r\n onDummyLogin();\r\n }}\r\n lostfocusCallback={dummy}\r\n name=\"btnLogin\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: 'buttoncontrol buttonHdr borderPartialRight',\r\n }}\r\n logo={{\r\n srcLogo: userLogo,\r\n altLogo: '',\r\n classLogo: 'profile-logo',\r\n }}\r\n showIcon={true}\r\n />\r\n {\r\n controlClick(event, name, value);\r\n setIsAboutModal(true);\r\n }}\r\n lostfocusCallback={dummy}\r\n name=\"btnHelp\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: 'buttoncontrol buttonHdr',\r\n }}\r\n logo={{\r\n srcLogo: helpLogo,\r\n altLogo: '',\r\n classLogo: 'help-logo',\r\n }}\r\n showIcon={true}\r\n />\r\n \r\n \r\n\r\n
    \r\n

    Sign In

    \r\n

    \r\n Sign Into Your Account\r\n

    \r\n
    \r\n {tokenMethod !== 'AD' && (\r\n
    \r\n \r\n
    \r\n )}\r\n {tokenMethod !== 'AD' && (\r\n
    \r\n \r\n
    \r\n )}\r\n {\r\n controlClick(event, name, value);\r\n onSubmit(event);\r\n }}\r\n lostfocusCallback={dummy}\r\n name=\"btnLogin\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control:\r\n 'paddingMed marginMed borderRadiusAll fontLg boxShadowBottom fontPrimaryColor',\r\n }}\r\n />\r\n \r\n \r\n
    \r\n {isAboutModal && (\r\n {}}\r\n controlClick={controlClick}\r\n controlLostFocus={() => {}}\r\n setElement={setElement}\r\n onCancel={() => setIsAboutModal(false)}\r\n />\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import React, {useState} from 'react';\r\nimport {useSelector, shallowEqual} from 'react-redux';\r\nimport {Modal, ModalTitle, QuestionModalFooter} from 'core/uicore';\r\nimport {Button} from 'core/controls';\r\nimport {tickLogo, closeIcon} from 'assets';\r\nimport {INFORCE, NEW_BUSINESS, SHARED_OWNERSHIP, EAPPLICATION, ADMIN, BI, EAPP_SETTINGS} from '../utils/constants';\r\nimport {usePCTranslation} from 'core/hooks';\r\n\r\nconst SwitchProductModal = ({\r\n controlClick,\r\n controlGetFocus,\r\n onSelectProduct,\r\n onCancel,\r\n controlLostFocus,\r\n setElement,\r\n route,\r\n isMobile,\r\n}) => {\r\n const {user, controlItems} = useSelector(\r\n (state) => ({\r\n user: state.auth.user,\r\n controlItems: state.setupItems.controlItems,\r\n }),\r\n shallowEqual\r\n );\r\n const {t} = usePCTranslation();\r\n const [selectedItem, setSelectedItem] = useState(route);\r\n // const [disabled, setDisabled] = useState(true);\r\n\r\n // useEffect(() => {\r\n // setSelectedItem(route);\r\n // }, [])\r\n\r\n // This is for clicking the product, item is index of the product\r\n const handleSelectItem = (e, item) => {\r\n controlClick(e, `${item}Switch`, item);\r\n setSelectedItem(item);\r\n };\r\n\r\n //This is for clicking Choose button and closing modal\r\n const handleChoose = () => {\r\n onSelectProduct(selectedItem);\r\n };\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const switchButton = (switchBtnName, itemId, isPermitted, logoName='logoHdrNewBusiness') => (\r\n handleSelectItem(e, itemId)}\r\n className={`PAGELINK fullWidth justifyStart flexContainer alignCenter paddingMed ${\r\n isPermitted ? 'cursorPointer' : 'disabled'\r\n } ${logoName} borderRadiusAll ${\r\n selectedItem === itemId && isPermitted ? 'activeLink' : ''\r\n }`}\r\n disabled={!isPermitted}>\r\n
    \r\n \r\n \"\"\r\n
    \r\n \r\n )\r\n\r\n return (\r\n e.stopPropagation()} propStyle=\"modalDark\">\r\n
    \r\n {\r\n controlClick(event, name, value);\r\n onCancel();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name=\"btnXSwitchProductCancel\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: \"buttonlabel\",\r\n control: `modalClose`,\r\n }}\r\n logo={{\r\n srcLogo: closeIcon,\r\n altLogo: \"\",\r\n classLogo: \"new-logo branding-image-filter\",\r\n }}\r\n showIcon={true}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {user.system.isInforce &&\r\n user?.permissions?.isInforce?.isDisplayed &&\r\n switchButton(\r\n \"inforceSwitch\",\r\n INFORCE,\r\n user?.permissions?.isInforce?.isActive,\r\n \"logoHdrInforce\"\r\n )}\r\n\r\n {user.system.isNewBusiness &&\r\n user?.permissions?.isNewBusiness?.isDisplayed &&\r\n switchButton(\r\n \"illustrationSwitch\",\r\n NEW_BUSINESS,\r\n user?.permissions?.isNewBusiness?.isActive,\r\n \"logoHdrNewBusiness\"\r\n )}\r\n\r\n {route === NEW_BUSINESS &&\r\n !isMobile &&\r\n user.system.isConcepts &&\r\n user?.permissions?.isNewBusiness?.isDisplayed &&\r\n switchButton(\r\n \"sharedOwnershipSwitch\",\r\n SHARED_OWNERSHIP,\r\n user?.permissions?.isNewBusiness?.isActive\r\n )}\r\n\r\n {/* {(route === NEW_BUSINESS || route === EAPPLICATION) &&\r\n user?.permissions?.isEapplicationAdministrator &&\r\n user.system.isEapplication && switchButton('eapplicationSwitch',EAPPLICATION, user?.permissions?.isEapplication,'logoHdrEApplication')} */}\r\n\r\n {\r\n // (route === NEW_BUSINESS || route === EAPP_SETTINGS) &&\r\n // user?.permissions?.isEapplicationAdministrator &&\r\n user.system.isEapplication &&\r\n user?.permissions?.isEapplication?.isDisplayed &&\r\n switchButton(\r\n \"eappSettingSwitch\",\r\n EAPP_SETTINGS,\r\n user?.permissions?.isEapplication?.isActive,\r\n \"logoHdrEApplication\"\r\n )\r\n }\r\n\r\n {user.system.isBusinessIntelligence &&\r\n user?.permissions?.isBusinessIntelligence?.isDisplayed &&\r\n switchButton(\r\n \"biSwitch\",\r\n BI,\r\n user?.permissions?.isBusinessIntelligence?.isActive\r\n )}\r\n\r\n {(user?.permissions?.isAdmin?.isDisplayed ||\r\n ((user?.permissions?.isAdminSystem?.isDisplayed ||\r\n user?.permissions?.isAdminSystemAdministrator?.isDisplayed) &&\r\n user.system.isAdminSystem)) && (\r\n handleSelectItem(e, ADMIN)}\r\n className={`PAGELINK fullWidth justifyStart flexContainer alignCenter paddingMed logoHdrNewBusiness borderRadiusAll ${\r\n !user?.permissions?.isAdmin?.isActive\r\n ? \"disabled\"\r\n : \"cursorPointer\"\r\n } ${\r\n selectedItem === ADMIN &&\r\n (user?.permissions?.isAdmin?.isActive ||\r\n ((user?.permissions?.isAdminSystem?.isActive ||\r\n user?.permissions?.isAdminSystemAdministrator\r\n ?.isActive) &&\r\n user.system.isAdminSystem))\r\n ? \"activeLink\"\r\n : \"\"\r\n }`}\r\n disabled={!user?.permissions?.isAdmin?.isActive}\r\n >\r\n
    \r\n \r\n \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SwitchProductModal;\r\n","import React, {Fragment} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {useRouter, usePCTranslation} from 'core/hooks';\r\nimport {Button} from 'core/controls';\r\n\r\nconst TabbedHeader = ({controlClick, controlGetFocus, controlLostFocus, setElement, isUserAdmin, sticky}) => {\r\n const {match, push, location} = useRouter();\r\n const {t} = usePCTranslation();\r\n const {routes} = useSelector((state) => ({\r\n routes: state.routes,\r\n }));\r\n const page = location.pathname.split('/')[1].toLowerCase();\r\n\r\n const handleClickRoute = (event, name, value, route) => {\r\n const tempArr = location.pathname.split('/');\r\n if (route.subModule.toLowerCase() !== tempArr[tempArr.length - 1].toLowerCase()) {\r\n controlClick(event, name, value);\r\n push(route.paths[0]);\r\n }\r\n };\r\n const isActive = (route) => {\r\n const tempArr = location.pathname.split('/');\r\n if (route.subModule.toLowerCase() !== tempArr[tempArr.length - 1].toLowerCase()) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n if (!routes[page] || routes[page].length === 0) {\r\n return <>;\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {routes[page].length > 1 && (\r\n
    \r\n {routes[page].map(\r\n (route) =>\r\n route.isVisible && (\r\n \r\n
    \r\n handleClickRoute(event, name, value, route)}\r\n lostfocusCallback={controlLostFocus}\r\n //stateData={storeFormData}\r\n name={route.button}\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: 'buttoncontrol buttonHdr',\r\n }}\r\n />\r\n
    \r\n
    \r\n )\r\n )}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default TabbedHeader;\r\n","import React, {Fragment} from 'react';\r\nimport {PillButtons} from 'core/controls';\r\n\r\nconst ProfileSettings = ({\r\n controlLostFocus,\r\n controlChange,\r\n controlGetFocus,\r\n setElement,\r\n formData,\r\n auth,\r\n}) => {\r\n const disableApplication = () => {\r\n if (!auth || !auth.user) {\r\n return '';\r\n }\r\n\r\n const {user} = auth;\r\n if (!user?.permissions?.isNewBusiness?.isActive) {\r\n return \"New Business\";\r\n } else if (!user?.permissions?.isInforce?.isActive) {\r\n return \"Inforce\";\r\n } else {\r\n return \"\";\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n {/* \r\n
    */}\r\n\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ProfileSettings;\r\n","import React, {Fragment} from 'react';\r\nimport {Checkbox, Label, Textbox, MaskedTextbox} from 'core/controls';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\n\r\nconst UserInformation = ({controlLostFocus, controlChange, controlGetFocus, setElement, formData, user}) => {\r\n //This is to prevent user['agentID'] undefined error on session logout\r\n if (!user) {\r\n return null;\r\n }\r\n return (\r\n \r\n {/* */}\r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default UserInformation;\r\n","export const profileFormData = {\r\n formName: 'profile',\r\n CurrentField: 'txtUserName',\r\n txtUserName: '',\r\n txtEmailAddress: '',\r\n txtPrimaryPhone: '',\r\n txtSecondaryPhone: '',\r\n txtFaxNumber: '',\r\n chkPrimaryPhone: false,\r\n chkSecondaryPhone: false,\r\n imgProfilePicture: '',\r\n rdoInputLanguage: 'EN',\r\n rdoReportLanguage: 'EN',\r\n rdoFontSize: 'Large',\r\n rdoDefaultApp: 'New Business',\r\n btnSaveProfile: '',\r\n btnCancelProfile: '',\r\n};\r\n","import React, { useRef } from 'react';\r\nimport { useDrag, useDrop } from 'react-dnd';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { dragIcon } from 'assets';\r\nimport { usePCTranslation } from 'core/hooks';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n minWidth: 275,\r\n padding: '0.5rem 0.5rem',\r\n margin: '.5rem',\r\n cursor: 'move',\r\n borderRadius: '16px',\r\n },\r\n content: {\r\n padding: '0.5rem 0.5rem',\r\n },\r\n bullet: {\r\n display: 'inline-block',\r\n margin: '0 2px',\r\n transform: 'scale(0.8)',\r\n },\r\n title: {\r\n fontSize: 14,\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n});\r\n\r\nexport default function OutlinedCard({ widget, onToggle, moveCard, index }) {\r\n const { t } = usePCTranslation();\r\n const classes = useStyles();\r\n const { name, displayName, isActive, widgetID } = widget;\r\n const ref = useRef(null);\r\n const [{ handlerId }, drop] = useDrop({\r\n accept: 'card ',\r\n collect(monitor) {\r\n return {\r\n handlerId: monitor.getHandlerId(),\r\n };\r\n },\r\n hover(item, monitor) {\r\n if (!ref.current) {\r\n return;\r\n }\r\n const dragIndex = item.index;\r\n const hoverIndex = index;\r\n // Don't replace items with themselves\r\n if (dragIndex === hoverIndex) {\r\n return;\r\n }\r\n // Determine rectangle on screen\r\n const hoverBoundingRect = ref.current?.getBoundingClientRect();\r\n // Get vertical middle\r\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\r\n // Determine mouse position\r\n const clientOffset = monitor.getClientOffset();\r\n // Get pixels to the top\r\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\r\n // Only perform the move when the mouse has crossed half of the items height\r\n // When dragging downwards, only move when the cursor is below 50%\r\n // When dragging upwards, only move when the cursor is above 50%\r\n // Dragging downwards\r\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\r\n return;\r\n }\r\n // Dragging upwards\r\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\r\n return;\r\n }\r\n // Time to actually perform the action\r\n moveCard(dragIndex, hoverIndex);\r\n // Note: we're mutating the monitor item here!\r\n // Generally it's better to avoid mutations,\r\n // but it's good here for the sake of performance\r\n // to avoid expensive index searches.\r\n item.index = hoverIndex;\r\n },\r\n });\r\n const [{ isDragging }, drag] = useDrag({\r\n type: 'card ',\r\n item: () => {\r\n return { widgetID, index };\r\n },\r\n collect: (monitor) => ({\r\n isDragging: monitor.isDragging(),\r\n }),\r\n });\r\n const opacity = isDragging ? 0 : 1;\r\n drag(drop(ref));\r\n\r\n const formatLongText = (longText) => {\r\n const parts = longText.split(\"
    \");\r\n const len = parts.length;\r\n return parts.map((part, idx) => {\r\n return (\r\n \r\n {part}\r\n {idx !== len &&
    }\r\n
    \r\n );\r\n });\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n

    {t(`widget-${name}-title`)}

    \r\n
    \r\n \"dragIcon\"\r\n
    \r\n
    \r\n

    \r\n \r\n {t(`widget-${name}-shortText`)}\r\n \r\n \r\n {formatLongText(t(`widget-${name}-longText`))}\r\n \r\n
    \r\n
    \r\n onToggle(widgetID, e.target.checked)}\r\n />\r\n \r\n
    \r\n \r\n );\r\n}\r\n","import React, {useState, useEffect, useCallback} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport update from 'immutability-helper';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport axios from 'axios';\r\nimport WidgetCard from './WidgetCard';\r\nimport {DndProvider} from 'react-dnd';\r\nimport {HTML5Backend} from 'react-dnd-html5-backend';\r\n\r\nconst style = {\r\n display: 'grid',\r\n gridTemplateColumns: 'auto auto auto',\r\n margin: '1rem',\r\n};\r\n\r\nconst ProfileWidgets = ({widgetsData, updateWidgetsData}) => {\r\n const handleToggle = (id, toggle) => {\r\n let cloneWidgets = cloneDeep(widgetsData);\r\n // cloneWidgets[id].isActive = toggle;\r\n const card = cloneWidgets.find((card) => card.widgetID === id);\r\n card.isActive = toggle;\r\n updateWidgetsData(cloneWidgets);\r\n };\r\n\r\n const moveCard = (dragIndex, hoverIndex) => {\r\n updateWidgetsData(\r\n update(widgetsData, {\r\n $splice: [\r\n [dragIndex, 1],\r\n [hoverIndex, 0, widgetsData[dragIndex]],\r\n ],\r\n })\r\n );\r\n };\r\n\r\n return (\r\n \r\n

    Reorder your widgets or change the visibility of the widgets you see on your dashboard.

    \r\n
    \r\n {widgetsData.map((card, idx) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ProfileWidgets;\r\n","import React, {Component} from 'react';\r\nimport axios from 'axios';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport {ProfileHeader, UserInformation, ProfileSettings} from 'custom/profile/ui';\r\nimport {Button} from 'core/controls';\r\nimport {profileFormData} from 'custom/profile/utils/data';\r\nimport {FieldContainer, Alert, Modal, ModalTitle, TabLayout, TabContent} from 'core/uicore';\r\nimport {FormValidator, FormStatus, ValidationMessage} from 'core/formValidation';\r\nimport ValidateForm from 'custom/common/utils/customFormValidation';\r\nimport TabsHeader from 'core/uicore/TabsHeader';\r\nimport QuestionModalFooter from 'core/uicore/QuestionModalFooter';\r\nimport {closeIcon} from 'assets';\r\nimport ProfileWidgets from './ProfileWidgets';\r\n\r\nclass ProfileModal extends Component {\r\n state = {\r\n profileData: profileFormData, // Load static data before componentDidMount\r\n isLoading: false,\r\n sticky: '',\r\n activeTab: 'tabProfileInformation',\r\n widgetsData: [],\r\n };\r\n\r\n elementItems = {};\r\n updateProfileFormData = async (name, value) => {\r\n this.setState({\r\n profileData: {...this.state.profileData, [name]: value},\r\n });\r\n //this.props.updateStoreFormData(name, value, \"profileFormData\");\r\n };\r\n setElement = (element) => {\r\n if (element !== null) {\r\n this.elementItems[element.name] = element;\r\n }\r\n };\r\n controlChange = async (event, name, value) => {\r\n event.persist();\r\n await this.updateProfileFormData(name, value);\r\n this.props.globalChange(\r\n event,\r\n this.state.profileData,\r\n this.elementItems,\r\n this.updateProfileFormData\r\n );\r\n };\r\n controlClick = (event, name, value) => {\r\n event.persist();\r\n event.preventDefault();\r\n this.props.globalClick(\r\n name,\r\n this.state.profileData,\r\n this.elementItems,\r\n this.updateProfileFormData\r\n );\r\n };\r\n controlGetFocus = (event, name, value) => {\r\n this.props.globalGetFocus(\r\n event,\r\n this.state.profileData,\r\n this.elementItems,\r\n this.updateProfileFormData\r\n );\r\n };\r\n controlLostFocus = (event, name, value) => {\r\n this.props.globalLostFocus(\r\n event,\r\n this.state.profileData,\r\n this.elementItems,\r\n this.updateProfileFormData\r\n );\r\n };\r\n\r\n updateWidgetsData = (widgetsData) => {\r\n this.setState({widgetsData});\r\n };\r\n // saveWidgetsData = async () => {\r\n // try {\r\n // const {data} = axios.post('/api/BI/GetAllUserWidgets', this.state.widgetsData);\r\n // console.log('Post widgets success: ', data);\r\n // } catch (error) {\r\n // console.log('Post widgets fail: ', error);\r\n // }\r\n // };\r\n\r\n submitProfile = async () => {\r\n // this.setState({ disableSaveButton: true });\r\n // setTimeout(() => this.setState({ disableSaveButton: false }), 2000);\r\n\r\n const {profileData, widgetsData} = this.state;\r\n if (profileData['rdoFontSize'] === 'Large') {\r\n document.body.classList.add('altFont');\r\n } else if (profileData['rdoFontSize'] === 'Small') {\r\n document.body.classList.remove('altFont');\r\n }\r\n const widgets = {};\r\n const cloneWidgets = cloneDeep(widgetsData);\r\n cloneWidgets.forEach((widget, idx) => {\r\n widget.displayOrder = idx + 1;\r\n widgets[widget.name] = widget;\r\n });\r\n\r\n await this.props.updateUserProfile({...profileData, widgetsData: widgets}, this.props.t);\r\n\r\n if (this.props.inforceData && this.props.inforceData.inforcePolicy) {\r\n this.props.populateTreeAction(this.props.inforceData.inforcePolicy, this.props.t);\r\n }\r\n this.props.onSaveProfile();\r\n };\r\n\r\n handleCancel = () => {\r\n // this.setState({ disableCancelButton: true });\r\n // setTimeout(() => this.setState({ disableCancelButton: false }), 2000);\r\n\r\n // this.loadProfileData();\r\n this.props.setAlert(this.props.t('msg-InfoReverted'), 'Secondary', 'updateProfile', 5000);\r\n this.props.onCancel();\r\n this.updateWidgetsData([]);\r\n };\r\n setActiveTab = (activeTab) => {\r\n this.setState({activeTab});\r\n };\r\n\r\n fetchUserWidgets = async () => {\r\n try {\r\n const {data} = await axios.post('/api/BI/GetAllUserWidgets', this.props.user);\r\n const widgetsData = data.sort(\r\n (widget1, widget2) => widget1.displayOrder - widget2.displayOrder\r\n );\r\n this.setState({widgetsData});\r\n } catch (error) {\r\n console.log('fetch users widget error', error);\r\n }\r\n };\r\n\r\n //Initialize profile data from auth User data\r\n loadProfileData = () => {\r\n const {user} = this.props.auth;\r\n // const tempWidgets = user['widgets'];\r\n // let widgetsData = [];\r\n // const widgetKeys = Object.keys(tempWidgets).sort(\r\n // (key1, key2) => tempWidgets[key1].isDisplayOrder - tempWidgets[key2].isDisplayOrder\r\n // );\r\n\r\n // widgetKeys.forEach((key) => {\r\n // widgetsData.push(tempWidgets[key]);\r\n // });\r\n\r\n this.setState({\r\n profileData: {\r\n ...this.state.profileData,\r\n txtUserName: user['profileName'],\r\n txtEmailAddress: user['emailAddress'],\r\n txtPrimaryPhone: user['phoneNumberPrimary'],\r\n txtSecondaryPhone: user['phoneNumberSecondary'],\r\n txtFaxNumber: user['faxNumber'],\r\n chkPrimaryPhone: user['isMobilePrimary'],\r\n chkSecondaryPhone: user['isMobileSecondary'],\r\n imgProfilePicture: '',\r\n rdoInputLanguage: user['inputLanguage'],\r\n rdoReportLanguage: user['reportLanguage'],\r\n rdoFontSize: user['fontSize'],\r\n rdoDefaultApp: user['defaultApplication'],\r\n },\r\n // widgetsData,\r\n });\r\n this.props.onLoad(this.state.profileData, this.elementItems, this.updateProfileFormData);\r\n };\r\n\r\n submitData = () => {};\r\n\r\n componentDidMount() {\r\n this.loadProfileData();\r\n this.fetchUserWidgets();\r\n // console.log(\"Profile Data\", this.state.profileData);\r\n }\r\n componentDidUpdate() {\r\n // console.log(\"In Profile ComponentDidUpdate: \", this.state);\r\n }\r\n\r\n render() {\r\n const {\r\n controlChange,\r\n controlClick,\r\n controlGetFocus,\r\n controlLostFocus,\r\n setElement,\r\n handleCancel,\r\n submitProfile,\r\n submitData,\r\n setActiveTab,\r\n updateWidgetsData,\r\n state: {profileData, activeTab, widgetsData},\r\n props: {auth, onCancel, t},\r\n } = this;\r\n return (\r\n e.stopPropagation()} propStyle=\"modalDark\">\r\n
    \r\n {\r\n controlClick(event, name, value);\r\n onCancel();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name=\"btnXProfileCancel\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: \"buttonlabel\",\r\n control: `modalClose`,\r\n }}\r\n logo={{\r\n srcLogo: closeIcon,\r\n altLogo: \"\",\r\n classLogo: \"new-logo branding-image-filter\",\r\n }}\r\n showIcon={true}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {\r\n controlClick(event, name, value);\r\n setActiveTab(name);\r\n }}\r\n >\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n// export default AutoLogout(withRouter(Profile));\r\n\r\n// export default withRouter(Profile);\r\nexport default ProfileModal;\r\n// export default Profile;\r\n","import React from 'react';\r\nimport {Button} from 'core/controls';\r\n\r\nconst SharedConceptModalFooter = ({\r\n controlGetFocus,\r\n controlLostFocus,\r\n controlClick,\r\n setElement,\r\n onSelectOK,\r\n onSelectCancel,\r\n onSelectBack,\r\n btnOK,\r\n btnCancel,\r\n btnBack,\r\n modalIndex,\r\n modalName,\r\n totalPages,\r\n formData,\r\n isDisable,\r\n}) => {\r\n return (\r\n
    \r\n
    \r\n {\r\n controlClick(event, name, value);\r\n onSelectCancel();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name={btnCancel}\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttoncontrol bgPrimaryColor borderRadiusAll paddingMedWide marginNone buttonOutline`,\r\n }}\r\n />\r\n
    \r\n \r\n
    \r\n {\r\n controlClick(event, name, value);\r\n onSelectBack();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name={btnBack}\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttoncontrol bgPrimaryColor borderRadiusAll paddingMedWide marginNone buttonOutline`,\r\n }}\r\n disableButton={isDisable}\r\n />\r\n {\r\n controlClick(event, name, value);\r\n onSelectOK();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name={btnOK}\r\n refItem={setElement}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttoncontrol bgPrimaryColor borderRadiusAll paddingMedWide marginNone`,\r\n }}\r\n disableButton={formData[modalName]['numErrors'] > 0}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\nSharedConceptModalFooter.defaultProps = {\r\n isDisable: false,\r\n};\r\n\r\nexport default SharedConceptModalFooter;\r\n","import React, {Fragment, useEffect, useState} from 'react';\r\n// import {useSelector} from \"react-redux\";\r\nimport {Textbox, Radiobuttons} from 'core/controls';\r\nimport {FormStatus, FormValidator} from 'core/formValidation';\r\nimport ValidateForm from 'custom/common/utils/customFormValidation';\r\nimport {PERSONAL_INFO} from '../SharedOwnershipModal';\r\nimport {companyLogo, ProcompGreyLogo} from 'assets';\r\n\r\nconst BasicInfoModal = ({\r\n controlGetFocus,\r\n controlChange,\r\n controlLostFocus,\r\n setElement,\r\n elementItems,\r\n updateFormData,\r\n onLoad,\r\n formData,\r\n modalIndex,\r\n}) => {\r\n useEffect(() => {\r\n console.log(formData);\r\n onLoad(formData.personalInfo, elementItems, updateFormData);\r\n }, []);\r\n\r\n const submitData = () => {};\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n Let's start with some basic information\r\n

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default BasicInfoModal;\r\n","import React, {Fragment, useEffect, useState} from 'react';\r\n// import {useSelector} from \"react-redux\";\r\nimport {Textbox, Selectbox, Radiobuttons} from 'core/controls';\r\nimport ValidateForm from 'custom/common/utils/customFormValidation';\r\nimport {FormStatus, FormValidator} from 'core/formValidation';\r\nimport {PREMIUM_ALLOCATION} from '../SharedOwnershipModal';\r\nimport {companyLogo, corpMoneyLogo, execMoneyLogo, ProcompGreyLogo} from 'assets';\r\n\r\nconst PremiumAllocationModal = ({\r\n controlGetFocus,\r\n controlChange,\r\n controlLostFocus,\r\n setElement,\r\n elementItems,\r\n controlItems,\r\n updateFormData,\r\n onLoad,\r\n formData,\r\n modalIndex,\r\n}) => {\r\n // const [premiumAllocation, setPremiumAllocation] = useState(formData.premiumAllocation);\r\n\r\n const handleChange = (event, name, value) => {\r\n // setPremiumAllocation({...premiumAllocation, [name]: value});\r\n controlChange(event, name, value);\r\n };\r\n useEffect(() => {\r\n onLoad(formData.premiumAllocation, elementItems, updateFormData);\r\n }, []);\r\n const submitData = () => {};\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n THE SHARED OWNERSHIP AGREEMENT\r\n

    \r\n
    \r\n

    Premium Allocation

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Corporation

    \r\n
    \r\n \"corporateimage\"\r\n
    \r\n

    Pays portion over agreed Benefit Period consisting of:

    \r\n
      \r\n
    • Mortality charges
    • \r\n
    • Premium Taxes and
    • \r\n
    • Administration fees
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Executive

    \r\n
    \r\n \"executiveimage\"\r\n
    \r\n

    Pays the balance of:

    \r\n
      \r\n
    • The premium or
    • \r\n
    • \r\n If corporation pays, Executive incurs taxable benefit\r\n
    • \r\n
    • \r\n May take additional deposits to Account Value with after-tax dollars\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default PremiumAllocationModal;\r\n","import {companyLogo, procompMagentaLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal1 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n

    \r\n BEFORE GETTING STARTED\r\n

    \r\n
    \r\n

    \r\n Shared Ownership is a concept\r\n

    \r\n

    not a life insurance product.

    \r\n
    \r\n \r\n {/* PROCOMP */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n This concept must be implemented by way of a separate legal agreement prepared by, and\r\n on the advice of, qualified legal counsel for the parties involved. A Shared ownership\r\n arrangement is complex, technical and not without risk.\r\n

    \r\n
    \r\n
    \r\n

    \r\n The following material is for informational purposes only. This material is not\r\n intended to be, not should it be constructed as legal, tax or financial advice to the\r\n viewer. It should be only used as a guideline for the parties involved and their\r\n respective advisors. Competent independent legal and tax advice from qualified\r\n professionals is essential.\r\n

    \r\n

    \r\n While every effort has been made to ensure the accuracy of this information, errors\r\n and omissions are possible.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal1;\r\n","import {companyLogo, execLogo, ProcompGreyLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal2 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    UNDERSTANDING SHARED OWNERSHIP

    \r\n
    \r\n

    \r\n Who should consider a Shared Ownership arrangement?\r\n

    \r\n
    \r\n
    \r\n

    \r\n Owner or Key Person/Executive of a corporation who\r\n

    \r\n
    \r\n \"person\"\r\n
    \r\n
      \r\n
    • Is a high income earner
    • \r\n
    • \r\n May be eligible for large bonus or other taxable benefit\r\n
    • \r\n
    • Is seeking opportunities to minimize tax
    • \r\n
    • Has available after-tax income to shelter
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal2;\r\n","import {companyLogo, ProcompGreyLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal3 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    UNDERSTANDING SHARED OWNERSHIP

    \r\n
    \r\n

    \r\n Shared Ownership of a Universal Life Policy\r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n This concept is available to all Cost of Insurance options with Increasing Death\r\n Benefit\r\n

    \r\n

    \r\n Policy should be maximum-funded\r\n

    \r\n

    \r\n Premiums and the death benefit are split during expected term of agreement (Employer\r\n Benefit Period)\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal3;\r\n","import {blueExecLogo, arrowCurvedLogo, ProcompGreyLogo, purpleExecPlusCorpLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal5 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    HOW THE CONCEPT WORKS

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Executive owns

    \r\n \"ULBriefcase\"\r\n
    \r\n

    Universal Life Policy

    \r\n

    on Executive's Life

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"curveArrow\"\r\n \"curveArrow\"\r\n
    \r\n
    \r\n

    Shared Ownership Agreement entered

    \r\n
    \r\n
    \r\n
    \r\n

    Executive transfers policy to corporation

    \r\n \"JOBriefcase\"\r\n
    \r\n

    Joint Ownership of Policy

    \r\n
    \r\n
    Shared Premium
    \r\n
    Shared Benefit & Obligation
    \r\n
    Allocation of Death Benefit
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal5;\r\n","import {\r\n arrowLongCurvedLogo,\r\n arrowSmallLogo,\r\n arrowStraightLogo,\r\n blueExecLogo,\r\n companyLogo,\r\n ProcompGreyLogo,\r\n purpleExecCorpLogo,\r\n} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal6 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    HOW THE CONCEPT WORKS

    \r\n
    \r\n

    \r\n Ownership at Executive Retirement\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"arrowLongCurve\"\r\n \"RetireBrief\"\r\n \r\n

    Executive RETIRES at the end of the Benefit Period

    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n Corporation transfers it's interests in Policy back to Executive\r\n

    \r\n \"arrowStraight\"\r\n
    \r\n \"RetireBrief\"\r\n \r\n

    \r\n Executive Regains full ownership and benefits\r\n

    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default IntroModal6;\r\n","import {\r\n arrow45MoneyLogo,\r\n arrowStraightMoneyLogo,\r\n companyLogo,\r\n corpLogo,\r\n execLogo,\r\n ProcompGreyLogo,\r\n purpleExecCorpLogo,\r\n} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal7 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    HOW THE CONCEPT WORKS

    \r\n
    \r\n

    \r\n Death Benefit Rights - Pre-retirement\r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n

    Executive dies

    \r\n

    During Benefit Period

    \r\n \"RetireBrief\"\r\n

    \r\n Universal Life Policy\r\n

    \r\n
    \r\n
    \r\n \r\n \"arrow45Money\"\r\n
    \r\n

    Executive's Heirs

    \r\n

    (or Estate)

    \r\n
    \r\n
    \r\n
    \r\n \r\n

    Corporation

    \r\n
    \r\n \r\n
    \r\n
    \r\n \"RetireBrief\"\r\n

    \r\n Account Value LESS any Cost Recovery\r\n

    \r\n
    \r\n
    \r\n
    \r\n \"RetireBrief\"\r\n

    \r\n Amount of Insurance at Risk PLUS any Cost Recovery\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default IntroModal7;\r\n","import {\r\n arrow45MoneyLogo,\r\n arrowStraightLogo,\r\n companyLogo,\r\n execLogo,\r\n ProcompGreyLogo,\r\n purpleExecCorpLogo,\r\n} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal8 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    HOW THE CONCEPT WORKS

    \r\n
    \r\n

    \r\n Death Benefit Rights - Post-retirement\r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n

    Executive dies

    \r\n

    After Benefit Period

    \r\n \"RetireBrief\"\r\n

    \r\n Universal Life Policy\r\n

    \r\n
    \r\n
    \r\n
    \r\n \"arrow45Money\"\r\n
    \r\n

    Executive's Heirs

    \r\n

    (or Estate)

    \r\n
    \r\n
    \r\n
    \r\n \"arrowStraight\"\r\n

    Corporation has released interest

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"RetireBrief\"\r\n

    \r\n Full Death Benefit\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal8;\r\n","import {companyLogo, corpLogo, execLogo, gavelLogo, ProcompGreyLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal10 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n

    THE SHARED OWNERSHIP AGREEMENT

    \r\n
    \r\n
    \r\n
    \r\n \"ULBriefcase\"\r\n \"ULBriefcase\"\r\n \"ULBriefcase\"\r\n
    \r\n
    \r\n

    \r\n It is the responsibility of the Executive and the Corporation to engage their own{' '}\r\n \r\n knowledgeable legal and tax advisors\r\n {' '}\r\n to negotiate and document a Shared Ownership Agreement that is appropriate to their\r\n respective needs\r\n

    \r\n

    \r\n The insurer is not a party to the Agreement and is not bound by its terms\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal10;\r\n","import {companyLogo, ProcompGreyLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal11 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    THE SHARED OWNERSHIP AGREEMENT

    \r\n
    \r\n

    \r\n Main Issues to Negotiate\r\n

    \r\n
    \r\n
    \r\n
      \r\n
    • Initial transfer of ownership
    • \r\n
    • Rights of ownership
    • \r\n
    • Allocation of premiums
    • \r\n
    • Additional deposits or withdrawals
    • \r\n
    \r\n
      \r\n
    • Beneficiary designations by both parties
    • \r\n
    • Death benefit entitlments
    • \r\n
    • Consequences of Executive's retirement
    • \r\n
    • Termination of agreement
    • \r\n
    \r\n
      \r\n
    • Establishment of Employer Benefit Period Term of Agreement
    • \r\n
    • \r\n Cost Recovery to Corporation\r\n
        \r\n
      • Definition
      • \r\n
      • Rights and circumstances of cost recovery
      • \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal11;\r\n","import {companyLogo, execTimeLogo, ProcompGreyLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal14 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n

    TAXATION ISSUES

    \r\n
    \r\n
    \r\n
    \r\n \"ULBriefcase\"\r\n
    \r\n

    \r\n For Executives (Employee)\r\n

    \r\n

    during Benefit Period

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Care must be take to ensure a divison of premiums that is tax-effective\r\n

    \r\n

    \r\n If Corporation pays more than mortality charges, premium taxes & administrative fees\r\n portion of its premium, then these additional amounts will be taxable benefit to\r\n Executive\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal14;\r\n","import {companyLogo, execTimeLogo, ProcompGreyLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal15 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n

    TAXATION ISSUES

    \r\n
    \r\n
    \r\n
    \r\n \"ULBriefcase\"\r\n
    \r\n

    \r\n For Executives (Employee)\r\n

    \r\n

    \r\n at the end of Benefit Period when Corporation transfers its interests to Executive\r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Depends if there is any 'value' in the corporation's portion of the policy\r\n

    \r\n

    \r\n Caution: there may be 'value' if Executive is: Terminally ill or death is 'imminent'\r\n or Uninsurable\r\n

    \r\n

    *See CRA document IC#89-3

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal15;\r\n","import {companyLogo, ProcompGreyLogo, corpTimeLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal16 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n

    TAXATION ISSUES

    \r\n
    \r\n
    \r\n
    \r\n \"ULBriefcase\"\r\n
    \r\n

    \r\n For Corporation (Employer)\r\n

    \r\n

    \r\n at the end of Benefit Period when Corporation transfers its interests to Executive\r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Will depend if there is any 'value' in the Corporation's portion of the policy (i.e.\r\n Amount of Insurance at Risk)\r\n

    \r\n

    \r\n Typically there is no value, and no tax implications to Corporation\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal16;\r\n","import {companyLogo, ProcompGreyLogo} from 'assets';\r\nimport React from 'react';\r\n\r\nconst IntroModal16 = ({modalIndex, imgArray}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n Potential Pitfalls or Hurdles of Shared Ownership Concept\r\n

    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n The CRA has specified requirements regarding shared ownership arrangements, which\r\n should be reviewed prior to making a Shared Ownership agreement\r\n
    • \r\n
    • \r\n Singleness of contract must be maintained despite separation of components and\r\n beneficiary designations in the agreement\r\n
    • \r\n
    • Creditor protection may not be available
    • \r\n
    • General Anti-Avoidance Rules may apply
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default IntroModal16;\r\n","import React from 'react';\r\nimport IntroModal1 from './IntroModal1';\r\nimport IntroModal2 from './IntroModal2';\r\nimport IntroModal3 from './IntroModal3';\r\nimport IntroModal5 from './IntroModal5';\r\nimport IntroModal6 from './IntroModal6';\r\nimport IntroModal7 from './IntroModal7';\r\nimport IntroModal8 from './IntroModal8';\r\nimport IntroModal10 from './IntroModal10';\r\nimport IntroModal11 from './IntroModal11';\r\nimport IntroModal14 from './IntroModal14';\r\nimport IntroModal15 from './IntroModal15';\r\nimport IntroModal16 from './IntroModal16';\r\nimport IntroModal17 from './IntroModal17';\r\n\r\nconst ReadonlyModal = ({modalIndex, imgArray}) => {\r\n switch (modalIndex) {\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n case 5:\r\n return ;\r\n case 6:\r\n return ;\r\n case 7:\r\n return ;\r\n case 8:\r\n return ;\r\n case 10:\r\n return ;\r\n case 11:\r\n return ;\r\n case 14:\r\n return ;\r\n case 15:\r\n return ;\r\n case 16:\r\n return ;\r\n case 17:\r\n return ;\r\n default:\r\n break;\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ReadonlyModal;\r\n","import React, {useEffect, useState} from 'react';\r\nimport {Textbox, Checkbox, Selectbox} from 'core/controls';\r\nimport {FormStatus, FormValidator} from 'core/formValidation';\r\nimport ValidateForm from 'custom/common/utils/customFormValidation';\r\nimport {FUND_SELECTION} from '../SharedOwnershipModal';\r\nimport {companyLogo, ProcompGreyLogo} from 'assets';\r\n\r\nconst BeneficiaryDesignationsModal = ({\r\n controlGetFocus,\r\n controlChange,\r\n controlLostFocus,\r\n setElement,\r\n elementItems,\r\n updateFormData,\r\n onLoad,\r\n formData,\r\n modalIndex,\r\n t,\r\n}) => {\r\n useEffect(() => {\r\n onLoad(formData.beneficiaryDesignations, elementItems, updateFormData);\r\n }, []);\r\n const submitData = () => {};\r\n\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    How the concept Works

    \r\n
    \r\n

    \r\n Beneficiary Designations\r\n

    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n Corporation is usually named an irrevocable beneficiary of Amount of insurance\r\n at Risk\r\n
    • \r\n
    • \r\n Executive usually names spouse and/or as the beneficiary of the Account Value\r\n
    • \r\n
    • \r\n Designations set out in Shared Ownership Agreement and beneficiary designations\r\n filed with Insurer\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('title-Beneficiary')}\r\n {t('title-RelationshipToInsured')}\r\n {t('title-PercentShare')}{t('title-Irrevocable')}
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default BeneficiaryDesignationsModal;\r\n","import React, {useEffect, useState} from 'react';\r\nimport {Textbox, Checkbox, Radiobuttons, Selectbox} from 'core/controls';\r\nimport {FormStatus, FormValidator} from 'core/formValidation';\r\nimport ValidateForm from 'custom/common/utils/customFormValidation';\r\nimport {FUND_SELECTION} from '../SharedOwnershipModal';\r\nimport {companyLogo, ProcompGreyLogo} from 'assets';\r\n\r\nconst ProductSelectionModal = ({\r\n controlGetFocus,\r\n controlChange,\r\n controlLostFocus,\r\n setElement,\r\n elementItems,\r\n updateFormData,\r\n onLoad,\r\n formData,\r\n modalIndex,\r\n t,\r\n}) => {\r\n useEffect(() => {\r\n onLoad(formData.productSelection, elementItems, updateFormData);\r\n }, []);\r\n const submitData = () => {};\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n THE SHARED OWNERSHIP AGREEMENT\r\n

    \r\n
    \r\n

    Product Selection

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('msg-Fund')}{t('msg-InterestRate')}{t('msg-AllocationPercent')}
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ProductSelectionModal;\r\n","import React, {useState} from 'react';\r\nimport BasicInfoModal from './BasicInfoModal_';\r\nimport PremiumAllocationModal from './PremiumAllocationModal_';\r\nimport ReadonlyModal from './ReadonlyModal';\r\nimport BeneficiaryDesignationsModal from './BeneficiaryDesignationsModal_';\r\nimport ProductSelectionModal from './ProductSelectionModal_';\r\n\r\nconst ModalSelection = ({\r\n controlChange,\r\n controlClick,\r\n controlGetFocus,\r\n controlLostFocus,\r\n setElement,\r\n elementItems,\r\n controlItems,\r\n updateFormData,\r\n onLoad,\r\n formData,\r\n modalIndex,\r\n t,\r\n}) => {\r\n const [isVisited, setIsVisited] = useState(false);\r\n\r\n if (modalIndex === 4) {\r\n return (\r\n \r\n );\r\n }\r\n if (modalIndex === 9) {\r\n return (\r\n \r\n );\r\n }\r\n if (modalIndex === 12) {\r\n return (\r\n \r\n );\r\n }\r\n if (modalIndex === 13) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return ;\r\n};\r\n\r\nexport default ModalSelection;\r\n","import React, {Component} from 'react';\r\nimport { closeIcon } from \"assets\";\r\nimport {Button} from 'core/controls';\r\nimport {Modal, ModalTitle} from 'core/uicore';\r\nimport SharedConceptModalFooter from './ui/SharedConceptModalFooter';\r\nimport ModalSelection from './ui/ModalSelection';\r\n\r\nexport const FUND_SELECTION = 'fundSelection';\r\nexport const BENEFICIARY_DESIGNATIONS = 'beneficiaryDesignations';\r\nexport const PRODUCT_SELECTION = 'productSelection';\r\nexport const PERSONAL_INFO = 'personalInfo';\r\nexport const PREMIUM_ALLOCATION = 'premiumAllocation';\r\nexport const EMPLOYER_BENEFIT = 'employerBenefit';\r\nexport const READ_ONLY = 'readOnly';\r\nconst SLIDE_COUNT = 17;\r\n\r\nclass SharedOwnershipModal extends Component {\r\n state = {\r\n modalIndex: 1,\r\n pageCount: 1,\r\n currPage: 1,\r\n modalName: READ_ONLY,\r\n formData: {\r\n formName: 'sharedOwnershipConcept',\r\n readOnly: {\r\n numErrors: 0,\r\n },\r\n personalInfo: {\r\n formName: 'sharedOwnershipConcept',\r\n txtSharedInsuredName: 'Insured Name',\r\n txtSharedAge: '30',\r\n txtSharedRetirementAge: '65',\r\n rdoSharedSex: 'M',\r\n rdoSharedSmokeClass: 'S',\r\n txtCompanyName: 'Company Name',\r\n txtSharedEmployerPayPeriod: '35',\r\n txtSharedEmployerBenefitPeriod: '35',\r\n numErrors: 0,\r\n },\r\n beneficiaryDesignations: {\r\n formName: 'sharedOwnershipConcept',\r\n txtSharedBeneficiaryName1: 'Company Name',\r\n cboSharedRelationshipToInsured1: 'EM',\r\n txtSharedPercentShare1: 'NAAR',\r\n chkSharedIrrevocable1: true,\r\n txtSharedBeneficiaryName2: 'Name',\r\n cboSharedRelationshipToInsured2: 'SP',\r\n txtSharedPercentShare2: '100% of Fund',\r\n chkSharedIrrevocable2: false,\r\n txtSharedBeneficiaryName3: '',\r\n cboSharedRelationshipToInsured3: '',\r\n txtSharedPercentShare3: '',\r\n chkSharedIrrevocable3: false,\r\n txtSharedBeneficiaryName4: '',\r\n cboSharedRelationshipToInsured4: '',\r\n txtSharedPercentShare4: '',\r\n chkSharedIrrevocable4: false,\r\n txtSharedBeneficiaryName5: '',\r\n cboSharedRelationshipToInsured5: '',\r\n txtSharedPercentShare5: '',\r\n chkSharedIrrevocable5: false,\r\n numErrors: 0,\r\n },\r\n premiumAllocation: {\r\n formName: 'sharedOwnershipConcept',\r\n rdoSharedPaymentMode: '012',\r\n txtSharedPremiumAmount: '10000',\r\n numErrors: 0,\r\n },\r\n productSelection: {\r\n formName: 'sharedOwnershipConcept',\r\n txtSharedDeathBenefitAmount: '100000',\r\n rdoSharedCOIType: 'L',\r\n rdoSharedDeathBenefitType: 'LF',\r\n chkSharedFundSelection1: true,\r\n cboSharedFundSelection1: 'DI',\r\n txtSharedFundSelectionInterestRate1: '1.25',\r\n txtSharedFundSelectionAllocationPercent1: '100',\r\n chkSharedFundSelection2: false,\r\n cboSharedFundSelection2: 'CBF',\r\n txtSharedFundSelectionInterestRate2: '1.50',\r\n txtSharedFundSelectionAllocationPercent2: '0',\r\n chkSharedFundSelection3: false,\r\n cboSharedFundSelection3: 'CEFI',\r\n txtSharedFundSelectionInterestRate3: '5.95',\r\n txtSharedFundSelectionAllocationPercent3: '0',\r\n chkSharedFundSelection4: false,\r\n cboSharedFundSelection4: 'APEF',\r\n txtSharedFundSelectionInterestRate4: '4.15',\r\n txtSharedFundSelectionAllocationPercent4: '0',\r\n numErrors: 0,\r\n },\r\n },\r\n };\r\n //modalNames are for handling individual modal windows formData. Counter start from 1, so there is one extra ReadOnly at start\r\n modalNames = [\r\n READ_ONLY, //Unused 0 index\r\n READ_ONLY,\r\n READ_ONLY,\r\n READ_ONLY,\r\n PERSONAL_INFO, //4\r\n READ_ONLY,\r\n READ_ONLY,\r\n READ_ONLY,\r\n READ_ONLY,\r\n BENEFICIARY_DESIGNATIONS, //9\r\n READ_ONLY,\r\n READ_ONLY,\r\n PRODUCT_SELECTION, //12\r\n PREMIUM_ALLOCATION, //13\r\n READ_ONLY,\r\n READ_ONLY,\r\n READ_ONLY,\r\n READ_ONLY,\r\n ];\r\n // imgArray = [C21, C22, C23, C24, C25, C26, C27, C28, C29, C210, C211, C212, C213, C214, C215, C216, C217];\r\n handleBack = () => {\r\n this.setState((prevState) => ({\r\n modalIndex: prevState.modalIndex - 1,\r\n modalName: this.modalNames[prevState.modalIndex - 1],\r\n }));\r\n };\r\n handleNext = () => {\r\n if (this.state.modalIndex === SLIDE_COUNT) {\r\n this.handleFinish();\r\n } else {\r\n this.setState((prevState) => {\r\n return {\r\n modalIndex: prevState.modalIndex + 1,\r\n modalName: this.modalNames[prevState.modalIndex + 1],\r\n };\r\n });\r\n }\r\n };\r\n flattenData = (formData) => {\r\n let data = {\r\n formName: formData['formName'],\r\n ...formData[BENEFICIARY_DESIGNATIONS],\r\n ...formData[PRODUCT_SELECTION],\r\n ...formData[PREMIUM_ALLOCATION],\r\n ...formData[PERSONAL_INFO],\r\n };\r\n return data;\r\n };\r\n handleCancel = () => {\r\n this.props.onCancel(this.flattenData(this.state.formData));\r\n };\r\n handleFinish = () => {\r\n // this.props.OnCreateReport(this.formData);\r\n this.props.onFinish(this.flattenData(this.state.formData));\r\n };\r\n\r\n elementItems = {};\r\n updateModalFormData = (name, value) => {\r\n this.setState({\r\n formData: {\r\n ...this.state.formData,\r\n [this.state.modalName]: {...this.state.formData[this.state.modalName], [name]: value},\r\n },\r\n });\r\n // this.formData[this.state.modalName][name] = value;\r\n };\r\n setElement = (element) => {\r\n if (element !== null) {\r\n this.elementItems[element.name] = element;\r\n }\r\n };\r\n controlChange = async (event, name, value) => {\r\n // await this.setState({modalName});\r\n //event.persist();\r\n await this.updateModalFormData(name, value);\r\n // this.props.globalChange(event, this.flattenData(this.state.formData), this.elementItems, this.updateModalFormData);\r\n //Below is right way to call globalChange, because it runs business rules in customEvent which should directly apply to formData, and not on flattened data\r\n this.props.globalChange(\r\n event,\r\n this.state.formData[this.state.modalName],\r\n this.elementItems,\r\n this.updateModalFormData\r\n );\r\n // this.formData[this.state.modalName] = {...this.formData[this.state.modalName]};\r\n // this.formData = {...this.formData};\r\n };\r\n controlClick = (event, name, value) => {\r\n this.props.globalClick(\r\n name,\r\n this.flattenData(this.state.formData),\r\n this.elementItems,\r\n this.updateModalFormData\r\n );\r\n };\r\n controlGetFocus = (event, name, value) => {\r\n this.props.globalGetFocus(\r\n event,\r\n this.state.formData,\r\n this.elementItems,\r\n this.updateModalFormData\r\n );\r\n };\r\n controlLostFocus = (event, name, value) => {\r\n this.props.globalLostFocus(\r\n event,\r\n this.state.formData,\r\n this.elementItems,\r\n this.updateModalFormData\r\n );\r\n };\r\n submitData = () => {};\r\n setBtnNext = () => {\r\n if (this.state.modalIndex === SLIDE_COUNT) {\r\n return 'btnSharedOwnershipFinish';\r\n }\r\n return 'btnSharedOwnershipNext';\r\n };\r\n loadSetupItems = async () => {\r\n // await this.props.loadInterfaceSetupItems();\r\n // this.props.controlItems['cboProduct'].useOptions = true;\r\n // this.props.controlItems['cboProduct'].optionItems = this.buildProductOptionItems(this.props.interfaceSetupArray);\r\n if (this.props.interfaceSetupArray && this.props.interfaceSetupArray.length > 0) {\r\n this.props.loadInterfaceSetupItems(602);\r\n } else {\r\n console.log('issue check');\r\n await this.sleep(3);\r\n this.props.loadInterfaceSetupItems(602);\r\n }\r\n };\r\n sleep(seconds) {\r\n return new Promise((resolve, reject) => setTimeout(resolve, seconds * 1000));\r\n }\r\n componentDidMount() {\r\n this.loadSetupItems();\r\n }\r\n render() {\r\n const {\r\n controlChange,\r\n controlClick,\r\n controlGetFocus,\r\n controlLostFocus,\r\n setElement,\r\n elementItems,\r\n updateModalFormData,\r\n handleCancel,\r\n handleBack,\r\n handleNext,\r\n submitData,\r\n setBtnNext,\r\n state: {modalIndex, formData, modalName},\r\n props: {t, onLoad, controlItems},\r\n } = this;\r\n return (\r\n e.stopPropagation()} propStyle=\"modalDark\">\r\n
    \r\n {\r\n controlClick(event, name, value);\r\n handleCancel();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name=\"btnXSharedOwnershipCancel\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: \"buttonlabel\",\r\n control: `modalClose`,\r\n }}\r\n logo={{\r\n srcLogo: closeIcon,\r\n altLogo: \"\",\r\n classLogo: \"new-logo branding-image-filter\",\r\n }}\r\n showIcon={true}\r\n />\r\n\r\n {/* */}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default SharedOwnershipModal;\r\n","import React, {Fragment, useState, useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {aboutLogo, userLogo, switchLogo, signOffLogo} from 'assets';\r\nimport {ButtonBar, Logo} from 'core/uicore';\r\nimport {Button} from 'core/controls';\r\nimport {useRouter, usePCTranslation} from 'core/hooks';\r\nimport {logout} from 'core/redux/actions';\r\nimport {updateReportOptionsProfile} from 'custom/newbiz/redux/actions';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport SwitchProductModal from './SwitchProductModal';\r\nimport TabbedHeader from './TabbedHeader';\r\nimport ProfileModal from './ProfileModal';\r\nimport SharedOwnershipModal from 'custom/sharedOwnership/SharedOwnershipModal';\r\nimport AboutModal from './AboutModal';\r\nimport {\r\n NEW_BUSINESS,\r\n INFORCE,\r\n SHARED_OWNERSHIP,\r\n SWITCH_PRODUCTS,\r\n PROFILE,\r\n ABOUT,\r\n NONE,\r\n ADMIN,\r\n} from '../utils/constants';\r\nimport {useMsal} from '@azure/msal-react';\r\n\r\nconst PageHeader = ({tabHeaderSticky, ...rest}) => {\r\n const {push, pathname} = useRouter();\r\n const dispatch = useDispatch();\r\n const {t} = usePCTranslation();\r\n const {instance, accounts} = useMsal();\r\n\r\n const {user, routes, storeFormData} = useSelector((state) => ({\r\n user: state.auth.user,\r\n storeFormData: state.formData['newBusiness'],\r\n routes: state.routes,\r\n }));\r\n const [isProfileModal, setIsProfileModal] = useState(false);\r\n const [isAboutModal, setIsAboutModal] = useState(false);\r\n const [isSharedOwnershipModal, setIsSharedOwnershipModal] = useState(false);\r\n const [isSwitchProductModalOpen, setIsSwitchProductModalOpen] = useState(false);\r\n const [active, setActive] = useState(NONE);\r\n const [pageheaderData, setPageheaderData] = useState({});\r\n\r\n useEffect(() => {\r\n let headerData = {...pageheaderData};\r\n if (pathname) {\r\n let appName = pathname.split('/')[pathname.split('/').length - 1].toLowerCase();\r\n headerData['formName'] = appName;\r\n setPageheaderData(headerData);\r\n }\r\n }, [pathname]);\r\n\r\n const elementItems = {};\r\n const setElement = (element) => {\r\n if (element !== null) {\r\n elementItems[element.name] = element;\r\n }\r\n };\r\n const updatePageheaderData = (name, value) => {\r\n let pageHeader = {...pageheaderData};\r\n pageHeader[name] = value;\r\n setPageheaderData(pageHeader);\r\n };\r\n const controlClick = (event, name, value) => {\r\n event.persist();\r\n rest.globalClick(name, pageheaderData, elementItems, updatePageheaderData);\r\n };\r\n\r\n const controlLostFocus = (event, name, value) => {\r\n rest.globalLostFocus(event, pageheaderData, elementItems, updatePageheaderData);\r\n };\r\n const controlGetFocus = (event, name, value) => {\r\n rest.globalGetFocus(event, pageheaderData, elementItems, updatePageheaderData);\r\n };\r\n\r\n /**\r\n * Example for below line of code:\r\n * location.pathname -> /inforce/alphalookup\r\n * page -> inforce\r\n * if invalid page, redirect to login, login redirects user to default app if logged in\r\n */\r\n let pathArray = pathname.split('/');\r\n const page = pathArray[1].toLowerCase();\r\n\r\n const logOff = async () => {\r\n const tokenMethod = sessionStorage.getItem('tokenMethod');\r\n if (tokenMethod === 'AD') {\r\n dispatch(logout());\r\n try {\r\n await instance.logoutRedirect({\r\n account: accounts[0],\r\n // mainWindowRedirectUri: 'http://localhost:44376/login',\r\n postLogoutRedirectUri: 'https://localhost:5001/',\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n // dispatch(logout());\r\n }\r\n } else {\r\n dispatch(logout());\r\n push('/login');\r\n }\r\n };\r\n\r\n const handleClick = async (event, name, value) => {\r\n controlClick(event, name, value);\r\n switch (name) {\r\n case 'btnSwitchProducts':\r\n setIsSwitchProductModalOpen(!isSwitchProductModalOpen);\r\n setActive(SWITCH_PRODUCTS);\r\n break;\r\n case 'btnProfile':\r\n setActive(PROFILE);\r\n //onAbout(); // About modal window\r\n setIsProfileModal(true);\r\n // if (!isProfile) {\r\n // controlClick(event, name, value);\r\n // // setActivePage(\"profile\");\r\n // push(\"/profile\");\r\n // }\r\n break;\r\n case 'btnLogout':\r\n if (page === NEW_BUSINESS && !pathArray[2] && storeFormData) {\r\n await dispatch(updateReportOptionsProfile(storeFormData));\r\n }\r\n logOff();\r\n document.documentElement.classList.remove(\r\n ...document.documentElement.classList\r\n );\r\n break;\r\n case 'btnAbout':\r\n setActive(ABOUT);\r\n setIsAboutModal(true);\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const handleSelectProduct = (product) => {\r\n setIsSwitchProductModalOpen(!isSwitchProductModalOpen);\r\n if (page === NEW_BUSINESS && product === SHARED_OWNERSHIP) {\r\n setIsSharedOwnershipModal(true);\r\n } else if (page !== product) {\r\n // push(`/${prod}`);\r\n push({pathname: `/${product}`, state: {from: SHARED_OWNERSHIP}}); // Why from = sharedOwnership?\r\n }\r\n setActive(NONE);\r\n };\r\n const handleSwitchProductCancel = () => {\r\n setIsSwitchProductModalOpen(!isSwitchProductModalOpen);\r\n setActive(NONE);\r\n };\r\n\r\n const handleCancelAbout = () => {\r\n setIsAboutModal(false);\r\n setActive(NONE);\r\n };\r\n\r\n const handleCancelProfile = () => {\r\n setIsProfileModal(false);\r\n setActive(NONE);\r\n };\r\n const handleSaveProfile = () => {\r\n setIsProfileModal(false);\r\n setActive(NONE);\r\n };\r\n const handleCancelSharedOwnership = (formData) => {\r\n rest.updateIllusForm(formData, false);\r\n setIsSharedOwnershipModal(false);\r\n setActive(NONE);\r\n };\r\n const handleFinishSharedOwnership = (formData) => {\r\n rest.updateIllusForm(formData, true);\r\n setIsSharedOwnershipModal(false);\r\n setActive(NONE);\r\n };\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {isSwitchProductModalOpen && (\r\n \r\n )}\r\n {isProfileModal && (\r\n \r\n )}\r\n {isSharedOwnershipModal && (\r\n \r\n )}\r\n {isAboutModal && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default PageHeader;\r\n","import React, {Fragment, useState, useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {aboutLogo, userLogo, threedotsLogo, signOffLogo, switchLogo, closeIcon} from 'assets';\r\nimport {ButtonBar, Modal, Logo} from 'core/uicore';\r\nimport {Button} from 'core/controls';\r\nimport {useRouter, usePCTranslation} from 'core/hooks';\r\nimport {logout} from 'core/redux/actions';\r\nimport {updateReportOptionsProfile} from 'custom/newbiz/redux/actions';\r\nimport {STYLES} from 'core/constants/uiConstants';\r\nimport SwitchProductModal from './SwitchProductModal';\r\nimport ProfileModal from './ProfileModal';\r\nimport SharedOwnershipModal from 'custom/sharedOwnership/SharedOwnershipModal';\r\nimport {\r\n NEW_BUSINESS,\r\n INFORCE,\r\n SHARED_OWNERSHIP,\r\n SWITCH_PRODUCTS,\r\n PROFILE,\r\n ABOUT,\r\n NONE,\r\n} from '../utils/constants';\r\nimport AboutModal from './AboutModal';\r\nimport {useMsal} from '@azure/msal-react';\r\n\r\nconst PageHeaderM = ({...rest}) => {\r\n const {push, pathname, location} = useRouter();\r\n const dispatch = useDispatch();\r\n const {t} = usePCTranslation();\r\n const {instance, accounts} = useMsal();\r\n\r\n const {user, routes, storeFormData} = useSelector((state) => ({\r\n user: state.auth.user,\r\n storeFormData: state.formData['newBusiness'],\r\n routes: state.routes,\r\n }));\r\n const [isProfileModal, setIsProfileModal] = useState(false);\r\n const [isAboutModal, setIsAboutModal] = useState(false);\r\n const [isSharedOwnershipModal, setIsSharedOwnershipModal] = useState(false);\r\n const [isSwitchProductModalOpen, setIsSwitchProductModalOpen] = useState(false);\r\n const [isHeaderModal, setIsHeaderModal] = useState(false);\r\n const [pageheaderData, setPageheaderData] = useState({});\r\n\r\n useEffect(() => {\r\n let headerData = {...pageheaderData};\r\n if (pathname) {\r\n let appName = pathname.split('/')[pathname.split('/').length - 1].toLowerCase();\r\n headerData['formName'] = appName;\r\n setPageheaderData(headerData);\r\n }\r\n }, [pathname]);\r\n\r\n const elementItems = {};\r\n const setElement = (element) => {\r\n if (element !== null) {\r\n elementItems[element.name] = element;\r\n }\r\n };\r\n const updatePageheaderData = (name, value) => {\r\n let pageHeader = {...pageheaderData};\r\n pageHeader[name] = value;\r\n setPageheaderData(pageHeader);\r\n };\r\n const controlClick = (event, name, value) => {\r\n event.persist();\r\n rest.globalClick(name, pageheaderData, elementItems, updatePageheaderData);\r\n };\r\n\r\n const controlLostFocus = (event, name, value) => {\r\n rest.globalLostFocus(event, pageheaderData, elementItems, updatePageheaderData);\r\n };\r\n const controlGetFocus = (event, name, value) => {\r\n rest.globalGetFocus(event, pageheaderData, elementItems, updatePageheaderData);\r\n };\r\n\r\n /**\r\n * Example for below line of code:\r\n * location.pathname -> /inforce/alphalookup\r\n * page -> inforce\r\n * if invalid page, redirect to login, login redirects user to default app if logged in\r\n */\r\n let pathArray = pathname.split('/');\r\n const page = pathArray[1].toLowerCase();\r\n\r\n const handleClickRoute = (event, name, value, route) => {\r\n const tempArr = location.pathname.split('/');\r\n if (route.subModule.toLowerCase() !== tempArr[tempArr.length - 1].toLowerCase()) {\r\n controlClick(event, name, value);\r\n push(route.paths[0]);\r\n }\r\n };\r\n const isActive = (route) => {\r\n const tempArr = location.pathname.split('/');\r\n if (route.subModule.toLowerCase() !== tempArr[tempArr.length - 1].toLowerCase()) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n const logOff = async () => {\r\n const tokenMethod = sessionStorage.getItem('tokenMethod');\r\n if (tokenMethod === 'AD') {\r\n dispatch(logout());\r\n try {\r\n await instance.logoutRedirect({\r\n account: accounts[0],\r\n // mainWindowRedirectUri: 'http://localhost:44376/login',\r\n postLogoutRedirectUri: 'https://localhost:5001/',\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n // dispatch(logout());\r\n }\r\n } else {\r\n dispatch(logout());\r\n push('/login');\r\n }\r\n };\r\n\r\n const handleClick = async (event, name, value) => {\r\n controlClick(event, name, value);\r\n switch (name) {\r\n case 'btnSwitchProducts':\r\n setIsSwitchProductModalOpen(!isSwitchProductModalOpen);\r\n break;\r\n case 'btnProfile':\r\n //onAbout(); // About modal window\r\n setIsProfileModal(true);\r\n break;\r\n case 'btnLogout':\r\n if (page === NEW_BUSINESS && !pathArray[2] && storeFormData) {\r\n await dispatch(updateReportOptionsProfile(storeFormData));\r\n }\r\n logOff();\r\n break;\r\n case 'btnAbout':\r\n setIsAboutModal(true);\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const handleSelectProduct = (product) => {\r\n setIsSwitchProductModalOpen(!isSwitchProductModalOpen);\r\n if (page === NEW_BUSINESS && product === SHARED_OWNERSHIP) {\r\n setIsSharedOwnershipModal(true);\r\n } else if (page !== product) {\r\n push(`/${product}`);\r\n }\r\n handleCancelPageHeaderModal();\r\n };\r\n const handleSwitchProductCancel = () => {\r\n setIsSwitchProductModalOpen(!isSwitchProductModalOpen);\r\n };\r\n\r\n const handleCancelAbout = () => {\r\n setIsAboutModal(false);\r\n };\r\n\r\n const handleCancelProfile = () => {\r\n setIsProfileModal(false);\r\n };\r\n const handleSaveProfile = () => {\r\n setIsProfileModal(false);\r\n };\r\n const handleCancelSharedOwnership = (formData) => {\r\n rest.updateIllustrationForm(formData, false);\r\n setIsSharedOwnershipModal(false);\r\n };\r\n const handleFinishSharedOwnership = (formData) => {\r\n rest.updateIllustrationForm(formData, true);\r\n setIsSharedOwnershipModal(false);\r\n };\r\n const handlePageHeaderModal = () => {\r\n setIsHeaderModal(true);\r\n };\r\n const handleCancelPageHeaderModal = () => {\r\n setIsHeaderModal(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t(routes[page][0].displayName)}\r\n \r\n \r\n {\r\n controlClick(event, name, value);\r\n handlePageHeaderModal();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name=\"btn3DotsHeader\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: \"buttonlabel\",\r\n control: `buttoncontrol borderRadiusAll bgNone paddingNone`,\r\n }}\r\n showIcon={true}\r\n logo={{\r\n srcLogo: threedotsLogo,\r\n altLogo: \"\",\r\n classLogo: \"3dots-logo\",\r\n }}\r\n />\r\n\r\n
    \r\n {routes[page].map((route) => {\r\n return (\r\n \r\n \r\n handleClickRoute(event, name, value, route)\r\n }\r\n lostfocusCallback={controlLostFocus}\r\n //stateData={storeFormData}\r\n name={route.button}\r\n refItem={setElement}\r\n propStyle={{\r\n label: \"buttonlabel\",\r\n control: \"buttoncontrol buttonHdr\",\r\n }}\r\n />\r\n {/* */}\r\n
    \r\n );\r\n })}\r\n \r\n \r\n\r\n {isHeaderModal && (\r\n e.stopPropagation()} propStyle=\"modalDark\">\r\n
    \r\n {\r\n controlClick(event, name, value);\r\n handleCancelPageHeaderModal();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name=\"btnXProfileMCancel\"\r\n refItem={setElement}\r\n propStyle={{\r\n label: \"buttonlabel\",\r\n control: `modalClose bgNone`,\r\n }}\r\n logo={{\r\n srcLogo: closeIcon,\r\n altLogo: \"\",\r\n classLogo: \"new-logo branding-image-filter\",\r\n }}\r\n showIcon={true}\r\n />\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n {isSwitchProductModalOpen && (\r\n \r\n )}\r\n {isProfileModal && (\r\n \r\n )}\r\n {isSharedOwnershipModal && (\r\n \r\n )}\r\n {isAboutModal && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default PageHeaderM;\r\n","import React from 'react';\r\nimport PageHeader from './PageHeader';\r\nimport PageHeaderM from './PageHeaderM';\r\n\r\nconst Header = ({...props}) => {\r\n // console.log(props);\r\n return (\r\n
    \r\n {props.screenWidth > 825 ? : }\r\n
    \r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, {useState} from 'react';\r\nimport {usePCTranslation} from 'core/hooks';\r\nimport {Modal, QuestionModalFooter, ModalTitle} from 'core/uicore';\r\nimport {Checkbox} from 'core/controls';\r\n\r\nconst WelcomeModal = ({\r\n globalChange,\r\n globalClick,\r\n globalGetFocus,\r\n onWelcomeModalClose,\r\n globalLostFocus,\r\n updateUserProfileField,\r\n auth,\r\n}) => {\r\n const [formData, setFormData] = useState({\r\n chkWelcomeMessageRepeat: false,\r\n btnWelcomeOK: '',\r\n });\r\n const {t} = usePCTranslation();\r\n const updateWelcomeModalFormData = async (name, value) => {\r\n let data = {...formData};\r\n data[name] = value;\r\n setFormData(data);\r\n };\r\n const elementItems = {};\r\n const setElement = (element) => {\r\n if (element !== null) {\r\n elementItems[element.name] = element;\r\n }\r\n };\r\n const controlChange = async (event, name, value) => {\r\n event.persist();\r\n await updateWelcomeModalFormData(name, value);\r\n // let data = {...formData};\r\n // data[name] = value;\r\n globalChange(event, formData, elementItems, updateWelcomeModalFormData);\r\n };\r\n const controlClick = (event, name, value) => {\r\n event.persist();\r\n event.preventDefault();\r\n globalClick(name, formData, elementItems, updateWelcomeModalFormData);\r\n };\r\n const controlGetFocus = (event, name, value) => {\r\n globalGetFocus(event, formData, elementItems, updateWelcomeModalFormData);\r\n };\r\n const controlLostFocus = (event, name, value) => {\r\n globalLostFocus(event, formData, elementItems, updateWelcomeModalFormData);\r\n };\r\n const handleFinish = () => {\r\n if (!formData['chkWelcomeMessageRepeat']) {\r\n updateUserProfileField('isFirstRun', false);\r\n }\r\n onWelcomeModalClose();\r\n };\r\n return (\r\n e.stopPropagation()} propStyle=\"modalDark\">\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    {`${t('msg-WelcomeMessage1')} ${auth?.user?.firstName}!!!`}

    \r\n

    {t('msg-WelcomeMessage2')}

    \r\n \r\n {}}\r\n btnCancel={''}\r\n btnOK={'btnWelcomeOK'}\r\n isInfo={true}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default WelcomeModal;\r\n","export const biReportsFormData = {\r\n formName: \"dataReports\",\r\n CurrentField: \"\",\r\n reportNumber: 0,\r\n chkStoreInExcel: false,\r\n dtBIReportsStartDate: new Date(2022, 1, 1),\r\n dtBIReportsEndDate: new Date(2022, 12, 31),\r\n};\r\n\r\nexport const ReportGroups = {\r\n PROQUOTE_REPORTS: 0,\r\n ILLUSTRATION_REPORTS: 1,\r\n NEWBUSINESS_REPORTS: 2,\r\n ADMIN_REPORTS: 3,\r\n};\r\n\r\nexport const ReportGroupsName = [\r\n {\r\n name: \"PROQUOTE REPORTS\",\r\n permission: \"isProQuote\",\r\n reportAPIPath: \"/api/BI/BIProQuoteReport\",\r\n },\r\n {\r\n name: \"ILLUSTRATION REPORTS\",\r\n permission: \"isNewBusiness\",\r\n reportAPIPath: \"/api/BI/BINewBizReport\",\r\n },\r\n {\r\n name: \"INFORCE REPORTS\",\r\n permission: \"isInforce\",\r\n reportAPIPath: \"/api/BI/BIInforceReport\",\r\n },\r\n {\r\n name: \"ADMIN REPORTS\",\r\n permission: \"isAdmin\",\r\n reportAPIPath: \"/api/BI/BIAdminReport\",\r\n },\r\n];\r\n\r\nconst PROQUOTE_REPORT_LIST = {\r\n MAXIMUM_STEPS_PER_USER: 1,\r\n FLOWS_FINISHED_PER_USER: 2,\r\n USERS_LEAVE_AT_ABOUT_YOU: 3,\r\n BACK_CLICKS_COUNT_PER_USER: 4,\r\n PROGRESSION_OF_FLOW: 5,\r\n PROGRESSION_OF_FLOW_WITH_TIME_PER_PAGE: 6,\r\n COUNT_OF_START_OVERS_PER_USER: 7,\r\n COUNT_OF_PRODUCTS_RUN: 8,\r\n SUMMARY_OF_PRODUCTS_RUN: 9,\r\n COUNT_OF_LINKS_CLICKED: 10,\r\n COUNT_OF_LINKs_CLICKED_PER_USER: 11,\r\n COUNT_OF_PROCOMP_LINKS_CLICKED: 12,\r\n COUNT_OF_PROCOMP_LINKS_CLICKED_PER_USER: 13,\r\n};\r\n\r\nconst ILLUSTRATION_LIST = {\r\n NBIllustrationByProductType: 1,\r\n Top10AgentsByIllustration: 2,\r\n IncomePayoutImpact: 3,\r\n BenefitsIllustrated: 4,\r\n};\r\n\r\nconst INFORCE_LIST = {\r\n InforceIllustrationByProductType: 1,\r\n InforcePoliciesSoldByProductType: 2,\r\n Top10AgentsByLifePoliciesSold: 3,\r\n InforceIllustrationByProductName: 4,\r\n InforcePoliciesSoldByProductName: 5,\r\n InforceDataReportSummary: 6,\r\n};\r\n\r\nconst ADMIN_LIST = {\r\n BIDataReportSummary: 1,\r\n};\r\n\r\nexport const buildBICardList = () => {\r\n const ProquoteReportsList = [\r\n {\r\n key: PROQUOTE_REPORT_LIST.MAXIMUM_STEPS_PER_USER,\r\n value: \"Maximum Steps per User\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.FLOWS_FINISHED_PER_USER,\r\n value: \"Flows finished per User\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.USERS_LEAVE_AT_ABOUT_YOU,\r\n value: \"Users that stop at About You\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.BACK_CLICKS_COUNT_PER_USER,\r\n value: \"Count of Back clicks per User\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.PROGRESSION_OF_FLOW,\r\n value: \"Progression of Flow\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.PROGRESSION_OF_FLOW_WITH_TIME_PER_PAGE,\r\n value: \"Progression of Flow with Time per Page\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.COUNT_OF_START_OVERS_PER_USER,\r\n value: \"Count of Start overs per User\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.COUNT_OF_PRODUCTS_RUN,\r\n value: \"Count of Products Run\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.SUMMARY_OF_PRODUCTS_RUN,\r\n value: \"Summary of Products Run\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.COUNT_OF_LINKS_CLICKED,\r\n value: \"Count of Links clicked\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.COUNT_OF_LINKs_CLICKED_PER_USER,\r\n value: \"Count of Links clicked per User\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.COUNT_OF_PROCOMP_LINKS_CLICKED,\r\n value: \"Count of Procomp links clicked\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.COUNT_OF_PROCOMP_LINKS_CLICKED_PER_USER,\r\n value: \"Count of Procomp links clicked per User\",\r\n },\r\n \r\n ];\r\n\r\n const illustrationList = [\r\n {\r\n key: ILLUSTRATION_LIST.NBIllustrationByProductType,\r\n value: \"New Business Illustrations By Product Type\",\r\n },\r\n {\r\n key: ILLUSTRATION_LIST.Top10AgentsByIllustration,\r\n value: \"Top 10 Agents By Illustration\",\r\n },\r\n {\r\n key: ILLUSTRATION_LIST.IncomePayoutImpact,\r\n value: \"Income Payout Impact\",\r\n },\r\n {\r\n key: ILLUSTRATION_LIST.BenefitsIllustrated,\r\n value: \"Benefits Illustrated\",\r\n },\r\n ];\r\n\r\n const inforceList = [\r\n {\r\n key: INFORCE_LIST.InforceIllustrationByProductType,\r\n value: \"Inforce Illustrations By Product Type\",\r\n },\r\n {\r\n key: INFORCE_LIST.InforcePoliciesSoldByProductType,\r\n value: \"Inforce Policies Sold By Product Type\",\r\n },\r\n {\r\n key: INFORCE_LIST.Top10AgentsByLifePoliciesSold,\r\n value: \"Top 10 Agents By Life Policies Sold\",\r\n },\r\n {\r\n key: INFORCE_LIST.InforceIllustrationByProductName,\r\n value: \"Inforce Illustrations By Product Name\",\r\n },\r\n {\r\n key: INFORCE_LIST.InforcePoliciesSoldByProductName,\r\n value: \"Inforce Policies Sold by Product Name\",\r\n },\r\n {\r\n key: INFORCE_LIST.InforceDataReportSummary,\r\n value: \"Inforce Data Reports Summary\",\r\n },\r\n ];\r\n\r\n const adminList = [\r\n {\r\n key: ADMIN_LIST.BIDataReportSummary,\r\n value: \"BI Data Reports Summary\",\r\n },\r\n ];\r\n\r\n return [ProquoteReportsList, illustrationList, inforceList, adminList];\r\n};\r\n","import React from 'react';\r\nimport {buildBICardList, ReportGroupsName} from '../utils/data';\r\nimport {useSelector} from 'react-redux';\r\n\r\nconst queryList = buildBICardList();\r\nconst QueryListDisplay = ({onClick: handleQueryClick, t}) => {\r\n const {user} = useSelector((state) => ({\r\n user: state.auth.user,\r\n }));\r\n\r\n return (\r\n
    \r\n {queryList.map((card, cardIndex) => {\r\n if((!user?.permissions[ReportGroupsName[cardIndex]?.permission].isActive || !user?.permissions[ReportGroupsName[cardIndex]?.permission].isDisplayed) && !user?.system[ReportGroupsName[cardIndex]]){\r\n return \r\n }\r\n return (\r\n
    \r\n
    {t(ReportGroupsName[cardIndex]?.name)}
    \r\n {card.map((cardItem) => {\r\n return (\r\n \r\n handleQueryClick(\r\n e,\r\n cardItem,\r\n ReportGroupsName[cardIndex].reportAPIPath\r\n )\r\n }\r\n >\r\n {cardItem.value}\r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default QueryListDisplay;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Modal, Spinner, Alert } from 'core/uicore';\r\nimport { addScalarItem } from 'core/report/reportUtils';\r\nimport { ScalarTypes } from 'core/constants/reportConstants';\r\nimport { ReportBuilder } from 'core/report/buildOutput';\r\nimport { buildReportSettings } from 'custom/inforce/report/buildReportFunctions';\r\nimport {\r\n postBIReportsData,\r\n exportDownload,\r\n} from \"custom/common/api/postReportWebServices\";\r\n// import {buildAgentName} from '../utils/functions';\r\nimport QueryListDisplay from \"./QueryListDisplay\";\r\nimport { biReportsFormData } from \"../utils/data\";\r\nimport { Checkbox, Datebox } from \"core/controls\";\r\n\r\nclass BIReports extends Component {\r\n state = {\r\n isLoadingReport: false,\r\n formData: biReportsFormData,\r\n };\r\n elementItems = {};\r\n updatBIReportFormData = (name, value) => {\r\n this.setState({\r\n formData: { ...this.state.formData, [name]: value },\r\n });\r\n };\r\n\r\n updateBIReportFormDataWithMultipleFields = (fields, values) => {\r\n const formData = { ...this.state.formData };\r\n\r\n fields.forEach((field, idx) => {\r\n formData[field] = values[idx];\r\n });\r\n this.setState({ formData });\r\n };\r\n\r\n setElement = (element) => {\r\n if (element !== null) {\r\n this.elementItems[element.name] = element;\r\n }\r\n };\r\n componentDidMount() {\r\n const userFormData = this.props.auth?.user?.formData;\r\n let startDate = new Date();\r\n let endDate = new Date();\r\n\r\n if (userFormData?.[\"dtBIReportsStartDate\"]) {\r\n startDate = new Date(userFormData[\"dtBIReportsStartDate\"]);\r\n } else {\r\n startDate.setMonth(0);\r\n startDate.setDate(1);\r\n }\r\n\r\n if (userFormData?.[\"dtBIReportsEndDate\"]) {\r\n endDate = new Date(userFormData[\"dtBIReportsEndDate\"]);\r\n }\r\n this.updateBIReportFormDataWithMultipleFields(\r\n [\"dtBIReportsStartDate\", \"dtBIReportsEndDate\"],\r\n [startDate, endDate]\r\n );\r\n }\r\n\r\n controlChange = async (event, name, value) => {\r\n event.persist();\r\n await this.updatBIReportFormData(name, value);\r\n if (name === \"dtBIReportsStartDate\" || name === \"dtBIReportsEndDate\") {\r\n const data = {\r\n [name]: value,\r\n };\r\n await this.props.updateBIOptionsProfile(data);\r\n }\r\n this.props.globalChange(\r\n event,\r\n this.state.formData,\r\n this.elementItems,\r\n this.updatBIReportFormData\r\n );\r\n };\r\n\r\n controlClick = (event, name, value) => {\r\n event.persist();\r\n event.preventDefault();\r\n this.props.globalClick(\r\n name,\r\n this.state.formData,\r\n this.elementItems,\r\n this.updatBIReportFormData\r\n );\r\n };\r\n\r\n controlGetFocus = (event, name, value) => {\r\n this.props.globalGetFocus(\r\n event,\r\n this.state.formData,\r\n this.elementItems,\r\n this.updatBIReportFormData\r\n );\r\n };\r\n\r\n controlLostFocus = (event, name, value) => {\r\n this.props.globalLostFocus(\r\n event,\r\n this.state.formData,\r\n this.elementItems,\r\n this.updatBIReportFormData\r\n );\r\n };\r\n\r\n handleCreateReport = async ({ reportNumber, reportName, reportAPIPath }) => {\r\n this.setState({ isLoadingReport: true });\r\n\r\n let reportInputItems = [];\r\n reportInputItems.push(\r\n addScalarItem(\r\n \"PQWizard_StartDate\",\r\n this.state.formData[\"dtBIReportsStartDate\"],\r\n ScalarTypes.SCALAR_DATE\r\n )\r\n );\r\n reportInputItems.push(\r\n addScalarItem(\r\n \"PQWizard_EndDate\",\r\n this.state.formData[\"dtBIReportsEndDate\"],\r\n ScalarTypes.SCALAR_DATE\r\n )\r\n );\r\n reportInputItems.push(\r\n addScalarItem(\r\n \"PQWizard_chkStoreInExcel\",\r\n this.state.formData[\"chkStoreInExcel\"],\r\n ScalarTypes.SCALAR_BOOLEAN\r\n )\r\n );\r\n\r\n let reportSettings = buildReportSettings();\r\n\r\n const repoBuild = new ReportBuilder();\r\n\r\n let finalReport = repoBuild.buildDataReport(\r\n this.props.auth.user,\r\n reportInputItems,\r\n reportSettings,\r\n reportNumber,\r\n reportName\r\n );\r\n\r\n let resReportsData = await postBIReportsData(finalReport, reportAPIPath);\r\n\r\n if (resReportsData.resultCode === 2) {\r\n this.props.setAlert(resReportsData.errorText, \"Error\", \"dataReports\");\r\n } else {\r\n if (this.state.formData[\"chkStoreInExcel\"] === true) {\r\n await exportDownload(\r\n finalReport.reportID,\r\n resReportsData.reportOutputFile\r\n );\r\n } else {\r\n //Note: content=viewer will change it back from pdf to the default viewer\r\n let url = `mywebtierparams/mywebtierparams.dll?content=pdf&volume=ProComp&name=main&folder=v0&ReportID=${finalReport.reportID}`;\r\n console.log(\"url\", url);\r\n window.open(url);\r\n }\r\n }\r\n this.setState({ isLoadingReport: false });\r\n };\r\n\r\n handleReportClick = (e, card, reportAPIPath) => {\r\n this.setState({\r\n formData: {\r\n ...this.state.formData,\r\n reportNumber: card.key,\r\n reportName: card.value,\r\n },\r\n isModal: true,\r\n });\r\n this.handleCreateReport({\r\n reportNumber: card.key,\r\n reportName: card.value,\r\n reportAPIPath,\r\n });\r\n this.controlClick(e, \"btnBIReportSelection\", card.value);\r\n };\r\n\r\n render() {\r\n const {\r\n controlChange,\r\n setElement,\r\n controlLostFocus,\r\n controlGetFocus,\r\n handleReportClick,\r\n props: { tInput, t },\r\n state: { formData, isLoadingReport },\r\n } = this;\r\n return (\r\n \r\n
    \r\n \r\n \r\n {\" \"}\r\n
    \r\n {t(\"DataReports\")}\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {isLoadingReport && (\r\n e.stopPropagation()}>\r\n \r\n \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default BIReports;\r\n","import React, {Suspense} from 'react';\r\nimport {Switch, Route, Redirect} from 'react-router-dom';\r\nimport {useRouter} from 'core/hooks';\r\nimport {Spinner} from 'core/uicore';\r\nimport BIReports from './ui/BIReports';\r\n\r\nconst Tracking = React.lazy(() => import('./ui/Tracking'));\r\nconst BIDashboard = React.lazy(() => import('./ui/BIDashboard'));\r\n\r\nconst BusinessIntelligence = ({...props}) => {\r\n const {match} = useRouter();\r\n return (\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BusinessIntelligence;\r\n","import React, { Fragment, useState, useRef, useEffect, Suspense } from \"react\";\r\nimport { Switch, Route, Redirect } from \"react-router-dom\";\r\nimport { PrivateRoute, withAutoLogout } from \"core/hocs\";\r\nimport Header from \"./Header\";\r\nimport { useRouter } from \"core/hooks\";\r\nimport { Spinner } from \"core/uicore\";\r\nimport { NEW_BUSINESS } from \"../utils/constants\";\r\nimport { ScrollToTopController } from \"core/hooks/ScrollToTop\";\r\nimport WelcomeModal from \"./WelcomeModal\";\r\nimport BusinessIntelligence from \"custom/bi/BusinessIntelligence\";\r\nconst TemplateApp = React.lazy(() => import(\"custom/template/TemplateApp\"));\r\nconst DeveloperApp = React.lazy(() => import(\"custom/developer/DeveloperApp\"));\r\nconst Admin = React.lazy(() => import(\"custom/admin/Admin\"));\r\nconst ProNeeds = React.lazy(() => import(\"custom/proNeeds/ProNeeds\"));\r\nconst Illustration = React.lazy(() => import(\"custom/newbiz/Illustration\"));\r\nconst SavedIllustration = React.lazy(() =>\r\n import(\"custom/newbiz/ui/SavedIllustration\")\r\n);\r\nconst Inforce = React.lazy(() => import(\"custom/inforce/Inforce\"));\r\nconst Eapplication = React.lazy(() =>\r\n import(\"custom/eApplication/Eapplication\")\r\n);\r\nconst EAppSettings = React.lazy(() =>\r\n import(\"custom/admin/EappUI/EAppSettings\")\r\n);\r\n\r\nconst Routes = ({ ...props }) => {\r\n const [myRef, setMyRef] = useState(null);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [invalidUrl, setInvalidUrl] = useState(false);\r\n const [welcomeModal, setWelcomeModal] = useState(false);\r\n const illusRef = useRef();\r\n const savedIllusRef = useRef();\r\n const { location, pathname } = useRouter();\r\n const { isAdminAccessible, isInforceAccessible, isNewBusinessAccessible } =\r\n props;\r\n useEffect(() => {\r\n if (props.auth && props.auth.user && props.auth.user[\"isFirstRun\"]) {\r\n setWelcomeModal(true);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (pathname === \"/illustration\") {\r\n setMyRef(illusRef);\r\n } else if (pathname === \"/illustration/savedIllustration\") {\r\n setMyRef(savedIllusRef);\r\n }\r\n }, [pathname, illusRef, savedIllusRef]);\r\n\r\n useEffect(() => {\r\n /**\r\n * Example for below line of code:\r\n * location.pathname -> /inforce/alphalookup\r\n * page -> inforce\r\n * if invalid page, redirect to login, login redirects user to default app if logged in\r\n */\r\n const pathArray = pathname.split(\"/\");\r\n const page = pathArray[1].toLowerCase();\r\n if (!(page in props.routes)) {\r\n setInvalidUrl(true);\r\n } else if (pathArray.length > 2) {\r\n /**\r\n * Example for below line of code:\r\n * location.pathname -> /inforce/alphalookup\r\n * pageArray.length -> 3\r\n * Loop through the array of particular page and look for valid path\r\n * if invalid path, redirect to login, login redirects user to default app if logged in\r\n */\r\n for (let i = 0; i < props.routes[page].length; i++) {\r\n if (\r\n props.routes[page][i].paths[0] === pathname ||\r\n props.routes[page][i].paths[1] === pathname\r\n ) {\r\n setInvalidUrl(false);\r\n break;\r\n } else if (i === props.routes[page].length - 1) {\r\n setInvalidUrl(true);\r\n }\r\n }\r\n }\r\n setIsLoading(false);\r\n }, [pathname]);\r\n\r\n useEffect(() => {\r\n if (props?.auth?.user?.isWhiteLabel) {\r\n document.documentElement.classList.remove(\r\n ...document.documentElement.classList\r\n );\r\n if (props?.auth?.user.whiteLabelProfile) {\r\n document.documentElement.classList.add(\r\n props?.auth?.user.whiteLabelProfile\r\n );\r\n }\r\n }\r\n }, [props?.auth?.user]);\r\n\r\n /**\r\n * Ref based call to a function in a child component.\r\n * Ref was set in above useEffect condition based on current route, whether it is createIllustration or savedIllustration\r\n */\r\n const updateIllusForm = (formData, isSharedOwnershipComplete) => {\r\n myRef.current.loadSharedOwnershipModalForm(\r\n formData,\r\n isSharedOwnershipComplete\r\n );\r\n };\r\n\r\n if (invalidUrl) {\r\n return ;\r\n }\r\n if (isLoading) {\r\n return ;\r\n }\r\n return (\r\n \r\n {welcomeModal && (\r\n setWelcomeModal(false)}\r\n />\r\n )}\r\n \r\n
    \r\n }>\r\n \r\n \r\n\r\n \r\n {location.state?.from === NEW_BUSINESS ||\r\n props.isEapplicationAdministrator() ||\r\n true ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n// export default withAutoLogout(Routes);\r\n\r\nexport default Routes;\r\n","import React, {Component} from 'react';\r\nimport {connect} from 'react-redux';\r\nimport {BrowserRouter as Router, Route, Switch} from 'react-router-dom';\r\nimport {\r\n loadControlItems,\r\n loadInterfaceSetupItems,\r\n updateControlItems,\r\n setStoreFormData,\r\n updateStoreFormData,\r\n updateWholeFormData,\r\n clearStoreFormData,\r\n login,\r\n logout,\r\n sessionTimeout,\r\n updateUserProfile,\r\n updateUserProfileField,\r\n getAllUsers,\r\n setAlert,\r\n updateControlItemsDB,\r\n deleteControlItemDB,\r\n updateInterfaceSetupItemsDB,\r\n deleteInterfaceSetupItemDB,\r\n} from \"core/redux/actions\";\r\nimport {\r\n getFirstYearPremium,\r\n updateReportOptionsProfile,\r\n} from \"custom/newbiz/redux/actions\";\r\nimport {\r\n loadInforceData,\r\n populateTreeAction,\r\n} from \"custom/inforce/redux/actions\";\r\nimport {\r\n loadAlphaLookupData,\r\n clearAlphaLookupData,\r\n} from \"custom/alphaLookup/redux/actions\";\r\nimport {\r\n loadDataReportsData,\r\n clearDataReportsData,\r\n} from \"custom/dataReports/redux/actions\";\r\nimport { getAllRoles } from \"custom/admin/redux/actions\";\r\nimport { updateBIOptionsProfile } from \"custom/bi/redux/actions\";\r\n// import {login, logout, sessionTimeout, updateUserProfile, getAllUsers} from 'core/redux/actions/authActions';\r\n// import {setAlert} from 'core/redux/actions/alertActions';\r\nimport Login from \"../auth/Login\";\r\n\r\nimport { withPCTranslation } from \"core/hocs\";\r\n\r\nimport Routes from \"./Routes\";\r\nimport { MsalProvider } from \"@azure/msal-react\";\r\n\r\nconst mapStateToProps = (dataStore) => ({\r\n controlItems: dataStore.setupItems.controlItems,\r\n interfaceSetupItems: dataStore.setupItems.interfaceSetupItems,\r\n allSetupItems: dataStore.setupItems.allSetupItems,\r\n interfaceSetupArray: dataStore.setupItems.interfaceSetupArray,\r\n setupItems: dataStore.setupItems,\r\n storeFormData: dataStore.formData[\"newBusiness\"],\r\n eAppFormData: dataStore.formData[\"eAppFormData\"],\r\n inforceFormData: dataStore.formData[\"inforceFormData\"],\r\n firstYearPremium: dataStore.firstYearPremium,\r\n inforceData: dataStore.inforceData,\r\n alphaLookupFormData: dataStore.formData[\"alphaLookupFormData\"],\r\n alphaLookupData: dataStore.alphaLookupData,\r\n dataReports: dataStore.dataReports,\r\n auth: dataStore.auth,\r\n routes: dataStore.routes,\r\n roles: dataStore.roles,\r\n alertList: dataStore.alert,\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n // loadData,\r\n loadControlItems,\r\n updateControlItemsDB,\r\n deleteControlItemDB,\r\n updateInterfaceSetupItemsDB,\r\n deleteInterfaceSetupItemDB,\r\n loadInterfaceSetupItems,\r\n setAlert,\r\n updateControlItems,\r\n setStoreFormData,\r\n clearStoreFormData,\r\n updateStoreFormData,\r\n updateWholeFormData,\r\n getFirstYearPremium,\r\n loadInforceData,\r\n populateTreeAction,\r\n loadAlphaLookupData,\r\n clearAlphaLookupData,\r\n loadDataReportsData,\r\n clearDataReportsData,\r\n login,\r\n logout,\r\n sessionTimeout,\r\n updateUserProfile,\r\n updateUserProfileField,\r\n updateReportOptionsProfile,\r\n getAllUsers,\r\n getAllRoles,\r\n updateBIOptionsProfile,\r\n};\r\n\r\nexport const StoreConnector = connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(\r\n withPCTranslation(\r\n class extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n screenWidth: window.innerWidth || 0,\r\n sticky: 'scrollToTop',\r\n tabHeaderSticky: 'scrollToTop',\r\n policyHeaderSticky: 'scrollToTop',\r\n tabsSticky: 'scrollToTop',\r\n };\r\n }\r\n setScreenWidth = () => {\r\n this.setState({screenWidth: window.innerWidth});\r\n // setContentHeight();\r\n };\r\n toggleSticky = (e) => {\r\n console.log('ToggleSticky');\r\n const currentScrollPos = window.pageYOffset;\r\n let sticky = currentScrollPos > 0 ? 'sticky' : 'scrollToTop';\r\n if (this.state.sticky !== sticky) {\r\n this.setState({sticky});\r\n // setContentHeight();\r\n }\r\n\r\n /**\r\n * Tab Header sticky logic\r\n */\r\n let tabHeaderOffset = document.getElementById('tabHeader-id')\r\n ? document.getElementById('tabHeader-id').offsetHeight\r\n : 0;\r\n sticky = currentScrollPos > tabHeaderOffset ? 'sticky' : 'scrollToTop';\r\n if (this.state.tabHeaderSticky !== sticky) {\r\n this.setState({tabHeaderSticky: sticky});\r\n // setContentHeight();\r\n }\r\n\r\n /**\r\n * Policy Header sticky logic\r\n */\r\n let policyHeaderOffset = document.getElementById('policyheader-id')\r\n ? document.getElementById('policyheader-id').offsetHeight\r\n : 0;\r\n\r\n let policyHeaderSticky = currentScrollPos > tabHeaderOffset ? 'sticky' : 'scrollToTop';\r\n // }\r\n if (this.state.policyHeaderSticky !== policyHeaderSticky) {\r\n this.setState({policyHeaderSticky});\r\n }\r\n\r\n /**\r\n * Tabs sticky logic\r\n */\r\n let tabsheaderOffset = document.getElementById('tabheader-id')\r\n ? document.getElementById('tabheader-id').offsetTop\r\n : 0;\r\n // let tabsOffsetTop = document.getElementById('tabsheader-id') ? document.getElementById('tabsheader-id').offsetHeight().top : 0;\r\n // console.log('Tabs Distance from top: ', tabsOffsetTop - window.scrollTop);\r\n // console.log('Tabs Header offset:', tabHeaderOffset);\r\n // console.log('Policy Header Offset: ', policyHeaderOffset);\r\n // console.log('Tabs Offset: ', tabsheaderOffset);\r\n let tabsSticky =\r\n currentScrollPos > policyHeaderOffset + tabHeaderOffset ? 'sticky' : 'scrollToTop';\r\n\r\n if (this.state.tabsSticky !== tabsSticky) {\r\n this.setState({tabsSticky});\r\n }\r\n };\r\n\r\n globalGetFocus = (event, storeFormData, elementItems, updateFormData) => {\r\n let {\r\n controlItems,\r\n interfaceSetupItems,\r\n updateControlItems,\r\n auth: {user},\r\n } = this.props;\r\n this.props.globalGetFocus(\r\n event,\r\n controlItems,\r\n storeFormData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems\r\n );\r\n };\r\n globalChange = (event, storeFormData, elementItems, updateFormData) => {\r\n let {\r\n controlItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n inforceData,\r\n auth: {user},\r\n updateControlItems,\r\n interfaceSetupArray,\r\n } = this.props;\r\n this.props.globalChange(\r\n event,\r\n user,\r\n controlItems,\r\n storeFormData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n };\r\n globalClick = (name, storeFormData, elementItems, updateFormData) => {\r\n let {\r\n controlItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n inforceData,\r\n auth: {user},\r\n updateControlItems,\r\n } = this.props;\r\n this.props.globalClick(\r\n name,\r\n user,\r\n controlItems,\r\n storeFormData,\r\n elementItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n };\r\n globalLostFocus = (event, storeFormData, elementItems, updateFormData) => {\r\n let {\r\n controlItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n inforceData,\r\n auth: {user},\r\n updateControlItems,\r\n interfaceSetupArray,\r\n } = this.props;\r\n this.props.globalLostFocus(\r\n event,\r\n user,\r\n controlItems,\r\n storeFormData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n };\r\n onLoad = (storeFormData, elementItems, updateFormData) => {\r\n let {\r\n controlItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n inforceData,\r\n updateControlItems,\r\n auth: {user},\r\n } = this.props;\r\n this.props.onLoad(\r\n user,\r\n controlItems,\r\n storeFormData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n };\r\n isEapplicationAvailable = () => {\r\n const {user} = this.props.auth;\r\n return user?.system?.isEapplication;\r\n };\r\n isEapplicationAccessible = () => {\r\n const {user} = this.props.auth;\r\n return this.isEapplicationAvailable() && user?.permissions?.isEapplication?.isActive;\r\n };\r\n isEapplicationAdministrator = () => {\r\n const {user} = this.props.auth;\r\n return this.isEapplicationAvailable() && user?.permissions?.isEapplicationAdministrator?.isActive;\r\n };\r\n isConceptsAvailable = () => {\r\n const {user} = this.props.auth;\r\n return user?.system?.isConcepts;\r\n };\r\n isConceptsAccessible = () => {\r\n const {user} = this.props.auth;\r\n return this.isConceptsAvailable() && user?.permissions?.isConcepts?.isActive;\r\n };\r\n isNewBusinessAvailable = () => {\r\n const {user} = this.props.auth;\r\n return user?.system?.isNewBusiness;\r\n };\r\n isNewBusinessAccessible = () => {\r\n const {user} = this.props.auth;\r\n return this.isNewBusinessAvailable() && user?.permissions?.isNewBusiness?.isActive;\r\n };\r\n isInforceAvailable = () => {\r\n const {user} = this.props.auth;\r\n return user?.system?.isInforce;\r\n };\r\n isInforceAccessible = () => {\r\n const {user} = this.props.auth;\r\n return this.isInforceAvailable() && user?.permissions?.isInforce?.isActive;\r\n };\r\n isHeadOffice = () => {\r\n const {user} = this.props.auth;\r\n return user?.permissions?.isHeadOffice?.isActive;\r\n };\r\n isUserAdmin = () => {\r\n const {user} = this.props.auth;\r\n return user?.permissions?.isAdmin?.isActive;\r\n };\r\n isUserNewBusinessBatch = () => {\r\n const { user } = this.props.auth;\r\n return user?.permissions?.isNewBusinessBatch?.isActive;\r\n };\r\n isUserInforceBatch = () => {\r\n const { user } = this.props.auth;\r\n return user?.permissions?.isInforceBatch?.isActive;\r\n };\r\n isAdminAccessible = () => {\r\n const { user } = this.props.auth;\r\n if (!user) return false;\r\n\r\n const { permissions, system } = user;\r\n return (\r\n permissions?.isAdmin ||\r\n (system?.isBusinessIntelligence &&\r\n permissions?.isBusinessIntelligence?.isActive) ||\r\n (system?.isAdminSystem &&\r\n (permissions?.isAdminSystem?.isActive ||\r\n permissions?.isAdminSystemAdministrator?.isActive))\r\n );\r\n };\r\n isAdminUserManagementAccessible = () => {\r\n const { user } = this.props.auth;\r\n if (!user) return false;\r\n\r\n const { permissions, system } = user;\r\n\r\n return (\r\n permissions?.isAdmin ||\r\n (system?.isAdminSystem &&\r\n (permissions?.isAdminSystem?.isActive ||\r\n permissions?.isAdminSystemAdministrator?.isActive))\r\n );\r\n };\r\n\r\n isBusinessIntelligenceAccesible = () => {\r\n const { user } = this.props.auth;\r\n if (!user) return false;\r\n\r\n const { permissions, system } = user;\r\n return (\r\n system?.isBusinessIntelligence &&\r\n (permissions?.isAdmin?.isActive ||\r\n permissions?.isBusinessIntelligence?.isActive ||\r\n (system?.isAdminSystem &&\r\n (permissions?.isAdminSystem?.isActive ||\r\n permissions?.isAdminSystemAdministrator?.isActive)))\r\n );\r\n };\r\n isNewBusinessBatchRunAllowed = () => {\r\n const { user } = this.props.auth;\r\n return (\r\n this.isUserNewBusinessBatch() && user?.system?.isNewBusinessBatch\r\n );\r\n };\r\n isInforceBatchRunAllowed = () => {\r\n const { user } = this.props.auth;\r\n return this.isUserInforceBatch() && user?.system?.isInforceBatch;\r\n };\r\n isDeveloper = () => {\r\n const { user } = this.props.auth;\r\n return user?.permisions?.isDeveloper?.isActive;\r\n };\r\n isNeedsAnalysisLite = () => {\r\n const {user} = this.props.auth;\r\n return user?.system?.isNeedsAnalysisLite && user?.permissions?.isNeedsAnalysisLite?.isActive;\r\n };\r\n isNeedsAnalysisFull = () => {\r\n const {user} = this.props.auth;\r\n return user?.system?.isNeedsAnalysisFull && user?.permissions?.isNeedsAnalysisLite?.isActive;\r\n };\r\n render() {\r\n return (\r\n \r\n \r\n {/* */}\r\n {/* */}\r\n \r\n {/* */}\r\n \r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n );\r\n }\r\n componentDidMount() {\r\n window.addEventListener('resize', this.setScreenWidth);\r\n window.addEventListener('scroll', this.toggleSticky);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.setScreenWidth);\r\n window.removeEventListener('scroll', this.toggleSticky);\r\n }\r\n // componentDidUpdate(prevProps, prevState) {\r\n // if (!this.props.controlItems && this.props.auth.isAuthenticated) {\r\n // let {user} = this.props.auth;\r\n\r\n // //Temporary fix. It gets called multiple times due to change in language and classes on body element.\r\n // // if (this.props.setupItems && !this.props.setupItems.isDataLoading) {\r\n // // this.props.loadControlItems();\r\n // // }\r\n\r\n // //console.log(\"user:\", user);\r\n // if (user && user.loadProfile === true) {\r\n // user.loadProfile = false;\r\n // if (user['fontSize'] === 'Large') {\r\n // document.body.classList.add('altFont');\r\n // } else if (user['fontSize'] === 'Small') {\r\n // document.body.classList.remove('altFont');\r\n // }\r\n // }\r\n // }\r\n // }\r\n }\r\n )\r\n);\r\n","import {ActionTypes} from 'custom/common/redux/Types';\r\nimport axios from 'axios';\r\nimport {setAlert, removeAlert} from 'core/redux/actions';\r\n\r\n/***\r\n * queryObject:\r\n * {firstName, middleName, lastName, user: {}}\r\n */\r\nexport const loadAlphaLookupData = ({firstName, middleName, lastName}) => async (\r\n dispatch,\r\n getState\r\n) => {\r\n let queryObject = {\r\n firstName,\r\n middleName,\r\n lastName,\r\n user: getState().auth.user,\r\n };\r\n console.log('Query object for alphaLookup: ', queryObject);\r\n\r\n // This is to remove alert if any existing on data fetch\r\n if (getState().alert['alphaLookup']) {\r\n dispatch(removeAlert('alphaLookup'));\r\n }\r\n\r\n let res;\r\n try {\r\n res = await axios.post('/api/AlphaLookup', queryObject);\r\n console.log('AlphaLookup Result', res, res.data);\r\n\r\n dispatch({\r\n type: ActionTypes.FETCH_ALPHALOOKUP,\r\n payload: res.data,\r\n });\r\n\r\n if (res.data[0].errorCode === 2) {\r\n dispatch(setAlert(res.data[0].errorMessage, 'Secondary', 'alphaLookup', 5000));\r\n }\r\n } catch (error) {\r\n console.log('Alpha Lookup Error: ', error, error?.response, error?.response?.data);\r\n dispatch({\r\n type: ActionTypes.FETCHERROR_ALPHALOOKUP,\r\n });\r\n if (error?.response?.data && error?.response?.data[0]?.errorMessage) {\r\n dispatch(setAlert(error.response.data[0].errorMessage, 'Error', 'alphaLookup', 5000));\r\n }\r\n }\r\n};\r\nexport const clearAlphaLookupData = () => (dispatch, getState) => {\r\n // This is to remove alert if any existing on data fetch\r\n if (getState().alert['alphaLookup']) {\r\n dispatch(removeAlert('alphaLookup'));\r\n }\r\n dispatch({type: ActionTypes.CLEAR_ALPHALOOKUP});\r\n};\r\n","import { ActionTypes } from \"custom/common/redux/Types\";\r\nimport axios from \"axios\";\r\nimport { setAlert } from \"core/redux/actions\";\r\n\r\nexport const updateBIOptionsProfile =\r\n (biFormData) => async (dispatch, getState) => {\r\n let user = { ...getState().auth.user };\r\n const isAuthenticated = getState().auth.isAuthenticated;\r\n\r\n if (isAuthenticated) {\r\n const userFormData = { ...user[\"formData\"], ...biFormData };\r\n\r\n user[\"formData\"] = biFormData;\r\n\r\n try {\r\n const res = await axios.post(\"/users/update\", user);\r\n user[\"formData\"] = userFormData;\r\n dispatch({\r\n type: ActionTypes.UPDATE_PROFILE,\r\n payload: user,\r\n });\r\n console.log(\"Updating reports profile\", res.data);\r\n } catch (error) {\r\n if (error && error.response) {\r\n dispatch(\r\n setAlert(\r\n error.response.data[\"message\"],\r\n \"Error\",\r\n \"updateProfile\",\r\n 5000\r\n )\r\n );\r\n console.log(error.response);\r\n }\r\n }\r\n }\r\n };\r\n","import React from 'react';\r\nimport {Provider} from 'react-redux';\r\nimport {dataStore} from 'core/redux/store';\r\nimport withCoreEvents from 'core/hocs/withCoreEvents';\r\nimport {StoreConnector} from './ui/StoreConnector';\r\nconst App = (props) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nexport default withCoreEvents(App);\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import i18n from 'i18next';\r\nimport {initReactI18next} from 'react-i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport Backend from 'i18next-xhr-backend';\r\n// import common_en from './locale/en/common.json';\r\n// import common_fr from './locale/fr/common.json';\r\n\r\ni18n\r\n .use(Backend)\r\n //.use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n // we init with resources\r\n // resources: {\r\n // en: {\r\n // translations: common_en\r\n // },\r\n\r\n // fr: {\r\n // translations: common_fr\r\n // }\r\n // },\r\n lng: 'en',\r\n fallbackLng: false,\r\n debug: false,\r\n\r\n // have a common namespace used around the full app\r\n ns: ['translation'],\r\n defaultNS: 'translation',\r\n\r\n keySeparator: false, // we use content as keys\r\n\r\n interpolation: {\r\n escapeValue: false, // not needed for react!!\r\n formatSeparator: ',',\r\n },\r\n returnEmptyString: true,\r\n\r\n react: {\r\n wait: true,\r\n useSuspense: false,\r\n },\r\n });\r\n\r\nexport default i18n;\r\n","import React from 'react';\r\nimport {IllustrationDino, procompBlueLogo} from 'assets';\r\n\r\nconst BrowserUnsupported = () => {\r\n return (\r\n
    \r\n

    \r\n This browser is extinct\r\n

    \r\n
    \r\n

    \r\n To enjoy our product please use a modern browser like{' '}\r\n \r\n Chrome\r\n {' '}\r\n or{' '}\r\n \r\n Mozilla Firefox\r\n \r\n

    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n \r\n
    \r\n
    \r\n Icons made by{' '}\r\n \r\n max.icons{' '}\r\n \r\n from{' '}\r\n \r\n www.flaticons.com\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default BrowserUnsupported;\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport {isIE} from 'react-device-detect';\r\nimport axios from \"axios\";\r\nimport App from \"custom/common/App\";\r\nimport * as serviceWorker from \"./serviceWorker\";\r\nimport \"core/utils/i18n\";\r\nimport BrowserUnsupported from \"BrowserUnsupported\";\r\n// console.log(process.env.NODE_ENV);\r\n// if (process.env.NODE_ENV !== 'development') {\r\n// console.log = (...messages) => {};\r\n// }\r\n//console.log('REACT_APP_VERSION: ', process.env.REACT_APP_VERSION);\r\n\r\nconst RenderApp = () => {\r\n if (process.env.NODE_ENV === \"development\") {\r\n axios.defaults.baseURL = process.env.REACT_APP_DEV_URL;\r\n }\r\n\r\n if (isIE) {\r\n return ;\r\n }\r\n return ;\r\n};\r\n\r\nReactDOM.render(RenderApp(), document.getElementById('app-root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","import {\r\n GetColumnNumber,\r\n getCoverageByID,\r\n getCoverageItemByType\r\n} from \"core/utils/calcUtils\";\r\nimport {\r\n RiderTypes,\r\n ReportColumns,\r\n PolicyTypes,\r\n CoverageTypes,\r\n FundTypes\r\n} from \"core/constants/calcConstants\";\r\nimport { isPolicyPaidUp } from \"custom/common/utils/lookupFunctions\";\r\nimport { globalVariables, isEmpty } from \"core/utils/util\";\r\nimport { ScalarTypes } from \"core/constants/reportConstants\";\r\nimport { addScalarItem, getScalarItem } from \"core/report/reportUtils\";\r\n\r\nexport function GetPhoneItem(phoneItems, phoneType){\r\n for (let aPhoneItem of phoneItems) {\r\n if (aPhoneItem.phoneType === phoneType) {\r\n return aPhoneItem;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function GetAddressItem(addressItems, addressType) {\r\n for (let aAddressItem of addressItems) {\r\n if (aAddressItem.addressType === addressType) {\r\n return aAddressItem;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n\r\nexport function GetSkipPaymentYear(skipPUAPaymentName, insuranceData) {\r\n let intSkipPUAPayment = GetColumnNumber(\r\n skipPUAPaymentName,\r\n insuranceData.columnItems\r\n );\r\n let i;\r\n for (i = 1; i === insuranceData.dblTableData_Main.length; i++) {\r\n if (insuranceData.dblTableData_Main[i][intSkipPUAPayment] === 1) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n\r\n//Custom - inforce\r\nexport function BuildSummaryColumnText(\r\n coverageItem,\r\n inforceData,\r\n insuranceData\r\n) {\r\n //We need to get the calc CoverageItem becuase the calc engine calculated the PremiumDurationYear which we need for this\r\n //For non-benefits we don't need to get the parent since they are unique coverageIDs per coverage. Benefits however\r\n //can have multiples per policy (ie WaiverOfPremium 035 can be on the base plus riders)\r\n let ignoreParentID = coverageItem.coverageType !== CoverageTypes.BENEFIT;\r\n let aCoverageItem = getCoverageByID(\r\n insuranceData.policy.coverages,\r\n coverageItem.coverageID,\r\n coverageItem.parentCoverageID,\r\n ignoreParentID\r\n );\r\n if (coverageItem.riderType === RiderTypes.CHILD) {\r\n return (\r\n (\"Year \" +\r\n (\r\n insuranceData.dblTableData_Main[1][ReportColumns.CalendarYear] +\r\n Math.min(\r\n aCoverageItem.premiumDurationYear,\r\n aCoverageItem.expiryDuration\r\n ) -\r\n 1\r\n ).toString() +\r\n \": \" +\r\n coverageItem.name +\r\n \" last premium (age \") +\r\n ((\r\n Math.min(\r\n aCoverageItem.premiumDurationYear,\r\n aCoverageItem.expiryDuration\r\n ) +\r\n inforceData.policy.baseCoverage.insured.attainedAge -\r\n 1\r\n ).toString() +\r\n \").\")\r\n );\r\n } else {\r\n //if this is an off-anniversary rider then add a year to the display\r\n let coverageIssueDate = new Date(aCoverageItem.issueDate);\r\n let policyIssueDate = new Date(inforceData.policy.issueDate);\r\n let intAddYear = 0;\r\n let strReturn = \"\";\r\n\r\n if (coverageIssueDate.getMonth !== policyIssueDate.getMonth) {\r\n intAddYear = 1;\r\n }\r\n\r\n if (inforceData.inforcePolicy.policyType === PolicyTypes.UL) {\r\n if (coverageItem.coverageType !== CoverageTypes.BASE) {\r\n intAddYear = intAddYear + 1;\r\n //console.log(`insuranceData.dblTableData_Main.length = ${insuranceData.dblTableData_Main.length}`, insuranceData.dblTableData_Main);\r\n //We insuranceData.dblTableData_Main.length is 0 even if the policy lapses in year 1 (because index 0 counts)\r\n if (insuranceData.dblTableData_Main.length > 1) {\r\n strReturn =\r\n \"Year \" +\r\n (\r\n insuranceData.dblTableData_Main[1][ReportColumns.CalendarYear] +\r\n aCoverageItem.premiumDurationYear -\r\n 1 +\r\n intAddYear\r\n ).toString() +\r\n \": \" +\r\n coverageItem.name +\r\n \" Cost of Insurance ceases \";\r\n } else {\r\n strReturn = \"\";\r\n }\r\n }\r\n } else {\r\n if (isPolicyPaidUp(inforceData.inforcePolicy)) {\r\n strReturn = \"\";\r\n } else {\r\n let intTemp = insuranceData.dblTableData_Main[1][ReportColumns.CalendarYear] + aCoverageItem.premiumDurationYear - 1 + intAddYear;\r\n let strTemp = intTemp.toString();\r\n strReturn =\r\n (\"Year \" +\r\n (\r\n insuranceData.dblTableData_Main[1][ReportColumns.CalendarYear] +\r\n aCoverageItem.premiumDurationYear -\r\n 1 +\r\n intAddYear\r\n ).toString() +\r\n \": \") +\r\n coverageItem.name +\r\n \" last premium \";\r\n }\r\n }\r\n\r\n let aBaseCoverageItem = getCoverageItemByType(\r\n inforceData.inforcePolicy.coverages,\r\n CoverageTypes.BASE\r\n );\r\n if (!isPolicyPaidUp(inforceData.inforcePolicy)) {\r\n if (\r\n (coverageItem.insured.clientID === aBaseCoverageItem.insured.clientID)\r\n ) {\r\n if (\r\n !(\r\n inforceData.inforcePolicy.policyType === PolicyTypes.UL &&\r\n coverageItem.coverageType === CoverageTypes.BASE\r\n )\r\n ) {\r\n strReturn =\r\n (strReturn + \"(age \") +\r\n ((\r\n aCoverageItem.premiumDurationYear +\r\n coverageItem.insured.currentAttainedAge -\r\n 1 +\r\n intAddYear\r\n ).toString() +\r\n \").\");\r\n }\r\n }\r\n }\r\n return strReturn;\r\n }\r\n}\r\n\r\n//Custom - inforce\r\nexport function SetSelectedDurations(insuranceData, formData) {\r\n let FilterCol = insuranceData.columnItems[3].columnNumber;\r\n if (formData[\"chkSelectDuration\"]) {\r\n //if (formData['rdoDuration'] === 'SEL') {\r\n let rowCount = insuranceData.dblTableData_Main.length - 1;\r\n //ToDo: These are hard-coded for now. This algorithm is intended to optimize to a one-pager\r\n let firstYears = 10;\r\n let everyYears = 5;\r\n var i;\r\n for (i = 1; i <= rowCount; i++) {\r\n if (i <= firstYears) {\r\n insuranceData.dblTableData_Main[i][FilterCol] = 1;\r\n } else {\r\n if ((i - firstYears) % everyYears === 0 || i === rowCount) {\r\n insuranceData.dblTableData_Main[i][FilterCol] = 1;\r\n } else {\r\n insuranceData.dblTableData_Main[i][FilterCol] = 0;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n//Custom - inforce\r\nexport function BuildSummaryPolicyExpiryColumnText(\r\n insuranceData,\r\n coverageItem\r\n) {\r\n return (\r\n \"Year \" +\r\n (\r\n insuranceData.dblTableData_Main[1][ReportColumns.CalendarYear] +\r\n coverageItem.expiryDuration\r\n ).toString() +\r\n \": Policy Expires.\"\r\n );\r\n}\r\n\r\nexport function BuildInvestmentAllocationScalars(\r\n scalarReportArray,\r\n calcPolicy,\r\n inforceFormData,\r\n insuranceData\r\n) {\r\n //console.log('BuildInvestmentAllocationScalars.insuranceData = ', insuranceData);\r\n //console.log('BuildInvestmentAllocationScalars.calcPolicy.baseCoverage.funds = ', calcPolicy.baseCoverage.funds);\r\n \r\n //This sub is going to perform a loop to gather.\r\n //One entry for each Seg Fund\r\n //A single entry to sum up all DIA/GIA\r\n //It will also fill in the Total Line\r\n let dblDIAGIATotal = 0;\r\n let dblDIAGIARate = 0;\r\n let intCounter = 0;\r\n let fundName;\r\n let aGlobalVariable;\r\n let globalVariablesInsuranceData\r\n globalVariablesInsuranceData = insuranceData.globalVariables;\r\n\r\n //console.log('BuildInvestmentAllocationScalars.globalVariablesData = ', globalVariablesInsuranceData);\r\n //console.log('BuildInvestmentAllocationScalars.globalVariable = ', globalVariables);\r\n\r\n \r\n for (let aFundItem of calcPolicy.baseCoverage.funds) {\r\n if (aFundItem.fundType === FundTypes.SegFund) {\r\n intCounter++;\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocFundName\" + intCounter.toString(),\r\n aFundItem.fundName,\r\n ScalarTypes.SCALAR_STRING\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocValue\" + intCounter.toString(),\r\n aFundItem.chargeAllocation.allocationPercent,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n fundName = \"InterestRate_\" + aFundItem.fundID;\r\n fundName = fundName.toUpperCase();\r\n aGlobalVariable = getGlobalVariablesInsuranceDataItem(globalVariablesInsuranceData, fundName);\r\n if (aGlobalVariable) {\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocInitialRate\" + intCounter.toString(),\r\n aGlobalVariable.value * 100,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocRateYears\" + intCounter.toString(),\r\n \"LIFE\",\r\n ScalarTypes.SCALAR_STRING\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocSubsequentRate\" + intCounter.toString(),\r\n aGlobalVariable.value * 100,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocScenarioRate\" + intCounter.toString(),\r\n aGlobalVariable.value * 100,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n }\r\n } else if (\r\n (aFundItem.fundType === FundTypes.DIA ||\r\n aFundItem.fundType === FundTypes.GIA) &&\r\n !aFundItem.isExternalFund\r\n ) {\r\n dblDIAGIATotal =\r\n dblDIAGIATotal + aFundItem.chargeAllocation.allocationPercent;\r\n fundName = \"InterestRate_\" + aFundItem.fundID;\r\n fundName = fundName.toUpperCase();\r\n aGlobalVariable = getGlobalVariablesInsuranceDataItem(globalVariablesInsuranceData, fundName);\r\n if (aGlobalVariable) {\r\n dblDIAGIARate = aGlobalVariable.value * 100;\r\n }\r\n }\r\n }\r\n\r\n if (dblDIAGIATotal > 0) {\r\n intCounter++;\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocFundName\" + intCounter.toString(),\r\n \"Daily Int. Acct/Guar. Int. Acct.\",\r\n ScalarTypes.SCALAR_STRING\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocValue\" + intCounter.toString(),\r\n dblDIAGIATotal,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocInitialRate\" + intCounter.toString(),\r\n dblDIAGIARate,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocRateYears\" + intCounter.toString(),\r\n \"LIFE\",\r\n ScalarTypes.SCALAR_STRING\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocSubsequentRate\" + intCounter.toString(),\r\n dblDIAGIARate,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocScenarioRate\" + intCounter.toString(),\r\n dblDIAGIARate,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n }\r\n\r\n let dblAverageInterestRate;\r\n aGlobalVariable = getGlobalVariablesInsuranceDataItem(globalVariablesInsuranceData, \"AVERAGEINTERESTRATE\");\r\n if (aGlobalVariable) {\r\n dblAverageInterestRate = aGlobalVariable.value;\r\n }else {\r\n dblAverageInterestRate = 0;\r\n }\r\n\r\n if ((inforceFormData[\"chkFutureScenarios\"] === true) && (inforceFormData[\"chkUseClientRates\"] === true)) {\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocInitialRateTotal\",\r\n inforceFormData[\"txtClientRate\"],\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\"AllocRateYearsTotal\", inforceFormData[\"txtClientRateToYear\"], ScalarTypes.SCALAR_STRING)\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocSubsequentRateTotal\",\r\n inforceFormData[\"txtClientRateAfter\"],\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n\r\n } else {\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocInitialRateTotal\",\r\n dblAverageInterestRate * 100,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\"AllocRateYearsTotal\", \"LIFE\", ScalarTypes.SCALAR_STRING)\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocSubsequentRateTotal\",\r\n dblAverageInterestRate * 100,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n }\r\n\r\n scalarReportArray.push(\r\n addScalarItem(\r\n \"AllocScenarioRateTotal\",\r\n dblAverageInterestRate * 100,\r\n ScalarTypes.SCALAR_DOUBLE\r\n )\r\n );\r\n scalarReportArray.push(\r\n addScalarItem(\"AllocNumberOfFunds\", intCounter, ScalarTypes.SCALAR_INTEGER)\r\n );\r\n}\r\n\r\nexport function getGlobalVariablesInsuranceDataItem(globalVariables, itemName)\r\n{\r\n const globalVariable = globalVariables.find(variable => variable.name === itemName);\r\n return globalVariable;\r\n}\r\n\r\n\r\n\r\n","export const ScalarTypes = {\r\n SCALAR_BOOLEAN: 'scalar_boolean',\r\n SCALAR_STRING: 'scalar_string',\r\n SCALAR_INTEGER: 'scalar_integer',\r\n SCALAR_DOUBLE: 'scalar_double',\r\n SCALAR_LONGINT: 'scalar_longint',\r\n SCALAR_DATE: 'scalar_date',\r\n};\r\n\r\nexport const PathTypes = {\r\n PATH_CUSTOM: 0,\r\n PATH_ADMINPOLICIESPATH: 1,\r\n PATH_REPORTPATH: 2,\r\n PATH_BATCHPATH: 3,\r\n};\r\nexport const REPORT_SETTING = {\r\n NONE: 0,\r\n INTEGER: 1,\r\n LONGINT: 2,\r\n DOUBLE: 3,\r\n SINGLE: 4,\r\n BOOLEAN: 5,\r\n STRING: 6,\r\n DATE: 7,\r\n};\r\n\r\nexport const ConstantValues = {\r\n DIVIDEND_ALTERNATESCALE: 75,\r\n ROWHIGHLIGHT_SPACING: 4,\r\n};\r\n","//Note that these plancodes match the ProdIDs from the interfaceSetup\r\nexport const ProdID = {\r\n TERM10: \"0131\",\r\n TERM20: \"0132\",\r\n TERM30: \"0133\",\r\n TERM100JOINT: \"0562\",\r\n TERM100: \"0563\",\r\n WHOLELIFE: \"0900\",\r\n WHOLELIFE20PAY: \"0902\",\r\n UL: \"0602\",\r\n UL2: \"0603\"\r\n};\r\n\r\nexport const DivOptions = {\r\n RAP: 'RAP',\r\n PUA: 'PUA',\r\n DOD: 'DOD',\r\n PIC: 'PIC',\r\n ENH: 'ENH',\r\n NONE: 'NONE',\r\n};\r\n\r\nexport const PolicyTypes = {\r\n SINGLE: 'SINGLE',\r\n JOINTFIRST: 'JOINTFIRST',\r\n JOINTLAST: 'JOINTLAST',\r\n};\r\n\r\nexport const PaymentOptions = {\r\n ANNUAL: '012',\r\n MONTHLY: '01',\r\n SEMIANNUAL: '06',\r\n QUARTERLY: '03',\r\n};\r\n\r\nexport const RatingOptions = {\r\n STANDARD: '100',\r\n RATING125: '125',\r\n RATING150: '150',\r\n RATING175: '175',\r\n RATING200: '200',\r\n};\r\n\r\nexport const interfaceItemsPolicyTypes = {\r\n TERM100: 'TERM100',\r\n LEVELTERM: 'LEVELTERM',\r\n WHOLELIFE: 'WHOLELIFE',\r\n UL: 'UL',\r\n};\r\n\r\n//term 10, term 20 or term 30\r\nexport const isTermPolicy = (prodId) => {\r\n return (\r\n prodId === ProdID.TERM10 ||\r\n prodId === ProdID.TERM20 ||\r\n prodId === ProdID.TERM30 ||\r\n prodId === ProdID.TERM\r\n );\r\n};\r\n\r\n//term 100\r\nexport const isTerm100Policy = (prodId) => {\r\n return prodId === ProdID.TERM100;\r\n};\r\n\r\n//whole life policy\r\nexport const isWholeLifePolicy = (prodId) => {\r\n return prodId === ProdID.WHOLELIFE || prodId === ProdID.WHOLELIFE20PAY;\r\n};\r\n\r\n//universal life policy\r\nexport const isUniversalLifePolicy = (prodId) => {\r\n return (prodId === ProdID.UL) || (prodId === ProdID.UL2);\r\n};","//import { globalVariables } from \"./util\";\r\n\r\nlet globalVariables = {\r\n isAppLoading: true,\r\n};\r\nconst $ = require('jquery');\r\n\r\nexport function hideControlBatch(fieldArray, controlItems, updateControlItems) {\r\n for (let item = 0; item < fieldArray.length - 1; item++) {\r\n hideControl(fieldArray[item], controlItems, updateControlItems, false);\r\n }\r\n hideControl(fieldArray[fieldArray.length - 1], controlItems, updateControlItems, true);\r\n}\r\nexport function hideControl(\r\n name,\r\n controlItems,\r\n updateControlItems,\r\n isUpdateControlItems = true\r\n) {\r\n //We are using jquery to hide and show controls\r\n //if(controlItems[name].disabled !== true){\r\n\r\n // $(`input[name=${name}]`).hide();\r\n // $(`select[name=${name}]`).hide();\r\n // $(`label[name=${name}]`).hide();\r\n // $(`div[name=${name}]`).hide();\r\n // $(`li[name=${name}]`).hide();\r\n // $(`#${name}`).hide();\r\n $(`div[id*=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`input[name*=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`select[name*=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`label[name*=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`div[name*=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`li[name*=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`h2[id*=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`h1[id*=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n if (controlItems && controlItems[name]) {\r\n controlItems[name].disabled = true; //Global variable, not for page rendering\r\n\r\n if (isUpdateControlItems && !globalVariables.isAppLoading) {\r\n updateControlItems(name, \"displayHidden\", true);\r\n } else {\r\n controlItems[name].displayHidden = true;\r\n }\r\n }\r\n //\r\n // }\r\n}\r\n\r\nexport function showControlBatch(fieldArray, controlItems, updateControlItems) {\r\n for (let item = 0; item < fieldArray.length - 1; item++) {\r\n showControl(fieldArray[item], controlItems, updateControlItems, false);\r\n }\r\n showControl(\r\n fieldArray[fieldArray.length - 1],\r\n controlItems,\r\n updateControlItems,\r\n true\r\n );\r\n}\r\nexport function showControl(\r\n name,\r\n controlItems,\r\n updateControlItems,\r\n isUpdateControlItems = true\r\n) {\r\n //We are using jquery to hide and show controls\r\n // if(controlItems[name].disabled !== false){\r\n // $(`input[name=${name}]`).show();\r\n // $(`select[name=${name}]`).show();\r\n // $(`label[name=${name}]`).show();\r\n // //Removing style attribute, it was adding {display: block;} for UL Options tab and displaying tab contents in all tabs\r\n // $(`div[name=${name}]`).show().removeAttr('style');\r\n // $(`li[name=${name}]`).show();\r\n // $(`#${name}`).show();\r\n $(`div[id*=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`input[name*=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`select[name*=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`label[name*=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`div[name*=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`li[name*=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`h2[id*=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`h1[id*=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n\r\n if (controlItems && controlItems[name]) {\r\n controlItems[name].disabled = false;\r\n if (isUpdateControlItems && !globalVariables.isAppLoading) {\r\n updateControlItems(name, \"displayHidden\", false);\r\n } else {\r\n controlItems[name].displayHidden = false;\r\n }\r\n }\r\n // }\r\n}\r\n\r\nexport function disableControlBatch(fieldArray, elementItems, controlItems, updateControlItems) {\r\n for (let item = 0; item < fieldArray.length - 1; item++) {\r\n disableControl(fieldArray[item], elementItems, controlItems, updateControlItems, false);\r\n }\r\n if (fieldArray.length > 0) {\r\n disableControl(\r\n fieldArray[fieldArray.length - 1],\r\n elementItems,\r\n controlItems,\r\n updateControlItems,\r\n true\r\n );\r\n }\r\n}\r\n\r\nexport function disableControl(\r\n name,\r\n elementItems,\r\n controlItems,\r\n updateControlItems,\r\n isUpdateControlItems = true\r\n) {\r\n if (elementItems && elementItems[name]) {\r\n let element = elementItems[name];\r\n element.disabled = 'disabled';\r\n }\r\n //updateControlItems(name, 'disabled', true);\r\n if (controlItems && controlItems[name]) {\r\n controlItems[name].disabled = true;\r\n if (isUpdateControlItems && !globalVariables.isAppLoading) {\r\n updateControlItems(name, 'displayDisabled', true);\r\n } else {\r\n controlItems[name].displayDisabled = true;\r\n }\r\n }\r\n}\r\nexport function enableControlBatch(fieldArray, elementItems, controlItems, updateControlItems) {\r\n for (let item = 0; item < fieldArray.length - 1; item++) {\r\n enableControl(fieldArray[item], elementItems, controlItems, updateControlItems, false);\r\n }\r\n if (fieldArray.length > 0) {\r\n enableControl(\r\n fieldArray[fieldArray.length - 1],\r\n elementItems,\r\n controlItems,\r\n updateControlItems,\r\n true\r\n );\r\n }\r\n}\r\nexport function enableControl(\r\n name,\r\n elementItems,\r\n controlItems,\r\n updateControlItems,\r\n isUpdateControlItems = true\r\n) {\r\n if (elementItems && elementItems[name]) {\r\n let element = elementItems[name];\r\n element.disabled = '';\r\n }\r\n //updateControlItems(name, 'disabled', false);\r\n controlItems[name].disabled = false;\r\n if (isUpdateControlItems && !globalVariables.isAppLoading) {\r\n updateControlItems(name, 'displayDisabled', false);\r\n } else {\r\n controlItems[name].displayDisabled = false;\r\n }\r\n}\r\n\r\nexport function lockControl(name, elementItems, controlItems) {\r\n if (elementItems && controlItems && elementItems[name] && controlItems[name]) {\r\n controlItems[name].locked = true;\r\n }\r\n}\r\n\r\nexport function unlockControl(name, elementItems, controlItems) {\r\n if (elementItems && controlItems && elementItems[name] && controlItems[name]) {\r\n controlItems[name].locked = false;\r\n }\r\n}\r\n","import {\r\n hideControl,\r\n showControl,\r\n disableControl,\r\n enableControl,\r\n showControlBatch,\r\n hideControlBatch,\r\n enableControlBatch,\r\n disableControlBatch,\r\n lockControl,\r\n unlockControl,\r\n} from 'core/utils/globalUtils';\r\nimport {getCoverageItemByType} from 'core/utils/calcUtils';\r\n\r\nimport {\r\n PolicyTypes,\r\n DividendPayoutTypes,\r\n BillingTypeCode,\r\n CoverageTypes,\r\n PolicyLookupResultTypes,\r\n} from 'core/constants/calcConstants';\r\nimport {\r\n PolicyTypes as PolicyTypesNewbiz,\r\n interfaceItemsPolicyTypes,\r\n DivOptions,\r\n ProdID,\r\n isTermPolicy,\r\n isTerm100Policy,\r\n isWholeLifePolicy,\r\n isUniversalLifePolicy,\r\n} from 'custom/newbiz/utils/constants';\r\n\r\nimport {\r\n isProductHealth,\r\n fullName,\r\n calcAgeNearest,\r\n GetLastAnniversaryDate,\r\n} from 'custom/common/utils/lookupFunctions';\r\nimport {updateStoreFormSessionData} from './functions';\r\n\r\nlet controlFields = {\r\n cboRateClass: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).cboRateClass\r\n : 'P',\r\n chkTerm10: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkTerm10\r\n : true,\r\n chkTerm20: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkTerm20\r\n : false,\r\n chkTerm30: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkTerm30\r\n : false,\r\n chkADO: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkADO\r\n : false,\r\n};\r\nexport function initializeControlFields(formData, useSession = true) {\r\n let sessData = JSON.parse(sessionStorage.getItem('controlFields'));\r\n if (sessData && useSession) {\r\n controlFields['cboRateClass'] = sessData.cboRateClass;\r\n controlFields['chkTerm10'] = sessData.chkTerm10;\r\n controlFields['chkTerm20'] = sessData.chkTerm20;\r\n controlFields['chkTerm30'] = sessData.chkTerm30;\r\n controlFields['chkADO'] = sessData.chkADO;\r\n } else {\r\n controlFields['cboRateClass'] = formData['cboRateClass'];\r\n controlFields['chkTerm10'] = formData['chkTerm10'];\r\n controlFields['chkTerm20'] = formData['chkTerm20'];\r\n controlFields['chkTerm30'] = formData['chkTerm30'];\r\n controlFields['chkADO'] = formData['chkADO'];\r\n }\r\n}\r\nexport function updateControlFields(formData, name) {\r\n controlFields[name] = formData[name];\r\n let sessContext = JSON.parse(sessionStorage.getItem('controlFields'));\r\n sessContext = {...sessContext, ...controlFields};\r\n sessionStorage.setItem('controlFields', JSON.stringify({...sessContext}));\r\n}\r\nlet pageSelection = {\r\n chkCoverPage: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkCoverPage\r\n : true,\r\n chkTaxPage: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkTaxPage\r\n : false,\r\n chkUnderwritingPage: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkUnderwritingPage\r\n : false,\r\n chkComplianceNotice: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkComplianceNotice\r\n : true,\r\n};\r\n\r\nlet conceptSelection = {\r\n chkProductCompare: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkProductCompare\r\n : false,\r\n chkInternalRoR: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkInternalRoR\r\n : false,\r\n chkCharitableGiving: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkCharitableGiving\r\n : false,\r\n chkInsuranceInvestment: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkInsuranceInvestment\r\n : false,\r\n chkSharedOwnership: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkSharedOwnership\r\n : false,\r\n};\r\nexport function getPageConceptSelection() {\r\n return {pageSelection, conceptSelection};\r\n}\r\nexport function initializePageConceptSelection(formData, useSession = true) {\r\n let sessData = JSON.parse(sessionStorage.getItem('pageConcept'));\r\n if (sessData && useSession) {\r\n pageSelection['chkCoverPage'] = sessData.chkCoverPage;\r\n pageSelection['chkTaxPage'] = sessData.chkTaxPage;\r\n pageSelection['chkUnderwritingPage'] = sessData.chkUnderwritingPage;\r\n pageSelection['chkComplianceNotice'] = sessData.chkComplianceNotice;\r\n conceptSelection['chkProductCompare'] = sessData.chkProductCompare;\r\n conceptSelection['chkInternalRoR'] = sessData.chkInternalRoR;\r\n conceptSelection['chkCharitableGiving'] = sessData.chkCharitableGiving;\r\n conceptSelection['chkInsuranceInvestment'] = sessData.chkInsuranceInvestment;\r\n conceptSelection['chkSharedOwnership'] = sessData.chkSharedOwnership;\r\n } else {\r\n pageSelection['chkCoverPage'] = formData['chkCoverPage'] === 'true' ? true : false;\r\n pageSelection['chkTaxPage'] = formData['chkTaxPage'] === 'true' ? true : false;\r\n pageSelection['chkUnderwritingPage'] =\r\n formData['chkUnderwritingPage'] === 'true' ? true : false;\r\n pageSelection['chkComplianceNotice'] =\r\n formData['chkComplianceNotice'] === 'true' ? true : false;\r\n conceptSelection['chkProductCompare'] = formData['chkProductCompare'] === 'true' ? true : false;\r\n conceptSelection['chkInternalRoR'] = formData['chkInternalRoR'] === 'true' ? true : false;\r\n conceptSelection['chkCharitableGiving'] =\r\n formData['chkCharitableGiving'] === 'true' ? true : false;\r\n conceptSelection['chkInsuranceInvestment'] =\r\n formData['chkInsuranceInvestment'] === 'true' ? true : false;\r\n conceptSelection['chkSharedOwnership'] =\r\n formData['chkSharedOwnership'] === 'true' ? true : false;\r\n sessionStorage.setItem('pageConcept', JSON.stringify({...pageSelection, ...conceptSelection}));\r\n }\r\n}\r\n\r\nexport function updateConceptItem(formData, name) {\r\n conceptSelection[name] = formData[name];\r\n let sessConcept = JSON.parse(sessionStorage.getItem('pageConcept'));\r\n sessConcept = {...sessConcept, ...conceptSelection};\r\n sessionStorage.setItem('pageConcept', JSON.stringify({...sessConcept}));\r\n}\r\n\r\nexport function updatePageItem(formData, name) {\r\n pageSelection[name] = formData[name];\r\n let sessConcept = JSON.parse(sessionStorage.getItem('pageConcept'));\r\n sessConcept = {...sessConcept, ...pageSelection};\r\n sessionStorage.setItem('pageConcept', JSON.stringify({...sessConcept}));\r\n}\r\n\r\nexport function GlobalCustomLostFocus(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n runAll,\r\n isRecall\r\n) {\r\n // window.testFunction();\r\n window.GlobalCustomLostFocus(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n runAll,\r\n isRecall\r\n );\r\n}\r\n\r\nexport function GlobalCustomClickBusinessRules(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n) {\r\n window.customClickBusinessRules(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n}\r\n\r\nexport function GlobalCustomBusinessRules(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n runAll = false,\r\n isRecall = false\r\n) {\r\n window.customBusinessRules(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n runAll,\r\n isRecall\r\n );\r\n}\r\n\r\nexport function GlobalCustomBuildTrackingData(\r\n name,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n inforceData\r\n) {\r\n // let data = {...formData};\r\n // let key = '';\r\n // let val = '';\r\n // if (formData['formName'] === 'eApplication') {\r\n // if (data['fileAttachments'].length > 0) {\r\n // for (let attachment of data['fileAttachments']) {\r\n // key = attachment.fileName;\r\n // val = `${attachment.documentType}|${attachment.size}`;\r\n // data[key] = val;\r\n // }\r\n // }\r\n // delete data['fileAttachments'];\r\n // return data;\r\n // }\r\n return null;\r\n}\r\n\r\n//setting window function start\r\nwindow.initializePageConceptSelection = initializePageConceptSelection;\r\n\r\nwindow.updateStoreFormSessionData = updateStoreFormSessionData;\r\nwindow.isProductHealth = isProductHealth;\r\nwindow.isTermPolicy = isTermPolicy;\r\nwindow.isTerm100Policy = isTerm100Policy;\r\nwindow.isWholeLifePolicy = isWholeLifePolicy;\r\nwindow.isUniversalLifePolicy = isUniversalLifePolicy;\r\nwindow.hideControl = hideControl;\r\nwindow.showControl = showControl;\r\nwindow.disableControl = disableControl;\r\nwindow.enableControl = enableControl;\r\nwindow.showControlBatch = showControlBatch;\r\nwindow.hideControlBatch = hideControlBatch;\r\nwindow.enableControlBatch = enableControlBatch;\r\nwindow.disableControlBatch = disableControlBatch;\r\nwindow.lockControl = lockControl;\r\nwindow.unlockControl = unlockControl;\r\nwindow.getCoverageItemByType = getCoverageItemByType;\r\nwindow.fullName = fullName;\r\nwindow.updateConceptItem = updateConceptItem;\r\nwindow.updatePageItem = updatePageItem;\r\nwindow.updateControlFields = updateControlFields;\r\nwindow.PolicyTypesNewbiz = PolicyTypesNewbiz;\r\nwindow.interfaceItemsPolicyTypes = interfaceItemsPolicyTypes;\r\nwindow.DivOptions = DivOptions;\r\nwindow.ProdID = ProdID;\r\nwindow.PolicyTypes = PolicyTypes;\r\nwindow.DividendPayoutTypes = DividendPayoutTypes;\r\nwindow.BillingTypeCode = BillingTypeCode;\r\nwindow.CoverageTypes = CoverageTypes;\r\nwindow.PolicyLookupResultTypes = PolicyLookupResultTypes;\r\nwindow.pageSelection = pageSelection;\r\nwindow.conceptSelection = conceptSelection;\r\nwindow.controlFields = controlFields;\r\nwindow.calcAgeNearest = calcAgeNearest;\r\nwindow.GetLastAnniversaryDate = GetLastAnniversaryDate;\r\n//setting window function end\r\n","import {isLaterDate} from 'custom/dataReports/utils/functions';\r\nimport {PolicyTypes} from 'custom/newbiz/utils/constants';\r\n\r\nexport default function ValidateForm(formData, rules) {\r\n //console.log(\"Inside ValidateForm\");\r\n let errors = {};\r\n console.log(formData);\r\n if (\r\n formData[\"rdoPostalOrCity\"] === \"Postal\" &&\r\n formData[\"txtPostalCode\"] === \"\"\r\n ) {\r\n errors[\"txtPostalCode\"] = \"Postal Code cannot be empty\";\r\n }\r\n if (formData[\"rdoPostalOrCity\"] === \"City\" && formData[\"txtCity\"] === \"\") {\r\n errors[\"City\"] = \"City cannot be empty\";\r\n }\r\n\r\n // if (formData.chkBirthday === true || formData.rdoRange === \"Date\") {\r\n // // if (!isLaterDate(formData.dtToDate, formData.dtFromDate)) {\r\n // if (formData.dtToDate.getTime() < formData.dtFromDate.getTime()) {\r\n // errors.push(\"'From' date must be less or equal to 'To' date\");\r\n // }\r\n // } else\r\n if (formData[\"chkBirthday\"] === false || formData[\"rdoRange\"] === \"Age\") {\r\n } else if (\r\n formData[\"dtToDate\"] !== undefined &&\r\n formData[\"dtFromDate\"] !== undefined\r\n ) {\r\n // if (!isLaterDate(formData.dtToDate, formData.dtFromDate)) {\r\n if (formData[\"dtToDate\"].getTime() < formData[\"dtFromDate\"].getTime()) {\r\n errors[\"dtFromDate\"] = \"'From' date must be less or equal to 'To' date\";\r\n }\r\n }\r\n\r\n if (formData[\"txtOwnerName\"] === \"\") {\r\n console.log(\"custom Form Validation error\");\r\n errors[\"txtOwnerName\"] =\r\n \"You must enter the name of the policy owner and the insured before you can generate the illustration report.\";\r\n } else if (formData[\"txtInsuredName\"] === \"\") {\r\n console.log(\"custom Form Validation error\");\r\n errors[\"txtInsuredName\"] =\r\n \"You must enter the name of the policy owner and the insured before you can generate the illustration report.\";\r\n } else if (\r\n formData[\"cboPolicyType\"] !== PolicyTypes.SINGLE &&\r\n formData[\"txtInsuredName2\"] === \"\"\r\n ) {\r\n console.log(\"custom Form Validation error\");\r\n errors[\"txtInsuredName2\"] =\r\n \"You must enter the name of all insureds before you can generate the illustration report.\";\r\n }\r\n\r\n if (formData[\"formName\"] === \"eApplication\") {\r\n if (!formData[\"chkPaymentDeclaration\"]) {\r\n errors[\"chkPaymentDeclaration\"] = \"You must check payment declaration\";\r\n }\r\n if (!formData[\"chkDeclarationAuthorization\"]) {\r\n errors[\"chkDeclarationAuthorization\"] =\r\n \"You must check declaration and authorization\";\r\n }\r\n if (\r\n formData[\"txtInsuredHomePhone\"].length !==\r\n rules[\"txtInsuredHomePhone\"].maxLength\r\n ) {\r\n errors[\"txtInsuredHomePhone\"] =\r\n \"You must enter valid Insured Home Phone Number\";\r\n }\r\n // if (formData['txtInsuredCellPhone'].length !== rules['txtInsuredCellPhone'].maxLength) {\r\n // errors['txtInsuredCellPhone'] = 'You must enter valid Insured Cell Phone Number';\r\n // }\r\n // if (formData['txtInsuredPostalZipCode'].length !== rules['txtInsuredPostalZipCode'].maxLength) {\r\n // errors['txtInsuredPostalZipCode'] = 'You must enter valid postal/zip code';\r\n // }\r\n if (formData[\"rdoOwnerType\"] !== \"Company\") {\r\n if (\r\n formData[\"txtOwnerHomePhone\"].length !==\r\n rules[\"txtOwnerHomePhone\"].maxLength\r\n ) {\r\n errors[\"txtOwnerHomePhone\"] =\r\n \"You must enter valid Owner Home phone number\";\r\n }\r\n // if (\r\n // formData[\"txtOwnerCellPhone\"].length !==\r\n // rules[\"txtOwnerCellPhone\"].maxLength\r\n // ) {\r\n // errors[\"txtOwnerCellPhone\"] =\r\n // \"You must enter valid Owner Cell phone number\";\r\n // }\r\n if (formData[\"txtOwnerSIN\"].length !== rules[\"txtOwnerSIN\"].maxLength) {\r\n errors[\"txtOwnerSIN\"] = \"You must enter valid SIN number\";\r\n }\r\n }\r\n\r\n if (formData[\"rdoOwnerType\"] === \"Company\") {\r\n if (\r\n formData[\"txtOwnerBusinessNumber3\"].length !==\r\n rules[\"txtOwnerBusinessNumber3\"].maxLength\r\n ) {\r\n errors[\"txtOwnerBusinessNumber3\"] = \"You must enter valid Business Number\";\r\n }\r\n if (\r\n formData[\"txtOwnerHomePhone3\"].length !==\r\n rules[\"txtOwnerHomePhone3\"].maxLength\r\n ) {\r\n errors[\"txtOwnerHomePhone3\"] =\r\n \"You must enter valid Business Phone Number\";\r\n }\r\n }\r\n // if (\r\n // formData[\"txtOwnerPostalZipCode\"].length !==\r\n // rules[\"txtOwnerPostalZipCode\"].maxLength\r\n // ) {\r\n // errors[\"txtOwnerPostalZipCode\"] =\r\n // \"You must enter valid postal/zip code for Owner\";\r\n // }\r\n // }\r\n\r\n if (\r\n formData[\"rdoPaymentFrequency\"] === \"M\" &&\r\n formData[\"rdoAccountType\"] === \"B\"\r\n ) {\r\n if (\r\n formData[\"txtTransitNumber\"].length !==\r\n rules[\"txtTransitNumber\"].maxLength\r\n ) {\r\n errors[\"txtTransitNumber\"] = \"You must enter valid Transit Number\";\r\n }\r\n if (\r\n formData[\"txtInstitutionNumber\"].length !==\r\n rules[\"txtInstitutionNumber\"].maxLength\r\n ) {\r\n errors[\"txtInstitutionNumber\"] =\r\n \"You must enter valid Institution Number\";\r\n }\r\n if (\r\n formData[\"txtAccountNumber\"].length !==\r\n rules[\"txtAccountNumber\"].maxLength\r\n ) {\r\n errors[\"txtAccountNumber\"] = \"You must enter valid Account Number\";\r\n }\r\n }\r\n // if (\r\n // formData[\"rdoWeightLoss\"] === \"Y\" &&\r\n // (!formData[\"txtWeightLoss\"] ||\r\n // formData[\"txtWeightLoss\"].trim().length === 0)\r\n // ) {\r\n // errors[\"txtWeightLoss\"] = \"Please enter reason for weight loss\";\r\n // }\r\n\r\n if (\r\n formData[\"rdo2aCrimeQuestion\"] === \"Y\" &&\r\n (!formData[\"txt2aCrimeDetails\"] ||\r\n formData[\"txt2aCrimeDetails\"].trim().length === 0)\r\n ) {\r\n errors[\"txt2aCrimeDetails\"] =\r\n \"Please enter asked details for Health Questions\";\r\n }\r\n if (\r\n formData[\"rdo2bCrimeQuestion\"] === \"Y\" &&\r\n (!formData[\"txt2bCrimeDetails\"] ||\r\n formData[\"txt2bCrimeDetails\"].trim().length === 0)\r\n ) {\r\n errors[\"txt2bCrimeDetails\"] =\r\n \"Please enter asked details for Health Questions\";\r\n }\r\n // if (formData['rdo2cCrimeQuestion'] === 'Y' && (!formData['txt2cCrimeDetails'] || formData['txt2cCrimeDetails'].trim().length === 0)) {\r\n // errors['txt2cCrimeDetails'] = 'Please enter asked details for Health Questions';\r\n // }\r\n if (\r\n formData[\"rdo3aValidateSymptom\"] === \"Y\" &&\r\n (!formData[\"txt3aIllnessNature\"] ||\r\n formData[\"txt3aIllnessNature\"].trim().length === 0)\r\n ) {\r\n errors[\"txt3aIllnessNature\"] = \"You must provide nature of illness\";\r\n }\r\n if (\r\n formData[\"rdo3bValidateSymptom\"] === \"Y\" &&\r\n (!formData[\"txt3bIllnessNature\"] ||\r\n formData[\"txt3bIllnessNature\"].trim().length === 0)\r\n ) {\r\n errors[\"txt3bIllnessNature\"] = \"You must provide nature of illness\";\r\n }\r\n if (\r\n formData[\"rdo3cValidateSymptom\"] === \"Y\" &&\r\n (!formData[\"txt3cIllnessNature\"] ||\r\n formData[\"txt3cIllnessNature\"].trim().length === 0)\r\n ) {\r\n errors[\"txt3cIllnessNature\"] = \"You must provide nature of illness\";\r\n }\r\n }\r\n\r\n // Beneficiary share% form validation\r\n let primaryBene = 0;\r\n let primaryBeneficiaryField;\r\n let contingentBeneficiaryField;\r\n let contingentBene = 0;\r\n for (let i = 1; i <= 3; i++) {\r\n if (formData[`chkBeneBase${i}`] === true) {\r\n if (formData[`rdoBeneBaseType${i}`] === \"P\") {\r\n primaryBene += +formData[`txtBeneBaseShare${i}`];\r\n primaryBeneficiaryField = `rdoBeneBaseType${i}`;\r\n } else {\r\n contingentBene += +formData[`txtBeneBaseShare${i}`];\r\n contingentBeneficiaryField = `rdoBeneBaseType${i}`;\r\n }\r\n }\r\n }\r\n if (primaryBene > 100) {\r\n errors[primaryBeneficiaryField] =\r\n \"Primary beneficiary percentage share for Base Coverage should be less than or equal to 100\";\r\n }\r\n if (contingentBene > 100) {\r\n errors[contingentBeneficiaryField] =\r\n \"Contingent beneficiary percentage share for Base Coverage should be less than or equal to 100\";\r\n }\r\n primaryBene = 0;\r\n contingentBene = 0;\r\n\r\n if (formData[\"chkEAppChildRider1\"] === true) {\r\n for (let i = 1; i <= 3; i++) {\r\n if (formData[`chkBeneChildRider1${i}`] === true) {\r\n if (formData[`rdoBeneChildRider1Type${i}`] === \"P\") {\r\n primaryBene += +formData[`txtBeneChildRider1Share${i}`];\r\n primaryBeneficiaryField = `rdoBeneChildRider1Type${i}`;\r\n } else {\r\n contingentBene += +formData[`txtBeneChildRider1Share${i}`];\r\n contingentBeneficiaryField = `rdoBeneChildRider1Type${i}`;\r\n }\r\n }\r\n if (primaryBene > 100) {\r\n errors[primaryBeneficiaryField] =\r\n \"Primary beneficiary percentage share for Child Rider1 Coverage should be less than or equal to 100\";\r\n }\r\n if (contingentBene > 100) {\r\n errors[contingentBeneficiaryField] =\r\n \"Contingent beneficiary percentage share for Child Rider1 Coverage should be less than or equal to 100\";\r\n }\r\n }\r\n }\r\n primaryBene = 0;\r\n contingentBene = 0;\r\n\r\n if (formData[\"chkEAppChildRider2\"] === true) {\r\n for (let i = 1; i <= 3; i++) {\r\n if (formData[`chkBeneChildRider2${i}`] === true) {\r\n if (formData[`rdoBeneChildRider2Type${i}`] === \"P\") {\r\n primaryBene += +formData[`txtBeneChildRider2Share${i}`];\r\n primaryBeneficiaryField = `rdoBeneChildRider2Type${i}`;\r\n } else {\r\n contingentBene += +formData[`txtBeneChildRider2Share${i}`];\r\n contingentBeneficiaryField = `rdoBeneChildRider2Type${i}`;\r\n }\r\n }\r\n }\r\n if (primaryBene > 100) {\r\n errors[primaryBeneficiaryField] =\r\n \"Primary beneficiary percentage share for ChildRider2 Coverage should be less than or equal to 100\";\r\n }\r\n if (contingentBene > 100) {\r\n errors[contingentBeneficiaryField] =\r\n \"Contingent beneficiary percentage share for ChildRider2 Coverage should be less than or equal to 100\";\r\n }\r\n }\r\n primaryBene = 0;\r\n contingentBene = 0;\r\n\r\n if (formData[\"chkEAppTermRider1\"] === true) {\r\n for (let i = 1; i <= 3; i++) {\r\n if (formData[`chkBeneTermRider1${i}`] === true) {\r\n if (formData[`rdoBeneTermRider1Type${i}`] === \"P\") {\r\n primaryBene += +formData[`txtBeneTermRider1Share${i}`];\r\n primaryBeneficiaryField = `rdoBeneTermRider1Type${i}`;\r\n } else {\r\n contingentBene += +formData[`txtBeneTermRider1Share${i}`];\r\n contingentBeneficiaryField = `rdoBeneTermRider1Type${i}`;\r\n }\r\n }\r\n }\r\n if (primaryBene > 100) {\r\n errors[primaryBeneficiaryField] =\r\n \"Primary beneficiary percentage share for TermRider1 Coverage should be less than or equal to 100\";\r\n }\r\n if (contingentBene > 100) {\r\n errors[contingentBeneficiaryField] =\r\n \"Contingent beneficiary percentage share for TermRider1 Coverage should be less than or equal to 100\";\r\n }\r\n }\r\n primaryBene = 0;\r\n contingentBene = 0;\r\n\r\n if (formData[\"chkEAppTermRider2\"] === true) {\r\n for (let i = 1; i <= 3; i++) {\r\n if (formData[`chkBeneTermRider2${i}`] === true) {\r\n if (formData[`rdoBeneTermRider2Type${i}`] === \"P\") {\r\n primaryBene += +formData[`txtBeneTermRider2Share${i}`];\r\n primaryBeneficiaryField = `rdoBeneTermRider2Type${i}`;\r\n } else {\r\n contingentBene += +formData[`txtBeneTermRider2Share${i}`];\r\n contingentBeneficiaryField = `rdoBeneTermRider2Type${i}`;\r\n }\r\n }\r\n }\r\n if (primaryBene > 100) {\r\n errors[primaryBeneficiaryField] =\r\n \"Primary beneficiary percentage share for TermRider2 Coverage should be less than or equal to 100\";\r\n }\r\n if (contingentBene > 100) {\r\n errors[contingentBeneficiaryField] =\r\n \"Contingent beneficiary percentage share for TermRider2 Coverage should be less than or equal to 100\";\r\n }\r\n }\r\n\r\n \r\n return errors;\r\n}\r\n","import {INPUTTYPES} from 'core/constants/uiConstants';\r\nimport {ScalarTypes, REPORT_SETTING} from 'core/constants/reportConstants';\r\n// import {REPORT_SETTING} from './constants';\r\n\r\nexport function getOptionText(item, controlItems, formData, t) {\r\n return controlItems[item] && controlItems[item].optionItems\r\n ? t(controlItems[item].optionItems[formData[item]])\r\n : null;\r\n}\r\n\r\nexport function formatRatingText(fieldValue, displayText) {\r\n //If it is rated above standard then remove the letters at the front\r\n let newText = displayText;\r\n if (parseInt(fieldValue) > 100) {\r\n let blankLocation = displayText.indexOf(' ');\r\n if (blankLocation >= 0) {\r\n newText = displayText.substring(blankLocation + 1);\r\n }\r\n console.log(`newtext = ${newText}`);\r\n return newText;\r\n }\r\n}\r\n\r\nexport const getScalarItem = (scalarItemsArray, name) => {\r\n let aScalarItem = {};\r\n let filterArray = scalarItemsArray.filter(\r\n (scalarItem) => scalarItem.name.toUpperCase() === name.toUpperCase()\r\n );\r\n if (filterArray.length === 0) {\r\n return aScalarItem;\r\n } else {\r\n return filterArray[0];\r\n }\r\n};\r\n\r\nexport const buildScalarFromControlItems = (controlItems, scalarReportArray, formData, user, t) => {\r\n const optionsProduct = {\r\n 131: 'Term 10',\r\n 132: 'Term 20',\r\n 133: 'Term 30',\r\n };\r\n\r\n Object.keys(controlItems).forEach((item) => {\r\n //We cannot use !formData[item] to test if the item is in formData because for booleans this will return false (ie checkboxes that are off) use !(item in formData) instead\r\n //if(!formData[item]){\r\n // return;\r\n // }\r\n\r\n if (!(item in formData)) {\r\n return;\r\n }\r\n\r\n //Null items break it so don't process them\r\n if (formData[item] === null) {\r\n console.log(\"null item in formData: ${item}\", item);\r\n }\r\n else {\r\n let desc = `${item}-description`;\r\n let temp = t(desc);\r\n let key = '';\r\n let value = '';\r\n\r\n //Extracting optionItems\r\n let optionItems = controlItems[item].useOptions ? controlItems[item].optionItems : {};\r\n //Static data\r\n\r\n // if (user[\"reportLanguage\"] === \"English\") {\r\n // desc = desc + \"-en\";\r\n // } else if (user[\"reportLanguage\"] === \"French\") {\r\n // desc = desc + \"-fr\";\r\n // }\r\n\r\n let name = temp.length > 0 && temp !== '' ? temp : item;\r\n\r\n let searchString = 'chkEappFundSelection1_String,chkEappFundSelection1,cboEappFundSelection1,cboEappFundSelection1_Desc,txtEappFundSelectionInterestRate1,txtEappFundSelectionAllocationPercent1,chkEappFundSelection2_String,chkEappFundSelection2,cboEappFundSelection2,cboEappFundSelection2_Desc,txtEappFundSelectionInterestRate2,txtEappFundSelectionAllocationPercent2,chkEappFundSelection3_String,chkEappFundSelection3,cboEappFundSelection3,cboEappFundSelection3_Desc,txtEappFundSelectionInterestRate3,txtEappFundSelectionAllocationPercent3,chkEappFundSelection4_String,chkEappFundSelection4,cboEappFundSelection4, cboEappFundSelection4_Desc,txtEappFundSelectionInterestRate4,txtEappFundSelectionAllocationPercent4,Medical_String,Medical,ECG_String,ECG,Urine_String,Urine,Saliva_String,Saliva,BloodProfile_String,BloodProfile,Inspection_String,Inspection,MVR_String,MVR,ParaMedical_String,ParaMedical,Eapp Multi Owner Election,chkDeclarationAuthorization,chkPaymentDeclaration,Eapp WPD,Eapp GPO,Eapp AIB,Eapp AIB Owner Age,'\r\n let remove_String = 'chkEappFundSelection1_String, chkEappFundSelection1, cboEappFundSelection1, cboEappFundSelection1_Desc, txtEappFundSelectionInterestRate1, txtEappFundSelectionAllocationPercent1, chkEappFundSelection2_String, chkEappFundSelection2, cboEappFundSelection2, cboEappFundSelection2_Desc, txtEappFundSelectionInterestRate2, txtEappFundSelectionAllocationPercent2, chkEappFundSelection3_String, chkEappFundSelection3, cboEappFundSelection3, cboEappFundSelection3_Desc, txtEappFundSelectionInterestRate3, txtEappFundSelectionAllocationPercent3, chkEappFundSelection4_String, chkEappFundSelection4, cboEappFundSelection4, cboEappFundSelection4_Desc, txtEappFundSelectionInterestRate4, txtEappFundSelectionAllocationPercent4,Medical_String,Medical,ECG_String,ECG,Urine_String,Urine,Saliva_String,Saliva,BloodProfile_String,BloodProfile,Inspection_String,Inspection,MVR_String,MVR,ParaMedical_String,ParaMedical,Eapp Multi Owner Election,chkDeclarationAuthorization,chkPaymentDeclaration,Eapp WPD,Eapp GPO,Eapp AIB,Eapp AIB Owner Age,'\r\n //For the demo we seem to be hitting the maximum number of scalars allowed\r\n //so I am removing some that we do not need for demo\r\n if (searchString.includes(','+name)) {\r\n console.log(\"Report Scalar Skip = \", name);\r\n return;\r\n } else {\r\n\r\n switch (controlItems[item].fieldType) {\r\n case INPUTTYPES.INPUT_UPPER:\r\n case INPUTTYPES.INPUT_TEXT:\r\n case INPUTTYPES.INPUT_NAME:\r\n case INPUTTYPES.INPUT_INTEGER:\r\n case INPUTTYPES.INPUT_NUMBER: //This type is different from Integer in a way how number will be displayed on the page (without money formatting)\r\n case INPUTTYPES.INPUT_LONGINT:\r\n case INPUTTYPES.INPUT_REAL:\r\n case INPUTTYPES.INPUT_DOLLAR:\r\n case INPUTTYPES.INPUT_PERCENT:\r\n case INPUTTYPES.INPUT_DOLLAR_INTEGER:\r\n case INPUTTYPES.INPUT_DATE:\r\n case INPUTTYPES.INPUT_PHONE:\r\n case INPUTTYPES.INPUT_POSTALCODE:\r\n case INPUTTYPES.INPUT_EMAIL:\r\n if (formData[item].length > 100) {\r\n let strArray = formData[item].match(/(.|[\\r\\n]){1,100}/g);\r\n strArray.forEach((str, idx) => {\r\n /**\r\n * Below condition is to make sure that existing reports do not break in case their text is more than 100 chars\r\n * For reports with more than 100 chars. variables be like:\r\n * txt2aCrimeDetails, txt2aCrimeDetails1, txt2aCrimeDetails2 etc.\r\n * Also, if text length is less than 100 for these fields. It works, because first variable is txt2aCrimeDetails in both cases\r\n */\r\n if (idx === 0) {\r\n scalarReportArray.push(addScalarItem(name, str, controlItems[item].fieldType));\r\n } else {\r\n scalarReportArray.push(\r\n addScalarItem(`${name}${idx}`, str, controlItems[item].fieldType)\r\n );\r\n }\r\n });\r\n } else {\r\n //console.log(\"field name = \", name);\r\n //console.log(\"formData[item] = \", formData[item]);\r\n scalarReportArray.push(addScalarItem(name, formData[item], controlItems[item].fieldType));\r\n }\r\n // scalarReportArray.push(addScalarItem(name, formData[item], controlItems[item].fieldType));\r\n break;\r\n case INPUTTYPES.INPUT_COMBO:\r\n case INPUTTYPES.INPUT_RADIO:\r\n scalarReportArray.push(addScalarItem(item, formData[item], INPUTTYPES.INPUT_UPPER));\r\n let nameDesc = name;\r\n if (controlItems[item].useOptions && name === item) {\r\n nameDesc = `${name}_Desc`;\r\n }\r\n if (controlItems[item].useOptions) {\r\n for (key of Object.keys(optionItems)) {\r\n if (key === formData[item]) {\r\n value = t(optionItems[key]);\r\n value = value.slice(0, 125);\r\n scalarReportArray.push(addScalarItem(nameDesc, value, INPUTTYPES.INPUT_UPPER)); // Add NAME(or NAME_DESC) | VALUE | STRING TYPE\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n case INPUTTYPES.INPUT_CHECK:\r\n let name_String = `${item}_String`;\r\n let value_String = formData[item] ? '1' : '0';\r\n if (controlItems[item].formName.toUpperCase() == \"EAPPLICATION\") {\r\n console.log(\"Report Scalar_String Skip = \", item);\r\n } else {\r\n scalarReportArray.push(addScalarItem(name_String, value_String, INPUTTYPES.INPUT_UPPER));\r\n }\r\n scalarReportArray.push(addScalarItem(name, formData[item], controlItems[item].fieldType));\r\n break;\r\n case INPUTTYPES.INPUT_MULTICHECK:\r\n scalarReportArray.push(addScalarItem(name, formData[item], INPUTTYPES.INPUT_UPPER));\r\n // let tempArr = [];\r\n // for (key of Object.keys(optionItems)) {\r\n // if (key === formData[item]) {\r\n // tempArr.push(t(optionItems[key]));\r\n // }\r\n // }\r\n // value = tempArr.join(\",\");\r\n // scalarReportArray.push(\r\n // addScalarItem(name, value, INPUTTYPES.INPUT_UPPER)\r\n // );\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n};\r\n\r\nexport function buildScalarsFromCalculationGlobalVariables(globalVariables, scalarReportArray) {\r\n let aScalarReportItem = {};\r\n for (let aGlobalVariable of globalVariables) {\r\n //console.log(`aGlobalVariable.name = ${aGlobalVariable.name}`, aGlobalVariable);\r\n aScalarReportItem = copyGlobalToReportItem(aGlobalVariable);\r\n scalarReportArray.push(aScalarReportItem);\r\n }\r\n}\r\n\r\nfunction copyGlobalToReportItem(aGlobalVariable) {\r\n //It is necessary to put this into a separate function to create a new variable\r\n let aScalarReportItem = {};\r\n aScalarReportItem.name = aGlobalVariable.name;\r\n if (aGlobalVariable.booleanValue === true) {\r\n aScalarReportItem.booleanValue = 1;\r\n } else {\r\n aScalarReportItem.booleanValue = 0;\r\n }\r\n aScalarReportItem.dataType = aGlobalVariable.dataType;\r\n aScalarReportItem.dateValue = aGlobalVariable.dateValue;\r\n aScalarReportItem.doubleValue = aGlobalVariable.doubleValue;\r\n aScalarReportItem.integerValue = aGlobalVariable.integerValue;\r\n aScalarReportItem.longIntValue = aGlobalVariable.longIntValue;\r\n aScalarReportItem.singleValue = aGlobalVariable.singleValue;\r\n aScalarReportItem.format = aGlobalVariable.format;\r\n aScalarReportItem.stringValue = aGlobalVariable.stringValue;\r\n return aScalarReportItem;\r\n}\r\n\r\nexport function addScalarItem(name, value, dataType) {\r\n let scalarItemObject = {};\r\n scalarItemObject.name = name;\r\n switch (dataType) {\r\n case INPUTTYPES.INPUT_NAME:\r\n case INPUTTYPES.INPUT_TEXT:\r\n case INPUTTYPES.INPUT_UPPER:\r\n case INPUTTYPES.INPUT_COMBO:\r\n case INPUTTYPES.INPUT_RADIO:\r\n case ScalarTypes.SCALAR_STRING:\r\n case INPUTTYPES.INPUT_POSTALCODE:\r\n case INPUTTYPES.INPUT_EMAIL:\r\n scalarItemObject.stringValue = value;\r\n scalarItemObject.dataType = REPORT_SETTING.STRING;\r\n break;\r\n case INPUTTYPES.INPUT_INTEGER:\r\n case ScalarTypes.SCALAR_INTEGER:\r\n if (value === '') {\r\n value = '0';\r\n }\r\n scalarItemObject.integerValue = parseInt(value);\r\n scalarItemObject.longIntValue = parseInt(value);\r\n scalarItemObject.dataType = REPORT_SETTING.INTEGER;\r\n\r\n break;\r\n case INPUTTYPES.INPUT_LONGINT:\r\n case ScalarTypes.SCALAR_LONGINT:\r\n case INPUTTYPES.INPUT_DOLLAR_INTEGER:\r\n case INPUTTYPES.INPUT_NUMBER:\r\n if (value === '') {\r\n value = '0';\r\n }\r\n scalarItemObject.longIntValue = parseInt(value);\r\n scalarItemObject.dataType = REPORT_SETTING.LONGINT;\r\n\r\n break;\r\n case INPUTTYPES.INPUT_REAL:\r\n case INPUTTYPES.INPUT_DOLLAR:\r\n case INPUTTYPES.INPUT_PERCENT:\r\n case ScalarTypes.SCALAR_DOUBLE:\r\n if (value === '') {\r\n value = '0';\r\n }\r\n scalarItemObject.doubleValue = parseFloat(value);\r\n scalarItemObject.dataType = REPORT_SETTING.DOUBLE;\r\n\r\n break;\r\n case INPUTTYPES.INPUT_CHECK:\r\n case ScalarTypes.SCALAR_BOOLEAN:\r\n \r\n if (value === '') {\r\n value = 'false';\r\n console.log(`build scalar: ${name} had blank was updated to false`);\r\n }\r\n scalarItemObject.booleanValue = JSON.parse(value) ? 1 : 0;\r\n scalarItemObject.dataType = REPORT_SETTING.BOOLEAN;\r\n break;\r\n case INPUTTYPES.INPUT_PHONE:\r\n scalarItemObject.stringValue = value;\r\n scalarItemObject.dataType = REPORT_SETTING.STRING;\r\n break;\r\n case ScalarTypes.SCALAR_DATE:\r\n case INPUTTYPES.INPUT_DATE:\r\n let date = formattedDate(value);\r\n //console.log(typeof date, parseDate(date));\r\n scalarItemObject.stringValue = date; // Parse to DD/MM/YYYY\r\n scalarItemObject.dateValue = parseDate(date); // Parse to YYYY-MM-DDT12:00:00.000+00:00\r\n scalarItemObject.dataType = REPORT_SETTING.DATE; //ToDo - Make Date format work for Report\r\n // scalarItemObject.dataType = REPORT_SETTING.STRING;\r\n break;\r\n default:\r\n break;\r\n }\r\n return scalarItemObject;\r\n}\r\n\r\nexport function getIllustrationNumber() {\r\n const today = new Date();\r\n //We had to add .toString() on the first one so that the result was treated as a string and not numbers that would get added together\r\n return (\r\n parseDay(today.getDate()) +\r\n parseDay(parseInt(today.getMonth() + 1)) +\r\n today.getFullYear() +\r\n parseDay(today.getHours()) +\r\n parseDay(today.getMinutes()) +\r\n parseDay(today.getSeconds())\r\n );\r\n}\r\n\r\nconst parseDay = (day) => {\r\n let temp = '00' + day;\r\n return temp.substring(temp.length - 2, temp.length);\r\n};\r\n\r\nconst parseDate = (date) => {\r\n const dd = date.substring(0, 2);\r\n const mm = date.substring(3, 5);\r\n const yyyy = date.substring(6);\r\n let returnDate = `${yyyy}-${mm}-${dd}T12:00:00.000+00:00`;\r\n\r\n return returnDate;\r\n};\r\nconst formattedDate = (date) => {\r\n let formatDate = date;\r\n // if (typeof date === \"string\") {\r\n // formatDate = new Date(date);\r\n\r\n // console.log(\"format Date\", formatDate);\r\n // }\r\n return new Intl.DateTimeFormat(\"en-GB\", {\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n }).format(formatDate);\r\n};\r\n","import * as customEvents from 'custom/common/utils/customEvents';\r\nimport {sendTrackingInfo} from 'core/api/trackingWebService';\r\nimport {INPUTTYPES} from 'core/constants/uiConstants';\r\n\r\nfunction GlobalRunLostRecalls(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n) {\r\n if (\r\n controlItems &&\r\n controlItems[name] &&\r\n controlItems[name].recallItems != null /*&& !controlItems[name].isError*/\r\n ) {\r\n // if (controlItems[name] && controlItems[name].recallItems != null) {\r\n controlItems[name].recallItems.forEach((name) => {\r\n customEvents.GlobalCustomLostFocus(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n false,\r\n true\r\n );\r\n });\r\n }\r\n}\r\n\r\nfunction GlobalRunRecalls(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n) {\r\n if (\r\n controlItems &&\r\n controlItems[name] &&\r\n controlItems[name].recallItems != null /*&& !controlItems[name].isError*/\r\n ) {\r\n // if (controlItems[name] && controlItems[name].recallItems != null) {\r\n controlItems[name].recallItems.forEach((name) => {\r\n customEvents.GlobalCustomBusinessRules(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n false,\r\n true\r\n );\r\n });\r\n }\r\n}\r\n\r\nexport function GlobalGetFocus(\r\n name,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems\r\n) {\r\n formData[\"CurrentField\"] = name;\r\n // updateFormData('CurrentField', name);\r\n}\r\n\r\nexport function GlobalLostFocus(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n) {\r\n /**\r\n * When we switch between fields, sometimes new field Get focus call happens before Lost focus of old field, thereby making CurrentField to null.\r\n */\r\n if (formData[\"CurrentField\"] === name) {\r\n formData[\"CurrentField\"] = \"\";\r\n // updateFormData('CurrentField', '');\r\n }\r\n\r\n customEvents.GlobalCustomLostFocus(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n false,\r\n false\r\n );\r\n //Add back when user and inforceData is added into GlobalCustomLostFocus\r\n //customEvents.GlobalCustomBusinessRules(\r\n // name,\r\n // user,\r\n // controlItems,\r\n // formData,\r\n // elementItems,\r\n // interfaceSetupItems,\r\n // updateFormData,\r\n // updateControlItems,\r\n // inforceData\r\n //);\r\n GlobalRunLostRecalls(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n}\r\n\r\nconst BUTTON_CLICK = 'BUTTON_CLICK';\r\nconst TAB_CLICK = 'TAB_CLICK';\r\nconst CONTROL_CHANGE = 'CONTROL_CHANGE';\r\nconst RUN_QUERY = 'RUN_QUERY';\r\nconst PAGE_LOAD = 'PAGE_LOAD';\r\n\r\nconst getEventType = (controlItems, name) => {\r\n let eventType = BUTTON_CLICK;\r\n switch (controlItems[name].fieldType) {\r\n case INPUTTYPES.INPUT_BUTTON:\r\n eventType = BUTTON_CLICK;\r\n break;\r\n case INPUTTYPES.INPUT_TAB:\r\n eventType = TAB_CLICK;\r\n break;\r\n case INPUTTYPES.INPUT_UPPER:\r\n case INPUTTYPES.INPUT_REAL:\r\n case INPUTTYPES.INPUT_LABEL:\r\n case INPUTTYPES.INPUT_COMBO:\r\n case INPUTTYPES.INPUT_CHECK:\r\n case INPUTTYPES.INPUT_INTEGER:\r\n eventType = CONTROL_CHANGE;\r\n break;\r\n case INPUTTYPES.INPUT_PAGE:\r\n eventType = PAGE_LOAD;\r\n break;\r\n default:\r\n break;\r\n }\r\n return eventType;\r\n};\r\nfunction GlobalBuildTrackingData(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n) {\r\n let trackingData = {};\r\n\r\n //Remove the milliseconds from the timestamp\r\n let timestamp = Math.trunc(Date.now() / 1000);\r\n let formName = formData['formName'];\r\n let eventType = getEventType(controlItems, name);\r\n\r\n const { trackingUserName, username, agentID } = user;\r\n trackingData.header = {\r\n username: trackingUserName,\r\n loginUserName: username,\r\n eventType,\r\n formName,\r\n name,\r\n agentID,\r\n timestamp,\r\n };\r\n let customData = customEvents.GlobalCustomBuildTrackingData(\r\n name,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n inforceData\r\n );\r\n if (!customData) {\r\n trackingData.detail = {...formData};\r\n } else {\r\n trackingData.detail = customData;\r\n }\r\n\r\n return trackingData;\r\n}\r\nfunction GlobalTrackingEvents(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n) {\r\n if (controlItems && controlItems[name] && controlItems[name].isTracking) {\r\n let trackingData = {};\r\n trackingData = GlobalBuildTrackingData(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n sendTrackingInfo(trackingData);\r\n }\r\n}\r\nexport function GlobalChange(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n) {\r\n GlobalTrackingEvents(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n customEvents.GlobalCustomBusinessRules(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n false,\r\n false\r\n );\r\n GlobalRunRecalls(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n}\r\n\r\nexport function GlobalClick(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n) {\r\n GlobalTrackingEvents(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n customEvents.GlobalCustomClickBusinessRules(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n}\r\n","import React from 'react';\r\nimport * as globalEvents from 'core/utils/globalEvents';\r\nimport * as customEvents from 'custom/common/utils/customEvents';\r\nimport {setInterceptor, setInterceptorAD} from 'core/utils/setAuthConfig';\r\nimport {fetchUser} from 'core/redux/actions';\r\nimport {dataStore} from 'core/redux/store';\r\nimport axios from 'axios';\r\n\r\n// MSAL imports\r\nimport {PublicClientApplication, EventType} from '@azure/msal-browser';\r\nimport {loginRequest, msalConfig} from 'lib/authConfig';\r\n\r\nexport const msalInstance = new PublicClientApplication(msalConfig);\r\n\r\n// Account selection logic is app dependent. Adjust as needed for different use cases.\r\nconst accounts = msalInstance.getAllAccounts();\r\nif (accounts.length > 0) {\r\n msalInstance.setActiveAccount(accounts[0]);\r\n}\r\n\r\nmsalInstance.addEventCallback((event) => {\r\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload.account) {\r\n const account = event.payload.account;\r\n msalInstance.setActiveAccount(account);\r\n }\r\n});\r\n\r\nexport const withCoreEvents = (WrappedComponent) => {\r\n class ContainerComponent extends React.Component {\r\n state = {\r\n isAppLoading: false,\r\n isAppChanging: false,\r\n };\r\n appLoad = async (\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n ) => {\r\n this.setState({isAppLoading: true});\r\n await this.appRunAllBusinessRules(\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n this.setState({isAppLoading: false});\r\n };\r\n appGetFocus = (\r\n event,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems\r\n ) => {\r\n globalEvents.GlobalGetFocus(\r\n event.target.name,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n updateFormData,\r\n updateControlItems\r\n );\r\n };\r\n appLostFocus = (\r\n event,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n ) => {\r\n globalEvents.GlobalLostFocus(\r\n event.target.name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n };\r\n appChange = async (\r\n event,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n ) => {\r\n this.setState({isAppLoading: true});\r\n await globalEvents.GlobalChange(\r\n event.target.name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n this.setState({isAppLoading: false});\r\n };\r\n appClick = async (\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n ) => {\r\n this.setState({isAppLoading: true});\r\n await globalEvents.GlobalClick(\r\n name,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n );\r\n this.setState({isAppLoading: false});\r\n };\r\n appRunAllBusinessRules = (\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData\r\n ) => {\r\n Object.keys(formData).forEach((item) => {\r\n customEvents.GlobalCustomBusinessRules(\r\n item,\r\n user,\r\n controlItems,\r\n formData,\r\n elementItems,\r\n interfaceSetupItems,\r\n interfaceSetupArray,\r\n allSetupItems,\r\n updateFormData,\r\n updateControlItems,\r\n inforceData,\r\n true\r\n );\r\n });\r\n };\r\n async componentDidMount() {\r\n let tokenMethod;\r\n try {\r\n const {data} = await axios.get('/api/getTokenMethod');\r\n tokenMethod = data;\r\n sessionStorage.setItem('tokenMethod', tokenMethod);\r\n } catch (error) {\r\n console.log('getTokenMethod error: ', error);\r\n }\r\n if (tokenMethod === 'AD') {\r\n try {\r\n let isRefresh = false;\r\n if (sessionStorage.getItem('refreshToken')) {\r\n isRefresh = true;\r\n }\r\n await msalInstance.handleRedirectPromise();\r\n const {account, accessToken} = await msalInstance.acquireTokenPopup(loginRequest);\r\n const refreshToken = {jwt: accessToken};\r\n\r\n sessionStorage.setItem('refreshToken', JSON.stringify(refreshToken));\r\n setInterceptorAD();\r\n dataStore.dispatch(fetchUser(account, isRefresh));\r\n } catch (error) {\r\n console.log('error occured: ' + error);\r\n }\r\n } else {\r\n const refreshToken = JSON.parse(sessionStorage.getItem('refreshToken'));\r\n if (refreshToken) {\r\n setInterceptor();\r\n dataStore.dispatch(fetchUser(undefined, true)); // (account, isRefresh)\r\n }\r\n }\r\n }\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n return ContainerComponent;\r\n};\r\nexport default withCoreEvents;\r\n","import {LogLevel} from '@azure/msal-browser';\r\n// Browser check variables\r\n// If you support IE, our recommendation is that you sign-in using Redirect APIs\r\n// If you as a developer are testing using Edge InPrivate mode, please add \"isEdge\" to the if check\r\nconst ua = window.navigator.userAgent;\r\nconst msie = ua.indexOf('MSIE ');\r\nconst msie11 = ua.indexOf('Trident/');\r\nconst msedge = ua.indexOf('Edge/');\r\nconst firefox = ua.indexOf('Firefox');\r\nconst isIE = msie > 0 || msie11 > 0;\r\nconst isEdge = msedge > 0;\r\nconst isFirefox = firefox > 0; // Only needed if you need to support the redirect flow in Firefox incognito\r\n\r\n// Config object to be passed to Msal on creation\r\nexport const msalConfig = {\r\n auth: {\r\n clientId: process.env.REACT_APP_CLIENT_ID,\r\n authority: `https://login.microsoftonline.com/${process.env.REACT_APP_TENANT_ID}`,\r\n redirectUri: process.env.REACT_APP_REDIRECT_URI,\r\n postLogoutRedirectUri: 'http://localhost:5001/login',\r\n // navigateToLoginRequestUrl: false,\r\n },\r\n cache: {\r\n cacheLocation: 'localStorage', // This configures where your cache will be stored\r\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: (level, message, containsPii) => {\r\n if (containsPii) {\r\n return;\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message);\r\n return;\r\n case LogLevel.Info:\r\n // console.info(message);\r\n return;\r\n case LogLevel.Verbose:\r\n console.debug(message);\r\n return;\r\n case LogLevel.Warning:\r\n console.warn(message);\r\n return;\r\n default:\r\n return;\r\n }\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const apiConfig = {\r\n resourceUri: 'http://localhost:44376/api/profile',\r\n resourceScopes: [process.env.REACT_APP_RESOURCE_SCOPE],\r\n};\r\n\r\n// Add here scopes for id token to be used at MS Identity Platform endpoints.\r\nexport const loginRequest = {\r\n scopes: ['openid', 'profile', ...apiConfig.resourceScopes],\r\n};\r\n\r\n// Add here scopes for access token to be used at the API endpoints.\r\nexport const tokenRequest = {\r\n scopes: [...apiConfig.resourceScopes],\r\n};\r\n\r\n// Add here the endpoints for MS Graph API services you would like to use.\r\nexport const graphConfig = {\r\n graphMeEndpoint: 'https://graph.microsoft.com/v1.0/me',\r\n};\r\n","import {ActionTypes} from '../Types';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\n\r\nconst initialState = {\r\n admin: [\r\n {\r\n routeId: 'admin01',\r\n appName: 'Admin',\r\n subModule: 'dashboard',\r\n paths: ['/admin/dashboard', '/admin/dashboard/'],\r\n displayName: 'titleAdmin',\r\n button: 'btnDashboard',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'admin02',\r\n appName: 'Admin',\r\n subModule: 'roles',\r\n paths: ['/admin/roles', '/admin/roles/'],\r\n displayName: 'titleAdmin',\r\n button: 'btnRoles',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'admin03',\r\n appName: 'Admin',\r\n subModule: 'users',\r\n paths: ['/admin/users', '/admin/users/'],\r\n displayName: 'titleAdmin',\r\n button: 'btnUsers',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'admin04',\r\n appName: 'Admin',\r\n subModule: 'bi',\r\n paths: ['/admin/bi', '/admin/bi/'],\r\n displayName: 'titleAdmin',\r\n button: 'btnWidgetSettings',\r\n isVisible: true,\r\n }\r\n ],\r\n illustration: [\r\n {\r\n routeId: 'illus01',\r\n appName: 'NewBusiness',\r\n subModule: 'illustration',\r\n paths: ['/illustration', '/illustration/'],\r\n button: 'btnCreateIllustration',\r\n displayName: 'titleNewBusiness',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'illus02',\r\n appName: 'NewBusiness',\r\n subModule: 'savedIllustration',\r\n paths: ['/illustration/savedIllustration', '/illustration/savedIllustration/'],\r\n button: 'btnSavedIllustration',\r\n displayName: 'titleNewBusiness',\r\n isVisible: true,\r\n },\r\n ],\r\n inforce: [\r\n {\r\n routeId: 'inforce01',\r\n appName: 'Inforce',\r\n subModule: 'policyLookup',\r\n paths: ['/inforce/policyLookup', '/inforce/policyLookup/'],\r\n button: 'btnPolicyLookup',\r\n displayName: 'titleInforce',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'inforce02',\r\n appName: 'Inforce',\r\n subModule: 'alphalookup',\r\n paths: ['/inforce/alphalookup', '/inforce/alphalookup/'],\r\n button: 'btnAlphaLookup',\r\n displayName: 'titleInforce',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'inforce03',\r\n appName: 'Inforce',\r\n subModule: 'dataReports',\r\n paths: ['/inforce/dataReports', '/inforce/dataReports/'],\r\n displayName: 'titleInforce',\r\n button: 'btnDataReports',\r\n isVisible: true,\r\n },\r\n ],\r\n eapplication: [\r\n {\r\n routeId: 'eapp01',\r\n appName: 'EApplication',\r\n subModule: 'eApplication',\r\n paths: ['/eapplication', '/eapplication/'],\r\n displayName: 'titleEApplication',\r\n button: 'btnEApplication',\r\n isVisible: true,\r\n },\r\n ],\r\n \"eapp-settings\": [\r\n {\r\n routeId: 'eapp-settings01',\r\n appName: 'E-Application',\r\n subModule: 'eapp-settings',\r\n paths: ['/eapp-settings', '/eapp-settings/'],\r\n displayName: 'titleEApplication',\r\n button: 'btnEApplication',\r\n isVisible: true,\r\n },\r\n ],\r\n proneeds: [\r\n {\r\n routeId: 'proneeds01',\r\n appName: 'ProNeeds',\r\n subModule: 'proneeds',\r\n paths: ['/proneeds', '/proneeds/'],\r\n displayName: 'titleProNeeds',\r\n button: 'btnProneeds',\r\n isVisible: true,\r\n },\r\n ],\r\n template: [\r\n {\r\n routeId: 'template01',\r\n appName: 'Template',\r\n subModule: 'template',\r\n paths: ['/template', '/template/'],\r\n displayName: 'titleTemplate',\r\n button: 'btnTemplate',\r\n isVisible: true,\r\n },\r\n ],\r\n developer: [\r\n {\r\n routeId: 'developer01',\r\n appName: 'Developer',\r\n subModule: 'controlItems',\r\n paths: ['/developer/controlItems', '/developer/controlItems/'],\r\n displayName: 'titleDeveloper',\r\n button: 'btnControlItems',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'developer02',\r\n appName: 'Developer',\r\n subModule: 'interfaceSetupItems',\r\n paths: ['/developer/interfaceSetupItems', '/developer/interfaceSetupItems/'],\r\n displayName: 'titleDeveloper',\r\n button: 'btnInterfaceSetupItems',\r\n isVisible: true,\r\n },\r\n ],\r\n bi: [\r\n {\r\n routeId: 'bi01',\r\n appName: 'BI',\r\n subModule: 'widgets',\r\n paths: ['/bi/widgets', '/bi/widgets/'],\r\n displayName: 'titleDeveloper',\r\n button: 'btnBIDashboard',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'bi02',\r\n appName: 'BI',\r\n subModule: 'tracking',\r\n paths: ['/bi/tracking', '/bi/tracking/'],\r\n displayName: 'titleDeveloper',\r\n button: 'btnTracking',\r\n isVisible: true,\r\n },\r\n {\r\n routeId: 'bi03',\r\n appName: 'BI',\r\n subModule: 'biReports',\r\n paths: ['/bi/biReports', '/bi/biReports/'],\r\n displayName: 'titleDeveloper',\r\n button: 'btnBIReports',\r\n isVisible: true,\r\n },\r\n ],\r\n};\r\n\r\nconst routesReducer = (state = initialState, action) => {\r\n let routes = {};\r\n let adminRoutes = [];\r\n switch (action.type) {\r\n case ActionTypes.HIDE_BI_DETAILS:\r\n routes = cloneDeep(state);\r\n const biRoutes = routes[\"bi\"];\r\n for (let i = 0; i < biRoutes.length; i++) {\r\n if (biRoutes[i].subModule === \"tracking\") {\r\n biRoutes[i].isVisible = false;\r\n }\r\n }\r\n routes[\"bi\"] = biRoutes;\r\n return routes;\r\n case ActionTypes.HIDE_TRACKING:\r\n routes = cloneDeep(state);\r\n adminRoutes = routes[\"admin\"];\r\n for (let i = 0; i < adminRoutes.length; i++) {\r\n if (\r\n adminRoutes[i].subModule === \"bi\" ||\r\n adminRoutes[i].subModule === \"tracking\" ||\r\n adminRoutes[i].subModule === \"biReports\" ||\r\n adminRoutes[i].subModule === \"widgets\"\r\n ) {\r\n //For demo, tracking is always set to true\r\n adminRoutes[i].isVisible = false;\r\n //adminRoutes[i].isVisible = false;\r\n }\r\n }\r\n routes[\"admin\"] = adminRoutes;\r\n return routes;\r\n\r\n case ActionTypes.HIDE_USERS:\r\n routes = cloneDeep(state);\r\n adminRoutes = routes[\"admin\"];\r\n for (let i = 0; i < adminRoutes.length; i++) {\r\n if (\r\n adminRoutes[i].subModule === \"users\" ||\r\n adminRoutes[i].subModule === \"dashboard\"\r\n ) {\r\n //For demo, tracking is always set to true\r\n adminRoutes[i].isVisible = false;\r\n //adminRoutes[i].isVisible = false;\r\n }\r\n }\r\n routes[\"admin\"] = adminRoutes;\r\n return routes;\r\n\r\n case ActionTypes.HIDE_DEV_ROUTE:\r\n routes = cloneDeep(state);\r\n const devRoutes = routes[\"developer\"];\r\n for (let i = 0; i < devRoutes.length; i++) {\r\n devRoutes[i].isVisible = false;\r\n }\r\n routes[\"developer\"] = devRoutes;\r\n return routes;\r\n\r\n case ActionTypes.SET_ROUTES:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport {routesReducer as routes};\r\n","import { ActionTypes } from \"custom/common/redux/Types\";\r\n\r\nconst getFirstYearPremium = (state = {}, action) => {\r\n const { type, payload } = action;\r\n switch (type) {\r\n case ActionTypes.GET_FIRSTYEAR_PREMIUM:\r\n // let tempArr = payload[\"dblTableData_Main\"].concat(payload[\"dblTableData_Main\"]);\r\n // dblTableDataMerge(payload[\"dblTableData_Main\"], tempArr);\r\n // columnItemsMerge(payload[\"columnItems\"], payload[\"columnItems\"], \"ALT\");\r\n return {\r\n ...state,\r\n ...payload\r\n };\r\n case ActionTypes.REMOVE_FIRSTYEAR_PREMIUM:\r\n return {};\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n// const dblTableDataMerge = (arr1, arr2) => {\r\n// let mergedArray = [];\r\n// if (arr1.length > arr2.length) {\r\n// mergedArray = merge(arr1, arr2);\r\n// } else {\r\n// mergedArray = merge(arr2, arr1);\r\n// }\r\n// return mergedArray;\r\n// };\r\n\r\n// function merge(arr1, arr2) {\r\n// let new2dArr = [];\r\n// let temp1dArr = [];\r\n// let temp0Arr = Array(arr2[0].length).fill(0);\r\n\r\n// for (let idx = 0; idx < arr1.length; idx++) {\r\n// temp1dArr = [...arr1[idx]];\r\n// if (idx < arr2.length) {\r\n// temp1dArr=temp1dArr.concat(arr2[idx]);\r\n// } else {\r\n// temp1dArr=temp1dArr.concat(temp0Arr);\r\n// }\r\n// new2dArr.push(temp1dArr);\r\n// }\r\n// return new2dArr;\r\n// }\r\n\r\nexport {getFirstYearPremium as firstYearPremium};","import { ActionTypes } from \"custom/common/redux/Types\";\r\n\r\nconst loadInforceDataReducer = (state = {}, action) => {\r\n const { type, payload } = action;\r\n\r\n switch (type) {\r\n case ActionTypes.INFORCE_LOAD:\r\n return payload;\r\n case ActionTypes.INFORCE_REMOVE:\r\n return {};\r\n case ActionTypes.INFORCE_LOAD_ERROR:\r\n if (payload.status === 500) {\r\n return {\r\n errorCode: payload.status,\r\n errorMessage: \"Internal server error, please try after sometime\"\r\n };\r\n }\r\n return { errorCode: 2, errorMessage: \"There is some error with request\" };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst loadTreeDataReducer = (state = {}, action) => {\r\n const { type, payload } = action;\r\n\r\n switch (type) {\r\n case ActionTypes.TREE_BUILD:\r\n return payload;\r\n case ActionTypes.TREE_REMOVE:\r\n return {};\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport {\r\n loadInforceDataReducer as inforceData,\r\n loadTreeDataReducer as treeData\r\n};\r\n","import {ActionTypes} from 'custom/common/redux/Types';\r\n\r\nconst alphaLookupReducer = (state = [], action) => {\r\n const {type, payload} = action;\r\n\r\n switch (type) {\r\n case ActionTypes.FETCH_ALPHALOOKUP:\r\n let data = payload.slice();\r\n for (let item in data) {\r\n data[item] = {...data[item], expanded: true};\r\n }\r\n return data;\r\n case ActionTypes.FETCHERROR_ALPHALOOKUP:\r\n case ActionTypes.CLEAR_ALPHALOOKUP:\r\n return [];\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport {alphaLookupReducer as alphaLookupData};\r\n","import { ActionTypes } from \"custom/common/redux/Types\";\r\n\r\nconst initialState = {\r\n isLoaded: false\r\n};\r\n\r\nconst dataReportsReducer = (state = initialState, action) => {\r\n const { type, payload } = action;\r\n\r\n switch (type) {\r\n case ActionTypes.FETCH_DATAREPORTS:\r\n return { ...state, ...payload, isLoaded: true };\r\n case ActionTypes.FETCHERROR_DATAREPORTS:\r\n case ActionTypes.CLEAR_DATAREPORTS:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { dataReportsReducer as dataReports };\r\n","import {ActionTypes} from 'custom/common/redux/Types';\r\n\r\nconst rolesReducer = (state = [], action) => {\r\n const {type, payload} = action;\r\n switch (type) {\r\n case ActionTypes.ALL_ROLES:\r\n return payload;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport {rolesReducer as roles};\r\n","import {ActionTypes} from '../types';\r\n\r\nconst initialState = {};\r\n\r\nconst alertReducer = (state = initialState, action) => {\r\n const {type, payload, name} = action;\r\n switch (type) {\r\n case ActionTypes.SET_ALERT:\r\n return {...state, [name]: payload};\r\n case ActionTypes.REMOVE_ALERT:\r\n let newState = {...state};\r\n delete newState[name];\r\n return newState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport {alertReducer as alert};\r\n","import {ActionTypes} from '../types';\r\n\r\nconst initialState = {\r\n isAuthenticated: JSON.parse(sessionStorage.getItem('auth')),\r\n username: sessionStorage.getItem('username'),\r\n isAuthenticating: false,\r\n};\r\n\r\nconst authReducer = (state = initialState, action) => {\r\n const {type, payload} = action;\r\n\r\n switch (type) {\r\n case ActionTypes.LOGIN_REQUEST:\r\n return {\r\n ...state,\r\n isAuthenticating: true,\r\n };\r\n break;\r\n case ActionTypes.AUTH_SUCCESS:\r\n case ActionTypes.REFRESH_TOKEN_SUCCESS:\r\n return {\r\n ...state,\r\n refreshToken: payload,\r\n };\r\n case ActionTypes.REFRESH_TOKEN_FAIL:\r\n return {...state, isAuthenticating: false};\r\n case ActionTypes.LOGIN_SUCCESS:\r\n sessionStorage.setItem('username', payload.username);\r\n sessionStorage.setItem('auth', JSON.stringify(true));\r\n\r\n return {\r\n ...state,\r\n user: payload,\r\n isAuthenticated: true,\r\n isAuthenticating: false,\r\n };\r\n case ActionTypes.UPDATE_PROFILE:\r\n sessionStorage.setItem('user', JSON.stringify(payload));\r\n return {\r\n ...state,\r\n user: payload,\r\n isAuthenticated: true,\r\n isAuthenticating: false,\r\n };\r\n case ActionTypes.LOGOUT:\r\n case ActionTypes.LOGIN_FAIL:\r\n case ActionTypes.AUTH_ERROR:\r\n //Demo code to keep \"BI\" data in session storage. Real function is to clear session storage fully.\r\n let cache = JSON.parse(sessionStorage.getItem('bi'));\r\n sessionStorage.clear();\r\n if (cache) {\r\n sessionStorage.setItem('bi', JSON.stringify(cache));\r\n }\r\n return {\r\n user: null,\r\n isAuthenticated: false,\r\n isAuthenticating: false,\r\n };\r\n\r\n case ActionTypes.SESSION_TIMEOUT:\r\n sessionStorage.removeItem('auth');\r\n sessionStorage.removeItem('refreshToken');\r\n sessionStorage.setItem('isSessionExpired', true);\r\n return {\r\n user: null,\r\n isAuthenticated: false,\r\n };\r\n case ActionTypes.SET_USERNAME:\r\n sessionStorage.setItem('username', payload.username);\r\n return {...state, isAuthenticating: false};\r\n case ActionTypes.ALL_USERS:\r\n return {\r\n ...state,\r\n users: payload,\r\n isAuthenticating: false,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport {authReducer as auth};\r\n","import {ActionTypes} from '../types';\r\n\r\nconst initialState = {};\r\n\r\nconst formDataReducer = (state = initialState, action) => {\r\n const {type, payload} = action;\r\n\r\n switch (type) {\r\n case ActionTypes.SET_FORMDATA:\r\n sessionStorage.setItem(payload.dataType, JSON.stringify(payload.formData));\r\n return {\r\n ...state,\r\n [payload.dataType]: payload.formData,\r\n };\r\n\r\n case ActionTypes.UPDATE_FORMDATA:\r\n let cacheData = {};\r\n if (sessionStorage.getItem(payload.dataType)) {\r\n cacheData = JSON.parse(sessionStorage.getItem(payload.dataType));\r\n cacheData = {...cacheData, [payload.name]: payload.value};\r\n sessionStorage.setItem(payload.dataType, JSON.stringify(cacheData));\r\n }\r\n return {\r\n ...state,\r\n [payload.dataType]: {\r\n ...state[payload.dataType],\r\n [payload.name]: payload.value,\r\n },\r\n };\r\n case ActionTypes.CLEAR_FORMDATA:\r\n console.log('Clear Form Data: ', payload);\r\n const {dataType, formData} = payload;\r\n if (dataType) {\r\n sessionStorage.setItem(dataType, JSON.stringify(formData)); //Initialize with initial values, this applied mainly to alphalookup only\r\n return {\r\n ...state,\r\n [dataType]: formData,\r\n };\r\n }\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport {formDataReducer as formData};\r\n","import {combineReducers} from 'redux';\r\n\r\nimport * as custom from 'custom/common/redux/reducers';\r\nimport {alert} from './alertReducers';\r\nimport {auth} from './authReducers';\r\nimport {formData} from './formDataReducers';\r\nimport {setupItems} from './setupReducers';\r\nimport {roles} from './rolesReducers';\r\nexport default combineReducers({\r\n ...custom,\r\n alert,\r\n auth,\r\n formData,\r\n setupItems,\r\n roles,\r\n});\r\n","//import { CONTROLITEMS_LOAD, CONTROLITEMS_LOAD_SUCCESS, CONTROLITEMS_LOAD_FAIL, CONTROLITEMS_STORE } from '../actions/controlItemsActionCreators';\r\nimport {ActionTypes} from '../types';\r\n//import { data as initialData } from \"../initialData.js\";\r\n\r\n//import { GET_DATA } from \"../../webservice/RestMiddleware\";\r\n\r\n// const initialState = {};\r\nconst CONTROL_ITEMS = 'controlItems';\r\nconst INTERFACE_SETUP_ARRAY = 'interfaceSetupArray';\r\nconst INTERFACE_SETUP_ITEMS = 'interfaceSetupItems';\r\n\r\nconst setupReducer = (state = {}, action) => {\r\n const {type, payload} = action;\r\n\r\n switch (type) {\r\n case ActionTypes.DATA_LOADING:\r\n return {...state, isDataLoading: true};\r\n case ActionTypes.CONTROLITEMS_LOAD:\r\n return {\r\n ...state,\r\n isDataLoading: false,\r\n controlItems: payload,\r\n };\r\n case ActionTypes.INTERFACESETUPITEMS_LOAD:\r\n return {\r\n ...state,\r\n isDataLoading: false,\r\n interfaceSetupArray: payload,\r\n };\r\n case ActionTypes.INTERFACESETUPITEMS_UPDATE:\r\n return {isDataLoading: false, ...state, interfaceSetupItems: payload};\r\n case ActionTypes.ALLSETUPS_LOAD:\r\n return {...state, allSetupItems: payload};\r\n case ActionTypes.DATA_REMOVE:\r\n return {};\r\n case ActionTypes.UPDATE_CONTROLITEMS:\r\n const {name, parameter, value} = action.payload;\r\n return {\r\n ...state,\r\n controlItems: {\r\n ...state[CONTROL_ITEMS],\r\n [name]: {...state.controlItems[name], [parameter]: value},\r\n },\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport {setupReducer as setupItems};\r\n","import {createStore, applyMiddleware} from 'redux';\r\nimport {composeWithDevTools} from 'redux-devtools-extension';\r\nimport rootReducers from '../reducers';\r\nimport thunk from 'redux-thunk';\r\n\r\nconst middlewares = [thunk];\r\nconst initialState = {};\r\nconst enhancers = () => {\r\n if (process.env.NODE_ENV !== 'development') {\r\n console.log('Production');\r\n return applyMiddleware(...middlewares);\r\n } else {\r\n console.log('Development');\r\n return composeWithDevTools(applyMiddleware(...middlewares));\r\n }\r\n};\r\nexport const dataStore = createStore(rootReducers, initialState, composeWithDevTools(applyMiddleware(...middlewares)));\r\n// export const dataStore = createStore(rootReducers, initialState, enhancers());\r\n"],"sourceRoot":""}