From af6d9c28e5d35c5195851ee7f8054ada92e01015 Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Fri, 2 May 2025 15:41:23 +0530 Subject: [PATCH 01/10] FIX_EXCEL_WRONG_ROW_ID --- app/Controllers/EmployeeController.php | 2 +- app/Helpers/excel_util_helper.php | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 30f012b7..16b5f591 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -190,7 +190,7 @@ class EmployeeController extends AdminController // print_r($this->request->getPost('upload-action-type')); // die(); // $empServiceController = new EmployeeServiceController(); - // $res = $empServiceController->excelFileFormatValidation(['file_id' => '42']); + // $res = $empServiceController->excelFileDataValidation(['file_id' => '933']); // dd($res); // $empServiceController = new EmployeeServiceController(); diff --git a/app/Helpers/excel_util_helper.php b/app/Helpers/excel_util_helper.php index 593b2d05..c13ab491 100755 --- a/app/Helpers/excel_util_helper.php +++ b/app/Helpers/excel_util_helper.php @@ -566,6 +566,15 @@ if (!function_exists('check_dependent_conflict')) $allowed_parents_count = $temp['either-parents-pil'] == 0 ? $temp['parents'] : 0; $allowed_parent_in_laws_count = $temp['either-parents-pil'] == 0 ? $temp['parents-in-law'] : 0; // dd($allowed_adults == 0); + $firstNonTemp = null; + + foreach ($family_data as $family) { + if (!isset($family['temp'])) { + $firstNonTemp = $family; + break; + } + } + // Kint::dump($firstNonTemp); foreach ($family_data as $key => $row) { // dd($family_data[0][0]); @@ -580,7 +589,7 @@ if (!function_exists('check_dependent_conflict')) if($relationship == 'self') { $self_gender = $row[4]; - $self_emp_row_id = $row[0]; + $self_emp_row_id = isset($row['temp']) ? null : $row[0]; } if($relationship == 'spouse') { @@ -612,8 +621,9 @@ if (!function_exists('check_dependent_conflict')) $repeated_count = array_intersect($repeated_relationships_count,$temp_counts); if(is_array($repeated_count) && count($repeated_count)) { + // Kint::dump($firstNonTemp);die(); $result['status'] = false; - $result['error_data'][] = ['code' => 13,'col_name' => 'relationship','msg' => 'Rule conflict: Twofold relationship found within family','row_id' => $family_data[0][0]]; + $result['error_data'][] = ['code' => 13,'col_name' => 'relationship','msg' => 'Rule conflict: Twofold relationship found within family','row_id' => $firstNonTemp[0]]; } } // print_r($repeated_count); @@ -630,26 +640,26 @@ if (!function_exists('check_dependent_conflict')) if($self_gender && $spouse_gender && $self_gender == $spouse_gender) { $result['status'] = false; - $result['error_data'][] = ['code' => 4,'col_name' => 'gender','msg' => 'Rule conflict: Self and Spouse cannot be same gender','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])]; + $result['error_data'][] = ['code' => 4,'col_name' => 'gender','msg' => 'Rule conflict: Self and Spouse cannot be same gender','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $firstNonTemp[0])]; } } if(($allowed_spouse_count < $received_spouse_count) || ($allowed_child_count < $received_child_count) ) { $result['status'] = false; - $result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: As per policy, count of dependents has exceeded configured count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])];//dependent count mismatch + $result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: As per policy, count of dependents has exceeded configured count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $firstNonTemp[0])];//dependent count mismatch } // || ($allowed_parents_count < $received_parents_count) || ($allowed_parent_in_laws_count < $received_parent_in_laws_count) if($allowed_adults == 1 && $received_parents_count && $received_parent_in_laws_count ) { $result['status'] = false; - $result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: Parents and Parents in law both not allowed','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])]; + $result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: Parents and Parents in law both not allowed','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $firstNonTemp[0])]; if((2 < $received_parents_count) || (2 < $received_parent_in_laws_count)) { $result['status'] = false; - $result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: As per policy, count of dependents has exceeded configured count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])];//dependent count mismatch + $result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict: As per policy, count of dependents has exceeded configured count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $firstNonTemp[0])];//dependent count mismatch } } //check for any cross parents but not more than two @@ -657,7 +667,7 @@ if (!function_exists('check_dependent_conflict')) { // dd($allowed_adults); $result['status'] = false; - $result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict:As per policy, count of dependents has exceeded configured count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $family_data[0][0])];//dependent count mismatch + $result['error_data'][] = ['code' => 12,'col_name' => 'sno','msg' => 'Rule conflict:As per policy, count of dependents has exceeded configured count','row_id' => (isset($self_emp_row_id) ? $self_emp_row_id : $firstNonTemp[0])];//dependent count mismatch } From d76e999c93b98d25dc165ef3fdb32b3ab0951e63 Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Sat, 3 May 2025 17:35:15 +0530 Subject: [PATCH 02/10] FIX_DEPENDENT_ADD_ERROR --- app/Controllers/EmployeeServiceController.php | 16 +++- app/Controllers/LeadsController.php | 1 + app/Helpers/excel_util_helper.php | 28 ++++++- app/Views/leads_non_eb.php | 34 ++++---- app/Views/policyRegisterModel.php | 81 +++++++++++++------ app/Views/rfq/burglary.php | 28 +++++++ app/Views/rfq/money.php | 4 +- app/Views/view_rfq_non_eb.php | 42 +++++----- 8 files changed, 161 insertions(+), 73 deletions(-) create mode 100644 app/Views/rfq/burglary.php diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php index 035fbd37..9917796f 100755 --- a/app/Controllers/EmployeeServiceController.php +++ b/app/Controllers/EmployeeServiceController.php @@ -1035,6 +1035,14 @@ class EmployeeServiceController extends AdminController // kint::dump($family); $family = data_group_by_family($family)[ $emp_id ];// reason to call this again bring self to first index of the array } + $firstNonTemp = null; + + foreach ($family as $fam) { + if (!isset($fam['temp'])) { + $firstNonTemp = $fam; + break; + } + } // kint::dump($family);//die(); //check name dup within a family @@ -1070,7 +1078,7 @@ class EmployeeServiceController extends AdminController if(!count($self_details)) { array_push($result['error_summary'],14); // Self not found - $result['error_data'][ $family[0][0] ]['sno']['error'][] = "Self not found in Database"; + $result['error_data'][ $firstNonTemp[0] ]['sno']['error'][] = "Self not found in Database"; } } @@ -1078,7 +1086,7 @@ class EmployeeServiceController extends AdminController if($file['action'] == 'dependent_addition' || $file['action'] == 'addition' || $file['action'] == 'inception'|| $file['action'] == 'missed_inception' || $file['action'] == 'enrollment') { $res = check_dependent_conflict($family,$policy_terms,$file['action'],$is_lgbtq); - // dd($res); + // Kint::dump($res); if(!$res['status']) { foreach($res['error_data'] as $key => $value) @@ -1091,7 +1099,7 @@ class EmployeeServiceController extends AdminController //check dup with empid and name with db $res = name_and_empid_check_in_db($family,$file); - // dd($res); + // Kint::dump($res['del']); // echo '
'; // print_r($res); if(count($res['del'])) @@ -1113,7 +1121,7 @@ class EmployeeServiceController extends AdminController }// end of foreach }// end of if current action I,DA,A - // return $result; + // return $result; // die(); if(isset($result['error_summary']) && count($result['error_summary'])) { diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index 79ca3591..3e430d76 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -3077,6 +3077,7 @@ class LeadsController extends BaseController 3 => 'rfq/gmc', 4 => 'rfq/gmc', 5 => 'rfq/gmc', + 17=> 'rfq/burglary', 22 => 'rfq/car', 23 => 'rfq/cpm', 24 => 'rfq/cyber_crime', diff --git a/app/Helpers/excel_util_helper.php b/app/Helpers/excel_util_helper.php index c13ab491..d2e30828 100755 --- a/app/Helpers/excel_util_helper.php +++ b/app/Helpers/excel_util_helper.php @@ -440,8 +440,20 @@ if (!function_exists('name_dup_check_within_family')) foreach ($family_data as $rkey => $row) { if(in_array($row[2],$temp)) - { - array_push($result,$row[0]); + { + // Kint::dump($row); + $emp_code = $row[1]; + $tempFam = null; + foreach ($family_data as $family) { + if ($family[1] == $emp_code &&!isset($family['temp'])) { + $tempFam = $family; + break; // Stop at the first match + } + } + // Kint::dump($tempFam); + // die(); + + array_push($result,$tempFam[0]); } else { @@ -449,7 +461,7 @@ if (!function_exists('name_dup_check_within_family')) } } - + // dd($result); return $result; } } @@ -519,7 +531,15 @@ if (!function_exists('name_and_empid_check_in_db')) } if(($current_action == 'inception' || $current_action == 'dependent_addition' || $current_action == 'addition' || $current_action == 'enrollment') && count($res)) { - array_push($result['i'],$row[0]); + $emp_code = $row[1]; + $tempFam = null; + foreach ($family_data as $family) { + if ($family[1] == $emp_code &&!isset($family['temp'])) { + $tempFam = $family; + break; // Stop at the first match + } + } + array_push($result['i'],$tempFam[0]); } } diff --git a/app/Views/leads_non_eb.php b/app/Views/leads_non_eb.php index fef3f394..ea8761d4 100644 --- a/app/Views/leads_non_eb.php +++ b/app/Views/leads_non_eb.php @@ -242,33 +242,33 @@ hr.solid { -
+ + -
+
diff --git a/app/Views/policyRegisterModel.php b/app/Views/policyRegisterModel.php index 4e2419d9..4eb2c08f 100644 --- a/app/Views/policyRegisterModel.php +++ b/app/Views/policyRegisterModel.php @@ -166,7 +166,21 @@ + + + + + + + + + + + + + +
@@ -358,7 +372,7 @@ $("#policyRiskSplitUpForm").submit(function(event) { event.preventDefault(); - + var isValid = $('#policyRiskSplitUpForm').parsley().validate(); // console.log('isValid', isValid); @@ -403,25 +417,25 @@ let rawMaterial = [...document.querySelectorAll('[id^="rawMaterial_"]')].map(el => Number(el.value) || 0); let findMaterial = [...document.querySelectorAll('[id^="finishedStock_"]')].map(el => Number(el.value) || 0); - totalSI = InProcess.reduce((acc, val) => acc + val, 0) + - rawMaterial.reduce((acc, val) => acc + val, 0) + - findMaterial.reduce((acc, val) => acc + val, 0); + totalSI = InProcess.reduce((acc, val) => acc + val, 0) + + rawMaterial.reduce((acc, val) => acc + val, 0) + + findMaterial.reduce((acc, val) => acc + val, 0); let allowedSI = Number($("#policySI").val()) || 0; - if (totalSI > allowedSI) { + if (totalSI != allowedSI) { toastr.error("Sum Insured Exceeds Allowed Limit", "ERROR"); - return false; + return false; } // console.log("Total SI: ", totalSI); - }else{ + } else { let InProcess = [...document.querySelectorAll('[id^="stockInProcess_"]')].map(el => Number(el.value) || 0); let rawMaterial = [...document.querySelectorAll('[id^="rawMaterial_"]')].map(el => Number(el.value) || 0); let findMaterial = [...document.querySelectorAll('[id^="finishedStock_"]')].map(el => Number(el.value) || 0); - totalSI = InProcess.reduce((acc, val) => acc + val, 0) + - rawMaterial.reduce((acc, val) => acc + val, 0) + - findMaterial.reduce((acc, val) => acc + val, 0); + totalSI = InProcess.reduce((acc, val) => acc + val, 0) + + rawMaterial.reduce((acc, val) => acc + val, 0) + + findMaterial.reduce((acc, val) => acc + val, 0); } } @@ -465,6 +479,7 @@ // console.log("Grouped Data as Objects: ", policyRiskSplitUpData); savePolicyDataLocal(); + }); @@ -678,7 +693,7 @@
- +
@@ -790,11 +805,11 @@
- +
- + > + +
+
+ > + +
+
+ > + +
+ + + +
+ + +
+ + diff --git a/app/Views/rfq/money.php b/app/Views/rfq/money.php index bf8c1bca..e010d772 100644 --- a/app/Views/rfq/money.php +++ b/app/Views/rfq/money.php @@ -2,7 +2,7 @@
-
+
diff --git a/app/Views/view_rfq_non_eb.php b/app/Views/view_rfq_non_eb.php index 364f2d34..fc6193a6 100644 --- a/app/Views/view_rfq_non_eb.php +++ b/app/Views/view_rfq_non_eb.php @@ -536,7 +536,7 @@ // alert(rollover_or_renewal); var policyConfig = { - 1: ['Quote asked'] + 1: ['Sum Insured'] }; let myModal; @@ -634,7 +634,7 @@ let proposalCount = 1; // // console.log("Proposal count changed", proposalCount); let quotesConfig = { - 1: ['Quote asked'] + 1: ['Sum Insured'] }; // Stores quote columns for each proposal @@ -1002,8 +1002,8 @@ proposalCount++; // // console.log("proposal count after ", proposalCount); - quotesConfig[proposalCount] = ['Quote asked']; - policyConfig[proposalCount] = ['Quote asked']; + quotesConfig[proposalCount] = ['Sum Insured']; + policyConfig[proposalCount] = ['Sum Insured']; const tables = document.querySelectorAll('table'); let increaseBy = 150; increaseTableWidth(increaseBy); @@ -1037,7 +1037,7 @@ // Add new quote sub-header const newQuoteHeader = document.createElement('th'); - newQuoteHeader.textContent = 'Quote asked'; + newQuoteHeader.textContent = 'Sum Insured'; newQuoteHeader.style.backgroundColor = randomColor; headerRow2.insertBefore(newQuoteHeader, headerRow2.querySelector('th:last-child')); @@ -1593,7 +1593,7 @@ - ${Object.entries(quotesConfig).flatMap(([proposal, codes]) => codes.map(code => ` - + ${code} - - + + + +
@@ -579,11 +579,12 @@ policyRiskAddress = groupedData; console.log("Grouped Data as Objects: ", policyRiskAddress); - if (productSelectionData.singleProduct == 'on') { - savePolicyDataLocal(); - } else { + // if (productSelectionData.singleProduct == 'on') { + // savePolicyDataLocal(); + // } else { riskSplitup(); - } + // } + }); $("#policyDetailsForm").submit(function(event) { @@ -652,6 +653,14 @@ hideAndShowBurglary(); }) + }else{ + // alert("you got ir"); + policyRiskAddress.forEach(function() { + // console.log("increment count is ", increment2) + addHTMLInputForRiskSplitUP(); + validatePolicyBasedOnProductSelection(); + hideAndShowBurglary(); + }) } } else { if (contianertoCheck.innerHTML == "") { @@ -713,23 +722,23 @@
- +
-
+
- +
- +
- +
- +

@@ -872,7 +881,7 @@
- +
@@ -920,26 +929,13 @@ `; - // newRow2.innerHTML += ` - //
- //
- // - //
- //
- //
- //
- // - //
- //
- - // `; - container.appendChild(newRow); // container.appendChild(newRow2); const selectElement = document.getElementById(`select_location_${increment}`); selectElement.innerHTML = ""; for (let i = 1; i <= policyDetailsData.location_no; i++) { + console.log("location no : ", policyDetailsData.location_no); const option = document.createElement('option'); option.value = `Location ${i}`; option.textContent = `Location ${i}`; @@ -957,37 +953,33 @@ }); - $(document).on('click', '.duplicate-btn', function() { - - - // console.log("button is clicked"); - // console.log("increment cout ", increment); - + $(document).on('click', '.duplicate-btn', function () { if (policyDetailsData.location_no >= increment) { const $rowToClone = $(this).closest('.form-row'); + // Destroy Select2 for the current and previous occupancy fields + $(`#occupancy_${increment}`).select2('destroy'); + $(`#occupancy_${increment - 1}`).select2('destroy'); + // Clone the row const $clone = $rowToClone.clone(); - $clone.find('.select2-hidden-accessible').each(function() { + // Clean up select2 artifacts from the clone + $clone.find('.select2-hidden-accessible').each(function () { $(this).select2('destroy'); }); - $clone.find('.select2-container').remove(); - // Increment the counter - - - // Update all IDs and reset values in the clone - $clone.find('[id]').each(function() { + // Update all IDs in the clone + $clone.find('[id]').each(function () { const oldId = $(this).attr('id'); const newId = oldId.replace(/_(\d+)$/, `_${increment}`); $(this).attr('id', newId); }); - // Update labels to match new IDs - $clone.find('label').each(function() { + // Update all labels + $clone.find('label').each(function () { const oldFor = $(this).attr('for'); if (oldFor) { const newFor = oldFor.replace(/_(\d+)$/, `_${increment}`); @@ -998,18 +990,35 @@ // Insert the cloned row after the original $clone.insertAfter($rowToClone); - let selectedLocation = $(`#select_location_${increment}`).val(); - $(`#select_location_${increment} option[value="${selectedLocation}"]`).remove(); - $(`#occupancy_${increment}`).select2(); + // Refill and update the select_location dropdown + const selectElement = document.getElementById(`select_location_${increment}`); + selectElement.innerHTML = ""; + for (let i = 1; i <= policyDetailsData.location_no; i++) { + const option = document.createElement('option'); + option.value = `Location ${i}`; + option.textContent = `Location ${i}`; + selectElement.appendChild(option); + } + + for (let i = 1;i; var contact_email = ""; var panNo = ; + var buisnessType = ; // console.log("client_type : ".client_type); if (lead_data) { // lead_data = JSON.parse(lead_data); @@ -1407,11 +1420,15 @@ } } + $("#client_type").val(client_type).trigger("change"); $("#insured_name").val(clientName); $("#address1").val(lead_data.address); + $("#pin_code").val(lead_data.pincode); $("#mobile").val(mobile); $("#email").val(contact_email); + console.log("buisness type : ", buisnessType); + $("#type_of_buisness").val(buisnessType); // var policy_type = lead_data.policy_type_id; } } @@ -1544,23 +1561,26 @@ } - function hideShowBasement(incrementFromBasement) { - let isBasement = $(`#isBasement_${incrementFromBasement}`).is(":checked"); + function hideShowBasement(element) { + let elementID = element.id; + let increment = elementID.split("_").pop(); + + let isBasement = $(`#isBasement_${increment}`).is(":checked"); // Get the label associated with the input - let label = $(`label[for='basementSI_${incrementFromBasement}']`); + let label = $(`label[for='basementSI_${increment}']`); if (isBasement) { - $(`#basementSI_${incrementFromBasement}`).parent().show(); - $(`#basementSI_${incrementFromBasement}`).prop("required", "required"); + $(`#basementSI_${increment}`).parent().show(); + $(`#basementSI_${increment}`).prop("required", "required"); // Add * if not already there if (label.find(".text-danger").length === 0) { label.append('*'); } } else { - $(`#basementSI_${incrementFromBasement}`).parent().hide(); - $(`#basementSI_${incrementFromBasement}`).removeAttr("required"); + $(`#basementSI_${increment}`).parent().hide(); + $(`#basementSI_${increment}`).removeAttr("required"); // Remove * if exists label.find(".text-danger").remove(); diff --git a/app/Views/rfq/attachment_files.php b/app/Views/rfq/attachment_files.php index 711fbe84..1b77cfb6 100644 --- a/app/Views/rfq/attachment_files.php +++ b/app/Views/rfq/attachment_files.php @@ -4,7 +4,7 @@
- + diff --git a/app/Views/rfq/blu.php b/app/Views/rfq/blu.php index 93a1f048..c1dccbcb 100644 --- a/app/Views/rfq/blu.php +++ b/app/Views/rfq/blu.php @@ -20,7 +20,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/bsu.php b/app/Views/rfq/bsu.php index 93a1f048..c1dccbcb 100644 --- a/app/Views/rfq/bsu.php +++ b/app/Views/rfq/bsu.php @@ -20,7 +20,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/burglary.php b/app/Views/rfq/burglary.php index 93a1f048..c1dccbcb 100644 --- a/app/Views/rfq/burglary.php +++ b/app/Views/rfq/burglary.php @@ -20,7 +20,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/car.php b/app/Views/rfq/car.php index 7dfc106b..f179e081 100644 --- a/app/Views/rfq/car.php +++ b/app/Views/rfq/car.php @@ -68,7 +68,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/cgl.php b/app/Views/rfq/cgl.php index d007dd7d..9468b8d5 100644 --- a/app/Views/rfq/cgl.php +++ b/app/Views/rfq/cgl.php @@ -81,7 +81,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/cpm.php b/app/Views/rfq/cpm.php index 532554f2..ac3a5341 100644 --- a/app/Views/rfq/cpm.php +++ b/app/Views/rfq/cpm.php @@ -68,7 +68,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/cyber_crime.php b/app/Views/rfq/cyber_crime.php index 5cc31107..27fcac5a 100644 --- a/app/Views/rfq/cyber_crime.php +++ b/app/Views/rfq/cyber_crime.php @@ -14,7 +14,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/do.php b/app/Views/rfq/do.php index e9c4e4a8..01efd463 100644 --- a/app/Views/rfq/do.php +++ b/app/Views/rfq/do.php @@ -35,7 +35,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/eo.php b/app/Views/rfq/eo.php index 85da140a..8832716e 100644 --- a/app/Views/rfq/eo.php +++ b/app/Views/rfq/eo.php @@ -35,7 +35,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/marine.php b/app/Views/rfq/marine.php index a4d68fba..528b6e7b 100644 --- a/app/Views/rfq/marine.php +++ b/app/Views/rfq/marine.php @@ -178,7 +178,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/money.php b/app/Views/rfq/money.php index e010d772..59c6ea89 100644 --- a/app/Views/rfq/money.php +++ b/app/Views/rfq/money.php @@ -67,7 +67,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/office.php b/app/Views/rfq/office.php index 237bfd29..b958a131 100644 --- a/app/Views/rfq/office.php +++ b/app/Views/rfq/office.php @@ -27,6 +27,10 @@
+
+ + +
diff --git a/app/Views/rfq/sfsp.php b/app/Views/rfq/sfsp.php index f17ee676..54f39441 100644 --- a/app/Views/rfq/sfsp.php +++ b/app/Views/rfq/sfsp.php @@ -35,7 +35,11 @@
-
+
+ + +
+
diff --git a/app/Views/rfq/wc.php b/app/Views/rfq/wc.php index cd374464..150eae7b 100644 --- a/app/Views/rfq/wc.php +++ b/app/Views/rfq/wc.php @@ -33,7 +33,11 @@
-
+
+ + +
+
diff --git a/app/Views/view_rfq_non_eb.php b/app/Views/view_rfq_non_eb.php index fc6193a6..e0abbc8c 100644 --- a/app/Views/view_rfq_non_eb.php +++ b/app/Views/view_rfq_non_eb.php @@ -516,10 +516,13 @@
\ No newline at end of file From fcb650288acb2d8e3736ca95221021eceafc3ce3 Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Wed, 7 May 2025 12:35:25 +0530 Subject: [PATCH 05/10] FIX_DROPDOWN_WIDTH_NONEB_SRI --- app/Views/policyRegisterModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Views/policyRegisterModel.php b/app/Views/policyRegisterModel.php index fc5170e3..f9b1ee91 100644 --- a/app/Views/policyRegisterModel.php +++ b/app/Views/policyRegisterModel.php @@ -858,7 +858,7 @@
-
+
> - +
Date: Wed, 7 May 2025 17:12:35 +0530 Subject: [PATCH 07/10] FIX_MIXED_INCEPTION : RV --- app/Controllers/EmpDataServiceController.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index d13676aa..19d57a7d 100755 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -949,6 +949,9 @@ class EmpDataServiceController extends BaseController $export_data['event_type'] = 'correction'; $correctionData = $this->employeePolicyModel->getCorrectionEmployeesDataForExportExcel($export_data); + }else if($value == "missed_inception"){ + $export_data['event_type'] = 'missed_inception'; + $additionData = $this->employeePolicyModel->getInceptionEmployeeDataForExportExcel($export_data); } } From df5dce214ecc605c5b3eebc511ddb63eb9518f3e Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 8 May 2025 10:02:49 +0530 Subject: [PATCH 08/10] CHANGE_RFQ_CR : RV --- app/Config/Routes.php | 1 + app/Controllers/LeadsController.php | 263 +++++++--- app/Models/LeadInstallmentPaymentDetails.php | 54 +++ app/Models/LeadsModel.php | 5 +- app/Views/leads_dash.php | 322 +++++++------ app/Views/rfq/installment_fields.php | 35 ++ app/Views/view_rfq.php | 481 ++++++++++++------- 7 files changed, 768 insertions(+), 393 deletions(-) create mode 100644 app/Models/LeadInstallmentPaymentDetails.php create mode 100644 app/Views/rfq/installment_fields.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 0670bca5..9c1b388e 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -357,6 +357,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get('getLeadNonEB/(:any)', 'LeadsController::getLeadNonEB/$1'); $routes->get('getPolicyTypeFields', 'LeadsController::getPolicyTypeFields'); $routes->get('removeMultiFile', 'LeadsController::removeMultiFile'); + $routes->get('removeInstallments', 'LeadsController::removeInstallments'); }); $routes->group("policy_tranction", ["filter" => "authMVC"], function ($routes) { diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index 79ca3591..bcc0bc47 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -30,6 +30,7 @@ use App\Models\RFQModel; use App\Models\InsurerModel; use App\Models\OccupancyMasterModel; use App\Models\LeadFilesModel; +use App\Models\LeadInstallmentPaymentDetails; use App\Helpers\MailHelper; use App\Helpers\ExcelMergeHelper; @@ -65,6 +66,7 @@ class LeadsController extends BaseController protected $insurerModel; protected $occupancyModel; protected $leadFilesModel; + protected $leadInstallmentPaymentDetails; //variables for storing array protected $issuer; @@ -96,20 +98,26 @@ class LeadsController extends BaseController $this->insurerModel = new InsurerModel(); $this->occupancyModel = new OccupancyMasterModel(); $this->leadFilesModel = new LeadFilesModel(); + $this->leadInstallmentPaymentDetails = new LeadInstallmentPaymentDetails(); $this->issuer = [1 => 'JIBS', 2 => 'Nhance']; $this->clientType = [1 => 'Group', 2 => 'Individual']; $this->leadType = [1 => 'Fresh', 2 => 'Renewal', 3 => 'Roll Over']; $this->buisnessType = [1 => 'Industrial', 2 => 'Non Industrial']; + $this->leadsStatus = [ - 'queued' => 'In-Queued', - 'qcr_sent' => 'QCR sent', - 'lost' => 'Lost', - 'co_insurer_pending' => 'Co-Insurer Pending', - 'won' => 'Won', - 'completed_with_corrections' => 'Completed with Corrections', - 'completed_without_corrections' => 'Completed w/o Corrections', + 'queued' => 'In-Queued', + 'rfq_created' => 'RFQ Created', + 'rfq_sent' => 'RFQ Sent', + 'qcr_created' => 'QCR Created', + 'qcr_sent' => 'QCR Sent', + 'lost' => 'Lost', + 'co_insurer_pending' => 'Co-Insurer Pending', + 'won' => 'Won', + 'completed_with_corrections' => 'Completed with Corrections', + 'completed_without_corrections' => 'Completed without Corrections', ]; + $this->claim_type_for_gpa = [ 'accident_death' => 'Accident Death', 'permanent_total_disablement' => 'Permanent Total Disablement', @@ -592,12 +600,14 @@ class LeadsController extends BaseController $this->leadFilesModel->where('id', $value['id'])->set($lead_file_data)->update(); } else { - $lead_file_data = [ - 'lead_id' => $lead_id, - 'docs_name' => $value['docs_name'], - 'file_name' => $value['file_name'], - ]; - $this->leadFilesModel->insert($lead_file_data); + if (!empty($value['file_name'])) { + $lead_file_data = [ + 'lead_id' => $lead_id, + 'docs_name' => $value['docs_name'], + 'file_name' => $value['file_name'], + ]; + $this->leadFilesModel->insert($lead_file_data); + } } if ($key == 0 && !empty($value['file_name'])) { @@ -619,6 +629,8 @@ class LeadsController extends BaseController return $this->respond(['status' => false, 'message' => 'File could not be removed.'], 200); } } + + //--------RFQ----------------------------------------------------------------------------------------------- @@ -676,7 +688,7 @@ class LeadsController extends BaseController $data['exclusiveUserList'] = $this->userModel->getexclusiveUserListForRFQ(); $data['lead_data'] = $lead_data; - $mail_content = " + $mail_content = '

Dear Sir,

Greetings From Nhance India!

Please find attached the {{RFQ_OR_QCR}} for {{POLICY_TYPE}} policy pertaining to {{CLIENT_NAME}}.

@@ -687,13 +699,11 @@ class LeadsController extends BaseController
{{LOGGED_USER_NAME}}
-
Email: {{LOGGED_USER_EMAIL}}
Mobile: {{LOGGED_USER_MOBILE}}
- - - "; + Nhance Logo + '; if ($data['lead_data']['policy_end_date'] != null) { $subject = "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}} {{POLICY_END_DATE}}"; @@ -705,6 +715,8 @@ class LeadsController extends BaseController $data['subject'] = $this->transformMailContent($lead_data, $subject, $data['page_name']); $data['multi_file_data'] = $this->leadFilesModel->where('lead_id', $id)->where('is_active', 1)->findAll() ?? null; + $installment_data['installments'] = $this->leadInstallmentPaymentDetails->where('lead_id', $id)->where('is_active', 1)->findAll() ?? null; + $data['lead_data']['installment_data'] = view('rfq/installment_fields', $installment_data) ?? null; $data['attachment_html'] = view('rfq/attachment_files', $data) ?? ""; $data['user_team'] = $this->userModel->select("ut.team_id")->join("user_teams ut", "ut.user_id = user_profiles.id and ut.is_active = 1")->where("user_profiles.is_active", 1)->first()['team_id']; // dd($data); @@ -776,10 +788,13 @@ class LeadsController extends BaseController return $this->respond(['status' => false, 'message' => 'Lead ID is required'], 400); } + $rfq_created = $this->RFQModel->where('lead_id', $lead_id)->where('is_active', 1)->countAllResults(); + $qcr_created = false; $inputJson = json_decode($data['json'], true); if (isset($inputJson['premium_data']) && !empty($inputJson['premium_data'])) { $sortedJson = $this->reorderProposalsByInsurerTotal($inputJson); $data['json'] = json_encode($sortedJson); + $qcr_created = true; } @@ -821,6 +836,19 @@ class LeadsController extends BaseController } if ($insertId) { + + if(empty($rfq_created)){ + $this->leadsModel->update($lead_id, ['status' => "rfq_created"]); + } + + if($qcr_created == true){ + $this->leadsModel + ->where('id', $lead_id) + ->whereNotIn('status', ['qcr_sent', 'lost', 'co_insurer_pending', 'won', 'completed_with_corrections', 'completed_without_corrections']) + ->set(['status' => "qcr_created"]) + ->update(); + } + $message = ($data['submit_type'] ?? '') == 'QCR' ? 'QCR saved successfully' : 'RFQ saved successfully'; return $this->respond([ 'status' => true, @@ -1063,6 +1091,17 @@ class LeadsController extends BaseController return $result; } + public function removeInstallments() + { + $id = $this->request->getGet('id'); + // print_r($id); die; + if (!empty($id)) { + $this->leadInstallmentPaymentDetails->whereIn('id', $id)->set(['is_active' => 0])->update(); + return $this->respond(['status' => true, 'message' => 'Removed successfully'], 200); + } else { + return $this->respond(['status' => false, 'message' => 'Could not be removed.'], 200); + } + } //-----RFQ and QCR EXPORT------------------------------------------------------------------------------------------------ @@ -1139,36 +1178,32 @@ class LeadsController extends BaseController if ($rfq_data['policy_type_id'] == 2) { $lead_data = [ - 'policy_end_date' => $rfq_data['policy_end_date'], 'Insured' => $rfq_data['client_name'], - 'Policy Status' => $rfq_data['status'], + 'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "", 'No of Employees' => $rfq_data['incept_emp_count'], 'No of Dependents' => $rfq_data['incept_dept_count'], 'Total Lives' => $rfq_data['incept_no_of_lives'], - 'Period of Insurance ' => date('d/m/Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d/m/Y', strtotime($rfq_data['policy_end_date'])), + 'Period of Insurance ' => !empty($rfq_data['policy_start_date']) && !empty($rfq_data['policy_end_date']) ? date('d/m/Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d/m/Y', strtotime($rfq_data['policy_end_date'])) : "To be decided", 'Policy Run Days' => $rfq_data['policy_run_days'], ]; } else if ($rfq_data['policy_type_id'] == 1) { $lead_data = [ - 'policy_end_date' => $rfq_data['policy_end_date'], 'Insured' => $rfq_data['client_name'], 'No of Employees at Inception' => $rfq_data['incept_emp_count'], 'Total Sum Insured at Inception ' => $rfq_data['total_si_at_incept'], - 'Policy Period' => date('d/m/Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d/m/Y', strtotime($rfq_data['policy_end_date'])), - 'Policy Status' => $rfq_data['status'], - 'Existing Insurer' => $rfq_data['insurer_name'], - 'TPA ' => $rfq_data['tpa_name'], + 'Policy Period' => !empty($rfq_data['policy_start_date']) && !empty($rfq_data['policy_end_date']) ? date('d/m/Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d/m/Y', strtotime($rfq_data['policy_end_date'])) : "To be decided", + 'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "", ]; } + } else { if ($rfq_data['policy_type_id'] == 2) { $lead_data = [ - 'policy_end_date' => $rfq_data['policy_end_date'], 'Insured' => $rfq_data['client_name'], - 'Policy Status' => $rfq_data['status'], + 'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "", 'No of Employees at Inception' => $rfq_data['incept_emp_count'], 'No of Dependents at Inception' => $rfq_data['incept_dept_count'], @@ -1182,7 +1217,7 @@ class LeadsController extends BaseController 'No of Dependents at Renewal' => $rfq_data['renewal_dept_count'], 'Total Lives at Renewal ' => $rfq_data['renewal_no_of_lives'], - 'Period of Insurance ' => date('d/m/Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d/m/Y', strtotime($rfq_data['policy_end_date'])), + 'Period of Insurance ' => !empty($rfq_data['policy_start_date']) && !empty($rfq_data['policy_end_date']) ? date('d/m/Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d/m/Y', strtotime($rfq_data['policy_end_date'])) : "To be decided", 'Policy Run Days' => $rfq_data['policy_run_days'], 'Inception Premium' => $rfq_data['premium_at_inception'], 'Premium as on (Date - DD MM YYYY should be entered based on the claims dump report)' => $rfq_data['premium_date'], @@ -1194,12 +1229,11 @@ class LeadsController extends BaseController ]; } else if ($rfq_data['policy_type_id'] == 1) { $lead_data = [ - 'policy_end_date' => $rfq_data['policy_end_date'], 'Insured' => $rfq_data['client_name'], 'No of Employees at Renewal' => $rfq_data['renewal_emp_count'], 'Total Sum Insured at Renewal ' => $rfq_data['total_si_at_renewal'], - 'Policy Period' => date('d/m/Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d/m/Y', strtotime($rfq_data['policy_end_date'])), - 'Policy Status' => $rfq_data['status'], + 'Policy Period' => !empty($rfq_data['policy_start_date']) && !empty($rfq_data['policy_end_date']) ? date('d/m/Y', strtotime($rfq_data['policy_start_date'])) . ' to ' . date('d/m/Y', strtotime($rfq_data['policy_end_date'])) : "To be decided", + 'Policy Type' => $this->leadType[$rfq_data['lead_type']] ?? "", 'Existing Insurer' => $rfq_data['insurer_name'], 'TPA ' => $rfq_data['tpa_name'], ]; @@ -1209,13 +1243,16 @@ class LeadsController extends BaseController $data = json_decode($rfq_data['json'], true); // dd($data); + $sheetName = 'Worksheet'; if ($type == 2) { + $sheetName = 'QCR'; $data = $this->convertJsonForQCR($data, $type); if ($propsal_and_insurer !== null) { list($proposal_key, $insurer_key) = explode('-', $propsal_and_insurer, 2); $data = $this->transformProposelData($data, $proposal_key, $insurer_key); } } else if ($type == 1) { + $sheetName = 'RFQ'; $data = $this->convertJsonForQCR($data, $type); // dd($data); } @@ -1223,6 +1260,7 @@ class LeadsController extends BaseController $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); + $sheet->setTitle($sheetName); // Start with lead_data at the top @@ -1242,22 +1280,6 @@ class LeadsController extends BaseController ], ]); - // Set column width to fit the image properly - $sheet->getColumnDimension('C')->setWidth(20); // Adjust as needed - $sheet->getRowDimension($rowNumber)->setRowHeight(40); // Adjust as needed - - $drawing = new Drawing(); - $path = ROOTPATH . "public/assets/images/Nhance-Logo-Final.png"; // Use FCPATH for server path - $drawing->setPath($path); - $drawing->setCoordinates("C{$rowNumber}"); // Set position in column B - $drawing->setHeight(35); // Adjust image height - - // Center align the image in the cell - $drawing->setOffsetX(30); // Adjust horizontal offset - $drawing->setOffsetY(5); // Adjust vertical offset - - $drawing->setWorksheet($sheet); - // Apply center alignment to the cell $sheet->getStyle("C{$rowNumber}")->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); $sheet->getStyle("C{$rowNumber}")->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER); @@ -1304,11 +1326,10 @@ class LeadsController extends BaseController $rowNumber++; } - // Set column width based on max content length (adjusted for padding) + // // Set column width based on max content length (adjusted for padding) $sheet->getColumnDimension('A')->setWidth($maxWidthA * 1.2); $sheet->getColumnDimension('B')->setWidth($maxWidthA * 5); - $sheet->getColumnDimension('C')->setWidth($maxWidthB * 1.2); - // $sheet->getColumnDimension('D')->setWidth($maxWidthB * 1.2); + $sheet->getColumnDimension('C')->setWidth($maxWidthB * 1.6); // $rowNumber += 2; @@ -1350,9 +1371,13 @@ class LeadsController extends BaseController ]); $sheet->mergeCells($mergeRange); + $rowNumber_for_remove_quote_asked = $rowNumber; $rowNumber = $rowNumber + 1; - - $subHeaderRow = $rowNumber + 1; + if($type == 2){ + $subHeaderRow = $rowNumber + 1; + }else{ + $subHeaderRow = $rowNumber_for_remove_quote_asked; + } $columnLetter = 'A'; foreach ($headers as $header) { @@ -1393,9 +1418,12 @@ class LeadsController extends BaseController // Add subheaders foreach ($header['subHeaders'] as $subHeader) { - $sheet->setCellValue("{$columnLetter}{$subHeaderRow}", $subHeader); - if ($columnLetter != "A" && $columnLetter != "B" && $columnLetter != "C" && $columnLetter != "D") { + if($type == 2){ + $sheet->setCellValue("{$columnLetter}{$subHeaderRow}", $subHeader); + } + + if ($columnLetter != "A" && $columnLetter != "B" && $columnLetter != "C") { $sheet->getColumnDimension($columnLetter)->setWidth(35); } else { $sheet->getColumnDimension('A')->setWidth(10); @@ -1514,6 +1542,51 @@ class LeadsController extends BaseController ]); } + + //set imgage and align the row and column + // Kint::dump($columnLetter); + if($type == 2){ + $columnLetter_img = $this->getPreviousColumn($columnLetter, 2); + }else{ + $columnLetter_img = $this->getPreviousColumn($columnLetter); + } + // dd($columnLetter_img); + + $company_name = $this->getPreviousColumn($columnLetter_img); + $mergeRange1 = "A1:{$company_name}1"; + $sheet->mergeCells($mergeRange1); + + $rowCount = count($lead_data); + for ($i = 2; $i <= $rowCount + 1; $i++) { + $mergeRange1 = "C{$i}:{$columnLetter_img}{$i}"; + $sheet->mergeCells($mergeRange1); + $sheet->getStyle($mergeRange1)->applyFromArray([ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, + 'color' => ['argb' => 'FF000000'], // Black color + ], + ], + ]); + } + + $sheet->getColumnDimension($columnLetter_img)->setWidth(40); + $sheet->getRowDimension(1)->setRowHeight(40); // Adjust as needed + + $drawing = new Drawing(); + $path = ROOTPATH . "public/assets/images/Nhance-Logo-Final.png"; // Use FCPATH for server path + $drawing->setPath($path); + $drawing->setCoordinates("{$columnLetter_img}1"); // Set position in column B + $drawing->setHeight(35); // Adjust image height + + // Center align the image in the cell + $drawing->setOffsetX(110); // Adjust horizontal offset + $drawing->setOffsetY(10); // Adjust vertical offset + $drawing->setWorksheet($sheet); + + //end + + // Auto-size columns // foreach ($sheet->getColumnIterator() as $column) { // $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true); @@ -1551,7 +1624,7 @@ class LeadsController extends BaseController } $lastRow = count($lead_data) + 1; - $leadRange = "A1:C{$lastRow}"; + $leadRange = "A1:{$columnLetter_img}{$lastRow}"; $sheet->getStyle($leadRange)->applyFromArray([ 'borders' => [ @@ -1571,12 +1644,12 @@ class LeadsController extends BaseController $policy_year = "$current_year-$next_year"; if (!empty($rfq_data['policy_end_date'])) { - $policy_expiry = strtotime($lead_data['policy_end_date']); + $policy_expiry = strtotime($rfq_data['policy_end_date']); $formatted_policy = date("d-m-Y", $policy_expiry); - $filename = "{$rfq_data['client_name']}_{$rfq_data['policy_type']}_{$string}_" . $policy_year . '(Due On ' . $formatted_policy . ')' . '.xlsx'; } else { + $filename = "{$rfq_data['client_name']}_{$rfq_data['policy_type']}_{$string}_" . $policy_year . '_' . '.xlsx'; } @@ -2081,11 +2154,12 @@ class LeadsController extends BaseController $bcc_mails = []; //get CC Mails - if ($recipient_type == 'internal' || $recipient_type == 'placement' || $recipient_type == 'insurer' || $recipient_type == 'client') { + if ($recipient_type == 'internal' || $recipient_type == 'insurer' || $recipient_type == 'client') { $cc_data = isset($params['cc']) ? $params['cc'] : ""; $param_cc_mail = json_decode($cc_data, true); + if (isset($param_cc_mail) && is_array($param_cc_mail) && count($param_cc_mail) > 0) { // Fetch user data where ID is in the param_cc_mail array $userData = $this->userModel @@ -2109,6 +2183,8 @@ class LeadsController extends BaseController // Handle case where param_cc_mail is not valid // return $this->respond(['status' => 'failed','code' => 400,'data' => '','message' => 'CC mail not found!'], 200); } + }else if($recipient_type == 'placement'){ + $cc_mails = isset($params['cc']) ? json_decode($params['cc'], true) : ""; } //get BCC Mails @@ -2176,6 +2252,7 @@ class LeadsController extends BaseController $result = $file_info['filePath']; // return $this->respond(['status' => 'fail', 'code' => 200, 'messgae' => 'File Not Found'], 200); } + // print_rr($result); die; // print_rr($file_info); // $file_path = WRITEPATH."uploads/excel/sample/correction.xls"; @@ -2194,15 +2271,11 @@ class LeadsController extends BaseController //get recipient address if ($recipient_type == 'insurer' || $recipient_type == 'placement') { - // print_r($recipient_mail); die; - $recipient_data = $this->levelContactModel ->where(['contact_type' => 'insurer', 'is_active' => 1]) ->whereIn('id', $recipient_mail) ->findAll(); - // print_r($recipient_data); die; - } else if ($recipient_type == 'client') { $mailIDS = explode(',', $params['contact_mail']); @@ -2266,14 +2339,50 @@ class LeadsController extends BaseController 'status' => 'won', 'placement_date' => change_date_format($params['placement_date'], 'd/m/Y', 'Y-m-d'), 'payment_date' => change_date_format($params['payment_date'], 'd/m/Y', 'Y-m-d'), - 'utr_no' => $params['utr_no'], - 'is_cd' => $params['is_cd'], - 'premium_amount' => $params['premium_amount'], - 'total_amount' => $params['total_amount'], - 'cd_amount' => $params['cd_amount'], + 'utr_no' => $params['utr_no'] ?? null, + 'is_cd' => $params['is_cd'] ?? null , + 'premium_amount' => $params['premium_amount'] ?? null, + 'total_amount' => $params['total_amount'] ?? null, + 'cd_amount' => $params['cd_amount'] ?? null, + 'no_of_installment' => $params['no_of_installment'] ?? null, + 'is_installment' => $params['is_installment'] ?? null, ]; $this->leadsModel->where('id', $lead_id)->set($data)->update(); + + if(isset($params['installments']) && !empty($params['installments'])){ + + $installment_data = json_decode($params['installments'], true); + if(!empty($installment_data)){ + foreach ($installment_data as $key => $value) { + $value['payment_date'] = date('Y/m/d', strtotime($value['payment_date'])) ?? null; + if(isset($value['id']) && !empty($value['id'])){ + $this->leadInstallmentPaymentDetails->where('id', $value['id'])->set($value)->update(); + }else{ + $this->leadInstallmentPaymentDetails->insert($value); + } + } + } + } + + } + + if ($recipient_type == 'client') { + + $this->leadsModel + ->where('id', $lead_id) + ->whereNotIn('status', ['lost', 'co_insurer_pending', 'won', 'completed_with_corrections', 'completed_without_corrections']) + ->set(['status' => "qcr_sent"]) + ->update(); + } + + if ($recipient_type == 'insurer') { + + $this->leadsModel + ->where('id', $lead_id) + ->whereNotIn('status', ['qcr_created', 'qcr_sent', 'lost', 'co_insurer_pending', 'won', 'completed_with_corrections', 'completed_without_corrections']) + ->set(['status' => "rfq_sent"]) + ->update(); } //delete attachment file @@ -2913,6 +3022,10 @@ class LeadsController extends BaseController $current_year = date('Y'); $next_year = $current_year + 1; $policy_year = "$current_year-$next_year"; + $page_name = $page_name == "QCR" ? "Quote Comparison Report" : $page_name; + $log_path = base_url() . '/public/assets/images/Nhance-Logo-Final.png'; + // $log_path ='https://venbait.in/nhance/dev/public/assets/images/Nhance-Logo-Final.png'; + // dd($log_path); $policy_expiry = strtotime($lead_data['policy_end_date']); @@ -2935,6 +3048,7 @@ class LeadsController extends BaseController $message = str_replace("{{LOGGED_USER_NAME}}", ucfirst($logged_user_data['first_name']) . " " . ucfirst($logged_user_data['last_name']), $message); $message = str_replace("{{LOGGED_USER_EMAIL}}", $logged_user_data['email'], $message); $message = str_replace("{{LOGGED_USER_MOBILE}}", $logged_user_data['mobile'], $message); + $message = str_replace("{{LOGO_PATH}}", $log_path, $message); return $message; } else { @@ -3898,10 +4012,15 @@ class LeadsController extends BaseController $lead_file = $this->leadFilesModel->where('lead_id', $lead_id)->where('id', $id)->where('is_active', 1)->first(); if ($lead_file) { - $attachments[] = [ - 'fileName' => $lead_file['file_name'], - 'filePath' => $lead_file_path . $lead_file['file_name'] - ]; + + $fullPath = $lead_file_path . $lead_file['file_name']; + + if (file_exists($fullPath) && !empty($fileName)) { + $attachments[] = [ + 'fileName' => $lead_file['file_name'], + 'filePath' => $fullPath + ]; + } } } } diff --git a/app/Models/LeadInstallmentPaymentDetails.php b/app/Models/LeadInstallmentPaymentDetails.php new file mode 100644 index 00000000..53657d03 --- /dev/null +++ b/app/Models/LeadInstallmentPaymentDetails.php @@ -0,0 +1,54 @@ + + body { + margin-top: 20px; + background: #FAFAFA; + } -body{ - margin-top:20px; - background:#FAFAFA; -} -.order-card { - color: #fff; -} + .order-card { + color: #fff; + } -.bg-c-blue { - background: linear-gradient(45deg,#4099ff,#73b4ff); -} + .bg-c-blue { + background: linear-gradient(45deg, #4099ff, #73b4ff); + } -.bg-c-green { - background: linear-gradient(45deg,#2ed8b6,#59e0c5); -} + .bg-c-green { + background: linear-gradient(45deg, #2ed8b6, #59e0c5); + } -.bg-c-yellow { - background: linear-gradient(45deg,#FFB64D,#ffcb80); -} + .bg-c-yellow { + background: linear-gradient(45deg, #FFB64D, #ffcb80); + } -.bg-c-pink { - background: linear-gradient(45deg,#FF5370,#ff869a); -} + .bg-c-pink { + background: linear-gradient(45deg, #FF5370, #ff869a); + } -.bg-c-red { - background: linear-gradient(45deg,#FF4E50,#F9D423); -} + .bg-c-red { + background: linear-gradient(45deg, #FF4E50, #F9D423); + } -.bg-c-purple { - background: linear-gradient(45deg,#9D50BB,#6E48AA); -} + .bg-c-purple { + background: linear-gradient(45deg, #9D50BB, #6E48AA); + } -.bg-c-orange { - background: linear-gradient(45deg,#F2994A,#F2C94C); -} + .bg-c-orange { + background: linear-gradient(45deg, #F2994A, #F2C94C); + } -.bg-c-teal { - background: linear-gradient(45deg,#1ABC9C,#16A085); -} + .bg-c-teal { + background: linear-gradient(45deg, #1ABC9C, #16A085); + } -.bg-c-cyan { - background: linear-gradient(45deg,#00C9FF,#92FE9D); -} + .bg-c-cyan { + background: linear-gradient(45deg, #00C9FF, #92FE9D); + } -.bg-c-lime { - background: linear-gradient(45deg,#A8E063,#56AB2F); -} + .bg-c-lime { + background: linear-gradient(45deg, #A8E063, #56AB2F); + } -.bg-c-indigo { - background: linear-gradient(45deg,#3F51B5,#5A55AE); -} + .bg-c-indigo { + background: linear-gradient(45deg, #3F51B5, #5A55AE); + } -.bg-c-Pelorous { - background: linear-gradient(45deg, #00d6db, #00a8b5); -} + .bg-c-Pelorous { + background: linear-gradient(45deg, #00d6db, #00a8b5); + } -.bg-c-Pelorous2 { - background: linear-gradient(45deg, #02a8b5, #017f8b); -} + .bg-c-Pelorous2 { + background: linear-gradient(45deg, #02a8b5, #017f8b); + } -.bg-c-Pelorous3 { - background: linear-gradient(45deg, #098895, #046063); -} + .bg-c-Pelorous3 { + background: linear-gradient(45deg, #098895, #046063); + } -.bg-c-Grenadier { - background: linear-gradient(45deg, #ff9d37, #ff7a10); -} + .bg-c-Grenadier { + background: linear-gradient(45deg, #ff9d37, #ff7a10); + } -.bg-c-Grenadier2 { - background: linear-gradient(45deg, #ff8010, #ff4c00); -} + .bg-c-Grenadier2 { + background: linear-gradient(45deg, #ff8010, #ff4c00); + } -.bg-c-Grenadier3 { - background: linear-gradient(45deg, #f06306, #cc4b05); -} + .bg-c-Grenadier3 { + background: linear-gradient(45deg, #f06306, #cc4b05); + } -.bg-c-SilverChalice { - background: linear-gradient(45deg, #a3a8a8, #8f9494); -} + .bg-c-SilverChalice { + background: linear-gradient(45deg, #a3a8a8, #8f9494); + } -.bg-c-SilverChalice2 { - background: linear-gradient(45deg, #7e8484, #686e6e); -} + .bg-c-SilverChalice2 { + background: linear-gradient(45deg, #7e8484, #686e6e); + } -.bg-c-SilverChalice3 { - background: linear-gradient(45deg, #5c6363, #434949); -} + .bg-c-SilverChalice3 { + background: linear-gradient(45deg, #5c6363, #434949); + } -.card { - border-radius: 5px; - -webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4,26,55,0.16); - box-shadow: 0 1px 2.94px 0.06px rgba(4,26,55,0.16); - border: none; - margin-bottom: 30px; - -webkit-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} + .card { + border-radius: 5px; + -webkit-box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16); + box-shadow: 0 1px 2.94px 0.06px rgba(4, 26, 55, 0.16); + border: none; + margin-bottom: 30px; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + } -.card .card-block { - padding-top: 10px; - padding-bottom: 10px; - padding-left: 25px; - padding-right: 25px; -} + .card .card-block { + padding-top: 10px; + padding-bottom: 10px; + padding-left: 25px; + padding-right: 25px; + } -.order-card i { - font-size: 26px; -} + .order-card i { + font-size: 26px; + } -.f-left { - float: left; -} + .f-left { + float: left; + } -.f-right { - float: right; -} + .f-right { + float: right; + } -.m-b-1{ - margin-top: 0; - margin-bottom: 5px; -} + .m-b-1 { + margin-top: 0; + margin-bottom: 5px; + }
@@ -133,7 +133,9 @@ $isActive = get_role_id() == STAFF_ROLE_ID && in_array(ENROLLMENT_TEAM_ID,user_t
Leads
-

+

+

 

 

@@ -143,7 +145,9 @@ $isActive = get_role_id() == STAFF_ROLE_ID && in_array(ENROLLMENT_TEAM_ID,user_t
BDS Renewals
-

+

+

 

 

@@ -151,39 +155,42 @@ $isActive = get_role_id() == STAFF_ROLE_ID && in_array(ENROLLMENT_TEAM_ID,user_t
- + +
+
+ $value) : ?> - 20 ? substr($formattedStatus, 0, 15) . '...' : $formattedStatus; - $showTooltip = strlen($formattedStatus) > 20; + $formattedStatus = strlen($key) < 5 ? strtoupper($key) : ucwords(str_replace('_', ' ', $key)); + $truncatedStatus = strlen($formattedStatus) > 20 ? substr($formattedStatus, 0, 15) . '...' : $formattedStatus; + $showTooltip = strlen($formattedStatus) > 20; ?>
- - $value) : ?> - - $value) : ?> + 20 ? substr($formattedStatus, 0, 15) . '...' : $formattedStatus; - $showTooltip = strlen($formattedStatus) > 20; + // Initialize color set and shade indexes + $colorSetIndex = floor($index / $shadeCount) % $colorSetCount; // Reset color set after each set + $shadeIndex = $index % $shadeCount; // Cycle through shades within the set + + // Get the background color for the current tile + $bgColor = $colorShades[$colorSetIndex][$shadeIndex]; + ?> + 20 ? substr($formattedStatus, 0, 15) . '...' : $formattedStatus; + $showTooltip = strlen($formattedStatus) > 20; ?>
\ No newline at end of file diff --git a/app/Views/rfq/installment_fields.php b/app/Views/rfq/installment_fields.php new file mode 100644 index 00000000..cc347232 --- /dev/null +++ b/app/Views/rfq/installment_fields.php @@ -0,0 +1,35 @@ + $installment) { +?> +
+ + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ diff --git a/app/Views/view_rfq.php b/app/Views/view_rfq.php index f954f3e3..1396be13 100644 --- a/app/Views/view_rfq.php +++ b/app/Views/view_rfq.php @@ -491,25 +491,14 @@
-
- - "> -
- -
- - "> -
-
">
- - - > + + >
@@ -519,20 +508,54 @@ -
- - "> -
+
+ + "> +
-
- - "> -
+
+ + "> +
+
+ + > +
+ + + +
+ + "> +
+ + + + + +
+ + "> +
+ +
+ + "> +
+ + + +
+ +
+
+

+
@@ -557,7 +580,7 @@ > - @@ -694,6 +717,7 @@ policy_terms = JSON.parse(policy_terms_json); jsonDataForHide = data?.premium_data ?? null; + console.log("data", data); if(data){ proposalDataForDropDown = data.proposal_data; if(!data.premium_data){ @@ -837,7 +861,7 @@ $(document).ready(function () { setInterval(function () { submitData(1); - }, 15000); + }, 20000); }); @@ -3194,7 +3218,7 @@ function insurerAndClientMailPopUp(){ function placementMailPopUp() { - console.log(proposalDataForDropDown); + console.log("proposalDataForDropDown", proposalDataForDropDown); const selectElement = document.getElementById('proposals'); @@ -3451,137 +3475,6 @@ function constructURL(url_type) { } } -// function constructURL_ForInsurerAndClientMailSend() { - -// var lead_id = $('#lead_id').val(); -// var mail_content = $('#insurer_and_client_mail_content').val(); -// var subject = $('#mail_subject').val(); -// var apiURL; - -// if (RFQ_or_QCR == 2) { -// apiURL = '?lead_id=' + encodeURIComponent(lead_id) + -// '&file_type=qcr' + -// '&recipient_type=client' + -// '&recipient_mail='+ -// '&mail_content=' + String(mail_content) + -// '&subject=' + String(subject); - -// } else { -// var insurerContact = $('#insurerContact').val(); -// insurerContact = insurerContact.map(Number); -// console.log(insurerContact); - -// apiURL = '?lead_id=' + encodeURIComponent(lead_id) + -// '&file_type=rfq' + -// '&recipient_type=insurer' + -// '&recipient_mail=' + JSON.stringify(insurerContact)+ -// '&mail_content=' + String(mail_content) + -// '&subject=' + String(subject); -// } - -// console.log(apiURL); -// ajaxRequest(apiURL); -// } - -// function constructURL_ForInternalMailSend() { - -// var lead_id = $('#lead_id').val(); -// let to = $('#to').val(); -// let mail_content = $('#internal_mail_content').val(); -// let subject = $('#subject').val(); - - -// let cc = $('#cc').val(); -// cc = cc.map(Number); -// cc = JSON.stringify(cc) - -// var file_type = 'rfq'; -// if (RFQ_or_QCR == 2) { -// file_type = 'qcr' -// } - -// var queryParams = { -// lead_id: lead_id, -// file_type: file_type, -// recipient_type: 'internal', -// to: to, -// cc: cc, -// subject: subject, -// // mail_content: mail_content, -// recipient_mail: '', -// mail_content: mail_content, -// subject: subject, -// }; - -// const queryString = objectToQueryString(queryParams); -// console.log(queryString); - -// var apiURL = '?'+queryString - -// console.log(apiURL); -// ajaxRequest(apiURL); -// } - -// function constructURL_ForPlacementMailSend() { - -// var lead_id = $('#lead_id').val(); -// let to = $('#placement_to').val(); -// console.log('to mail', to); - -// let placement_date = $('#placement_date').val(); -// let utr_no = $('#utr_no').val(); -// let premium_amount = $('#premium_amount').val(); -// let total_amount = $('#total_amount').val(); -// let cd_amount = $('#cd_amount').val(); - -// let subject = $('#placement_subject').val(); -// // let = mail_content = $('#placement_mail_content').val(); -// let proposal_insurer = $('#proposals option:selected').data('id'); -// let insurer_and_branch = $('#proposals').val(); - -// let cc = $('#placement_cc').val(); -// cc = cc.map(Number); -// // cc = cc.split(',').map(email => email.trim()); -// cc = JSON.stringify(cc); - -// // to = to.map(String); -// // to = JSON.stringify(to) -// to = to.split(',').map(email => email.trim()); -// to = JSON.stringify(to) -// console.log('to (array):', to); - -// var file_type = 'rfq'; -// if (RFQ_or_QCR == 2) { -// file_type = 'qcr' -// } - -// var queryParams = { -// lead_id: lead_id, -// file_type: file_type, -// recipient_type: 'placement', -// to: to, -// cc: cc, -// subject: subject, -// proposal_insurer: proposal_insurer, -// insurer_and_branch: insurer_and_branch, -// recipient_mail: to, - -// placement_date: placement_date, -// utr_no: utr_no, -// premium_amount: premium_amount, -// total_amount: total_amount, -// cd_amount: cd_amount, -// }; - -// const queryString = objectToQueryString(queryParams); -// console.log(queryString); - -// var apiURL = '?'+queryString - -// console.log(apiURL); -// ajaxRequest(apiURL); -// } - // Insurer and Client Mail function constructURL_ForInsurerAndClientMailSend() { @@ -3694,16 +3587,44 @@ function constructURL_ForPlacementMailSend() { let proposal_insurer = $('#proposals option:selected').data('id'); let insurer_and_branch = $('#proposals').val(); let cc = $('#placement_cc').val(); + let no_of_installment = $('#no_of_installment').val(); + let is_installment = $("#is_installment_switch").is(":checked") ? 1 : 0; + console.log("cc1", cc); // Process `to` field to = to.split(',').map(email => email.trim()); - cc = cc.map(Number); // or split if it's a string: `cc.split(',').map(email => email.trim())` + // cc = cc.map(Number); // or split if it's a string: `cc.split(',').map(email => email.trim())` + var selectedFiles = []; $('#placement_mail_attachment .multi_file_attachment:checked').each(function () { selectedFiles.push($(this).val()); }); + let data = []; + + $('#installment_form_row .form-row').each(function () { + let installment_amount = $(this).find('input[name="installment_amount[]"]').val(); + let payment_date = $(this).find('input[name="payment_date[]"]').val(); + let utr_no = $(this).find('input[name="utr_no[]"]').val(); + let id = $(this).find('input[name="installment_primary_key[]"]').val(); + console.log('installment_primary_key', id); + + let obj = { + lead_id: lead_id, + installment_amount: installment_amount, + payment_date: payment_date, + utr_no: utr_no + }; + + if (id != undefined && id != null && id != '') { + obj.id = id; + } + + data.push(obj); + }); + + // Prepare FormData var formData = new FormData(); formData.append('lead_id', lead_id); @@ -3723,14 +3644,15 @@ function constructURL_ForPlacementMailSend() { formData.append('cd_amount', cd_amount); formData.append('mail_content', mail_content); formData.append('selected_attachment_files', JSON.stringify(selectedFiles)); + formData.append('installments', JSON.stringify(data)); + formData.append('no_of_installment', no_of_installment); + formData.append('is_installment', is_installment); ajaxRequest(formData); } - - function ajaxRequest(formData) { var apiURL = ''; @@ -3831,23 +3753,40 @@ function getInsurerBranchContacts(input){ function appendInsurerContact(data) { - console.log(data) + console.log(data); - $('#placement_to').empty(); - $('#placement_to').append($('
@@ -472,7 +472,7 @@