{"version":3,"sources":["custom/common/utils/lookupFunctions.js","core/uicore/QuestionModalFooter.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","core/uicore/Alert.js","core/api/trackingWebService.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","custom/common/ui/SwitchProductModal.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/common/api/postReportWebServices.js","custom/inforce/utils/Tree.js","custom/inforce/redux/actions/inforceActions.js","custom/common/redux/Types.js","core/hooks/usePCTranslation.ts","custom/common/utils/customFormValidation.js","core/report/buildOutput.js","custom/common/utils/functions.js","core/uicore/TabsHeader.js","assets/Clipboard.png","core/uicore/PremiumDisplay.js","custom/inforce/utils/constants.js","core/uicore/Spinner.js","custom/common/ui/TabbedHeader.js","custom/common/ui/PageHeader.js","assets/Text-documents.png","core/uicore/PanelItemGroup.js","custom/inforce/report/buildReportFunctions.js","assets/User-white.png","assets/Help-white.png","assets/procomp.svg","assets/Add-white.png","assets/add-logo-blue.svg","assets/Folder-white.png","assets/magnifying-glass.png","assets/sheet-box.png","core/hooks/index.js","assets/Help.png","assets/Vision-blue.png","assets/Upload-blue.png","assets/Diskette-blue.png","assets/arrow.svg","assets/pages.svg","assets/chevron-blue.svg","assets/chevron-white.svg","assets/chevron-blue-right.svg","assets/threedots.svg","core/redux/types.js","assets/Signoff-white.png","assets/Signoff@2x.png","assets/Switch-white.png","assets/Checkmark-white.png","assets/Checkmark-white-circle.png","assets/Checkmark-circle.svg","assets/Account-sample.png","assets/Warning-white.png","assets/Warning-red.png","assets/Flag-white.png","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","assets/About_ProCompPPR.png","assets/About_ProCompIllustration.png","assets/hourglass.svg","assets/help_outline-blue-18dp.svg","assets/eAppPlaceholder.svg","assets/Trash.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/document-report.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/Illustration-Magic.svg","core/controls/Button.js","core/controls/Checkbox.js","core/controls/ComboModal.js","core/controls/Datebox.js","core/controls/FilePicker.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","assets/illustration-dino.png","assets/Logo_Blue_Reverse.svg","assets/fullScreen.png","assets/drag-icon.svg","assets/index.ts","core/constants/calcConstants.js","assets/spinner.gif","core/utils/calcUtils.js","custom/common/utils/constants.js","custom/dataReports/utils/functions.js","core/utils/util.js","core/constants/uiConstants.js","core/hocs/PrivateRoute.js","core/hocs/withAutoLogout.js","core/hocs/withPCTranslation.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/inputTypeUtils.js","custom/newbiz/utils/constants.js","core/constants/reportConstants.js","custom/inforce/utils/inforceUtils.js","custom/dataReports/redux/actions/dataReportActions.js","custom/common/auth/Login.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/Sso.js","custom/common/ui/StoreConnector.js","custom/alphaLookup/redux/actions/alphaLookupActions.js","custom/bi/redux/actions/index.js","core/api/generalService.js","custom/common/App.js","serviceWorker.js","core/utils/i18n.js","BrowserUnsupported.js","index.tsx","core/report/reportUtils.js","core/utils/globalUtils.js","custom/common/utils/customEvents.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","custom/newbiz/redux/actions/premiumCalcActions.js","custom/newbiz/redux/actions/reportOptionsActions.js","core/utils/setAuthConfig.js","core/hooks/useRouter.js","custom/common/ui/AboutModal.js"],"names":["isProductLIF","prodID","isProdIDSOSBA","isProductEssentialLife","isProductTermProtection","isProductT100Protection","isProductProtectionSeries","isProductPar","policyType","PolicyTypes","Endowment","Enhanced","WholeLife","DeferredAnnuity","isProductParticipatingTerm","isProductParticipatingT100","IsProductPremOffset","inforcePolicy","controlItems","inforceFormData","dividendPayoutType","DividendPayoutTypes","PUA","DOD","isInPremiumOffset","isPremiumOffsetSelected","disabled","IsProdIDFlexLife2","isProductADBPlus","IsProductExcludeRPU","IsProductTruncateRPU","IsProductParticipatingTerm","IsProductNonParticipatingTerm","IsProductParticipatingT100","IsProductNonParticipatingT100","IsProductCurrentPremiumT100","isProdIDGradedPremium","isProdIDProPlan","isProdIDSOSBAEndowment","isProductHealth","isPolicyPaidUp","Date","paidUpDate","currentDate","policyCStatCode","isPlanExcludeHealthMatch","PlanCode","strTemp","toUpperCase","isPolicyMaturing","checkMonthsToMaturity","dtExpiryDate","expiryDate","d1","d2","months","getFullYear","getMonth","monthDiff","isFundLoan","fundID","modalFactor","mode","TextLookup_tEdit","typeID","valueID","useProperCase","t","outText","trim","toProperCase","getPlanCode","planCode","code","length","substring","TextLookup_ProductName","TextLookup_PolicyName","TextLookup_PolicyCStatCode","cStatCode","TextLookup_PayoutMethodCode","payoutMethodCode","TextLookup_SubTable1","strCode","isUseProperCase","TextLookup_SubTable2","TextLookup_SubTable3","TextLookup_SubTable4","TextLookup_Relationship","TextLookup_Consent","TextLookup_AccountType","accountType","Translate_RRIF_Code","format_Display_Date","dateString","aDate","Intl","DateTimeFormat","year","month","day","format","format_Display_Date_Short","getCurrentDate","getDate","format_Display_Date_Object","dateObject","getCurrentDateFormatted","formatDollar","amount","dollarValue","NumberFormat","style","currency","formatAllocationPercent","minimumFractionDigits","formatInterestRate","booleanToString","boolValue","Format0Decimals","value","Number","toFixed","Format2Decimals","Format5Decimals","FormatnDecimals","n","formatSIN","sin","formatIsAmountAboveZero","output","str","replace","txt","charAt","substr","toLowerCase","isInPayout","policy","UL","RRIF","annualPayoutAmount","TextLookup_PremiumModeULReport","premiumMode","billingTypeCode","temp","TextLookup_PremiumModeReport","PremiumModeTypes","Monthly","Annual","Quarterly","SemiAnnual","TextLookup_PremiumModePolicy","billingStatus","BILLINGSTATUS_BILLING","TextLookup_PremiumMode","policyCstatCode","drawDay","TextLookup_BillingTypeCode","TextLookup_DividendPayout","dividendPayout","DRP","LRD","None","OYT","PIC","TextLookup_PayoutFrequency","annualPayoutMode","TextLookup_PayoutType","payoutType","PayoutTypes","Minimum","Maximum","FlatAmount","TextLookup_NFOption","nfOption","result","index","indexOf","TextLookup_SmokeClass","smokeClass","TextLookup_Sex","sex","Translate_NextPaymentDate","payoutPaymentDate","payoutEffectiveDate","paymentDate","effectiveDate","currDate","stringRemoveNull","aString","FormatMailingAddress1","addressItem","address1","address2","address3","address4","addressItemRemoveNulls","FormatMailingAddress2","FormatMailingAddress3","city","province","postalCode","FormatChurchName","insuredItem","churchName","churchCity","churchProvince","FormatPhoneNumber","phoneNumber","padStart","slice","GetBeneficaryString","coverageItem","beneficiaries","fullName","beneficiaryRelationship","beneficiaryPercent","TextLookup_BeneficiaryCode","beneficiaryTypeCode","GetFullName","firstName","middleName","lastName","GetFullNameWithSalutation","salutation","outName","partyType","PartyTypes","Person","dateOfDeath","companyName","BillingTypeCode","PREMIUMOFFSET","isNonExemptNew","exemptStatus","ExemptStatus","NonExemptNew","taxAccrualRule","TaxAccrualRule","TranslatePaymentModeReport","item","formData","calculateAgeFromJan1","insured","birthdate","today","calcType","date1","Difference_In_Days","getTime","age","Math","trunc","round","calcAge","dateOfBirth","calcAgeNearest","dtBirthDate","dtToday","birthDate","lastBirthDay","GetLastAnniversaryDate","intYears","dateDiffMS","intMonths","intDays","intAge","policyIssueDate","issueDate","interval","startingDate","endingDate","yearDiff","startDate","toISOString","endDate","swap","startYear","daysInMonth","dayDiff","dateDiff","toTitleCase","QuestionModalFooter","isDisable","controlGetFocus","controlLostFocus","controlClick","setElement","onSelectOK","onSelectCancel","btnCancel","btnOK","isInfo","isButtonTogether","isReverse","className","text","getfocusCallback","getclickCallback","event","name","lostfocusCallback","refItem","propStyle","label","control","disableButton","defaultProps","CalcTable","insuranceData","dblTableData_Main","tblMain","grid","Object","keys","map","key","col","idx","STYLES","BASIC","TABLE","table","THEAD","head","TROW","row","columnItems","TDATA","data","displayName","TBODY","body","FieldContainer","children","styling","tabName","activeTab","collapsable","useState","isHidden","setIsHidden","usePCTranslation","controlItem","useSelector","state","setupItems","classContent","FIELDCONTENT","content","classHeader","FIELDCONTAINERHEADER","containerClass","FIELDCONTAINER","container","displayHidden","id","onClick","FullPremiumTable","GetInput","storeFormData","Icon","props","styles","svg","display","verticalAlign","margin","float","color","path","fill","newStyle","assign","width","size","height","viewBox","d","icon","SidebarContainer","isVisible","classSidebarContainer","SIDEBARCONTAINER","Tab","TABLISTITEM","TABLISTACTIVE","target","TabContent","active","setActive","useEffect","child","undefined","classNames","TABCONTENT","TABCONTENTACTIVE","TabLayout","TABLAYOUT","TooltipIcon","Component","TOOLTIPICON","TooltipText","TOOLTIPTEXT","alertLogo","Success","checkLogo","Error","warningLogo","Secondary","flagLogo","Alert","alert","alertType","src","alt","msg","sendTrackingInfo","trackingData","a","axios","post","console","log","getAllRoles","updatedRole","dispatch","getState","get","type","ActionTypes","ALL_ROLES","payload","currentUser","auth","user","roleID","roleName","permissions","overrides","UPDATE_PROFILE","ButtonBar","buttonbar","BUTTONBAR","document","getElementById","Modal","ReactDOM","createPortal","querySelector","ModalTitle","title","fontSize","ScrollToTopController","withRouter","prevProps","this","location","window","scrollTo","condition","top","left","behavior","error","Logo","LOGO","logo","SwitchProductModal","onSelectProduct","onCancel","route","isMobile","shallowEqual","selectedItem","setSelectedItem","handleSelectItem","e","switchButton","switchBtnName","itemId","isPermitted","logoName","tickLogo","stopPropagation","srcLogo","closeIcon","altLogo","classLogo","showIcon","system","isInforce","INFORCE","isActive","isNewBusiness","NEW_BUSINESS","isConcepts","SHARED_OWNERSHIP","EAPPLICATION","isEapplicationAdministrator","isEapplication","isBusinessIntelligence","isDisplayed","BI","isAdmin","isAdminSystem","isAdminSystemAdministrator","ADMIN","ProfileSettings","controlChange","getchangeCallback","stateData","pillcontainer","inputcontainer","pills","disableChoice","disableApplication","UserInformation","textcontainer","INPUTCONTAINER","useTranslation","checkcontainer","profileFormData","formName","CurrentField","txtUserName","txtEmailAddress","txtPrimaryPhone","txtSecondaryPhone","txtFaxNumber","chkPrimaryPhone","chkSecondaryPhone","imgProfilePicture","rdoInputLanguage","rdoReportLanguage","rdoFontSize","rdoDefaultApp","btnSaveProfile","btnCancelProfile","useStyles","makeStyles","root","minWidth","padding","cursor","borderRadius","bullet","transform","pos","marginBottom","OutlinedCard","widget","onToggle","moveCard","classes","widgetID","ref","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","data-handler-id","CardContent","dragIcon","Typography","component","longText","parts","split","len","part","Fragment","formatLongText","checked","onChange","gridTemplateColumns","ProfileWidgets","widgetsData","updateWidgetsData","handleToggle","toggle","cloneWidgets","cloneDeep","find","card","update","$splice","DndProvider","backend","HTML5Backend","ProfileModal","profileData","isLoading","sticky","elementItems","updateProfileFormData","setState","element","persist","globalChange","preventDefault","globalClick","globalGetFocus","globalLostFocus","submitProfile","classList","add","remove","widgets","forEach","displayOrder","updateUserProfile","inforceData","populateTreeAction","onSaveProfile","handleCancel","setAlert","setActiveTab","fetchUserWidgets","sort","widget1","widget2","loadProfileData","onLoad","submitData","submit","validateForm","ValidateForm","TabsHeader","postReportData","finalReport","res","postDataReportsData","postDataBIProQuoteReportsData","exportDownload","excelFile","responseType","url","URL","createObjectURL","createElement","href","download","click","displayArray","policyTree","treeIndex","globalBgColor","styleTypes","WHITE","Node","expanded","displayStatusType","Tree","updateInforce","addT10","coverageID","aPolicy","faceAmount","insuredAge","insuredName","insuredSex","insuredSmokingClass","insuredRateClass","insuredRatings","insuredRating","insuredFlatExtra","insuredFlatExtraDuration","strInforce","baseCoverage","coverages","coverage","parentCoverageID","illustrationDate","issueAge","meRating","coiType","COITypes","YRT","unitValue","units","initialFaceAmount","meRatingDuration","expiryDuration","meRatingExpiryDate","flatExtraDuration","flatExtra","isUseRatings","issuedUnits","issuedUnitValue","issuedFaceAmount","premiumPayMode","insureds","rateClass","gender","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","push","productSetup","PolicyType","fundItems","runGetSetup","RIDER","TERM","splitName","fillInforceCoverage","coverageLayers","newCoverageLayer","coverageLayerType","etpFaceAmount","basisDate","durationStart","expiryAge","attainedAge","currentAttainedAge","premCoverage","premFlatExtra","premMultipleExtra","policyFee","premWaiver","premADB","premAnnual","cashValue","modePremiumAmount","coverageStatus","nameArr","pop","join","response","responderEnd","populateTree","tree","DecreasingIncreasingTerm","LevelTerm","PaidUpLife","TermWithCV","Disability","CriticalIllness","addParLifeOwnerBranch","ImmediateAnnuity","ESA_ISA","TFSA","ownerNode","owners","strPolicyStatus","policyOwner","insuredPolicyPayor","blnFirst","baseCoverageItem","getCoverageItemByType","BASE","HEAD","BOLD","getCurrentBgColor","isRegistered","EMPTY","policyNumber","toggleBgColor","RED","CstatCode","DEATH","SegregatedFundRRIF","payoutTaxWithheld","payoutAdditionalTaxWithheld","payoutMethod","BillingMethodTypes","EFT","payor","bankName","bankNo","bankBranchNo","bankAccountNo","bankAccountHolderName","PCRound","totalModalPremium","totalAnnualizedPremium","billingMethod","isLoanAvailable","availableLoan","availableLoanInterestRate","terminatedDate","strBeneficiary","beneficiaryItem","spouseContributorType","SpouseContributorTypes","Spouse","spouseContributor","display1","diaValue","diaInterestRate","giaValue","indexedFundValue","pdfBalance","pdfInterestRate","mva","surrenderCharge","INDENT","policyValue","addFundOwnerBranch","SegregatedFund","guaranteedMaturityDate","guaranteedMaturityAmount","guaranteedDeathAmount","addSegFundOwnerBranch","parentNode","owner","consent","memberClass","strAddressTemp","payoutInsuredType","PayoutInsuredTypes","payoutInsured","getEmailAddress","emails","caslConsent","addClientBranch","addParLifeBranches","addBasicCoverageBranch","riderRoot","termRidersNode","addBaseCoverageBranch","addRiderCoveragesBranches","addULIncreaseRidersBranch","addTermRidersBranch","addUnembeddedSupplementaryBenefitsBranch","addDIABranch1","addSegFundBranch1","addGIABranch1","isLoanOnPolicy","strNodeText","fundItem","fundType","FundTypes","DIA","addFundBranch","addLoanBranch","addULLifeBranches","addFundBranches","node","strRRIFCode","fundsLockedIn","payoutTaxCalculationPercent","Annuitant","toString","minPayoutThisYear","maxPayoutThisYear","addPayoutBranch","addPayoutHeaderBranch","addSegFundBranch","addDIABranch","strText","addGIABranch","GIA","SegFund","addSegFundBranch2","fundName","interestStartDate","depositAge","formatSmokeClass","interestRate","currentFundValue","depositTerm","depositAmount","fundValue","maturityValue","maturityDate","reInvestmentInstructions","depositAllocation","allocationPercent","withdrawalAllocation","unitPrice","GPO","PIB","DMB","OTHER","CHILD","AIB","ADB","basicCoverageNode","coverageRoot","isParDeposits","parDepositAmount","POLICYTYPE","translateSubTable1","parDepositMode","parDepositStatus","parDepositExpiryDate","addADOCoverageBranch","riderNode","addRiderCoverageBranch","riderCoverageItem","aParentCoverage","blnIsWPADBonUL","getCoverageByID","translateSubTable2","translateSubTable3","translateSubTable4","translateCOIType","translateDeathBenefitType","beneficiaryColor","isUseParentFaceAmount","strPremLabel","isCoveragePaidUp","strTempInsuredNames","intInsuredMaxAge","waiverCoverage","tempInsuredItem","intInsuredCounter","NONE","policyBaseCoverage","clientID","strTemp2","feRatingDurationFromIssue","meRatingDurationFromIssue","getCoverageItemByRiderType","dblTotalTermFaceAmount","modalFactorPolicyFee","dividendEnhancedAmount","sumInsured","isUseDeathBenefitRateTable","isRestrictPremium","premSubtractDividend","parDepositMin","parDepositMax","policyStatus","nextMonthiversaryDate","paidToDate","nonForfeitureOption","fDividendPaidLabel","aIssueDate","isAnniversaryPassed","DividendPaidLabel","dividendThisYear","TAFaceAmnt","puaFaceAmount","segFundValue","indexedFundValueDate","loanBalance","loanInterestRate","basicCashValue","puaCashValue","dodBalance","dodInterestRate","premiumRefund","emailAddress","GREY","LevelGuaranteed","dbOption","DBOptionTypes","Level","disabilityItem","getDisabilityItem","disabilityItems","disabilityCode","loadInforceData","policyNum","GetPolicyObject","INFORCE_LOAD","errorCode","INFORCE_LOAD_ERROR","TREE_BUILD","updateInforcePolicy","HIDE_DEV_ROUTE","SET_ROUTES","HIDE_TRACKING","HIDE_USERS","HIDE_BI_DETAILS","GET_ROLE_BY_NAME","UPDATE_ROLE","DELETE_ROLE","GET_FIRSTYEAR_PREMIUM","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","tInput","tReport","rules","errors","chkFlag","durationFlag","totalFaceAmountFlag","durationField","maxTotal","max","validateTermSection","parseInt","SINGLE","maxLength","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","reportFile","custom","required","pageBreak","custColFile","ListItemsArray","sessionStore","cacheData","sessionStorage","getItem","JSON","parse","setItem","stringify","updateStoreFormSessionData","updateFormData","TABS","TABLIST","tab","module","exports","PremiumDisplay","msg_basepremium","msg_annualpremium","msg_modalpremium","msg_nodata","msg_notApplicable","header","summary","coveragetype","coveragevalue","HEADER","jointAgeError","PREMIUMDISPLAY","SUMMARY","SUMMARYCONTAINER","formatValue","getInitialPremiumByID","coverageListItems","i","COVERAGETYPE","COVERAGEVALUE","annualPremium","getInitialCalcValueByName","strCoverageID","columnItem","strName","withPCTranslation","NORMAL","BACKGROUNDCOLOR","BOLDANDRED","BOLDANDINDENT","phoneTypes","Beeper","Business","BusinessFax","Cellular","Mailing","Other","Pager","Residence","ResidenceFax","Residence2","SelectPhone","addressTypes","Billing","Disbursement","Vacation","Spinner","spinner","TabbedHeader","isUserAdmin","useRouter","match","routes","page","pathname","tempArr","subModule","appName","routeId","paths","handleClickRoute","button","marginRight","flex","justifyContent","position","ProcompLogoReverse","open","PageHeader","tabHeaderSticky","rest","useDispatch","useMsal","instance","accounts","isProfileModal","setIsProfileModal","isAboutModal","setIsAboutModal","setIsSharedOwnershipModal","isSwitchProductModalOpen","setIsSwitchProductModalOpen","pageheaderData","setPageheaderData","headerData","updatePageheaderData","pageHeader","pathArray","logOff","logout","logoutRedirect","account","postLogoutRedirectUri","handleClick","SWITCH_PRODUCTS","PROFILE","updateReportOptionsProfile","documentElement","ABOUT","PAGEHEADER","switchLogo","aboutLogo","userLogo","signOffLogo","product","from","AboutModal","PanelItemGroup","PANELITEMGROUP","buildScalarOutput","isStatus","reportBuildModel","aGlobalVariable","intYear","intYearCol","scalarReportArray","buildScalarFromControlItems","aBaseCoverage","addScalarItem","ScalarTypes","SCALAR_BOOLEAN","SCALAR_STRING","isEmpty","getScalarItem","booleanValue","premiumOffsetPluginName","profileName","phoneNumberPrimary","faxNumber","phoneNumberSecondary","BuildInvestmentAllocationScalars","strInPayout","transactionStartDate","process","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","setFullYear","ulMaxDepositThisYear","prodName","policyStatusCode","SCALAR_DOUBLE","billToDate","Mail","BillError","minPrem","isVanishPrem","sideFundBalance","sideFundInterestRate","cashSurrenderValue","annualPayoutModeCode","payoutEndDate","scheduledWithdrawalMethod","assigneeType","AssigneeTypes","Absolute","Collateral","ownerAddressItem","GetAddressItem","addresses","churchID","ownerPhone","phoneNumbers","GetPhoneItem","aBusinessPhoneItem","agent","writingAgent","displayDisabled","beneText","beneTemp","intLength","beneArray","min","lstSummaryItems","aSummaryCoverageItem","BuildSummaryPolicyExpiryColumnText","strSummaryText","BuildSummaryColumnText","premiumDurationYear","aBenefitSummaryCoverageItem","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","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","cancelToken","timeout","setTimeout","removeAlert","loadControlItems","newbiz","inforce","dataReports","alphalookup","batchNewBiz","_","merge","loadDataFail","loadInterfaceSetupItems","interfaceSetupArray","interfaceItem","updateControlItems","parameter","updateControlItemsDB","deleteControlItemDB","controls","setRoutes","isDeveloper","clearCustomStore","trackLoginUser","trackingUserName","username","detail","agentID","eventType","timestamp","now","loginUserName","fetchUser","isRefresh","token","responseAD","login","password","cancel","CancelToken","source","generateTrackingUserName","setInterceptor","updateUserProfileField","fieldName","isAuthenticated","getAllUsers","updatedUser","callApi","tokenMethod","sessionTimeout","filter","includes","removeItem","setStoreFormData","useSessionStorage","initialFormData","startsWith","updateStoreFormData","clearStoreFormData","Button","autoFocus","logoRight","showIconRight","allowPropagation","useContext","ValidationContext","isDisabled","disableOnError","setDisabled","BUTTON","onFocus","onBlur","delayTime","Checkbox","readOnly","disableControl","customLabel","checkPosition","formErrors","controlOnChange","locked","controlOnFocus","controlOnLostFocus","isDirty","checkInput","CHECK","LABEL","showTooltip","showTooltipIcon","TOOLTIP","ComboModal","optionItems","btnX","btnChoose","modalTitle","isUseInformation","handleChoose","isTranslateOptions","Datebox","ageFieldName","minDate","maxDate","rawValue","rawChange","blnDateCheck","date","DATE","datecontainer","openToDate","handleChangeRaw","dateInput","selected","moment","isValid","onChangeRaw","onInputClick","onClickOutside","dateFormat","showMonthDropdown","showYearDropdown","dropdownMode","placeholderText","React","lazy","FileUpload","useDropzone","noClick","noKeyboard","getRootProps","getInputProps","acceptedFiles","handleImportUser","f","FormData","append","Axios","headers","radiocontainer","radioGroup","Label","labelText","labelbox","LABELCOMPONENT","labelcomponent","MaskedTextbox","step","styleProp","inputLanguage","textInput","mask","getMaskForInput","fieldType","TEXT","guide","autoComplete","showLabel","field","validationmsg","MultiCheckbox","options","values","setValues","useOptions","tempVal","splice","checkLabel","multicheckcontainer","checkGroup","PillButtons","pillLabel","PILLCONTAINER","PILL","isSecondaryText","secondaryText","Radiobuttons","choice","radioContainerClass","RADIOCONTAINER","radioLabel","RADIO","Selectbox","disable","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","String","fromCharCode","TileButtons","tiles","tilecontainer","MAX_ARRAY","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","Array","LevelMaximum","YearlyMaximum","PRM","SideFund","Loan","MAIL","APL","StartYear","StartYear_UL","PolicyLookupResultTypes","PolicyFound","PolicyNotFound","PolicyNotQuotable","PolicyPremiumRestrict","PolicyTerminated","PolicyPaidUp","PolicyRejected","PolicyETI","PolicyNoFuturePremiums","PolicyNotLoadable","Year","Age","FilterCol","IsCalc","columnItemsMerge","colArray1","colArray2","prefixStr","mergedArray","arrItem","dblTableDataMerge","arr1","arr2","temp0Arr","new2dArr","temp1dArr","finalLen","concat","ResetFaceAmounts","ResetFundValues","ResetFundValuesInCoverage","aFundItem","initialFundValue","fundValueArray","AdjustCOIMultiplier","coiIncrease","increaseStartYear","coiRateMultiplier","coiRateMultiplierStartYear","returnItem","hasOwnProperty","getCoverageItemByCoverageID","disabilityType","ignoreParentID","getSolveByName","solves","solveItem","addSolveItem","getSolveIndex","setSolveIsActive","InitializeCalcArray","calcArray","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","ResetDODInterestRateFlag","isReadRate","ResetFundInterestRateFlag","AdjustInterestRatesUL","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","GetInitialPremiumBaseFE","GetInitialPremiumBaseME","GetInitialPremium","GetCoverageID","coverageName","FindFund","FindFundInCoverage","digits","negative","multiplicator","pow","parseFloat","buildAgentName","padAgent","PadRight","agentName","padString","padCharacter","padLength","newString","repeat","obj","x","formatBytes","c","floor","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","PAGEHEADERM","POLICYHEADER","PROFILEBUTTONS","PAGEFOOTER","VALIDATION","ERRORICON","TABCONTAINER","LAYOUT","SUBFIELDSET","STATUSDISPLAY","INFORCEPOLICYSUMMARY","PrivateRoute","isAuthorized","to","defaultApp","render","withAutoLogout","WrappedComponent","clearTimeoutFunc","warnTimeout","clearTimeout","logoutTimeout","countDown","clearInterval","setTimeouts","logoutMillis","warningMillis","warn","resetTimer","isWarning","timer","setTimerFunc","setInterval","newCount","pca","getActiveAccount","destroy","resetTimeouts","throttle","events","addEventListener","removeEventListener","hourGlass","connect","withTranslation","toggleState","prevState","StatusContext","createContext","getStatusForField","FormStatus","handleGetFocus","ev","dirty","handleLostFocus","status","formSubmitted","Provider","rulesData","useLimits","limits","minLimit","maxLimit","limitText","note","getMessagesForField","FormValidator","clearFormErrors","setValidationErrors","handleChange","formValid","fieldsValid","submitField","errorCount","msg_range","msg_textLength","msg_checked","msg_required","msg_min","msg_max","msg_option","msg_validEmail","msg_validPhone","fielderrors","val","isError","validator","isEmail","incomeArray","minLength","allowZero","useMinLength","isInt","isFloat","decimal_digits","cache","ValidateData","inlineErrorRef","StatusMessage","testObject","context","message","useIcon","contextType","StatusDisplay","isArray","msg_status","ValidationMessage","erroricon","errorArray","listEl","fieldError","ErrorDisplay","dirtyCount","dataseleniumid","inputType","regex","strVal","reg","RegExp","regexPhone","test","decimalHashes","isForced","decimals","formattedStr","tempPostalCode","formattedCode","tempCode","tempSIN","retStr","capitalizeApostrophe","ProdID","TERM10","TERM20","TERM30","TERM100JOINT","TERM100","WHOLELIFE","WHOLELIFE20PAY","WHOLELIFEJOINT","WHOLELIFE20PAYJOINT","CoverageID","WP","CPB","ADB2","WP2","GPO2","DivOptions","RAP","JOINTFIRST","JOINTLAST","PaymentOptions","ANNUAL","MONTHLY","SEMIANNUAL","QUARTERLY","RatingOptions","STANDARD","125","150","175","200","interfaceItemsPolicyTypes","LEVELTERM","isTermPolicy","prodId","isTerm100Policy","isWholeLifePolicy","isWholeLifeProduct","isWholeLife20PayProduct","isUniversalLifePolicy","SCALAR_LONGINT","SCALAR_DATE","PathTypes","PATH_CUSTOM","PATH_ADMINPOLICIESPATH","PATH_REPORTPATH","PATH_BATCHPATH","LONGINT","DOUBLE","ConstantValues","ROWHIGHLIGHT_SPACING","phoneItems","phoneType","aPhoneItem","addressItems","addressType","aAddressItem","skipPUAPaymentName","intSkipPUAPayment","intAddAge","coverageIssueDate","intAddYear","strReturn","aBaseCoverageItem","SetSelectedDurations","rowCount","globalVariablesInsuranceData","dblDIAGIATotal","dblDIAGIARate","intCounter","dblAverageInterestRate","getGlobalVariablesInsuranceDataItem","itemName","variable","policyStatusListOptionItems","policyStatusList","policyStatusOptions","policyStatusDescription","churchListOptionItems","churchList","churchOptions","churchNumber","denominationListOptionItems","denominationList","denominationOptions","Login","isHeadOffice","useLocation","setFormData","setTokenMethod","inProgress","useIsAuthenticated","isAuthenticating","defaultFrom","getUser","InteractionStatus","acquireTokenSilent","tokenRequest","refreshToken","jwt","accessToken","setInterceptorAD","onSubmit","request","loginRequest","loginHint","loginPopup","dummy","onDummyLogin","Startup","helpLogo","PageHeaderM","isHeaderModal","setIsHeaderModal","handleCancelPageHeaderModal","threedotsLogo","Header","screenWidth","WelcomeModal","onWelcomeModalClose","chkWelcomeMessageRepeat","btnWelcomeOK","updateWelcomeModalFormData","biReportsFormData","chkStoreInExcel","dtBIReportsStartDate","dtBIReportsEndDate","ReportGroupsName","queryList","QueryListDisplay","handleQueryClick","cardIndex","cardItem","BIReports","isLoadingReport","updatBIReportFormData","updateBIReportFormDataWithMultipleFields","fields","updateBIOptionsProfile","handleCreateReport","repoBuild","buildDataReport","resReportsData","resultCode","errorText","reportOutputFile","handleReportClick","isModal","userFormData","setMonth","setDate","columnGap","alignItems","Tracking","BIDashboard","BusinessIntelligence","fallback","TemplateApp","DeveloperApp","Admin","ProNeeds","Illustration","SavedIllustration","Inforce","Eapplication","myRef","setMyRef","setIsLoading","invalidUrl","setInvalidUrl","welcomeModal","setWelcomeModal","illusRef","savedIllusRef","isWhiteLabel","whiteLabelProfile","ScrollToTop","updateIllusForm","isSharedOwnershipComplete","loadSharedOwnershipModalForm","isEapplicationAccessible","isNewBusinessAccessible","isInforceAccessible","isAdminAccessible","Sso","mapDispatchToProps","getFirstYearPremium","loadAlphaLookupData","queryObject","errorMessage","clearAlphaLookupData","loadDataReportsData","res1","res2","churchOptionItems","policyStatusOptionItems","denominationOptionItems","clearDataReportsData","biFormData","StoreConnector","dataStore","interfaceSetupItems","allSetupItems","eAppFormData","firstYearPremium","alphaLookupFormData","alphaLookupData","roles","alertList","setScreenWidth","innerWidth","toggleSticky","currentScrollPos","pageYOffset","tabHeaderOffset","offsetHeight","policyHeaderOffset","policyHeaderSticky","offsetTop","tabsSticky","isEapplicationAvailable","isConceptsAvailable","isConceptsAccessible","isNewBusinessAvailable","isInforceAvailable","isUserNewBusinessBatch","isNewBusinessBatch","isUserInforceBatch","isInforceBatch","isAdminUserManagementAccessible","isBusinessIntelligenceAccesible","isNewBusinessBatchRunAllowed","isInforceBatchRunAllowed","permisions","isNeedsAnalysisLite","isNeedsAnalysisFull","routeProps","getVersionInfo","versionInfo","version","reload","setVersionHeartbeat","heartbeatMinutes","withCoreEvents","store","Boolean","hostname","i18n","use","Backend","initReactI18next","init","lng","fallbackLng","debug","ns","defaultNS","keySeparator","interpolation","escapeValue","formatSeparator","returnEmptyString","react","wait","useSuspense","BrowserUnsupported","textAlign","background","fontWeight","paddingTop","backgroundImage","IllustrationDino","backgroundSize","marginTop","textDecoration","procompBlueLogo","isIE","navigator","serviceWorker","ready","then","registration","unregister","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","$","require","hideControl","isUpdateControlItems","useWildCard","wildCard","each","el","hide","showControl","show","removeAttr","enableControl","controlFields","cboRateClass","chkTerm10","chkTerm20","chkTerm30","chkADO","initializeControlFields","useSession","sessData","pageSelection","chkCoverPage","chkTaxPage","chkUnderwritingPage","chkComplianceNotice","chkCoveragePage","chkHealthMatchPage","chkBenefitsPage","chkMemberBenefits","conceptSelection","chkProductCompare","chkInternalRoR","chkCharitableGiving","chkInsuranceInvestment","incomePayout","chkIncomeStoryboardPage","chkIncomeNonRegPage","getPageConceptSelection","initializePageConceptSelection","GlobalCustomLostFocus","runAll","isRecall","GlobalCustomClickBusinessRules","customClickBusinessRules","GlobalCustomBusinessRules","customBusinessRules","GlobalCustomBuildTrackingData","showControlBatch","fieldArray","hideControlBatch","enableControlBatch","disableControlBatch","lockControl","unlockControl","updateConceptItem","sessConcept","updatePageItem","updateIncomePayoutItem","updateControlFields","sessContext","PolicyTypesNewbiz","GlobalGetFocus","GlobalLostFocus","customEvents","recallItems","GlobalRunLostRecalls","GlobalBuildTrackingData","getEventType","customData","GlobalTrackingEvents","isTracking","GlobalChange","GlobalRunRecalls","GlobalClick","msalInstance","PublicClientApplication","msalConfig","getAllAccounts","setActiveAccount","addEventCallback","EventType","isAppLoading","isAppChanging","appLoad","appRunAllBusinessRules","appGetFocus","globalEvents","appLostFocus","appChange","appClick","handleRedirectPromise","acquireTokenPopup","ua","userAgent","clientId","authority","redirectUri","cacheLocation","storeAuthStateInCookie","loggerOptions","loggerCallback","level","containsPii","LogLevel","Info","Verbose","Warning","apiConfig","scopes","initialState","admin","illustration","proneeds","template","developer","bi","routesReducer","action","adminRoutes","biRoutes","devRoutes","loadInforceDataReducer","loadTreeDataReducer","alphaLookupReducer","isLoaded","dataReportsReducer","rolesReducer","combineReducers","newState","clear","users","isDataLoading","middlewares","thunk","createStore","rootReducers","applyMiddleware","reportFormData","txtCharitableGivingIntRate","txtCharitableGivingTaxRate","txtInsuranceInvestmentIntRate","txtInsuranceInvestmentTaxRate","txtEmployerBenefitPeriod","txtEmployerPayPeriod","rdoDuration","cboSelectedYears","cboIntervalYears","txtPy1","txtPy2","txtPy3","txtPy4","txtPy5","txtAgeD1","txtAgeD2","txtAgeD3","txtAgeD4","txtAgeD5","txtIncomePayoutLoanRate","txtIncomePayoutIntRate","txtIncomePayoutTaxRate","setAuthToken","defaults","refreshAccessToken","InteractionRequiredAuthError","resp","catch","err","interceptors","config","Promise","reject","isRefreshing","failedQueue","processQueue","promise","resolve","originalRequest","_retry","finally","params","useParams","history","useHistory","useRouteMatch","useMemo","query","queryString","search","xmlns","fillRule","clipRule","IllustrationMagic","backgroundColor"],"mappings":"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AAgB,eACiB,SAA/BljE,EAAQ,eACVkjE,EAAgB,oBACsB,SAApCljE,EAAQ,oBACVkjE,EAAgB,uBACyB,SAAvCljE,EAAQ,uBACVujE,EAAY,wBAC8B,UAAxCvjE,EAAQ,wBACVujE,EAAY,oBAC0B,UAApCvjE,EAAQ,oBACVs1B,eAAeI,QACb,cACAF,KAAKG,UAAL,uCAAoB8sC,GAAkBS,GAAqBK,MAyB1D,SAASK,EACdjgE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACA/yB,EACAgzB,EACAzkC,EACA2R,EACAhvB,EACAqrD,EACAC,GAGAr2D,OAAOm2D,sBACLjgE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACA/yB,EACAgzB,EACAzkC,EACA2R,EACAhvB,EACAqrD,EACAC,GAIG,SAASC,EACdpgE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACAC,EACAzkC,EACA2R,EACAhvB,GAEA/K,OAAOu2D,yBACLrgE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACAC,EACAzkC,EACA2R,EACAhvB,GAIG,SAASyrD,EACdtgE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACA/yB,EACAgzB,EACAzkC,EACA2R,EACAhvB,GAGC,IAFDqrD,EAEA,2DADAC,EACA,2DACAr2D,OAAOy2D,oBACLvgE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACA/yB,EACAgzB,EACAzkC,EACA2R,EACAhvB,EACAqrD,EACAC,GAIG,SAASK,EACdxgE,EACA3R,EACAgO,EACAsX,EACA+iD,EACAxkC,EACArd,GAgBA,OAAO,KAIT/K,OAAOk2D,+BAAiCA,EAExCl2D,OAAOmoB,2BAA6BA,IACpCnoB,OAAOpa,gBAAkBA,KACzBoa,OAAOoiD,aAAeA,IACtBpiD,OAAOsiD,gBAAkBA,IACzBtiD,OAAOuiD,kBAAoBA,IAC3BviD,OAAOwiD,mBAAqBA,IAC5BxiD,OAAOyiD,wBAA0BA,IACjCziD,OAAO0iD,sBAAwBA,IAC/B1iD,OAAO4zD,YAAcA,EACrB5zD,OAAOm0D,YA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nBiB,iBAoBjB,MACF,KAAK8K,IAAW4P,WACd1a,EApBY,YAyBhB,OAAOA,EAkBSm9B,CAAaxzE,EAAc2R,GAEpCskC,EAAuC/7B,EAAvC+7B,iBAAkBC,EAAqBh8B,EAArBg8B,SAAUE,EAAWl8B,EAAXk8B,QACnCn9B,EAAawrB,OAAS,CACpByR,SAAUD,EACVO,cAAeN,EACfG,YACA32B,WACA/N,OACAykC,UACAE,aAEF,IAAIm9B,EAAaL,IACfzhE,EACA3R,EACAgO,EACAsX,EACA+iD,EACAxkC,EACArd,GAQF,OAHEvN,EAAak9B,OAHVs9B,GACH,eAA0BzlE,GAKrBiL,EAET,SAASy6D,EACP/hE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACAxkC,EACA2R,EACAhvB,GAEA,GAAIxmB,GAAgBA,EAAa2R,IAAS3R,EAAa2R,GAAMgiE,WAAY,CACvE,IAAI16D,EACJA,EAAes6D,EACb5hE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACAxkC,EACA2R,EACAhvB,GAEFxN,YAAiBC,IAGd,SAAS26D,EACdjiE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACA/yB,EACAgzB,EACAzkC,EACA2R,EACAhvB,GAEAktD,EACE/hE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACAxkC,EACA2R,EACAhvB,GAEF4sD,IACEzhE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACA/yB,EACAgzB,EACAzkC,EACA2R,EACAhvB,GACA,GACA,GA/PJ,SACE7U,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACA/yB,EACAgzB,EACAzkC,EACA2R,EACAhvB,GAGExmB,GACAA,EAAa2R,IACqB,MAAlC3R,EAAa2R,GAAM0hE,aAGnBrzE,EAAa2R,GAAM0hE,YAAYhtD,SAAQ,SAAC1U,GACtCyhE,IACEzhE,EACAuI,EACAla,EACAgO,EACAsX,EACA+iD,EACA/yB,EACAgzB,EACAzkC,EACA2R,EACAhvB,GACA,GACA,MAgONqtD,CACEliE,EACAuI,EACAla,EACAgO,EA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","file":"static/js/main.3276efc3.chunk.js","sourcesContent":["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\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\r\nexport function isProductTermProtection(prodID) {\r\n //Term Protection Series Products were launched Nov 2021\r\n //and they include a base Term that has no face amount\r\n //with 1 or more term riders that do have face amount\r\n return (\r\n prodID === 180\r\n );\r\n}\r\n\r\nexport function isProductT100Protection(prodID) {\r\n //The T100 Protection Series Product was launched Nov 2021\r\n return (\r\n prodID === 564\r\n );\r\n}\r\n\r\nexport function isProductWLProtection(prodID) {\r\n //The T100 Protection Series Product was launched Nov 2021\r\n return (\r\n prodID === 903 ||\r\n prodID === 904\r\n );\r\n}\r\n\r\nexport function isProductProtectionSeries(prodID) {\r\n //All products released at the end of 2021 and forwards will fall into this category\r\n return (\r\n prodID === 180 ||\r\n prodID === 564 ||\r\n prodID === 903 ||\r\n prodID === 904\r\n );\r\n}\r\n\r\n//Custom - Inforce\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, prodID, t) {\r\n let valueID = '';\r\n\r\n switch (dividendPayout) {\r\n case DividendPayoutTypes.DOD:\r\n if (isProductProtectionSeries(prodID)) {\r\n valueID = 'F';\r\n } else {\r\n valueID = '4';\r\n }\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).trim() + ' ' + addressItem.address3).trim();\r\n //Changed for TrackIT 7451\r\n //return (addressItem.address1 + ' ' + addressItem.address3).trim() + ' ' + addressItem.address4;\r\n}\r\n\r\nexport function FormatMailingAddress2(addressItem) {\r\n return ((addressItem.address2).trim() + ' ' + addressItem.address4).trim();\r\n //Changed for TrackIT 7451\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 === null) {\r\n return '';\r\n } else {\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}\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\r\nexport function RoundUpNearestFive(x) {\r\n return Math.ceil(x / 5) * 5;\r\n}\r\n\r\nexport function RoundDownNearestFive(x) {\r\n //Same as RoundUpNearest5 then subtract 5\r\n return Math.ceil(x / 5) * 5 - 5;\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 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 collapseRight' : ''\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)}\r\n name={name}\r\n >\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 GetInput,\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","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 axios from 'axios';\r\n\r\nexport const sendTrackingInfo = async (trackingData) => {\r\n try {\r\n let res = await axios.post('/tracking/sendTrackingInfo', trackingData);\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 {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 = (updatedRole) => async (dispatch, getState) => {\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 if (updatedRole) {\r\n const currentUser = getState().auth.user;\r\n if (currentUser.roleID === updatedRole.roleID) {\r\n currentUser.roleName = updatedRole.roleName;\r\n currentUser.permissions = { ...updatedRole.permissions };\r\n currentUser.overrides = { ...updatedRole.overrides };\r\n dispatch({\r\n type: ActionTypes.UPDATE_PROFILE,\r\n payload: currentUser,\r\n });\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\n\r\nconst ModalTitle = ({title, fontSize, t}) => {\r\n return

    {t(title)}

    ;\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\nexport default Logo;\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 {\r\n INFORCE,\r\n NEW_BUSINESS,\r\n SHARED_OWNERSHIP,\r\n EAPPLICATION,\r\n ADMIN,\r\n BI,\r\n} 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 // if (item === SHARED_OWNERSHIP || item === EAPPLICATION) {\r\n // setSelectedItem(item);\r\n // } else if ((user.isInforce && item === INFORCE) || (user.isNewBusiness && item === NEW_BUSINESS)) {\r\n // setSelectedItem(item);\r\n // setDisabled(false);\r\n // }\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 = (\r\n switchBtnName,\r\n itemId,\r\n isPermitted,\r\n logoName = \"logoHdrNewBusiness\"\r\n ) => (\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\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: \"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 switchButton(\r\n \"inforceSwitch\",\r\n INFORCE,\r\n user?.permissions?.isInforce?.isActive,\r\n \"logoHdrInforce\"\r\n )}\r\n {user.system.isNewBusiness &&\r\n switchButton(\r\n \"illustrationSwitch\",\r\n NEW_BUSINESS,\r\n user?.permissions?.isNewBusiness?.isActive,\r\n \"logoHdrNewBusiness\"\r\n )}\r\n {route === NEW_BUSINESS &&\r\n !isMobile &&\r\n user.system.isConcepts &&\r\n switchButton(\r\n \"sharedOwnershipSwitch\",\r\n SHARED_OWNERSHIP,\r\n user?.permissions?.isNewBusiness?.isActive\r\n )}\r\n {(route === NEW_BUSINESS || route === EAPPLICATION) &&\r\n user?.permissions?.isEapplicationAdministrator?.isActive &&\r\n user.system.isEapplication &&\r\n switchButton(\r\n \"eappSettingSwitch\",\r\n EAPPLICATION,\r\n user?.permissions?.isEapplication?.isActive,\r\n \"logoHdrEApplication\"\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 {(user?.permissions?.isAdmin?.isActive ||\r\n (user.system.isBusinessIntelligence &&\r\n user?.permissions?.isBusinessIntelligence?.isActive) ||\r\n ((user?.permissions?.isAdminSystem?.isActive ||\r\n user?.permissions?.isAdminSystemAdministrator?.isActive) &&\r\n user.system.isAdminSystem)) && (\r\n handleSelectItem(e, ADMIN)}\r\n className={`PAGELINK fullWidth justifyStart flexContainer alignCenter paddingMed cursorPointer logoHdrNewBusiness borderRadiusAll ${\r\n selectedItem === ADMIN &&\r\n (user?.permissions?.isAdmin?.isActive ||\r\n (user.system.isBusinessIntelligence &&\r\n user?.permissions?.isBusinessIntelligence?.isActive))\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 {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 // console.log('isNewBusiness: ', auth.user.isNewBusiness);\r\n if (!auth.user?.permissions?.isNewBusiness?.isActive) {\r\n return \"New Business\";\r\n } else if (!auth.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\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

    {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 from \"react\";\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

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

    \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, Fragment} from 'react';\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\nimport { cloneDeep } from 'lodash';\r\nimport axios from 'axios';\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\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(event, this.state.profileData, this.elementItems, this.updateProfileFormData);\r\n };\r\n controlClick = (event, name, value) => {\r\n event.persist();\r\n event.preventDefault();\r\n console.log('Alphalookup test', event, event.target, name, value);\r\n this.props.globalClick(name, this.state.profileData, this.elementItems, this.updateProfileFormData);\r\n };\r\n controlGetFocus = (event, name, value) => {\r\n this.props.globalGetFocus(event, this.state.profileData, this.elementItems, this.updateProfileFormData);\r\n };\r\n controlLostFocus = (event, name, value) => {\r\n this.props.globalLostFocus(event, this.state.profileData, this.elementItems, this.updateProfileFormData);\r\n };\r\n\r\n updateWidgetsData = (widgetsData) => {\r\n this.setState({widgetsData});\r\n };\r\n\r\n submitProfile = async () => {\r\n // this.setState({ disableSaveButton: true });\r\n // setTimeout(() => this.setState({ disableSaveButton: false }), 2000);\r\nconst { profileData, widgetsData } = this.state;\r\nif (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\nconst widgets = {};\r\nconst cloneWidgets = cloneDeep(widgetsData);\r\ncloneWidgets.forEach((widget, idx) => {\r\n widget.displayOrder = idx + 1;\r\n widgets[widget.name] = widget;\r\n});\r\n\r\nawait this.props.updateUserProfile(\r\n { ...profileData, widgetsData: widgets },\r\n this.props.t\r\n);\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\r\n try {\r\n const {data} = await axios.post('/api/BI/GetAllUserWidgets', this.props.user);\r\n console.log(data)\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 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 });\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 {\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 axios from 'axios';\r\n\r\nexport const postReportData = async (finalReport) => {\r\n try {\r\n let res = await axios.post('/api/ReportData', finalReport);\r\n console.log('Result: ', res.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 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 {styleTypes} from './constants';\r\nimport axios from 'axios';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport {globalVariables, toProperCase} from 'core/utils/util';\r\nimport {\r\n getCoverageItemByRiderType,\r\n getCoverageItemByType,\r\n getDisabilityItem,\r\n getCoverageByID,\r\n PCRound,\r\n} 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_PremiumMode,\r\n TextLookup_PolicyCStatCode,\r\n TextLookup_NFOption,\r\n TextLookup_DividendPayout,\r\n isProductHealth,\r\n Format2Decimals,\r\n FormatnDecimals,\r\n isProductTermProtection,\r\n isProdIDSOSBAEndowment,\r\n isProdIDGradedPremium,\r\n isProdIDProPlan,\r\n isPolicyPaidUp,\r\n TextLookup_BeneficiaryCode,\r\n FormatPhoneNumber,\r\n isPlanExcludeHealthMatch,\r\n GetFullNameWithSalutation,\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(\r\n '094',\r\n '08U101',\r\n 'UL - 2008 Term 10 Rider - Base Insured',\r\n formData,\r\n policy,\r\n false\r\n );\r\n inforcePolicy = await addT10(\r\n '094',\r\n '08U101',\r\n 'UL - 2008 Term 10 Rider - Base Insured',\r\n formData,\r\n inforcePolicy,\r\n true\r\n );\r\n } else {\r\n policy = await addT10(\r\n '093',\r\n '06T101',\r\n 'Term 10 - 2006 (Base Insured)',\r\n formData,\r\n policy,\r\n false\r\n );\r\n inforcePolicy = await addT10(\r\n '093',\r\n '06T101',\r\n 'Term 10 - 2006 (Base Insured)',\r\n formData,\r\n inforcePolicy,\r\n true\r\n );\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 (\r\n aCoverageItem.coverageType === CoverageTypes.BENEFIT &&\r\n aCoverageItem.riderType === RiderTypes.WAIVER\r\n ) {\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 =\r\n coverage.expiryDate.getFullYear() - issueDate.getFullYear() + 1 - coverage.durationStart;\r\n coverage.expiryAge =\r\n 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 case PolicyTypes.TFSA:\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.TFSA:\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([\r\n t('Plan Identification'),\r\n baseCoverageItem.planCode,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Issue Date'),\r\n format_Display_Date(inforcePolicy.issueDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Payout Frequency'),\r\n TextLookup_PayoutFrequency(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\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')} ${\r\n insuredPolicyPayor.bankAccountNo\r\n } `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\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([\r\n t('Tax Withheld'),\r\n formatDollar(inforcePolicy.payoutTaxWithheld),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Tax Calculation Percent'),\r\n formatAllocationPercent(inforcePolicy.payoutTaxCalculationPercent),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Additional Tax Withheld'),\r\n formatDollar(inforcePolicy.payoutAdditionalTaxWithheld),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Net Payout Amount'),\r\n `${formatDollar(\r\n inforcePolicy.annualPayoutAmount -\r\n inforcePolicy.payoutTaxWithheld -\r\n inforcePolicy.payoutAdditionalTaxWithheld\r\n )} (${t('Annualized')} ${formatDollar(\r\n (inforcePolicy.annualPayoutAmount -\r\n inforcePolicy.payoutTaxWithheld -\r\n 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(\r\n inforcePolicy.payoutPaymentDate,\r\n inforcePolicy.payoutEffectiveDate,\r\n inforcePolicy.currentDate\r\n ),\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([\r\n t('Minimum Payout Based On'),\r\n `${t('Annuitant')}, aged ${intAge.toString()}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Minimum Payout Based On'),\r\n `${t('Spouse, aged')} ${intAge.toString()}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n\r\n display.push([\r\n t('Payout Type'),\r\n TextLookup_PayoutType(inforcePolicy.payoutType, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Minimum Payout this Year'),\r\n formatDollar(inforcePolicy.minPayoutThisYear),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (inforcePolicy.fundsLockedIn) {\r\n if (inforcePolicy.maxPayoutThisYear < 100000 && inforcePolicy.maxPayoutThisYear > 0) {\r\n display.push([\r\n t('Maximum Payout this Year'),\r\n formatDollar(inforcePolicy.maxPayoutThisYear),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Maturity/Expiry Date'),\r\n format_Display_Date(inforcePolicy.expiryDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Maturity/Expiry Date'),\r\n format_Display_Date(inforcePolicy.terminatedDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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 (\r\n inforcePolicy.policyType === PolicyTypes.SegregatedFund ||\r\n inforcePolicy.policyType === PolicyTypes.SegregatedFundRRIF\r\n ) {\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 (\r\n fundItem.isActive &&\r\n fundItem.fundType === FundTypes.DIA &&\r\n !isFundLoan(fundItem.fundID)\r\n ) {\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(\r\n inforcePolicy,\r\n baseCoverageItem,\r\n fundItem,\r\n termRidersNode,\r\n t\r\n );\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(\r\n inforcePolicy,\r\n parentNode,\r\n TextLookup_ProductName(baseCoverageItem.planCode, t),\r\n t\r\n );\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(\r\n inforcePolicy,\r\n baseCoverageItem,\r\n fundItem,\r\n termRidersNode,\r\n t\r\n );\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([\r\n `${t('Annuitant')}:`,\r\n `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Deposit Date'),\r\n format_Display_Date(fundItem.interestStartDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Deposit Age'),\r\n fundItem.depositAge.toString(),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n display.push([\r\n t('Sex'),\r\n TextLookup_Sex(insuredItem.gender, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Cvg Attained Age'),\r\n insuredItem.currentAttainedAge.toString(),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Cvg Attained Age'),\r\n insuredItem.attainedAge.toString(),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Current Interest Rate'),\r\n formatInterestRate(fundItem.interestRate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Deposit Amount'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Current Value'),\r\n formatDollar(fundItem.currentFundValue),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Deposit Term'),\r\n `${fundItem.depositTerm.toString()} ${t('months')}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Guaranteed Interest Rate'),\r\n formatAllocationPercent(fundItem.interestRate * 100),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Deposit Amount'),\r\n formatDollar(fundItem.depositAmount),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Maturity Value'),\r\n formatDollar(fundItem.maturityValue),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Maturity Date'),\r\n format_Display_Date(fundItem.maturityDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n display.push([\r\n t('Reinvestment Instructions'),\r\n t(fundItem.reInvestmentInstructions),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n 'Current Rate'\r\n )} ${formatInterestRate(fundItem.interestRate)}`;\r\n } else {\r\n data.title = `${formatDollar(fundItem.fundValue)}, ${formatInterestRate(\r\n fundItem.interestRate\r\n )} ${t('(C) Matures')} ${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 (\r\n inforcePolicy.policyType === PolicyTypes.SegregatedFund ||\r\n inforcePolicy.policyType === PolicyTypes.UL\r\n ) {\r\n display.push([\r\n t('Deposit Allocation'),\r\n `${formatAllocationPercent(fundItem.depositAllocation.allocationPercent)} ${t(\r\n 'to this fund'\r\n )}`,\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(\r\n 'from this fund'\r\n )}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n display.push([\r\n `${t('Annuitant')}:`,\r\n `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Sex'),\r\n TextLookup_Sex(insuredItem.gender, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Cvg Attained Age'),\r\n insuredItem.currentAttainedAge.toString(),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n\r\n display.push([\r\n t('Fund Valuation Date'),\r\n format_Display_Date(inforcePolicy.currentDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Number of Units Held'),\r\n FormatnDecimals(fundItem.units, 4),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]); //format fundItem.units\r\n display.push([\r\n t('Unit Value'),\r\n '$' + FormatnDecimals(fundItem.unitPrice, 4),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]); //formatUnitValue\r\n display.push([\r\n t('Current Value'),\r\n formatDollar(fundItem.fundValue),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Maturity Date'),\r\n format_Display_Date(fundItem.maturityDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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 //Add ADO Branch\r\n if (baseCoverageItem.isParDeposits && baseCoverageItem.parDepositAmount > 0) {\r\n addADOCoverageBranch(inforcePolicy, baseCoverageItem, treeIndex, coverageRoot, t);\r\n treeIndex++;\r\n }\r\n}\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 ||\r\n 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(\r\n inforcePolicy.coverages,\r\n riderCoverageItem.parentCoverageID,\r\n '',\r\n true\r\n );\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([\r\n t('Plan Identification'),\r\n riderCoverageItem.planCode,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n display.push([\r\n t('Life Insured'),\r\n `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Issue Date'),\r\n `${format_Display_Date(riderCoverageItem.issueDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Issue Age'), `${insuredItem.issueAge}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Sex'),\r\n TextLookup_Sex(insuredItem.gender, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]); //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([\r\n t('Sub Table 1'),\r\n `${translateSubTable1(riderCoverageItem, true, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (isProductHealth(riderCoverageItem.prodID)) {\r\n display.push([\r\n t('Sub Table 2'),\r\n `EP: ${translateSubTable2(riderCoverageItem, false, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Sub Table 3'),\r\n `BP: ${translateSubTable3(riderCoverageItem, false, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Sub Table 4'),\r\n `${translateSubTable4(riderCoverageItem, false, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else if (blnIsWPADBonUL) {\r\n display.push([\r\n t('Sub Table 2'),\r\n `${translateSubTable2(aParentCoverage, false, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (\r\n aParentCoverage.riderType === RiderTypes.UL ||\r\n aParentCoverage.coverageType === CoverageTypes.BASE\r\n ) {\r\n display.push([\r\n t('COI Type'),\r\n translateCOIType(aParentCoverage, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n }\r\n display.push([\r\n t('Death Benefit Type'),\r\n translateDeathBenefitType(aParentCoverage, inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n\r\n display.push([\r\n t('Cvg Attained Age'),\r\n insuredItem.currentAttainedAge,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n beneficiaryItem.beneficiaryRelationship\r\n )}, ${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([\r\n t('Face Amount'),\r\n formatDollar(riderCoverageItem.faceAmount),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n riderCoverageItem.meRating\r\n )} ${t('times standard')}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n strPremLabel,\r\n formatDollar(riderCoverageItem.premCoverage),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Expiry Date'),\r\n format_Display_Date(riderCoverageItem.expiryDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Premium Frequency'),\r\n TextLookup_PremiumModePolicy(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (isCoveragePaidUp(riderCoverageItem)) {\r\n display.push([\r\n t('Mode Premium Amount'),\r\n t('Not Applicable'),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Maturity/Expiry Date'),\r\n format_Display_Date(riderCoverageItem.expiryDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n\r\n displayArray[treeIndex] = display;\r\n return node;\r\n}\r\n\r\nfunction addADOCoverageBranch(inforcePolicy, baseCoverageItem, treeIndex, coverageRoot, t) {\r\n //Note that ADO is not a coverage in the BaseCoverage.Coverages collection. We are just treating it as such for display\r\n let data = {};\r\n let aParentCoverage;\r\n data.expanded = true;\r\n data.title = t('Additional Deposit Option');\r\n data.displayStatusType = baseCoverageItem.displayStatusType;\r\n let node = new Node(data, treeIndex);\r\n let insuredItem = baseCoverageItem.insured;\r\n coverageRoot.children.push(node);\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('Additional Deposit Option'), styleTypes.BOLD + getCurrentBgColor()]);\r\n display.push([t('Plan Identification'), t('None'), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Life Insured'),\r\n `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Issue Date'),\r\n `${format_Display_Date(baseCoverageItem.issueDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Issue Age'), `${insuredItem.issueAge}`, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Sex'),\r\n TextLookup_Sex(insuredItem.gender, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]); //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([\r\n t('Sub Table 1'),\r\n `${translateSubTable1(baseCoverageItem, true, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n\r\n display.push([\r\n t('Cvg Attained Age'),\r\n insuredItem.currentAttainedAge,\r\n styleTypes.BOLD + toggleBgColor(),\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\r\n display.push([t('ADO Deposit Amount'), formatDollar(baseCoverageItem.parDepositAmount), styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('ADO Deposit Frequency'), TextLookup_PremiumMode(baseCoverageItem.parDepositMode, t),styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('ADO Status Indicator'), baseCoverageItem.parDepositStatus, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([t('Maturity/Expiry Date'), format_Display_Date(baseCoverageItem.parDepositExpiryDate), styleTypes.BOLD + toggleBgColor()]);\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 console.log('baseCoverageItem.name', baseCoverageItem.name);\r\n console.log('baseCoverageItem', baseCoverageItem);\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([\r\n t('Plan Identification'),\r\n baseCoverageItem.planCode,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Life Insured'),\r\n `${fullName(insuredItem)}, SIN# ${formatSIN(insuredItem.sin)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n\r\n display.push([\r\n t('Issue Date'),\r\n format_Display_Date(baseCoverageItem.issueDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Issue Age'), insuredItem.issueAge, styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Sex'),\r\n TextLookup_Sex(insuredItem.gender, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Sub Table 1'),\r\n `${translateSubTable1(baseCoverageItem, true, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n\r\n if (isProductHealth(baseCoverageItem.prodID)) {\r\n display.push([\r\n t('Sub Table 2'),\r\n `EP: ${translateSubTable2(baseCoverageItem, false, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Sub Table 3'),\r\n `BP: ${translateSubTable3(baseCoverageItem, false, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Sub Table 4'),\r\n `${translateSubTable4(baseCoverageItem, false, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n display.push([\r\n t('Sub Table 2'),\r\n `${translateSubTable2(baseCoverageItem, false, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (\r\n baseCoverageItem.riderType === RiderTypes.NONE ||\r\n baseCoverageItem.riderType === RiderTypes.UL\r\n ) {\r\n display.push([\r\n t('COI Type'),\r\n `${translateCOIType(baseCoverageItem, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n }\r\n display.push([\r\n t('Death Benefit Type'),\r\n `${translateDeathBenefitType(baseCoverageItem, inforcePolicy, t)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n\r\n display.push([\r\n t('Cvg Attained Age'),\r\n insuredItem.currentAttainedAge,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n let policyBaseCoverage = {};\r\n let blnFirst = false;\r\n if (baseCoverageItem.riderType !== RiderTypes.GPO) {\r\n if (\r\n baseCoverageItem.coverageType !== CoverageTypes.BASE &&\r\n baseCoverageItem.beneficiaries.length === 0\r\n ) {\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(\r\n beneficiaryItem.beneficiaryRelationship\r\n )}, ${formatAllocationPercent(beneficiaryItem.beneficiaryPercent)}`,\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(\r\n beneficiaryItem.beneficiaryRelationship\r\n )}, ${formatAllocationPercent(beneficiaryItem.beneficiaryPercent)}`,\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([\r\n t('Investment Value'),\r\n formatDollar(baseCoverageItem.cashValue),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Face Amount'),\r\n formatDollar(baseCoverageItem.faceAmount),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([t('Last Monthly COI'), '', styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Coverages'),\r\n formatDollar(baseCoverageItem.premCoverage),\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\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(\r\n 'years'\r\n )}`;\r\n }\r\n } else {\r\n strTemp = '';\r\n }\r\n display.push([\r\n t('Flat Extra'),\r\n `${formatDollar(baseCoverageItem.premFlatExtra)} ${strTemp}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n if (baseCoverageItem.meRatingDurationFromIssue) {\r\n display.push([\r\n t('Multiple Ex'),\r\n `${formatDollar(baseCoverageItem.premMultipleExtra)} ${t(\r\n 'for'\r\n )} ${baseCoverageItem.meRatingDurationFromIssue.toString()} ${t('years')}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Multiple Ex'),\r\n `${formatDollar(baseCoverageItem.premMultipleExtra)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n }\r\n display.push([\r\n t('Load Fee'),\r\n formatDollar(baseCoverageItem.policyFee),\r\n styleTypes.INDENT + toggleBgColor(),\r\n ]);\r\n if (baseCoverageItem.premWaiver > 0) {\r\n waiverCoverage = getCoverageItemByRiderType(\r\n baseCoverageItem.coverages,\r\n CoverageTypes.BENEFIT,\r\n RiderTypes.WAIVER\r\n );\r\n if (waiverCoverage.isUseRatings && waiverCoverage.meRating !== 1) {\r\n display.push([\r\n t('Waiver'),\r\n `${formatDollar(baseCoverageItem.premWaiver)} ${Format2Decimals(\r\n waiverCoverage.meRatingExpiryDate\r\n )} ${t('times standard')}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Waiver'),\r\n `${formatDollar(baseCoverageItem.premWaiver)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n }\r\n } else {\r\n display.push([\r\n t('Waiver'),\r\n formatDollar(baseCoverageItem.premWaiver),\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n }\r\n display.push([\r\n t('ADB'),\r\n formatDollar(baseCoverageItem.premADB),\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n t('Total'),\r\n formatDollar(baseCoverageItem.modePremiumAmount),\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Cash Value'),\r\n formatDollar(baseCoverageItem.cashValue),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n\r\n if ((isProductTermProtection(baseCoverageItem.prodID)) && (baseCoverageItem.coverageType == CoverageTypes.BASE)) {\r\n let dblTotalTermFaceAmount = 0;\r\n\r\n for (let coverageItem of baseCoverageItem.coverages) {\r\n if (coverageItem.isActive && coverageItem.riderType === RiderTypes.TERM) {\r\n dblTotalTermFaceAmount = dblTotalTermFaceAmount + coverageItem.faceAmount;\r\n }\r\n }\r\n\r\n display.push([\r\n t('Total Term Face Amount'),\r\n `${formatDollar(dblTotalTermFaceAmount)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Policy Fee'),\r\n `${formatDollar(baseCoverageItem.policyFee)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n if (baseCoverageItem.premWaiver > 0) {\r\n waiverCoverage = getCoverageItemByRiderType(\r\n baseCoverageItem.coverages,\r\n CoverageTypes.BENEFIT,\r\n RiderTypes.WAIVER\r\n );\r\n if (waiverCoverage.isUseRatings && waiverCoverage.meRating !== 1) {\r\n display.push([\r\n t('Waiver'),\r\n `${formatDollar(baseCoverageItem.premWaiver)} ${Format2Decimals(\r\n waiverCoverage.meRating\r\n )} ${t('times standard')}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Waiver'),\r\n `${formatDollar(baseCoverageItem.premWaiver)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n }\r\n }\r\n\r\n display.push([\r\n t('ADB'),\r\n `${formatDollar(baseCoverageItem.premADB)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n t('Premium Frequency'),\r\n TextLookup_PremiumModePolicy(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n baseCoverageItem.modalFactorPolicyFee\r\n )}`;\r\n }\r\n display.push([\r\n t('Mode Premium Amount'),\r\n strTemp,\r\n styleTypes.BOLD + toggleBgColor(),\r\n strTemp2,\r\n ]);\r\n } else {\r\n\r\n if (baseCoverageItem.coverageType === CoverageTypes.OYT) {\r\n display.push([\r\n t('Face Amount'),\r\n `${formatDollar(inforcePolicy.dividendEnhancedAmount)} ${t(\r\n 'Sum Insured'\r\n )}: ${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(\r\n baseCoverageItem.sumInsured\r\n )}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else if (\r\n (baseCoverageItem.isUseDeathBenefitRateTable ||\r\n 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(\r\n baseCoverageItem.sumInsured\r\n )}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Face Amount'),\r\n `${formatDollar(baseCoverageItem.faceAmount)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Premium Frequency'),\r\n TextLookup_PremiumModePolicy(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Mode Premium Amount'),\r\n t('Not Applicable'),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([`${t('Annual Premium')}:`, '', styleTypes.BOLD + toggleBgColor()]);\r\n display.push([\r\n t('Coverage'),\r\n `${formatDollar(baseCoverageItem.premCoverage)} ${strTemp}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\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([\r\n t('Flat Extra'),\r\n `${formatDollar(baseCoverageItem.premFlatExtra)} ${strTemp}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n\r\n if (baseCoverageItem.meRatingDurationFromIssue > 0) {\r\n display.push([\r\n t('Multiple Ex'),\r\n `${formatDollar(baseCoverageItem.premMultipleExtra)} ${t(\r\n 'for'\r\n )} ${baseCoverageItem.meRatingDurationFromIssue.toString()} ${t('years')}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Multiple Ex'),\r\n `${formatDollar(baseCoverageItem.premMultipleExtra)} `,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n }\r\n display.push([\r\n t('Policy Fee'),\r\n `${formatDollar(baseCoverageItem.policyFee)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n\r\n if (baseCoverageItem.premWaiver > 0) {\r\n waiverCoverage = getCoverageItemByRiderType(\r\n baseCoverageItem.coverages,\r\n CoverageTypes.BENEFIT,\r\n RiderTypes.WAIVER\r\n );\r\n if (waiverCoverage.isUseRatings && waiverCoverage.meRating !== 1) {\r\n display.push([\r\n t('Waiver'),\r\n `${formatDollar(baseCoverageItem.premWaiver)} ${Format2Decimals(\r\n waiverCoverage.meRating\r\n )} ${t('times standard')}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Waiver'),\r\n `${formatDollar(baseCoverageItem.premWaiver)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n }\r\n }\r\n\r\n display.push([\r\n t('ADB'),\r\n `${formatDollar(baseCoverageItem.premADB)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n if (isProdIDGradedPremium(inforcePolicy.prodID) || isProdIDProPlan(inforcePolicy.prodID)) {\r\n display.push([\r\n t('Subtract Dividend'),\r\n `(${formatDollar(baseCoverageItem.premSubtractDividend)})`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n }\r\n display.push([\r\n t('Total'),\r\n formatDollar(baseCoverageItem.premAnnual),\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n t('Premium Frequency'),\r\n TextLookup_PremiumModePolicy(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n baseCoverageItem.modalFactorPolicyFee\r\n )}`;\r\n }\r\n display.push([\r\n t('Mode Premium Amount'),\r\n strTemp,\r\n styleTypes.BOLD + toggleBgColor(),\r\n strTemp2,\r\n ]);\r\n }\r\n\r\n display.push([\r\n t('Maturity/Expiry Date'),\r\n format_Display_Date(baseCoverageItem.expiryDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (baseCoverageItem.isParDeposits) {\r\n display.push([\r\n 'ADO Annual Minimum',\r\n `${formatDollar(baseCoverageItem.parDepositMin)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n 'ADO Annual Maximum',\r\n `${formatDollar(baseCoverageItem.parDepositMax)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n }\r\n }\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 //Feb 22 2024 - adding this block to match what is in the desktop. Not sure why it was missing.\r\n if (inforcePolicy.policyType === PolicyTypes.TFSA) {\r\n //TrackIT 16581 - Adding TFSA\r\n display.push([\r\n t('This policy is registered as a TFSA'),\r\n '',\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n} else if (inforcePolicy.isRegistered) {\r\n display.push([\r\n t('This policy is registered as an RRSP'),\r\n '',\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n} else {\r\n display.push(['', '', styleTypes.EMPTY + getCurrentBgColor()]);\r\n }\r\n\r\n let policyStatus = TextLookup_PolicyCStatCode(inforcePolicy.policyCStatCode, t);\r\n\r\n if (inforcePolicy.policyCStatCode === CstatCode.DEATH) {\r\n policyStatus =\r\n 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([\r\n t('Policy Issue Date'),\r\n `${format_Display_Date(inforcePolicy.issueDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n\r\n if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n display.push([\r\n t('Deposit Frequency'),\r\n TextLookup_PremiumModePolicy(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('Last Billed Mode Deposit Amount'),\r\n `${formatDollar(inforcePolicy.totalModalPremium)} ${t('Annualized Amt')}: ${formatDollar(\r\n inforcePolicy.totalAnnualizedPremium\r\n )}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Premium Frequency'),\r\n TextLookup_PremiumModePolicy(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (isPolicyPaidUp(inforcePolicy)) {\r\n display.push([\r\n t('Last Billed Mode Premium Amount'),\r\n t('NIL'),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Last Billed Mode Premium Amount'),\r\n `${formatDollar(inforcePolicy.totalModalPremium + inforcePolicy.baseCoverage.parDepositAmount)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\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')} ${\r\n insuredPolicyPayor.bankAccountNo\r\n } `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n }\r\n if (inforcePolicy.policyType === PolicyTypes.UL) {\r\n display.push([\r\n t('Next Monthiversary Date'),\r\n `${format_Display_Date(inforcePolicy.nextMonthiversaryDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (inforcePolicy.isRegistered || !inforcePolicy.isLoanAvailable) {\r\n display.push([\r\n t('Loan Available'),\r\n t('Not permitted on this policy'),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n inforcePolicy.availableLoanInterestRate * 100\r\n )}`,\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([\r\n t('Paid to Date'),\r\n `${format_Display_Date(inforcePolicy.paidToDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n if (inforcePolicy.isRegistered === true || inforcePolicy.isLoanAvailable === false) {\r\n display.push([\r\n t('Loan Available'),\r\n t('Not permitted on this policy'),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n inforcePolicy.availableLoanInterestRate * 100\r\n )}`,\r\n ]);\r\n }\r\n display.push([\r\n t('Nonforfeiture Option'),\r\n TextLookup_NFOption(inforcePolicy.nonForfeitureOption || '', t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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, inforcePolicy.prodID, t)} ${formatDollar(\r\n inforcePolicy.dividendEnhancedAmount\r\n )}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n fDividendPaidLabel,\r\n `${formatDollar(inforcePolicy.dividendThisYear)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n TAFaceAmnt\r\n )}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Dividend Option'),\r\n TextLookup_DividendPayout(inforcePolicy.dividendPayoutType, inforcePolicy.prodID, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n fDividendPaidLabel,\r\n `${formatDollar(inforcePolicy.dividendThisYear)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display.push([\r\n t('PUA Face Amount'),\r\n `${formatDollar(inforcePolicy.puaFaceAmount)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n }\r\n\r\n if (inforcePolicy.isActive) {\r\n display.push([\r\n t('Maturity/Expiry Date'),\r\n `${format_Display_Date(inforcePolicy.expiryDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Maturity/Expiry Date'),\r\n `${format_Display_Date(inforcePolicy.terminatedDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('GIA Value'),\r\n `+${formatDollar(inforcePolicy.giaValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Indexed Funds Value'),\r\n `+${formatDollar(indexedFundValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n }\r\n } else {\r\n display1.push([\r\n t('Indexed Funds Value'),\r\n `+${formatDollar(indexedFundValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Surr Chrg Market Val Adj'),\r\n `-${formatDollar(inforcePolicy.mva)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display1.push([\r\n t('Early Withdrawal'),\r\n `-${formatDollar(inforcePolicy.surrenderCharge)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n display1.push([\r\n t('Policy Value'),\r\n `${formatDollar(inforcePolicy.policyValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display1.push([\r\n t('Basic Cash Value'),\r\n `+${formatDollar(inforcePolicy.basicCashValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display1.push([\r\n t('PUA Cash Value'),\r\n `+${formatDollar(inforcePolicy.puaCashValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Premium Refund (approx)'),\r\n `+${formatDollar(inforcePolicy.premiumRefund)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display1.push([\r\n t('Policy Cash Value'),\r\n `${formatDollar(inforcePolicy.policyValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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# ${\r\n inforcePolicy.insureds[0].sin\r\n }`;\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([\r\n t('This policy is registered as a RRIF'),\r\n '',\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n } else if (inforcePolicy.policyType === PolicyTypes.TFSA ) {\r\n //TrackIT 16581 - Adding TFSA\r\n display.push([\r\n t('This policy is registered as a TFSA'),\r\n '',\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n } else if (inforcePolicy.isRegistered) {\r\n display.push([\r\n t('This policy is registered as an RRSP'),\r\n '',\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\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([\r\n t('Policy Status'),\r\n `${strPolicyStatus} ${format_Display_Date(baseCoverageItem.insured.dateOfDeath)}`,\r\n style,\r\n ]);\r\n } else {\r\n display.push([t('Policy Status'), `${strPolicyStatus}`, style]);\r\n }\r\n\r\n display.push([\r\n t('Policy Issue Date'),\r\n `${format_Display_Date(inforcePolicy.issueDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n\r\n if (\r\n isInPayout(inforcePolicy) ||\r\n inforcePolicy.policyType === PolicyTypes.RRIF ||\r\n inforcePolicy.policyType === PolicyTypes.SegregatedFundRRIF\r\n ) {\r\n display.push([\r\n t('Payout Frequency'),\r\n TextLookup_PayoutFrequency(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n inforcePolicy.annualPayoutAmount -\r\n inforcePolicy.payoutTaxWithheld -\r\n inforcePolicy.payoutAdditionalTaxWithheld\r\n )} (${t('Annualized')} ${formatDollar(\r\n (inforcePolicy.annualPayoutAmount -\r\n inforcePolicy.payoutTaxWithheld -\r\n 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(\r\n inforcePolicy.payoutPaymentDate,\r\n inforcePolicy.payoutEffectiveDate,\r\n inforcePolicy.currentDate\r\n )\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')} ${\r\n insuredPolicyPayor.bankAccountNo\r\n } `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n }\r\n }\r\n } else {\r\n display.push([\r\n t('Deposit Frequency'),\r\n TextLookup_PremiumModePolicy(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n 'Annualized Amt'\r\n )}: ${formatDollar(inforcePolicy.totalAnnualizedPremium)}`,\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')} ${\r\n insuredPolicyPayor.bankAccountNo\r\n } `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\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([\r\n t('Loan Available'),\r\n t('Not permitted on this policy'),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n inforcePolicy.availableLoanInterestRate * 100\r\n )}`,\r\n ]);\r\n }\r\n if (inforcePolicy.isActive) {\r\n display.push([\r\n t('Maturity/Expiry Date'),\r\n `${format_Display_Date(inforcePolicy.expiryDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Maturity/Expiry Date'),\r\n `${format_Display_Date(inforcePolicy.terminatedDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n beneficiaryItem.beneficiaryRelationship\r\n )}, ${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([\r\n t('Spousal Contributor'),\r\n GetFullNameWithSalutation(inforcePolicy.spouseContributor),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('DIA Value'),\r\n `+${formatDollar(inforcePolicy.diaValue)}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\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([\r\n t('GIA Value'),\r\n `+${formatDollar(inforcePolicy.giaValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display1.push([\r\n t('Indexed Funds Value'),\r\n `+${formatDollar(inforcePolicy.indexedFundValue)}`,\r\n 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('Surr Chrg Market Val Adj'),\r\n `-${formatDollar(inforcePolicy.mva)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display1.push([\r\n t('Early Withdrawal'),\r\n `-${formatDollar(inforcePolicy.surrenderCharge)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n display1.push([\r\n t('Policy Value'),\r\n `${formatDollar(inforcePolicy.policyValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n displayArray[treeIndex] = display1;\r\n}\r\nfunction addSegFundOwnerBranch(inforcePolicy, ownerNode, t) {\r\n ownerNode.title = `Owner: ${fullName(inforcePolicy.owners[0])} SIN# ${\r\n inforcePolicy.owners[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.SegregatedFundRRIF) {\r\n display.push([\r\n t('This policy is registered as a RRIF'),\r\n '',\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n } else if (inforcePolicy.policyType === PolicyTypes.TFSA) {\r\n //TrackIT 16581 - Adding TFSA\r\n display.push([\r\n t('This policy is registered as a TFSA'),\r\n '',\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n } else if (inforcePolicy.isRegistered) {\r\n display.push([\r\n t('This policy is registered as an RRSP'),\r\n '',\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\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([\r\n t('Policy Status'),\r\n `${strPolicyStatus} ${format_Display_Date(baseCoverageItem.insured.dateOfDeath)}`,\r\n style,\r\n ]);\r\n } else {\r\n display.push([t('Policy Status'), `${strPolicyStatus}`, style]);\r\n }\r\n\r\n display.push([\r\n t('Policy Issue Date'),\r\n `${format_Display_Date(inforcePolicy.issueDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n\r\n if (\r\n isInPayout(inforcePolicy) ||\r\n inforcePolicy.policyType === PolicyTypes.RRIF ||\r\n inforcePolicy.policyType === PolicyTypes.SegregatedFundRRIF\r\n ) {\r\n display.push([\r\n t('Payout Frequency'),\r\n TextLookup_PayoutFrequency(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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 -\r\n inforcePolicy.payoutTaxWithheld -\r\n inforcePolicy.payoutAdditionalTaxWithheld\r\n )} (Annualized ${formatDollar(\r\n (inforcePolicy.annualPayoutAmount -\r\n inforcePolicy.payoutTaxWithheld -\r\n 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(\r\n inforcePolicy.payoutPaymentDate,\r\n inforcePolicy.payoutEffectiveDate,\r\n inforcePolicy.currentDate\r\n )\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')} ${\r\n insuredPolicyPayor.bankAccountNo\r\n } `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n }\r\n }\r\n } else {\r\n display.push([\r\n t('Deposit Frequency'),\r\n TextLookup_PremiumModePolicy(inforcePolicy, t),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n 'Annualized Amt'\r\n )}: ${formatDollar(inforcePolicy.totalAnnualizedPremium)}`,\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')} ${\r\n insuredPolicyPayor.bankAccountNo\r\n } `,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n display.push([\r\n '',\r\n ` ${t('Depositor(s)')} ${insuredPolicyPayor.bankAccountHolderName}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\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([\r\n t('Loan Available'),\r\n t('Not permitted on this policy'),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n inforcePolicy.availableLoanInterestRate * 100\r\n )}`,\r\n ]);\r\n }\r\n if (inforcePolicy.isActive) {\r\n display.push([\r\n t('Maturity/Expiry Date'),\r\n `${format_Display_Date(inforcePolicy.expiryDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n } else {\r\n display.push([\r\n t('Maturity/Expiry Date'),\r\n `${format_Display_Date(inforcePolicy.terminatedDate)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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(\r\n beneficiaryItem.beneficiaryRelationship\r\n )}, ${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([\r\n t('Spousal Contributor'),\r\n GetFullNameWithSalutation(inforcePolicy.spouseContributor),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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([\r\n t('Fund Valuation Date'),\r\n format_Display_Date(inforcePolicy.currentDate),\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]); //TODO\r\n } else {\r\n display1.push([t('Fund Valuation Date'), t('N/A'), styleTypes.BOLD + toggleBgColor()]);\r\n }\r\n display1.push([\r\n t('Current Value'),\r\n formatDollar(inforcePolicy.policyValue),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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('Surr Chrg Market Val Adj'),\r\n `-${formatDollar(inforcePolicy.mva)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display1.push([\r\n t('Early Withdrawal'),\r\n `-${formatDollar(inforcePolicy.surrenderCharge)}`,\r\n styleTypes.INDENT + getCurrentBgColor(),\r\n ]);\r\n display1.push([\r\n t('Policy Value'),\r\n `${formatDollar(inforcePolicy.policyValue)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n if (inforcePolicy.isActive) {\r\n display1.push([\r\n t('Gtd Maturity Date'),\r\n format_Display_Date(inforcePolicy.guaranteedMaturityDate),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display1.push([\r\n t('Gtd Maturity Amount'),\r\n formatDollar(inforcePolicy.guaranteedMaturityAmount),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n display1.push([\r\n t('Gtd Death Amount'),\r\n formatDollar(inforcePolicy.guaranteedDeathAmount),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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 //Keep the 5 spaces between .consent and .memberClass. This is on purpose.\r\n display.push([\r\n '',\r\n `${t(owner.consent)} ${owner.memberClass}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n\r\n if (owner.phoneNumber && owner.phoneNumber.length > 0) {\r\n display.push([\r\n t('Owner Phone'),\r\n FormatPhoneNumber(owner.phoneNumber),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\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 = (\r\n (owner.address2 + ' ' + owner.address3).trim() +\r\n ' ' +\r\n owner.address4\r\n ).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 //Jan 2022 - remove church display for memberrship changes\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 //Keep the 5 spaces between .consent and .memberClass. This is on purpose.\r\n display.push([\r\n '',\r\n `${t(insured.consent)} ${insured.memberClass}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\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 //Keep the 5 spaces between .consent and .memberClass. This is on purpose.\r\n display.push([\r\n '',\r\n `${t(insured.consent)} ${insured.memberClass}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\r\n }\r\n if (inforcePolicy.payoutInsuredType === PayoutInsuredTypes.Spouse.None) {\r\n display.push([\r\n `${t('Annuitant')}:`,\r\n fullName(inforcePolicy.payoutInsured),\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]);\r\n //Keep the 5 spaces between .consent and .memberClass. This is on purpose.\r\n display.push([\r\n '',\r\n `${t(inforcePolicy.payoutInsured.consent)} ${inforcePolicy.payoutInsured.memberClass}`,\r\n styleTypes.BOLD + getCurrentBgColor(),\r\n ]);\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([\r\n t('Email'),\r\n `${getEmailAddress(insured.emails)}`,\r\n styleTypes.BOLD + toggleBgColor(),\r\n ]); // 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 return new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());\r\n}\r\n\r\nfunction isCoveragePaidUp(riderCoverageItem) {\r\n return (\r\n riderCoverageItem.coverageStatus.toUpperCase() === 'PAID UP' ||\r\n riderCoverageItem.coverageStatus.toUpperCase() === 'COVERAGE PAID UP'\r\n );\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() &&\r\n currentDate.getDate() >= aIssueDate.getDate())\r\n );\r\n}\r\n\r\nfunction formatChurchName(insuredItem, t) {\r\n let strTemp = '';\r\n\r\n strTemp =\r\n toProperCase(insuredItem.churchName.trim() + ', ' + insuredItem.churchCity.trim()) +\r\n ' ' +\r\n 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","// 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","// 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) => ({\r\n user: state.auth.user,\r\n }));\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) => {\r\n let value: string;\r\n if (user && user['inputLanguage'] === 'French') {\r\n value = t(`${key}-fr`);\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`);\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) => {\r\n let value: string;\r\n if (user && user['reportLanguage'] === 'French') {\r\n value = t(`${key}-fr`);\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`);\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 {isLaterDate} from 'custom/dataReports/utils/functions';\r\nimport {PolicyTypes} from 'custom/newbiz/utils/constants';\r\nimport { formatDollar } from \"./lookupFunctions\";\r\n\r\nfunction validateTermSection(formData, errors, user) {\r\n let chkFlag = false;\r\n let durationFlag = false;\r\n let totalFaceAmountFlag = false;\r\n let durationField = \"\"; //Duration field is stored so that the error is a field that is enabled and wrong.\r\n\r\n if (formData[\"chkTerm10\"] || formData[\"chkTerm20\"] || formData[\"chkTerm30\"]) {\r\n chkFlag = true;\r\n }\r\n if (!chkFlag) {\r\n errors[\"chkTerm10\"] = \"At least one term product must be checked\";\r\n }\r\n\r\n if (formData[\"chkTerm10\"]) {\r\n if (\r\n formData[\"cboTermDurationType10\"] === \"A\" &&\r\n +formData[\"txtTermDuration10\"] === 85\r\n ) {\r\n durationFlag = true;\r\n } else if (\r\n formData[\"cboTermDurationType10\"] === \"Y\" &&\r\n +formData[\"txtTermDuration10\"] === 85 - +formData[\"txtAge\"]\r\n ) {\r\n durationFlag = true;\r\n } else {\r\n durationField = \"txtTermDuration10\";\r\n }\r\n }\r\n if (formData[\"chkTerm20\"] && !durationFlag) {\r\n if (\r\n formData[\"cboTermDurationType20\"] === \"A\" &&\r\n +formData[\"txtTermDuration20\"] === 85\r\n ) {\r\n durationFlag = true;\r\n } else if (\r\n formData[\"cboTermDurationType20\"] === \"Y\" &&\r\n +formData[\"txtTermDuration20\"] === 85 - +formData[\"txtAge\"]\r\n ) {\r\n durationFlag = true;\r\n } else {\r\n durationField = \"txtTermDuration20\";\r\n }\r\n }\r\n if (formData[\"chkTerm30\"] && !durationFlag) {\r\n if (\r\n formData[\"cboTermDurationType30\"] === \"A\" &&\r\n +formData[\"txtTermDuration30\"] === 85\r\n ) {\r\n durationFlag = true;\r\n } else if (\r\n formData[\"cboTermDurationType30\"] === \"Y\" &&\r\n +formData[\"txtTermDuration30\"] === 85 - +formData[\"txtAge\"]\r\n ) {\r\n durationFlag = true;\r\n } else {\r\n durationField = \"txtTermDuration30\";\r\n }\r\n }\r\n if (!durationFlag) {\r\n errors[durationField] =\r\n \"At least one term product must have a duration to age 85\";\r\n }\r\n\r\n let maxTotal = 5000000;\r\n if (\r\n user?.permissions[\"isHeadOfficeOverride\"]?.isActive === true &&\r\n user?.overrides[\"chkOverrideUseMaxFace\"] === \"true\"\r\n ) {\r\n maxTotal = Math.max(+user?.overrides[\"txtOverrideMaxFace\"], maxTotal);\r\n }\r\n if (+formData[\"txtTotalFaceAmount\"] > maxTotal) {\r\n totalFaceAmountFlag = true;\r\n }\r\n if (totalFaceAmountFlag) {\r\n errors[\r\n \"txtTotalFaceAmount\"\r\n ] = `The total face amount cannot exceed ${formatDollar(maxTotal)}`;\r\n }\r\n}\r\n\r\nexport default function ValidateForm(formData, rules, user) {\r\n //console.log(\"Inside ValidateForm\");\r\n let errors = {};\r\n console.log(formData);\r\n if (formData[\"cboProduct\"] === \"0180\") {\r\n validateTermSection(formData, errors, user);\r\n }\r\n\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 //New Rule Aug 2021 - If the insured is an adult and the owner name is blank then copy the insured name into the owner name field\r\n if (formData[\"txtOwnerName\"] === \"\" && formData[\"txtInsuredName\"] === \"\") {\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[\"txtOwnerName\"] === \"\") {\r\n if (parseInt(formData[\"txtAge\"]) < 18) {\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 {\r\n formData[\"txtOwnerName\"] = formData[\"txtInsuredName\"];\r\n }\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 (\r\n formData[\"txtInsuredCellPhone\"].length !==\r\n rules[\"txtInsuredCellPhone\"].maxLength\r\n ) {\r\n errors[\"txtInsuredCellPhone\"] =\r\n \"You must enter valid Insured Cell Phone Number\";\r\n }\r\n if (\r\n formData[\"txtInsuredPostalZipCode\"].length !==\r\n rules[\"txtInsuredPostalZipCode\"].maxLength\r\n ) {\r\n errors[\"txtInsuredPostalZipCode\"] =\r\n \"You must enter valid postal/zip code\";\r\n }\r\n if (formData[\"rdoOwnerType\"] !== \"C\") {\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\"] === \"C\") {\r\n if (\r\n formData[\"txtBusinessNumber\"].length !==\r\n rules[\"txtBusinessNumber\"].maxLength\r\n ) {\r\n errors[\"txtBusinessNumber\"] = \"You must enter valid Business Number\";\r\n }\r\n if (\r\n formData[\"txtBusinessPhone\"].length !==\r\n rules[\"txtBusinessPhone\"].maxLength\r\n ) {\r\n errors[\"txtBusinessPhone\"] =\r\n \"You must enter valid Business Phone Number\";\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 if (!formData.email.toLowerCase().startsWith(formData.name.toLowerCase())) {\r\n errors.push(\"Email address must start with name\");\r\n }\r\n */\r\n return errors;\r\n}\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 //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","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 = '', updateFormData = () => {}) {\r\n switch (formData['formName']) {\r\n case 'illustration':\r\n formData[name] = value;\r\n updateFormData(name, value);\r\n sessionStore('newBusiness', name, value);\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 updateFormData(formData[name], value);\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","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 return (\r\n
    \r\n
      \r\n {children.map((child) => {\r\n if (child === undefined || child.props.isHidden) {\r\n return undefined;\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","module.exports = \"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 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","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","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\nimport { ProcompLogoReverse } from \"assets\";\r\n\r\nconst TabbedHeader = ({\r\n controlClick,\r\n controlGetFocus,\r\n controlLostFocus,\r\n setElement,\r\n isUserAdmin,\r\n sticky,\r\n}) => {\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 (\r\n route.subModule.toLowerCase() !==\r\n tempArr[tempArr.length - 1].toLowerCase()\r\n ) {\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 (\r\n route.subModule.toLowerCase() !==\r\n tempArr[tempArr.length - 1].toLowerCase()\r\n ) {\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 {t(routes[page][0].displayName)}\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 \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
    \r\n \r\n
    \r\n Powered by \r\n {\r\n window.open(\"https://www.procompconsulting.ca\");\r\n controlClick(event, event.target.name, event.target.value);\r\n }}\r\n >\r\n {t(\"btnProQuoteProComp\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TabbedHeader;\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\n// import 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 }\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 // setActivePage(\"\");\r\n // if(user.isInforce && user.isNewBusiness){\r\n // setIsSwitchProductModalOpen(!isSwitchProductModalOpen);\r\n // }else if(user.isInforce){\r\n // push(\"/inforce\");\r\n // }else if(user.isNewBusiness){\r\n // push(\"/illustration\");\r\n // }\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(...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}});\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 {isAboutModal && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default PageHeader;\r\n","module.exports = \"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 isProductTermProtection,\r\n isProductT100Protection,\r\n isProductWLProtection,\r\n isProductProtectionSeries,\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 scalarReportArray.push(addScalarItem('IsStatusReport', isStatus, 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 scalarReportArray.push(addScalarItem('Version', process.env.REACT_APP_VERSION, 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\r\n if (aBaseCoverage.isParDeposits) {\r\n scalarReportArray.push(addScalarItem('ADO Amount', aBaseCoverage.parDepositAmount, ScalarTypes.SCALAR_DOUBLE));\r\n } else {\r\n scalarReportArray.push(addScalarItem('ADO Amount', 0, ScalarTypes.SCALAR_DOUBLE));\r\n }\r\n\r\n scalarReportArray.push(addScalarItem('Is Loan Available', booleanToString(inforcePolicy.isLoanAvailable), ScalarTypes.SCALAR_BOOLEAN));\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(addScalarItem('Dividend Option', TextLookup_DividendPayout(inforcePolicy.dividendPayoutType, inforcePolicy.prodID, t) + ' ' + formatDollar(inforcePolicy.dividendEnhancedAmount), ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Dividend Option', TextLookup_DividendPayout(inforcePolicy.dividendPayoutType, inforcePolicy.prodID, 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 if (inforcePolicy.agent.phoneNumber === null) {\r\n scalarReportArray.push(addScalarItem('Servicing Agent Phone', FormatPhoneNumber(\"\"), ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Servicing Agent Phone', FormatPhoneNumber(inforcePolicy.agent.phoneNumber), ScalarTypes.SCALAR_STRING));\r\n }\r\n\r\n console.log('agent.emails', inforcePolicy.agent.emails);\r\n console.log('agent.emails length', inforcePolicy.agent.emails.length);\r\n if (inforcePolicy.agent.emails.length > 0) {\r\n scalarReportArray.push(addScalarItem('Servicing Agent Email', inforcePolicy.agent.emails[0].emailAddress, ScalarTypes.SCALAR_STRING));\r\n } else {\r\n scalarReportArray.push(addScalarItem('Servicing Agent Email', '', ScalarTypes.SCALAR_STRING));\r\n }\r\n\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 if (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n if (inforceData.policy.policyType === PolicyTypes.WholeLife) {\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_WLProtection.rtm',\r\n custom: 0,\r\n required: 1,\r\n pageBreak: 0,\r\n custColFile: '',\r\n });\r\n } else {\r\n if (isProductT100Protection(inforceData.policy.prodID)) {\r\n outArray.push({\r\n name: 'Status',\r\n reportFile: 'Status_T100Protection.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_TermProtection.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 } else {\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 }\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 case PolicyTypes.TFSA:\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)) {\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 } else if (inforceData.policy.policyType !== PolicyTypes.UL) {\r\n if (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n //Feb 2022 - All of the new Protection series products have a different cover page\r\n switch (inforceData.policy.policyType) {\r\n case PolicyTypes.LevelTerm:\r\n if (isProductT100Protection(inforceData.policy.prodID)) {\r\n outArray.push({name: 'Cover', reportFile: 'CoverPPRT100Protection.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: ''});\r\n } else {\r\n\r\n outArray.push({name: 'Cover',reportFile: 'CoverPPRTermProtection.rtm',custom: 0,required: 1,pageBreak: 0,custColFile: ''});\r\n }\r\n break;\r\n case PolicyTypes.WholeLife:\r\n outArray.push({name: 'Cover',reportFile: 'CoverPPRWLProtection.rtm',custom: 0,required: 1,pageBreak: 0,custColFile: ''});\r\n break;\r\n }\r\n } else {\r\n outArray.push({name: 'Cover',reportFile: 'Cover_PPR.rtm',custom: 0,required: 1,pageBreak: 0,custColFile: ''});\r\n\r\n }\r\n }\r\n\r\n if (!(inforceData.policy.policyType === PolicyTypes.UL)) {\r\n if (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n switch (inforceData.policy.policyType) {\r\n case PolicyTypes.LevelTerm:\r\n if (isProductT100Protection(inforceData.policy.prodID)) {\r\n outArray.push({name: 'Policy',reportFile: 'PolicyDescription_T100Protection.rtm',custom: 0,required: 1,pageBreak: 0,custColFile: ''});\r\n } else {\r\n\r\n outArray.push({name: 'Policy',reportFile: 'PolicyDescription_TermProtection.rtm',custom: 0,required: 1,pageBreak: 0,custColFile: ''});\r\n }\r\n break;\r\n case PolicyTypes.WholeLife:\r\n outArray.push({name: 'Policy',reportFile: 'PolicyDescription_WLProtection.rtm',custom: 0,required: 1,pageBreak: 0,custColFile: ''});\r\n break;\r\n }\r\n } else {\r\n outArray.push({name: 'Policy',reportFile: 'PolicyDescription.rtm',custom: 0,required: 1,pageBreak: 0,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 if (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n if (isProductT100Protection(inforceData.policy.prodID)) {\r\n outArray.push({ name: 'Status', reportFile: 'Status_T100Protection.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_T100Protection.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n } else {\r\n outArray.push({ name: 'Status', reportFile: 'Status_TermProtection.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_TermProtection.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Coverage and Premium', reportFile: 'PolicyValueCoveragePrem_Term.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n } else {\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 }\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({name: 'Policy Value',reportFile: 'PolicyValue_T10.rtm',custom: 0,required: 1,pageBreak: 0,custColFile: ''});\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 (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n outArray.push({ name: 'Status', reportFile: 'Status_WLProtection.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n } else {\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 }\r\n switch (inforceData.policy.dividendPayoutType) {\r\n case DividendPayoutTypes.PUA:\r\n if (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_ALT_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n if (isPremiumOffsetSelected(controlItems, inforceFormData)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_PO_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_PO_ALT_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n } else {\r\n if (inforceFormData['chkUseSolve'] && inforceFormData['chkPartialSurrWL']) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PUA_Surrender.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n } else {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_ALT_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n if (isPremiumOffsetSelected(controlItems, inforceFormData)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PO_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PO_ALT_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n }\r\n break;\r\n case DividendPayoutTypes.DOD:\r\n if (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_DOD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_ALT_DOD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n if (isPremiumOffsetSelected(controlItems, inforceFormData)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_PO_DOD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_PO_ALT_DOD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n } else {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_DOD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_ALT_DOD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n if (isPremiumOffsetSelected(controlItems, inforceFormData)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PO_DOD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PO_ALT_DOD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n }\r\n break;\r\n case DividendPayoutTypes.DRP:\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_DRP.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_ALT_DRP.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n break;\r\n case DividendPayoutTypes.LRD:\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_LRD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_ALT_LRD.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n break;\r\n case DividendPayoutTypes.PIC:\r\n if (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_PIC.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_Protection_ALT_PIC.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n } else {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PIC.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_ALT_PIC.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n break;\r\n case DividendPayoutTypes.Enhanced:\r\n if (inforceFormData['chkUseSolve'] && inforceFormData['chkPartialSurrWL']) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PUA_Surrender.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n } else {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_ENH.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_ALT_ENH.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n if (isPremiumOffsetSelected(controlItems, inforceFormData)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PO_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_PO_ALT_PUA.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n }\r\n break;\r\n case DividendPayoutTypes.None:\r\n if (isProdIDSOSBA(inforceData.policy.prodID)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_NONE.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_WL_ALT_NONE.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n } else {\r\n if (isProductEssentialLife(inforceData.policy.prodID)) {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_EssentialLife.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\r\n } else {\r\n outArray.push({ name: 'Policy Value', reportFile: 'PolicyValue_T100.rtm', custom: 0, required: 1, pageBreak: 0, custColFile: '' });\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 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 case PolicyTypes.TFSA:\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","module.exports = \"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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/procomp.86184f1a.svg\";","module.exports = \"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==\"","module.exports = __webpack_public_path__ + \"static/media/add-logo-blue.7dc92802.svg\";","module.exports = \"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\"","module.exports = \"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=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAcCAYAAAATFf3WAAAAAXNSR0IArs4c6QAAAnxJREFUWAntl89LVFEUx+eJYD9UQsispZnaQglaREK0KagWGrlxEwYtFCEI1IUQpPQHtGtRIFIt2lm0atcukBYtRNTaBaJIISYu8sfrc8Zz3tz3xunNmxmeLrzw5dxz7vee79d774yayTjD9/2r4Bc4qLGCcIdjKVPlJswfg4ZILc20EbFHrqBnCc6PMV8FteAlmANpjkuIPQDi4azneTvE3MBgt97rX+Kp3Eo6MzSbwK56uG6q7hXf0+Jn3K8ZIa2I5jJaX1SvN6SL62rwW90PhRZTTNAfVQ8/icHzy5Dc1AU54nMpegpJod2iPiRckUW7YrveGY56KbQrxQTtH8jNqmTWUxVOxeRdLU5rPMhgHrLvsBonXaBJHclb7CvC3Tw/7bcieAGFvpdJLgSF+Ml59nTK+3sOko538f3DDAQmk4rAH5frvRNuVVR2sShWmFTKnttygjv6kz0hnonBiHK3iM1h/cIZXLku2SNjGMTpjGWZvr8tBm0MFpbYW4FYDzZ0w1Qc39bhv9Y968Q6qxeKcB4qP/sJLsTLq/PBWKf4Vhf6aTKcR4oU4IxSuq/lKXr8iVD+n5pTYuwJSid4teCrs09OpzWqQq0NvHF4M8xPRnn75fCCE0x0xdaMBo3gO7Ah73gefFTI3N42U38RnLb9cRFueQZFgCZ1YALYm2SaN2TtGaiPM+Wuww8Myhd1SUPf0lOavaBBN2gHbUB+yS8oPsBbZl7yKNmgKWJghfkryysd7Y+FSvetWL8jg+Ue5dEJlnuC8ineBCfALb4yarRh7v+BvYKbJ51Lh6R7rqmPTQ9T70l6tHDYwrSc4ACQt3gDHAeHYcitfgID/wAL7PjLuwu7EQAAAABJRU5ErkJggg==\"","export {usePCTranslation} from './usePCTranslation';\r\nexport {useRouter} from './useRouter';\r\nexport {ScrollToTopController} from './ScrollToTop';\r\n","module.exports = \"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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/arrow.1cad89b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/pages.7db7f508.svg\";","module.exports = __webpack_public_path__ + \"static/media/chevron-blue.7cef0eb8.svg\";","module.exports = __webpack_public_path__ + \"static/media/chevron-white.2dc2f7ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/chevron-blue-right.c8f09f5d.svg\";","module.exports = __webpack_public_path__ + \"static/media/threedots.874cd32b.svg\";","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","module.exports = \"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=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAQCAYAAAGDw3T0AAAAAXNSR0IArs4c6QAAAZRJREFUOBGdk00oRGEUhueOKfnJ0DRMyFhOZKNolIydkoWsrWiWFiIbGws29rJiKVNWysqUkEhK06Smyd+CWMpQdtdz7nzfde81bpmvnvue855zvvsfCKhlmmbOCgmutFlBKQ+Kjd5AKcghSz4kpmEYvciHxJUX3ctQ76piNEHKNkmKOiE+hls54y6cwE8nXeQG7EMB8nrQUoxhaITy7bmqKqHYAueSoiG4U/GnavEXBl78O6jSNAbtEpzClncCbxZyYNo14jedEGchBn2won1LMVIgzyrqKjgTimcgd9vt9O2YwiWExUAz0AkJWBKjCIdQY0+UG9N4z2AazoI3pt6P9+X1/5WzSS0cgFxNh7yuKXaIgZy9B2Zgja9xFXUteusw9mAANuAenmAc0vB7MZSEd5iXKtoAR5CHVj1BHIdpnfsqjfJVypdwDRHf5r+KDIbhAuS1NUsfug0P0KXniCMwqXP5YUZI2pQRR+fgESZ4biXUXvSGSHZAfrx1KMAoLMICVL/YXC5mE14hUf1OapJNgnqTb74SVk5UtOeZAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAARCAYAAAGwf1ymAAAAAXNSR0IArs4c6QAAAWxJREFUOBG1lL1KA0EUhRMLfQVBCAgWgqCgoKKghYUWNimsbGxsUtmYysbOxspGG7G1E59An8DeQhBEEEEkiBL/1u9u7p2MsxN3MTpwcuee+e6ZDQtbKvkrSZIj6alJ6lPP0439YPTL8SZaMbNzhRpHLuyB/QVqdh7hBGCiHBKYEtPbfrgW2co2WihZ1ndfCRtKIy2VOh2LxV8wkNr+AzTPerArg+xr2n/EgpwHdKNgw5m/3RB0VngW+FpvPskdArxX+LgI/KTwnoPVyLw1/Fc923KwbDCXwiH6T/XWv8HWcDhlQ16t2nm0Ag578FwUCk0GBtBo6P9bz2UVdIlkPaLZP7mMoBF0i/x1StPX1QUEzCB5Un8d0vS4YGnQAZJXW3MHP2zgltEL8tdOdASiipo+yX47BuOvofeA3YixGY+hedQIhvfpy6ge+G/0q5mQIgaDY+guCLRWPkSLRXJyGYIG0ZUmy5d9MncoAnwBCa319ZgDPsQAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Checkmark-circle.1a0fcc3a.svg\";","module.exports = __webpack_public_path__ + \"static/media/Account-sample.03179a2b.png\";","module.exports = \"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==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"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==\"","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 {user} from 'custom/common/auth/UserData';\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 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 = (callApi = true) => 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 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 console.log('sessionTimeout');\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 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 _ from 'lodash';\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 //New business\r\n //Inforce\r\n //DataReports\r\n //user\r\n //alphalookup\r\n const newbiz = await axios.get('/api/GetControlItemsByForm/NewBusiness');\r\n const inforce = await axios.get('/api/GetControlItemsByForm/Inforce');\r\n const dataReports = await axios.get('/api/GetControlItemsByForm/DataReports');\r\n const user = await axios.get('/api/GetControlItemsByForm/User');\r\n const alphalookup = await axios.get('/api/GetControlItemsByForm/alphalookup');\r\n const batchNewBiz = await axios.get('/api/GetControlItemsByForm/BatchNewBusiness');\r\n if (\r\n newbiz.data &&\r\n inforce.data &&\r\n dataReports.data &&\r\n user.data &&\r\n alphalookup.data &&\r\n batchNewBiz.data &&\r\n Object.keys(newbiz.data).length > 0 &&\r\n Object.keys(inforce.data).length > 0 &&\r\n Object.keys(dataReports.data).length > 0 &&\r\n Object.keys(user.data).length > 0 &&\r\n Object.keys(alphalookup.data).length > 0 &&\r\n Object.keys(batchNewBiz.data).length > 0\r\n ) {\r\n const data = _.merge(\r\n newbiz.data,\r\n inforce.data,\r\n dataReports.data,\r\n user.data,\r\n alphalookup.data,\r\n batchNewBiz.data\r\n );\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","import {ActionTypes} from '../Types';\r\n\r\nexport const setRoutes = (user) => (dispatch) => {\r\n dispatch({type: ActionTypes.SET_ROUTES});\r\n console.log(user);\r\n if (user) {\r\n const isAdminSystem =\r\n user.system?.isAdminSystem &&\r\n (user?.permissions?.isAdminSystem?.isActive ||\r\n user?.permissions?.isAdminSystemAdministrator?.isActive);\r\n\r\n if (\r\n !user.system.isBusinessIntelligence ||\r\n !(\r\n user.system.isBusinessIntelligence &&\r\n (user?.permissions?.isAdmin?.isActive ||\r\n user?.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 (!user?.permissions?.isAdmin?.isActive) {\r\n dispatch({\r\n type: ActionTypes.HIDE_USERS,\r\n });\r\n }\r\n\r\n if (!user.permissions?.isDeveloper?.isActive) {\r\n dispatch({\r\n type: ActionTypes.HIDE_DEV_ROUTE,\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 = (formData, dataType, useSessionStorage = true) => {\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: {initialFormData, dataType},\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","module.exports = __webpack_public_path__ + \"static/media/About_ProCompPPR.5f1de2a3.png\";","module.exports = __webpack_public_path__ + \"static/media/About_ProCompIllustration.c56bca82.png\";","module.exports = __webpack_public_path__ + \"static/media/hourglass.3917250a.svg\";","module.exports = __webpack_public_path__ + \"static/media/help_outline-blue-18dp.13bd9d88.svg\";","module.exports = __webpack_public_path__ + \"static/media/eAppPlaceholder.ff324170.svg\";","module.exports = __webpack_public_path__ + \"static/media/Trash.5f0223ba.svg\";","module.exports = __webpack_public_path__ + \"static/media/Zoom.17c00289.svg\";","module.exports = __webpack_public_path__ + \"static/media/Close.04704fb2.svg\";","module.exports = __webpack_public_path__ + \"static/media/Bank Info Illustration.31053d8a.svg\";","module.exports = __webpack_public_path__ + \"static/media/Dog on bed.d5682b88.svg\";","module.exports = __webpack_public_path__ + \"static/media/Whiteboard with plants.e5167373.svg\";","module.exports = __webpack_public_path__ + \"static/media/Clock.1b267207.svg\";","module.exports = __webpack_public_path__ + \"static/media/document-report.f3e368e4.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Plant-book.66b03e44.png\";","module.exports = __webpack_public_path__ + \"static/media/Scenario-window.6a24b980.png\";","module.exports = __webpack_public_path__ + \"static/media/calculator.2c92e5c8.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-print.60488598.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-save.0f2d936a.svg\";","module.exports = __webpack_public_path__ + \"static/media/Illustration-Magic.58d28744.svg\";","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 checkPosition = \"LEFT\",\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\r\n ? state.setupItems.controlItems[name]\r\n : 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 (\r\n (formErrors[name] || errors[name]) &&\r\n controlItem &&\r\n controlItem.isDirty\r\n ) {\r\n containerClass += \" errorState\";\r\n }\r\n\r\n const checkInput = () => {\r\n return (\r\n \r\n {checkPosition === \"LEFT\" ? (\r\n <>\r\n {\" \"}\r\n \r\n \r\n {customLabel\r\n ? customLabel\r\n : controlItem\r\n ? t(`${name}-caption`)\r\n : displayName || \"\"}\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {customLabel\r\n ? customLabel\r\n : controlItem\r\n ? t(`${name}-caption`)\r\n : displayName || \"\"}\r\n \r\n \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 {useSelector} from 'react-redux';\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 {user} = useSelector((state) => ({\r\n user: state.auth.user,\r\n // controlItems: state.setupItems.controlItems,\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 controlClick(event, name, value);\r\n handleChoose();\r\n }}\r\n lostfocusCallback={controlLostFocus}\r\n name={btnChoose}\r\n refItem={setElement}\r\n propStyle={{\r\n label: \"buttonlabel\",\r\n control: `buttoncontrol bgPrimaryColor borderRadiusAll paddingLgWide marginMed`,\r\n }}\r\n />\r\n {\r\n controlClick(event, name, value);\r\n onCancel();\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 paddingLgWide marginMed buttonOutline`,\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}) => {\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 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 && controlItem.displayDisabled) containerClass += ' disabled';\r\n if (controlItem && controlItem.displayHidden) containerClass += ' hiddenField';\r\n const openToDate =\r\n stateData[name] || 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 && controlItem.displayDisabled}\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 />\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, {Fragment, useState, useEffect, Suspense} from 'react';\r\nimport {useDropzone} from 'react-dropzone';\r\n\r\nimport _ from 'lodash';\r\nimport {Button} from 'core/controls';\r\nimport Axios from 'axios';\r\nimport {Modal, Spinner} from 'core/uicore';\r\nimport {closeIcon} from 'assets';\r\n\r\nconst FileViewer = React.lazy(() => import('react-file-viewer'));\r\n\r\nconst getMimeType = (fileType) => {\r\n let accept = undefined;\r\n switch (fileType) {\r\n case 'P':\r\n accept = 'application/pdf';\r\n break;\r\n case 'D':\r\n accept = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/msword';\r\n break;\r\n case 'I':\r\n accept = 'image/jpeg, image/png';\r\n break;\r\n case '*':\r\n default:\r\n break;\r\n }\r\n return accept;\r\n};\r\n\r\nconst FilePicker = ({name, controlChange, controlGetFocus, controlLostFocus, controlClick, setElement, formData}) => {\r\n const {acceptedFiles, getRootProps, open, getInputProps} = useDropzone({\r\n accept: getMimeType(formData['cboFileType']),\r\n noClick: true,\r\n noKeyboard: true,\r\n });\r\n const [isPreview, setIsPreview] = useState(false);\r\n const [previewFile, setPreviewFile] = useState({name: '', type: ''});\r\n const url = window.location.origin;\r\n\r\n useEffect(() => {\r\n let newFile = [];\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 (newFile.length === 0) {\r\n let tempFiles = [...formData[name]];\r\n tempFiles.push({\r\n fileName: acceptedFiles[0].name,\r\n size: acceptedFiles[0].size,\r\n documentType: formData['cboDocumentType'],\r\n fileType: formData['cboFileType'],\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 //API call for file upload\r\n if (acceptedFiles.length > 1) {\r\n } else if (acceptedFiles.length === 1) {\r\n let f = new FormData();\r\n f.append('File', acceptedFiles[0]);\r\n f.append('FileDirectory', formData['policyNumber']);\r\n try {\r\n let policy = Axios.post('/api/files/Upload', f, {headers: {'Content-Type': 'multipart/form-data'}});\r\n } catch (error) {\r\n console.log('upload error = ', error);\r\n }\r\n }\r\n }\r\n }\r\n }, [acceptedFiles]);\r\n\r\n const deleteFile = (event, idx) => {\r\n let tempFiles = formData[name].filter((file, id) => id !== idx);\r\n // setFiles(tempFiles);\r\n let file = new File(['This is dummy content'], formData[name][idx].fileName);\r\n console.log('Delete File', file);\r\n let f = new FormData();\r\n f.append('File', file);\r\n f.append('FileDirectory', formData['policyNumber']);\r\n try {\r\n let policy = Axios.post('/api/files/DeleteFile', f, {headers: {'Content-Type': 'multipart/form-data'}});\r\n } catch (error) {\r\n console.log('upload error = ', error);\r\n }\r\n controlChange(event, name, tempFiles);\r\n };\r\n const clickPreview = (name) => {\r\n const typeArr = name.split('.');\r\n const type = typeArr[typeArr.length - 1];\r\n setPreviewFile({name, type});\r\n\r\n setTimeout(() => setIsPreview(true), 500);\r\n };\r\n const cancelPreview = () => {\r\n setIsPreview(false);\r\n setPreviewFile({name: '', type: ''});\r\n };\r\n let fileList;\r\n if (!formData || !formData[name] || formData[name.length === 0]) {\r\n fileList = undefined;\r\n } else {\r\n fileList = formData[name].map((file, idx) => {\r\n console.log(file);\r\n return (\r\n
  • \r\n {file.fileName} - {file.size} bytes\r\n
    \r\n {}}\r\n getclickCallback={(event, name, value) => {\r\n deleteFile(event, idx);\r\n controlClick(event, name, value);\r\n }}\r\n lostfocusCallback={() => {}}\r\n name='btnFileDelete'\r\n refItem={() => {}}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttonControl`,\r\n }}\r\n />\r\n {}}\r\n getclickCallback={(event, name, value) => {\r\n clickPreview(file.fileName);\r\n controlClick(event, name, value);\r\n }}\r\n lostfocusCallback={() => {}}\r\n name='btnFilePreview'\r\n refItem={() => {}}\r\n propStyle={{\r\n label: 'buttonlabel',\r\n control: `buttonControl`,\r\n }}\r\n />\r\n
    \r\n
  • \r\n );\r\n });\r\n }\r\n\r\n // console.log(formData[name]);\r\n return (\r\n
    \r\n
    \r\n \r\n

    Drag 'n' drop some files here, or click to select files

    \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=\"btnAttachFile\"\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 {isPreview && (\r\n e.stopPropagation()} propStyle=\"modalDark\">\r\n
    \r\n {}}\r\n getclickCallback={(event, name, value) => {\r\n cancelPreview();\r\n controlClick(event, name, value);\r\n }}\r\n lostfocusCallback={() => {}}\r\n name=\"btnCancelFilePickerPreview\"\r\n refItem={() => {}}\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 )}\r\n
    \r\n );\r\n};\r\n\r\nexport {FilePicker};\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 = ({getchangeCallback, getfocusCallback, lostfocusCallback, text, name, autoFocus, disableChoice, readOnly, options, stateData, refItem, propStyle}) => {\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 }\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) containerClass += ' hiddenField';\r\n\r\n const pillLabel = () => {\r\n return (\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,\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\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 );\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
    \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 {t(`${name}-caption`)}\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 disableControl,\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\r\n ? state.setupItems.controlItems[name]\r\n : null,\r\n inputLanguage: state.auth.user\r\n ? state.auth.user[\"inputLanguage\"]\r\n : \"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 await 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 (disableControl || controlItem?.displayDisabled) {\r\n containerClass += \" disabled\";\r\n }\r\n if (controlItem && controlItem.displayHidden) {\r\n containerClass += \" hiddenField\";\r\n }\r\n\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.showLabel && t(`${name}-caption`)}\r\n {controlItem && controlItem.isOptional && (\r\n \r\n {t(`lblOptional`)}\r\n \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 {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 disableControl: false,\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 = ({getchangeCallback, getfocusCallback, lostfocusCallback, text, name, autoFocus, disableChoice, readOnly, options, stateData, refItem, propStyle}) => {\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 }\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) containerClass += ' hiddenField';\r\n\r\n const pillLabel = () => {\r\n return (\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
    \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","module.exports = __webpack_public_path__ + \"static/media/illustration-dino.baf04f00.png\";","module.exports = __webpack_public_path__ + \"static/media/Logo_Blue_Reverse.82d164d9.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/klEQVR4nO2aTU7DMBBGP8QV4DBkxQnKBisLOBHtCnEsitRDQLukEqxa1ShSKnmRxr8z45B5kheVGtvzbKce14CiKIqiKMplHgDsANiEsgewBHCFeLpnVn0dKW1vASxQgG1iB9zSJLTbFGj3s4QAW6DcCQk4SQvYA3jJWALLjCVwLmQCjgCeIY8BcJAQYCuQ4AueRMBh4HMLftoLfSEX8DjQEPdMMBf68MQhAMISxoIHlwApCb7gWQVwSwgJnl0Al4TQ4EUEUEuICV5MAJWE2OBFBZSWkBI8iYC9U9l3xgYlZrOUU0dsf72snAq7xIY6gFyBKf31ZmVNn9LGZHUpgZSYPan9JSHmnZC65qunHQhsDeDa8x2pJIt8JmwA3Mxh5IckvM81+DOzmvZjzG7kXWYdfBsw7d1lMruRvwXwUclps0jwG+JDlaqn/fo//iKYiBdeDafNo8lFM6Fk6L4vRVg5nen+q6s9HX5znnvFDA9Efp1nflAAG3HEVHKTk/pOKH4kZgMrpNjhpUgQEWAIt7exEtgFGIa9fYwEVgGGMbEJlcAmwAhkdSESWAQYwZTWJ4FcgKkgnx+TQC7gkLnJmfwVGSs48iEzgU3AsZJjLJ+EbGxGkbwrXEzAKbMDkneFiwj4mvBd4e6idzaL/tb11O4K7/qr/oqiKIqiKBjiD43AZEL/q98bAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/drag-icon.3b0cd5f6.svg\";","export {default as userLogo} from './User-white.png';\r\nexport {default as helpLogo} from './Help-white.png';\r\nexport {default as companyLogo} from './procomp.svg';\r\nexport {default as addLogo} from './Add-white.png';\r\nexport { default as addBlueLogo } from \"./add-logo-blue.svg\";\r\nexport {default as folderLogo} from './Folder-white.png';\r\nexport {default as lookupLogo} from './magnifying-glass.png';\r\nexport {default as reportsLogo} from './sheet-box.png';\r\nexport {default as aboutLogo} from './Help.png';\r\nexport {default as visionLogo} from './Vision-blue.png';\r\nexport {default as uploadLogo} from './Upload-blue.png';\r\nexport {default as disketteLogo} from './Diskette-blue.png';\r\nexport {default as clipboardLogo} from './Clipboard.png';\r\nexport {default as documentLogo} from './Text-documents.png';\r\nexport {default as arrowIcon} from './arrow.svg';\r\nexport {default as pagesLogo} from './pages.svg';\r\nexport {default as chevronBlueLogo} from './chevron-blue.svg';\r\nexport {default as chevronWhiteLogo} from './chevron-white.svg';\r\nexport {default as chevronBlueRightLogo} from './chevron-blue-right.svg';\r\nexport {default as threedotsLogo} from './threedots.svg';\r\nexport {default as signOffLogo} from './Signoff-white.png';\r\nexport {default as signOffRedLogo} from './Signoff@2x.png';\r\nexport {default as switchLogo} from './Switch-white.png';\r\nexport {default as tickLogo} from './Checkmark-white.png';\r\nexport {default as checkLogo} from './Checkmark-white-circle.png';\r\nexport {default as checkmarkLogo} from './Checkmark-circle.svg';\r\nexport {default as accountSample} from './Account-sample.png';\r\nexport {default as warningLogo} from './Warning-white.png';\r\nexport {default as warningRedLogo} from './Warning-red.png';\r\nexport {default as flagLogo} from './Flag-white.png';\r\nexport {default as inforceAbout} from './About_ProCompPPR.png';\r\nexport {default as newbizAbout} from './About_ProCompIllustration.png';\r\nexport {default as hourGlass} from './hourglass.svg';\r\nexport {default as helpLogoQuestion} from './help_outline-blue-18dp.svg';\r\nexport {default as eAppPlaceholder} from './eAppPlaceholder.svg';\r\nexport {default as deleteLogo} from './Trash.svg';\r\nexport {default as previewLogo} from './Zoom.svg';\r\nexport {default as closeIcon} from './Close.svg';\r\nexport {default as bankInfoLogo} from './Bank Info Illustration.svg';\r\nexport {default as dogOnBedLogo} from './Dog on bed.svg';\r\nexport {default as whiteboardPlantsLogo} from './Whiteboard with plants.svg';\r\nexport {default as clockLogo} from './Clock.svg';\r\nexport {default as documentReportLogo} from './document-report.svg';\r\nexport {default as procompBlueLogo} from './Procomp-logo-blue.png';\r\nexport {default as plantBookLogo} from './Plant-book.png';\r\nexport {default as scenarioWindowLogo} from './Scenario-window.png';\r\nexport {default as calculatorLogo} from './calculator.svg';\r\nexport {default as printLogo} from './icon-print.svg';\r\nexport {default as saveLogo} from './icon-save.svg';\r\nexport {default as IllustrationMagic} from './Illustration-Magic.svg';\r\nexport {default as IllustrationDino} from './illustration-dino.png';\r\nexport { default as ProcompLogoReverse } from \"./Logo_Blue_Reverse.svg\";\r\nexport { default as fullScreen } from \"./fullScreen.png\";\r\nexport { default as dragIcon } from \"./drag-icon.svg\";\r\n\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 TFSA: 18\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","module.exports = __webpack_public_path__ + \"static/media/spinner.2b02159f.gif\";","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 //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 SWITCH_PRODUCTS = 'switchProducts';\r\nexport const PROFILE = 'profile';\r\nexport const ABOUT = 'about';\r\nexport const ADMIN = 'admin';\r\nexport const NONE = '';\r\nexport const BI = 'bi';\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 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}","//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","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\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 = ({isAuthorized, children, ...rest}) => {\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 (\r\n user.system.isNewBusiness &&\r\n user?.permissions?.isNewBusiness?.isActive &&\r\n user[\"defaultApplication\"] === \"New Business\"\r\n ) {\r\n defaultApp = \"/illustration\";\r\n } else if (\r\n user.system.isInforce &&\r\n user?.permissions?.isInforce?.isActive &&\r\n user[\"defaultApplication\"] === \"Inforce\"\r\n ) {\r\n defaultApp = \"/inforce\";\r\n } else if (\r\n user?.permissions?.isAdmin?.isActive &&\r\n user[\"defaultApplication\"] === \"Admin\"\r\n ) {\r\n defaultApp = \"/admin\";\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, Fragment} from 'react';\r\nimport _ from 'lodash';\r\nimport Modal from '../uicore/Modal';\r\nimport {hourGlass} from 'assets';\r\n\r\n//Below timeout values are coming from .env file in ClientApp root folder\r\n// const LOGOUT_TIMEOUT = 10 * 60;\r\n// const WARNING_TIMEOUT = 9 * 60;\r\nconst TIMER = 59;\r\n\r\n// const LOGOUT_TIMEOUT = 1000;\r\n// const WARNING_TIMEOUT = 30;\r\n// const TIMER = 9;\r\n\r\nexport const withAutoLogout = (WrappedComponent) => {\r\n return class ContainerComponent extends Component {\r\n constructor() {\r\n super();\r\n //This is to throttle the execution of resetting timer atlmost once in a second to avoid unnecessary js execution\r\n this.resetTimeouts = _.throttle(this.resetTimer, 1000);\r\n this.state = {\r\n isWarning: false,\r\n timer: TIMER, //(signoutTime-warningTime) //30*60 Seconds\r\n };\r\n }\r\n componentDidMount() {\r\n this.events = [\r\n 'load',\r\n 'mousemove',\r\n //'mousedown',\r\n 'click',\r\n // 'scroll',\r\n 'keypress',\r\n ];\r\n\r\n for (var i in this.events) {\r\n window.addEventListener(this.events[i], this.resetTimeouts);\r\n }\r\n this.setTimeouts();\r\n this.setState({timer: TIMER});\r\n }\r\n componentWillUnmount() {\r\n for (var i in this.events) {\r\n window.removeEventListener(this.events[i], this.resetTimeouts);\r\n }\r\n this.clearTimeoutFunc();\r\n }\r\n\r\n clearTimeoutFunc = () => {\r\n if (this.warnTimeout) clearTimeout(this.warnTimeout);\r\n if (this.logoutTimeout) clearTimeout(this.logoutTimeout);\r\n if (this.countDown) clearInterval(this.countDown);\r\n };\r\n\r\n setTimeouts = () => {\r\n const logoutMillis = Number(process.env.REACT_APP_TIMEOUT) * 60 * 1000;\r\n const warningMillis = (Number(process.env.REACT_APP_TIMEOUT) - 1) * 60 * 1000;\r\n //const logoutMillis = 120 * 1000;\r\n //const warningMillis = 60 * 1000;\r\n this.warnTimeout = setTimeout(this.warn, warningMillis);\r\n this.logoutTimeout = setTimeout(this.logout, logoutMillis);\r\n };\r\n\r\n resetTimer = () => {\r\n this.clearTimeoutFunc();\r\n this.setTimeouts();\r\n this.setState({isWarning: false, timer: TIMER});\r\n };\r\n setTimerFunc = () => {\r\n this.countDown = setInterval(() => {\r\n const newCount = this.state.timer - 1;\r\n this.setState({timer: newCount >= 0 ? newCount : 0});\r\n }, 1000);\r\n };\r\n warn = () => {\r\n this.setState({isWarning: true});\r\n this.setTimerFunc(); // Start countdown Timer\r\n };\r\n\r\n logout = async () => {\r\n this.clearTimeoutFunc();\r\n this.setState({isWarning: false});\r\n const account = this.props.pca.getActiveAccount();\r\n console.log(account);\r\n // await this.props.pca.logoutPopup({account});\r\n this.props.sessionTimeout();\r\n this.destroy();\r\n };\r\n\r\n destroy = () => {\r\n //clear the session\r\n // browserHistory.push('/');\r\n // window.location.assign('/');\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.isWarning && (\r\n \r\n \r\n \"\"\r\n
    \r\n
    {this.props.t('SessionTimeout-label')}
    \r\n

    {`${this.props.t('msg-logout')} ${this.state.timer}`}

    \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 withAutoLogout;\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) => {\r\n let value;\r\n if (this.props.user && this.props.user['inputLanguage'] === 'French') {\r\n value = this.props.t(`${key}-fr`);\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`);\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) => {\r\n let value;\r\n if (this.props.user && this.props.user['reportLanguage'] === 'French') {\r\n value = this.props.t(`${key}-fr`);\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`);\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","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 if (\r\n field === 'txtTermFaceAmount10' ||\r\n field === 'txtTermFaceAmount20' ||\r\n field === 'txtTermFaceAmount30'\r\n ) {\r\n state.status['current'] = {\r\n status,\r\n limitText: `${limits}: ${minLimit} - ${maxLimit}`,\r\n note: `Note: ${props.t('txtTotalFaceAmount-status')}`,\r\n };\r\n } else {\r\n state.status['current'] = {status, limitText: `${limits}: ${minLimit} - ${maxLimit}`};\r\n }\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\r\n ? this.state.status[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\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\nconst ValidationContext = createContext(initialContextValue);\r\n\r\nexport default ValidationContext;\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(\r\n props.data,\r\n props.controlItems || {},\r\n props.t,\r\n props.user || {}\r\n );\r\n if (props.inlineErrorRef) {\r\n props.inlineErrorRef.current = state.errors;\r\n }\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 setValidationErrors = (errors) => {\r\n this.setState((state) => ({\r\n ...this.state,\r\n errors,\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(\r\n this.props.data,\r\n this.props.controlItems,\r\n this.props.user\r\n );\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(\r\n (field) => (this.props.controlItems[field].isDirty = true)\r\n );\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(\r\n formErrors,\r\n event,\r\n event.target.name,\r\n event.target.value\r\n );\r\n }\r\n });\r\n }\r\n };\r\n\r\n getButtonClasses() {\r\n return this.state.formSubmitted && !this.formValid\r\n ? \"btn-danger\"\r\n : \"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 (\r\n data[field].length !== rules[field].maxLength &&\r\n data[field].length > 0\r\n ) {\r\n fielderrors.push(msg_validPhone);\r\n rules[field].isError = true;\r\n }\r\n }\r\n } else if (rules[field].fieldType === \"input_Array\") {\r\n const incomeArray = data[field].split(\"|\");\r\n for (let i = 1; i <= rules[field].minLength; i++) {\r\n if (rules[field].allowZero && parseInt(incomeArray[i]) === 0) {\r\n //Do Nothing\r\n } else if (\r\n incomeArray[i] < rules[field].min ||\r\n incomeArray[i] > rules[field].max\r\n )\r\n {\r\n fielderrors.push(msg_range);\r\n rules[field].isError = true;\r\n break;\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 (\r\n data[field].length < rules[field].minLength &&\r\n data[\"CurrentField\"] !== field\r\n ) {\r\n fielderrors.push(\r\n `${msg_textLength}: ${msg_min}: ${rules[field].minLength} ${msg_max}: ${rules[field].maxLength}`\r\n );\r\n rules[field].isError = true;\r\n }\r\n }\r\n }\r\n if (rules[field].useLimits) {\r\n let minLimit = formatDisplay(\r\n user.inputLanguage,\r\n rules[field].min,\r\n rules[field].fieldType,\r\n rules[field].decimalPlaces\r\n );\r\n let maxLimit = formatDisplay(\r\n user.inputLanguage,\r\n rules[field].max,\r\n rules[field].fieldType,\r\n rules[field].decimalPlaces\r\n );\r\n if (\r\n rules[field].fieldType === \"input_Integer\" ||\r\n rules[field].fieldType === \"input_Dollar_Integer\" ||\r\n rules[field].fieldType === \"input_Number\"\r\n ) {\r\n if (rules[field].allowZero && parseInt(val) === 0) {\r\n //Do Nothing\r\n } else if (\r\n !validator.isInt(val, {\r\n min: rules[field].min,\r\n max: rules[field].max,\r\n })\r\n ) {\r\n fielderrors.push(\r\n `${msg_range}: ${msg_min}: ${minLimit} ${msg_max}: ${maxLimit}`\r\n );\r\n rules[field].isError = true;\r\n }\r\n } else {\r\n if (\r\n rules[field].fieldType === \"input_Real\" ||\r\n rules[field].fieldType === \"input_Dollar\" ||\r\n rules[field].fieldType === \"input_Percent\"\r\n ) {\r\n if (rules[field].allowZero && parseFloat(val) === 0) {\r\n //Do Nothing\r\n } else if (\r\n !validator.isFloat(val, {\r\n min: rules[field].min,\r\n max: rules[field].max,\r\n decimal_digits: rules[field].decimalPlaces,\r\n })\r\n ) {\r\n fielderrors.push(\r\n `${msg_range}: ${msg_min}: ${minLimit} ${msg_max}: ${maxLimit}`\r\n );\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].status === undefined ? (\r\n <>\r\n {testObject[item].split('|').map((token, idx) => (\r\n
    \r\n {token}\r\n
    \r\n ))}\r\n \r\n ) : (\r\n <>\r\n
    {testObject[item].status}
    \r\n
    {testObject[item].limitText}
    \r\n\r\n {testObject[item].note && (\r\n <>\r\n
    {testObject[item].note}
    \r\n \r\n )}\r\n \r\n )}\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","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","//Note that these plancodes match the ProdIDs from the interfaceSetup\r\nexport const ProdID = {\r\n TERM: '0180',\r\n TERM10: '0180',\r\n TERM20: '0180',\r\n TERM30: '0180',\r\n TERM100JOINT: '0562',\r\n TERM100: '0564',\r\n WHOLELIFE: '0903',\r\n WHOLELIFE20PAY: '0904',\r\n WHOLELIFEJOINT: '0905',\r\n WHOLELIFE20PAYJOINT: '0906',\r\n UL: '0602',\r\n};\r\n\r\nexport const CoverageID = {\r\n TERM10: '181',\r\n TERM20: '182',\r\n TERM30: '183',\r\n ADB: '018',\r\n WP: '031',\r\n GPO: '061',\r\n AIB: '057',\r\n CPB: '021',\r\n ADB2: '019',\r\n WP2: '032',\r\n GPO2: '062',\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 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 125: '125',\r\n 150: '150',\r\n 175: '175',\r\n 200: '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\nexport const isWholeLifeProduct = (prodId) => {\r\n return prodId === ProdID.WHOLELIFE;\r\n};\r\n\r\nexport const isWholeLife20PayProduct = (prodId) => {\r\n return prodId === ProdID.WHOLELIFE20PAY;\r\n};\r\n\r\n//universal life policy\r\nexport const isUniversalLifePolicy = (prodId) => {\r\n return prodId === ProdID.UL;\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: 5,\r\n};\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, isProductProtectionSeries } 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\r\n let intAddAge = 0;\r\n if (isProductProtectionSeries(inforceData.policy.prodID)) {\r\n //intAddYear = intAddYear + 1;\r\n //for Protection Series we are showing end of year age so add 1\r\n intAddAge = intAddAge + 1;\r\n }\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 + intAddAge -\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] + Math.max(aCoverageItem.premiumDurationYear, aCoverageItem.expiryDuration) - 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 Math.min(\r\n aCoverageItem.premiumDurationYear,\r\n aCoverageItem.expiryDuration\r\n ) -\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 + intAddAge\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","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, { useEffect, Fragment, useState } from \"react\";\r\nimport { Redirect, useLocation } from \"react-router-dom\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { fetchUser, 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: \"\",\r\n password: \"\",\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\r\n const elementItems = {};\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 (\r\n isNewBusiness &&\r\n isNewBusiness() &&\r\n user[\"defaultApplication\"] === \"New Business\"\r\n ) {\r\n defaultFrom = { pathname: \"illustration\" };\r\n } else if (\r\n isInforce &&\r\n isInforce() &&\r\n user[\"defaultApplication\"] === \"Inforce\"\r\n ) {\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) =>\r\n setFormData({ ...formData, [e.target.name]: e.target.value });\r\n\r\n const getUser = async () => {\r\n const account = instance.getActiveAccount();\r\n console.log(inProgress);\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 console.log(response);\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 console.log(result);\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 (tokenMethod === 'AD') {\r\n // if (isAuthenticatedUser) {\r\n // return ;\r\n // }\r\n // } else {\r\n if (isAuthenticated) {\r\n return ;\r\n }\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\", {\r\n username,\r\n password,\r\n generateTrackingUserName,\r\n });\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 &&\r\n 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, {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\n// import 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 // setActive(SWITCH_PRODUCTS);\r\n // setActivePage(\"\");\r\n // if(user.isInforce && user.isNewBusiness){\r\n // setIsSwitchProductModalOpen(!isSwitchProductModalOpen);\r\n // }else if(user.isInforce){\r\n // push(\"/inforce\");\r\n // }else if(user.isNewBusiness){\r\n // push(\"/illustration\");\r\n // }\r\n break;\r\n case 'btnProfile':\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 break;\r\n case 'btnAbout':\r\n setIsAboutModal(true);\r\n break;\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 {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 if(!props?.auth?.user) return null\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\n export const ReportGroups = {\r\n PROQUOTE_REPORTS: 0,\r\n };\r\n\r\nexport const ReportGroupsName = [\r\n \"PROQUOTE REPORTS\",\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 NBIllustrationByProductType: 16,\r\n InforceIllustrationByProductType: 17,\r\n InforcePoliciesSoldByProductType: 18,\r\n Top10AgentsByIllustration: 19,\r\n Top10AgentsByLifePoliciesSold: 20,\r\n IncomePayoutImpact: 21,\r\n BenefitsIllustrated: 22,\r\n InforceIllustrationByProductName: 23,\r\n InforcePoliciesSoldByProductName: 24,\r\n InforceDataReportSummary: 25,\r\n BIDataReportSummary: 26,\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 key: PROQUOTE_REPORT_LIST.NBIllustrationByProductType,\r\n value: \"New Business Illustrations By Product Type\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.InforceIllustrationByProductType,\r\n value: \"Inforce Illustrations By Product Type\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.InforcePoliciesSoldByProductType,\r\n value: \"Inforce Policies Sold By Product Type\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.Top10AgentsByIllustration,\r\n value: \"Top 10 Agents By Illustration\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.Top10AgentsByLifePoliciesSold,\r\n value: \"Top 10 Agents By Life Policies Sold\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.IncomePayoutImpact,\r\n value: \"Income Payout Impact\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.BenefitsIllustrated,\r\n value: \"Benefits Illustrated\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.InforceDataReportSummary,\r\n value: \"Inforce Data Reports Summary\",\r\n },\r\n {\r\n key: PROQUOTE_REPORT_LIST.BIDataReportSummary,\r\n value: \"BI Data Reports Summary\",\r\n },\r\n ];\r\n\r\n return [ProquoteReportsList];\r\n};","import React from 'react';\r\nimport {buildBICardList, ReportGroupsName} from '../utils/data';\r\n\r\nconst queryList = buildBICardList();\r\nconst QueryListDisplay = ({onClick: handleQueryClick, t}) => {\r\n return (\r\n
    \r\n {queryList.map((card, cardIndex) => {\r\n return (\r\n
    \r\n
    {t(ReportGroupsName[cardIndex])}
    \r\n {card.map((cardItem) => {\r\n return (\r\n
    handleQueryClick(e, cardItem)}>\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 postDataBIProQuoteReportsData,\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 }) => {\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 postDataBIProQuoteReportsData(finalReport);\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) => {\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 });\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\n\r\nimport BIReports from \"./ui/BIReports\";\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\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\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\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(props?.auth?.user.whiteLabelProfile);\r\n }\r\n }\r\n }, [props?.auth?.user])\r\n \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 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 && location.state.from === NEW_BUSINESS) ||\r\n props.isEapplicationAdministrator() ? (\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 withAutoLogout(Routes);\r\n","import React from 'react'\r\n\r\nexport const Sso = () => {\r\n return (\r\n
    \r\n )\r\n}\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 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} from 'core/redux/actions';\r\nimport {getFirstYearPremium, updateReportOptionsProfile} from 'custom/newbiz/redux/actions';\r\nimport {loadInforceData, populateTreeAction} from 'custom/inforce/redux/actions';\r\nimport {loadAlphaLookupData, clearAlphaLookupData} from 'custom/alphaLookup/redux/actions';\r\nimport {loadDataReportsData, clearDataReportsData} from 'custom/dataReports/redux/actions';\r\nimport {getAllRoles} from 'custom/admin/redux/actions';\r\nimport { updateBIOptionsProfile } from \"custom/bi/redux/actions\";\r\n\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\nimport { Sso } from \"./Sso\";\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 loadInterfaceSetupItems,\r\n setAlert,\r\n updateControlItems,\r\n setStoreFormData,\r\n clearStoreFormData,\r\n updateStoreFormData,\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 =\r\n 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\r\n ? \"sticky\"\r\n : \"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 = (\r\n event,\r\n storeFormData,\r\n elementItems,\r\n updateFormData\r\n ) => {\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 (\r\n this.isEapplicationAvailable() &&\r\n user?.permissions?.isEapplication?.isActive\r\n );\r\n };\r\n isEapplicationAdministrator = () => {\r\n const { user } = this.props.auth;\r\n return (\r\n this.isEapplicationAvailable() &&\r\n user?.permissions?.isEapplicationAdministrator?.isActive\r\n );\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 (\r\n this.isConceptsAvailable() && user?.permissions?.isConcepts?.isActive\r\n );\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 (\r\n this.isNewBusinessAvailable() &&\r\n user?.permissions?.isNewBusiness?.isActive\r\n );\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 (\r\n this.isInforceAvailable() && user?.permissions?.isInforce?.isActive\r\n );\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?.isActive ||\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?.isActive ||\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\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 (\r\n user?.system?.isNeedsAnalysisLite &&\r\n user?.permissions?.isNeedsAnalysisLite?.isActive\r\n );\r\n };\r\n isNeedsAnalysisFull = () => {\r\n const { user } = this.props.auth;\r\n return (\r\n user?.system?.isNeedsAnalysisFull &&\r\n user?.permissions?.isNeedsAnalysisFull?.isActive\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\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', 50000));\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 axios from \"axios\";\r\n\r\nexport const getVersionInfo = async() => {\r\n let versionInfo = JSON.parse(sessionStorage.getItem('appVer'));\r\n try {\r\n const {data} = await axios.get('/api/getVersion');\r\n sessionStorage.setItem('appVer', JSON.stringify(data));\r\n \r\n if (versionInfo && versionInfo.version!==data.version){\r\n window.location.reload(true);\r\n }else{\r\n setVersionHeartbeat();\r\n }\r\n \r\n } catch (error) {\r\n console.log(\"Error while fetching version\", error);\r\n // ToDo: We can clear session store and call setVersionHeartbeat again. \r\n // But it will be never ending if some serious error\r\n }\r\n }\r\n\r\n export const setVersionHeartbeat = () => {\r\n const versionInfo = JSON.parse(sessionStorage.getItem('appVer'));\r\n const defaultTimer = 30*60*1000;\r\n versionInfo ? setTimeout(getVersionInfo, versionInfo?.heartbeatMinutes*1000*60 || defaultTimer) : getVersionInfo();\r\n}\r\n ","import React, {useEffect} 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\nimport { setVersionHeartbeat } from 'core/api/generalService';\r\n\r\nconst App = (props) => {\r\n\r\n useEffect(() => {\r\n setVersionHeartbeat();\r\n }, []);\r\n\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\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: window.translation,\r\n // },\r\n\r\n // fr: {\r\n // translations: window.translation,\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\" && process.env.REACT_APP_DEV_URL) {\r\n axios.defaults.baseURL = process.env.REACT_APP_DEV_URL;\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 {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\r\n\r\n if (!(item in formData)) {\r\n return;\r\n }\r\n //console.log('Item = ${item}', item);\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 {\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 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 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 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\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 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 scalarReportArray.push(addScalarItem(name_String, value_String, INPUTTYPES.INPUT_UPPER));\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\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 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 //console.log(`build scalar: ${name} = ${value}`)\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 new Intl.DateTimeFormat('en-GB', {\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n }).format(date);\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(\r\n fieldArray,\r\n controlItems,\r\n updateControlItems,\r\n wildCard = true\r\n) {\r\n for (let item = 0; item < fieldArray.length - 1; item++) {\r\n hideControl(\r\n fieldArray[item],\r\n controlItems,\r\n updateControlItems,\r\n false,\r\n wildCard\r\n );\r\n }\r\n hideControl(\r\n fieldArray[fieldArray.length - 1],\r\n controlItems,\r\n updateControlItems,\r\n true,\r\n wildCard\r\n );\r\n}\r\nexport function hideControl(\r\n name,\r\n controlItems,\r\n updateControlItems,\r\n isUpdateControlItems = true,\r\n useWildCard = true\r\n) {\r\n let wildCard = \"\";\r\n\r\n if (useWildCard) {\r\n wildCard = \"*\";\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${wildCard}=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`input[name${wildCard}=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`select[name${wildCard}=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`label[name${wildCard}=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`div[name${wildCard}=${name}]`).each((i, el) => {\r\n $(el).hide();\r\n });\r\n $(`li[name${wildCard}=${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 useWildCard = 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 let wildCard = \"\";\r\n\r\n if (useWildCard) {\r\n wildCard = \"*\";\r\n }\r\n $(`div[id${wildCard}=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`input[name${wildCard}=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`select[name${wildCard}=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`label[name${wildCard}=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`div[name${wildCard}=${name}]`).each((i, el) => {\r\n $(el).show().removeAttr(\"style\");\r\n });\r\n $(`li[name${wildCard}=${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 isWholeLifeProduct,\r\n isWholeLife20PayProduct,\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 chkCoveragePage: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkCoveragePage\r\n : true,\r\n chkHealthMatchPage: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkHealthMatchPage\r\n : true,\r\n chkBenefitsPage: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkBenefitsPage\r\n : true,\r\n chkMemberBenefits: JSON.parse(sessionStorage.getItem('newBusiness'))\r\n ? JSON.parse(sessionStorage.getItem('newBusiness')).chkMemberBenefits\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};\r\n\r\nconst incomePayout = {\r\n chkIncomeStoryboardPage: JSON.parse(sessionStorage.getItem(\"newBusiness\"))\r\n ? JSON.parse(sessionStorage.getItem(\"newBusiness\")).chkIncomeStoryboardPage\r\n : false,\r\n chkIncomeNonRegPage: JSON.parse(sessionStorage.getItem(\"newBusiness\"))\r\n ? JSON.parse(sessionStorage.getItem(\"newBusiness\")).chkIncomeNonRegPage\r\n : false,\r\n};\r\nexport function getPageConceptSelection() {\r\n return { pageSelection, conceptSelection, incomePayout };\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[\"chkComplianceNotice\"] = sessData.chkComplianceNotice;\r\n pageSelection[\"chkCoveragePage\"] = sessData.chkCoveragePage;\r\n pageSelection[\"chkHealthMatchPage\"] = sessData.chkHealthMatchPage;\r\n pageSelection[\"chkBenefitsPage\"] = sessData.chkBenefitsPage;\r\n pageSelection[\"chkMemberBenefits\"] = sessData.chkMemberBenefits;\r\n\r\n conceptSelection[\"chkProductCompare\"] = sessData.chkProductCompare;\r\n conceptSelection[\"chkInternalRoR\"] = sessData.chkInternalRoR;\r\n conceptSelection[\"chkCharitableGiving\"] = sessData.chkCharitableGiving;\r\n conceptSelection[\"chkInsuranceInvestment\"] =\r\n sessData.chkInsuranceInvestment;\r\n incomePayout[\"chkIncomeStoryboardPage\"] = sessData.chkIncomeStoryboardPage;\r\n incomePayout[\"chkIncomeNonRegPage\"] = sessData.chkIncomeNonRegPage;\r\n } else {\r\n pageSelection[\"chkCoverPage\"] =\r\n formData[\"chkCoverPage\"] === \"true\" ? true : false;\r\n pageSelection[\"chkTaxPage\"] =\r\n formData[\"chkTaxPage\"] === \"true\" ? true : false;\r\n pageSelection[\"chkComplianceNotice\"] =\r\n formData[\"chkComplianceNotice\"] === \"true\" ? true : false;\r\n pageSelection[\"chkCoveragePage\"] =\r\n formData[\"chkCoveragePage\"] === \"true\" ? true : false;\r\n pageSelection[\"chkHealthMatchPage\"] =\r\n formData[\"chkHealthMatchPage\"] === \"true\" ? true : false;\r\n pageSelection[\"chkBenefitsPage\"] =\r\n formData[\"chkBenefitsPage\"] === \"true\" ? true : false;\r\n pageSelection[\"chkMemberBenefits\"] =\r\n formData[\"chkMemberBenefits\"] === \"true\" ? true : false;\r\n\r\n conceptSelection[\"chkProductCompare\"] =\r\n formData[\"chkProductCompare\"] === \"true\" ? true : false;\r\n conceptSelection[\"chkInternalRoR\"] =\r\n 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 incomePayout[\"chkIncomeStoryboardPage\"] =\r\n formData[\"chkIncomeStoryboardPage\"] !== \"false\" ? true : false;\r\n incomePayout[\"chkIncomeNonRegPage\"] =\r\n formData[\"chkIncomeNonRegPage\"] !== \"false\" ? true : false;\r\n sessionStorage.setItem(\r\n \"pageConcept\",\r\n JSON.stringify({ ...pageSelection, ...conceptSelection, ...incomePayout })\r\n );\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\nexport function updateIncomePayoutItem(formData, name) {\r\n incomePayout[name] = formData[name];\r\n let sessConcept = JSON.parse(sessionStorage.getItem(\"pageConcept\"));\r\n sessConcept = { ...sessConcept, ...incomePayout };\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.isWholeLifeProduct = isWholeLifeProduct;\r\nwindow.isWholeLife20PayProduct = isWholeLife20PayProduct;\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.updateIncomePayoutItem = updateIncomePayoutItem;\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.incomePayout = incomePayout;\r\nwindow.controlFields = controlFields;\r\nwindow.calcAgeNearest = calcAgeNearest;\r\nwindow.GetLastAnniversaryDate = GetLastAnniversaryDate;\r\n//setting window function end\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 = '';\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 // if (name === 'cboProduct') {\r\n // GlobalRunLostRecalls(\r\n // 'txtAge',\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\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 let isRefresh = false;\r\n if (sessionStorage.getItem('refreshToken')) {\r\n isRefresh = true;\r\n }\r\n try {\r\n await msalInstance.handleRedirectPromise();\r\n const { account, accessToken } = await msalInstance.acquireTokenPopup(loginRequest);\r\n console.log('AD1 - verifyaccount', account);\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 console.log('AD2 - I am here');\r\n dataStore.dispatch(fetchUser(undefined, true));\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// We could update resourceScopes to \"User.Read\" but I don't want to change something that is working\r\n// resourceScopes: [\"User.Read\"],\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 _ from 'lodash';\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: [\r\n \"/illustration/savedIllustration\",\r\n \"/illustration/savedIllustration/\",\r\n ],\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 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: \"developer\",\r\n paths: [\"/developer\", \"/developer/\"],\r\n displayName: \"titleDeveloper\",\r\n button: \"btnDeveloper\",\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 ) {\r\n //For demo, tracking is always set to true\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 // let cache = JSON.parse(sessionStorage.getItem('bi')); //This code is for demo only. Commenting for FLF project\r\n let tokenMethod = sessionStorage.getItem('tokenMethod');\r\n sessionStorage.clear();\r\n if (tokenMethod) {\r\n sessionStorage.setItem('tokenMethod', tokenMethod);\r\n }\r\n //Below code is for demo only. Commenting for FLF project\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.initialFormData));\r\n return {\r\n ...state,\r\n [payload.dataType]: payload.initialFormData,\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\n// export const dataStore = createStore(rootReducers, initialState, composeWithDevTools(applyMiddleware(...middlewares)));\r\nexport const dataStore = createStore(rootReducers, initialState, enhancers());\r\n","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, incomePayout } =\r\n getPageConceptSelection();\r\n let reportFormData = {\r\n chkCoverPage: pageSelection[\"chkCoverPage\"],\r\n chkTaxPage: pageSelection[\"chkTaxPage\"],\r\n chkComplianceNotice: pageSelection[\"chkComplianceNotice\"],\r\n chkCoveragePage: pageSelection[\"chkCoveragePage\"],\r\n chkHealthMatchPage: pageSelection[\"chkHealthMatchPage\"],\r\n chkBenefitsPage: pageSelection[\"chkBenefitsPage\"],\r\n chkMemberBenefits: pageSelection[\"chkMemberBenefits\"],\r\n chkProductCompare: conceptSelection[\"chkProductCompare\"],\r\n chkInternalRoR: conceptSelection[\"chkInternalRoR\"],\r\n chkCharitableGiving: conceptSelection[\"chkCharitableGiving\"],\r\n chkInsuranceInvestment: conceptSelection[\"chkInsuranceInvestment\"],\r\n chkIncomeStoryboardPage: incomePayout[\"chkIncomeStoryboardPage\"],\r\n chkIncomeNonRegPage: incomePayout[\"chkIncomeNonRegPage\"],\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 txtIncomePayoutLoanRate: formData[\"txtIncomePayoutLoanRate\"],\r\n txtIncomePayoutIntRate: formData[\"txtIncomePayoutIntRate\"],\r\n txtIncomePayoutTaxRate: formData[\"txtIncomePayoutTaxRate\"],\r\n };\r\n const userFormData = { ...user[\"formData\"], ...reportFormData };\r\n\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\", user);\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 {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 React, { useEffect } from \"react\";\r\nimport { companyLogo, closeIcon, IllustrationMagic } from \"assets\";\r\nimport { Button } from \"core/controls\";\r\nimport { Modal } from \"core/uicore\";\r\nimport { usePCTranslation } from \"core/hooks\";\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 const { t } = usePCTranslation();\r\n\r\n useEffect(() => {\r\n document.body.classList.add('modalFont');\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=\"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 \r\n Hello!\r\n \r\n

    \r\n We are Procomp consulting\r\n

    \r\n
    \r\n

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

    \r\n
    \r\n \r\n {`${t(\"CompanyName\")} Help Desk`}\r\n

    \r\n

    \r\n {t(\"Choice-Phone\")} (519)\r\n 886-4610x321\r\n

    \r\n

    \r\n Toll free 1-800-563-6237\r\n x321\r\n

    \r\n

    \r\n {t(\"Choice-Email\")}{\" \"}\r\n {t(\"CompanyEmail\")}\r\n

    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n procompconsulting.ca\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\r\n reserved\r\n

    \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\n};\r\n\r\nexport default AboutModal;\r\n"],"sourceRoot":""}