(function (s, u) { s.add({ save_policy: function (policys, success, error) { u.post(this.backend + "api/policyhomeowners/save", policys, success, error); }, get_policys: function (success, error) { u.get(this.backend + "api/policyhomeowners", success, error); }, search_policy: function (query, success, error) { u.get(this.backend + "api/policyhomeowners/search/" + query, success, error); }, confirmPolicy: function (polId, endNo, userCode, riYN, success, error) { u.get(this.backend + "api/Confirmation/confirmHomeOwnersPolicy/" + polId + "/" + endNo + "/" + userCode + "/" + riYN, success, error); }, risk_end_deletion: function (sysID, endNo, userCode, success, error) { u.get(this.backend + "api/policyhomeowners/endDeletion/" + sysID + "/" + endNo + "/" + userCode, success, error); }, unConfirm_Policy: function (polId, endNo, success, error) { u.get(this.backend + "api/Confirmation/unconfirm/" + polId + "/" + endNo + "/" + userCode, success, error); }, get_lov_company: function (success, error) { u.get(this.backend + "api/company/lov", success, error); }, get_lov_channel: function (success, error) { u.get(this.backend + "api/channel/lov", success, error); }, get_lov_office: function (success, error) { u.get(this.backend + "api/office/lov", success, error); }, get_lov_product_type: function (success, error) { u.get(this.backend + "api/classbusiness/lov", success, error); }, get_lov_cover_type: function (success, error) { u.get(this.backend + "api/cover/lov", success, error); }, get_lov_ins_source: function (success, error) { u.get(this.backend + "api/insurancesource/lov", success, error); }, get_lov_broker_agent: function (success, error) { u.get(this.backend + "api/intermediary/lov", success, error); }, get_lov_business_source: function (success, error) { u.get(this.backend + "api/SourceBusiness/lov", success, error); }, get_lov_customer: function (success, error) { u.get(this.backend + "api/Customer/lov", success, error); }, get_lov_currency: function (success, error) { u.get(this.backend + "api/exchangerate/lov", success, error); }, get_lov_Intermediary_Comm: function (code, success, error) { u.post(this.backend + "api/IntermediaryCommission/lov/", code, success, error); }, get_lov_section: function (success, error) { u.get(this.backend + "api/section/lov", success, error); }, get_lov_location: function (success, error) { u.get(this.backend + "api/location/lov", success, error); }, get_lov_cedent: function (success, error) { u.get(this.backend + "api/customercategory/lov", success, error); }, get_lov_com: function (success, error) { u.get(this.backend + "api/company/lov", success, error); }, get_lov_member_com: function (success, error) { u.get(this.backend + "api/customercategory/lov", success, error); }, check_company_code: function (code, success, error) { u.get(this.backend + "api/company/check/" + code, success, error); }, check_intermediary_code: function (code, success, error) { u.get(this.backend + "api/intermediary/check/" + code, success, error); }, check_office_code: function (code, success, error) { u.get(this.backend + "api/office/check/" + code, success, error); }, check_product_code: function (code, success, error) { u.get(this.backend + "api/classbusiness/check/" + code, success, error); }, check_channel_code: function (code, success, error) { u.get(this.backend + "api/channel/check/" + code, success, error); }, check_insurance_source_code: function (code, success, error) { u.get(this.backend + "api/insurancesource/check/" + code, success, error); }, check_subproduct_code: function (code, success, error) { u.get(this.backend + "api/product/check/" + code, success, error); }, check_business_source_code: function (code, success, error) { u.get(this.backend + "api/SourceBusiness/check/" + code, success, error); }, check_customer_code: function (code, success, error) { u.get(this.backend + "api/Customer/check/" + code, success, error); }, check_area_code: function (code, success, error) { u.get(this.backend + "api/area/check/" + code, success, error); }, check_location_code: function (code, success, error) { u.get(this.backend + "api/location/check/" + code, success, error); }, check_occupancy_code: function (code, success, error) { u.get(this.backend + "api/occupancy/check/" + code, success, error); }, get_customer: function (code, success, error) { u.get(this.backend + "api/Customer/" + code, success, error); }, getAddRiskCovers: function (data, success, error) { u.post(this.backend + "api/RisksCovers/additionalCovers", data, success, error); }, getRiskDefaulCovers: function (data, success, error) { u.post(this.backend + "api/RisksCovers/HownrsdefaultCovers", data, success, error); }, getRiskCoversLOV: function (data, success, error) { u.post(this.backend + "api/RisksCovers/RiskCoversLOV", data, success, error); }, getProdtRisk: function (data, success, error) { u.post(this.backend + "api/RisksCovers/productRisk", data, success, error); }, get_customers: function (success, error) { u.get(this.backend + "api/customer", success, error); }, //search_customer: function (query, success, error) { // u.get(this.backend + "api/customer/search/" + query, success, error); //}, getRiskFees: async function (data, success, error) { return await u.postAsync(this.backend + "api/productriskfee/RiskFees", data, success, error); }, search_section_hwnrs: function (query, success, error) { u.get(this.backend + "api/homeowners/search/" + query, success, error); }, get_section_hwnrs: function (success, error) { u.get(this.backend + "api/homeowners", success, error); }, get_policy_risk: function (success, error) { u.get(this.backend + "api/policyhomeownersrisk", success, error); }, get_section_covers: function(json, success, error) { u.post(this.backend + "api/homeowners/sectioncovers", json, success, error); }, get_lov_ricustomer: function (success, error) { u.get(this.backend + "api/customer/rilov", success, error); }, get_lov_fdzoneAsync: async function (data) { return await u.getAsync(`${this.backend}api/disastercategory/lov/Flood/${data.region}`, data); }, get_lov_eqzone: function (success, error) { u.get(this.backend + "api/fireeqzone/lov", success, error); }, get_lov_area: function (success, error) { u.get(this.backend + "api/area/lov", success, error); }, get_lov_regions: function (success, error) { u.get(this.backend + "api/regions/lov", success, error); }, get_lov_PExcessAsync: async function (data) { return await u.getAsync(`${this.backend}api/product/excess/lov/${data.SubClass}`); }, get_PExcessAsync: async function (data) { return await u.getAsync(`${this.backend}api/product/excess/${data}`); }, getArea: function (regCode, success, error) { u.get(this.backend + `api/area/areaLov/${regCode}`, success, error); }, getLocation: function (areaCode, success, error) { u.get(this.backend + `api/location/locationLov/${areaCode}`, success, error); }, getSectDtlstTemplateAsync: async function () { return await u.getAsync(`${this.backend}api/policyhomeowners/contentdetail/getTemplate`); }, }); })(window.service, window.utility); (function ($, s, u, $scope) { $(function () { u.getGlobal("policyHeaderInit")(); u.getGlobal("tabsInit")(); // Home Owners Risk Grid $scope.homeowners_grid = u.getGlobal("homeOwnersRiskGrid"); $scope.homeloc_grid = u.default_grid("#gridHomeLoc", "#gridHomeLocPager", "Home Owners Location", ["Start Date", "End Date", "Period Days", "Total Prem FC", "Total Prem BC", "SI FC", "SI BC", "Risk Prem FC", "Risk Prem BC", "Discounts FC", "Discounts BC", "Loadings FC", "Loading BC", "RI Prem FC", "RI Prem BC", "RI SI FC", "RI SI BC", "ADJ Prem FC", "ADJ Prem BC", "Currency", "Currency Rate", "Region Code", "Region Name", "Area Code", "Area Name", "Location Code", "Location Name", "Description", "Loc. Address", "Earthquake zone", "Flood Prone", "Underwriting Year", "EML Appl YN", "EML Perc.", "Doc No.", "Endorsement No.", "Renewal No.", "Suspended?", "Suspended From", "Suspended To", "Created By", "Created Date", "Modified By", "Modified Date", "Status", "Location Sys Id", "Policy Sys Id", "INS_UDW_HOME_OWNERS"], [ u.dateColumn("HOL_START_DATE"), u.dateColumn("HOL_END_DATE"), { name: "HOL_PERIOD_DAYS", index: "HOL_PERIOD_DAYS" }, u.currencyColumn("HOL_TOT_PREM_FC"), u.currencyColumn("HOL_TOT_PREM_BC"), u.currencyColumn("HOL_SI_FC"), u.currencyColumn("HOL_SI_BC"), u.currencyColumn("HOL_RISK_PREM_FC"), u.currencyColumn("HOL_RISK_PREM_BC"), u.currencyColumn("HOL_DISC_FC"), u.currencyColumn("HOL_DISC_BC"), u.currencyColumn("HOL_LOAD_FC"), u.currencyColumn("HOL_LOAD_BC"), u.currencyColumn("HOL_RI_PREM_FC"), u.currencyColumn("HOL_RI_PREM_BC"), u.currencyColumn("HOL_RI_SI_FC"), u.currencyColumn("HOL_RI_SI_BC"), u.currencyColumn("HOL_ADJ_PREM_FC"), u.currencyColumn("HOL_ADJ_PREM_BC"), { name: "HOL_CURRENCY", index: "HOL_CURRENCY" }, { name: "HOL_CURRENCY_RATE", index: "HOL_CURRENCY_RATE" }, { name: "HOL_REGION_CODE", index: "HOL_REGION_CODE" }, { name: "HOL_REGION_NAME", index: "HOL_REGION_NAME" }, { name: "HOL_AREA_CODE", index: "HOL_AREA_CODE" }, { name: "HOL_AREA_NAME", index: "HOL_AREA_NAME" }, { name: "HOL_LOC_CODE", index: "HOL_LOC_CODE" }, { name: "HOL_LOC_NAME", index: "HOL_LOC_NAME" }, { name: "HOL_DESC", index: "HOL_DESC" }, { name: "HOL_LOC_ADDRS", index: "HOL_LOC_ADDRS" }, { name: "HOL_EARTHQ_ZONE", index: "HOL_EARTHQ_ZONE" }, { name: "HOL_FDZONE", index: "HOL_FDZONE" }, { name: "HOL_UW_YEAR", index: "HOL_UW_YEAR" }, { name: "HOL_EML_YN", index: "HOL_EML_YN" }, { name: "HOL_EML_PERC", index: "HOL_EML_PERC" }, { name: "HOL_POLH_DOC_NO", index: "HOL_POLH_DOC_NO" }, { name: "HOL_POLH_END_NO", index: "HOL_POLH_END_NO" }, { name: "HOL_POLH_RNW_NO", index: "HOL_POLH_RNW_NO" }, { name: "HOL_SUSPND_YN", index: "HOL_SUSPND_YN" }, u.dateColumn("HOL_SUS_FROM_DATE"), u.dateColumn("HOL_SUS_TO_DATE"), { name: "HOL_SUSPND_PERIOD", index: "HOL_SUSPND_PERIOD" }, { name: "HOL_CRTE_BY", index: "HOL_CRTE_BY" }, u.dateTimeColumn("HOL_CRTE_DATE"), { name: "HOL_MOD_BY", index: "HOL_MOD_BY" }, u.dateTimeColumn("HOL_MOD_DATE"), { name: "HOL_STATUS", index: "HOL_STATUS" }, { name: "HOL_SYS_ID", index: "HOL_SYS_ID", hidden: true, Id: true }, { name: "HOL_POLH_SYS_ID", index: "HOL_POLH_SYS_ID", hidden: true }, { name: "INS_UDW_HOME_OWNERS", index: "INS_UDW_HOME_OWNERS", hidden: true } ], function (sel_id) { var grid = $scope.homeloc_grid; u.fill_form(u.getRow(sel_id, grid), "#homeLocationForm"); var homeRisks = u.parseJson(grid.jqGrid("getCell", sel_id, "INS_UDW_HOME_OWNERS") || "[]"); if (homeRisks.length > 0) { u.clear_grid_data($scope.homeowners_grid); u.grid_populate($scope.homeowners_grid, "", homeRisks); } }); // Section Details Grid $scope.secdetails_grid = u.getGlobal("homeSectionGrid"); // Cover Grid $scope.cover_grid = u.getGlobal("udwCoverGrid"); // Risk Covers **** $scope.riskCovers_grid = u.default_grid("#gridAddNewCover", "#gridAddNewCoverPager", "Risk Covers", ['Code', 'Name', 'Sum Insured', 'Deft Rate', 'Deft Premium'], [ { name: 'PCV_COV_CODE', index: 'PCV_COV_CODE', width: 150 }, { name: 'COVER_NAME', index: 'COVER_NAME', width: 150 }, u.currencyColumn("PCV_SI"), { name: 'PCV_DEF_RATE', index: 'PCV_DEF_RATE', width: 150 }, u.currencyColumn("PCV_DEF_PREM"), ], //Retrive Grid data into form input fields on row click.. function (sel_id) { var grid = $scope.riskCovers_grid; var sel_id = grid.jqGrid('getGridParam', 'selrow'); $("form input[name='DL_CODE']").data("update", true); u.fill_form({ RCOV_CODE: grid.jqGrid('getCell', sel_id, 'PCV_COV_CODE'), RCOV_NAME: grid.jqGrid('getCell', sel_id, 'COVER_NAME'), RCOV_RATE: grid.jqGrid('getCell', sel_id, 'PCV_DEF_RATE'), RCOV_SI_FC: grid.jqGrid('getCell', sel_id, 'PCV_SI'), RCOV_GROSS_PREM_FC: grid.jqGrid('getCell', sel_id, 'PCV_DEF_PREM'), RCOV_NET_PREM_FC: grid.jqGrid('getCell', sel_id, 'PCV_DEF_PREM'), RCOV_USER_PREM_YN: grid.jqGrid("getCell", sel_id, "PCV_CVR_USER_PREMIUM_YN"), RCOV_RATED_YN: grid.jqGrid("getCell", sel_id, "PCV_CVR_RATED_YN"), RCOV_RI_SI_YN: grid.jqGrid("getCell", sel_id, "PCV_CVR_RI_SI_YN"), RCOV_RI_PREM_YN: grid.jqGrid("getCell", sel_id, "PCV_CVR_RI_PREMIUM_YN") }, "#coverForm"); }, //Retrive Grid data into form input fields on row double click.... XXX function (sel_id) { var grid = $scope.riskCovers_grid; var sel_id = grid.jqGrid('getGridParam', 'selrow'); $("form input[name='DL_CODE']").data("update", true); u.fill_form({ RCOV_CODE: grid.jqGrid('getCell', sel_id, 'PCV_COV_CODE'), RCOV_NAME: grid.jqGrid('getCell', sel_id, 'COVER_NAME'), RCOV_RATE: grid.jqGrid('getCell', sel_id, 'PCV_DEF_RATE'), RCOV_SI_FC: grid.jqGrid('getCell', sel_id, 'PCV_SI'), RCOV_GROSS_PREM_FC: grid.jqGrid('getCell', sel_id, 'PCV_DEF_PREM'), RCOV_NET_PREM_FC: grid.jqGrid('getCell', sel_id, 'PCV_DEF_PREM'), RCOV_USER_PREM_YN: grid.jqGrid("getCell", sel_id, "PCV_CVR_USER_PREMIUM_YN"), RCOV_RATED_YN: grid.jqGrid("getCell", sel_id, "PCV_CVR_RATED_YN"), RCOV_RI_SI_YN: grid.jqGrid("getCell", sel_id, "PCV_CVR_RI_SI_YN"), RCOV_RI_PREM_YN: grid.jqGrid("getCell", sel_id, "PCV_CVR_RI_PREMIUM_YN") }, "#coverForm"); // hide modal on double click $("#AddNewCoverModal").modal('hide'); }), // Premium Summary $scope.premium_grid = u.getGlobal("udwPremSumGrid"); // Premium Register Summary $scope.premiumreg_grid = u.getGlobal("udwPremRegGrid"); // Premium Fees Summary $scope.fees_grid = u.getGlobal("udwFeesGrid"); // Applicable Risk Fees Summary $scope.riskFees_grid = u.default_grid("#gridCompFees", "#gridCompFeesPager", "Applicable Fees Summary", [' Code', 'Fee Name', 'FC Amount', 'BC Amount', 'Polh SYS ID', 'Risk SYS ID', 'Risk N0', 'Risk Code', 'Polh End No.', 'Status', 'Fee SYS ID'], [ { name: 'HOP_FEE_CODE', index: 'HOP_FEE_CODE', width: 150 }, { name: 'HOP_FEE_NAME', index: 'HOP_FEE_NAME', width: 200 }, u.currencyColumn("HOP_FEE_FC_AMOUNT"), u.currencyColumn("HOP_FEE_BC_AMOUNT"), { name: 'HOP_FEE_POL_SYS_ID', index: 'HOP_FEE_POL_SYS_ID', width: 150 }, { name: 'HOP_FEE_RK_SYS_ID', index: 'HOP_FEE_RK_SYS_ID', width: 150 }, { name: 'HOP_FEE_RK_NO', index: 'HOP_FEE_RK_NO', width: 150 }, { name: 'HOP_FEE_RK_CODE', index: 'HOP_FEE_RK_CODE', width: 150 }, { name: 'HOP_FEE_END_NO', index: 'HOP_FEE_END_NO', width: 150 }, { name: 'HOP_FEE_STATUS', index: 'HOP_FEE_STATUS', width: 150 }, { name: 'HOP_FEE_SYS_ID', index: 'HOP_FEE_SYS_ID', width: 150 }, ], //Retrive Grid data into form input fields on row click.. function (sel_id) { u.fill_form(u.getRow(sel_id, $scope.riskFees_grid), "#riskfeesForm"); }), $scope.riskFees_Lov_grid = u.default_grid("#gridAddNewFees", "#gridAddNewFeesPager", "Risk Covers", ["Code", "Name", "Amount"], [ { name: "PRF_FEE_CODE", index: "PRF_FEE_CODE", width: 150 }, { name: "FEE_NAME", index: "FEE_NAME", width: 200 }, u.currencyColumn("PRF_FEE_AMOUNT"), { name: "FEE_COMPUTATION_TYPE", index: "FEE_COMPUTATION_TYPE", width: 150 } ], function (selId) { }, async function (selId) { const grid = $scope.riskFees_Lov_grid; let data = u.getRow(selId, grid) || {}; let amount = 0; // check computation type and calculate fee accordingly switch (data.FEE_COMPUTATION_TYPE) { case "F": default: { amount = data.PRF_FEE_AMOUNT; } break; case "P": { const premiumBc = parseFloat(u.getRow(u.getSelRow($scope.homeowners_grid), $scope.homeowners_grid) .HOL_RISK_PREM_BC || 0); amount = parseFloat((data.PRF_FEE_AMOUNT / 100) * premiumBc).toFixed(2); } break; } data = { HOP_FEE_CODE: data.PRF_FEE_CODE, HOP_FEE_NAME: data.FEE_NAME, HOP_FEE_FC_AMOUNT: amount, HOP_FEE_BC_AMOUNT: amount, HOP_FEE_RK_NO: data.PRF_SYS_ID }; u.form_reset("#riskfeesForm"); await $scope.RiskFeesCalculate(data); //$("#RCOV_SI_FC").trigger("blur"); u.fill_form(data, "#riskfeesForm"); $("#AddNewFeesModal").modal("hide"); }); // Applicable Policy Fees Summary $scope.polfees_grid = u.getGlobal("udwPolFeesGrid"); // Premium Payment Summary $scope.payment_grid = u.getGlobal("udwPaymentGrid"); // Risk Premium Summary $scope.PremSummary_grid = u.getGlobal("udwPremSumGrid"); // Reinsurance Share Summary $scope.treatyShareGrid = u.getGlobal("udwTtyShareGrid"); // FAC In Premium Summary $scope.treatyApportionmentGrid = u.getGlobal("udwTtyApporGrid"); // Reinsurance Summary $scope.reinsurance_grid = u.getGlobal("udwRIGrid"); // Claim Summary $scope.cliams_grid = u.getGlobal("udwClaimsGrid"); // Agent/Broker Commission $scope.intermCom_grid = u.getGlobal("udwAgntCommGrid"); // Product Risk Grid **** $scope.prodRisks_grid = u.getGlobal("udwSubClassGrid"); // Customer Dialog $scope.customer_grid = u.getGlobal("udwCustSearchGrid"); //Intermediary Commission $scope.interComm_grid = u.getGlobal("udwAgntComsnGrid"); // Coinsurnace Member or FAC Inward Business Grid $scope.grdfacInward_grid = u.getGlobal("udwFacInwGrid"); // Coinsurnace Member or FAC Invward Participants Grid $scope.grdInwdParticipant_grid = u.getGlobal("udwInwdPartGrid"); // Coinsurance Leader Business Grid $scope.grdCoinsLeader_grid = u.getGlobal("udwCoInsLdrGrid"); // Policy Discount/Loading $scope.polhdiscloading_grid = u.getGlobal("udwPolDiscLoadingGrid"); // Risk Discount/Loading // Risk Discount/Loading RiskDiscLoadModal btnRiskDiscLoad gridRiskDiscLoad riskdiscload_grid $scope.riskdiscload_grid = u.getGlobal("udwRskDiscLoadGrid"); //THIS IS THE CORRECT DEFFINITION FOR THE RISK DISCOUNT AND LOADING GRID $scope.riskdiscloading_grid = u.getGlobal("udwRskDiscLoadingGrid"); // Policy Documents Grid $scope.polFileGrid = u.getGlobal("udwPolDocsGrid"); $scope.policy_risk_search_grid = u.default_grid("#gridPolicyRiskSearch", "#gridPolicyRiskSearchPager", "Policy Risk List", [ "Policy ID", "Section Name", "Description", "Location Name", ], [ { name: "HOP_POLH_SYS_ID", index: "HOP_POLH_SYS_ID", width: 150 }, { name: "HOP_SEC_NAME", index: "HOP_SEC_NAME", width: 150 }, { name: "HOP_DESC", index: "HOP_DESC", width: 150 }, { name: "HOP_LOC_NAME", index: "HOP_LOC_NAME", width: 150 }, ], function (id) { }), $scope.users_grid = u.getGlobal("udwUsersGrid"); $scope.saving = false; /*---------------------- * LOV initialization *--------------------*/ $scope.lov = u.lov_init("#myLOVModal", "#grdLOV", "#grdLOVPager"); /*----------------------------------------- * LOV button click event handling *---------------------------------------*/ $("body").delegate(".btn_lov", "click", function (e) { $scope.dialog_data = $(this).data("dialog"); if (!$scope.dialog_data) { return false; } switch ($scope.dialog_data.type) { case "btn_cover_type": $scope.lov.call_dialog("Select Cover", "get_lov_cover_type", $scope.dialog_data); break; case "btn_broker_agent": $scope.lov.call_dialog("Select Broker/Agent", "get_lov_broker_agent", $scope.dialog_data); break; case "btn_risk": $scope.lov.call_dialog("Select Risk", "get_lov_motor_risks", $scope.dialog_data); break; case "btn_location": //$scope.lov.call_dialog("Select Location", "get_lov_location", $scope.dialog_data); if ($("#HOL_AREA_CODE").val() === "") return u.growl_info("Select an area"); $scope.lov.call_dialog("Select Location", "getLocation", $scope.dialog_data, $("#HOL_AREA_CODE").val()); break; case "btn_area": //$scope.lov.call_dialog("Select Area", "get_lov_area", $scope.dialog_data); if ($("#HOL_REGION_CODE").val() === "") return u.growl_info("Please select a region"); $scope.lov.call_dialog("Select Area", "getArea", $scope.dialog_data, $("#HOL_REGION_CODE").val()); break; case "btn_region": $scope.lov.call_dialog("Select Region", "get_lov_regions", $scope.dialog_data); break; case "btn_section": $scope.lov.call_dialog("Select Section", "get_lov_section", $scope.dialog_data, null, function () { $scope.sectionChange(); }); break; case "excess_lov": if (u.field_empty("#POLH_SUB_CLASS_CODE")) return u.growl_info("Please select a product"); $scope.lov.pcolName = ["Min Amount", "Max Amount", "Narration"]; $scope.lov.pcolMdls = [ { name: "MIN", index: "MIN" }, { name: "MAX", index: "MAX" }, { name: "NARRATION", index: "NARRATION" } ]; $scope.lov.call_dialog("Select Excess", "getProdBuyBackExcessLov", $scope.dialog_data, $("#POLH_SUB_CLASS_CODE").val(), function (e) { $("#HOP_EXCESS_MAX").val(e.MAX); $("#HOP_EXCESS_MIN").val(e.MIN); }); break; case "btn_eqzone": $scope.lov.call_dialog("Select Earthquake Zone", "get_lov_eqzone", $scope.dialog_data); break; } }); /*--------------------------- * Policy Risk List Search *-------------------------*/ $("#btnQueryPolicyRisk").click(function () { var queryTxt = $("#txtPolRiskSearch").val(); if (queryTxt != null && queryTxt.length > 0) { s.get_policy_risk(queryTxt, function (result) { /* * clear grid before populating */ $scope.policy_risk_search_grid.jqGrid("clearGridData"); for (var i in result) { $scope.policy_risk_search_grid.addRowData(result[i].HOP_POLH_SYS_ID, result[i]); } }, function (err) { }); } else { /*-------------------------------- * clear grid before populating *------------------------------*/ $scope.policy_risk_search_grid.jqGrid("clearGridData"); //fetch all s.get_policy_risk(function (polhs) { for (var i in polhs) { $scope.policy_risk_search_grid.addRowData(polhs[i].HOP_POLH_SYS_ID, polhs[i]); } }); } }); $("#btn_PolicyRisk_lov").on("click", function () { $("#policyRiskLovModal").modal(); }); //$("form select[name='HOP_EXCESS_APP']").change(function () { // if ($(this).val() === "Y") { // $("#btn_excess").removeAttr("disabled"); // } else { // $("#HOP_EXCESS_PERC").val(""); // $("#HOP_EXCESS_NAR").val(""); // $("#HOP_EXCESS_MAX").val(""); // $("#HOP_EXCESS_MIN").val(""); // $("#btn_excess").prop("disabled", "disabled"); // } //}); /*-------------------------------------------------- * Get Risk compulsory Fees *------------------------------------------------*/ // async function getRiskComPulsoryFess() { /* obtain parameter for our request */ var riskFeesData = { CLASS_CODE: $("#POLH_CLASS_CODE").val(), PRD_CODE: $("#POLH_SUB_CLASS_CODE").val(), }; // var grid = $scope.riskFees_grid; var rowIds = grid.jqGrid('getDataIDs'); //send parameters and get motor Risks from the database var result = await s.getRiskFees(riskFeesData); result = result.Where(x => x.PRF_DEFT === "Y"); // only defaulted fees if (result && result.length && result.length > 0) { //clear Grid //$scope.riskFees_grid.jqGrid('clearGridData'); //fill grid for (var i in result) { result[i]["HOP_FEE_FC_AMOUNT"] = parseFloat(result[i]["PRF_FEE_AMOUNT"]) / parseFloat($("#POLH_CURRENCY_RATE").val()); result[i]["HOP_FEE_FC_AMOUNT"] = parseFloat(result[i]["HOP_FEE_FC_AMOUNT"].toFixed(2)); result[i]["HOP_FEE_BC_AMOUNT"] = parseFloat(result[i]["PRF_FEE_AMOUNT"]); result[i]["HOP_FEE_CODE"] = result[i]["PRF_FEE_CODE"]; result[i]["HOP_FEE_NAME"] = result[i]["FEE_NAME"]; result[i]["HOP_FEE_RK_NO"] = result[i]["PRF_SYS_ID"]; result[i]["HOP_FEE_RK_CODE"] = $("#HOP_RISK_CODE").val(); result[i]["HOP_FEE_RK_SYS_ID"] = $("#HOP_SYS_ID").val(); result[i]["HOP_FEE_CRTE_BY"] = u.getUserCode(); result[i]["HOP_FEE_CRTE_DATE"] = u.get_date(); result[i]["HOP_FEE_STATUS"] = "U"; // // $scope.riskFees_grid.jqGrid('setCell', result[i], 'RISK_CODE', ); // $scope.riskFees_grid.jqGrid("clearGridData"); //$scope.riskFees_grid.addRowData(result[i]["HOP_FEE_CODE"], result[i]); } } // var compFeedata = u.get_grid_data($scope.riskFees_grid); var compFeedata = result; var linq = Enumerable.From(compFeedata); var data = linq.GroupBy(function (x) { return x.HOP_FEE_CODE; }) .Select(function (x) { // console.log(x); return { POL_FEE_CODE: x.Key(), POL_FEE_NAME: x.source[0]["HOP_FEE_NAME"], POL_FEE_FC_AMOUNT: x.Sum(function (y) { return parseFloat(y.HOP_FEE_FC_AMOUNT || 0); }), POL_FEE_BC_AMOUNT: x.Sum(function (y) { return parseFloat(y.HOP_FEE_BC_AMOUNT || 0); }), POL_FEE_END_NO: 0, //$("#POL_END_NO").val() POL_FEE_STATUS: "U" }; }).ToArray(); // $scope.polfees_grid.jqGrid("clearGridData"); for (var i in data) $scope.polfees_grid.addRowData(data[i].POL_FEE_CODE, data[i]); return result; } /*-------------------------------------------------- * Querying Section to retrieve covers *------------------------------------------------*/ // $("#btnQuerySecRisk").click(function () { var queryTxt = $("#txtSechwnrsSearch").val(); if (queryTxt != null && queryTxt.length > 0) { s.search_section_hwnrs(queryTxt, function (result) { /* * clear grid before populating */ $scope.secrisks_grid.jqGrid("clearGridData"); for (var i in result) { $scope.secrisks_grid.addRowData(result[i].HON_SYS_ID, result[i]); } }, function (err) { }); } else { /*-------------------------------- * clear grid before populating *------------------------------*/ $scope.secrisks_grid.jqGrid("clearGridData"); //fetch all s.get_section_hwnrs(function (howners) { for (var i in howners) { $scope.secrisks_grid.addRowData(howners[i].HON_SYS_ID, howners[i]); } }); } }); $("#btn_GetCompFees").on("click", function () { //getRiskComPulsoryFess(); }); /*-------------------------------------------------- * add Cover *------------------------------------------------*/ // $("#btn_add_cover").on('click', function () { if (u.form_validation("#coverForm")) { if ($("input[name='RCOV_CODE']").val() === "") { u.modalAlert("Please Select Risk Cover"); } u.modal_confirmation("Are you sure you want to add the Cover?", function () { /* obtain parameter for our request */ var productRiskData = { PRD_CODE: $("#POLH_SUB_CLASS_CODE").val(), //PRD_CV_DFT: 'Y', CUR_RATE: $("#POLH_CURRENCY_RATE").val(), RCOV_CODE: $("#RCOV_CODE").val(), }; // const currency = parseFloat($("#POLH_CURRENCY_RATE").val()); var grid = $scope.cover_grid; var rowIds = grid.jqGrid('getDataIDs'); //declare array to contain the codes to varify var CodeArray = []; // iterate through the rows in the grid and add Covers to Array for (var i = 0, len = rowIds.length; i < len; i++) { var currRow = rowIds[i]; //get value of the cell or column in an array var coverCode = grid.jqGrid('getCell', currRow, "RCOV_CODE"); var RiskCode = grid.jqGrid('getCell', currRow, "RCOV_RISK_SYS_ID"); var riskCov = coverCode + RiskCode; // alert(riskCov); CodeArray.push(riskCov); } var data = u.parse_form("#coverForm"); var deftCoverCode = data.RCOV_CODE; var newRiskCode = $("#HOP_SYS_ID").val(); var verifyRiskCover = deftCoverCode + newRiskCode; //alert(verifyRiskCover); //add if Cover is not found in the Grid// //if ($.inArray(verifyRiskCover, CodeArray) < 0) { // //fill in default covers if not in the grid // data.RCOV_STATUS = "U"; // data.RCOV_CRTE_DATE = u.get_date(); // data.RCOV_CRTE_BY = u.getUserCode(); // data.RCOV_SI_BC = $("#RCOV_SI_FC").val() * $("#POLH_CURRENCY_RATE").val(); // $scope.cover_grid.addRowData(data.ID, data); // u.growl_success("Risk Cover successfully added"); // u.hide_confirm(); //} //else { // u.growl_warning("Cover exists for this Risk, you cannot add same Cover " + deftCoverCode); // u.hide_confirm(); //} //send parameters and get Default covers from the database s.getAddRiskCovers(productRiskData, function (result) { if (result && result.length && result.length > 0) { for (var i in result) { //alert(JSON.stringify(result)); result[i]["RCOV_NAME"] = result[i]["MS_UDW_COVERS"]["CVR_NAME"]; result[i]["RCOV_TYPE"] = result[i]["MS_UDW_COVERS"]["CVR_TYPE"]; result[i]["RCOV_RI_YN"] = result[i]["MS_UDW_COVERS"]["CVR_RI_HOPLICABLE"]; result[i]["CVR_USER_PREMIUM"] = result[i]["MS_UDW_COVERS"]["CVR_USER_PREMIUM"]; result[i]["RCOV_PREM_REFUND"] = result[i]["MS_UDW_COVERS"]["RCOV_PREM_REFUND"]; result[i]["RCOV_RATE_CHANGE"] = result[i]["MS_UDW_COVERS"]["CVR_RATE_CHANGE"]; result[i]["RCOV_SI_CHANGE"] = result[i]["MS_UDW_COVERS"]["CVR_SI_CHANGE"]; result[i]["RCOV_COVER_LEVEL"] = result[i]["MS_UDW_COVERS"]["RCOV_COVER_LEVEL"]; result[i]["RCOV_RISK_SYS_ID"] = $("#HOP_SYS_ID").val(); result[i]["RCOV_RISK_NO"] = $("#HOP_RISK_ID").val(); result[i]["RCOV_SI_FC"] = parseFloat($("#RCOV_SI_FC").val() || 0); result[i]["RCOV_SI_BC"] = parseFloat($("#RCOV_SI_FC").val() || 0) * currency; result[i]["RCOV_ANNL_PREM_FC"] = parseFloat($("#RCOV_ANNL_PREM_FC").val() || 0); result[i]["RCOV_ANNL_PREM_BC"] = parseFloat($("#RCOV_ANNL_PREM_FC").val() || 0) * currency; result[i]["RCOV_GROSS_PREM_FC"] = parseFloat($("#RCOV_GROSS_PREM_FC").val() || 0); result[i]["RCOV_GROSS_PREM_BC"] = parseFloat($("#RCOV_GROSS_PREM_FC").val() || 0) * currency; result[i]["RCOV_NET_PREM_FC"] = parseFloat($("#RCOV_NET_PREM_FC").val() || 0); result[i]["RCOV_NET_PREM_BC"] = parseFloat($("#RCOV_NET_PREM_FC").val() || 0) * currency; result[i]["RCOV_RATE"] = parseFloat($("#RCOV_RATE").val()); //result[i]["RCOV_SI_FC"] = $("#RCOV_SI_FC").val() * $("#RCOV_RATE").val(); //result[i]["RCOV_RATE"] = var deftCoverCode = result[i].RCOV_CODE; var newRiskCode = $("#HOP_SYS_ID").val(); var verifyRiskCover = deftCoverCode + newRiskCode; //alert(verifyRiskCover); //add if Cover is not found in the Grid// if ($.inArray(verifyRiskCover, CodeArray) < 0) { //fill in default covers if not in the grid $scope.cover_grid.addRowData(undefined, result[i]); u.growl_success("Risk Cover successfully added"); u.hide_confirm(); u.form_reset("#coverForm"); $("#RCOV_RATE").prop("disabled", false); $("#RCOV_ANNL_PREM_FC").attr("disabled", "disabled"); $("#RCOV_SI_FC").prop("disabled", false); } else { u.growl_warning("Cover exists for this Risk, you cannot add same Cover " + deftCoverCode); u.hide_confirm(); } } } else { u.hide_confirm(); u.growl_error("Error occured, please check and try again"); } }); }); } else { u.hide_confirm(); u.growl_error("Please fill out the fields that are marked red"); } }); /*-------------------------------------------------- *get Risks Cover lists fucnction *------------------------------------------------*/ // function getRiskCoversLov() { /* obtain parameter for our request */ var RiskCoverData = { PRD_CODE: $("#POLH_SUB_CLASS_CODE").val(), }; // var grid = $scope.riskCovers_grid; var rowIds = grid.jqGrid('getDataIDs'); //send parameters and get motor Risks from the database s.getRiskCoversLOV(RiskCoverData, function (result) { if (result && result.length && result.length > 0) { //clear Grid $scope.riskCovers_grid.jqGrid('clearGridData'); //fill grid for (var i in result) { result[i]["COVER_NAME"] = result[i]["MS_UDW_COVERS"]["CVR_NAME"]; $scope.riskCovers_grid.addRowData(result[i]["RCOV_CODE"], result[i]); } } }); } /*-------------------------------- *Query Cover Lov *------------------------------*/ // $("#btnQueryRiskCoverLov").on('click', function () { getRiskCoversLov(); }); /*-------------------------------- *Open Risk Covers LOV Modal *------------------------------*/ // $("#btnAddNewCover").on('click', function () { if ($("#POLH_CLASS_CODE").val() == "") { u.growl_warning("Product Code is empty, Please check and try again"); } else { $("#AddNewCoverModal").modal(); } }); /*---------------------------------------------------- * Remove record or Mark for deletion from Cover Grid *---------------------------------------------------*/ // $("#btn_remove_cover").on('click', function () { if (u.grid_empty($scope.cover_grid)) return u.modalAlert("Grid is empty!!!"); var grid = $scope.cover_grid; var row_id = grid.jqGrid('getGridParam', 'selrow'); var recordStatus = grid.jqGrid('getCell', row_id, 'RCOV_STATUS'); var Code = grid.jqGrid('getCell', row_id, 'RCOV_NO'); var message = ""; /*--------------------------------- * Display modal message *------------------------------*/ // u.modal_confirmation("Are you sure you want to remove the Record?", function (e) { /*-------------------------------------------- * Remove newly added record before saving *------------------------------------------*/ // if (recordStatus == "U") { grid.jqGrid('delRowData', row_id); u.hide_confirm(); u.growl_hide("Selected row successfully deleted"); } /*---------------------------------------- * Mark a record for deletion on saving *--------------------------------------*/ // if (recordStatus == "A") { grid.jqGrid('setCell', row_id, 'RCOV_STATUS', 'D'); $('#' + row_id, '#grdCover').css({ color: 'red' }); u.hide_confirm(); u.growl_hide("Selected row successfully marked for deletion, please click on the save button to save changes"); } else if (recordStatus == "D") { $('#' + row_id, '#grdCover').css({ color: 'black' }); grid.jqGrid('setCell', row_id, 'RCOV_STATUS', 'A'); u.hide_confirm(); u.growl_hide("Data successfully restored"); } u.form_reset("#coverForm"); $("#RCOV_RATE").prop("disabled", false); $("#RCOV_ANNL_PREM_FC").attr("disabled", "disabled"); $("#RCOV_SI_FC").prop("disabled", false); }); }); /*-------------------------------- * Cover Edit/Update Function *------------------------------*/ // $("#btn_update_cover").on('click', function () { if (u.grid_empty($scope.cover_grid)) return u.growl_info("Cover grid is empty"); if (u.form_validation("#coverForm")) { u.modal_confirmation("Are you sure you want to update the selected Cover?", function () { updateCovers(); u.hide_confirm(); }); } }); //Edit/Update covers Function function updateCovers() { var grid = $scope.cover_grid; var rowId = u.getSelRow(grid); //var coverCode = grid.jqGrid("getCell", rowId, "RCOV_SYS_ID"); //if (coverCode == $("#RCOV_SYS_ID").val()) { if (rowId) { // CURR_RATE = parseFloat($("#HOP_CURRENCY_RATE").val()).toFixed(2); if (CURR_RATE === "" || CURR_RATE === 0) { u.hide_confirm(); u.growl_warning("the Currency Rate cannot be zero (0) please check and try again"); } else { //Declare variables and get values var coverSifc = parseFloat($("#RCOV_SI_FC").val()).toFixed(2); var coverSibc = parseFloat(coverSifc * CURR_RATE).toFixed(2); var coverGrossPremFc = parseFloat($("#RCOV_GROSS_PREM_FC").val()).toFixed(2); var coverGrossPremBc = parseFloat(coverGrossPremFc * CURR_RATE).toFixed(2); var coverNetPremFc = parseFloat($("#RCOV_NET_PREM_FC").val()).toFixed(2); var coverNetPremBc = parseFloat(coverNetPremFc * CURR_RATE).toFixed(2); var coverDisFc = 0; coverDisFc = parseFloat($("#RCOV_DISC_FC").val()).toFixed(2); var coverDisBc = 0; coverDisBc = parseFloat(coverDisFc * CURR_RATE).toFixed(2); var coverLoadFc = parseFloat($("#RCOV_LOAD_FC").val()).toFixed(2); var coverLoadBc = parseFloat(coverLoadFc / CURR_RATE).toFixed(2); // var coverRate = parseFloat($("#RCOV_RATE").val()).toFixed(2); // grid.jqGrid("setCell", rowId, "RCOV_SI_FC", coverSifc); grid.jqGrid("setCell", rowId, "RCOV_SI_BC", coverSibc); grid.jqGrid("setCell", rowId, "RCOV_RATE", coverRate); grid.jqGrid("setCell", rowId, "RCOV_GROSS_PREM_FC", coverGrossPremFc); grid.jqGrid("setCell", rowId, "RCOV_GROSS_PREM_BC", coverGrossPremBc); grid.jqGrid("setCell", rowId, "RCOV_NET_PREM_FC", coverNetPremFc); grid.jqGrid("setCell", rowId, "RCOV_NET_PREM_BC", coverNetPremBc); grid.jqGrid("setCell", rowId, "RCOV_DISC_FC", coverDisFc); grid.jqGrid("setCell", rowId, "RCOV_DISC_BC", coverDisBc); grid.jqGrid("setCell", rowId, "RCOV_LOAD_FC", coverLoadFc); grid.jqGrid("setCell", rowId, "RCOV_LOAD_BC", coverLoadBc); grid.jqGrid("setCell", rowId, "RCOV_ANNL_PREM_FC", $("#RCOV_ANNL_PREM_FC").val()); grid.jqGrid("setCell", rowId, "RCOV_ANNL_PREM_BC", $("#RCOV_ANNL_PREM_BC").val()); //call //$scope.SumCoverRiskValues(); //fire cover SI update if ($("#RCOV_CODE").val() === "030001") { u.setGridColumn($scope.cover_grid, { "RCOV_SI_FC": parseFloat($("#RCOV_SI_FC").val()), "RCOV_SI_BC": parseFloat($("#RCOV_SI_FC").val()) * CURR_RATE }); } u.hide_confirm(); u.growl_success("Risk Cover updated"); u.form_reset("#coverForm"); $("#RCOV_RATE").prop("disabled", false); $("#RCOV_ANNL_PREM_FC").attr("disabled", "disabled"); $("#RCOV_SI_FC").prop("disabled", false); } } else { u.hide_confirm(); u.growl_warning("Please select the correct row to edit"); } } /*----------------------------------- * exporting of the grid to excel Condition & Clauses *----------------------------------*/ $("#export-cover-btn").click(function () { /* * function to export grid data into excel */ u.excel_export($scope.cover_grid, ["ID"], "Cover_List_Excel"); }); //refresh Cover, Risk and policy Values on closing the Risk Cover Modal $("#btnRiskCoverOk").click(async function () { if (u.grid_empty($scope.cover_grid)) { u.modal_confirmation("The Grid is empty, do you want to close form?", function (e) { $("#RiskCoverModal").modal("hide"); u.hide_confirm(); }); } else { await $scope.SumCoverRiskValues(); //$scope.premiumSummarizer(); //$scope.PolicyCalculations(); $("#RiskCoverModal").modal("hide"); u.clear_grid_data($scope.cover_grid); } u.form_reset("#coverForm"); }); $("#btn_risk_cover").click(function () { if (u.grid_empty($scope.homeowners_grid)) return u.growl_info("The grid is empty"); // var grid = $scope.homeowners_grid; // var selId = grid.jqGrid("getGridParam", "selrow"); // var RiskId = grid.jqGrid("getCell", selId, "HOP_SYS_ID"); if (!u.getSelRow($scope.homeowners_grid)) return u.growl_warning("No risk has been selected, please select a risk to continue"); //if (RiskId == $("#HOP_SYS_ID").val()) { $("#RiskCoverModal").modal(); //Hide covers not related to selected risk //$scope.hideShowCovers(); //} else { // u.growl_warning("No Risk selected, Please check and try again"); //}; }); //Calculate Policy Premium Summary to be displayed in a grid $scope.premiumSummarizer = function () { var currRate = parseFloat($("#POLH_CURRENCY_RATE").val() || 0); //[grossPremFc=0, grossPremBc=1, totalvehBasicPrem=2, excessBoughtPrem=3, totalccLoadingPrem=4, AddTPPDPrem=5, totalRiskPrem=6, totalTPBasicPrem=7, extraSeatPrem=8, ncdPremFc=9, ncdPremBc=10, addPeril=11, PABenefitPrem=12, ecowasPrem] var premData = $scope.PremiumCalculator(); u.clear_grid_data($scope.PremSummary_grid); var data = { CODE: "GRSPREM", DESCRIPTION: "Gross Premium", FC_AMOUNT: ( parseFloat(premData[2] || 0) //parseFloat(premData[3] || 0) * currRate + //parseFloat(premData[4] || 0) * currRate + //parseFloat(premData[5] || 0) * currRate + //parseFloat(premData[8] || 0) * currRate + //parseFloat(premData[11] || 0) * currRate + //parseFloat(premData[12] || 0) * currRate + /* parseFloat(premData[13] || 0) * currRate*/).toFixed(2), BC_AMOUNT: ( parseFloat(premData[3] || 0) //parseFloat(premData[3] || 0) + //parseFloat(premData[4] || 0) + //parseFloat(premData[5] || 0) + //parseFloat(premData[8] || 0) + //parseFloat(premData[11] || 0) + //parseFloat(premData[12] || 0) + /* parseFloat(premData[13] || 0)*/).toFixed(2), TYPE: "P" }; $scope.PremSummary_grid.addRowData(data.ID, data); //policy discount and loading summary // var polDiscLoadData = u.get_grid_data($scope.riskdiscloading_grid); var polDiscLoadData = []; var totalSumInsuredBc = 0; var totalSumInsuredFc = 0; let fees = []; var vatBc = 0; var vatFc = 0; var homeLoc = u.get_grid_data($scope.homeloc_grid); homeLoc.ForEach(loc => { if (loc.HOL_STATUS !== "D") { totalSumInsuredBc += parseFloat(loc.HOL_SI_BC || 0); totalSumInsuredFc += parseFloat(loc.HOL_SI_FC || 0); vatBc += parseFloat(loc.HOL_VALUE_ADDED_TAX_RATE_BC || 0) || 0; vatFc += parseFloat(loc.HOL_VALUE_ADDED_TAX_RATE_FC || 0) || 0; var homeRiskData = u.parseJson(loc.INS_UDW_HOME_OWNERS); homeRiskData.ForEach(homeRisk => { if (homeRisk.HOP_STATUS !== "D") { // risk level discounts var discLoads = u.parseJson(homeRisk.INS_UDW_RISK_DISCLOAD); discLoads.ForEach(discLoad => { polDiscLoadData.push(discLoad); }); // cover level discounts var covers = u.parseJson(homeRisk.INS_UWD_RISK_COVERS); covers = u.parseJson(covers); covers.ForEach(cover => { var discLoads = u.parseJson(cover.INS_UDW_COVER_DISCLOAD); discLoads.ForEach(discLoad => { if (discLoad.DL_STATUS !== "D") { polDiscLoadData.push(discLoad); } }); }); homeRisk.INS_UDW_HOME_OWNERS_FEES = u.parseJson(homeRisk.INS_UDW_HOME_OWNERS_FEES); homeRisk.INS_UDW_HOME_OWNERS_FEES.ForEach(fee => { fees.push(fee); }); } }); } }); //console.log(polDiscLoadData); var polDiscLoadLinq = Enumerable.From(polDiscLoadData); var polDiscLoadings = polDiscLoadLinq.GroupBy(function (x) { return x.DL_CODE; }) .Select(function (x) { return { CODE: x.Key(), DESCRIPTION: x.source[0]["DL_NAME"], FC_AMOUNT: x.Sum(function (y) { return y.DL_TYPE === "D" ? -(parseFloat(y.DL_AMT_FC || 0)) : parseFloat(y.DL_AMT_FC || 0); }).toFixed(2), BC_AMOUNT: x.Sum(function (y) { return y.DL_TYPE === "D" ? -(parseFloat(y.DL_AMT_BC || 0)) : parseFloat(y.DL_AMT_BC || 0); }).toFixed(2), TYPE: x.source[0]["DL_TYPE"] }; }).ToArray(); for (var x in polDiscLoadings) $scope.PremSummary_grid.addRowData(polDiscLoadings[x].ID, polDiscLoadings[x]); //policy fee summary var compFeedata = u.get_grid_data($scope.polfees_grid).Where(x => x.POL_FEE_STATUS !== "D"); fees.GroupBy(e => e.HOP_FEE_CODE).Select(q => { return { POL_FEE_CODE: q.Key(), POL_FEE_NAME: q.source[0]["HOP_FEE_NAME"], POL_FEE_FC_AMOUNT: parseFloat(q.Where(c => c.HOP_FEE_STATUS !== "D").Sum(y => parseFloat(y.HOP_FEE_FC_AMOUNT || 0))).toFixed(2) || 0, POL_FEE_BC_AMOUNT: parseFloat(q.Where(c => c.HOP_FEE_STATUS !== "D").Sum(y => parseFloat(y.HOP_FEE_BC_AMOUNT || 0))).toFixed(2) || 0, POL_FEE_STATUS: q.Any(x => x.HOP_FEE_STATUS === "A") ? "A" : "U", POL_FEE_CRTE_DATE: q.source[0]["HOP_FEE_CRTE_DATE"], POL_FEE_CRTE_BY: q.source[0]["HOP_FEE_CRTE_BY"], POL_FEE_MOD_BY: q.source[0]["HOP_FEE_MOD_BY"], POL_FEE_POL_SYS_ID: parseInt($("#POLH_SYS_ID").val() || 0), POL_FEE_MOD_DATE: q.source[0]["HOP_FEE_MOD_DATE"], POL_FEE_FEE_END_NO: q.source[0]["HOP_FEE_END_NO"] || parseInt($("#POLH_END_NO").val() || 0), POL_FEE_RNW_NO: q.source[0]["HOP_FEE_RNW_NO"] || parseInt($("#POLH_RENEW_SER_NO").val() || 0) }; }).ToArray().ForEach(h => { compFeedata.Where(b => b.POL_FEE_CODE === h.POL_FEE_CODE).FirstOrDefault(v => { v.POL_FEE_NAME = h.POL_FEE_NAME; v.POL_FEE_FC_AMOUNT = h.POL_FEE_FC_AMOUNT; v.POL_FEE_BC_AMOUNT = h.POL_FEE_BC_AMOUNT; v.POL_FEE_STATUS = v.POL_FEE_SYS_ID ? "A" : h.POL_FEE_STATUS; }); if (!compFeedata.Where(b => b.POL_FEE_CODE === h.POL_FEE_CODE).ToList().Any()) { compFeedata.Add(h); } }); u.clear_grid_data($scope.polfees_grid); u.bigDataPopulate($scope.polfees_grid, compFeedata); var linq = Enumerable.From(compFeedata); var result = linq.GroupBy(function (x) { return x.POL_FEE_CODE; }) .Select(function (x) { return { CODE: x.Key(), DESCRIPTION: x.source[0]["POL_FEE_NAME"], FC_AMOUNT: x.Sum(function (y) { return parseFloat(parseFloat(y.POL_FEE_FC_AMOUNT || 0)); }).toFixed(2), BC_AMOUNT: x.Sum(function (y) { return parseFloat(y.POL_FEE_BC_AMOUNT || 0); }).toFixed(2), TYPE: "F" }; }).ToArray(); for (var i in result) $scope.PremSummary_grid.addRowData(result[i].ID, result[i]); var summaryData = u.get_grid_data($scope.PremSummary_grid), summaryDataLing = Enumerable.From(summaryData); //var netCustomerFc = (summaryDataLing.Sum(function (x) { return parseFloat(x.FC_AMOUNT); })).toFixed(2), // netCustomerBc = (summaryDataLing.Sum(function (x) { return parseFloat(x.BC_AMOUNT); })).toFixed(2); var netCustomerFc = parseFloat(premData[0] || 0) + compFeedata.Sum(x => parseFloat(x.POL_FEE_FC_AMOUNT || 0)) + parseFloat(vatFc), netCustomerBc = parseFloat(premData[1] || 0) + compFeedata.Sum(x => parseFloat(x.POL_FEE_BC_AMOUNT || 0)) + parseFloat(vatBc); // var currency = $("#POLH_CURRENCY").val(); var premium = " " + currency + " " + netCustomerFc; $("#netCustomerBc").text(netCustomerBc); $("#netCustomerFc").text(premium); $("#POLH_POL_PREM_FC").val(netCustomerFc); $("#POLH_POL_PREM_BC").val(netCustomerBc); $("#POLH_NET_PREM_FC").val( summaryDataLing.Where(function (x) { return x.TYPE == "P"; }).Sum(function (x) { return parseFloat(x.FC_AMOUNT) }) + summaryDataLing.Where(function (x) { return x.TYPE == "D"; }).Sum(function (x) { return parseFloat(x.FC_AMOUNT) }) + summaryDataLing.Where(function (x) { return x.TYPE == "L"; }).Sum(function (x) { return parseFloat(x.FC_AMOUNT) })); $("#POLH_NET_PREM_BC").val(summaryDataLing.Where(function (x) { return x.TYPE === "P"; }).Sum(function (x) { return parseFloat(x.BC_AMOUNT || 0) }) + summaryDataLing.Where(function (x) { return x.TYPE == "D"; }).Sum(function (x) { return parseFloat(x.BC_AMOUNT || 0) }) + summaryDataLing.Where(function (x) { return x.TYPE == "L"; }).Sum(function (x) { return parseFloat(x.BC_AMOUNT || 0) })); //x.BC_AMOUNT $("#POLH_POL_LOAD_FC").val(summaryDataLing.Where(function (x) { return x.TYPE == "L" }).Sum(function (x) { return parseFloat(x.FC_AMOUNT || 0); })); $("#POLH_POL_LOAD_BC").val(summaryDataLing.Where(function (x) { return x.TYPE == "L" }).Sum(function (x) { return parseFloat(x.BC_AMOUNT || 0) })); $("#POLH_POL_DISC_FC").val(summaryDataLing.Where(function (x) { return x.TYPE == "D" }).Sum(function (x) { return parseFloat(x.FC_AMOUNT || 0); })); $("#POLH_POL_DISC_BC").val(summaryDataLing.Where(function (x) { return x.TYPE == "D" }).Sum(function (x) { return parseFloat(x.BC_AMOUNT || 0); })); $("#POLH_FEE_FC").val(summaryDataLing.Where(function (x) { return x.TYPE == "F" }).Sum(function (x) { return parseFloat(x.FC_AMOUNT || 0); })); $("#POLH_FEE_BC").val(summaryDataLing.Where(function (x) { return x.TYPE == "F" }).Sum(function (x) { return parseFloat(x.BC_AMOUNT || 0); })); $("#POLH_POL_SI_FC").val(totalSumInsuredFc); $("#POLH_POL_SI_BC").val(totalSumInsuredBc); $("#POLH_VAT_AMT_FC").val(vatFc); $("#POLH_VAT_AMT_BC").val(vatBc); var siData = { CODE: "SI", DESCRIPTION: "Sum Insured", FC_AMOUNT: totalSumInsuredFc, BC_AMOUNT: totalSumInsuredBc, TYPE: "" }; $scope.PremSummary_grid.addRowData(siData.ID, siData); var vatData = { CODE: "VAT", DESCRIPTION: "Value Added Tax", FC_AMOUNT: vatFc || 0, BC_AMOUNT: vatBc || 0, TYPE: "P" }; $scope.PremSummary_grid.addRowData(vatData.ID, vatData); switch ($("#POLH_INS_SOURCE").val()) { case "COL": { const coinsLeaderData = u.get_grid_data(u.getGlobal("udwCoInsLdrGrid")).FirstOrDefault(); $("POLH_COINS_SI_FC").val(parseFloat(coinsLeaderData.CIL_SHARE_SI_FC || 0)); $("POLH_COINS_SI_BC").val(parseFloat(coinsLeaderData.CIL_SHARE_SI_BC || 0)); $("#POLH_COINS_PREM_FC").val(parseFloat(coinsLeaderData.CIL_SHARE_PREM_FC || 0)); $("#POLH_COINS_PREM_BC").val(parseFloat(coinsLeaderData.CIL_SHARE_PREM_BC || 0)); $("#POLH_COINS_COM_FC").val(0); $("#POLH_COINS_COM_BC").val(0); } break; case "FIN": case "COM": { let coInsData = u.get_grid_data(u.getGlobal("udwFacInwGrid")).FirstOrDefault(); if (coInsData != null) { $("#POLH_COINS_SI_FC").val(parseFloat($("#POLH_POL_SI_FC").val() || 0)); $("#POLH_COINS_SI_BC").val(parseFloat($("#POLH_POL_SI_BC").val() || 0)); $("#POLH_COINS_PREM_FC").val(parseFloat($("#POLH_POL_PREM_FC").val() || 0) - parseFloat($("#POLH_FEE_FC").val() || 0)); $("#POLH_COINS_PREM_BC").val(parseFloat($("#POLH_POL_PREM_BC").val() || 0) - parseFloat($("#POLH_FEE_BC").val() || 0)); $("#POLH_COINS_COM_FC").val(parseFloat(coInsData.FINW_COMM_FC || 0)); $("#POLH_COINS_COM_BC").val(parseFloat(coInsData.FINW_COMM_BC || 0)); } } break; default: { $("#POLH_COINS_SI_FC").val(0); $("#POLH_COINS_SI_BC").val(0); $("#POLH_COINS_PREM_FC").val(0); $("#POLH_COINS_PREM_BC").val(0); $("#POLH_COINS_COM_FC").val(0); $("#POLH_COINS_COM_BC").val(0); } break; } u.setGlobal("policyChanges", true); }; $("#premSum").click($scope.premiumSummarizer); $scope.PremiumCalculator = function () { //Declare variables var riskPrem = 0; var feesPrem = 0; var riskBasicPrem = $("#POLH_NET_PREM_FC").val(); // var coverCode; var coverPremium = 0; var grossPremFc = 0; var grossPremBc = 0; var riskPremFc = 0; var riskPremBc = 0; var currRate = parseFloat($("#POLH_CURRENCY_RATE").val() || 0); //Risk Grid // var RisksGrid = $scope.homeowners_grid; //Cover Grid //var covgrid = $scope.cover_grid; //var rowIds = covgrid.jqGrid("getDataIDs"); //var riskRowIds = RisksGrid.jqGrid("getDataIDs"); //var riskRow = u.getSelRow(RisksGrid); //var riskId = RisksGrid.jqGrid("getCell", riskRow, "HOP_SYS_ID"); //// iterate through the rows and check if it exists //for (var i = 0, len = rowIds.length; i < len; i++) { // var currRow = rowIds[i]; // //get the risk sys ID from the covers grid // var getcovRiskId = covgrid.jqGrid("getCell", currRow, "RCOV_RISK_SYS_ID"); // //get Cover type of the cover // var coverType = covgrid.jqGrid("getCell", currRow, "RCOV_TYPE"); // if (getcovRiskId === riskId) { // coverCode = covgrid.jqGrid("getCell", currRow, "RCOV_CODE"); // coverPremium = parseFloat(covgrid.jqGrid("getCell", currRow, "RCOV_NET_PREM_FC")); // } //} //Discount Loading Calculation // totalriskBasicPrem += riskBasicPrem; u.get_grid_data($scope.homeloc_grid).ForEach(home => { if (home.HOL_STATUS !== "D") { riskPremFc += parseFloat(home.HOL_RISK_PREM_FC || 0); riskPremBc += parseFloat(home.HOL_RISK_PREM_BC || 0); grossPremFc += parseFloat(home.HOL_TOT_PREM_FC || 0); grossPremBc += parseFloat(home.HOL_TOT_PREM_BC || 0); } }); // grossPremFc += riskBasicPrem; // grossPremBc = (grossPremFc * currRate); var prems = [riskPremFc, riskPremBc, grossPremFc, grossPremBc]; // console.log(prems); return prems; }; // $scope.individualRiskPremiumCalculator = function () { //Declare variables var riskPrem = 0; var feesPrem = 0; var riskBasicPrem = 0; // var coverCode; var coverPremium = 0; var grossPremFc = 0; var grossPremBc = 0; var totalRiskPrem = 0; var totalriskBasicPrem = 0; var currRate = parseFloat($("#POLH_CURRENCY_RATE").val() || 0); //Risk Grid var RisksGrid = $scope.homeowners_grid; //Cover Grid var covgrid = $scope.cover_grid; var rowIds = covgrid.jqGrid("getDataIDs"); var riskRowIds = RisksGrid.jqGrid("getDataIDs"); var riskRow = u.getSelRow(RisksGrid); var riskId = RisksGrid.jqGrid("getCell", riskRow, "HOP_SYS_ID"); // iterate through the rows and check if it exists for (var i = 0, len = rowIds.length; i < len; i++) { var currRow = rowIds[i]; //get the risk sys ID from the covers grid var getcovRiskId = covgrid.jqGrid("getCell", currRow, "RCOV_RISK_SYS_ID"); //get Cover type of the cover var coverType = covgrid.jqGrid("getCell", currRow, "RCOV_TYPE"); if (getcovRiskId === riskId) { coverCode = covgrid.jqGrid("getCell", currRow, "RCOV_CODE"); coverPremium = parseFloat(covgrid.jqGrid("getCell", currRow, "RCOV_NET_PREM_FC") || 0); } } grossPremFc += coverPremium; grossPremBc = (grossPremFc * currRate); var prems = [grossPremFc, grossPremBc, riskBasicPrem, riskPrem]; console.log(prems); return prems; }; // Cover level SI and Premium Calculations: // Section Details Grid **** $scope.secrisks_grid = u.default_grid("#gridSecRisk", "#gridSecRiskPager", "Section Risk", ["ID", "Code", "Name"], [ { name: "HON_SYS_ID", hidden: true, index: "HON_SYS_ID", width: 150 }, { name: "HON_SEC_CODE", index: "HON_SEC_CODE", width: 150 }, { name: "HON_SEC_NAME", index: "HON_SEC_NAME", width: 150 }, ], //Retrive Grid data into form input fields on row click.. function (sel_id) { var grid = $scope.secrisks_grid; var sel_id = grid.jqGrid("getGridParam", "selrow"); $("form input[name='DL_CODE']").data("update", true); u.fill_form({ HOP_SEC_CODE: grid.jqGrid("getCell", sel_id, "HON_SEC_CODE"), HOP_SEC_NAME: grid.jqGrid("getCell", sel_id, "HON_SEC_NAME"), HON_SYS_ID: grid.jqGrid("getCell", sel_id, "HON_SYS_ID"), }, "#homeForm"); }, //Retrive Grid data into form input fields on row double click.... XXX function (sel_id) { var grid = $scope.secrisks_grid; var sel_id = grid.jqGrid("getGridParam", "selrow"); $("form input[name='DL_CODE']").data("update", true); u.fill_form({ HOP_SEC_CODE: grid.jqGrid("getCell", sel_id, "HON_SEC_CODE"), HOP_SEC_NAME: grid.jqGrid("getCell", sel_id, "HON_SEC_NAME"), HON_SYS_ID: grid.jqGrid("getCell", sel_id, "HON_SYS_ID"), }, "#homeForm"); // hide modal on double click $("#secRiskLovModal").modal("hide"); }), /*-------------------------------------------------- * Home Owners Risk modal dialog *------------------------------------------------*/ // $("#btn_open_HomeOwners_risk").click(async function () { //if (u.form_validation("#polheaderForm")) { // //obtain the treaty setup for the selected product // if (!$scope.treatyData) { // s.getProductTreaty($("#POLH_SUB_CLASS_CODE").val(), // $("#POLH_POL_UW_YEAR").val(), // $("#POLH_CURRENCY").val(), // function (response) { // if (response.state && response.data) { // $scope.treatyData = response.data; // u.growl_success("Treaty successfully fetched for the selected product"); // } else { // u.growl_error("Treaty not setup for the current underwriting year."); // } // }, // function () { // u.growl_error("Server Error: -Error fetching treaty data, please contact system admin."); // }); // } else { // $("#HomeOwnersModal").modal(); // $("#HOP_CURRENCY").val($("#POLH_CURRENCY").val()); // $("#HOP_CURRENCY_RATE").val($("#POLH_CURRENCY_RATE").val()); // $("#HOP_PERIOD_DAYS").val($("#POLH_POL_DAYS").val()); // $("#HOP_UW_YEAR").val($("#POLH_POL_UW_YEAR").val()); // $("#HOP_START_DATE").val($("#POLH_POL_START_DATE").val()); // $("#HOP_END_DATE").val($("#POLH_POL_END_DATE").val()); // } //} //else { // u.growl_warning("Please fill the Policy Header form and try again"); //} //if (u.form_validation("#polheaderForm")) { // $("#HomeOwnersModal").modal(); // $("#HOP_CURRENCY").val($("#POLH_CURRENCY").val()); // $("#HOP_CURRENCY_RATE").val($("#POLH_CURRENCY_RATE").val()); //} //else { // u.growl_warning("Please fill the Policy Header form and try again"); //}; //$("#HomeOwnersModal").modal(); if (!u.getSelRow($scope.homeloc_grid)) return u.growl_info("Select a location"); await u.lovDropDownAsync("#HOP_EXCESS_APP", "get_lov_PExcessAsync", { "SubClass": $("#POLH_SUB_CLASS_CODE").val() || null }); // DEFAULT CLAIM AMOUNT $("#HOP_EXCESS_APP").val("CA"); $("#HOP_EXCESS_APP").trigger("change"); $("#HomeOwnersModal").modal(); $("#HOP_CURRENCY").val($("#POLH_CURRENCY").val()); $("#HOP_CURRENCY_RATE").val($("#POLH_CURRENCY_RATE").val()); $("#HOP_PERIOD_DAYS").val($("#POLH_POL_DAYS").val()); $("#HOP_UW_YEAR").val($("#POLH_POL_UW_YEAR").val()); $("#HOP_START_DATE").val($("#POLH_POL_START_DATE").val()); $("#HOP_END_DATE").val($("#POLH_POL_END_DATE").val()); if ($("#POLH_SUB_CLASS_CODE").val() === "3007") { $("#homeOwnerPlusDiv").removeClass("m-hide"); } else { $("#homeOwnerPlusDiv").addClass("m-hide"); } }); $("#btn_Reset_Risk").on("click", function () { u.modal_confirmation("Are you sure you want to clear all data from the form?", function (e) { u.form_reset("#homeForm"); u.hideWarning(); u.growl_success("Form successfully cleared"); }); }); /*-------------------------------------------------- * Adding Home Owners Risk Details *------------------------------------------------*/ // $("#btn_add_HomeOwners_details").on("click", async function () { if (u.form_validation("#homeForm")) { // check if section is building/content // if its not one of the above, check if either building/content already exists in the grid // before allowing to continue const oldSections = u.get_grid_data($scope.homeowners_grid); const locations = u.get_grid_data($scope.homeloc_grid); //if ($scope.cumpolsoryYN !== "Y") { // //if (!oldSections.Any(sec => sec.HOP_COMPULSORY_YN === "Y")) // // return u.growl_info("You must add a Building/Content risk before you can add this risk"); // const locations = u.get_grid_data($scope.homeloc_grid); // //if (!locations.Any(loc => !u.parseJson(loc.INS_UDW_HOME_OWNERS).Any(sec => sec.HOP_COMPULSORY_YN === "Y"))) { // // return u.growl_info("You must add a Building/Content risk before you can add this risk"); // //} //} u.modalConfirmationAsync("Are you sure you want to add the Home Owners Details?", async function () { var seq = await s.getSequenceAsync("PRODUCT_RISK_SEQ"); if (!u.get_grid_data($scope.homeowners_grid).Any(v => v.HOP_SYS_ID === seq)) { $("#HOP_SYS_ID").val(seq); var rowIds = $scope.homeowners_grid.jqGrid("getDataIDs"); /*---------------------------------------------- * declare array to contain the codes to verify *--------------------------------------------*/ // var Code = []; var cellValue = ""; /*------------------------------------------------------------ * iterate through the rows and check duplicate each of them *----------------------------------------------------------*/ // for (var i = 0, len = rowIds.length; i < len; i++) { var currRow = rowIds[i]; /*------------------------------------------------ * get value of the cell or column in an array *----------------------------------------------*/ // cellValue = $scope.homeowners_grid.jqGrid("getCell", currRow, "HOP_SEC_CODE"); Code.push(cellValue); } /*---------------------------------------- * add if code is not found in the Grid *--------------------------------------*/ // // if ($.inArray($("#HOP_SEC_CODE").val(), Code) < 0) { if (true) { var FormData = u.parse_form("#homeForm"); FormData.HOP_POLH_END_NO = $("#POLH_END_NO").val(); FormData.HOP_STATUS = "U"; FormData.HOP_CRTE_BY = u.getUserCode(); //FormData.HOP_RIPML = ($("#HOP_RIPML").is(":checked")) ? "Y" : "N"; FormData.HOP_CRTE_DATE = u.get_date(); FormData.HOP_COMPULSORY_YN = $scope.cumpolsoryYN; FormData.HOP_LOC_SYS_ID = parseInt($("#HOL_SYS_ID").val()); FormData.INS_UWD_RISK_COVERS = JSON.stringify($scope.sectionCovers); //if (!oldSections.Any(x => u.parseJson(x.INS_UDW_HOME_OWNERS_FEES).Any())) { //if (!locations.Any(x => u.parseJson(x.INS_UDW_HOME_OWNERS).Any(y => u.parseJson(y.INS_UDW_HOME_OWNERS_FEES)))) { FormData.INS_UDW_HOME_OWNERS_FEES = JSON.stringify(await getRiskComPulsoryFess()); //} $scope.homeowners_grid.addRowData(FormData.ID, FormData); //Add defaulf covers afer adding the Risk //getDefaultRiskCovers(); u.hide_confirm(); u.growl_success("Home owners risk successfully added to grid"); u.form_reset("#homeForm"); /* obtain parameter for our request */ //var productRiskData = { // PRD_CODE: $("#POLH_SUB_CLASS_CODE").val(), // //PRD_CV_DFT: 'Y', // CUR_RATE: $("#POLH_CURRENCY_RATE").val(), // RCOV_CODE: /*$("#RCOV_CODE").val()*/ 3001, //}; // //var grid = $scope.cover_grid; //var rowIds = grid.jqGrid('getDataIDs'); ////declare array to contain the codes to varify //var CodeArray = []; //// iterate through the rows in the grid and add Covers to Array //for (var i = 0, len = rowIds.length; i < len; i++) { // var currRow = rowIds[i]; // //get value of the cell or column in an array // var coverCode = grid.jqGrid('getCell', currRow, "RCOV_CODE"); // var RiskCode = grid.jqGrid('getCell', currRow, "RCOV_RISK_SYS_ID"); // var riskCov = coverCode + RiskCode; // // alert(riskCov); // CodeArray.push(riskCov); //} ////send parameters and get Default covers from the database //s.getAddRiskCovers(productRiskData, function (result) { // if (result && result.length && result.length > 0) { // for (var i in result) { // result[i]["RCOV_NAME"] = result[i]["MS_UDW_COVERS"]["CVR_NAME"]; // result[i]["RCOV_TYPE"] = result[i]["MS_UDW_COVERS"]["CVR_TYPE"]; // result[i]["RCOV_RI_YN"] = result[i]["MS_UDW_COVERS"]["CVR_RI_HOPLICABLE"]; // result[i]["CVR_USER_PREMIUM"] = result[i]["MS_UDW_COVERS"]["CVR_USER_PREMIUM"]; // result[i]["RCOV_PREM_REFUND"] = result[i]["MS_UDW_COVERS"]["RCOV_PREM_REFUND"]; // result[i]["RCOV_RATE_CHANGE"] = result[i]["MS_UDW_COVERS"]["CVR_RATE_CHANGE"]; // result[i]["RCOV_SI_CHANGE"] = result[i]["MS_UDW_COVERS"]["CVR_SI_CHANGE"]; // result[i]["RCOV_COVER_LEVEL"] = result[i]["MS_UDW_COVERS"]["RCOV_COVER_LEVEL"]; // result[i]["RCOV_RISK_SYS_ID"] = $("#HOP_SYS_ID").val(); // result[i]["RCOV_RISK_NO"] = $("#HOP_RISK_ID").val(); // result[i]["RCOV_SI_FC"] = $("#RCOV_SI_FC").val(); // //result[i]["RCOV_SI_FC"] = $("#RCOV_SI_FC").val() * $("#RCOV_RATE").val(); // //result[i]["RCOV_RATE"] = // var deftCoverCode = result[i].RCOV_CODE; // var newRiskCode = $("#HOP_SYS_ID").val(); // var verifyRiskCover = deftCoverCode + newRiskCode; //alert(verifyRiskCover); // //add if Cover is not found in the Grid// // if ($.inArray(verifyRiskCover, CodeArray) < 0) { // //fill in default covers if not in the grid // $scope.cover_grid.addRowData(result[i].ID, result[i]); // u.growl_success("Risk Cover successfully added"); // u.hide_confirm(); // } // else { // u.growl_warning("Cover exists for this Risk, you cannot add same Cover " + deftCoverCode); // u.hide_confirm(); // } // } // // // } // else { // u.hide_confirm(); // u.growl_error("Error occured, please check and try again"); // } //}); } else { u.hide_confirm(); u.growl_warning("HOP with code " + cellValue + " Already exists"); } } else { u.growl_warning("Duplicate risk id"); } }); } else { u.growl_error("Please fill out the fields that are marked red"); } }); /*------------------------------------------------------ * Remove record or Mark for deletion from HomeOwners Risk *-------------------------------------------------------*/ // $("#btn_remove_HomeOwners_risk").on("click", function () { if (u.grid_empty($scope.homeowners_grid)) return u.modalAlert("Grid is empty!!!"); var grid = $scope.homeowners_grid; var row_id = u.getSelRow(grid); if (!row_id) return u.growl_info("Select a risk to remove"); var recordStatus = grid.jqGrid("getCell", row_id, "HOP_STATUS"); //var covGrid = $scope.cover_grid; //var covRowIds = covGrid.jqGrid("getDataIDs"); //var message = ""; /*--------------------------------- * Display modal message *------------------------------*/ // u.modal_confirmation("Are you sure you want to remove the Record?", function (e) { /*-------------------------------------------- * Remove newly added record before saving *------------------------------------------*/ // if (recordStatus == "U") { grid.jqGrid("delRowData", row_id); u.hide_confirm(); u.growl_success("Selected row successfully deleted"); u.form_reset("#homeForm"); } /*---------------------------------------- * Mark a record for deletion on saving *--------------------------------------*/ // if (recordStatus == "A") { //u.setGridColumn(grid, // { // "INS_UWD_RISK_COVERS": function (val) { // var covers = u.parseJson(val); // covers.ForEach(c => { // c.RCOV_STATUS = "D"; // }); // return JSON.stringify(covers); // } // }); grid.jqGrid("setCell", row_id, "HOP_STATUS", "D"); $("#" + row_id, "#gridHomeOwnersRisks").css({ color: "red" }); u.hide_confirm(); u.growl_success("Selected row successfully marked for deletion, please click on the save button to save changes"); u.form_reset("#homeForm"); } else if (recordStatus == "D") { //u.setGridColumn(grid, // { // "INS_UWD_RISK_COVERS": function (val) { // var covers = u.parseJson(val); // covers.ForEach(c => { // c.RCOV_STATUS = "A"; // }); // return JSON.stringify(covers); // } // }); $("#" + row_id, "#gridHomeOwnersRisks").css({ color: "black" }); grid.jqGrid("setCell", row_id, "HOP_STATUS", "A"); u.hide_confirm(); u.growl_success("Data successfully restored"); u.form_reset("#homeForm"); } //$scope.RecalculatePremium(); }); }); /*---------------------------------------------- * Edit/Update Function Home Owners Risk Details *----------------------------------------------*/ // $("#btn_update_HomeOwners_risk").on("click", function () { if (u.grid_empty($scope.homeowners_grid)) return u.growl_info("Home Owners grid is empty"); if (u.form_validation("#homeForm")) { u.modal_confirmation("Are you sure you want to update the selected Home Owners?", function () { var grid = $scope.homeowners_grid; var rowId = grid.jqGrid("getGridParam", "selrow"); var code = parseInt(grid.jqGrid("getCell", rowId, "HOP_SYS_ID")); if (code === parseInt($("#HOP_SYS_ID").val())) { var data = u.parse_form("#homeForm"); for (var i in data) { grid.jqGrid("setCell", rowId, i, data[i]); } //$scope.premiumSummarizer(); u.hide_confirm(); u.growl_success("Home Owners Details updated"); u.form_reset("#homeForm"); } else { u.hide_confirm(); u.growl_warning("Please select the correct row to edit"); } }); } }); /*----------------------------------- * exporting of the grid to excel *----------------------------------*/ $("#export-HomeOwners-btn").click(function () { /* * function to export grid data into excel */ u.excel_export($scope.homeowners_grid, ["ID"], "HomeOwners_List_Excel"); }); $("#btn_HomeOwners_OnClose").click(function () { var selectedLocationId = u.getSelRow($scope.homeloc_grid); var selectedLocation = u.getRow(selectedLocationId, $scope.homeloc_grid); var locations = u.get_grid_data($scope.homeloc_grid); var risks = u.get_grid_data($scope.homeowners_grid); locations.ForEach(loc => { loc.HOL_VALUE_ADDED_TAX_PERC = parseFloat($("#POLH_VAT_PERC").val() || 0) || 0; loc.HOL_VALUE_ADDED_TAX_YN = $("#POLH_VAT_YN").val() || "N"; if (parseInt(loc.HOL_SYS_ID) === parseInt(selectedLocation.HOL_SYS_ID)) { if (!risks.Any()) { loc.INS_UDW_HOME_OWNERS = []; } else { loc.INS_UDW_HOME_OWNERS = []; risks.ForEach(r => { if (parseInt(loc.HOL_SYS_ID) === parseInt(r.HOP_LOC_SYS_ID)) { loc.INS_UDW_HOME_OWNERS = u.parseJson(loc.INS_UDW_HOME_OWNERS); loc.INS_UDW_HOME_OWNERS = loc.INS_UDW_HOME_OWNERS .Where(x => parseInt(x.HOP_SYS_ID) !== parseInt(r.HOP_SYS_ID)); loc.INS_UDW_HOME_OWNERS.push(r); } }); } } }); u.clear_grid_data($scope.homeloc_grid); u.grid_populate($scope.homeloc_grid, "", locations); $scope.locationSummarizer(); $scope.PolicyCalculations(); $("#HomeOwnersModal").modal("hide"); u.clear_grid_data($scope.homeowners_grid); u.form_reset("#homeForm"); }); //$("#btnHownrsSec").on("click", function () { //var grid = $("#gridHomeOwnersRisks"); //var sel_id = grid.jqGrid("getGridParam", "selrow"); //var RiskID = grid.jqGrid("getCell", sel_id, "HOP_SYS_ID"); //if (RiskID == $("#HODT_HOP_SYS_ID").val()) { // //Hide covers not related to selected risk // $scope.hideShowHomeowners(); // $("#secRiskLovModal").modal(); //} //else { // u.growl_warning("No Row selected"); //} // $("#secRiskLovModal").modal(); // $("#SecDetailsModal").modal(); //}); $("#").on("click", function () { getsectionRiskLov(); }); /*-------------------------------------------------- * Adding Section Risk Details *------------------------------------------------*/ // $("#btn_add_section_details").on("click", function () { if (u.form_validation("#secdetailsForm")) { if ($("input[name='HODT_ITEM_NAME']").val() === "") return u.modalAlert("Please Enter Item Name"); u.modal_confirmation("Are you sure you want to add the Sections Details?", function () { var rowIds = $scope.secdetails_grid.jqGrid("getDataIDs"); /*---------------------------------------------- * declare array to contain the codes to verify *--------------------------------------------*/ // var Code = []; /*------------------------------------------------------------ * iterate through the rows and check duplicate each of them *----------------------------------------------------------*/ // for (var i = 0, len = rowIds.length; i < len; i++) { var currRow = rowIds[i]; /*------------------------------------------------ * get value of the cell or column in an array *----------------------------------------------*/ // var cellValue = $scope.secdetails_grid.jqGrid("getCell", currRow, "HODT_ITEM_NAME"); Code.push(cellValue); } /*---------------------------------------- * add if code is not found in the Grid *--------------------------------------*/ // if ($.inArray($("#HODT_ITEM_NAME").val(), Code) < 0) { var FormData = u.parse_form("#secdetailsForm"); FormData.HODT_STATUS = "U"; FormData.HODT_CRTE_BY = u.getUserCode(); FormData.HODT_CRTE_DATE = u.get_date(); $scope.secdetails_grid.addRowData(FormData.HODT_ITEM_NAME, FormData); u.hide_confirm(); u.growl_success("Section Details successfully added to grid"); u.form_reset("#secdetailsForm"); } else { u.hide_confirm(); u.growl_warning("Section Details with code " + cellValue + " Already exists"); } }); } else { u.growl_error("Please fill out the fields that are marked red"); } }); /*---------------------------------------------------- * Remove record or Mark for deletion from Section Details *---------------------------------------------------*/ // $("#btn_remove_section_details").on("click", function () { if (u.grid_empty($scope.secdetails_grid)) return u.growl_info("The grid is empty"); var grid = $scope.secdetails_grid; var row_id = grid.jqGrid("getGridParam", "selrow"); var recordStatus = grid.jqGrid("getCell", row_id, "HODT_STATUS"); var Code = grid.jqGrid("getCell", row_id, "HODT_ITEM_NAME"); var message = ""; /*--------------------------------- * Display modal message *------------------------------*/ // u.modal_confirmation("Are you sure you want to remove the Record?", function (e) { /*-------------------------------------------- * Remove newly added record before saving *------------------------------------------*/ // if (recordStatus == "U") { grid.jqGrid("delRowData", row_id); u.hide_confirm(); u.growl_hide("Selected row successfully deleted"); u.form_reset("#secdetailsForm"); } /*---------------------------------------- * Mark a record for deletion on saving *--------------------------------------*/ // if (recordStatus == "A") { grid.jqGrid("setCell", row_id, "HODT_STATUS", "D"); $("#" + row_id, "#gridSecDetails").css({ color: "red" }); u.hide_confirm(); u.growl_hide("Selected row successfully marked for deletion, please click on the save button to save changes"); u.form_reset("#secdetailsForm"); } else if (recordStatus == "D") { $("#" + row_id, "#gridSecDetails").css({ color: "black" }); grid.jqGrid("setCell", row_id, "HODT_STATUS", "A"); u.hide_confirm(); u.growl_hide("Data successfully restored"); u.form_reset("#secdetailsForm"); } }); }); /*------------------------------------ * Edit/Update Function Section Details *------------------------------------*/ // $("#btn_update_section_details").on("click", function () { if (u.grid_empty($scope.secdetails_grid)) return u.growl_info("Section details grid is empty"); if (u.form_validation("#secdetailsForm")) { u.modal_confirmation("Are you sure you want to update the selected?", function () { var grid = $scope.secdetails_grid; var rowId = grid.jqGrid("getGridParam", "selrow"); var code = grid.jqGrid("getCell", rowId, "HODT_ITEM_NAME"); if (code === $("#HODT_ITEM_NAME").val()) { var data = u.parse_form("#secdetailsForm"); for (var i in data) { grid.jqGrid("setCell", rowId, i, data[i]); } u.hide_confirm(); u.growl_success("Section Details updated"); u.form_reset("#secdetailsForm"); } else { u.hide_confirm(); u.growl_warning("Please select the correct row to edit"); } }); } }); $("#btn_open_section_details").click(function () { // var grid = $scope.homeowners_grid; //var sel_id = grid.jqGrid("getGridParam", "selrow"); //var RiskID = grid.jqGrid("getCell", sel_id, "HOP_SYS_ID"); if (u.getSelRow($scope.homeowners_grid)) { //Hide covers not related to selected risk //$scope.hideShowCovers(); $("#SecDetailsModal").modal(); } else { u.growl_warning("Please select a risk"); } }); $("#btn_secdetails_OnClose").click(function () { if (u.grid_empty($scope.secdetails_grid)) { u.modal_confirmation("The Grid is empty, do you want to close form?", function (e) { $("#SecDetailsModal").modal("hide"); u.hide_confirm(); u.form_reset("#secdetailsForm"); }); } else { var secDetails = JSON.stringify(u.get_grid_data($scope.secdetails_grid)); $scope.homeowners_grid.jqGrid("setCell", u.getSelRow($scope.homeowners_grid), "INS_UDW_HOME_OWNERS_DETAILS", secDetails); $("#SecDetailsModal").modal("hide"); u.clear_grid_data($scope.secdetails_grid); u.form_reset("#secdetailsForm"); } }); $scope.policyCommissionSummarizer = u.getGlobal("policyCommissionSummarizer"); $scope.financialDiff = function (newPolicy, oldPolicy) { $scope.endorsementData = u.get_grid_data($scope.endorsementGrid).FirstOrDefault(e => e.END_TXN_STATE == "O") || $scope.endorsementData; if (!$scope.endorsementData) { return u.modalInfo("Could not find endorsement information, please make sure the policy is in the endorsed state"); } var ed = $scope.endorsementData, n = 0, o = 0; if (!ed) { return false; } //we need to obtain the history information of the current policy $scope.oldPolicy = u.getGlobal("oldPolicy") || $scope.oldPolicy || oldPolicy; //obtain premium differences //ed.END_PREM_DIFF_FC = ed.END_FLAG == "FC" // ? -parseFloat($scope.oldPolicy["POLH_POL_PREM_FC"] || 0) // : parseFloat(newPolicy["POLH_POL_PREM_FC"] || 0) // - parseFloat($scope.oldPolicy["POLH_POL_PREM_FC"] || 0) // + parseFloat(ed.END_FEE_FC || 0); //ed.END_PREM_DIFF_BC = ed.END_FLAG == "FC" // ? -parseFloat($scope.oldPolicy["POLH_POL_PREM_BC"] || 0) // : parseFloat(newPolicy["POLH_POL_PREM_BC"] || 0) // - parseFloat($scope.oldPolicy["POLH_POL_PREM_BC"] || 0) // + parseFloat(ed.END_FEE || 0); //var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); //var days = $("#POLH_POL_DAYS").val(); //var proRataValue = parseFloat(proRata / days); //ed.END_PREM_DIFF_FC = (parseFloat(ed.END_PREM_DIFF_FC * proRataValue)).toFixed(2); //ed.END_PREM_DIFF_BC = (parseFloat(ed.END_PREM_DIFF_BC * proRataValue)).toFixed(2); ////obtain commission differences //ed.END_COMMSSN_DIFF_FC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_POL_COMM_FC"] || 0) : parseFloat(newPolicy["POLH_POL_COMM_FC"] || 0) - parseFloat($scope.oldPolicy["POLH_POL_COMM_FC"] || 0); //ed.END_COMMSSN_DIFF_BC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_POL_COMM_BC"] || 0) : parseFloat(newPolicy["POLH_POL_COMM_BC"] || 0) - parseFloat($scope.oldPolicy["POLH_POL_COMM_BC"] || 0); ////obtain fee differences //ed.END_FEE_DIFF_FC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_FEE_FC"] || 0) : parseFloat(newPolicy["POLH_FEE_FC"] || 0) - parseFloat($scope.oldPolicy["POLH_FEE_FC"] || 0); //ed.END_FEE_DIFF_BC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_FEE_BC"] || 0) : parseFloat(newPolicy["POLH_FEE_BC"] || 0) - parseFloat($scope.oldPolicy["POLH_FEE_BC"] || 0); ////obtain discount differences //ed.END_DISC_DIFF_FC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_POL_DISC_FC"] || 0) : parseFloat(newPolicy["POLH_POL_DISC_FC"] || 0) - parseFloat($scope.oldPolicy["POLH_POL_DISC_FC"] || 0); //ed.END_DISC_DIFF_BC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_POL_DISC_BC"] || 0) : parseFloat(newPolicy["POLH_POL_DISC_BC"] || 0) - parseFloat($scope.oldPolicy["POLH_POL_DISC_BC"] || 0); ////obtain loading differences //ed.END_LOAD_DIFF_FC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_POL_LOAD_FC"] || 0) : parseFloat(newPolicy["POLH_POL_LOAD_FC"] || 0) - parseFloat($scope.oldPolicy["POLH_POL_LOAD_FC"] || 0); //ed.END_LOAD_DIFF_BC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_POL_LOAD_BC"] || 0) : parseFloat(newPolicy["POLH_POL_LOAD_BC"] || 0) - parseFloat($scope.oldPolicy["POLH_POL_LOAD_BC"] || 0); ////obtain suminsured differences //ed.END_SI_DIFF_FC = // parseFloat(newPolicy["POLH_POL_SI_FC"] || 0) - parseFloat($scope.oldPolicy["POLH_POL_SI_FC"] || 0); //ed.END_SI_DIFF_BC = // parseFloat(newPolicy["POLH_POL_SI_BC"] || 0) - parseFloat($scope.oldPolicy["POLH_POL_SI_BC"] || 0); ////obtain coins differences //ed.END_COINS_DIFF_FC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_COINS_PREM_FC"] || 0) : parseFloat(newPolicy["POLH_COINS_PREM_FC"] || 0) - parseFloat($scope.oldPolicy["POLH_COINS_PREM_FC"] || 0); //ed.END_COINS_DIFF_BC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_COINS_PREM_BC"] || 0) : parseFloat(newPolicy["POLH_COINS_PREM_BC"] || 0) - parseFloat($scope.oldPolicy["POLH_COINS_PREM_BC"] || 0); //// coins commission difference //ed.END_COINS_COMM_DIFF_FC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_COINS_COM_FC"] || 0) : parseFloat(newPolicy["POLH_COINS_COM_FC"] || 0) - parseFloat($scope.oldPolicy["POLH_COINS_COM_FC"] || 0); //ed.END_COINS_COMM_DIFF_BC = ed.END_FLAG == "FC" // ? - parseFloat($scope.oldPolicy["POLH_COINS_COM_BC"] || 0) : parseFloat(newPolicy["POLH_COINS_COM_BC"] || 0) - parseFloat($scope.oldPolicy["POLH_COINS_COM_BC"] || 0); ed = u.getGlobal("endorsementDifferencesCalculation")(newPolicy, $scope.oldPolicy, $scope.endorsementData); /*------------------------------- * CO-INSURANCE LEADER ENDORSEMENT *------------------------------*/ u.getGlobal("CoInsuranceLeaderEndorsment")(newPolicy, $scope.oldPolicy, ed); /*------------------------------- * TREATY SHARE ENDORSEMENT *------------------------------*/ var newPolicyEd = JSON.parse(JSON.stringify(newPolicy)) newPolicyEd.INS_RI_TTY_HEAD = newPolicy.INS_RI_TTY_HEAD.Where(c => c.TTH_ADJ_YN !== "Y").ToList() || []; var oldPolicyEd = JSON.parse(JSON.stringify($scope.oldPolicy)) oldPolicyEd.INS_RI_TTY_HEAD = $scope.oldPolicy.INS_RI_TTY_HEAD.Where(c => c.TTH_ADJ_YN !== "Y").ToList() || []; u.getGlobal("TreatyShareEndorsement")(newPolicyEd, oldPolicyEd, ed); //update endorsement grid u.setGridColumn($scope.endorsementGrid, { "END_PREM_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_PREM_DIFF_FC || 0; }, "END_PREM_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_PREM_DIFF_BC || 0; }, "END_COMMSSN_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_COMMSSN_DIFF_FC || 0; }, "END_COMMSSN_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_COMMSSN_DIFF_BC || 0; }, "END_FEE_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_FEE_DIFF_FC || 0; }, "END_FEE_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_FEE_DIFF_BC || 0; }, "END_DISC_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_DISC_DIFF_FC || 0; }, "END_DISC_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_DISC_DIFF_BC || 0; }, "END_LOAD_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_LOAD_DIFF_FC || 0; }, "END_LOAD_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_LOAD_DIFF_BC || 0; }, "END_SI_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_SI_DIFF_FC || 0; }, "END_SI_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_SI_DIFF_BC || 0; }, "END_COINS_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_COINS_DIFF_FC || 0; }, "END_COINS_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_COINS_DIFF_BC || 0; }, "END_COINS_COMM_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_COINS_COMM_DIFF_FC || 0; }, "END_COINS_COMM_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_COINS_COMM_DIFF_BC || 0; }, "END_VAT_DIFF_FC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_VAT_DIFF_FC || 0; }, "END_VAT_DIFF_BC": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.END_VAT_DIFF_BC || 0; }, "MS_COL_ENDORSEMENT": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.MS_COL_ENDORSEMENT || []; }, "MS_RI_SHARE_ENDORSEMENT": function (amnt, row) { if (row["END_TXN_STATE"] === "O") return ed.MS_RI_SHARE_ENDORSEMENT || []; } }); //show endorsement premium $("#endPremSummary").show(); var endNetTCustomerFc = parseFloat(parseFloat(ed.END_PREM_DIFF_FC)).toFixed(2); $("#endNetCustomerFc").text(`${$("#POLH_CURRENCY").val()} ${endNetTCustomerFc}`); //hide net to customer premium $("#netCustomerFc").parents("h3").hide(0); //obtain financiall differences for each risk //var newPolicyRisks = newPolicy["INS_UDW_HOME_OWNERS"]; //var oldPolicyRisks = $scope.oldPolicy["INS_UDW_HOME_OWNERS"]; var newPolicyLocations = newPolicy["INS_UDW_HOME_LOCATION"]; var oldPolicyLocations = $scope.oldPolicy["INS_UDW_HOME_LOCATION"]; ed["UDW_RISK_ENDSMNT_DTLS"] = []; //check if there are more new risks or more old risks var moreOldRisks = oldPolicyLocations.length > newPolicyLocations.length; var moreNewRisks = newPolicyLocations.length > oldPolicyLocations.length; //todo: use one loop for all if (moreNewRisks) { for (n; n < newPolicyLocations.length; n++) { for (o; o < oldPolicyLocations.length; o++) { if (newPolicyLocations[n]["HOL_SYS_ID"] == oldPolicyLocations[o]["HOL_SYS_ID"]) { ed["UDW_RISK_ENDSMNT_DTLS"].push({ RED_HOP_SYS_ID: newPolicyLocations[n]["HOL_SYS_ID"], RED_POL_SYS_ID: newPolicy["POLH_SYS_ID"], RED_END_NO: newPolicy["POLH_END_NO"], RED_SI_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_SI_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_SI_FC"] || 0), RED_SI_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_SI_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_SI_BC"] || 0), RED_PREM_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_TOT_PREM_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_TOT_PREM_FC"] || 0), RED_PREM_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_TOT_PREM_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_TOT_PREM_BC"] || 0), RED_FEE_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_COMP_FEE_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_COMP_FEE_FC"] || 0), RED_FEE_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_COMP_FEE_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_COMP_FEE_BC"] || 0), RED_LOAD_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_LOAD_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_LOAD_FC"] || 0), RED_LOAD_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_LOAD_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_LOAD_BC"] || 0), RED_DISC_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_DISC_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_DISC_FC"] || 0), RED_DISC_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_DISC_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_DISC_BC"] || 0), RED_CRTE_BY: u.getUserCode(), RED_STATUS: "U" }); break; } if (o === (oldPolicyLocations.length - 1)) {//we have reached the last risk and there is no match ed["UDW_RISK_ENDSMNT_DTLS"].push({ RED_HOP_SYS_ID: newPolicyLocations[n]["HOL_SYS_ID"], RED_POL_SYS_ID: newPolicy["POLH_SYS_ID"], RED_END_NO: newPolicy["POLH_END_NO"], RED_SI_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_SI_FC"] || 0), RED_SI_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_SI_BC"] || 0), RED_PREM_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_TOT_PREM_FC"] || 0), RED_PREM_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_TOT_PREM_BC"] || 0), RED_FEE_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_COMP_FEE_FC"] || 0), RED_FEE_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_COMP_FEE_BC"] || 0), RED_LOAD_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_LOAD_FC"] || 0), RED_LOAD_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_LOAD_BC"] || 0), RED_DISC_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_DISC_FC"] || 0), RED_DISC_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_DISC_BC"] || 0), RED_CRTE_BY: u.getUserCode(), RED_STATUS: "U" }); } } } } else if (moreOldRisks) { for (n; n < newPolicyLocations.length; n++) { for (o; o < oldPolicyLocations.length; o++) { if (newPolicyLocations[n]["HOL_SYS_ID"] == oldPolicyLocations[o]["HOL_SYS_ID"]) { ed["UDW_RISK_ENDSMNT_DTLS"].push({ RED_HOP_SYS_ID: newPolicyLocations[n]["HOL_SYS_ID"], RED_POL_SYS_ID: newPolicy["POLH_SYS_ID"], RED_END_NO: newPolicy["POLH_END_NO"], RED_SI_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_SI_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_SI_FC"] || 0), RED_SI_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_SI_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_SI_BC"] || 0), RED_PREM_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_TOT_PREM_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_TOT_PREM_FC"] || 0), RED_PREM_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_TOT_PREM_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_TOT_PREM_BC"] || 0), RED_FEE_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_COMP_FEE_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_COMP_FEE_FC"] || 0), RED_FEE_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_COMP_FEE_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_COMP_FEE_BC"] || 0), RED_LOAD_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_LOAD_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_LOAD_FC"] || 0), RED_LOAD_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_LOAD_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_LOAD_BC"] || 0), RED_DISC_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_DISC_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_DISC_FC"] || 0), RED_DISC_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_DISC_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_DISC_BC"] || 0), RED_CRTE_BY: u.getUserCode(), RED_STATUS: "U" }); break; } if (n === (newPolicyLocations.length - 1)) { //we have reached the last risk and there is no match ed["UDW_RISK_ENDSMNT_DTLS"].push({ RED_HOP_SYS_ID: oldPolicyLocations[o]["HOL_SYS_ID"], RED_POL_SYS_ID: newPolicy["POLH_SYS_ID"], RED_END_NO: newPolicy["POLH_END_NO"], RED_SI_DIFF_FC: parseFloat(oldPolicyLocations[o]["HOL_SI_FC"] || 0), RED_SI_DIFF_BC: parseFloat(oldPolicyLocations[o]["HOL_SI_BC"] || 0), RED_PREM_DIFF_FC: parseFloat(oldPolicyLocations[o]["HOL_TOT_PREM_FC"] || 0), RED_PREM_DIFF_BC: parseFloat(oldPolicyLocations[o]["HOL_TOT_PREM_BC"] || 0), RED_FEE_DIFF_FC: parseFloat(oldPolicyLocations[o]["HOL_COMP_FEE_FC"] || 0), RED_FEE_DIFF_BC: parseFloat(oldPolicyLocations[o]["HOL_COMP_FEE_BC"] || 0), RED_LOAD_DIFF_FC: parseFloat(oldPolicyLocations[o]["HOL_LOAD_FC"] || 0), RED_LOAD_DIFF_BC: parseFloat(oldPolicyLocations[o]["HOL_LOAD_BC"] || 0), RED_DISC_DIFF_FC: parseFloat(oldPolicyLocations[o]["HOL_DISC_FC"] || 0), RED_DISC_DIFF_BC: parseFloat(oldPolicyLocations[o]["HOL_DISC_BC"] || 0), RED_CRTE_BY: u.getUserCode(), RED_STATUS: "U" }); } } } } else { for (n; n < newPolicyLocations.length; n++) { for (o; o < oldPolicyLocations.length; o++) { if (newPolicyLocations[n]["HOL_SYS_ID"] == oldPolicyLocations[o]["HOL_SYS_ID"]) { ed["UDW_RISK_ENDSMNT_DTLS"].push({ RED_HOP_SYS_ID: newPolicyLocations[n]["HOL_SYS_ID"], RED_POL_SYS_ID: newPolicy["POLH_SYS_ID"], RED_END_NO: newPolicy["POLH_END_NO"], RED_SI_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_SI_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_SI_FC"] || 0), RED_SI_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_SI_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_SI_BC"] || 0), RED_PREM_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_TOT_PREM_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_TOT_PREM_FC"] || 0), RED_PREM_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_TOT_PREM_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_TOT_PREM_BC"] || 0), RED_FEE_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_COMP_FEE_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_COMP_FEE_FC"] || 0), RED_FEE_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_COMP_FEE_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_COMP_FEE_BC"] || 0), RED_LOAD_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_LOAD_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_LOAD_FC"] || 0), RED_LOAD_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_LOAD_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_LOAD_BC"] || 0), RED_DISC_DIFF_FC: parseFloat(newPolicyLocations[n]["HOL_DISC_FC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_DISC_FC"] || 0), RED_DISC_DIFF_BC: parseFloat(newPolicyLocations[n]["HOL_DISC_BC"] || 0) - parseFloat(oldPolicyLocations[o]["HOL_DISC_BC"] || 0), RED_CRTE_BY: u.getUserCode(), RED_STATUS: "U" }); break; } } } } /* * CO-INSURANCE STUFF */ u.getGlobal("facInEndorsementUpdate")(); u.setGlobal("policyChanges", true); return ed; }; $scope.getPolicyFormData = function () { var polhData = u.parse_form("#polheaderForm"); var locations = u.get_grid_data($scope.homeloc_grid); locations.ForEach(loc => { loc.HOL_PERIOD_DAYS = (parseInt(loc.HOL_PERIOD_DAYS)).toFixed(0); if (loc.HOL_POLH_END_NO !== "" && typeof (loc.HOL_POLH_END_NO) === "string") { loc.HOL_POLH_END_NO = parseInt(loc.HOL_POLH_END_NO.split('.')[0]); } loc.INS_UDW_HOME_OWNERS = u.parseJson(loc.INS_UDW_HOME_OWNERS); loc.INS_UDW_HOME_OWNERS.ForEach(home => { //covers home.INS_UWD_RISK_COVERS = u.parseJson(home.INS_UWD_RISK_COVERS); home.INS_UWD_RISK_COVERS.ForEach(cover => { if (cover.MS_UDW_COVERS) { delete cover.MS_UDW_COVERS } cover.RCOV_RISK_SYS_ID = home.HOP_SYS_ID; // cover discLoads cover.INS_UDW_COVER_DISCLOAD = u.parseJson(cover.INS_UDW_COVER_DISCLOAD); cover.INS_UDW_COVER_DISCLOAD.ForEach(discLoad => { discLoad.DL_RCOV_SYS_ID = cover.RCOV_SYS_ID; }); }); //section details home.INS_UDW_HOME_OWNERS_DETAILS = typeof (home.INS_UDW_HOME_OWNERS_DETAILS) === "string" ? u.parseJson(home.INS_UDW_HOME_OWNERS_DETAILS) : home.INS_UDW_HOME_OWNERS_DETAILS || []; home.INS_UDW_HOME_OWNERS_DETAILS.ForEach(detail => { detail.HODT_HOP_SYS_ID = home.HOP_SYS_ID; }); // risk discLoadings home.INS_UDW_RISK_DISCLOAD = typeof (home.INS_UDW_RISK_DISCLOAD) === "string" ? u.parseJson(home.INS_UDW_RISK_DISCLOAD) : home.INS_UDW_RISK_DISCLOAD || []; home.INS_UDW_RISK_DISCLOAD.ForEach(discLoad => { discLoad.DL_RISK_SYS_ID = home.HOP_SYS_ID; }); // home fees home.INS_UDW_HOME_OWNERS_FEES = typeof (home.INS_UDW_HOME_OWNERS_FEES) === "string" ? u.parseJson(home.INS_UDW_HOME_OWNERS_FEES || "[]") : home.INS_UDW_HOME_OWNERS_FEES || []; home.INS_UDW_HOME_OWNERS_FEES.ForEach(fee => { fee.HOP_FEE_RK_SYS_ID = home.HOP_SYS_ID; if (fee.MS_COMPULSORY_FEES) { delete (fee.MS_COMPULSORY_FEES); } }); }); }); polhData.INS_UDW_HOME_LOCATION = locations; polhData.INS_UDW_POLICY_DISCLOAD = u.get_grid_data($scope.polhdiscloading_grid); polhData.INS_COINS_LEADER = u.get_grid_data(u.getGlobal("udwCoInsLdrGrid")); //var insUwdRiskDetails = u.get_grid_data($scope.secdetails_grid); //var insUwdRiskCovers = u.get_grid_data($scope.cover_grid); //var insUwdRiskFees = u.get_grid_data($scope.riskFees_grid); //var insUwdRiskDiscountLoading = u.get_grid_data($scope.riskdiscloading_grid); //retrieve treaty information var treaties = u.get_grid_data($scope.reinsurance_grid); treaties = u.forEach(treaties, function (treaty) { treaty["INS_RI_TTY_ALLOCATION"] = u.parseJson(treaty["INS_RI_TTY_ALLOCATION"]); u.forEach(treaty["INS_RI_TTY_ALLOCATION"], function (allocation) { allocation["INS_RI_TTY_SHARE"] = allocation["INS_RI_TTY_SHARE"] || "[]"; return allocation; }); return treaty; }, this); polhData["INS_RI_TTY_HEAD"] = treaties; //for (var i in polhData.INS_UDW_HOME_OWNERS) { // //loop through every risk and obtain the sys_id of the risk // var id = polhData.INS_UDW_HOME_OWNERS[i]["HOP_SYS_ID"]; // polhData.INS_UDW_HOME_OWNERS[i]["INS_UDW_HOME_OWNERS_DETAILS"] = []; // polhData.INS_UDW_HOME_OWNERS[i]["INS_UWD_RISK_COVERS"] = []; // polhData.INS_UDW_HOME_OWNERS[i]["INS_UDW_HOP_FEES"] = []; // polhData.INS_UDW_HOME_OWNERS[i]["INS_UDW_RISK_DISCLOAD"] = []; // for (var c in insUwdRiskDetails) { // //find covers which have the same the same risk sys_id // if (insUwdRiskDetails[c]["HODT_HOP_SYS_ID"] === id) { // polhData.INS_UDW_HOME_OWNERS[i]["INS_UDW_HOME_OWNERS_DETAILS"].push(insUwdRiskDetails[c]); // } // } // for (var c in insUwdRiskCovers) { // //find covers which have the same the same risk sys_id // if (insUwdRiskCovers[c]["RCOV_RISK_SYS_ID"] === id) { // polhData.INS_UDW_HOME_OWNERS[i]["INS_UWD_RISK_COVERS"].push(insUwdRiskCovers[c]); // } // } // for (var f in insUwdRiskFees) { // //find risk fees which have the same the same risk sys_id // if (insUwdRiskFees[f]["HOP_FEE_RK_SYS_ID"] === id) { // polhData.INS_UDW_HOME_OWNERS[i]["INS_UDW_HOP_FEES"].push(insUwdRiskFees[f]); // } // } // for (var d in insUwdRiskDiscountLoading) { // //find risk fees which have the same the same risk sys_id // if (insUwdRiskDiscountLoading[d]["DL_RISK_SYS_ID"] === id) { // polhData.INS_UDW_HOME_OWNERS[i]["INS_UDW_RISK_DISCLOAD"].push(insUwdRiskDiscountLoading[d]); // } // } //} polhData.INS_RI_FAC_INWARD = u.get_grid_data($scope.grdfacInward_grid); for (var i in polhData.INS_RI_FAC_INWARD) { polhData.INS_RI_FAC_INWARD[i]["INS_RI_FAC_INW_COMPANY"] = u.parseJson(polhData.INS_RI_FAC_INWARD[i]["INS_RI_FAC_INW_COMPANY"]); } // polhData.INS_UDW_HOP_FEES = u.get_grid_data($scope.riskFees_grid); polhData.INS_UWD_INTERMEDIARY_COMM = u.get_grid_data($scope.intermCom_grid); polhData.INS_UDW_POL_FEES = u.get_grid_data($scope.polfees_grid); polhData.INS_RI_FAC_OUTWARD = u.get_grid_data($scope.grdCoinsLeader_grid); return polhData; }; /*----------------------------- * Save/Update Data *---------------------------*/ // $("#btn_Save").on('click', async function () { if (u.grid_empty($scope.homeloc_grid)) { return u.growl_warning("Please add location and risk Details"); } $scope.PolicyCalculations(); var polhData = $scope.getPolicyFormData(); if (!polhData.INS_UDW_HOME_LOCATION.Any(x => x.INS_UDW_HOME_OWNERS.Any())) return u.modalInfo("No risk details have been added to the locations. Add at least one risk and update its covers as well before saving."); polhData["MS_UDW_ENDORSEMENTS"] = u.get_grid_data($scope.endorsementGrid, true); //let endData; //if (polhData["POLH_TXN_STATE"] === "E") { // const oldPolicy = await s.getPolicyHistoryAsync(polhData["POLH_SYS_ID"], (parseFloat(polhData["POLH_END_NO"]) - 1), (polhData["POLH_RENEW_SER_NO"])); // //if policy is in the endorsement stage find differences in the financials of policy // if (polhData["POLH_TXN_STATE"] === "E") { // endData = $scope.financialDiff(polhData, oldPolicy); // for (var d in polhData["MS_UDW_ENDORSEMENTS"]) { // if (polhData["MS_UDW_ENDORSEMENTS"][d]["END_TXN_STATE"] === "O") { // polhData["MS_UDW_ENDORSEMENTS"][d] = endData; // } // } // } //} u.getGlobal("savePolicy")(polhData, function (result) { //callback //u.update_grid_status($scope.homeowners_grid, "HOP_STATUS"); //u.update_grid_status($scope.riskFees_grid, "HOP_FEE_STATUS"); // u.getGlobalStatic("productSearchFill")(result); $scope.policyFill(result); }); }); //Policy Process Options Modal //$("#btnProcess").on("click", function () { // var e = document.getElementById("SelPolicyProcess"); // var polProcess = e.options[e.selectedIndex].value; // var polTxnState = $("#POLH_TXN_STATE").val(); // if (polProcess === "") { // u.growl_warning("Nothing selected, Please select to Process"); // } // //Confirmation Modal // else if (polProcess === "Confirm") { // if (!u.field_empty("#POLH_SYS_ID")) { // if (polTxnState === "C") return u.growl_warning("The Policy is already Confirmed, You cannot Confirm them again"); // if (polTxnState === "P") return u.growl_warning("The Policy is Approved, You cannot Confirm again"); // if (polTxnState === "") return u.growl_warning("The Policy is not saved, You cannot Confirm it"); // if (polTxnState === "E" || polTxnState === "S") { // $("#PolConfirmModal").modal(); // } // } // else { // u.modalWarning("There is no Policy to process"); // } // } // else if (polProcess === "UnConfirm") { // if (!u.field_empty("#POLH_SYS_ID")) { // //check if the policy has been approved // if (polTxnState === "P") return u.growl_warning("The Policy is Approved, You cannot Unconfirm."); // u.modal_confirmation("Are you sure you want to unConfirm this policy?", function () { // s.unConfirm_Policy($("#POLH_SYS_ID").val(), $("#POLH_END_NO").val(), function (result) { // if (result.state) { // u.growl_success("Policy successfully unconfirmed"); // u.form_text_Black_color(); // } else { // u.growl_error("Unable to unconfirm policy"); // } // }, function (err) { // u.growl_error("Error unconfirming policy"); // }); // u.hide_confirm(); // }) // } // else { // u.modalWarning("There is no Policy to Process"); // } // } // //Endorsement Modal // else if (polProcess === "Endorse") { // if (!u.field_empty("#POLH_SYS_ID")) { // if (polTxnState === "P") { // $("#PolicyEndorsementModal").modal(); // $("#PolicyProcessingModal").modal("hide"); // var sysId = $("#POLH_SYS_ID").val(); // var endNo = $("#POL_END_NO").val(); // var premAmtFc = $("#POLH_POL_PREM_FC").val(); // var premAmtBc = $("#POLH_POL_PREM_BC").val(); // $("#APP_POLH_ID").val(sysId); // $("#APP_END_NO").val(endNo); // $("#APP_PREM_FC").val(premAmtFc); // $("#APP_PREM_BC").val(premAmtBc); // $("#APPROVE_DATE").val("01/01/2017"); // // // } else { // u.growl_warning("The Policy must be Approved, efore endorsement, Please check and try again"); // } // } // else { // u.modalWarning("There is no Policy to Process"); // } // } // else if (polProcess === "UnEndorse") { // if (!u.field_empty("#POLH_SYS_ID")) { // // btnEndDeletion EndmtDeletionModal // if (polTxnState === "E") { // $("#EndmtDeletionModal").modal(); // $("#PolicyProcessingModal").modal("hide"); // var SYS_ID = $("#POLH_SYS_ID").val(); // var end_No = $("#POL_END_NO").val(); // // // } else { // u.growl_warning("The Policy must be in endorsement state before Endorsement deletion, Please check and try again"); // } // } // else { // u.modalWarning("There is no Policy to Process"); // } // } // //Approval Modal // else if (polProcess === "Approve") { // if (!u.field_empty("#POLH_SYS_ID")) { // if (polTxnState === "P") return u.growl_warning("The Policy is already Approved"); // if (polTxnState === "C") { // $("#PolicyApprovalModal").modal(); // var SYS_ID = $("#POLH_SYS_ID").val(); // var end_No = $("#POL_END_NO").val(); // var premAmtFC = $("#POLH_POL_PREM_FC").val(); // var premAmtBC = $("#POLH_POL_PREM_BC").val(); // $("#APP_POLH_ID").val(SYS_ID); // $("#APP_END_NO").val(end_No); // $("#APP_PREM_FC").val(premAmtFC); // $("#APP_PREM_BC").val(premAmtBC); // $("#APPROVE_DATE").val("01/01/2017"); // // // } else { // u.growl_warning("The Policy must be in a confirmed state before Approval, Please check and try again"); // } // } // else { // u.modalWarning("There is no Policy to Process"); // } // } //}); /*------------------------------ * Policy Endorsement process *----------------------------*/ // $scope.endorsementGrid = u.getGlobal("udwEndsmntGrid"); /*--------------------------------------- * ADD ENDORSEMENT TO ENDORSEMENT GRID *------------------------------------*/ $("#btn_add_end").click(function () { if (u.form_validation("#endorsementForm")) { u.modal_confirmation("Are you sure you want to endorse this policy?", function () { var rowIds = $scope.endorsementGrid.jqGrid("getDataIDs"); /*---------------------------------------------- * declare array to contain the codes to verify *--------------------------------------------*/ // var code = []; /*------------------------------------------------------------ * iterate through the rows and check duplicate each of them *----------------------------------------------------------*/ // for (var i = 0, len = rowIds.length; i < len; i++) { var currRow = rowIds[i]; /*------------------------------------------------ * get value of the cell or column in an array *----------------------------------------------*/ //DL_CODE var cellValue = $scope.endorsementGrid.jqGrid("getCell", currRow, "END_TXN_STATE"); code.push(cellValue); } //before we add an endorsement to the grid we will need to check if there is an endorsement in the grid that is an open state /*------------------------------------------------------ * add if there is no other that is in the opened state *-----------------------------------------------------*/ // if ($.inArray("O", code) < 0) { var formData = u.parse_form("#endorsementForm"); formData.END_STATUS = "U"; formData.END_CRTE_BY = u.getUserCode(); formData.END_CRTE_DATE = u.get_date(); formData.END_TXN_STATE = "O"; formData.END_NO = parseInt($("#POLH_END_NO").val()) + 1; formData.END_POL_SYS_ID = $("#POLH_SYS_ID").val(); //ADD TO GRID $scope.endorsementGrid.addRowData(formData.ID, formData); u.hide_confirm(); u.growl_success("Policy successfully added, you will not be able to add another endorsement until the current " + "open endorsement is closed. Please save your changes and approve the policy endorsement to close the endorsement"); u.form_reset("#endorsementForm"); } else { u.hide_confirm(); u.modalInfo("The current Policy in an open endorsement state. You cannot add another endorsement until the current endorsement state is closed." + " To close the current endorsement, please save your endorsement changes and approve the policy."); } }); } else { u.growl_error("Please fill out the fields that are marked red"); } }); $("#btnEndorse").on("click", function () { // Check for ProRated or Full Cancellation if (!u.grid_empty($scope.endorsementGrid)) { var endorsements = u.get_grid_data($scope.endorsementGrid); if (endorsements.Any(e => e.END_FLAG === "FC" || e.END_FLAG === "PC")) { return u.growl_warning("You cannot endorse this policy"); } } //check if the policy has pending fac excess if (u.getGlobal("endPendingRiCheck")()) { return u.growl_warning("Cannot endorse policy, Reinsurance is pending."); } if (!u.form_validation("#endorsementForm")) return u.growl_info("Fields marked red are required"); if (!("PD").includes(u.fieldVal("#POLH_TXN_STATE"))) return u.growl_warning("Proposal is not approved, endorsements can only passed on approved policies!"); if (u.fieldVal("#POLH_TXN_STATE") === "E") return u.growl_warning("The policy is already in the endorsed state, you cannot pass another endorsement on it!"); if (u.fieldVal("#POLH_SUSPND_YN") === "Y") return u.growl_warning("The policy is suspended, you cannot pass an endorsement on it!"); u.modalConfirmationAsync("Are you sure you want to pass endorsement on the policy?", async function () { // Disable currency $("#currBtn").attr("disabled", "disabled"); /*---------------------------------------------- * declare array to contain the codes to verify *--------------------------------------------*/ // var code = []; /*--------------------------------------------------------------- * iterate through the rows and obtain all end transaction states *--------------------------------------------------------------*/ // $scope.isOpen = false; u.setGridColumn($scope.endorsementGrid, { "END_TXN_STATE": function (state) { if (state === "O") { $scope.isOpen = true; } } }); //before we add an endorsement to the grid we will need to check if there is an endorsement in the grid that is an open state /*------------------------------------------------------ * add if there is no other that is in the opened state *-----------------------------------------------------*/ // var formData = u.parse_form("#endorsementForm"); formData.END_NO = u.fieldVal("#POLH_END_NO") + 1; //if ($.inArray("O", code) < 0) { // formData.END_STATUS = "U"; // formData.END_CRTE_BY = u.getUserCode(); // formData.END_CRTE_DATE = u.get_date(); // formData.END_TXN_STATE = "O"; // formData.END_NO = u.fieldVal("#POLH_END_NO") + 1; // formData.END_POL_SYS_ID = u.fieldVal("#POLH_SYS_ID"); // //ADD TO GRID // $scope.endorsementGrid.addRowData(formData.ID, formData); // u.hide_confirm(); // u.modalInfo("You have successfully passed your endorsement on this Policy. You will not be able to pass another endorsement until the current " + // "endorsement is closed. Please save your changes, confirm and approve the endorsed policy to close the endorsement."); // u.form_reset("#endorsementForm"); //} //else { // u.hide_confirm(); // return u.modalInfo("The current Policy in an open endorsement state. You cannot add another endorsement until the current endorsement state is closed." + // " To close the current endorsement, please save your endorsement changes and approve the policy."); //} $scope.endorsementData = formData; u.setGlobal("endorsementData", $scope.endorsementData); var endNo = $scope.endorsementData["END_NO"]; //diasable key policy action buttons $("#btn_add_HomeOwners_details").attr("disabled", "disabled"); $("#btn_remove_HomeOwners_risk").attr("disabled", "disabled"); $("#btn_update_cover").attr("disabled", "disabled"); $("#btn_add_cover").attr("disabled", "disabled"); $("#btn_remove_cover").attr("disabled", "disabled"); $("#btn_reset_cover").attr("disabled", "disabled"); $("#HOP_START_DATE").attr("disabled", "disabled"); $("#HOP_END_DATE").attr("disabled", "disabled"); $("#btn_add_loc").attr("disabled", "disabled"); $("#btn_remove_location_details").attr("disabled", "disabled"); $("#btn_edit_loc").attr("disabled", "disabled"); $("#btn_open_HomeOwners_risk").attr("disabled", "disabled"); //$("#").prop("disabled", "disabled"); //$("#").prop("disabled", "disabled"); //obtain the pro rated premium and use for adjustment //alert(u.totalDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"])) var newNumberOfDays = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); //perform policy financials difference calculations var policy = $scope.getPolicyFormData(); var oldPolicy = $scope.oldPolicy = await u.getGlobal("fetchPolicyHistory")(policy["POLH_SYS_ID"], parseFloat(policy["POLH_END_NO"]), (parseFloat(policy["POLH_RENEW_SER_NO"]))); if (oldPolicy) { u.setGlobal("oldPolicy", oldPolicy); /*--------------------------------- * check endorsement propoerties *------------------------------*/ if (u.getGlobal("selectedEndorsement")["END_INCRS_SUM_INSRD_YN"] === "Y") {//endorsement allows the user to increase the sum insured of the policy $("#btn_update_cover").removeAttr("disabled"); $("#btn_add_cover").removeAttr("disabled"); $("#btn_remove_cover").removeAttr("disabled"); $("#btn_reset_cover").removeAttr("disabled"); } else if (u.getGlobal("selectedEndorsement")["END_DCRS_SUN_INSRD_YN"] === "Y") {//endorsement allows the user to decrease the sum insured of the policy $("#btn_update_cover").removeAttr("disabled"); $("#btn_add_cover").removeAttr("disabled"); $("#btn_remove_cover").removeAttr("disabled"); $("#btn_reset_cover").removeAttr("disabled"); } else if (u.getGlobal("selectedEndorsement")["END_ADD_RSK_YN"] === "Y") {//endorsement allows the user to add a new risk to the policy $("#btn_add_HomeOwners_details").removeAttr("disabled"); } else if (u.getGlobal("selectedEndorsement")["END_RMV_RSK_YN"] === "Y") {//endorsement allows the user to remove a risk from the policy $("#btn_remove_HomeOwners_risk").removeAttr("disabled"); } else if (u.getGlobal("selectedEndorsement")["END_FULL_CANC_YN"] === "Y") {//endorsement allows the user to perform a full cancellation of the policy } else if (u.getGlobal("selectedEndorsement")["END_PRO_RTD_CANC_YN"] === "Y") {//endorsement allows the user to cancel the policy for a preiod $("#HOP_START_DATE").removeAttr("disabled"); $("#HOP_END_DATE").removeAttr("disabled"); } else if (u.getGlobal("selectedEndorsement")["END_CHNG_PERIOD_YN"] === "Y") {//endorsement allows the user to edit the start and end dates of the policy risks $("#HOP_START_DATE").removeAttr("disabled"); $("#HOP_END_DATE").removeAttr("disabled"); } switch ($scope.endorsementData["END_FLAG"]) { case "FC": //FULL CANCELLATION $("#btn_update_cover").prop("disabled", false); $("#btn_add_cover").prop("disabled", false); $("#btn_risk_cover").prop("disabled", false); $("#btn_open_ga_risk").prop("disabled", false); u.getGlobal("DisableFields")(false); $scope.fullCancellationSetup(); break; case "IC"://INTERNAL CANCELLATION $scope.internalCancellationSetup(); //$scope.SumCoverRiskValues(); //$scope.premiumSummarizer(); //$scope.policyCommissionSummarizer(); break; case "CC"://CUSTOMER CANCELLATION $scope.customerCancellationSetup(); //$scope.SumCoverRiskValues(); //$scope.premiumSummarizer(); //$scope.policyCommissionSummarizer(); break; case "R"://RENEWAL endNo = 0; //$scope.SumCoverRiskValues(); //$scope.premiumSummarizer(); //$scope.policyCommissionSummarizer(); $scope.renewal(); break; //case "F": case "PC"://PRO RATED renewal $scope.internalProRatedCancellationSetup(newNumberOfDays); u.formReadWrite(); //$scope.SumCoverRiskValues(); //$scope.premiumSummarizer(); //$scope.policyCommissionSummarizer(); break; case "PS"://PARTIAL SUSPENSION $scope.partialSuspension(endNo); break; case "TS"://TOTAL SUSPENSION $scope.totalSuspension(endNo); break; case "EP": $scope.generalEndorsementSetup(newNumberOfDays); u.formReadWrite(); $("#POLH_POL_END_DATE").prop("disabled", false); break; case "PP": $scope.generalEndorsementSetup(newNumberOfDays); u.formReadWrite(); $("#POLH_POL_START_DATE").prop("disabled", false); $("#POLH_POL_END_DATE").prop("disabled", false); break; default: $scope.generalEndorsementSetup(newNumberOfDays); u.formReadWrite(); $("#btn_add_HomeOwners_details").prop("disabled", false); $("#btn_remove_HomeOwners_risk").prop("disabled", false); $("#btn_update_cover").prop("disabled", false); $("#btn_add_cover").prop("disabled", false); $("#btn_reset_cover").prop("disabled", false); $("#HOP_START_DATE").prop("disabled", false); $("#HOP_END_DATE").prop("disabled", false); $("#btn_add_loc").prop("disabled", false); $("#btn_remove_location_details").prop("disabled", false); $("#btn_edit_loc").prop("disabled", false); $("#btn_open_HomeOwners_risk").prop("disabled", false); break; } //$scope.feeCancelationCheck(); $("#POLH_TXN_STATE").val("E"); $("#POLH_END_NO").val(endNo); $scope.PolicyCalculations(); var newPolicy = $scope.getPolicyFormData(); //before we add an endorsement to the grid we will need to check if there is an endorsement in the grid that is an open state /*------------------------------------------------------ * add if there is no other that is in the opened state *-----------------------------------------------------*/ // if (!$scope.isOpen) { formData = $scope.financialDiff(newPolicy, oldPolicy); formData.END_STATUS = "U"; formData.END_CRTE_BY = u.getUserCode(); formData.END_CRTE_DATE = u.get_date(); formData.END_TXN_STATE = "O"; formData.END_POL_SYS_ID = u.fieldVal("#POLH_SYS_ID"); //Add to grid $scope.endorsementGrid.addRowData(undefined, formData); } else { u.hide_confirm(); return u.modalInfo( "The current policy in an open endorsement state. You cannot add another endorsement until the current endorsement is closed." + " To close the current endorsement, please save your endorsement changes and approve the policy."); } //save policy $scope.loader(async function () { var polhData = newPolicy; //Obtain policy endorsement grid data polhData["MS_UDW_ENDORSEMENTS"] = u.get_grid_data($scope.endorsementGrid, true); u.getGlobal("savePolicy")(polhData, async function () { u.form_text_Gold_color(); const data = {}; //move policy to the endorsed state data.userCode = u.getUserCode(); data.processId = $("#POLH_UID").val(); data.command = $("#SelPolicyProcess").val(); const formData = u.parse_form("#endorsementForm"); data.userId = u.getUserId(); data.comment = $scope.endorsementData.END_REASON; //Todo: clarification needed data.flag = WorkflowConstants.Underwriting; data.startDate = formData.startDate; data.endDate = formData.dueDate; data.isSystem = true; data.identityId = u.getUserId(); u.form_text_Gold_color(); u.form_reset("#endorsementForm"); $("#PolicyEndorsementModal").modal("hide"); data.notify = $("#emailYn").is(":checked"); //const response = await u.executeCommand(data); //if (response.state) { // //u.modalSuccess(response.message); // u.form_text_Gold_color(); // u.form_reset("#endorsementForm"); // $("#PolicyEndorsementModal").modal("hide"); // u.setGridColumn($scope.endorsementGrid, { // "END_STATUS": "A" // }); //} else { // u.growl_error(response.message); //} polhData = {}; u.growl_success("Policy successfully endorsed."); }); }); } else { return u.growl_info("Unable to endorse policy, policy history records could not be fetched."); } }); }); $scope.loader = function (func) { $("#policyCalculationsModal").modal(); setTimeout(async function () { func(); $("#policyCalculationsModal").modal("hide"); }, 500); }; /*------------------------- * Edorsement functions *-----------------------*/ $scope.internalCancellationSetup = function () { var endNo = $scope.endorsementData["END_NO"]; var endorsement = $scope.endorsementData; $("#POLH_NET_PREM_BC").val(0); $("#POLH_NET_PREM_FC").val(0); $("#POLH_NET_SI_BC").val(0); $("#POLH_NET_SI_FC").val(0); $("#POLH_POL_DISC_BC").val(0); $("#POLH_POL_DISC_FC").val(0); $("#POLH_POL_PREM_BC").val(0); $("#POLH_POL_PREM_FC").val(0); //$("#POLH_TXN_STATE").val("X"); /*------------------------------------- * update Endorsement No in the Grids *----------------------------------*/ // Risks u.setGridColumn($scope.homeloc_grid, { "HOL_POLH_END_NO": endNo, "HOL_TOT_PREM_BC": 0, "HOL_TOT_PREM_FC": 0, "HOL_RISK_PREM_FC": 0, "HOL_RISK_PREM_BC": 0, "INS_UDW_HOME_OWNERS": (val) => { var homeRisks = typeof val === "string" ? u.parseJson(val || "[]") : val; homeRisks.ForEach(risk => { risk.HOP_TOT_PREM_BC = 0; risk.HOP_TOT_PREM_FC = 0; risk.HOP_RISK_PREM_FC = 0; risk.HOP_RISK_PREM_BC = 0; risk.HOP_POLH_END_NO = endNo; risk.INS_UWD_RISK_COVERS = typeof val === "string" ? u.parseJson(risk.INS_UWD_RISK_COVERS || "[]") : risk.INS_UWD_RISK_COVERS || []; risk.INS_UWD_RISK_COVERS.ForEach(c => { c.RPCOV_END_NO = endNo; c.RCOV_GROSS_PREM_FC = 0; c.RCOV_GROSS_PREM_BC = 0; c.RCOV_LOAD_FC = 0; c.RCOV_LOAD_BC = 0; c.RCOV_NET_PREM_FC = 0; c.RCOV_NET_PREM_BC = 0; c.RCOV_ANNL_PREM_FC = 0; c.RCOV_ANNL_PREM_BC = 0; }); risk.INS_UDW_HOME_OWNERS_FEES = u.parseJson(risk.INS_UDW_HOME_OWNERS_FEES); risk.INS_UDW_HOME_OWNERS_FEES.ForEach(f => { f.HOP_FEE_END_NO = endNo; f.HOP_FEE_BC_AMOUNT = endorsement.END_POL_FEE_CANC_YN === "Y" ? 0 : f.HOP_FEE_BC_AMOUNT; f.HOP_FEE_FC_AMOUNT = endorsement.END_POL_FEE_CANC_YN === "Y" ? 0 : f.HOP_FEE_FC_AMOUNT; }); risk.INS_UWD_RISK_COVERS = JSON.stringify(risk.INS_UWD_RISK_COVERS); }); return JSON.stringify(homeRisks); }, //"INS_UDW_RISK_DISCLOAD": (val) => { // var discLoads = typeof val === "string" ? u.parseJson(val) : val; // for (let i in discLoads) { // const dl = discLoads[i]; // dl.DL_END_NO = endNo; // dl.DL_AMNT_BC = 0; // dl.DL_AMNT_FC = 0; // } // return JSON.stringify(discLoads); //}, }); //Commissions u.setGridColumn($scope.intermCom_grid, { "CMM_END_NO": endNo, "CMM_COM_AMT_FC": 0, "CMM_COM_AMT_BC": 0 }); //Prem Register u.setGridColumn($scope.premiumreg_grid, { "PR_END_NO": endNo }); //Risk Fees u.setGridColumn($scope.riskFees_grid, { "HOP_FEE_END_NO": endNo, "HOP_FEE_FC_AMOUNT": 0, "HOP_FEE_BC_AMOUNT": 0 }); //Pol fees summary u.setGridColumn($scope.polfees_grid, { "POL_FEE_FEE_END_NO": endNo, "POL_FEE_FC_AMOUNT": function (val) { return endorsement.END_POL_FEE_CANC_YN === "Y" ? 0 : val; }, "POL_FEE_BC_AMOUNT": function (val) { return endorsement.END_POL_FEE_CANC_YN === "Y" ? 0 : val; } }); }; $scope.fullCancellationSetup = function () { var endNo = $scope.endorsementData["END_NO"]; //$("#POLH_NET_PREM_BC").val(u.fieldVal("#POLH_NET_PREM_BC") - proRatdNetPremBc); $("#POLH_NET_PREM_BC").val(0); //$("#POLH_NET_PREM_FC").val(u.fieldVal("#POLH_NET_PREM_FC") - proRatdNetPremFc); $("#POLH_NET_PREM_FC").val(0); //$("#POLH_NET_SI_BC").val(0); //$("#POLH_NET_SI_FC").val(0); //$("#POLH_NET_SI_BC").val(-(parseFloat($("#POLH_NET_SI_BC").val() || 0))); //$("#POLH_NET_SI_FC").val(-(parseFloat($("#POLH_NET_SI_FC").val() || 0))); $("#POLH_POL_DISC_BC").val(0); $("#POLH_POL_DISC_FC").val(0); $("#POLH_POL_LOAD_BC").val(0); $("#POLH_POL_LOAD_FC").val(0); $("#POLH_POL_PREM_BC").val(0); $("#POLH_POL_PREM_FC").val(0); $("#POLH_POL_COMM_BC").val(0); $("#POLH_POL_COMM_FC").val(0); $("#POLH_COINS_PREM_BC").val(0); $("#POLH_COINS_PREM_FC").val(0); $("#POLH_COINS_COM_BC").val(0); $("#POLH_COINS_COM_FC").val(0); // $("#POLH_TXN_STATE").val("X"); /*------------------------------------- * update Endorsement No in the Grids *----------------------------------*/ //Home Locations and Risks u.setGridColumn($scope.homeloc_grid, { "HOL_POLH_END_NO": endNo.toFixed(0), "HOL_TOT_PREM_BC": 0, "HOL_TOT_PREM_FC": 0, "HOL_RI_PREM_FC": 0, "HOL_RI_PREM_BC": 0, "HOL_RISK_PREM_FC": 0, "HOL_RISK_PREM_BC": 0, "INS_UDW_HOME_OWNERS": function (val) { var homeRisks = typeof (val) === "string" ? u.parseJson(val) : val || []; homeRisks.ForEach(risk => { risk.HOP_POLH_END_NO = endNo; risk.HOP_RI_PREM_FC = 0; risk.HOP_RI_PREM_BC = 0; risk.HOP_TOT_PREM_FC = 0; risk.HOP_TOT_PREM_BC = 0; risk.HOP_RISK_PREM_FC = 0; risk.HOP_RISK_PREM_BC = 0; risk.INS_UWD_RISK_COVERS = u.parseJson(risk.INS_UWD_RISK_COVERS); risk.INS_UWD_RISK_COVERS.ForEach(c => { c.RPCOV_END_NO = endNo; c.RCOV_NET_PREM_FC = 0; c.RCOV_NET_PREM_BC = 0; c.RCOV_GROSS_PREM_BC = 0; c.RCOV_GROSS_PREM_FC = 0; c.RCOV_DISC_BC = 0; c.RCOV_DISC_FC = 0; c.RCOV_LOAD_FC = 0; c.RCOV_LOAD_BC = 0; c.RCOV_ANNL_PREM_FC = 0; c.RCOV_ANNL_PREM_BC = 0; }); risk.INS_UWD_RISK_COVERS = JSON.stringify(risk.INS_UWD_RISK_COVERS); risk.INS_UDW_HOME_OWNERS_FEES = u.parseJson(risk.INS_UDW_HOME_OWNERS_FEES); risk.INS_UDW_HOME_OWNERS_FEES.ForEach(fee => { fee.HOP_FEE_END_NO = endNo; if ($scope.endorsementData["END_POL_FEE_CANC_YN"] === "Y") { fee.HOP_FEE_FC_AMOUNT = 0; fee.HOP_FEE_BC_AMOUNT = 0; } }); //risk.INS_UDW_HOME_OWNERS_FEES = JSON.stringify(risk.INS_UDW_HOME_OWNERS_FEES); }); return JSON.stringify(homeRisks); }, //"INS_UDW_HOME_OWNERS_FEES": function (val) { // const fees = typeof (val) === "string" ? u.parseJson(val) : val; // fees.forEach(f => { // f.VEH_FEE_END_NO = endNo; // if ($scope.endorsementData["END_POL_FEE_CANC_YN"] === "Y") { // f.HOP_FEE_FC_AMOUNT = 0; // f.HOP_FEE_BC_AMOUNT = 0; // } // }); // return JSON.stringify(fees); //} }); //RI summary u.setGridColumn($scope.reinsurance_grid, { //"VEH_POLH_END_NO": endNo, "TTH_TOTAL_PREM_BC": function (val) { return -parseFloat(val); }, "TTH_TOTAL_PREM_FC": function (val) { return -parseFloat(val); }, "INS_RI_TTY_ALLOCATION": function (val) { const allocations = u.parseJson(val || "[]"); allocations.ForEach(a => { a.TTA_TTY_PREM_BC = 0; a.TTA_TTY_PREM_FC = 0; a.TTA_TTY_COMM_BC = 0; a.TTA_TTY_COMM_FC = 0; var shares = u.parseJson(a.INS_RI_TTY_SHARE); shares.ForEach(share => { share.TTS_SHARE_PREM_BC = 0; share.TTS_SHARE_PREM_FC = 0; share.TTS_RI_COMM_BC = 0; share.TTS_RI_COMM_FC = 0; share.TTS_TAX_BC = 0; share.TTS_TAX_FC = 0; }); a.INS_RI_TTY_SHARE = shares.ToJson(); }); return allocations.ToJson(); } }); //Commissions u.setGridColumn($scope.intermCom_grid, { "CMM_END_NO": endNo, "CMM_COM_AMT_FC": 0, "CMM_COM_AMT_BC": 0 }); //Prem Register u.setGridColumn($scope.premiumreg_grid, { "PR_END_NO": endNo }); //policy documents u.setGridColumn($scope.polFileGrid, { "PF_PH_END_NO": endNo }); //Pol fees summary u.setGridColumn($scope.polfees_grid, { "POL_FEE_FEE_END_NO": endNo, "POL_FEE_FC_AMOUNT": function (val) { return $scope.endorsementData["END_POL_FEE_CANC_YN"] === "Y" ? 0 : val; }, "POL_FEE_BC_AMOUNT": function (val) { return $scope.endorsementData["END_POL_FEE_CANC_YN"] === "Y" ? 0 : val; }, }); }; $scope.generalEndorsementSetup = function (numberOfDays) { var endNo = $scope.endorsementData["END_NO"]; const proRate = numberOfDays / 365; const proRatdNetPremFc = u.fieldVal("#POLH_NET_PREM_FC") * proRate; const proRatdNetPremBc = u.fieldVal("#POLH_NET_PREM_BC") * proRate; const proRatdPolPremFc = u.fieldVal("#POLH_POL_PREM_FC") * proRate; const proRatdPolPremBc = u.fieldVal("#POLH_POL_PREM_BC") * proRate; $("#POLH_NET_PREM_BC").val(u.fieldVal("#POLH_NET_PREM_BC") - proRatdNetPremBc); $("#POLH_NET_PREM_FC").val(u.fieldVal("#POLH_NET_PREM_FC") - proRatdNetPremFc); $("#POLH_POL_PREM_BC").val(u.fieldVal("#POLH_NET_PREM_BC") - proRatdPolPremBc); $("#POLH_POL_PREM_FC").val(u.fieldVal("#POLH_NET_PREM_FC") - proRatdPolPremFc); $("#POLH_POL_DISC_BC").val(0); $("#POLH_POL_DISC_FC").val(0); /*------------------------------------- * update Endorsement No in the Grids *----------------------------------*/ // Risks u.setGridColumn($scope.homeloc_grid, { "HOL_POLH_END_NO": endNo.toFixed(0), "INS_UDW_HOME_OWNERS": function (val) { var homeRisks = typeof val === "string" ? u.parseJson(val || "[]") : val || []; homeRisks.ForEach(risk => { risk.HOP_POLH_END_NO = endNo; risk.INS_UWD_RISK_COVERS = typeof (risk.INS_UWD_RISK_COVERS) === "string" ? u.parseJson(risk.INS_UWD_RISK_COVERS || "[]") : risk.INS_UWD_RISK_COVERS || []; risk.INS_UWD_RISK_COVERS.ForEach(c => { c.RPCOV_END_NO = endNo; }); risk.INS_UWD_RISK_COVERS = JSON.stringify(risk.INS_UWD_RISK_COVERS); risk.INS_UDW_HOME_OWNERS_FEES = u.parseJson(risk.INS_UDW_HOME_OWNERS_FEES); risk.INS_UDW_HOME_OWNERS_FEES.ForEach(fee => { fee.HOP_FEE_END_NO = endNo; }); }); return JSON.stringify(homeRisks); } }); //Commissions u.setGridColumn($scope.intermCom_grid, { "CMM_END_NO": endNo }); //Prem Register u.setGridColumn($scope.premiumreg_grid, { "PR_END_NO": endNo }); //policy documents u.setGridColumn($scope.polFileGrid, { "PF_PH_END_NO": endNo }); //Risk Fees u.setGridColumn($scope.riskFees_grid, { "HOP_FEE_END_NO": endNo }); //Pol fees summary u.setGridColumn($scope.polfees_grid, { "POL_FEE_END_NO": endNo }); }; $scope.totalSuspension = function (endNo) { $("#POLH_SUSPND_YN").val("Y"); var suspensionStartDate = $scope.endorsementData.END_EFCTV_DATE; var suspensionEndDate = $scope.endorsementData.END_TERM_DATE; $("#POLH_SUS_FROM_DATE").val(suspensionStartDate); $("#POLH_SUS_TO_DATE").val(suspensionEndDate); var days = u.totalDbDateDays(suspensionEndDate, suspensionStartDate); $("#POLH_SUSPND_PERIOD").val(days); //loop through all risks and update suspension information u.setGridColumn($scope.homeloc_grid, { "HOL_POLH_END_NO": endNo.toFixed(0), "HOL_SUS_TO_DATE": function (val) { return suspensionEndDate; }, "HOL_SUS_FROM_DATE": function (val) { return suspensionStartDate; }, "HOL_SUSPND_YN": function (val) { return "Y"; }, "HOL_SUSPND_PERIOD": function (val) { return days; }, "INS_UDW_HOME_OWNERS": function (val) { var homeRisks = typeof val === "string" ? u.parseJson(val || "[]") : val || []; homeRisks.ForEach(risk => { risk.HOP_POLH_END_NO = endNo; risk.HOP_SUS_FROM_DATE = suspensionStartDate; risk.HOP_SUS_TO_DATE = suspensionEndDate; risk.HOP_SUSPND_PERIOD = days; risk.HOP_SUSPND_YN = "Y"; risk.INS_UWD_RISK_COVERS = typeof (risk.INS_UWD_RISK_COVERS) === "string" ? u.parseJson(risk.INS_UWD_RISK_COVERS || "[]") : risk.INS_UWD_RISK_COVERS || []; risk.INS_UWD_RISK_COVERS.ForEach(c => { c.RPCOV_END_NO = endNo; }); risk.INS_UWD_RISK_COVERS = JSON.stringify(risk.INS_UWD_RISK_COVERS); }); return JSON.stringify(homeRisks); } }); }; $scope.partialSuspension = function (endNo) { //loop through all risks and update suspension information u.setGridColumn($scope.homeloc_grid, { "HOL_POLH_END_NO": endNo.toFixed(0), "INS_UDW_HOME_OWNERS": function (val) { const homeRisks = typeof val === "string" ? u.parseJson(val || "[]") : val || []; homeRisks.ForEach(risk => { risk.HOP_POLH_END_NO = endNo; risk.INS_UWD_RISK_COVERS = typeof (risk.INS_UWD_RISK_COVERS) === "string" ? u.parseJson(risk.INS_UWD_RISK_COVERS || "[]") : risk.INS_UWD_RISK_COVERS || []; risk.INS_UWD_RISK_COVERS.ForEach(c => { c.RPCOV_END_NO = endNo; }); risk.INS_UWD_RISK_COVERS = JSON.stringify(risk.INS_UWD_RISK_COVERS); }); return JSON.stringify(homeRisks); }, }); }; $scope.internalProRatedCancellationSetup = function (numberOfDays) { var endNo = $scope.endorsementData["END_NO"]; //SET THE END DATE AND START OF THE POLICY AND RISK COVERS TO THE SELECTED START DATE AND END DATE FOR THE ENDORSEMENT var endTermDate = $scope.endorsementData["END_TERM_DATE"]; var endEfctvData = $scope.endorsementData["END_EFCTV_DATE"]; //perform prorating of the policy premiums //$("#POLH_TXN_STATE").val("X"); //iterate through all risks and covers and update their start date and end date as well as their pro rating their premiums $scope.invalidEnd = false; /*------------------------------------- * update Endorsement No in the Grids *----------------------------------*/ const premBasis = $("#POLH_PREM_BASIS").val(); u.setGridColumn($scope.homeloc_grid, { "HOL_POLH_END_NO": () => endNo.toFixed(0), "HOL_START_DATE": function (date, row) { //obtain the sys id of the current risk var returnDate = date; // alert(date); // alert(returnDate); if (u.dateBefore(date, $scope.endorsementData["END_EFCTV_DATE"])) { $scope.invalidEnd = true; // u.growl_warning( // "The start date of location cannot can come before the effective date of endorsement"); return date; } if (u.dateAfter(date, $scope.endorsementData["END_TERM_DATE"])) { //returnDate = $scope.endorsementData["END_TERM_DATE"]; // u.growl_warning("The end date of location cannot can come after the end date of endorsement"); $scope.invalidEnd = true; return date; } return returnDate; }, "HOL_END_DATE": function (date, row, id) { //obtain the sys id of the current location var vehId = row["HOL_SYS_ID"]; var returnDate = date; // alert(returnDate); if (u.dateAfter(date, $scope.endorsementData["END_TERM_DATE"])) { //returnDate = $scope.endorsementData["END_TERM_DATE"]; $scope.invalidEnd = true; //u.growl_warning("The end date of vehicle risks cannot can come after the end date of endorsement"); return date; } return returnDate; }, "HOL_TOT_PREM_FC": function (val, row) { var numDays = parseInt(row["HOL_PERIOD_DAYS"]); var newPrem = 0; switch (premBasis) { case "FP": //newPrem = -parseFloat(val); break; case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === numDays); var rate = parseFloat(shortPeriod[0].perc) / 100; newPrem = parseFloat(val) - (parseFloat(val) * rate); break; case "PR": var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); var proRataValue = parseFloat(proRata / numDays); newPrem = parseFloat(val) - (parseFloat(val) * proRataValue); break; } return (newPrem).toFixed(2); }, "HOL_TOT_PREM_BC": function (val, row) { var numDays = parseInt(row["HOL_PERIOD_DAYS"]); var newPrem = 0; switch (premBasis) { case "FP": //newPrem = -parseFloat(val); break; case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === numDays); var rate = parseFloat(shortPeriod[0].perc) / 100; newPrem = parseFloat(val) - (parseFloat(val) * rate); break; case "PR": var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); var proRataValue = parseFloat(proRata / numDays); newPrem = parseFloat(val) - (parseFloat(val) * proRataValue); break; } //numDays = numDays > 365 || numDays === 364 ? 365 : numDays; //var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); // proRata = proRata === 364 || numDays > 365 ? 365 : proRata; //var proRataValue = parseFloat(proRata / numDays); // console.log(`ProRata: ${proRata}, NumDays: ${numDays}, ProRataValue: ${proRataValue}`); return (newPrem).toFixed(2); }, "HOL_RISK_PREM_FC": function (val, row) { var numDays = parseInt(row["HOL_PERIOD_DAYS"]); var newPrem = 0; switch (premBasis) { case "FP": //newPrem = -parseFloat(val); break; case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === numDays); var rate = parseFloat(shortPeriod[0].perc) / 100; newPrem = parseFloat(val) - (parseFloat(val) * rate); break; case "PR": var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); var proRataValue = parseFloat(proRata / numDays); newPrem = parseFloat(val) - (parseFloat(val) * proRataValue); break; } return (newPrem).toFixed(2); }, "HOL_RISK_PREM_BC": function (val, row) { var numDays = parseInt(row["HOL_PERIOD_DAYS"]); var newPrem = 0; switch (premBasis) { case "FP": //newPrem = -parseFloat(val); break; case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === numDays); var rate = parseFloat(shortPeriod[0].perc) / 100; newPrem = parseFloat(val) - (parseFloat(val) * rate); break; case "PR": var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); var proRataValue = parseFloat(proRata / numDays); newPrem = parseFloat(val) - (parseFloat(val) * proRataValue); break; } return (newPrem).toFixed(2); }, "HOL_LOAD_FC": function (val, row) { var numDays = parseInt(row["HOL_PERIOD_DAYS"]); var newPrem = 0; switch (premBasis) { case "FP": //newPrem = -parseFloat(val); break; case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === numDays); var rate = parseFloat(shortPeriod[0].perc) / 100; newPrem = parseFloat(val) - (parseFloat(val) * rate); break; case "PR": var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); var proRataValue = parseFloat(proRata / numDays); newPrem = parseFloat(val) - (parseFloat(val) * proRataValue); break; } return (newPrem).toFixed(2); }, "HOL_LOAD_BC": function (val, row) { var numDays = parseInt(row["HOL_PERIOD_DAYS"]); var newPrem = 0; switch (premBasis) { case "FP": //newPrem = -parseFloat(val); break; case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === numDays); var rate = parseFloat(shortPeriod[0].perc) / 100; newPrem = parseFloat(val) - (parseFloat(val) * rate); break; case "PR": var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); var proRataValue = parseFloat(proRata / numDays); newPrem = parseFloat(val) - (parseFloat(val) * proRataValue); break; } return (newPrem).toFixed(2); }, //CAR PROCESSING "INS_UDW_HOME_OWNERS": function (val, row) { var numDays = parseInt(row["HOL_PERIOD_DAYS"]); var proRataValue = 0; switch (premBasis) { case "FP": break; case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === numDays); proRataValue = parseFloat(shortPeriod[0].perc) / 100; break; case "PR": var proRata = u.totalDbDateDays($scope.endorsementData["END_TERM_DATE"], $scope.endorsementData["END_EFCTV_DATE"]); proRataValue = parseFloat(proRata / numDays); break; } var risks = u.parseJson(val || "[]"); risks.ForEach(r => { r.HOP_POLH_END_NO = endNo; r.HOP_TOT_PREM_FC = premBasis === "FP" //? - parseFloat(r.HOP_TOT_PREM_FC || 0) ? 0 : parseFloat(r.HOP_TOT_PREM_FC || 0) - (parseFloat(r.HOP_TOT_PREM_FC || 0) * proRataValue); r.HOP_TOT_PREM_BC = premBasis === "FP" //? - parseFloat(r.HOP_TOT_PREM_BC || 0) ? 0 : parseFloat(r.HOP_TOT_PREM_BC || 0) - (parseFloat(r.HOP_TOT_PREM_BC || 0) * proRataValue); r.HOP_RISK_PREM_FC = premBasis === "FP" //? -parseFloat(r.HOP_RISK_PREM_FC || 0) ? 0 : parseFloat(r.HOP_RISK_PREM_FC || 0) - (parseFloat(r.HOP_RISK_PREM_FC || 0) * proRataValue); r.HOP_RISK_PREM_BC = premBasis === "FP" //? -parseFloat(r.HOP_RISK_PREM_BC || 0) ? 0 : parseFloat(r.HOP_RISK_PREM_BC || 0) - (parseFloat(r.HOP_RISK_PREM_BC || 0) * proRataValue); r.HOP_LOAD_FC = premBasis === "FP" //? -parseFloat(r.HOP_LOAD_FC || 0) ? 0 : parseFloat(r.HOP_LOAD_FC || 0) - (parseFloat(r.HOP_LOAD_FC || 0) * proRataValue); r.HOP_LOAD_BC = premBasis === "FP" //? -parseFloat(r.HOP_LOAD_BC || 0) ? 0 : parseFloat(r.HOP_LOAD_BC || 0) - (parseFloat(r.HOP_LOAD_BC || 0) * proRataValue); r.HOP_RI_PREM_FC = premBasis === "FP" //? - parseFloat(r.HOP_RI_PREM_FC || 0) ? 0 : parseFloat(r.HOP_RI_PREM_FC || 0) - (parseFloat(r.HOP_RI_PREM_FC || 0) * proRataValue); r.HOP_RI_PREM_BC = premBasis === "FP" //? - parseFloat(r.HOP_RI_PREM_BC || 0) ? 0 : parseFloat(r.HOP_RI_PREM_BC || 0) - (parseFloat(r.HOP_RI_PREM_BC || 0) * proRataValue); r.INS_UWD_RISK_COVERS = u.parseJson(r.INS_UWD_RISK_COVERS); r.INS_UWD_RISK_COVERS.ForEach(c => { c.RPCOV_END_NO = endNo; c.RCOV_GROSS_PREM_FC = premBasis === "FP" //? -parseFloat(c.RCOV_GROSS_PREM_FC || 0) ? 0 : parseFloat(c.RCOV_GROSS_PREM_FC || 0) - (parseFloat(c.RCOV_GROSS_PREM_FC || 0) * proRataValue); c.RCOV_GROSS_PREM_BC = premBasis === "FP" //? -parseFloat(c.RCOV_GROSS_PREM_BC || 0) ? 0 : parseFloat(c.RCOV_GROSS_PREM_BC || 0) - (parseFloat(c.RCOV_GROSS_PREM_BC || 0) * proRataValue); c.RCOV_ANNL_PREM_FC = premBasis === "FP" //? -parseFloat(c.RCOV_ANNL_PREM_FC || 0) ? 0 : parseFloat(c.RCOV_ANNL_PREM_FC || 0) - (parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataValue); c.RCOV_ANNL_PREM_BC = premBasis === "FP" //? -parseFloat(c.RCOV_ANNL_PREM_BC || 0) ? 0 : parseFloat(c.RCOV_ANNL_PREM_BC || 0) - (parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataValue); c.RCOV_NET_PREM_FC = premBasis === "FP" //? -parseFloat(c.RCOV_NET_PREM_FC || 0) ? 0 : parseFloat(c.RCOV_NET_PREM_FC || 0) - (parseFloat(c.RCOV_NET_PREM_FC || 0) * proRataValue); c.RCOV_NET_PREM_BC = premBasis === "FP" //? -parseFloat(c.RCOV_NET_PREM_BC || 0) ? 0 : parseFloat(c.RCOV_NET_PREM_BC || 0) - (parseFloat(c.RCOV_NET_PREM_BC || 0) * proRataValue); c.RCOV_LOAD_FC = premBasis === "FP" //? -parseFloat(c.RCOV_LOAD_FC || 0) ? 0 : parseFloat(c.RCOV_LOAD_FC || 0) - (parseFloat(c.RCOV_LOAD_FC || 0) * proRataValue); c.RCOV_LOAD_BC = premBasis === "FP" //? -parseFloat(c.RCOV_LOAD_BC || 0) ? 0 : parseFloat(c.RCOV_LOAD_BC || 0) - (parseFloat(c.RCOV_LOAD_BC || 0) * proRataValue); }); r.INS_UWD_RISK_COVERS = JSON.stringify(r.INS_UWD_RISK_COVERS); r.INS_UDW_HOME_OWNERS_FEES = u.parseJson(r.INS_UDW_HOME_OWNERS_FEES); r.INS_UDW_HOME_OWNERS_FEES.ForEach(fee => { fee.HOP_FEE_END_NO = endNo; if ($scope.endorsementData["END_POL_FEE_CANC_YN"] === "Y") { fee.HOP_FEE_FC_AMOUNT = 0; fee.HOP_FEE_BC_AMOUNT = 0; } }); }); return JSON.stringify(risks); } }); if ($scope.invalidEnd) { return false; } //Risk Covers // u.setGridColumn($scope.cover_grid, { "RPCOV_END_NO": endNo }); //policy documents u.setGridColumn($scope.polFileGrid, { "PF_PH_END_NO": endNo }); //Commissions //u.setGridColumn($scope.intermCom_grid, { "CMM_END_NO": endNo, "CMM_COM_AMT_FC": 0, "CMM_COM_AMT_BC": 0 }); u.setGridColumn($scope.intermCom_grid, { "CMM_END_NO": endNo }); //Prem Register u.setGridColumn($scope.premiumreg_grid, { "PR_END_NO": endNo }); //Risk Fees //u.setGridColumn($scope.riskFees_grid, { "ENG_FEE_END_NO": endNo, "ENG_FEE_FC_AMOUNT": 0, "ENG_FEE_BC_AMOUNT": 0 }); // u.setGridColumn($scope.riskFees_grid, { "ENG_FEE_END_NO": endNo }); //Pol fees summary u.setGridColumn($scope.polfees_grid, { "POL_FEE_FEE_END_NO": endNo, "POL_FEE_FC_AMOUNT": function (val) { return $scope.endorsementData["END_POL_FEE_CANC_YN"] === "Y" ? 0 : val; }, "POL_FEE_BC_AMOUNT": function (val) { return $scope.endorsementData["END_POL_FEE_CANC_YN"] === "Y" ? 0 : val; }, }); }; $scope.caclRi = function () { //obtain the policy header object var polHead = u.parse_form("#polheaderForm"); if (!$scope.treatyData) return u.growl_info("Ri Treaty setup data is empty please fetch treaty setup data"); //loop through all locations and apply treaty setup var locations = Enumerable.From(u.get_grid_data($scope.homeowners_grid)); locations.ForEach(function (location) { //calculate ri on each location var locationRiAllocationData = u.locationRiAllocation(polHead, { "RI_SI_FC": location.HOP_RI_SI_FC, "RI_SI_BC": location.HOP_RI_SI_BC, "RI_PREM_BC": location.HOP_RI_PREM_FC, "RI_PREM_FC": location.HOP_RI_PREM_BC }, $scope.treatyData); //console.log(locationRiAllocationData); //add treaty data into their respective tables //cleat treaty header grid u.clear_grid_data($scope.reinsurance_grid); //1. add treaty head record for each location $scope.reinsurance_grid.addRowData(location.ID, { TTH_ACC_SI_BC: location.HOP_RI_SI_BC, TTH_ACC_SI_FC: location.HOP_RI_SI_FC, TTH_ADJ_YN: null, TTH_CLASS_CODE: polHead.POLH_CLASS_CODE, TTH_COMB_LOC_ID: null, TTH_CRTE_BY: u.getUserCode(), TTH_CRTE_DATE: u.get_date(), TTH_EML_PERC: location.HOP_EML_PERC, TTH_FROM_DATE: location.HOP_START_DATE, TTH_INS_SRCE: polHead.POLH_INS_SOURCE, TTH_LOC_END_NO: polHead.POLH_END_NO, TTH_LOC_SYS_ID: null, TTH_MOD_BY: null, TTH_MOD_DATE: null, TTH_POLH_END_NO: polHead.POLH_END_NO || 0, TTH_POLH_SYS_ID: polHead.POLH_SYS_ID, TTH_POLNUM: polHead.POLH_DISPLAY_NO, TTH_REF_ID: location.HOP_SYS_ID, TTH_RISK_END_NO: polHead.POLH_END_NO, TTH_RISK_SYS_ID: location.HOP_SYS_ID, TTH_RI_ACC_YN: null, TTH_RI_PREM_BC: location.HOP_RI_PREM_BC, TTH_RI_PREM_FC: location.HOP_RI_PREM_FC, TTH_RI_SI_BC: location.HOP_RI_SI_BC, TTH_RI_SI_FC: location.HOP_RI_SI_FC, TTH_SC_CODE: polHead.POLH_SUB_CLASS_CODE, TTH_STATUS: "A", TTH_TOTAL_PREM_BC: location.HOP_TOT_PREM_BC, TTH_TOTAL_PREM_FC: location.HOP_TOT_PREM_FC, TTH_TOTAL_SI_BC: location.HOP_SI_BC, TTH_TOTAL_SI_FC: location.HOP_SI_FC, TTH_TO_DATE: location.HOP_END_DATE, TTH_UW_YEAR: location.HOP_UW_YEAR, INS_RI_TTY_ALLOCATION: JSON.stringify(locationRiAllocationData) }); }); }; $scope.renewal = function () { var renNo = parseInt($("#POLH_RENEW_SER_NO").val() || 0) + 1; $("#POLH_RENEW_SER_NO").val(renNo); //Risk Covers u.setGridColumn($scope.cover_grid, { "RPCOV_END_NO": 0 }); //Commissions u.setGridColumn($scope.intermCom_grid, { "CMM_END_NO": 0 }); //Prem Register u.setGridColumn($scope.premiumreg_grid, { "PR_END_NO": 0 }); //policy documents u.setGridColumn($scope.polFileGrid, { "PF_PH_END_NO": 0 }); //Risk Fees u.setGridColumn($scope.riskFees_grid, { "HOP_FEE_END_NO": 0 }); //Pol fees summary u.setGridColumn($scope.polfees_grid, { "POL_FEE_END_NO": 0 }); s.getProductTreaty($("#POLH_SUB_CLASS_CODE").val(), $("#POLH_POL_UW_YEAR").val(), $("#POLH_CURRENCY").val(), function (response) { if (response.state && response.data) { $scope.treatyData = response.data; $scope.caclRi(); u.growl_success("Treaty successfully fetched for the selected product"); } else { u.modalInfo(`Treaty not setup for underwriting year ${$("#POLH_POL_UW_YEAR").val()} for the product ${$("#POLH_SUB_CLASS_CODE").val()} with currency ${$("#POLH_CURRENCY").val()}, please check RI treaty setup`); //Reset form $scope.reset(); } }, function (err) { u.modalInfo(`Error fetching treaty not setup for underwriting year ${$("#POLH_POL_UW_YEAR").val()} for the product ${$("#POLH_SUB_CLASS_CODE").val()} with currency ${$("#POLH_CURRENCY").val()}, renewal cannot continue. please try again later`); //Reset form $scope.reset(); }); }; /*--------------------------- *Endorsement Deletion process *-------------------------*/ $("#btnEndDeletion").click(function () { u.modal_confirmation("Are you sure you want to delete Endorsement?", function () { if (!u.field_empty("#POLH_SYS_ID") && !u.field_empty("#POLH_END_NO")) { s.risk_end_deletion($("#POLH_SYS_ID").val(), (parseInt($("#POLH_END_NO").val()) - 1), function (result) { if (result) { s.search_policy($("#POLH_SYS_ID").val(), function (data) { $scope.searched = true; $scope.result = data; if (data.length > 0) { $scope.search_fill(data[0]); } }); } else { u.growl_info("Unable to delete endorsement, please try again"); } u.hide_confirm(); }, function (err) { u.growl_error("Error fetching search results"); }); } else { u.growl_info("Invalid Policy, please check and try again!"); } }); }); // policy Confirmation process //$("#btnConfirm").click(function () { // if ($("#POLH_TXN_STATE") === "P") return u.growl_warning("The policy has already been approved, you cannot confirm."); // if ($("#POLH_TXN_STATE") === "C") return u.growl_warning("The policy has already been confirmed, you cannot confirm."); // //get the selected Risk ID // var gengrid = $scope.homeowners_grid; // var selId = gengrid.jqGrid("getGridParam", "selrow"); // var RiskSI = gengrid.jqGrid("getCell", selId, "HOP_SI_BC"); // //get the user limit details // var usrgrid = $scope.users_grid; // var rowIds = usrgrid.jqGrid("getDataIDs"); // var userCode = u.getUserCode(); // for (var i = 0, len = rowIds.length; i < len; i++) { // //get value of the cell or column in an array // var currRow = rowIds[i]; // var getRIYN = usrgrid.jqGrid("getCell", currRow, "URL_RI_ALL_YN"); // var getUserLimSI = usrgrid.jqGrid("getCell", currRow, "URL_UDW_SI_LIM"); // var getUserId = usrgrid.jqGrid("getCell", currRow, "URL_USR_CODE"); // if (getUserId == userCode && getRIYN == "N" && RiskSI > getUserLimSI) { // $("#PolConfirmationLimit").modal(); // } // else if (getUserId == userCode && getRIYN == "N" && RiskSI <= getUserLimSI) { // u.modal_confirmation("Are you sure you want to Confirm ?", // function () { // if (!$scope.confirming) { // $scope.confirming = true; // var formData = u.parse_form("#PolconfirmationForm"); // s.confirmPolicy($("#POLH_SYS_ID").val(), // $("#POLH_END_NO").val(), // u.getUserCode(), // formData["RI_POSTED_YN"], // function (response) { // $scope.confirming = false; // if (response.state) { // //Change policy transaction state to Confirmed - C // var txnState = response.POLH_TXN_STATE; // //alert(txnState); // u.growl_success(response.message); // $("#POLH_TXN_STATE").val(txnState); // u.form_text_Blue_color(); // $("#PolConfirmModal").modal("hide"); // } else { // u.growl_error(response.message); // } // }, // function () { // $scope.confirming = false; // u.growl_error("Server Error Confirming Policy"); // }); // } // u.hide_confirm(); // }); // } // else if (getUserId == userCode && getRIYN == "Y" && RiskSI >= getUserLimSI) { // u.modal_confirmation("Are you sure you want to Confirm ?", // function () { // if (!$scope.confirming) { // $scope.confirming = true; // var formData = u.parse_form("#PolconfirmationForm"); // s.confirmPolicy($("#POLH_SYS_ID").val(), // $("#POLH_END_NO").val(), // u.getUserCode(), // formData["RI_POSTED_YN"], // function (response) { // $scope.confirming = false; // if (response.state) { // //Change policy transaction state to Confirmed - C // var txnState = response.POLH_TXN_STATE; // //alert(txnState); // u.growl_success(response.message); // $("#POLH_TXN_STATE").val(txnState); // u.form_text_Blue_color(); // $("#PolConfirmModal").modal("hide"); // } else { // u.growl_error(response.message); // } // }, // function () { // $scope.confirming = false; // u.growl_error("Server Error Confirming Policy"); // }); // } // u.hide_confirm(); // }); // } // else if (getUserId == userCode && getRIYN == "Y" && RiskSI <= getUserLimSI) { // u.modal_confirmation("Are you sure you want to Confirm ?", // function () { // if (!$scope.confirming) { // $scope.confirming = true; // var formData = u.parse_form("#PolconfirmationForm"); // s.confirmPolicy($("#POLH_SYS_ID").val(), // $("#POLH_END_NO").val(), // u.getUserCode(), // formData["RI_POSTED_YN"], // function (response) { // $scope.confirming = false; // if (response.state) { // //Change policy transaction state to Confirmed - C // var txnState = response.POLH_TXN_STATE; // //alert(txnState); // u.growl_success(response.message); // $("#POLH_TXN_STATE").val(txnState); // u.form_text_Blue_color(); // $("#PolConfirmModal").modal("hide"); // } else { // u.growl_error(response.message); // } // }, // function () { // $scope.confirming = false; // u.growl_error("Server Error Confirming Policy"); // }); // } // u.hide_confirm(); // }); // } // } //}); //Approval Process //$("#btnApproval").click(function () { // if (u.field_empty("#POLH_SYS_ID")) return u.growl_warning("There is no Policy to Approve, please Check and try again"); // if ($("#POLH_SYS_ID").val() === "A") return u.growl_warning("There is no Policy to Approve, please Check and try again"); // if ($("#POLH_TXN_STATE") === "P") return u.growl_warning("The policy has already been approved, you cannot Approved."); // if (!u.form_validation("#PolApprovalForm")) return u.growl_warning("Fields marked red are required"); // u.modal_confirmation("Are you sure you want to Approve ?", function () { // var formData = u.parse_form("#PolApprovalForm"); // s.BondpolicyApproval({ POL_SYS_ID: $("#POLH_SYS_ID").val(), POL_END_NO: $("#POL_END_NO").val(), TXN_TYPE: 1, CRTE_BY: u.getUserCode(), POST_DATE: formData["APPROVE_DATE"] }, function (response) { // if (response.state) { // u.growl_success("Policy successfully Approved"); // var str = $("#POLH_DISPLAY_NO").val(); // var polNo = $("#POLH_DISPLAY_NO").val(); // var displayNo = "P-" + str.substring(1, polNo.length); // $("#POLH_DISPLAY_NO").val(displayNo); // var txnState = response.result.POLH_TXN_STATE; // $("#POLH_TXN_STATE").val(txnState); // $("#POLH_TXN_STATE").val(txnState); // if (txnState === ("P")) { // u.form_text_Green_color(); // //u.form_readonly(); // } // } else { // u.growl_error(response.message); // } // }, function () { // u.growl_error("Server Error Confirming Policy"); // }); // u.hide_confirm(); // }); //}); /*-------------------- * Policy Form delete button *------------------*/ //$("#btnDelete").click(function () { // u.modal_confirmation("Are you sure you want to delete this policy?", function () { // if ($("input[name='POLH_SYS_ID']").val().length <= 0) { // $scope.reset_setup(); // u.hide_confirm(); // } else { // if (!$scope.saving) { // $scope.saving = true; // var policy_data = u.parse_form("#polheaderForm"); // policy_data.POLH_STATUS = "D"; // s.save_policy(policy_data, // function (response) { // u.hide_confirm(); // $scope.saving = false; // if (response.state) { // u.growl_error("Policy Successfully Deleted"); // $scope.reset_setup(); // } else { // u.growl_error("Error deleting Policy"); // } // }, // function () { // u.hide_confirm(); // $scope.saving = false; // u.growl_error("Can not delete Policy at the moment please try again later"); // }); // } else { // u.growl_info("The application is busy please wait for the current process to finish"); // } // } // }); //}); /*------------------------------ * Refresh or Reset form *----------------------------*/ // $scope.reset = function () { u.form_reset("#polheaderForm"); u.form_reset("#coverForm"); u.form_reset("#homeForm"); u.form_reset("#policyFilesForm"); u.clear_grid_data($scope.cover_grid); u.clear_grid_data($scope.homeowners_grid);; u.clear_grid_data($scope.homeloc_grid);; u.clear_grid_data($scope.PremSummary_grid); u.clear_grid_data($scope.cliams_grid); u.clear_grid_data($scope.reinsurance_grid); u.clear_grid_data($scope.treatyApportionmentGrid); u.clear_grid_data($scope.treatyShareGrid); u.clear_grid_data($scope.interComm_grid); u.clear_grid_data($scope.polfees_grid); u.clear_grid_data($scope.riskdiscload_grid); u.clear_grid_data($scope.prodRisks_grid); u.clear_grid_data($scope.polFileGrid); u.clear_grid_data($scope.riskFees_grid); u.clear_grid_data($scope.endorsementGrid); $("#POLH_SYS_ID").val(""); $("#POLH_STATUS").val("U"); $("#POLH_TXN_STATE").val("S"); $("#txtSearch").val(""); u.form_text_Black_color(); $("#netCustomerFc").empty(); $("#POLH_MIGRATED").val("false"); $("#POLH_REF_CUST_POL_NUM").val(""); $("#POLH_REF_POL_NUM").val(""); }; u.setGlobalStatic("homeownersReset", $scope.reset); $("#btn_Reset").on('click', function () { u.modal_confirmation("Are you sure you want to clear all data from the form?", function (e) { $scope.reset(); u.hideWarning(); u.growl_success("Form successfully cleared"); }); }); /*----------------- * search grid *----------------*/ $scope.search_grid = u.default_grid("#grdSearchResults", "#grdSearchResultsPager", "Product Search Results", ["ID", "Policy No.", "Policy Display No.", "Policy State.", "index"], [ { name: "POLH_SYS_ID", index: "POLH_SYS_ID", hidden: true }, { name: "POLH_SYS_ID", index: "POLH_SYS_ID" }, { name: "POLH_DISPLAY_NO", index: "POLH_DISPLAY_NO" }, { name: "POLH_STATUS", index: "POLH_STATUS" }, { name: "index", id: true, index: "index", hidden: true } ], function (index) { $scope.selected_index = index; $scope.search_fill($scope.result[index]); }, function (index) { $scope.search_fill($scope.result[index]); u.clear_grid_data($scope.search_grid); $("#mySearchResultModal").modal("hide"); }); /*--------------------------- * Search *-------------------------*/ $("#btnQueryPolicy").click(function () { var query = $("#txtSearch").val(); if (query && query.length > 0 && query !== " ") { s.search_policy(query, function (result) { $scope.searched = true; $scope.result = result; if (result.length > 0) { if (result.length > 1) { /*display result of the search to the user in a modal*/ for (var i in result) { result[i].index = i; $scope.search_grid.addRowData(result[i].index, result[i]); } $("#mySearchResultModal").modal(); } else { $scope.search_fill(result[0]); } } else { u.growl_info("Policy No. not found, please make sure you enter the correct Policy No!"); } }, function (err) { u.growl_error("Error fetching search results"); }); } else { u.growl_info("Please check Policy No and try again!"); } }); u.setGlobalStatic("productSearchFill", function (policyData) { u.getGlobal("searchFill")(policyData, function (policy) { u.clear_grid_data($scope.homeloc_grid); u.clear_grid_data($scope.homeowners_grid); u.clear_grid_data($scope.cover_grid); u.clear_grid_data($scope.riskFees_grid); u.clear_grid_data($scope.polfees_grid); // u.clear_grid_data($scope.reinsurance_grid); policy.INS_UDW_HOME_LOCATION.ForEach(location => { location.INS_UDW_HOME_OWNERS.ForEach(home => { //secc details //home.INS_UDW_HOME_OWNERS_DETAILS = JSON.stringify(home.INS_UDW_HOME_OWNERS_DETAILS); // risk covers home.INS_UWD_RISK_COVERS.ForEach(cover => { // cover.RCOV_NAME = cover.MS_UDW_COVERS.CVR_NAME; cover.INS_UDW_COVER_DISCLOAD.ForEach(d => { if (d.MS_SYS_LOADINGS_DISCOUNTS) { d.DL_NAME = d.MS_SYS_LOADINGS_DISCOUNTS.LDI_NAME || ""; delete (d.MS_SYS_LOADINGS_DISCOUNTS); } }); }); //home.INS_UWD_RISK_COVERS = JSON.stringify(home.INS_UWD_RISK_COVERS); //risk discLoads home.INS_UDW_RISK_DISCLOAD.ForEach(discLoad => { discLoad.DL_NAME = discLoad.MS_SYS_LOADINGS_DISCOUNTS !== null ? discLoad.MS_SYS_LOADINGS_DISCOUNTS.LDI_NAME : ""; }); //home.INS_UDW_RISK_DISCLOAD = JSON.stringify(home.INS_UDW_RISK_DISCLOAD); //risk fees home.INS_UDW_HOME_OWNERS_FEES.ForEach(fee => { fee.HOP_FEE_NAME = fee.MS_COMPULSORY_FEES.FEE_NAME || ""; if (fee.MS_COMPULSORY_FEES) delete (fee.MS_COMPULSORY_FEES); }); }); //location.INS_UDW_HOME_OWNERS = JSON.stringify(location.INS_UDW_HOME_OWNERS); }); u.grid_populate($scope.homeloc_grid, "", policy.INS_UDW_HOME_LOCATION); // u.grid_populate($scope.reinsurance_grid, "", policy.INS_RI_TTY_HEAD); //for (var i in policy.INS_UDW_HOME_OWNERS) { // $scope.homeowners_grid.addRowData(policy.INS_UDW_HOME_OWNERS[i].ID, policy.INS_UDW_HOME_OWNERS[i]); // for (var s in policy.INS_UDW_HOME_OWNERS[i].INS_UDW_HOME_OWNERS_DETAILS) { // //get Discount/Loading // $scope.secdetails_grid.addRowData(policy.INS_UDW_HOME_OWNERS[i].INS_UDW_HOME_OWNERS_DETAILS[s].ID, policy.INS_UDW_HOME_OWNERS[i].INS_UDW_HOME_OWNERS_DETAILS[s]); // } // // Get risk covers // for (var x in policy.INS_UDW_HOME_OWNERS[i].INS_UWD_RISK_COVERS) { // //get Cover Names // policy.INS_UDW_HOME_OWNERS[i].INS_UWD_RISK_COVERS[x]["RCOV_NAME"] = policy.INS_UDW_HOME_OWNERS[i].INS_UWD_RISK_COVERS[x]["MS_UDW_COVERS"]["CVR_NAME"]; // //get Covers // $scope.cover_grid.addRowData(policy.INS_UDW_HOME_OWNERS[i].INS_UWD_RISK_COVERS[x].RCOV_RISK_SYS_ID, policy.INS_UDW_HOME_OWNERS[i].INS_UWD_RISK_COVERS[x]); // } // //Filling Risk fees // for (var r in policy.INS_UDW_HOME_OWNERS[i].INS_UDW_HOP_FEES) { // //get Fee Names // policy.INS_UDW_HOME_OWNERS[i].INS_UDW_HOP_FEES[r]["HOP_FEE_NAME"] = policy.INS_UDW_HOME_OWNERS[i].INS_UDW_HOP_FEES[r]["MS_COMPULSORY_FEES"]["FEE_NAME"]; // //Fill Fees Grid // $scope.riskFees_grid.addRowData(policy.INS_UDW_HOME_OWNERS[i].INS_UDW_HOP_FEES[r].ID, policy.INS_UDW_HOME_OWNERS[i].INS_UDW_HOP_FEES[r]); // } // for (var d in policy.INS_UDW_HOME_OWNERS[i].INS_UDW_RISK_DISCLOAD) { // //get Discount/Loading // $scope.riskdiscloading_grid.addRowData(policy.INS_UDW_HOME_OWNERS[i].INS_UDW_RISK_DISCLOAD[d].ID, policy.INS_UDW_HOME_OWNERS[i].INS_UDW_RISK_DISCLOAD[d]); // } //} u.grid_populate($scope.polfees_grid, "", policy.INS_UDW_POL_FEES); u.setGlobal("RIData", policy.INS_RI_TTY_HEAD); $scope.PolicyCalculations(); u.getGlobal("showRiskCount")(u.get_grid_data($scope.homeloc_grid).Where(x => x.HOL_STATUS !== "D")); //$scope.PolicyCalculationsNew(); }); }); $scope.policyFill = function (policy) { u.clear_grid_data($scope.homeloc_grid); policy.INS_UDW_HOME_LOCATION.ForEach(location => { location.INS_UDW_HOME_OWNERS.ForEach(home => { //secc details //home.INS_UDW_HOME_OWNERS_DETAILS = JSON.stringify(home.INS_UDW_HOME_OWNERS_DETAILS); // risk covers home.INS_UWD_RISK_COVERS.ForEach(cover => { // cover.RCOV_NAME = cover.MS_UDW_COVERS.CVR_NAME; cover.INS_UDW_COVER_DISCLOAD.ForEach(d => { if (d.MS_SYS_LOADINGS_DISCOUNTS) { d.DL_NAME = d.MS_SYS_LOADINGS_DISCOUNTS.LDI_NAME || ""; delete (d.MS_SYS_LOADINGS_DISCOUNTS); } }); }); //home.INS_UWD_RISK_COVERS = JSON.stringify(home.INS_UWD_RISK_COVERS); //risk discLoads home.INS_UDW_RISK_DISCLOAD.ForEach(discLoad => { discLoad.DL_NAME = discLoad.MS_SYS_LOADINGS_DISCOUNTS !== null ? discLoad.MS_SYS_LOADINGS_DISCOUNTS.LDI_NAME : ""; }); //home.INS_UDW_RISK_DISCLOAD = JSON.stringify(home.INS_UDW_RISK_DISCLOAD); //risk fees home.INS_UDW_HOME_OWNERS_FEES.ForEach(fee => { fee.HOP_FEE_NAME = fee.MS_COMPULSORY_FEES ? fee.MS_COMPULSORY_FEES.FEE_NAME : "" || ""; if (fee.MS_COMPULSORY_FEES) delete(fee.MS_COMPULSORY_FEES); }); }); //location.INS_UDW_HOME_OWNERS = JSON.stringify(location.INS_UDW_HOME_OWNERS); }); u.grid_populate($scope.homeloc_grid, "", policy.INS_UDW_HOME_LOCATION); u.clear_grid_data($scope.polfees_grid); u.grid_populate($scope.polfees_grid, "", policy.INS_UDW_POL_FEES); }; $scope.search_fill = u.getGlobalStatic("productSearchFill"); /*------------------------------------- * setting datepicker for date fields *------------------------------------*/ u.set_datepicker(".date"); u.set_datepicker(".datetime"); //u.set_datetimepicker(".datetime"); u.set_datepicker("input[name='CUS_DOB']"); u.set_datepicker("#ENDORSE_DATE"); u.set_datepicker("#ENDORSE_EFF_DATE"); u.set_datepicker("#ENDORSE_TO_DATE"); u.set_datepicker("#NLB_FROM_DATE"); u.set_datepicker("#NLB_TO_DATE"); /*----------------------------- * LOV code validation *---------------------------*/ u.lovCodeVal("form input[name='POLH_CMP_CODE']", "check_company_code", "form input[name='CMP_NAME']"); u.lovCodeVal("form input[name='POLH_OFF_CODE']", "check_office_code", "form input[name='OFF_NAME']"); u.lovCodeVal("form input[name='POLH_CLASS_CODE']", "check_product_code", "form input[name='COB_NAME']"); //u.lovCodeVal("form input[name='POLH_SUB_CLASS_CODE']", "check_subproduct_code", "form input[name='PDT_NAME']"); //u.lovCodeVal("form input[name='POLH_SUB_CLASS_CODE']", "check_subproduct_code", "form input[name='PDT_NAME']", async function () { // if (($("#POLH_BIZ_SOURCE").val() === "BKM" || $("#POLH_BIZ_SOURCE").val() === "AGM") && !u.field_empty("#POLH_INTERMIDIARY")) { // u.modal_confirmation("Your current action might change commissions already set on this policy, do you want to continue? RESELECT intermediary after selecting and SAVE!!!", // async function () { }); // } //}); u.lovCodeVal("form input[name='POLH_INS_SOURCE']", "check_insurance_source_code", "form input[name='INSUR_NAME']"); u.lovCodeVal("form input[name='POLH_CHANNEL_CODE']", "check_channel_code", "form input[name='MSC_NAME']"); u.lovCodeVal("form input[name='POLH_BIZ_SOURCE']", "check_business_source_code", "form input[name='SRB_NAME']"); u.lovCodeVal("input[name='POLH_CUST_CODE']", "check_customer_code", "input[name='CUS_OFFICIAL_NAME']", function (code) { /*fetch customer details after successful validation*/ s.get_customer(code, function (response) { // u.fill_form(response, "#polheaderForm"); u.setFieldVal("#POLH_CUST_NAME", response["CUS_OFFICIAL_NAME"]); u.setFieldVal("#POLH_CUST_ADRS", response["CUS_ADDRS2"]); u.setFieldVal("#POLH_CUST_TEL", response["CUS_PHONE1"]); }); }); u.lovCodeVal("form input[name='CUS_TYPE_CODE']", "check_customertype_code", "form input[name='CUS_TYPE_NAME']"); u.lovCodeVal("form input[name='POLH_CURRENCY']", "check_currency_code", "", function (code) { s.getCurrencyRate(code, function (fx) { u.setFieldVal("#POLH_CURRENCY_RATE", fx["EXR_FX_RATE"]); }); }); /*----------------------------- * //Risk Cover Rate Calculation *---------------------------*/ $('#RCOV_GROSS_PREM_FC').prop('disabled', true); $('#RCOV_NET_PREM_FC').prop('disabled', true); document.getElementById("RCOV_RATE").addEventListener("focusout", rateFunction); document.getElementById("RCOV_SI_FC").addEventListener("focusout", rateFunction); function rateFunction() { //alert("Input field lost focus."); var grossPremFC = ""; var grossPremBC = ""; var NetPremFC = ""; var NetPremBC = ""; var ExchangeRate = $('#HOP_CURRENCY_RATE').val(); if ($('#RCOV_SI_FC').val() == "" || $('#RCOV_SI_FC').val() == 0 || $('#RCOV_RATE').val() == "" || $('#RCOV_RATE').val() <= 0 || $('#RCOV_RATE').val() > 100) { // u.growl_warning("Please Check the RATE or SUM INSURED values"); } else { grossPremFC = ($('#RCOV_SI_FC').val() * $('#RCOV_RATE').val() * 0.01).toFixed(2); //grossPremBC = parseFloat(grossPremFC / ExchangeRate).toFixed(2); NetPremFC = ($('#RCOV_SI_FC').val() * $('#RCOV_RATE').val() * 0.01).toFixed(2); //NetPremBC = parseFloat(NetPremFC / ExchangeRate).toFixed(2); const currRate = parseFloat($("#POLH_CURRENCY_RATE").val() || 0); // check for Premium pasis const premBasis = $("#POLH_PREM_BASIS").val(); var polNumDays = parseInt($("#POLH_POL_DAYS").val()); var proRataPerc = 0; switch (premBasis) { case "SP": //console.log(u.getGlobal("shortPeriods")); //console.log(polNumDays); var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === polNumDays); //console.log(shortPeriod); //console.log(shortPeriod[0].perc); proRataPerc = parseFloat(shortPeriod[0].perc) * 0.01; break; case "PR": //polNumDays = polNumDays === 364 || polNumDays < 365 ? 365 : polNumDays; proRataPerc = parseFloat(polNumDays / 365); break; case "FP": proRataPerc = 1; break; } proRataPerc = $("#RCOV_CODE").val() === "800704" ? 1 : proRataPerc; $("#RCOV_GROSS_PREM_FC").val(parseFloat(grossPremFC * proRataPerc).toFixed(2)); $("#RCOV_GROSS_PREM_BC").val(parseFloat(grossPremFC * proRataPerc).toFixed(2) * currRate); $("#RCOV_NET_PREM_FC").val(parseFloat(NetPremFC * proRataPerc).toFixed(2)); $("#RCOV_NET_PREM_BC").val(parseFloat(NetPremFC * proRataPerc).toFixed(2) * currRate); $("#RCOV_ANNL_PREM_FC").val(NetPremFC); $("#RCOV_ANNL_PREM_BC").val(parseFloat(NetPremFC * currRate)); } } /*----------------------------- * //Risk Premium entry *---------------------------*/ //document.getElementById("RCOV_SI_FC").addEventListener("focusout", premiumEntry); function premiumEntry() { var grid = $scope.cover_grid; var sel_Id = grid.jqGrid("getGridParam", "selrow"); var userpremium = grid.jqGrid("getCell", sel_Id, "CVR_USER_PREMIUM"); if (userpremium == "Y") { document.getElementById("RCOV_GROSS_PREM_FC").disabled = false; //$('#RCOV_GROSS_PREM_FC').prop('disabled', false); } else { document.getElementById("RCOV_GROSS_PREM_FC").disabled = true; }; } //Policy Period days calculations/ //document.getElementById("POLH_POL_START_DATE").addEventListener("focusout", fxnPolPeriodDays); //document.getElementById("POLH_POL_END_DATE").addEventListener("focusout", fxnPolPeriodDays); //$("#POLH_POL_START_DATE").blur(function () { // var addYear = u.dateFastForward($(this).val(), 1, "year"); // if (u.field_empty("#POLH_POL_END_DATE")) { // $("#POLH_POL_END_DATE").val(addYear); // } //}); function fxnPolPeriodDays() { //alert("Input field lost focus."); var sDate = $("#POLH_POL_START_DATE").val(); var eDate = $("#POLH_POL_END_DATE").val(); $("#HOP_START_DATE").val(sDate); $("#HOP_END_DATE").val(eDate); var sdte = new Date(sDate); var polUWY = u.getYear(sDate); $("#POLH_POL_UW_YEAR").val(polUWY); $("#HOP_UW_YEAR").val(polUWY); var polPeriodDays = u.totalDays(eDate, sDate); if (polPeriodDays > 0) { $("#POLH_POL_DAYS").val(polPeriodDays); $("#HOP_PERIOD_DAYS").val(polPeriodDays); } else if ((polPeriodDays <= 0)) { u.growl_warning("Policy End date cannot be less than or equal to start date"); //reset end date and no. of days $("#POLH_POL_END_DATE").val(""); $("#POLH_POL_DAYS").val(""); // $("#HOP_END_DATE").val(""); $("#HOP_PERIOD_DAYS").val(""); } } //---//Risk period days // document.getElementById("HOP_START_DATE").addEventListener("focusout", fxnRiskPeriodDays); //document.getElementById("HOP_END_DATE").addEventListener("focusout", fxnRiskPeriodDays); function fxnRiskPeriodDays() { //alert("Input field lost focus."); var polStartDate = new Date($("#POLH_POL_START_DATE").val()); var PolEndDate = new Date($("#POLH_POL_END_DATE").val()); var riskStartDate = new Date($("#HOP_START_DATE").val()); var riskEndDate = new Date($("#HOP_END_DATE").val()); var riskPeriodDays = u.get_dateDifference(riskStartDate, riskEndDate); if (u.get_dateDifference(polStartDate, riskStartDate) < 0) { u.growl_warning("Risk Start date cannot be less than Policy start date"); } else if (u.get_dateDifference(PolEndDate, riskEndDate) > 0) { u.growl_warning("Risk End date cannot be greater than Policy End date"); } else { if (riskPeriodDays > 0) { $("#HOP_PERIOD_DAYS").val(riskPeriodDays); } } if ((riskPeriodDays <= 0)) { u.growl_warning("Risk End date cannot be less than or equal to start date"); //reset end date and no. of days $("#HOP_START_DATE").val(''); $("#HOP_END_DATE").val(''); } else if ((riskPeriodDays > 365)) { u.growl_warning("Risk period cannot be greater than 365 days, please check and try again"); } // alert(diffDays(StartDate, EndDate)); } /* //Hide or show Covers in the Risk Covers (to filter out the covers for particular risk */ $scope.hideShowCovers = function () { //get the selected Risk ID var vehgrid = $scope.homeowners_grid; var selId = vehgrid.jqGrid("getGridParam", "selrow"); var RiskId = vehgrid.jqGrid("getCell", selId, "HOP_SYS_ID"); //get the Risk Cover data var covgrid = $scope.cover_grid; var rowIds = covgrid.jqGrid("getDataIDs"); // iterate through the risk cover rows to hide or show covers for (var i = 0, len = rowIds.length; i < len; i++) { //get value of the cell or column in an array var currRow = rowIds[i]; var getRiskCovId = covgrid.jqGrid("getCell", currRow, "RCOV_RISK_SYS_ID"); if (getRiskCovId != RiskId) { //hide if covers are not for the selected risk $("#" + currRow).hide(); } else if (getRiskCovId == RiskId) { //Show if covers are for the selected risk $("#" + currRow).show(); } } }; // Cover level SI and Premium Calculations: $("#btn_get_Cover_Premiums").click(function () { //$scope.SumCoverRiskValues(); $scope.PolicyCalculations(); }); // calculate sum of cover amounts $scope.SumCoverRiskValues = async function () { //Declare variables var riskSumSifc = 0; var riskSumSibc = 0; var sumGrossPremFc = 0; var sumGrossPremBc = 0; //var sumAnnPremFc = 0; //var sumAnnPremBc = 0; var sumNetPremFc = 0; var sumNetPremBc = 0; var sumAnnPremFc = 0; var sumAnnPremBc = 0; var sumLoadFc = 0; var sumLoadBc = 0; var sumDisFc = 0; var sumDisBc = 0; var sumRISIFc = 0; var sumRISIBc = 0; var sumRiPremFc = 0; var sumRiPremBc = 0; var sumFeesFc = 0; var sumFeesBc = 0; // check for Premium pasis const premBasis = $("#POLH_PREM_BASIS").val(); var polNumDays = parseInt($("#POLH_POL_DAYS").val()); var proRataPerc = 0; switch (premBasis) { case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === polNumDays); proRataPerc = parseFloat(shortPeriod[0].perc) / 100; break; case "PR": //polNumDays = polNumDays === 364 || polNumDays < 365 ? 365 : polNumDays; proRataPerc = parseFloat(polNumDays / 365); break; case "FP": proRataPerc = 1; break; } //Risk/Bond Grid var riskgrid = $scope.homeowners_grid; var riskRowId = u.getSelRow(riskgrid); var covers = u.get_grid_data($scope.cover_grid); if (covers.Any()) { covers.ForEach(c => { if (c.RCOV_STATUS !== "D") { if (c.RCOV_USER_PREM_YN === "Y") { sumGrossPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumGrossPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); sumNetPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumNetPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); } else { sumGrossPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataPerc; sumGrossPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataPerc; sumNetPremFc += (parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataPerc) - parseFloat(c.RCOV_DISC_FC || 0) + parseFloat(c.RCOV_LOAD_FC || 0); sumNetPremBc += (parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataPerc) - parseFloat(c.RCOV_DISC_BC || 0) + parseFloat(c.RCOV_LOAD_BC || 0); } if (c.RCOV_RI_SI_YN === "Y") { sumRISIFc += parseFloat(c.RCOV_SI_FC); sumRISIBc += parseFloat(c.RCOV_SI_BC); riskSumSifc += parseFloat(c.RCOV_SI_FC); riskSumSibc += parseFloat(c.RCOV_SI_BC); } if (c.RCOV_RI_PREM_YN === "Y") { if (c.RCOV_USER_PREM_YN === "Y") { sumRiPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumRiPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); } else { sumRiPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataPerc; sumRiPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataPerc; } } sumAnnPremFc += parseFloat(c.RCOV_ANNL_PREM_FC); sumAnnPremBc += parseFloat(c.RCOV_ANNL_PREM_BC); sumLoadFc += parseFloat(c.RCOV_LOAD_FC); sumLoadBc += parseFloat(c.RCOV_LOAD_BC); sumDisFc += parseFloat(c.RCOV_DISC_FC); sumDisBc += parseFloat(c.RCOV_DISC_BC); } }); //grid.jqGrid("footerData", "set", { 'RCOV_SI_FC': riskSumSifc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_SI_BC': riskSumSibc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_GROSS_PREM_FC': sumGrossPremFc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_GROSS_PREM_BC': sumGrossPremBc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_ANNL_PREM_FC': sumGrossPremFc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_ANNL_PREM_BC': sumGrossPremBc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_NET_PREM_FC': sumNetPremFc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_NET_PREM_BC': sumNetPremBc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_LOAD_FC': sumLoadFc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_LOAD_BC': sumLoadBc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_DISC_FC': sumDisFc.toFixed(2) }); //grid.jqGrid("footerData", "set", { 'RCOV_DISC_BC': sumDisBc.toFixed(2) }); let fees = u.parseJson(u.getRow(riskRowId, riskgrid).INS_UDW_HOME_OWNERS_FEES || "[]") || []; $scope.polfees_grid.jqGrid("clearGridData"); for (var i in fees) { await $scope.updatePolicyFees(fees[i], sumNetPremBc); sumFeesBc += parseFloat(fees[i].HOP_FEE_BC_AMOUNT || 0); sumFeesFc += parseFloat(fees[i].HOP_FEE_FC_AMOUNT || 0); } sumNetPremFc += parseFloat(sumFeesFc || 0); sumNetPremBc += parseFloat(sumFeesBc || 0); riskgrid.jqGrid("setCell", riskRowId, "INS_UDW_HOME_OWNERS_FEES", fees); riskgrid.jqGrid("setCell", riskRowId, "HOP_COMP_FEE_FC", sumFeesFc); riskgrid.jqGrid("setCell", riskRowId, "HOP_COMP_FEE_BC", sumFeesBc); // set risk SI and Premiums vlues, riskgrid.jqGrid("setCell", riskRowId, 'HOP_PREMIUM_FC', sumGrossPremFc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, 'HOP_PREMIUM_BC', sumGrossPremBc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_TOT_PREM_FC", sumAnnPremFc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_TOT_PREM_BC", sumAnnPremBc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_PREM_FC", sumRiPremFc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_PREM_BC", sumRiPremBc.toFixed(2)); //RI VALUES riskgrid.jqGrid("setCell", riskRowId, "HOP_SUM_INSURED_FC", riskSumSifc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_SUM_INSURED_BC", riskSumSibc.toFixed(2)); //riskgrid.jqGrid("setCell", riskRowId, "HOP_SUM_INSURED", riskSumSifc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_SI_FC", riskSumSifc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_SI_BC", riskSumSibc.toFixed(2)); // //riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_FC", riskSumSifc.toFixed(2)); //riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_BC", riskSumSibc.toFixed(2)); //checkif we are to apply EML if (riskgrid.jqGrid("getCell", riskRowId, "HOP_RIPML") === "Y") { var emplPerc = parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_PML") || 0); // riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_FC", (parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_SI_FC")) * (emplPerc / 100)).toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_FC", (parseFloat(sumRISIFc) * (emplPerc / 100)).toFixed(2)); // riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_BC", (parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_SI_BC")) * (emplPerc / 100)).toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_BC", (parseFloat(sumRISIBc) * (emplPerc / 100)).toFixed(2)); } else { // riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_FC", parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_SI_FC")).toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_FC", parseFloat(sumRISIFc).toFixed(2)); // riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_BC", parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_SI_BC")).toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_RI_SI_BC", parseFloat(sumRISIBc).toFixed(2)); } riskgrid.jqGrid("setCell", riskRowId, "HOP_RISK_PREM_FC", sumNetPremFc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_RISK_PREM_BC", sumNetPremBc.toFixed(2)); //var riskPremFc = parseFloat(riskgrid.jqGrid("setCell", riskRowId, "HOP_RISK_PREM_FC") || 0); //var riskPremBc = parseFloat(riskgrid.jqGrid("setCell", riskRowId, "HOP_RISK_PREM_BC") || 0); //riskPremFc += sumNetPremFc; //riskPremBc += sumNetPremBc; //riskgrid.jqGrid("setCell", riskRowId, "HOP_RISK_PREM_FC", riskPremFc.toFixed(2)); //riskgrid.jqGrid("setCell", riskRowId, "HOP_RISK_PREM_BC", riskPremBc.toFixed(2)); // //var loadingsFc = parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_LOAD_FC") || 0); //var loadingsBc = parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_LOAD_BC") || 0); //loadingsFc += sumLoadFc; //loadingsBc += sumLoadBc; riskgrid.jqGrid("setCell", riskRowId, "HOP_LOAD_FC", sumLoadFc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_LOAD_BC", sumLoadBc.toFixed(2)); //var discountsFc = parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_DISC_FC") || 0); //var discountsBc = parseFloat(riskgrid.jqGrid("getCell", riskRowId, "HOP_DISC_BC") || 0); //discountsFc += sumDisFc; //discountsBc += sumDisBc; riskgrid.jqGrid("setCell", riskRowId, "HOP_DISC_FC", sumDisFc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "HOP_DISC_BC", sumDisBc.toFixed(2)); riskgrid.jqGrid("setCell", riskRowId, "INS_UWD_RISK_COVERS", JSON.stringify(u.get_grid_data($scope.cover_grid))); // Policy Level SI and premium Calculations $scope.SumPolhAmounts(); } else { var locations = u.get_grid_data($scope.homeloc_grid); var homeRisks = []; for(var loc in locations) { if (locations[loc].HOL_STATUS !== "D") { homeRisks = u.parseJson(locations[loc].INS_UDW_HOME_OWNERS); for(var home in homeRisks) { if (homeRisks[home].HOP_STATUS !== "D") { let covers = u.parseJson(homeRisks[home].INS_UWD_RISK_COVERS); covers.ForEach(c => { if (c.RCOV_STATUS !== "D") { if (c.RCOV_RI_SI_YN === "Y") { sumRISIFc += parseFloat(c.RCOV_SI_FC); sumRISIBc += parseFloat(c.RCOV_SI_BC); riskSumSifc += parseFloat(c.RCOV_SI_FC); riskSumSibc += parseFloat(c.RCOV_SI_BC); } if (c.RCOV_RI_PREM_YN === "Y") { if (c.RCOV_USER_PREM_YN === "Y") { sumRiPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumRiPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); } else { sumRiPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataPerc; sumRiPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataPerc; } } if (c.RCOV_USER_PREM_YN === "Y") { c.RCOV_GROSS_PREM_FC = parseFloat(c.RCOV_ANNL_PREM_FC || 0); c.RCOV_GROSS_PREM_BC = parseFloat(c.RCOV_ANNL_PREM_BC || 0); sumGrossPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumGrossPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); c.RCOV_NET_PREM_FC = parseFloat(c.RCOV_ANNL_PREM_FC || 0); c.RCOV_NET_PREM_BC = parseFloat(c.RCOV_ANNL_PREM_BC || 0); sumNetPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumNetPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); } else { c.RCOV_GROSS_PREM_FC = parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataPerc; c.RCOV_GROSS_PREM_BC = parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataPerc; sumGrossPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataPerc; sumGrossPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataPerc; c.RCOV_NET_PREM_FC = (parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataPerc) - parseFloat(c.RCOV_DISC_FC) + parseFloat(c.RCOV_LOAD_FC || 0); c.RCOV_NET_PREM_BC = (parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataPerc) - parseFloat(c.RCOV_DISC_BC) + parseFloat(c.RCOV_LOAD_BC || 0); sumNetPremFc += (parseFloat(c.RCOV_ANNL_PREM_FC || 0) * proRataPerc) - parseFloat(c.RCOV_DISC_FC) + parseFloat(c.RCOV_LOAD_FC || 0); sumNetPremBc += (parseFloat(c.RCOV_ANNL_PREM_BC || 0) * proRataPerc) - parseFloat(c.RCOV_DISC_BC) + parseFloat(c.RCOV_LOAD_BC || 0); } sumAnnPremFc += parseFloat(c.RCOV_ANNL_PREM_FC); sumAnnPremBc += parseFloat(c.RCOV_ANNL_PREM_BC); sumLoadFc += parseFloat(c.RCOV_LOAD_FC); sumLoadBc += parseFloat(c.RCOV_LOAD_BC); sumDisFc += parseFloat(c.RCOV_DISC_FC); sumDisBc += parseFloat(c.RCOV_DISC_BC); } }); //homeRisks[home].INS_UWD_RISK_COVERS = JSON.stringify(covers); let fees = u.parseJson(homeRisks[home].INS_UDW_HOME_OWNERS_FEES || "[]") || []; $scope.polfees_grid.jqGrid("clearGridData"); for (var i in fees) { await $scope.updatePolicyFees(fees[i], sumNetPremBc); sumFeesBc += parseFloat(fees[i].HOP_FEE_BC_AMOUNT || 0); sumFeesFc += parseFloat(fees[i].HOP_FEE_FC_AMOUNT || 0); } sumNetPremFc += parseFloat(sumFeesFc || 0); sumNetPremBc += parseFloat(sumFeesBc || 0); homeRisks[home].INS_UDW_HOME_OWNERS_FEES = fees; homeRisks[home].HOP_RISK_PREM_FC = sumNetPremFc; homeRisks[home].HOP_RISK_PREM_BC = sumNetPremBc; //home.HOP_PREMIUM_FC = sumNetPremFc; //home.HOP_PREMIUM_BC = sumNetPremBc; homeRisks[home].HOP_TOT_PREM_FC = sumAnnPremFc; homeRisks[home].HOP_TOT_PREM_BC = sumAnnPremBc; homeRisks[home].HOP_RI_PREM_FC = sumRiPremFc; homeRisks[home].HOP_RI_PREM_BC = sumRiPremBc; homeRisks[home].HOP_RI_SI_FC = sumRISIFc; homeRisks[home].HOP_RI_SI_BC = sumRISIBc; homeRisks[home].HOP_DISC_FC = sumDisFc; homeRisks[home].HOP_DISC_BC = sumDisBc; homeRisks[home].HOP_LOAD_FC = sumLoadFc; homeRisks[home].HOP_LOAD_BC = sumLoadBc; homeRisks[home].HOP_SI_FC = riskSumSifc; homeRisks[home].HOP_SI_BC = riskSumSibc; homeRisks[home].HOP_PERIOD_DAYS = polNumDays; riskSumSifc = 0; riskSumSibc = 0; sumGrossPremFc = 0; sumGrossPremBc = 0; sumNetPremFc = 0; sumNetPremBc = 0; sumRiPremFc = 0; sumRiPremBc = 0; sumRISIFc = 0; sumRISIBc = 0; sumAnnPremFc = 0; sumAnnPremBc = 0; sumDisBc = 0; sumDisFc = 0; sumLoadBc = 0; sumLoadFc = 0; } } locations[loc].HOL_PERIOD_DAYS = polNumDays; locations[loc].INS_UDW_HOME_OWNERS = homeRisks; } } //u.setGridColumn($scope.homeloc_grid, // { // "HOL_PERIOD_DAYS": polNumDays, // "INS_UDW_HOME_OWNERS": JSON.stringify(homeRisks) // }); u.clear_grid_data($scope.homeloc_grid); u.grid_populate($scope.homeloc_grid, "", locations); } }; $scope.updatePolicyFees = async function(fee, sumNetPremBc) { await $scope.RiskFeesCalculate(fee, true, sumNetPremBc); //let policyFees = u.get_grid_data($scope.polfees_grid) || []; //var compFeedata = [fee]; //var linq = Enumerable.From(compFeedata); //var data = // linq.GroupBy(function(x) { return x.HOP_FEE_CODE; }) // .Select(function(x) { // //console.log(x); // return { // POL_FEE_CODE: x.Key(), // POL_FEE_NAME: x.source[0]["HOP_FEE_NAME"], // POL_FEE_FC_AMOUNT: x.Sum(function(y) { return parseFloat(y.HOP_FEE_FC_AMOUNT || 0); }), // POL_FEE_BC_AMOUNT: x.Sum(function(y) { return parseFloat(y.HOP_FEE_BC_AMOUNT || 0); }), // POL_FEE_END_NO: parseInt($("#POLH_END_NO").val() || 0), // POL_FEE_RNW_NO: parseInt($("#POLH_RENEW_SER_NO").val() || 0), // POL_FEE_STATUS: "U" // }; // }).ToArray(); //if (policyFees.Any(x.POL_FEE_CODE === data.POL_FEE_CODE)) { // let policyFee = policyFees.FirstOrDefault(x.POL_FEE_CODE === data.POL_FEE_CODE); // policyFee.POL_FEE_FC_AMOUNT = data.POL_FEE_FC_AMOUNT; // policyFee.POL_FEE_BC_AMOUNT = data.POL_FEE_BC_AMOUNT; // policyFee.POL_FEE_END_NO = data.POL_FEE_END_NO || parseInt($("#POLH_END_NO").val() || 0); // policyFee.POL_FEE_RNW_NO = data.POL_FEE_RNW_NO || parseInt($("#POLH_RENEW_SER_NO").val() || 0); // policyFee.POL_FEE_STATUS = policyFee.POL_FEE_SYS_ID ? "A" : data.POL_FEE_STATUS; //} else { //} //$scope.polfees_grid.addRowData(data.POL_FEE_CODE, data); }; //Policy Level SI and premium Calculations // calculate sum of Risk level amounts $scope.SumPolhAmounts = function () { //Declare variables var polGrossPremFc = 0; var polGrossPremBc = 0; var polNetPremFc = 0; var polNetPremBc = 0; var polLoadFc = 0; var polLoadBc = 0; var polDisFc = 0; var polDisBc = 0; var polSifc = 0; var polSibc = 0; var polSifc = 0; var polSibc = 0; var polSifc = 0; var polSibc = 0; // var polgrid = $scope.homeowners_grid; var polrowIds = polgrid.jqGrid('getDataIDs'); // iterate through the rows and check if it exists each of them for (var i = 0, len = polrowIds.length; i < len; i++) { var currRow = polrowIds[i]; // Sum risk level Amounts for Policy Level Amounts polSifc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_SI_FC")); polSibc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_SI_BC")); polGrossPremFc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_TOT_PREM_FC")); polGrossPremBc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_TOT_PREM_BC")); polNetPremFc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_NET_PREM_FC")); polNetPremBc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_NET_PREM_BC")); polLoadFc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_LOAD_FC")); polLoadBc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_LOAD_BC")); polDisFc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_DISC_FC")); polDisBc += parseFloat(polgrid.jqGrid('getCell', currRow, "HOP_DISC_BC")); } $("#POLH_POL_SI_FC").val(polSifc); $("#POLH_POL_SI_BC").val(polSibc); $("#POLH_POL_PREM_FC").val(polGrossPremFc); $("#POLH_POL_PREM_BC").val(polGrossPremBc); $("#POLH_NET_PREM_FC").val(polGrossPremFc); $("#POLH_NET_PREM_BC").val(polGrossPremBc); // $("#POLH_POL_LOAD_FC").val(polLoadFc); $("#POLH_POL_LOAD_BC").val(polLoadBc); $("#POLH_POL_DISC_FC").val(polDisFc); $("#POLH_POL_DISC_BC").val(polDisBc); }; //Commission Calculations function calculateIntermediaryComm() { //grdIntermediaryComm $scope.intermCom_grid var commgrid = $scope.intermCom_grid; var commrowIds = commgrid.jqGrid('getDataIDs'); var polPremFC = parseFloat($('#POLH_POL_PREM_FC').val() | 0); var polPremBC = parseFloat($('#POLH_POL_PREM_BC').val() | 0); // iterate through the rows if (polPremFC == 0) { } else if (u.grid_empty($scope.intermCom_grid)) { } else { for (var i = 0, len = commrowIds.length; i < len; i++) { var currRow = commrowIds[i]; // Sum risk level Amounts for Policy Level Amounts commgrid.jqGrid('setCell', currRow, 'CMM_PREM_AMT_FC', polPremFC.toFixed(2)); commgrid.jqGrid('setCell', currRow, 'CMM_PREM_AMT_BC', polPremBC.toFixed(2)); // comPerc = parseFloat(commgrid.jqGrid('getCell', currRow, 'CMM_COM_PERC') | 0); var CommAmountFC = parseFloat(polPremFC * comPerc / 100); var CommAmountBC = parseFloat(polPremBC * comPerc / 100); //CommAmountFC CommAmountBC commgrid.jqGrid('setCell', currRow, 'CMM_COM_AMT_FC', CommAmountFC.toFixed(2)); commgrid.jqGrid('setCell', currRow, 'CMM_COM_AMT_BC', CommAmountBC.toFixed(2)); } } } /* Get default covers for the first time of loading the Risk Covers btn_add_risk_details */ function getDefaultRiskCovers() { if ($("#POLH_SUB_CLASS_CODE").val() == "") { u.growl_warning("The Risk Code cannot be null, Please check and try again"); } else { /* obtain parameter for our request */ var productRiskData = { PRD_CODE: $("#POLH_SUB_CLASS_CODE").val(), CUR_RATE: $("#POLH_CURRENCY_RATE").val(), }; // var grid = $scope.cover_grid; var rowIds = grid.jqGrid('getDataIDs'); //declare array to contain the codes to varify var CodeArray = []; // iterate through the rows in the grid and add Covers to Array for (var i = 0, len = rowIds.length; i < len; i++) { var currRow = rowIds[i]; //get value of the cell or column in an array var coverCode = grid.jqGrid("getCell", currRow, "RCOV_CODE"); var RiskCode = grid.jqGrid("getCell", currRow, "RCOV_RISK_SYS_ID"); var riskCov = coverCode + RiskCode; //alert(riskCov); CodeArray.push(riskCov); } //send parameters and get Default covers from the database s.getRiskDefaulCovers(productRiskData, function (result) { if (result && result.length && result.length > 0) { for (var i in result) { //alert(JSON.stringify(result)); result[i]["RCOV_NAME"] = result[i]["MS_UDW_COVERS"]["CVR_NAME"]; result[i]["RCOV_TYPE"] = result[i]["MS_UDW_COVERS"]["CVR_TYPE"]; result[i]["RCOV_RI_YN"] = result[i]["MS_UDW_COVERS"]["CVR_RI_APPLICABLE"]; result[i]["CVR_USER_PREMIUM"] = result[i]["MS_UDW_COVERS"]["CVR_USER_PREMIUM"]; result[i]["RCOV_PREM_REFUND"] = result[i]["MS_UDW_COVERS"]["RCOV_PREM_REFUND"]; result[i]["RCOV_RATE_CHANGE"] = result[i]["MS_UDW_COVERS"]["CVR_RATE_CHANGE"]; result[i]["RCOV_SI_CHANGE"] = result[i]["MS_UDW_COVERS"]["CVR_SI_CHANGE"]; result[i]["RCOV_COVER_LEVEL"] = result[i]["MS_UDW_COVERS"]["RCOV_COVER_LEVEL"]; result[i]["RCOV_RISK_SYS_ID"] = $("#HOP_SYS_ID").val(); result[i]["RCOV_RISK_NO"] = $("#HOP_RISK_ID").val(); //result[i]["RCOV_SI_FC"] = $("#RCOV_SI_FC").val(); var deftCoverCode = result[i].RCOV_CODE; var newRiskCode = $("#HOP_SYS_ID").val(); var verifyRiskCover = deftCoverCode + newRiskCode; //alert(verifyRiskCover); //add if Cover is not found in the Grid// if ($.inArray(verifyRiskCover, CodeArray) < 0) { //fill in default covers if not in the grid $scope.cover_grid.addRowData(result[i].ID, result[i]); } else { u.growl_warning("Cover exists for this Risk, you cannot add same Cover " + deftCoverCode); } } // //SumCoverRiskValues(); } }); } } //Get default Covers if not added $("#btn_get_DeftCovers").click(function () { getDefaultRiskCovers(); }); /*-------------------------------------------------- * FAC Partiicpating company Details Modal *------------------------------------------------*/ // $("#btn_Participant").click(function () { //obthain the id of the selected fac details var grid = $scope.grdfacInward_grid; if (!u.getSelRow(grid)) return u.growl_info("No row selected from the grid"); var selRow = $scope.selectedfac = u.getSelRow(grid); if (selRow) { //obtain the companies that have been assigned to selected treaty details var facString = grid.jqGrid("getCell", selRow, "INS_RI_FAC_INW_COMPANY") || "[]"; console.log(facString); var facJson = []; if (facString.length <= 0) { facJson = u.parseJson(facString); console.log(facJson); } for (var i in facJson) { $scope.grdInwdParticipant_grid.addRowData(facJson[i].ID, facJson[i]); } $("#PartipantsModal").modal(); } else { u.growl_warning("No FAC Detail selected, Please check and try again"); } }); $("#companyOk").click(function () { if ($scope.selectedfac) { //obtain the compnaies that have been selected var companies = u.get_grid_data($scope.grdInwdParticipant_grid); //console.log(companies); //alert(JSON.stringify(companies)); //assign the set companies to the selected treaty detials $scope.grdfacInward_grid.jqGrid("setCell", $scope.selectedfac, "INS_RI_FAC_INW_COMPANY", JSON.stringify(companies)); } else { u.growl_info("No selected FAC to update"); } $("#PartipantsModal").modal("hide"); u.clear_grid_data($scope.grdInwdParticipant_grid); }); $("#PartipantsModal .close, #companyClose").click(function () { u.clear_grid_data($scope.riCompany_grid); }); /*-------------------------- * FAC Inward Modal *-------------------------*/ $("#btnFACInward").on("click", function () { if (u.grid_empty($scope.homeowners_grid)) return u.growl_info("Please enter location details first"); if (!u.getSelRow($scope.homeowners_grid)) return u.growl_info("Please select a risk"); $("#MemberIwardModal").modal(); var message = "FAC Inward Details"; $("#textCoinsMember").text(message); }); /*------------------------- * FAC Inward Modal *-------------------------*/ $("#btnCoInsMember").on("click", function () { if (u.grid_empty($scope.homeowners_grid)) return u.growl_info("Please add a risk"); if (!u.getSelRow($scope.homeowners_grid)) return u.growl_info("Please select a risk"); $("#MemberIwardModal").modal(); var message = "Co-Insurance Details"; $("#textCoinsMember").text(message); }); /*------------------------- * Coinsurance Leader Modal *-------------------------*/ $("#btnCoInsLeader").on("click", function () { if (u.grid_empty($scope.homeowners_grid)) return u.growl_info("Please add a risk"); if (!u.getSelRow($scope.homeowners_grid)) return u.growl_info("Please select a risk"); $("#CoInsLeaderModal").modal(); }); /*----------------------------------- * Fac Buttons Enable/Disable *----------------------------------*/ //$("#POLH_INS_SOURCE").change(function () { // var polins = $("#POLH_INS_SOURCE").val(); // //alert(polins) // if (polins === "") { // u.growl_warning("Please select the Policy Insurance Source"); // } // else if (polins === "FIN") { // $("#btnFACInward").show(); // $("#btnCoInsMember").hide(); // $("#btnCoInsLeader").hide(); // } // else if (polins === "COM") { // $("#btnFACInward").hide(); // $("#btnCoInsMember").show(); // $("#btnCoInsLeader").hide(); // } // else if (polins === "COL") { // $("#btnFACInward").hide(); // $("#btnCoInsMember").hide(); // $("#btnCoInsLeader").show(); // } //}); $("#POLH_INS_SOURCE").blur(function () { var polins = $("#POLH_INS_SOURCE").val(); //alert(polins) if (polins === "") { u.growl_warning("Please select the Policy Insurance Source"); } else if (polins === "FIN") { $("#btnFACInward").show(); $("#btnCoInsMember").hide(); $("#btnCoInsLeader").hide(); } else if (polins === "COM") { $("#btnFACInward").hide(); $("#btnCoInsMember").show(); $("#btnCoInsLeader").hide(); } else if (polins === "COL") { $("#btnFACInward").hide(); $("#btnCoInsMember").hide(); $("#btnCoInsLeader").show(); } }); $scope.insSrcChange = function () { var polins = $("#POLH_INS_SOURCE").val(); if (polins === "DIR") { $("#btnFACInward").hide(); $("#btnCoInsMember").hide(); $("#btnCoInsLeader").hide(); } else if (polins === "FIN") { $("#btnFACInward").show(); $("#btnCoInsMember").hide(); $("#btnCoInsLeader").hide(); } else if (polins === "COM") { $("#btnFACInward").hide(); $("#btnCoInsMember").show(); $("#btnCoInsLeader").hide(); } else if (polins === "COL") { $("#btnFACInward").hide(); $("#btnCoInsMember").hide(); $("#btnCoInsLeader").show(); } }; /*----------------------------- * Risk Discount & Loading *-----------------------------*/ $("#btn_risk_discloading").click(function () { if (u.grid_empty($scope.homeowners_grid)) return u.growl_info("The risk Grid is empty"); if (u.getSelRow($scope.homeowners_grid)) { if (u.grid_empty(u.getGlobal("udwCoverGrid"))) return u.growl_info("Please add a risk cover first"); $("#DL_RISK_SYS_ID") .val(u.getCell($scope.homeowners_grid, u.getSelRow($scope.homeowners_grid), "HOP_SYS_ID")); $scope.hideShowDiscountLoading(); $("#RSK_DL_PREM_FC").val(parseFloat(u.getCell($scope.homeowners_grid, u.getSelRow($scope.homeowners_grid), "HOP_TOT_PREM_FC")) || 0); $("#RSK_DL_PREM_BC").val(parseFloat(u.getCell($scope.homeowners_grid, u.getSelRow($scope.homeowners_grid), "HOP_TOT_PREM_BC")) || 0); $("#riskDiscloadingModal").modal(); } else { u.growl_info("Please select a risk"); } }); /*----------------------------- * Discount & Loading retrieval *-----------------------------*/ $("#btnRiskDLdLOV").on("click", function () { $("#RiskDiscLoadModal").modal(); var grid = $scope.riskdiscload_grid; var rowIds = grid.jqGrid("getDataIDs"); //send parameters and get from the database s.discountloadingList(function (result) { if (result && result.length && result.length > 0) { //clear Grid $scope.riskdiscload_grid.jqGrid("clearGridData"); //fill grid for (var i in result) { $scope.riskdiscload_grid.addRowData(result[i]["MMO_CODE"], result[i]); } } }); }); /*----------------------------- * Discount & Loading function *-----------------------------*/ $scope.discLoadingUpdates = function () { //[grossPremFc=0, grossPremBc=1, vehBasicPrem=2, excessBoughtPrem = 3, ccLoadingPrem = 4, AddTPPDPrem = 5, RiskPrem = 6, TPBasicPrem = 7, extraSeatPrem = 8, ncdPrem = 9]; var disLoad = $scope.individualRiskPremiumCalculator(), grid = $scope.riskdiscloading_grid, currRate = parseFloat($("#POLH_CURRENCY_RATE").val() || 0); console.log(disLoad); //obtain the discount and loading grid data var rowIds = grid.jqGrid("getDataIDs"); var prem = 0, amnt = 0, netDlPrem = 0; for (var i in rowIds) { //obtain the percentage var perc = grid.jqGrid("getCell", rowIds[i], "DL_RATE"); //obtain the total premium to calculate the discount on - prem = ((DIS_LOAD[6]) || 0 + (DIS_LOAD[7] || 0)); switch (u.getCell(grid, rowIds[i], "DL_CODE")) { case "D002"://NORMAL DISCOUNT prem = (((disLoad[0]) || 0) - ((disLoad[9]) || 0)); break; case "L002"://NORMAL LOADING prem = ((disLoad[0]) || 0); break; } //check if the current row is a discount or it is a load amnt = u.getCell(grid, rowIds[i], "DL_TYPE") === "D" ? -(prem * (perc / 100)) : (prem * (perc / 100)); netDlPrem = ((disLoad[0] || 0)) + amnt; u.setCell(grid, rowIds[i], "DL_AMT_BC", (amnt * currRate)); u.setCell(grid, rowIds[i], "DL_AMT_FC", (amnt)); u.setCell(grid, rowIds[i], "DL_PREM_BC", (netDlPrem * currRate)); u.setCell(grid, rowIds[i], "DL_PREM_FC", (netDlPrem)); } }; //refresh Cover, Risk and policy Values on closing the Risk Cover Modal $("#btnCalcDisLoad").click($scope.discLoadingUpdates); /*------------------------------- * Risk Discount/Loading *--------------------------------*/ // $("#btn_add_riskdiscloading").on("click", function () { if (u.form_validation("#riskdiscloadingForm")) { //if ($("input[name='DL_CODE']").val() === "") return u.modalAlert("Please Enter Policy Excess No"); u.modal_confirmation("Are you sure you want to add the Risk Discount/Loading Details?", function () { var rowIds = $scope.riskdiscloading_grid.jqGrid("getDataIDs"); /*---------------------------------------------- * declare array to contain the codes to verify *--------------------------------------------*/ // var code = []; var cellValue = ""; /*------------------------------------------------------------ * iterate through the rows and check duplicate each of them *----------------------------------------------------------*/ // for (var i = 0, len = rowIds.length; i < len; i++) { var currRow = rowIds[i]; /*------------------------------------------------ * get value of the cell or column in an array *----------------------------------------------*/ //DL_CODE cellValue = $scope.riskdiscloading_grid.jqGrid("getCell", currRow, "DL_CODE"); code.push(cellValue); } /*---------------------------------------- * add if code is not found in the Grid *--------------------------------------*/ // if ($.inArray($("#DL_CODE").val(), code) < 0) { var formData = u.parse_form("#riskdiscloadingForm"); formData.DL_STATUS = "U"; formData.DL_CRTE_BY = u.getUserCode(); formData.DL_CRTE_DATE = u.get_date(); $scope.riskdiscloading_grid.addRowData(formData.ID, formData); u.hide_confirm(); u.growl_success("Risk Discount/Loading successfully added to grid"); u.form_reset("#riskdiscloadingForm"); $("#DL_RISK_SYS_ID") .val(u.getCell($scope.homeowners_grid, u.getSelRow($scope.homeowners_grid), "HOP_SYS_ID")); $("#RSK_DL_PREM_FC").val(parseFloat(u.getCell($scope.homeowners_grid, u.getSelRow($scope.homeowners_grid), "HOP_TOT_PREM_FC")) || 0); $("#RSK_DL_PREM_BC").val(parseFloat(u.getCell($scope.homeowners_grid, u.getSelRow($scope.homeowners_grid), "HOP_TOT_PREM_BC")) || 0); // $scope.discLoadingUpdates(); } else { u.hide_confirm(); u.growl_warning("Risk Discount/Loading with code " + cellValue + " Already exists"); } }); } else { u.growl_error("Please fill out the fields that are marked red"); } }); // Deleting $("#btn_remove_riskdiscloadings").on("click", function () { if (u.grid_empty($scope.riskdiscloading_grid)) return u.modalAlert("Grid is empty!!!"); var grid = $scope.riskdiscloading_grid; var rowId = grid.jqGrid("getGridParam", "selrow"); var recordStatus = grid.jqGrid("getCell", rowId, "DL_STATUS"); var code = grid.jqGrid("getCell", rowId, "DL_CODE"); var message = ""; /*--------------------------------- * Display modal message *------------------------------*/ // u.modal_confirmation("Are you sure you want to remove the Record?", function (e) { /*-------------------------------------------- * Remove newly added record before saving *------------------------------------------*/ // if (recordStatus == "U") { grid.jqGrid("delRowData", rowId); u.hide_confirm(); u.growl_success("Selected row successfully deleted"); u.form_reset("#riskdiscloadingForm"); } /*---------------------------------------- * Mark a record for deletion on saving *--------------------------------------*/ // if (recordStatus == "A") { grid.jqGrid("setCell", rowId, "DL_STATUS", "D"); $("#" + rowId, "#grdRiskDiscloading").css({ color: "red" }); u.hide_confirm(); u.growl_success("Selected row successfully marked for deletion, please click on the save button to save changes"); u.form_reset("#riskdiscloadingForm"); } else if (recordStatus == "D") { $("#" + rowId, "#grdRiskDiscloading").css({ color: "black" }); grid.jqGrid("setCell", rowId, "DL_STATUS", "A"); u.hide_confirm(); u.growl_success("Data successfully restored"); u.form_reset("#riskdiscloadingForm"); } $scope.discLoadingUpdates(); }); }); // Updating $("#btn_update_riskdiscloading").on("click", function () { if (u.grid_empty($scope.riskdiscloading_grid)) return u.growl_info("Excess grid is empty"); if (u.form_validation("#riskdiscloadingForm")) { u.modal_confirmation("Are you sure you want to update the selected Discount/Loading?", function () { var grid = $scope.riskdiscloading_grid; var rowId = grid.jqGrid("getGridParam", "selrow"); var code = grid.jqGrid("getCell", rowId, "DL_CODE"); if (code === $("input[name='DL_CODE']").val()) { var data = u.parse_form("#riskdiscloadingForm"); for (var i in data) { grid.jqGrid("setCell", rowId, i, data[i]); } u.hide_confirm(); u.growl_success("Risk Discount/Loading updated"); u.form_reset("#riskdiscloadingForm"); } else { u.hide_confirm(); u.growl_warning("Please select the correct row to edit"); } $scope.discLoadingUpdates(); }); } }); /*----------------------------------- * Hide/Show Risk Discount & Loading *----------------------------------*/ $scope.hideShowDiscountLoading = function () { //get the selected Risk ID var prodgrid = $scope.homeowners_grid; var selId = prodgrid.jqGrid("getGridParam", "selrow"); var prodRiskId = prodgrid.jqGrid("getCell", selId, "HOP_SYS_ID"); //get the discount and loading data var discLopadingGrid = $scope.polhdiscloading_grid; var rowIds = discLopadingGrid.jqGrid("getDataIDs"); //iterate through the discounts and loading rows to hide or show them for (var i = 0, len = rowIds.length; i < len; i++) { //get value of the cell or column in an array var currRow = rowIds[i]; var getRiskCovId = discLopadingGrid.jqGrid("getCell", currRow, "DL_RISK_SYS_ID"); if (getRiskCovId !== prodRiskId) { //hide if covers are not for the selected risk $("#" + currRow).hide(); } else if (getRiskCovId === prodRiskId) { //Show if covers are for the selected risk $("#" + currRow).show(); } } }; /*--------------------------------------------- * EML Select Options *--------------------------------------------*/ $("#HOP_RIPML").change(function () { if ($(this).val() === "N") { $("#HOP_PML").attr("readonly", "readonly"); // $("#HOP_PML").prop("disabled", "disabled"); $("#HOP_PML").val(""); } else if ($(this).val() === "Y") { $("#HOP_PML").prop("readonly", false); //$("#HOP_PML").removeAttr("readonly"); } else { $("#HOP_PML").val(""); $("#HOP_PML").attr("readonly", "readonly"); } }); /*--------------------------------------------- * Excess Select Options *--------------------------------------------*/ //$("form select[name='HOP_EXCESS_APP']").change(function () { // if ($(this).val() === "N") { // $("#HOP_EXCESS_PERC").prop("disabled", "disabled"); // // $("#HOP_EXCESS_PERC").prop("disabled", "disabled"); // } // else if ($(this).val() === "Y") { // $("#HOP_EXCESS_PERC").removeAttr("disabled"); // // $("#HOP_EXCESS_PERC").removeAttr("readonly"); // //$("#HOP_EXCESS_PERC").setAttr("required"); // } // else { // $("#HOP_EXCESS_PERC").val(""); // $("#HOP_EXCESS_PERC").prop("disabled", "disabled"); // } //}); $scope.RICalculations = function () { if ($("#POLH_TXN_STATE").val() === "P") { u.clear_grid_data(u.getGlobal("udwRIGrid")); if (u.getGlobal("RIData")) { u.bigDataPopulate(u.getGlobal("udwRIGrid"), u.getGlobal("RIData")); } return; } var riData = []; u.get_grid_data($scope.homeloc_grid).ForEach(function (risk) { riData.Add({ RI_DESCRIPTION: $scope.riDisciption(risk), RI_SI_FC: risk.HOL_RI_SI_FC, RI_SI_BC: risk.HOL_RI_SI_BC, RI_PREM_BC: risk.HOL_RI_PREM_BC, RI_PREM_FC: risk.HOL_RI_PREM_FC, RISK_ID: risk.HOL_SYS_ID, EML_PERC: risk.HOL_EML_PERC, FROM_DATE: risk.HOL_START_DATE, TO_DATE: risk.HOL_END_DATE, TOT_SI_FC: risk.HOL_SI_FC, TOT_SI_BC: risk.HOL_SI_BC, TOT_PREM_BC: risk.HOL_TOT_PREM_BC, TOT_PREM_FC: risk.HOL_TOT_PREM_FC, UW_YEAR: risk.HOL_UW_YEAR, RI_STATUS: risk.HOL_STATUS }); }); // u.getGlobal("RiCalculations")(riData, $scope.treatyData); var ri = u.getGlobal("RiCalculations")(riData, $scope.treatyData) || []; u.clear_grid_data(u.getGlobal("udwRIGrid")); u.bigDataPopulate(u.getGlobal("udwRIGrid"), ri); u.getGlobal("showRICount")(); }; $scope.PolicyCalculations = function () { // $scope.loader(function () { //$scope.SumCoverRiskValues(); $scope.premiumSummarizer(); $scope.RICalculations(); u.getGlobal("facOutwardCalUpdate")(); $scope.policyCommissionSummarizer(); if ($("#POLH_TXN_STATE").val() === "E") { $scope.financialDiff($scope.getPolicyFormData()); $("#suspensionDetails").show(); } // }); }; $scope.PolicyCalculationsNew = function () { $scope.loader(function () { //$scope.SumCoverRiskValues(); $scope.premiumSummarizer(); //$scope.RICalculations(); $scope.policyCommissionSummarizer(); if ($("#POLH_TXN_STATE").val() === "E") { $scope.financialDiff($scope.getPolicyFormData()); $("#suspensionDetails").show(); } }); }; u.setGlobal("PolicyCalculations", $scope.PolicyCalculations); $("#HOP_RIC_YN").change(function () { switch ($(this).val()) { case "Y": $("#combination").show(0); $("#HOP_RIC_CODE").prop("required", "required"); break; case "N": $("#combination").hide(0); $("#HOP_RIC_CODE").val(""); $("#RIC_NAME").val(""); $("#HOP_RIC_CODE").removeAttr("required"); break; default: } }); /*---------------------------------- * Condition & Clauses excel Export *---------------------------------*/ $("#clause_export_btn").click(function () { u.excel_export($scope.clauses_grid, ["SYS_ID"], "Condition_Clauses_List_Excel"); }); $("#HOP_PML").blur(function () { u.getGlobal("max100")("HOP_PML"); }); $("#btnDiscountLoadinOk").click(function () { var selRiskId = u.getSelRow($scope.homeowners_grid); //fetch discounts var discounts = u.get_grid_data(u.getGlobal("udwRskDiscLoadingGrid")); //calculate total discounts and add to NCD discount amount var totalDiscountFc = discounts.Where(dl => dl.DL_TYPE === "D").Sum(dl => parseFloat(dl.DL_AMT_FC)); var totalDiscountBc = discounts.Where(dl => dl.DL_TYPE === "D").Sum(dl => parseFloat(dl.DL_AMT_BC)); var totalLoadFc = discounts.Where(dl => dl.DL_TYPE === "L").Sum(dl => parseFloat(dl.DL_AMT_FC)); var totalLoadBc = discounts.Where(dl => dl.DL_TYPE === "L").Sum(dl => parseFloat(dl.DL_AMT_BC)); var discountsFc = parseFloat($scope.homeowners_grid.jqGrid("getCell", selRiskId, "HOP_DISC_FC") || 0); var discountsBc = parseFloat($scope.homeowners_grid.jqGrid("getCell", selRiskId, "HOP_DISC_BC") || 0); var loadingsFc = parseFloat($scope.homeowners_grid.jqGrid("getCell", selRiskId, "HOP_LOAD_FC") || 0); var loadingsBc = parseFloat($scope.homeowners_grid.jqGrid("getCell", selRiskId, "HOP_LOAD_BC") || 0); var newDiscountsFc = totalDiscountFc + discountsFc; var newDiscountsBc = totalDiscountBc + discountsBc; var newLoadingsFc = totalLoadFc + loadingsFc; var newLoadingsBc = totalLoadBc + loadingsBc; u.setCell($scope.homeowners_grid, selRiskId, "HOP_DISC_FC", newDiscountsFc.toFixed(2)); u.setCell($scope.homeowners_grid, selRiskId, "HOP_DISC_BC", newDiscountsBc.toFixed(2)); u.setCell($scope.homeowners_grid, selRiskId, "HOP_LOAD_FC", newLoadingsFc.toFixed(2)); u.setCell($scope.homeowners_grid, selRiskId, "HOP_LOAD_BC", newLoadingsBc.toFixed(2)); //update risk prem var riskPremFc = parseFloat(u.getCell($scope.homeowners_grid, selRiskId, "HOP_RISK_PREM_FC") || 0); var riskPremBc = parseFloat(u.getCell($scope.homeowners_grid, selRiskId, "HOP_RISK_PREM_BC") || 0); riskPremFc += newLoadingsFc; riskPremFc -= newDiscountsFc; riskPremBc += newLoadingsBc; riskPremBc -= newDiscountsBc; u.setCell($scope.homeowners_grid, selRiskId, "HOP_RISK_PREM_FC", riskPremFc.toFixed(2)); u.setCell($scope.homeowners_grid, selRiskId, "HOP_RISK_PREM_BC", riskPremBc.toFixed(2)); u.setCell($scope.homeowners_grid, selRiskId, "INS_UDW_RISK_DISCLOAD", JSON.stringify(discounts)); $scope.PolicyCalculations(); $("#riskDiscloadingModal").modal("hide"); u.clear_grid_data(u.getGlobal("udwRskDiscLoadingGrid")); }); $scope.sectionCovers = []; $scope.cumpolsoryYN = ""; //$("#HOP_SEC_CODE").change(function() { $scope.sectionChange = function () { //if ($(this).val() === "2") { // $("#HOP_RIPML").val("Y"); // $("#HOP_PML").val(100); //} else { // $("#HOP_RIPML").val("N"); // $("#HOP_PML").val(""); //} s.get_section_covers({ "PRD_CODE": $("#HOP_SEC_CODE").val(), "CUR_RATE": $("#POLH_CURRENCY_RATE").val() }, function (response) { if (response.state) { if (response.data.riskCoverList.length > 0) { $scope.sectionCovers = []; var riskCovers = response.data.riskCoverList; riskCovers.ForEach(c => { c["RCOV_NAME"] = c["MS_UDW_COVERS"]["CVR_NAME"]; c["RCOV_TYPE"] = c["MS_UDW_COVERS"]["CVR_TYPE"]; // c["RCOV_RI_YN"] = c["MS_UDW_COVERS"]["CVR_RI_APPLICABLE"]; c["CVR_USER_PREMIUM"] = c["MS_UDW_COVERS"]["CVR_USER_PREMIUM"]; c["RCOV_PREM_REFUND"] = c["MS_UDW_COVERS"]["RCOV_PREM_REFUND"]; c["RCOV_RATE_CHANGE"] = c["MS_UDW_COVERS"]["CVR_RATE_CHANGE"]; c["RCOV_SI_CHANGE"] = c["MS_UDW_COVERS"]["CVR_SI_CHANGE"]; c["RCOV_COVER_LEVEL"] = c["MS_UDW_COVERS"]["RCOV_COVER_LEVEL"]; c["RCOV_ANNL_PREM_FC"] = 0.00; c["RCOV_ANNL_PREM_BC"] = 0.00; c["RPCOV_RNW_NO"] = parseInt($("#POLH_RENEW_SER_NO").val() || 0); //$scope.cover_grid.addRowData(c.ID, c); $scope.sectionCovers.push(c); }); } else { $scope.sectionCovers = []; } if (response.data.section && !jQuery.isEmptyObject(response.data.section)) { $scope.cumpolsoryYN = response.data.section.HON_COMPULSORY_YN; var section = response.data.section; if (section.HON_EXCESS_YN === "Y") { $("#excessDiv").removeClass("m-hide"); $("#HOP_EXCESS_APP").attr("required", "required"); } else { $("#excessDiv").addClass("m-hide"); $("#HOP_EXCESS_APP").prop("required", false); } if (section.HON_EML_YN === "Y") { if (section.HON_EML_DEFAULT !== null) { $("#HOP_PML").val(section.HON_EML_DEFAULT); $("#HOP_RIPML").val("Y"); $("#HOP_RIPML").trigger("change"); } } else { $("#HOP_PML").val(""); $("#HOP_RIPML").val("N"); } } } }); }; /* * RISK COVER DISCOUNTS/LOADINGS OPEN BUTTON */ $("#btn_cv_discloading").click(function () { //Open Modal const grid = u.getGlobal("udwCoverGrid"); if (u.grid_empty(grid)) return u.growl_info("Grid is empty!"); if ($("#RCOV_CODE").val() === "") return u.growl_info("Please select the cover for which you want to apply discounts/loadings"); //var discLoadGrid = u.getGlobal("udwCoverDiscLoading"); var discLoadGrid = u.getGlobal("RskCvDiscLoadingGrid"); u.clear_grid_data(discLoadGrid); var coverGrid = u.getGlobal("udwCoverGrid"); var selectedCover = u.getSelRow(coverGrid); var coverDiscLoads = coverGrid.jqGrid("getCell", selectedCover, "INS_UDW_COVER_DISCLOAD") || "[]"; coverDiscLoads = u.parseJson(coverDiscLoads); console.log(coverDiscLoads); if (coverDiscLoads.length > 0) { u.grid_populate(discLoadGrid, "", coverDiscLoads); } var grossPremFc = coverGrid.jqGrid("getCell", selectedCover, "RCOV_GROSS_PREM_FC"); var grossPremBc = coverGrid.jqGrid("getCell", selectedCover, "RCOV_GROSS_PREM_BC"); var rCovId = coverGrid.jqGrid("getCell", selectedCover, "RCOV_SYS_ID"); //u.fill_form({ // DL_PREM_BC: grossPremBc, // DL_PREM_FC: grossPremFc //}, "#coverdiscloadingForm"); u.fill_form({ DL_PREM_BC: grossPremBc, DL_PREM_FC: grossPremFc, DL_RCOV_SYS_ID: rCovId }, "#riskcoverdiscloadingForm"); $("#riskCvDiscloadingModal").modal(); }); /* * LOCATION GRID BUTTON FUNCTIONS */ $("#btn_add_loc").click(function () { if (u.form_validation("#polheaderForm")) { if (jQuery.isEmptyObject($scope.treatyData)) { s.getProductTreaty($("#POLH_SUB_CLASS_CODE").val(), $("#POLH_POL_UW_YEAR").val(), $("#POLH_CURRENCY").val(), function (response) { if (response.state && response.data) { $scope.treatyData = response.data; $("#LocationModal").modal(); u.form_reset("#homeLocationForm"); $("#HOL_CURRENCY").val($("#POLH_CURRENCY").val()); $("#HOL_CURRENCY_RATE").val($("#POLH_CURRENCY_RATE").val()); $("#HOL_START_DATE").val($("#POLH_POL_START_DATE").val()); $("#HOL_END_DATE").val($("#POLH_POL_END_DATE").val()); $("#HOL_UW_YEAR").val($("#POLH_POL_UW_YEAR").val()); $("#HOL_PERIOD_DAYS").val($("#POLH_POL_DAYS").val()); $("#HOL_VALUE_ADDED_TAX_PERC").val($("#POLH_VAT_PERC").val()); $("#HOL_VALUE_ADDED_TAX_YN").val($("#POLH_VAT_YN").val()); u.lovDropDown("#HOL_EARTHQ_ZONE", "get_lov_eqzone"); u.growl_success("Treaty setup fetched successfully"); } else { u.growl_error("Treaty not setup for the current underwriting year."); } }); } else { $("#LocationModal").modal(); $("#HOL_CURRENCY").val($("#POLH_CURRENCY").val()); $("#HOL_CURRENCY_RATE").val($("#POLH_CURRENCY_RATE").val()); $("#HOL_START_DATE").val($("#POLH_POL_START_DATE").val()); $("#HOL_END_DATE").val($("#POLH_POL_END_DATE").val()); $("#HOL_UW_YEAR").val($("#POLH_POL_UW_YEAR").val()); $("#HOL_PERIOD_DAYS").val($("#POLH_POL_DAYS").val()); } $("#btn_update_location_details").addClass("m-hide"); $("#btn_add_location_details").removeClass("m-hide"); } else { u.growl_warning("Please fill the Policy Header form and try again"); }; }); $("#btn_edit_loc").click(function () { if (!u.getSelRow($scope.homeloc_grid)) return u.growl_info("Please select a location below"); $("#btn_update_location_details").removeClass("m-hide"); $("#btn_add_location_details").addClass("m-hide"); $("#LocationModal").modal(); }); $("#btn_add_location_details").on("click", function () { if (u.form_validation("#homeLocationForm")) { var gridData = u.get_grid_data($scope.homeloc_grid); if (gridData.Any(reg => reg.HOL_REGION_CODE === $("#HOL_REGION_CODE").val() && reg.HOL_AREA_CODE === $("#HOL_AREA_CODE").val() && reg.HOL_LOC_CODE === $("#HOL_LOC_CODE").val())) { u.modalWarning("There already exists in the grid a record with the same Region, Area, and Location. Please make sure you are not entering a duplicate entry"); } u.modalConfirmationAsync("Are you sure you want to add the Location Details?", async function () { var rowIds = $scope.homeloc_grid.jqGrid("getDataIDs"); /*---------------------------------------------- * declare array to contain the codes to verify *--------------------------------------------*/ // var code = []; /*------------------------------------------------------------ * iterate through the rows and check duplicate each of them *----------------------------------------------------------*/ // for (var i = 0, len = rowIds.length; i < len; i++) { var currRow = rowIds[i]; /*------------------------------------------------ * get value of the cell or column in an array *----------------------------------------------*/ // var region = $scope.homeloc_grid.jqGrid("getCell", currRow, "HOL_REGION_CODE"); var area = $scope.homeloc_grid.jqGrid("getCell", currRow, "HOL_AREA_CODE"); var location = $scope.homeloc_grid.jqGrid("getCell", currRow, "HOL_LOC_CODE"); code.push(`${region}${area}${location}`); } /*---------------------------------------- * add if code is not found in the Grid *--------------------------------------*/ // if ($.inArray(`${$("#HOL_REGION_CODE").val()}${$("#HOL_AREA_CODE").val()}${$("#HOL_LOC_CODE").val()}`, code) < 0) { var formData = u.parse_form("#homeLocationForm"); formData.HOL_STATUS = "U"; formData.HOL_CRTE_BY = u.getUserCode(); formData.HOL_SYS_ID = await s.getSequenceAsync("INS_UDW_HOME_LOC_SEQ"); formData.HOL_VALUE_ADDED_TAX_PERC = parseFloat($("#POLH_VAT_PERC").val() || 0) || 0; formData.HOL_VALUE_ADDED_TAX_YN = $("#POLH_VAT_YN").val() || "N"; $scope.homeloc_grid.addRowData(undefined, formData); u.hide_confirm(); u.growl_success("Location successfully added to grid"); $("#LocationModal").modal("hide"); u.form_reset("#homeLocationForm"); u.getGlobal("showRiskCount")(u.get_grid_data($scope.homeloc_grid).Where(x => x.HOL_STATUS !== "D")); } else { u.hide_confirm(); u.growl_warning(`Location with the same region, area and location Already exists`); } }); } else { u.growl_error("Please fill out the fields that are marked red"); } }); $("#btn_remove_location_details").click(async function () { if (u.grid_empty($scope.homeloc_grid)) return u.growl_info("Location grid is empty"); var selectedLocation = u.getSelRow($scope.homeloc_grid); if (!selectedLocation) return u.growl_info("Select a location to remove"); var thisLocation = u.getRow(selectedLocation, $scope.homeloc_grid); var locId = parseInt($scope.homeloc_grid.jqGrid('getCell', selectedLocation, 'HOL_SYS_ID')); u.modalConfirmationAsync("Are you sure you want to remove this location", async function () { switch (thisLocation.HOL_STATUS) { case "U": { if (!u.grid_empty($scope.reinsurance_grid)) { var newRi = []; u.get_grid_data($scope.reinsurance_grid).ForEach(x => { if (parseInt(x.TTH_RISK_SYS_ID) !== locId) { newRi.push(x); } }); u.clear_grid_data($scope.reinsurance_grid); u.grid_populate($scope.reinsurance_grid, "", newRi); } $scope.homeloc_grid.jqGrid('delRowData', selectedLocation); u.clear_grid_data($scope.homeowners_grid); u.hide_confirm(); u.growl_success("Selected location successfully deleted, and premium calculations updated"); } break; case "A": { if (!u.grid_empty($scope.reinsurance_grid)) { var ri = u.get_grid_data($scope.reinsurance_grid); ri.ForEach(x => { if (parseInt(x.TTH_RISK_SYS_ID) === locId) { x.TTH_STATUS = "D"; } }); u.clear_grid_data($scope.reinsurance_grid); u.grid_populate($scope.reinsurance_grid, "", ri); } $scope.homeloc_grid.jqGrid('setCell', selectedLocation, 'HOL_STATUS', 'D'); $('#' + selectedLocation, '#gridHomeLoc').css({ color: 'red' }); u.hide_confirm(); u.growl_hide("Selected location successfully marked for deletion, please click on the save button to save changes"); } break; case "D": { if (!u.grid_empty($scope.reinsurance_grid)) { var ri = u.get_grid_data($scope.reinsurance_grid); ri.ForEach(x => { if (parseInt(x.TTH_RISK_SYS_ID) === locId) { x.TTH_STATUS = "A"; } }); u.clear_grid_data($scope.reinsurance_grid); u.grid_populate($scope.reinsurance_grid, "", ri); } $('#' + selectedLocation, '#gridHomeLoc').css({ color: 'black' }); $scope.homeloc_grid.jqGrid('setCell', selectedLocation, 'HOL_STATUS', 'A'); u.hide_confirm(); u.growl_hide("Location successfully restored and policy calculations updated"); } break; } u.form_reset("#homeLocationForm"); await $scope.RecalculatePremium(); u.getGlobal("showRiskCount")(u.get_grid_data($scope.homeloc_grid).Any() ? u.get_grid_data($scope.homeloc_grid).Where(x => x.HOL_STATUS !== "D") : []); }); }); $("#btn_update_location_details").click(function () { if (u.grid_empty($scope.homeloc_grid)) return u.growl_info("Location grid is empty"); var selectedLocation = u.getSelRow($scope.homeloc_grid); if (!selectedLocation) return u.growl_info("Select a location to update"); if (u.form_validation("#homeLocationForm")) { u.modal_confirmation("Are you sure you want to update the selected Location?", function () { var grid = $scope.homeloc_grid; var code = parseInt(grid.jqGrid("getCell", selectedLocation, "HOL_SYS_ID")); if (code === parseInt($("#HOL_SYS_ID").val())) { var data = u.parse_form("#homeLocationForm"); //console.log(data); //console.log(selectedLocation); //console.log(thisLocation); for (var i in data) { grid.jqGrid("setCell", selectedLocation, i, data[i]); } u.hide_confirm(); u.growl_success("Location details updated"); $("#LocationModal").modal("hide"); u.form_reset("#homeLocationForm"); } else { u.hide_confirm(); u.growl_warning("Please select the correct row to edit"); } }); } }); $scope.locationSummarizer = function () { var totalSiFc = 0, totalSiBc = 0, totalRiSiBc = 0, totalRiSiFc = 0; var totalPremFc = 0, totalPremBc = 0, totalRiPremBc = 0, totalRiPremFc = 0, totalRiskPremBc = 0, totalRiskPremFc = 0; var totalDiscFc = 0, totalDiscBc = 0, totalLoadFc = 0, totalLoadBc = 0; var locations = u.get_grid_data($scope.homeloc_grid); locations.ForEach(loc => { const homeRisks = u.parseJson(loc.INS_UDW_HOME_OWNERS); homeRisks.ForEach(r => { if (r.HOP_STATUS !== "D") { totalSiBc += parseFloat(r.HOP_SI_BC || 0); totalSiFc += parseFloat(r.HOP_SI_FC || 0); totalRiSiBc += parseFloat(r.HOP_RI_SI_BC || 0); totalRiSiFc += parseFloat(r.HOP_RI_SI_FC || 0); totalPremBc += parseFloat(r.HOP_TOT_PREM_BC || 0); totalPremFc += parseFloat(r.HOP_TOT_PREM_FC || 0); totalRiPremBc += parseFloat(r.HOP_RI_PREM_BC || 0); totalRiPremFc += parseFloat(r.HOP_RI_PREM_FC || 0); totalRiskPremBc += parseFloat(r.HOP_RISK_PREM_BC || 0); totalRiskPremFc += parseFloat(r.HOP_RISK_PREM_FC || 0); totalDiscBc += parseFloat(r.HOP_DISC_BC || 0); totalDiscFc += parseFloat(r.HOP_DISC_FC || 0); totalLoadBc += parseFloat(r.HOP_LOAD_BC || 0); totalLoadFc += parseFloat(r.HOP_LOAD_FC || 0); } }); loc.HOL_SI_FC = totalSiFc; loc.HOL_SI_BC = totalSiBc; loc.HOL_TOT_PREM_FC = totalPremFc; loc.HOL_TOT_PREM_BC = totalPremBc; loc.HOL_RISK_PREM_FC = totalRiskPremFc; loc.HOL_RISK_PREM_BC = totalRiskPremBc; loc.HOL_RI_SI_FC = totalRiSiFc; loc.HOL_RI_SI_BC = totalRiSiBc; loc.HOL_RI_PREM_FC = totalRiPremFc; loc.HOL_RI_PREM_BC = totalRiPremBc; loc.HOL_DISC_FC = totalDiscFc; loc.HOL_DISC_BC = totalDiscBc; loc.HOL_LOAD_FC = totalLoadFc; loc.HOL_LOAD_BC = totalLoadBc; /*----------------------------- * VALUE ADDED TASK CALCULATION *----------------------------*/ let policy = u.parse_form("#polheaderForm"); loc.HOL_VALUE_ADDED_TAX_YN = policy.POLH_VAT_YN || loc.HOL_VALUE_ADDED_TAX_YN; loc.HOL_VALUE_ADDED_TAX_PERC = policy.POLH_VAT_PERC || parseFloat(loc.HOL_VALUE_ADDED_TAX_PERC || 0) || 0; $scope.valueAddTaxCalculation(loc); totalSiFc = 0; totalSiBc = 0; totalRiSiBc = 0; totalRiSiFc = 0; totalPremFc = 0; totalPremBc = 0; totalRiPremBc = 0; totalRiPremFc = 0; totalRiskPremBc = 0; totalRiskPremFc = 0; totalDiscFc = 0; totalDiscBc = 0; totalLoadFc = 0; totalLoadBc = 0; }); u.clear_grid_data($scope.homeloc_grid); u.grid_populate($scope.homeloc_grid, "", locations); }; $scope.valueAddTaxCalculation = function (v) { v.HOL_VALUE_ADDED_TAX_YN = v.HOL_VALUE_ADDED_TAX_YN || "N"; v.HOL_VALUE_ADDED_TAX_PERC = parseFloat(v.HOL_VALUE_ADDED_TAX_PERC || 0) || 0; v.HOL_VALUE_ADDED_TAX_FC = parseFloat(parseFloat(v.HOL_RISK_PREM_FC * parseFloat(v.HOL_VALUE_ADDED_TAX_PERC || 0) * 0.01).toFixed(2)) || 0; v.HOL_VALUE_ADDED_TAX_BC = parseFloat(parseFloat(v.HOL_RISK_PREM_BC * parseFloat(v.HOL_VALUE_ADDED_TAX_PERC || 0) * 0.01).toFixed(2)) || 0; v.HOL_VALUE_ADDED_TAX_RATE_FC = v.HOL_VALUE_ADDED_TAX_YN == "Y" ? parseFloat(v.HOL_VALUE_ADDED_TAX_FC) : 0; v.HOL_VALUE_ADDED_TAX_RATE_BC = v.HOL_VALUE_ADDED_TAX_YN == "Y" ? parseFloat(v.HOL_VALUE_ADDED_TAX_BC) : 0; }; /* * FLOODZONE */ $("#HOL_REGION_CODE").change(async function () { let result = $(this).val(); await u.lovDropDownAsync("#HOL_FDZONE", "get_lov_fdzoneAsync", { "region": result || null }); }); $("#HOL_EML_PERC").blur(function () { u.getGlobal("max100")("HOL_EML_PERC"); }); $("#HOL_EML_YN").change(function () { if ($(this).val() === "Y") { $("#HOL_EML_PERC").prop("readonly", false); $("#HOL_EML_PERC").attr("required", "required"); } else if ($(this).val() === "N") { $("#HOL_EML_PERC").attr("readonly", "readonly"); $("#HOL_EML_PERC").prop("required", false); } }); /* * EXCESS FUNCTIONS */ $("#HOP_EXCESS_APP").change(async function () { u.getGlobal("excessTypeChange")("HOP_EXCESS_APP", "HOP_EXCESS_PERC", "HOP_EXCESS_MIN", "HOP_EXCESS_MAX", "HOP_EXCESS_NAR"); }); $("#HOP_EXCESS_PERC").blur(function () { u.getGlobal("excessAmtBlur")("HOP_EXCESS_PERC", "HOP_EXCESS_NAR", "HOP_EXCESS_APP", "HOP_EXCESS_MIN", "HOP_EXCESS_MAX"); }); $("#HOP_EXCESS_MIN").blur(function () { u.getGlobal("excessMinMaxBlur")("HOP_EXCESS_MIN", "HOP_EXCESS_NAR", "Min"); }); $("#HOP_EXCESS_MAX").blur(function () { u.getGlobal("excessMinMaxBlur")("HOP_EXCESS_MAX", "HOP_EXCESS_NAR", "Max"); }); $("#btn_reset_home_risk").click(function () { u.modal_confirmation("Are you sure you want to reset the form?", function () { u.form_reset("#homeForm"); u.growl_success("Form reset successfully"); }); }); $("#POLH_CURRENCY_RATE, #POLH_CURRENCY").on("change blur", async function () { var rate = parseFloat($("#POLH_CURRENCY_RATE").val()); var currency = $("#POLH_CURRENCY").val(); // check for Premium pasis const premBasis = $("#POLH_PREM_BASIS").val(); var polNumDays = parseInt($("#POLH_POL_DAYS").val()); var proRataPerc = 0; switch (premBasis) { case "SP": var shortPeriod = u.getGlobal("shortPeriods").Where(s => s.days === polNumDays); proRataPerc = parseFloat(shortPeriod[0].perc) * 0.01; break; case "PR": proRataPerc = parseFloat(polNumDays / 365); break; case "FP": proRataPerc = 1; break; } if (!u.grid_empty($scope.homeloc_grid)) { var locations = u.get_grid_data($scope.homeloc_grid); locations.ForEach(loc => { loc.HOL_CURRENCY_RATE = rate; loc.HOL_CURRENCY = currency; //loc.HOL_ADJ_PREM_BC = parseFloat(loc.HOL_ADJ_PREM_FC || 0) * rate; //loc.HOL_RI_SI_BC = parseFloat(loc.HOL_RI_SI_FC || 0) * rate; //loc.HOL_RI_PREM_BC = parseFloat(loc.HOL_RI_PREM_FC || 0) * rate; //loc.HOL_LOAD_BC = parseFloat(loc.HOL_LOAD_FC || 0) * rate; //loc.HOL_DISC_BC = parseFloat(loc.HOL_DISC_FC || 0) * rate; //loc.HOL_RISK_PREM_BC = parseFloat(loc.HOL_RISK_PREM_FC || 0) * rate; //loc.HOL_SI_BC = parseFloat(loc.HOL_SI_FC || 0) * rate; //loc.HOL_TOT_PREM_BC = parseFloat(loc.HOL_TOT_PREM_FC || 0) * rate; loc.INS_UDW_HOME_OWNERS = u.parseJson(loc.INS_UDW_HOME_OWNERS); loc.INS_UDW_HOME_OWNERS.ForEach(risk => { //risk.HOP_RI_PREM_BC = parseFloat(risk.HOP_RI_PREM_FC || 0) * rate; //risk.HOP_RI_SI_BC = parseFloat(risk.HOP_RI_SI_FC || 0) * rate; //risk.HOP_COMMISSION_BC = parseFloat(risk.HOP_COMMISSION_FC || 0) * rate; //risk.HOP_COMP_FEE_BC = parseFloat(risk.HOP_COMP_FEE_FC || 0) * rate; //risk.HOP_LOAD_BC = parseFloat(risk.HOP_LOAD_FC || 0) * rate; //risk.HOP_DISC_BC = parseFloat(risk.HOP_DISC_FC || 0) * rate; //risk.HOP_ADJ_PREM_BC = parseFloat(risk.HOP_ADJ_PREM_FC || 0) * rate; //risk.HOP_RISK_PREM_BC = parseFloat(risk.HOP_RISK_PREM_FC || 0) * rate; //risk.HOP_SI_BC = parseFloat(risk.HOP_SI_FC || 0) * rate; //risk.HOP_TOT_PREM_BC = parseFloat(risk.HOP_TOT_PREM_FC || 0) * rate; risk.HOP_CURRENCY_RATE = rate; risk.HOP_CURRENCY = currency; // Covers risk.INS_UWD_RISK_COVERS = u.parseJson(risk.INS_UWD_RISK_COVERS); risk.INS_UWD_RISK_COVERS.ForEach(cov => { cov.RCOV_LOAD_BC = parseFloat(parseFloat(cov.RCOV_LOAD_FC || 0) / rate).toFixed(2); cov.RCOV_DISC_BC = parseFloat(parseFloat(cov.RCOV_DISC_FC || 0) * rate).toFixed(2); cov.RCOV_SI_BC = parseFloat(parseFloat(cov.RCOV_SI_FC || 0) * rate).toFixed(2); cov.RCOV_ANNL_PREM_BC = parseFloat(parseFloat((cov.RCOV_ANNL_PREM_FC || 0) * rate)).toFixed(2); cov.RCOV_GROSS_PREM_BC = parseFloat(parseFloat(cov.RCOV_ANNL_PREM_FC * (proRataPerc) * rate)).toFixed(2); cov.RCOV_NET_PREM_BC = parseFloat(parseFloat(cov.RCOV_ANNL_PREM_FC * (proRataPerc) * rate)).toFixed(2); cov.INS_UDW_COVER_DISCLOAD = u.parseJson(cov.INS_UDW_COVER_DISCLOAD); cov.INS_UDW_COVER_DISCLOAD.ForEach(d => { d.DL_PREM_BC = parseFloat(parseFloat(d.DL_PREM_FC || 0) * rate).toFixed(2); }); }); risk.INS_UWD_RISK_COVERS = JSON.stringify(risk.INS_UWD_RISK_COVERS); //fees risk.INS_UDW_HOME_OWNERS_FEES = u.parseJson(risk.INS_UDW_HOME_OWNERS_FEES); risk.INS_UDW_HOME_OWNERS_FEES.ForEach(fee => { fee.HOP_FEE_FC_AMOUNT = parseFloat(fee.HOP_FEE_BC_AMOUNT / rate).toFixed(2); }); risk.INS_UDW_HOME_OWNERS_FEES = JSON.stringify(risk.INS_UDW_HOME_OWNERS_FEES); }); loc.INS_UDW_HOME_OWNERS = JSON.stringify(loc.INS_UDW_HOME_OWNERS); }); u.clear_grid_data($scope.homeloc_grid); u.grid_populate($scope.homeloc_grid, "", locations); // Policy fees update var polFees = u.get_grid_data($scope.polfees_grid); polFees.ForEach(x => { x.POL_FEE_FC_AMOUNT = (parseFloat(x.POL_FEE_BC_AMOUNT) / parseFloat(rate)).toFixed(2); }); u.clear_grid_data($scope.polfees_grid); u.grid_populate($scope.polfees_grid, "", polFees); await $scope.RecalculatePremium(); $("#policyCalculationsModal").modal("hide"); } }); $("#btnResetLocation").click(function () { u.modal_confirmation("Are you sure you want to reset the form?", function () { u.form_rset("#homeLocationForm"); u.growl_success("Form cleared successfully"); }); }); /* * LOCATION RESUMMARIZER */ $scope.locationReSummarizer = function () { var totalSiFc = 0, totalSiBc = 0, totalRiSiBc = 0, totalRiSiFc = 0; var totalPremFc = 0, totalPremBc = 0, totalRiPremBc = 0, totalRiPremFc = 0, totalRiskPremBc = 0, totalRiskPremFc = 0; var totalDiscFc = 0, totalDiscBc = 0, totalLoadFc = 0, totalLoadBc = 0; var locations = u.get_grid_data($scope.homeloc_grid); locations.ForEach(loc => { const homeRisks = u.parseJson(loc.INS_UDW_HOME_OWNERS); homeRisks.ForEach(r => { if (r.HOP_STATUS !== "D") { totalSiBc += parseFloat(r.HOP_SI_BC || 0); totalSiFc += parseFloat(r.HOP_SI_FC || 0); totalRiSiBc += parseFloat(r.HOP_RI_SI_BC || 0); totalRiSiFc += parseFloat(r.HOP_RI_SI_FC || 0); totalPremBc += parseFloat(r.HOP_TOT_PREM_BC || 0); totalPremFc += parseFloat(r.HOP_TOT_PREM_FC || 0); totalRiPremBc += parseFloat(r.HOP_RI_PREM_BC || 0); totalRiPremFc += parseFloat(r.HOP_RI_PREM_FC || 0); totalRiskPremBc += parseFloat(r.HOP_RISK_PREM_BC || 0); totalRiskPremFc += parseFloat(r.HOP_RISK_PREM_FC || 0); totalDiscBc += parseFloat(r.HOP_DISC_BC || 0); totalDiscFc += parseFloat(r.HOP_DISC_FC || 0); totalLoadBc += parseFloat(r.HOP_LOAD_BC || 0); totalLoadFc += parseFloat(r.HOP_LOAD_FC || 0); } }); loc.HOL_SI_FC = totalSiFc; loc.HOL_SI_BC = totalSiBc; loc.HOL_TOT_PREM_FC = totalPremFc; loc.HOL_TOT_PREM_BC = totalPremBc; loc.HOL_RISK_PREM_FC = totalRiskPremFc; loc.HOL_RISK_PREM_BC = totalRiskPremBc; loc.HOL_RI_SI_FC = totalRiSiFc; loc.HOL_RI_SI_BC = totalRiSiBc; loc.HOL_RI_PREM_FC = totalRiPremFc; loc.HOL_RI_PREM_BC = totalRiPremBc; loc.HOL_DISC_FC = totalDiscFc; loc.HOL_DISC_BC = totalDiscBc; loc.HOL_LOAD_FC = totalLoadFc; loc.HOL_LOAD_BC = totalLoadBc; totalSiFc = 0; totalSiBc = 0; totalRiSiBc = 0; totalRiSiFc = 0; totalPremFc = 0; totalPremBc = 0; totalRiPremBc = 0; totalRiPremFc = 0; totalRiskPremBc = 0; totalRiskPremFc = 0; totalDiscFc = 0; totalDiscBc = 0; totalLoadFc = 0; totalLoadBc = 0; }); u.clear_grid_data($scope.homeloc_grid); u.grid_populate($scope.homeloc_grid, "", locations); }; $("#btn_premium_recalculate").click(async function () { await $scope.RecalculatePremium(); }); $scope.rawHomeOwners = function () { const product = u.parse_form("#polheaderForm") || {}; /*---------------------------------- * GETS ALL REMAINING PRODUCT MODELS *---------------------------------*/ u.getGlobal("Product")(product); return product; }; $scope.rawHomeOwnersPopulateFull = function (policy) { /*---------------------- * CONDITIONS AND CLAUSES *----------------------*/ u.clear_grid_data(u.getGlobal("udwClausesGrid")); policy.INS_UDW_POL_COND_CLAUSES = (typeof (policy.INS_UDW_POL_COND_CLAUSES) === "string" ? JSON.parse(policy.INS_UDW_POL_COND_CLAUSES || "[]") : policy.INS_UDW_POL_COND_CLAUSES) || []; u.bigDataPopulate(u.getGlobal("udwClausesGrid"), policy.INS_UDW_POL_COND_CLAUSES); /*---------------------------------------------------------- * HIDE POLICY CONDITION CLAUSE WITH STATUS (X) ON FROM GRID *----------------------------------------------------------*/ u.getGlobal("PolicyConditionClauseRemoval")(); }; u.setGlobalStatic("subProductChange", async function () { /*----------------------------------------------------------- * i HAVE TO PREVENT THE RECALCULATION OF INS SOURCE RESELECT *----------------------------------------------------------*/ let product = $scope.rawHomeOwners() || {}; /*------------------------- * CONDITION CLAUSE REFETCH *-------------------------*/ await u.getGlobal("ConditionClause")(product); u.fill_form(product, "#polheaderForm", false); if (true) { /*----------------------------------------------- * REPOPULATE THE GRID AND RECALCULATE THE RECORDS *-----------------------------------------------*/ $scope.rawHomeOwnersPopulateFull(product); } else { $scope.rawHomeOwnersPopulateFull(product); }; }); u.setGlobalStatic("RecalculateFill", async function () { /*------------------------------------------ * PREMIUM BASIS PROPERTY && TREATY PROPERTY *-----------------------------------------*/ let days = $("#POLH_POL_DAYS").val(); let subClassCode = $("#POLH_SUB_CLASS_CODE").val(); let premiumBasis = $("#POLH_PREM_BASIS").val(); let currency = $("#POLH_CURRENCY").val(); let year = $("#POLH_POL_UW_YEAR").val(); if (days.length && subClassCode.length && premiumBasis.length && currency.length && year.length) $scope.RecalculatePremium(); }); $scope.RecalculatePremium = function () { $scope.loader(async function () { u.clear_grid_data($scope.cover_grid); await $scope.SumCoverRiskValues(); $scope.locationReSummarizer(); $scope.PolicyCalculations(); }); $("#policyCalculationsModal").modal("hide"); }; $("#POLH_POL_DAYS").blur(async function () { const days = parseInt($(this).val()); if (!u.grid_empty($scope.homeloc_grid)) { u.setGridColumn($scope.homeloc_grid, { "HOL_PERIOD_DAYS": days.toFixed(0), "HOL_START_DATE": $("#POLH_POL_START_DATE").val(), "HOL_END_DATE": $("#POLH_POL_END_DATE").val(), "INS_UDW_HOME_OWNERS": function (val) { var risks = u.parseJson(val); risks.ForEach(r => { r.HOP_PERIOD_DAYS = days; r.HOP_START_DATE = $("#POLH_POL_START_DATE").val(); r.HOP_END_DATE = $("#POLH_POL_END_DATE").val(); }); return JSON.stringify(risks); } }); await $scope.RecalculatePremium(); } }); /*-------------------------- * RI DESCRIPTION PROPERTIES *--------------------------*/ $scope.riDisciption = function (v) { const product = u.parse_form("#polheaderForm") || {}; let data = { SubClass: product.PDT_NAME, Region: v.HOL_REGION_NAME, Area: v.HOL_AREA_NAME, Address: v.HOL_DESC } let result = u.getGlobal("riDiscriptionConcat")(data); return result; } /** * RENEWAL PROCESSING CHECK * @param {object} $scope.query query param object * @return null */ $scope.query = $.url().param(); if (!jQuery.isEmptyObject($scope.query)) { if ($scope.query.polid) { const newUrl = location.href.split("?")[0]; u.modalConfirmationAsync("Continue with renewal?", async function () { var response = await s.getPolicyAsync($scope.query.polid); if (response.state) { if (jQuery.isEmptyObject(response.data)) return u.growl_info("Policy not found"); if (response.data.POLH_TXN_STATE == "R") { return window.location.href = window.location.href + "?id=" + response.data.POLH_SYS_ID } var renPolicy = u.getGlobal("renewalProcess")(response.data); // fill policy header u.getGlobalStatic("productSearchFill")(renPolicy); renPolicy.INS_UDW_HOME_LOCATION.ForEach(b => { b.HOL_START_DATE = renPolicy.POLH_POL_START_DATE; b.HOL_END_DATE = renPolicy.POLH_POL_END_DATE; b.HOL_UW_YEAR = renPolicy.POLH_POL_UW_YEAR; b.HOL_POLH_END_NO = 0; b.HOL_POLH_RNW_NO = renPolicy.POLH_RENEW_SER_NO; b.INS_UDW_HOME_OWNERS = u.parseJson(b.INS_UDW_HOME_OWNERS); b.INS_UDW_HOME_OWNERS.ForEach(h => { h.HOP_START_DATE = renPolicy.POLH_POL_START_DATE; h.HOP_END_DATE = renPolicy.POLH_POL_END_DATE; h.HOP_UW_YEAR = renPolicy.POLH_POL_UW_YEAR; h.HOP_POLH_END_NO = 0; h.HOP_POLH_RNW_NO = renPolicy.POLH_RENEW_SER_NO; h.INS_UWD_RISK_COVERS = u.parseJson(h.INS_UWD_RISK_COVERS); h.INS_UWD_RISK_COVERS.ForEach(c => { c.RPCOV_END_NO = 0; c.RPCOV_RNW_NO = renPolicy.POLH_RENEW_SER_NO; delete c.MS_UDW_COVERS; }); h.INS_UDW_HOME_OWNERS_FEES = u.parseJson(h.INS_UDW_HOME_OWNERS_FEES); h.INS_UDW_HOME_OWNERS_FEES.ForEach(f => { f.HOP_FEE_RNW_NO = renPolicy.POLH_RENEW_SER_NO; f.HOP_FEE_END_NO = 0; if (f.MS_COMPULSORY_FEES) { delete f.MS_COMPULSORY_FEES; } }); }); }); var newRenPolicy = $scope.renewalReSummarizer(renPolicy); var treatyResult = await s.getProductTreatyAsync(renPolicy.POLH_SUB_CLASS_CODE, renPolicy.POLH_POL_UW_YEAR, renPolicy.POLH_CURRENCY); if (treatyResult.state && treatyResult.data) { u.setGlobal("treatyData", treatyResult.data); var riData = []; newRenPolicy.INS_UDW_HOME_LOCATION.ForEach(v => { let data = { RI_DESCRIPTION: $scope.riDisciption(v), RI_SI_FC: v.HOL_RI_SI_FC || 0, RI_SI_BC: v.HOL_RI_SI_BC || 0, RI_PREM_BC: v.HOL_RI_PREM_BC, RI_PREM_FC: v.HOL_RI_PREM_FC, RISK_ID: v.HOL_SYS_ID, EML_PERC: v.HOL_EML_PERC, FROM_DATE: v.HOL_START_DATE, TO_DATE: v.HOL_END_DATE, TOT_SI_FC: v.HOL_SI_FC, TOT_SI_BC: v.HOL_SI_BC, TOT_PREM_BC: v.HOL_TOT_PREM_BC, TOT_PREM_FC: v.HOL_TOT_PREM_FC, UW_YEAR: v.HOL_UW_YEAR || renPolicy.POLH_POL_UW_YEAR, RI_STATUS: "U" }; riData.Add(data); }); //let riResult = await u.getGlobal("RIReCalculation")(newRenPolicy, riData); //var riHead = u.getGlobal("RICode")(newRenPolicy, riResult); let riHead = u.getGlobal("RiCalculations")(riData, treatyResult.data); riHead.ForEach(ri => { ri.TTH_POLH_END_NO = 0; ri.TTH_POLH_RNW_NO = renPolicy.POLH_RENEW_SER_NO; ri.TTH_CURRENCY = renPolicy.POLH_CURRENCY; ri.TTH_CURRENCY_RATE = renPolicy.POLH_CURRENCY_RATE; ri.INS_RI_TTY_ALLOCATION = u.parseJson(ri.INS_RI_TTY_ALLOCATION); ri.INS_RI_TTY_ALLOCATION.ForEach(a => { a.TTA_POLH_RNW_NO = renPolicy.POLH_RENEW_SER_NO; a.TTA_POLH_END_NO = 0; a.INS_RI_TTY_SHARE.ForEach(s => { s.TTS_END_NO = 0; s.TTS_RNW_NO = renPolicy.POLH_RENEW_SER_NO; }); }); }); newRenPolicy.INS_RI_TTY_HEAD = riHead; newRenPolicy.INS_RI_TTY_HEAD = riHead; delete newRenPolicy.MS_UDW_CLASS_OF_BUSINESS; delete newRenPolicy.MS_SYS_SOURCE_BUSINESS; delete newRenPolicy.MS_SYS_OFFICE; delete newRenPolicy.MS_SYS_CHANNEL; delete newRenPolicy.MS_SBU; delete newRenPolicy.MST_UWD_PRODUCT; delete newRenPolicy.INS_UDW_INSUR_SOURCE; delete newRenPolicy.MST_UWD_PRODUCT_COVERS; delete newRenPolicy.MS_UDW_CUSTOMERS; delete newRenPolicy.MS_SYS_INTERMEDIARY; if (newRenPolicy.MS_SYS_COMPANY) delete newRenPolicy.MS_SYS_COMPANY; newRenPolicy.INS_UDW_HOME_LOCATION.ForEach(b => { b.INS_UDW_HOME_OWNERS = u.parseJson(b.INS_UDW_HOME_OWNERS); b.INS_UDW_HOME_OWNERS.ForEach(h => { h.INS_UDW_HOME_OWNERS_FEES = u.parseJson(h.INS_UDW_HOME_OWNERS_FEES); h.INS_UWD_RISK_COVERS = u.parseJson(h.INS_UWD_RISK_COVERS); }); }); u.getGlobal("savePolicy")(newRenPolicy, function (result) { $scope.policyFill(result); $("#PolicyModal").modal({ keyboard: false, backdrop: 'static' }); $("#tabs").tabs({ active: 2 }); u.growl_success("Renewal calculations applied. Please continue"); u.form_text_Black_color(); }, true); } else { return u.modalInfo( `Treaty not setup for underwriting year: ${renPolicy.POLH_POL_UW_YEAR}. Please contact your administrator`); } } else { u.growl_error(response.message); } }); window.history.pushState('object', document.title, newUrl); } } $scope.renewalReSummarizer = function (policy) { var sumTotalPremFc = 0; var sumTotalPremBc = 0; var sumNetPremFc = 0; var sumNetPremBc = 0; var sumRiPremFc = 0; var sumRiPremBc = 0; var totalPremFc = 0, totalPremBc = 0, totalRiPremBc = 0, totalRiPremFc = 0, totalRiskPremBc = 0, totalRiskPremFc = 0; policy.INS_UDW_HOME_LOCATION.ForEach(loc => { loc.INS_UDW_HOME_OWNERS.ForEach(home => { var covers = home.INS_UWD_RISK_COVERS; covers.ForEach(c => { if (c.RCOV_STATUS !== "D") { c.RCOV_GROSS_PREM_FC = parseFloat(c.RCOV_ANNL_PREM_FC || 0); c.RCOV_GROSS_PREM_BC = parseFloat(c.RCOV_ANNL_PREM_BC || 0); c.RCOV_NET_PREM_FC = parseFloat(c.RCOV_ANNL_PREM_FC || 0); c.RCOV_NET_PREM_BC = parseFloat(c.RCOV_ANNL_PREM_BC || 0); sumNetPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumNetPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); sumTotalPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumTotalPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); if (c.RCOV_RI_PREM_YN === "Y") { sumRiPremFc += parseFloat(c.RCOV_ANNL_PREM_FC || 0); sumRiPremBc += parseFloat(c.RCOV_ANNL_PREM_BC || 0); } } }); home.HOP_RISK_PREM_FC = sumNetPremFc; home.HOP_RISK_PREM_BC = sumNetPremBc; home.HOP_PREMIUM_FC = sumNetPremFc; home.HOP_PREMIUM_BC = sumNetPremBc; home.HOP_TOT_PREM_FC = sumTotalPremFc; home.HOP_TOT_PREM_BC = sumTotalPremBc; home.HOP_RI_PREM_FC = sumRiPremFc; home.HOP_RI_PREM_BC = sumRiPremBc; }); loc.INS_UDW_HOME_OWNERS.ForEach(r => { totalPremBc += parseFloat(r.HOP_TOT_PREM_BC || 0); totalPremFc += parseFloat(r.HOP_TOT_PREM_FC || 0); totalRiPremBc += parseFloat(r.HOP_RI_PREM_BC || 0); totalRiPremFc += parseFloat(r.HOP_RI_PREM_FC || 0); totalRiskPremBc += parseFloat(r.HOP_RISK_PREM_BC || 0); totalRiskPremFc += parseFloat(r.HOP_RISK_PREM_FC || 0); }); loc.HOL_TOT_PREM_FC = totalPremFc; loc.HOL_TOT_PREM_BC = totalPremBc; loc.HOL_RISK_PREM_FC = totalRiskPremFc; loc.HOL_RISK_PREM_BC = totalRiskPremBc; loc.HOL_RI_PREM_FC = totalRiPremFc; loc.HOL_RI_PREM_BC = totalRiPremBc; }); return policy; }; $("#btn_coins_ok").click(async function () { await $scope.RecalculatePremium(); }); $("#btn_facInward_Ok").click(async function () { await $scope.RecalculatePremium(); u.form_reset("#facInwardForm"); $("#MemberIwardModal").modal("hide"); }); /* * fees functions */ $("#btnRiskFees").click(function () { if (!u.getSelRow($scope.homeowners_grid)) return u.growl_info("Select a risk"); u.clear_grid_data($scope.riskFees_grid); u.grid_populate($scope.riskFees_grid, "", u.parseJson($scope.homeowners_grid.jqGrid("getCell", u.getSelRow($scope.homeowners_grid), "INS_UDW_HOME_OWNERS_FEES"))); $("#homeRiskFeesModal").modal(); }); $scope.RiskFeesCalculate = async function (z, recalculate = false, riskPremiumBc = 0) { if (!recalculate) { z.HOP_FEE_BC_AMOUNT = parseFloat(z.HOP_FEE_BC_AMOUNT || 0).toFixed(2) || 0; z.HOP_FEE_FC_AMOUNT = parseFloat(parseFloat(z.HOP_FEE_BC_AMOUNT || 0) / parseFloat($("#POLH_CURRENCY_RATE").val() || 0)).toFixed(2) || 0; } else { var riskFeesData = { CLASS_CODE: $("#POLH_CLASS_CODE").val(), PRD_CODE: $("#POLH_SUB_CLASS_CODE").val() }; var result = await s.getRiskFees(riskFeesData); const compulsoryFee = result.Where(x => x.PRF_FEE_CODE === z.HOP_FEE_CODE)[0] || {}; switch (compulsoryFee.FEE_COMPUTATION_TYPE) { case "F": { z.HOP_FEE_BC_AMOUNT = parseFloat(z.HOP_FEE_BC_AMOUNT || 0).toFixed(2) || 0; z.HOP_FEE_FC_AMOUNT = parseFloat(parseFloat(z.HOP_FEE_BC_AMOUNT || 0) / parseFloat($("#POLH_CURRENCY_RATE").val() || 1)) .toFixed(2) || 0; } break; case "P": { z.HOP_FEE_BC_AMOUNT = parseFloat(parseFloat(compulsoryFee.PRF_FEE_AMOUNT || 0) * riskPremiumBc * 0.01).toFixed(2); z.HOP_FEE_FC_AMOUNT = parseFloat(parseFloat(z.HOP_FEE_BC_AMOUNT || 0) / parseFloat($("#POLH_CURRENCY_RATE").val() || 1)) .toFixed(2) || 0; } break; } } }; $("#btn_add_fees").on("click", async function () { if (u.form_validation("#riskfeesForm")) { let feesData = u.get_grid_data($scope.riskFees_grid) || []; const formData = u.parse_form("#riskfeesForm") || {}; if (feesData.Any(x => x.HOP_FEE_CODE === formData.HOP_FEE_CODE)) return u.growl_warning(`Fee with code ${formData.HOP_FEE_CODE} already exists`); u.modal_confirmation("Are you sure you want to add this fee?", async function () { /*--------------------- * GET RISK DATA *-------------------**/ let Risk = u.getRow(u.getSelRow($scope.homeowners_grid), $scope.homeowners_grid) || {}; /*------------------ * GET FEES FORM DATA *----------------**/ formData.HOP_FEE_STATUS = "U"; formData.HOP_FEE_CRTE_BY = u.getUserCode(); formData.HOP_FEE_CRTE_DATE = u.get_date(); formData.HOP_FEE_END_NO = Risk.HOP_POLH_END_NO; formData.HOP_FEE_RNW_NO = Risk.HOP_POLH_RNW_NO; formData.HOP_FEE_RK_SYS_ID = Risk.HOP_SYS_ID; //formData.HOP_FEE_RK_CODE = Risk.HOP_RISK_CODE; await $scope.RiskFeesCalculate(formData); $scope.riskFees_grid.addRowData(undefined, formData); if (!u.get_grid_data($scope.polfees_grid).Any(x => x.POL_FEE_CODE === formData.HOP_FEE_CODE)) { var compFeedata = [formData]; var linq = Enumerable.From(compFeedata); var data = linq.GroupBy(function (x) { return x.HOP_FEE_CODE; }) .Select(function (x) { //console.log(x); return { POL_FEE_CODE: x.Key(), POL_FEE_NAME: x.source[0]["HOP_FEE_NAME"], POL_FEE_FC_AMOUNT: x.Sum(function (y) { return parseFloat(y.HOP_FEE_FC_AMOUNT || 0); }), POL_FEE_BC_AMOUNT: x.Sum(function (y) { return parseFloat(y.HOP_FEE_BC_AMOUNT || 0); }), POL_FEE_END_NO: 0, //$("#POL_END_NO").val() POL_FEE_STATUS: "U" }; }).ToArray(); //$scope.polfees_grid.jqGrid("clearGridData"); $scope.polfees_grid.addRowData(data.POL_FEE_CODE, data); } u.hide_confirm(); u.growl_success("Fee successfully added"); u.form_reset("#riskfeesForm"); }); } else { u.growl_error("Please fill out the fields that are marked red"); } }); $("#btn_update_fees").on("click", function () { if (u.grid_empty($scope.riskFees_grid)) return u.growl_info("Grid is empty"); if (u.form_validation("#riskfeesForm")) { u.modal_confirmation("Are you sure you want to update the selected fee?", function () { const grid = $scope.riskFees_grid; const rowId = u.getSelRow(grid); let data = rowId ? u.getRow(rowId, grid) : {}; let formData = u.parse_form("#riskfeesForm") || {}; if (data.HOP_FEE_CODE === formData.HOP_FEE_CODE) { data = u.objectSpread(data, formData); for (let i in data) grid.jqGrid("setCell", rowId, i, data[i]); grid.refresh(); u.hide_confirm(); u.growl_success("Fee updated successfully"); } else { u.hide_confirm(); u.growl_warning("Please select the correct row to edit"); } u.form_reset("#riskfeesForm"); }); } }); $("#btn_remove_fees").on("click", function () { if (u.grid_empty($scope.riskFees_grid)) return u.modalAlert("Grid is empty!!!"); let grid = $scope.riskFees_grid; let rowId = u.getSelRow(grid); let Result = rowId ? u.getRow(rowId, grid) : {}; let formData = u.parse_form("#riskfeesForm") || {}; let polFees = u.get_grid_data($scope.polfees_grid); if (Result.HOP_FEE_CODE === formData.HOP_FEE_CODE) { /*---------------------------------- * PREVENT DELETE OF DEFAULT RECORD *---------------------------------*/ if (Result.DL_DFT === "Y") return u.growl_warning("Default Discount/Load can not be deleted!!!"); /*----------------------- * Display modal message *---------------------*/ u.modal_confirmation("Are you sure you want to remove this fee?", function (e) { /*-------------------------------------------- * Remove newly added record before saving *------------------------------------------*/ if (Result.HOP_FEE_STATUS == "U") { grid.jqGrid("delRowData", rowId); let newPolFees = []; polFees.ForEach(pf => { if (pf.POL_FEE_CODE !== Result.HOP_FEE_CODE && pf.POL_FEE_STATUS !== "U") { newPolFees.push(pf); } }); u.clear_grid_data($scope.polfees_grid); u.grid_populate($scope.polfees_grid, "", newPolFees); u.hide_confirm(); u.growl_success("Selected fee successfully removed"); } /*---------------------------------------- * Mark a record for deletion on saving *--------------------------------------*/ if (Result.HOP_FEE_STATUS == "A") { grid.jqGrid("setCell", rowId, "HOP_FEE_STATUS", "D"); $(`#${rowId}`, "#gridCompFees").css({ color: "red" }); polFees.ForEach(pf => { if (pf.POL_FEE_CODE === Result.HOP_FEE_CODE && pf.POL_FEE_STATUS === "A") { pf.POL_FEE_STATUS = "D"; } }); u.clear_grid_data($scope.polfees_grid); u.grid_populate($scope.polfees_grid, "", polFees); u.hide_confirm(); u.growl_success("Selected fee successfully marked for deletion, please click on the save button to save changes"); } else if (Result.HOP_FEE_STATUS == "D") { $(`#${rowId}`, "#gridCompFees").css({ color: "black" }); grid.jqGrid("setCell", rowId, "HOP_FEE_STATUS", "A"); polFees.ForEach(pf => { if (pf.POL_FEE_CODE === Result.HOP_FEE_CODE && pf.POL_FEE_STATUS === "A") { pf.POL_FEE_STATUS = "A"; } }); u.clear_grid_data($scope.polfees_grid); u.grid_populate($scope.polfees_grid, "", polFees); u.hide_confirm(); u.growl_success("Fee successfully restored"); } u.form_reset("#riskfeesForm"); }); } }); $("#feesOk").click(function () { var fees = u.get_grid_data($scope.riskFees_grid); var risks = u.get_grid_data($scope.homeowners_grid); risks.ForEach(r => { fees.ForEach(f => { if (f.HOP_FEE_STATUS != "D") { if (parseInt(r.HOP_SYS_ID) === parseInt(f.HOP_FEE_RK_SYS_ID)) { r.INS_UDW_HOME_OWNERS_FEES = u.parseJson(r.INS_UDW_HOME_OWNERS_FEES); r.INS_UDW_HOME_OWNERS_FEES = r.INS_UDW_HOME_OWNERS_FEES .Where(x => x.HOP_FEE_CODE !== f.HOP_FEE_CODE); r.INS_UDW_HOME_OWNERS_FEES.push(f); var polFees = u.get_grid_data($scope.polfees_grid); if (!polFees.Any(x => x.POL_FEE_CODE === f.HOP_FEE_CODE)) { polFees.push({ POL_FEE_CODE: f.HOP_FEE_CODE, POL_FEE_NAME: f.HOP_FEE_NAME ? f.HOP_FEE_NAME : "", POL_FEE_FC_AMOUNT: parseFloat(f.HOP_FEE_FC_AMOUNT || 0), POL_FEE_BC_AMOUNT: parseFloat(f.HOP_FEE_BC_AMOUNT || 0), POL_FEE_END_NO: parseInt($("POLH_END_NO").val() || 0), POL_FEE_STATUS: "U" }); u.clear_grid_data($scope.polfees_grid); u.grid_populate($scope.polfees_grid, "", polFees); } } } }); }); u.clear_grid_data($scope.homeowners_grid); u.grid_populate($scope.homeowners_grid, "", risks); //$scope.RecalculatePremium(); u.clear_grid_data($scope.riskFees_grid); u.form_reset("#riskfeesForm"); $("#homeRiskFeesModal").modal("hide"); }); $("#btnAddNewFees").on("click", function () { if ($("#POLH_CLASS_CODE").val() == "") { u.growl_warning("Product Code is empty, Please check and try again"); } else { $("#AddNewFeesModal").modal(); } }); $("#btnQueryRiskFeesLov").on("click", async function () { const riskFeesData = { PRD_CODE: $("#POLH_SUB_CLASS_CODE").val(), LEVEL: "R" }; const grid = $scope.riskFees_Lov_grid; let result = await s.getRiskFeesLovAsync(riskFeesData); if (result && result.length && result.length > 0) { grid.jqGrid("clearGridData"); u.bigDataPopulate(grid, result); } }); $("#riskFeesLovOk").on("click", async function () { const grid = $scope.riskFees_Lov_grid; const selId = u.getSelRow(grid); let data = selId ? u.getRow(selId, grid) : {}; data = { HOP_FEE_CODE: data.PRF_FEE_CODE, HOP_FEE_NAME: data.FEE_NAME, HOP_FEE_FC_AMOUNT: data.PRF_FEE_AMOUNT, HOP_FEE_BC_AMOUNT: data.PRF_FEE_AMOUNT, HOP_FEE_RK_NO: data.PRF_SYS_ID, // HOP_FEE_CURR_RATE: parseFloat($("#POLH_CURRENCY_RATE").val() || 0) }; await $scope.RiskFeesCalculate(data); u.form_reset("#riskfeesForm"); u.fill_form(data, "#riskfeesForm"); $("#AddNewFeesModal").modal("hide"); }); u.setGlobalStatic("ProductUnendorse", async function () { /*---------------------------------- * UNDO ENDORSMENT FOR PRODUCT RISK *--------------------------------*/ const CurrentProduct = u.parse_form("#polheaderForm") || {}; if (!("EX").includes(CurrentProduct.POLH_TXN_STATE)) return u.growl_warning("Endorsements can not undo!!!"); u.modalConfirmationAsync("Are you sure you want to undo endorsement on this policy?", async function () { $("#policyCalculationsModal").modal(); setTimeout(async function () { const data = { polSysId: CurrentProduct.POLH_SYS_ID, endNo: parseFloat(CurrentProduct.POLH_END_NO) - 1, rnwNo: CurrentProduct.POLH_RENEW_SER_NO }; let response = await s.policyUnendorseAsync(data); if (response.state) { let Unendorsed = response.data || {}; u.getGlobalStatic("productSearchFill")(Unendorsed); u.form_text_Green_color(); //$scope.premiumSummarizer(); u.growl_success("Policy successfully unendorsed.") //let processRevert = await u.revertProcess(Unendorsed.POLH_UID); //if (processRevert.state) { // $("#netPremSummary h3").show(); // $("#netCustomerBc").text(Unendorsed.POLH_CURRENCY + " " + Unendorsed.POLH_POL_PREM_FC); // $("#netCustomerFc").text(Unendorsed.POLH_CURRENCY + " " + Unendorsed.POLH_POL_PREM_BC); // $("#endNetCustomerFc").text(" "); // $("#endNetCustomerBc").text(" "); // u.growl_success("Policy successfully unendorsed."); //} else { // u.growl_error(processRevert.message); //} } else { u.growl_error(response.message); } $("#policyCalculationsModal").modal("hide"); }); }); }); $("#btn_unendorsement").click(async function () { const CurrentProduct = u.parse_form("#polheaderForm") || {}; let processRevert = await u.revertProcess(CurrentProduct.POLH_UID); }); var year = parseInt(u.getYear(u.get_datetime())); $scope.populateYears = function () { for (let i = year; i >= 2000; i--) { $("#HODT_MANUFACTURE_YEAR").append(``); } }; $scope.populateYears(); /**** * * COTENT DETAILS UPLOAD SECTION * * **/ $("#btn_upload_section_details").click(function () { $("#SectDtlsUploadModal").modal(); }); $("#downloadSectDtlsTemplate").click(async function () { const response = await s.getSectDtlstTemplateAsync(); if (response.state) { u.download(`${s.backend}${response.data}`, "HomeOwnersContentDetailsTemplate.xlsx"); } else { u.modalError(response.message); } }); $("#uploadSectDtlsExcel").click(function () { s.file_upload(`${s.backend}api/policyhomeowners/contentdetails/Upload`, "#UploadForm", "ExcelFile", function (response) { if (response.state) { if (response.data.length > 0) { console.log(response.data); for (let i in response.data) { response.data[i].HODT_CRTE_BY = u.getUserCode(); response.data[i].HODT_CRTE_DATE = u.get_date(); response.data[i].HODT_STATUS = "U"; response.data[i].HODT_SYS_ID = ""; } const dataAlreadyInGrid = u.get_grid_data($scope.secdetails_grid); u.bigDataPopulate($scope.secdetails_grid, [...dataAlreadyInGrid, ...response.data]); u.growl_success(response.message); } $("#SectDtlsUploadModal").modal("hide"); } else { u.growl_error(response.message); } }, function () { }); }); }); })(window.$, window.service, window.utility, {});