From 7a81cf48a51eb035c2721848c156238334809fce Mon Sep 17 00:00:00 2001 From: velz Date: Wed, 5 Jun 2024 09:08:44 +0530 Subject: [PATCH 1/8] FIX_ENDORSEMENT_POLICY_ID_INSERT&MINOR_ISSUES --- app/Controllers/EmployeeServiceController.php | 12 +++--- app/Helpers/excel_util_helper.php | 37 ++++++++++++++++--- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php index 929ce04f..fb141d4b 100644 --- a/app/Controllers/EmployeeServiceController.php +++ b/app/Controllers/EmployeeServiceController.php @@ -889,7 +889,7 @@ class EmployeeServiceController extends AdminController $slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']); foreach($familiy_data as $fkey => $value) { - if($file['id'] == null || $value['temp']['source'] == 'excel' || (($file['action'] == 'dependent_addition' && in_array($value['temp']['source'],[10,11]) && ($slab_details['slab_rates'][0]['premium_type'] == 1 && strtolower($value['relationship']) == 'self') || ($slab_details['slab_rates'][0]['premium_type'] == 1 || $slab_details['slab_rates'][0]['premium_type'] == null)))) //insert data come from excel and from db i.e. ( $file['id'] == null for enrollment data) + if($file['id'] == null || $value['temp']['source'] == 'excel' || (($file['action'] == 'dependent_addition' && in_array($value['temp']['source'],[10,11]) && ($slab_details['slab_rates'][0]['premium_type'] == 1 && strtolower($value['relationship']) == 'self') || ($slab_details['slab_rates'][0]['premium_type'] == 2 || $slab_details['slab_rates'][0]['premium_type'] == null)))) //insert data come from excel and from db i.e. ( $file['id'] == null for enrollment data) { $employee = $this->employeeModel->checkExistingEmp($value,$file['client_branch_id']); @@ -900,7 +900,7 @@ class EmployeeServiceController extends AdminController // Kint::dump($value); // Kint::dump($policy_data); //start implemet of si enhancement of grid type 10,11 - if(count($employee) && $file['action'] == 'dependent_addition' && $value['temp']['source'] == 'db' && ( ($slab_details['slab_rates'][0]['premium_type'] == 1 && (strtolower($value['relationship']) == 'self' || $temp['additional_rack_rate_acting_self'])) || ($slab_details['slab_rates'][0]['premium_type'] == 2 || $slab_details['slab_rates'][0]['premium_type'] == null))) + if(count($employee) && $file['action'] == 'dependent_addition' && $temp['source'] == 'db' && ( ($slab_details['slab_rates'][0]['premium_type'] == 1 && (strtolower($value['relationship']) == 'self' || $temp['additional_rack_rate_acting_self'])) || ($slab_details['slab_rates'][0]['premium_type'] == 2 || $slab_details['slab_rates'][0]['premium_type'] == null))) { $log_message = 'Employee record from DB,Checking SI for - '.$employee[0]['name'].'('.$employee[0]['emp_code'].')'; $this->myLogger->logme('error',$log_message); @@ -965,7 +965,7 @@ class EmployeeServiceController extends AdminController $log_message .= ' with PK ' . $emp_policy_id; //make endorsement entry if action is addition OR Dependt addition - if(($file['action'] == 'dependent_addition' || $file['action'] == 'addition') && $value['temp']['source'] == 'excel') + if(($file['action'] == 'dependent_addition' || $file['action'] == 'addition') && $temp['source'] == 'excel') { $actions = ($file['action'] == 'dependent_addition' ? 'da' : ($file['action'] == 'addition' ? 'a' : NULL)); $addition_endorse_data = ['pk' => $emp_policy_id,'group_key' => rand(100000, 999999),'emp_cdoe' => $value['emp_code'],'table_name' => 'employee_polices','actions' => $actions,'field_name' => 'basic_cover_si','old_value' => NULL,'new_value' => $policy_data['basic_cover_si'],'remarks' => 'addition endorsement','file_id' => $file['id'],'created_by' => $file['created_by']]; @@ -1016,9 +1016,9 @@ class EmployeeServiceController extends AdminController if($slab_value['si'] == $policy_data['basic_cover_si']) { $group_key = rand(100000, 999999); - $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $policy_data['basic_cover_si'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); - $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); - $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => date('Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $policy_data['basic_cover_si'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => date('Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); $this->myLogger->logme('error',($employee['emp_code'].' - '.$employee['name'].'- ( NEW/OLD SI - '.$employee_policy['basic_cover_si'].'/'.$policy_data['basic_cover_si'].')'. '( NEW/OLD PREMIUM - '.$employee_policy['premium'].'/'.$policy_data['premimum'].') '.' - si enhancement via DA')); $log_message = 'SI enhancement done during dependent_addition - '.$employee[0]['name'].'('.$employee[0]['emp_code'].')'; $this->myLogger->logme('error',$log_message); diff --git a/app/Helpers/excel_util_helper.php b/app/Helpers/excel_util_helper.php index 200ada56..b1458e9e 100644 --- a/app/Helpers/excel_util_helper.php +++ b/app/Helpers/excel_util_helper.php @@ -709,8 +709,22 @@ if (!function_exists('calculate_premimum')) $transformed_familiy_member_data['temp']['additional_rack_rate_acting_self'] = false; if(!isset($emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['additional_rack_rate_acting_self']) && $current_grid_info['type'] == 'additional') { - $transformed_familiy_member_data['temp']['additional_rack_rate_acting_self'] = true; - $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['additional_rack_rate_acting_self'] = true; + + if($transformed_familiy_member_data['temp']['action'] != 'DA') + { + $transformed_familiy_member_data['temp']['additional_rack_rate_acting_self'] = true; + $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['additional_rack_rate_acting_self'] = true; + } + else// if dependent addition then set employee from db is an acting self + { + + if($transformed_familiy_member_data['temp']['source'] == 'db' && $transformed_familiy_member_data['temp']['rata_premimum']) + { + // echo 'SETTING'; + $transformed_familiy_member_data['temp']['additional_rack_rate_acting_self'] = true; + $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['additional_rack_rate_acting_self'] = true; + } + } } //generate relationship code @@ -728,7 +742,15 @@ if (!function_exists('calculate_premimum')) $transformed_familiy_member_data['temp']['maxage'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['maxage']; $transformed_familiy_member_data['temp']['maxcount'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['maxcount']; - $transformed_familiy_member_data['policy_details']['basic_cover_si'] = isset($emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si']) ? $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si'] : $transformed_familiy_member_data['policy_details']['basic_cover_si']; + //set self si to all familiy members, except they've come from DB + // if(isset($emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si'])) + // { + if($transformed_familiy_member_data['temp']['source'] != 'db') + { + $transformed_familiy_member_data['policy_details']['basic_cover_si'] = isset($emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si']) ? $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si'] : $transformed_familiy_member_data['policy_details']['basic_cover_si']; + } + // } + // this array hold conditions to allow calculate premium amt $conditions = [ @@ -740,9 +762,12 @@ if (!function_exists('calculate_premimum')) 'isPrimaryGridPremiumTypeSingle' => $slab_details['slab_rates'][0]['premium_type'] == 1, 'isAdditionalPremiumTypeSingle' => isset($slab_details['additional_slab_info']['slab_rates'][0]['premium_type']) ? ( $slab_details['additional_slab_info']['slab_rates'][0]['premium_type'] == 1) : 0, 'isCurrentRelationshipSelf' => strtolower($transformed_familiy_member_data['relationship']) == 'self', - 'isBasicCoverCalculatedToCurrentEmployee' => strtolower($transformed_familiy_member_data['policy_details']['basic_cover_si']) != null + 'isBasicCoverCalculatedToCurrentEmployee' => ($transformed_familiy_member_data['policy_details']['basic_cover_si'] != null && $transformed_familiy_member_data['policy_details']['basic_cover_si'] != 0) ]; - + // Kint::dump($transformed_familiy_member_data['policy_details']); + // echo ($transformed_familiy_member_data['policy_details']['basic_cover_si'] != null && $transformed_familiy_member_data['policy_details']['basic_cover_si'] != 0); + // echo ($conditions['isBasicCoverCalculatedToCurrentEmployee']); + // echo "
"; // same logic for both primay and additional grid type $primaryGridTypeCondition = $conditions['isCurrentActionDependentAddition'] && $conditions['isPrimaryGridType'] && $conditions['isPrimaryGridPremiumTypeSingle'] && $conditions['isCurrentRelationshipSelf']; $additionalGridTypeCondition = $conditions['isCurrentActionDependentAddition'] && $conditions['isAdditionalGridType'] && $conditions['isAdditionalPremiumTypeSingle'] && $conditions['isBasicCoverCalculatedToCurrentEmployee']; @@ -814,6 +839,7 @@ if (!function_exists('transform_excel_data_to_db')) $result['temp']['emp_policy_id'] = isset($memArr['temp']['emp_policy_id']) ? $memArr['temp']['emp_policy_id'] : null; $result['temp']['policy_status'] = isset($memArr['temp']['policy_status']) ? $memArr['temp']['policy_status'] : null; $result['temp']['emp_status'] = isset($memArr['temp']['emp_status']) ? $memArr['temp']['emp_status'] : null; + $result['temp']['rata_premimum'] = isset($memArr['temp']['rata_premimum']) ? $memArr['temp']['rata_premimum'] : 0; $result['policy_details'] = $policy; return $result; @@ -1267,6 +1293,7 @@ if (!function_exists('transform_db_data_to_excel')) $row['temp']['emp_policy_id'] = $value['emp_policy_id']; $row['temp']['emp_status'] = $value['emp_status']; $row['temp']['policy_status'] = $value['status']; + $row['temp']['rata_premimum'] = $value['rata_premimum']; array_push($return_data, ($row)); } From 9141e776f49b415b04817cdc4c3756ba5081b710 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Wed, 5 Jun 2024 14:33:59 +0530 Subject: [PATCH 2/8] FIX_NUM_TO_WORD_AFTER_DECIMAL_VALUE : RV --- app/Views/UserList.php | 2 +- app/Views/client_policy.php | 71 ++++++++---- app/Views/insurer_basic_info.php | 2 - app/Views/insurer_list.php | 2 +- app/Views/kyc_list.php | 2 +- app/Views/login.php | 12 ++ app/Views/policy_grid.php | 145 ++++++++++++++----------- app/Views/policy_type_list.php | 2 +- app/Views/tpa_basic_info.php | 2 +- app/Views/tpa_list.php | 2 +- writable/e_card_template/fhpl_tpa.html | 4 +- 11 files changed, 153 insertions(+), 93 deletions(-) diff --git a/app/Views/UserList.php b/app/Views/UserList.php index bb51b99d..219eb11c 100644 --- a/app/Views/UserList.php +++ b/app/Views/UserList.php @@ -44,7 +44,7 @@ table.dataTable tbody td {

User List

-
+
diff --git a/app/Views/client_policy.php b/app/Views/client_policy.php index 18d6ee36..c7636ad4 100644 --- a/app/Views/client_policy.php +++ b/app/Views/client_policy.php @@ -1018,7 +1018,7 @@ 80: "Eighty", 90: "Ninety" }; - + function convertNumberToWords(number) { if (number === 0) { return numberWords[number]; @@ -1027,22 +1027,34 @@ let word = ''; if (number >= 10000000) { - word += convertNumberToWords(Math.floor(number / 10000000)) + " Crore "; + const crore = Math.floor(number / 10000000); + if (crore > 0) { + word += convertNumberToWords(crore) + " Crore "; + } number %= 10000000; } if (number >= 100000) { - word += convertNumberToWords(Math.floor(number / 100000)) + " Lakh "; + const lakh = Math.floor(number / 100000); + if (lakh > 0) { + word += convertNumberToWords(lakh) + " Lakh "; + } number %= 100000; } if (number >= 1000) { - word += convertNumberToWords(Math.floor(number / 1000)) + " Thousand "; + const thousand = Math.floor(number / 1000); + if (thousand > 0) { + word += convertNumberToWords(thousand) + " Thousand "; + } number %= 1000; } if (number >= 100) { - word += convertNumberToWords(Math.floor(number / 100)) + " Hundred "; + const hundred = Math.floor(number / 100); + if (hundred > 0) { + word += convertNumberToWords(hundred) + " Hundred "; + } number %= 100; } @@ -1059,44 +1071,65 @@ return word.trim(); } + function convertCommaNumberToWords(input) { + let number; if (input instanceof HTMLElement) { const inputValue = input.value; - number = parseInt(inputValue.replace(/,/g, ''), 10); - var convert_word_value = convertNumberToWords(number); - - if (input.nextElementSibling !== null) { - input.nextElementSibling.textContent = convert_word_value; - } + number = parseFloat(inputValue.replace(/,/g, ''), 10); } else { - number = parseInt(input.replace(/,/g, ''), 10); + number = parseFloat(input.replace(/,/g, ''), 10); } - var convert_word_value = convertNumberToWords(number); - return convert_word_value; + const [integerPart, decimalPart] = number.toFixed(2).split('.'); + const integerWord = convertNumberToWords(parseInt(integerPart, 10)); + let result = `${integerWord}`; + + console.log('decimalPart',decimalPart) + + if (decimalPart != '00') { + result += ` and `; + let decimalWord = convertNumberToWords(parseInt(decimalPart, 10)) + result += `${decimalWord}` + result += ` Paisa`; + } + + return result.trim(); } + function onlyNumbers(event) { var charcode; charcode = event.which || event.keyCode; - if (charcode >= 48 && charcode <= 57) return true; + if (charcode >= 48 && charcode <= 57 || charcode == 46) return true; return false; } function formatNumber(input, maxLength) { - // console.log("input", input); + console.log("input", input); + console.log("input value", input.value); + maxLength = 16; - let value = input.value.replace(/\D/g, ''); // Remove non-numeric characters + let value = input.value.replace(/[^\d.]/g, ''); // Remove non-numeric characters + console.log('Remove non-numeric characters', value) + // Limit the number of digits value = value.slice(0, maxLength); + console.log('Limited value', value); + // Format the number with commas using Indian numbering system - value = Number(value).toLocaleString('en-IN'); - input.value = value; + value = parseFloat(value).toLocaleString("en-IN",{ + maximumFractionDigits: 2 + }); + + console.log('formetted value', value); + + input.value = (value); basicPayMultiple(input) if (input.id == 'gpa_si') { diff --git a/app/Views/insurer_basic_info.php b/app/Views/insurer_basic_info.php index a6671c62..8ba9dcc2 100644 --- a/app/Views/insurer_basic_info.php +++ b/app/Views/insurer_basic_info.php @@ -60,8 +60,6 @@ input:checked + .slider:before { } - -
diff --git a/app/Views/insurer_list.php b/app/Views/insurer_list.php index 9a24b1de..0487ca37 100644 --- a/app/Views/insurer_list.php +++ b/app/Views/insurer_list.php @@ -6,7 +6,7 @@

Insurer List

- diff --git a/app/Views/kyc_list.php b/app/Views/kyc_list.php index a4bb712a..ec460a28 100644 --- a/app/Views/kyc_list.php +++ b/app/Views/kyc_list.php @@ -6,7 +6,7 @@

KYC List

- diff --git a/app/Views/login.php b/app/Views/login.php index e6519f06..580a9a0e 100644 --- a/app/Views/login.php +++ b/app/Views/login.php @@ -30,6 +30,18 @@ a:hover { cursor: pointer; } + + + /* .auth-fluid { + position: relative; + display: flex; + align-items: center; + min-height: 100vh; + flex-direction: row; + align-items: stretch; + background: url("/assets/images/login_bg.png") center !important; + background-size: cover; + } */ diff --git a/app/Views/policy_grid.php b/app/Views/policy_grid.php index dc1747d7..f69a7648 100644 --- a/app/Views/policy_grid.php +++ b/app/Views/policy_grid.php @@ -309,7 +309,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -319,13 +319,13 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
- +
@@ -343,17 +343,17 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
- +
- +
@@ -371,13 +371,13 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
- +
@@ -387,18 +387,18 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
- +
- +
@@ -417,12 +417,12 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
- +
`; @@ -438,12 +438,12 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
- +
@@ -462,7 +462,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -476,7 +476,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -497,7 +497,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -510,7 +510,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -530,7 +530,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -544,7 +544,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -565,7 +565,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -578,7 +578,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -600,7 +600,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -609,7 +609,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -629,12 +629,12 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
- +
`; @@ -650,7 +650,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -663,7 +663,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -683,7 +683,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -692,12 +692,12 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
- +
@@ -717,7 +717,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -735,7 +735,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -755,7 +755,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -781,7 +781,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
- +
@@ -1065,13 +1065,14 @@ $('body').on('click', '.btnPolicyModel', function() { var additional_relationship = null; var premium_type_for_sec_rr = [] var premium_type_for_primary_rr = [] + var first = 0; if (res.premiumData && res.premiumData.length > 0) { $.each(res.premiumData, function(index, item) { if (item.rack_rate_type == 0 || policy_type_string == 'GPA') { policy_grid_id_value = item.policy_grid_id; - secondary = item.policy_grid_id; + first = item.policy_grid_id; premium_type_for_primary_rr.push(item.premium_type); } else if (item.rack_rate_type == 1) { @@ -1223,16 +1224,32 @@ $('body').on('click', '.btnPolicyModel', function() { } - $(`input[name="${id_for_trigger}_si[]"]`).each(function() { + console.log('id_for_trigger', id_for_trigger) + console.log('temp_for_premiumData', temp_for_premiumData) + console.log('temp_for_premiumData', temp_for_premiumData[0]) + + + $(`input[name="${first}_si[]"]`).each(function() { // console.log($(this)); $(this).trigger('keyup'); }); - $(`input[name="${id_for_trigger}_premium[]"]`).each(function() { + $(`input[name="${first}_premium[]"]`).each(function() { // console.log($(this)); $(this).trigger('keyup'); }); + $(`input[name="${secondary}_si[]"]`).each(function() { + // console.log($(this)); + $(this).trigger('keyup'); + }); + + $(`input[name="${secondary}_premium[]"]`).each(function() { + // console.log($(this)); + $(this).trigger('keyup'); + }); + + }, error: function(xhr, status, error) { console.error(xhr.responseText); @@ -1514,12 +1531,12 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) { html = `
- +
- +
@@ -1542,13 +1559,13 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
- +
@@ -1568,12 +1585,12 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
- +
@@ -1598,7 +1615,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1614,7 +1631,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1627,7 +1644,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1650,7 +1667,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1665,7 +1682,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1678,7 +1695,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1693,7 +1710,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1702,7 +1719,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1717,7 +1734,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1726,7 +1743,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1741,7 +1758,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1754,7 +1771,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1769,7 +1786,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1778,12 +1795,12 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
- +
@@ -1797,7 +1814,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1815,7 +1832,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1829,7 +1846,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
@@ -1855,7 +1872,7 @@ function appendGridtHtml(ui_type = false, secondary = 0, data = false) {
- +
diff --git a/app/Views/policy_type_list.php b/app/Views/policy_type_list.php index 3bea931d..2318324f 100644 --- a/app/Views/policy_type_list.php +++ b/app/Views/policy_type_list.php @@ -6,7 +6,7 @@

Policy Type List

- diff --git a/app/Views/tpa_basic_info.php b/app/Views/tpa_basic_info.php index 401a9e11..f0b976b1 100644 --- a/app/Views/tpa_basic_info.php +++ b/app/Views/tpa_basic_info.php @@ -31,7 +31,7 @@
- +
diff --git a/app/Views/tpa_list.php b/app/Views/tpa_list.php index cdba3ab7..9df0a1c0 100644 --- a/app/Views/tpa_list.php +++ b/app/Views/tpa_list.php @@ -6,7 +6,7 @@

TPA List

- diff --git a/writable/e_card_template/fhpl_tpa.html b/writable/e_card_template/fhpl_tpa.html index e476dddb..a074425b 100644 --- a/writable/e_card_template/fhpl_tpa.html +++ b/writable/e_card_template/fhpl_tpa.html @@ -59,9 +59,9 @@
-
+

TERMS AND CONDITIONS:

-
+
  1. This card is generated as per the details given by your employer/HR. Incase of any errors in the details you may confirm the same through your employer for making required corrections.
  2. From b9b74059376d01f3c075c454951b7d8bd0d7b297 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Wed, 5 Jun 2024 18:04:28 +0530 Subject: [PATCH 3/8] FIX_ECARD_CHANGES : RV --- app/Controllers/EmpDataServiceController.php | 9 +-- app/Controllers/EmployeeController.php | 16 +++++ app/Views/client_policy.php | 3 +- app/Views/view_deposit.php | 4 +- public/e_card_imgs/Magma.png | Bin 0 -> 10209 bytes public/e_card_imgs/android.png | Bin 0 -> 11365 bytes public/e_card_imgs/appstore.png | Bin 0 -> 2314 bytes public/e_card_imgs/barcode.jpg | Bin 0 -> 38796 bytes public/e_card_imgs/borcode.jpeg | Bin 0 -> 57563 bytes public/e_card_imgs/ios.png | Bin 0 -> 10435 bytes public/e_card_imgs/medi_uesr.jpg | Bin 0 -> 5709 bytes public/e_card_imgs/niva_babu.jpg | Bin 0 -> 49521 bytes public/e_card_imgs/play_store.png | Bin 0 -> 2512 bytes writable/e_card_template/hcl.html | 68 ------------------- writable/e_card_template/phs_tpa.html | 16 ++--- writable/e_card_template/vh_tpa.html | 9 +-- 16 files changed, 36 insertions(+), 89 deletions(-) create mode 100644 public/e_card_imgs/Magma.png create mode 100644 public/e_card_imgs/android.png create mode 100644 public/e_card_imgs/appstore.png create mode 100644 public/e_card_imgs/barcode.jpg create mode 100644 public/e_card_imgs/borcode.jpeg create mode 100644 public/e_card_imgs/ios.png create mode 100644 public/e_card_imgs/medi_uesr.jpg create mode 100644 public/e_card_imgs/niva_babu.jpg create mode 100644 public/e_card_imgs/play_store.png delete mode 100644 writable/e_card_template/hcl.html diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index 3c7b8860..1b3fa587 100644 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -146,19 +146,20 @@ class EmpDataServiceController extends BaseController $totals = round($totals, 2); - $this->removeOldExportInfoFromBatchFile($export_data); - - if (!empty($cash_balance)) { if ((int) $cash_balance['balance'] < (int) $totals) { - + $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.'); + $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount. CASH BALANCE : {balance} and TOTAL AMOUNT : {total}', ['balance' => $cash_balance['balance'], 'total' => $totals]); return 0; } } + $this->removeOldExportInfoFromBatchFile($export_data); + + // Log the count of exported data $count = count($objects); $export_data['count'] = $count; diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 644c97ff..61c66278 100644 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -974,6 +974,14 @@ class EmployeeController extends AdminController '{INSURER_BRANCH}' =>$value['insurer_branch_city'], '{RELATION}' =>$value['relationship'], '{TPA_LOGO}' => base_url() . 'public/uploads/logo/' . $value['tpa_logo'], + '{MEDI_USER}' => base_url() . 'public/e_card_imgs/medi_uesr.jpg', + '{MEDI_INSURER}' => base_url() . 'public/e_card_imgs/Magma.png', + '{MEDI_BARCODE}' => base_url() . 'public/e_card_imgs/borcode.jpeg', + '{QR_ANDROID}' => base_url() . 'public/e_card_imgs/android.png', + '{QR_IOS}' => base_url() . 'public/e_card_imgs/ios.png', + '{QR_ANDROID_2}' => base_url() . 'public/e_card_imgs/play_store.png', + '{QR_IOS_2}' => base_url() . 'public/e_card_imgs/appstore.png', + ]; // Replace placeholders with values in HTML content @@ -1198,6 +1206,14 @@ class EmployeeController extends AdminController '{BACK_CARD}' => base_url() . 'public/uploads/template_bg/' . $tpa_id['back_card'], '{TPA_LOGO}' => base_url() . 'public/uploads/logo/' . $tpa_id['tpa_logo'], '{INSURER_LOGO}' => base_url() . 'public/assets/images/sample_logo_3.png', + '{MEDI_USER}' => base_url() . 'public/e_card_imgs/medi_uesr.jpg', + '{MEDI_INSURER}' => base_url() . 'public/e_card_imgs/Magma.png', + '{MEDI_BARCODE}' => base_url() . 'public/e_card_imgs/borcode.jpeg', + '{QR_ANDROID}' => base_url() . 'public/e_card_imgs/android.png', + '{QR_IOS}' => base_url() . 'public/e_card_imgs/ios.png', + '{QR_ANDROID_2}' => base_url() . 'public/e_card_imgs/play_store.png', + '{QR_IOS_2}' => base_url() . 'public/e_card_imgs/appstore.png', + ]; // Get the values to replace the placeholders diff --git a/app/Views/client_policy.php b/app/Views/client_policy.php index c7636ad4..34a1cd9e 100644 --- a/app/Views/client_policy.php +++ b/app/Views/client_policy.php @@ -1087,8 +1087,9 @@ let result = `${integerWord}`; console.log('decimalPart',decimalPart) + console.log('decimalPart',typeof decimalPart) - if (decimalPart != '00') { + if (decimalPart != '00' && decimalPart != undefined) { result += ` and `; let decimalWord = convertNumberToWords(parseInt(decimalPart, 10)) result += `${decimalWord}` diff --git a/app/Views/view_deposit.php b/app/Views/view_deposit.php index 0e2c6854..222c7929 100644 --- a/app/Views/view_deposit.php +++ b/app/Views/view_deposit.php @@ -87,13 +87,13 @@

    Transaction Details

-
+
- diff --git a/public/e_card_imgs/Magma.png b/public/e_card_imgs/Magma.png new file mode 100644 index 0000000000000000000000000000000000000000..16dc853f9327147ffbe69e8454437b5246130d38 GIT binary patch literal 10209 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 literal 0 HcmV?d00001 diff --git a/public/e_card_imgs/barcode.jpg b/public/e_card_imgs/barcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b5732bca9172a47e8d8e85a94c9af1024af24dab GIT binary patch literal 38796 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

g4MfA^UJJAxorWZ(ugu`W=RF8Lh; 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 Dq(DeO literal 0 HcmV?d00001 diff --git a/public/e_card_imgs/borcode.jpeg b/public/e_card_imgs/borcode.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a00aab42e5af93df7f0fe99b640660d2b1458790 GIT binary patch literal 57563 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%0A<_foU*D^6-w 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 literal 0 HcmV?d00001 diff --git a/public/e_card_imgs/ios.png b/public/e_card_imgs/ios.png new file mode 100644 index 0000000000000000000000000000000000000000..0de017513d5eb318a5442012fd84eb05c671bf4f GIT binary patch literal 10435 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 NdkLULuVO6?{ueloj%)w` literal 0 HcmV?d00001 diff --git a/public/e_card_imgs/niva_babu.jpg b/public/e_card_imgs/niva_babu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72d4464ea50c4c8d9d44a664a91cd00b8fbc01ed GIT binary patch literal 49521 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 z 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

yts`nxtCxIeRYy!d%!TGGc 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 J;M^z9zX8($XPE#1 literal 0 HcmV?d00001 diff --git a/public/e_card_imgs/play_store.png b/public/e_card_imgs/play_store.png new file mode 100644 index 0000000000000000000000000000000000000000..2ceade2390e87e0f0470a7f95fc8de0670d5624a GIT binary patch literal 2512 zcmV;>2`~1EP)^+NSIjvXpFPFT}mi>)!L5t9j7( zkMEq{`JVGx-tYJ4bIva|IXOAzPES(mV{qffjdbbK#m2_Q{Oe;`TwI)G@$vDue~sKe z6&!op^Y`C>U%PhAmEpty15lbOibqNS<96#pF3x+rHhyR z{`>EF^X8QqPyC%cdGe1x{wPqOfC$c>J$fil9OyoA0LU2iA_#QzH#%0 zHR;o*59UG=LG+;j%p3nRdh=1xEIoewIKhORY_kXf*>mI&{Ly2_6Y}P}aQ^(w8#fd3 zC-`bHPf?kqS~tj-FW<$B7q48ol2$!dvW&dg5H;C>-YzdmWwq)nSP&6qLc*I$2?{a=6mMRGJo^h=g3`R1E%UVQPzV#SK_ z$E-jP9z3{j-@Zr)gmWgQO`G=f&p-e9=b!i8ci)dc{wQP?ixeqRqecxgojZ4a^wCE* zZrnI))+}D}f9%+?6)RS>Y}v9+n>JgvY!Mu54?g(d8*jYft1PQjsnWZ5Z@@;J9OyKty{Nh z)vAdph!7HAfBkh-X@mi2h{-X4CY8*o4{6PuIkR->(yzb%x;GO~Jn_Vc5hEr{m;g6l zDUiUBbmq(%vi$A0-vWA()Iv5cQ>IL`9>w+Y%P)tHt2;gY^wUHM4WJPoKo%}sC>oIx zy%@jx>MI&+)~p#H=z*lXPn|ktnKEDjHwg&|;%L&ON%`{SV?q}|SK-2ickSBs*=L_U z_Sj=nrc9wxqU_YE)4T7!8+6>UV@HjWtq(r<0O*q^PaZXD)B_JZ@a?zXiUvKbFJ8P@ zk@=}s0H{kb3#wbK6EXUd4D1KOmtTIlXwf32XX(B7-fJ*q$Pnq8T(DpPPaFubQKLpQ z^2{^OK+pWJVZ->FJ9jQ32Micsfodg+_&48tGbjxiV39J2V5m5VqG7{^B*2qKLR!e{ z*RP*t7Aspqm_L91wr$(MAkiH=b_l#;#fo5XAYr9TmoDf`DHv{~f`HkxXR9VcBCzGl zmm5HU!1nCfqrx9~r) zPMylJ9*CZB)>*85JpTCOefso~SzOv_CLxtSXwV=Wl9^iR-@iZHXcyvk(wlg>q=G_) z3Q1Sp6)jp+q5!m>S7O20^Upv3-FM$n$Nv5M6;sMxCkPr{mTHbLS+i!1K$v*xrI&Ot z;rHm#gE~L|{BvRzIF-Np>Z@u%uC~(%N<@hR1-D_thUcDpj!?;G?AWnFT)%$(t!85# zy)&xO`l&6FFY6N3S2TZ^s8_FE${T0e4;HDzPc4oL zXjQkx?z7K6D<`{d9nv}#S^KCxgn~743+`fG~t!pg+wC26{-UFb>^a$DD zUqT92PeQvgqChp2QZ(U^PJ6;N%G(Dt!b*!pyK1mgj6~(wmMcn>BxLjsprL_A)H2Rc zNLmEtv_&%uDl`fj(*SX`K(CsRCX_hPHe3V}Qyl`X37tei2+_Jhz6**LBoAZC;n)oH905>eJrCbm~zc}40N zwH^85z`qMj^a7>OR4f8QX2KCWpmb$TB~$9-;E|JxgQpB|MgqBW=hjbsRVYM(C$zb9 z!!1-j-?wg^;cQlqPAVc1DT{#CY&2kZ4A+m+z)vH%4dkO@gCL&xd zJm4SwE5iZM5uh;X)#0HsoHXPs7G>=EsWR|MpyF`;J4hr=jhdro<4mG4EIQ_iP>0kB z`4~5DoUo$zv~b-<8X<*yIx845NwR8Qm1)@WqcPn@_;h8GxdR6dxNj&j>e6-{C1`dx zCNtSXHRbXg1dS_kG2u$*txt2NwIDzzty8CtHI!`+v2nvXy=pevSAzx(7$OH>VF++1 zv_$nSw-J*pL_rHTG|s|3G^7aA&{b2U5{ZOP5u|8k=p8Barv4vF`*Rb-5-w@sU%bKp a1Q-A;;7=B$u}l^K0000 - -

-
- -
-
{INSURER_NAME}
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
POLICY NO:{TPA_ID}
Name:{NAME}
Gender:{NAME}
age:{AGE}
Employee code:{EMP_ID}
Corporate name:{CORPORATE_NAME}
Valid form:{POLICY_DATE}
- -
- -
- -
-
Terms&conditions
-
    -
  • Submit this card & photo ID for availing cashless insurrer empanelled hospitals
  • -
  • Cashless facility is subject to approved by TPA as per policy terms and conditions
  • -
  • Validdity of this card is subject to valid policy renewal of policy
  • -
-
- - -
- - - - - \ No newline at end of file diff --git a/writable/e_card_template/phs_tpa.html b/writable/e_card_template/phs_tpa.html index 2180891c..00e4e45a 100644 --- a/writable/e_card_template/phs_tpa.html +++ b/writable/e_card_template/phs_tpa.html @@ -3,25 +3,25 @@
- +
- + - + - + - + - +
Haamira Banu{NAME}
Xoriant Solutions Pvt Ltd{CORPORATE_NAME}
Dob : 02/05/2000EMP ID : 73496Dob : {DOB}EMP ID : {EMP_ID}
PHS ID : MBHI CHE 38728183 XSP EPHS ID : {TPA_ID}
Valid upto : 31/01/2024Valid upto : {POLICY_DATE}
@@ -47,9 +47,9 @@
- + - +
Mobile App
diff --git a/writable/e_card_template/vh_tpa.html b/writable/e_card_template/vh_tpa.html index 79279c59..8009cc09 100644 --- a/writable/e_card_template/vh_tpa.html +++ b/writable/e_card_template/vh_tpa.html @@ -3,7 +3,7 @@
-
+
{INSURER_NAME}
@@ -60,9 +60,6 @@
  • imidiate intimation to vidal health is must incase of any hospitalisation
  • Download the vidal health mobile app from android iOS to get an E-Card check your policy claim status, Hospital list and more, Give a missed call to 022-4892-6099 from your registered mobile number, or visit www.vidalhealthpa.com,or scan << Qr code on corner >>
  • -
    - -
    24x7 help line no
    @@ -96,8 +93,8 @@
    -
    -
    +
    +
    From c0a6a99b20172c0a61389cbf041c5d18bb51a109 Mon Sep 17 00:00:00 2001 From: velz Date: Thu, 6 Jun 2024 14:13:59 +0530 Subject: [PATCH 4/8] CHANGE_DEP_ADD_ENHANCEMENT&DB_CONN_CLOSE_FILTER --- app/Config/Filters.php | 7 +- app/Controllers/EmployeeServiceController.php | 76 ++++++++++--------- app/Filters/CloseDbConnection.php | 25 ++++++ app/Helpers/excel_util_helper.php | 69 +++++++++-------- app/Models/EmployeeModel.php | 3 +- app/Views/layout/footer.php | 2 +- 6 files changed, 108 insertions(+), 74 deletions(-) create mode 100644 app/Filters/CloseDbConnection.php diff --git a/app/Config/Filters.php b/app/Config/Filters.php index 40324597..0855ec3e 100644 --- a/app/Config/Filters.php +++ b/app/Config/Filters.php @@ -11,6 +11,7 @@ use CodeIgniter\Filters\SecureHeaders; use App\Filters\AuthMVC; use App\Filters\HttpRequestLog; +use App\Filters\CloseDbConnection; use App\Filters\AuthJWT; @@ -32,7 +33,8 @@ class Filters extends BaseConfig 'secureheaders' => SecureHeaders::class, 'authMVC' => AuthMVC::class, 'HttpRequestLog' => HttpRequestLog::class, - 'authJWT' => AuthJWT::class + 'authJWT' => AuthJWT::class, + 'CloseDbConnection' => CloseDbConnection::class ]; /** @@ -49,8 +51,7 @@ class Filters extends BaseConfig // 'invalidchars', ], 'after' => [ - // 'HttpRequestLog', - //'authMVC', + 'CloseDbConnection' // 'secureheaders', ], ]; diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php index fb141d4b..ed6bf76e 100644 --- a/app/Controllers/EmployeeServiceController.php +++ b/app/Controllers/EmployeeServiceController.php @@ -665,14 +665,14 @@ class EmployeeServiceController extends AdminController $group_key = rand(100000, 999999); //for emp table - $this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'emp_status','old_value' => $data['emp_status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'emp_status','old_value' => $data['emp_status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); // dd( $this->empEndorsementModel->getLastQuery()); // $this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'change_event','old_value' => $data['change_event'],'new_value' => 'deletion','created_by' => $file['created_by'],'remarks' => 'general deletion']); // for employee policy table - $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'date_of_exit','old_value' => $data['date_of_exit'],'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]); - $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'reason_for_exit','old_value' => $data['reason_for_exit'],'new_value' => $row[5],'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]); - $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'status','old_value' => $data['status'],'new_value' => 'inactive','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'date_of_exit','old_value' => $data['date_of_exit'],'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); + $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'reason_for_exit','old_value' => $data['reason_for_exit'],'new_value' => $row[5],'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); + $this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'status','old_value' => $data['status'],'new_value' => 'inactive','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); }; //iterate each row foreach ($excel_data as $col_key => $row) @@ -794,7 +794,7 @@ class EmployeeServiceController extends AdminController if(!count($existing_endorsements)) { $group_key = rand(100000, 999999); - $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employees','actions' => 'c','name' => $employee['name'],'field_name' => $field_name,'old_value' => $employee[ $field_name ],'new_value' => $field_value,'created_by' => $file['created_by'],'remarks' => $row[7],'date_of_correction' => change_date_format($row[5],'d-M-Y','Y-m-d'),'group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employees','actions' => 'c','name' => $employee['name'],'field_name' => $field_name,'old_value' => $employee[ $field_name ],'new_value' => $field_value,'created_by' => $file['created_by'],'remarks' => $row[7],'date_of_correction' => change_date_format($row[5],'d-M-Y','Y-m-d'),'group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); } @@ -855,15 +855,15 @@ class EmployeeServiceController extends AdminController //make entry in endorsement table if(!count($existing_endorsements)) { - + //transform data to send foreach ($slab_details['slab_rates'] as $skey => $slab_value) { if($slab_value['si'] == $row[3]) { $group_key = rand(100000, 999999); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $row[3],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $row[3],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); + $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id'],'status' => 'pending']); break; } } @@ -889,7 +889,7 @@ class EmployeeServiceController extends AdminController $slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($file['policy_id'],$file['client_id']); foreach($familiy_data as $fkey => $value) { - if($file['id'] == null || $value['temp']['source'] == 'excel' || (($file['action'] == 'dependent_addition' && in_array($value['temp']['source'],[10,11]) && ($slab_details['slab_rates'][0]['premium_type'] == 1 && strtolower($value['relationship']) == 'self') || ($slab_details['slab_rates'][0]['premium_type'] == 2 || $slab_details['slab_rates'][0]['premium_type'] == null)))) //insert data come from excel and from db i.e. ( $file['id'] == null for enrollment data) + if($file['id'] == null || $value['temp']['source'] == 'excel' || (($file['action'] == 'dependent_addition' && ($slab_details['slab_rates'][0]['premium_type'] == 1 && strtolower($value['relationship']) == 'self') || ($slab_details['slab_rates'][0]['premium_type'] == 2 || $slab_details['slab_rates'][0]['premium_type'] == null)))) //insert data come from excel and from db i.e. ( $file['id'] == null for enrollment data) { $employee = $this->employeeModel->checkExistingEmp($value,$file['client_branch_id']); @@ -898,20 +898,20 @@ class EmployeeServiceController extends AdminController unset($value['policy_details']); unset($value['temp']); // Kint::dump($value); + // Kint::dump($temp); // Kint::dump($policy_data); + // echo '---------------------------------------'; + //start implemet of si enhancement of grid type 10,11 - if(count($employee) && $file['action'] == 'dependent_addition' && $temp['source'] == 'db' && ( ($slab_details['slab_rates'][0]['premium_type'] == 1 && (strtolower($value['relationship']) == 'self' || $temp['additional_rack_rate_acting_self'])) || ($slab_details['slab_rates'][0]['premium_type'] == 2 || $slab_details['slab_rates'][0]['premium_type'] == null))) + if(count($employee) && $file['action'] == 'dependent_addition' && $temp['source'] == 'db' && in_array($value['temp']['grid_id'],[10,11]) && ( ($slab_details['slab_rates'][0]['premium_type'] == 1 && (strtolower($value['relationship']) == 'self' || $temp['additional_rack_rate_acting_self'])) || ($slab_details['slab_rates'][0]['premium_type'] == 2 || $slab_details['slab_rates'][0]['premium_type'] == null))) { $log_message = 'Employee record from DB,Checking SI for - '.$employee[0]['name'].'('.$employee[0]['emp_code'].')'; $this->myLogger->logme('error',$log_message); $res = $this->employeesSIEnhanceProcessWhileOnbboard(employee:$employee[0],policy_data: $policy_data,file:$file);// where employee holds existing emp data and policy_data holds new si enhancement - if(!$res) - { - //if endorsement not happend no need to update emp/policy details in DB. - break; - } + + break;//skip db employee } - //end implemet of si enhancement of grid type 10,11 + //end implemet of si enhancement of grid type //save employee table if(count($employee)) @@ -967,8 +967,10 @@ class EmployeeServiceController extends AdminController //make endorsement entry if action is addition OR Dependt addition if(($file['action'] == 'dependent_addition' || $file['action'] == 'addition') && $temp['source'] == 'excel') { + $log_message = $file['action'].' - endorsement'. $value['emp_code'].' - '.$value['name'].' - with policy id'.$emp_policy_id; + $this->myLogger->logme('error',$log_message); $actions = ($file['action'] == 'dependent_addition' ? 'da' : ($file['action'] == 'addition' ? 'a' : NULL)); - $addition_endorse_data = ['pk' => $emp_policy_id,'group_key' => rand(100000, 999999),'emp_cdoe' => $value['emp_code'],'table_name' => 'employee_polices','actions' => $actions,'field_name' => 'basic_cover_si','old_value' => NULL,'new_value' => $policy_data['basic_cover_si'],'remarks' => 'addition endorsement','file_id' => $file['id'],'created_by' => $file['created_by']]; + $addition_endorse_data = ['pk' => $emp_policy_id,'group_key' => rand(100000, 999999),'emp_code' => $value['emp_code'],'table_name' => 'employee_polices','actions' => $actions,'name' => $value['name'],'field_name' => 'basic_cover_si','old_value' => NULL,'new_value' => $policy_data['basic_cover_si'],'remarks' => 'addition endorsement','file_id' => $file['id'],'created_by' => $file['created_by']]; $this->employeeEndorsementforAddtionAndDependentAddition($addition_endorse_data); } @@ -990,14 +992,18 @@ class EmployeeServiceController extends AdminController // $employee -> holds existing emp model obj and $policy_data holds new policy changes as array public function employeesSIEnhanceProcessWhileOnbboard(array $employee,array $policy_data,array $file) { - $employee = $this->employeeModel->where('emp_code', $employee['emp_code'])->where('name',$employee['name'])->where('client_id',$employee['client_id'])->where('client_branch_id',$file['client_id'])->where('is_active',1)->first(); - + + $employee = $this->employeeModel->where('emp_code', $employee['emp_code'])->where('name',$employee['name'])->where('client_id',$employee['client_id'])->where('client_branch_id',$file['client_branch_id'])->where('is_active',1)->first(); + // Kint::dump($this->employeeModel->getLastQuery()); + // dd($employee); $employee_policy = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$file['policy_id'])->first(); // dd($employee_policy); - $slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($employee_policy['client_policy_id'],$employee['client_id']); + // $slab_details = $this->policiesModel->getPolicySlabRatesForEmpOnboard($employee_policy['client_policy_id'],$employee['client_id']); + // dd($slab_details); + // $temp_slab_details = ($temp['grid_type'] == 'primary' ? $slab_details['slab_rates'] : $slab_details['additional_slab_info']['slab_rates']); //check si has changed in normal case OR check premium only changed, still treat as SI enhancement in grid type 10 - if($employee_policy['basic_cover_si'] != $policy_data['basic_cover_si'] || ($policy_data['premimum'] != null && $policy_data['premimum'] != "" && $employee_policy['premimum'] != $policy_data['premimum'])) + if($employee_policy['basic_cover_si'] != $policy_data['basic_cover_si'] || ($policy_data['premium'] != null && $policy_data['premium'] != "" && $employee_policy['premium'] != $policy_data['premium'])) { $existing_endorsements = $this->empEndorsementModel->where('actions','si') ->where('table_name','employee_polices') @@ -1006,26 +1012,22 @@ class EmployeeServiceController extends AdminController ->where('name',$employee['name']) ->where('field_name','basic_cover_si') ->findAll(); - // dd($existing_endorsements); //make entry in endorsement table if(!count($existing_endorsements)) { - - foreach ($slab_details['slab_rates'] as $skey => $slab_value) - { - if($slab_value['si'] == $policy_data['basic_cover_si']) - { - $group_key = rand(100000, 999999); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $policy_data['basic_cover_si'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); - $this->empEndorsementModel->save(['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => date('Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']]); - $this->myLogger->logme('error',($employee['emp_code'].' - '.$employee['name'].'- ( NEW/OLD SI - '.$employee_policy['basic_cover_si'].'/'.$policy_data['basic_cover_si'].')'. '( NEW/OLD PREMIUM - '.$employee_policy['premium'].'/'.$policy_data['premimum'].') '.' - si enhancement via DA')); - $log_message = 'SI enhancement done during dependent_addition - '.$employee[0]['name'].'('.$employee[0]['emp_code'].')'; + $group_key = rand(100000, 999999); + $data = array( + ['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $policy_data['basic_cover_si'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']], + ['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $policy_data['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']], + ['pk' => (int)$employee_policy['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => date('Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement via DA','group_key' => $group_key,'file_id' => $file['id']] + ); + + $this->empEndorsementModel->insertBatch($data); + $this->myLogger->logme('error',($employee['emp_code'].' - '.$employee['name'].'- ( NEW/OLD SI - '.$employee_policy['basic_cover_si'].'/'.$policy_data['basic_cover_si'].')'. '( NEW/OLD PREMIUM - '.$employee_policy['premium'].'/'.$policy_data['premium'].') '.' - si enhancement via DA')); + $log_message = 'SI enhancement done during dependent_addition - '.$employee['name'].'('.$employee['emp_code'].')'; $this->myLogger->logme('error',$log_message); return true; //retun true when endorsement inserted - - } - } + } return false; //retun false when endorsement not happend } diff --git a/app/Filters/CloseDbConnection.php b/app/Filters/CloseDbConnection.php new file mode 100644 index 00000000..ad49eb86 --- /dev/null +++ b/app/Filters/CloseDbConnection.php @@ -0,0 +1,25 @@ +logme('error','CloseDbConnections....!'); + $db->close(); + } +} diff --git a/app/Helpers/excel_util_helper.php b/app/Helpers/excel_util_helper.php index b1458e9e..ca88b7f1 100644 --- a/app/Helpers/excel_util_helper.php +++ b/app/Helpers/excel_util_helper.php @@ -15,11 +15,13 @@ if(!function_exists('calculate_days_bw_dates')) else{ $passedDateTime = new DateTime($from_date); } $interval = $currentDateTime->diff($passedDateTime); - if ($include_start_date) { - $interval->days += 1; - } + // $totalDays = $interval->days; + // if ($include_start_date) { + // $totalDays += 1; + // } + //$interval->totalDays = $totalDays; + return $interval; - return $interval; } } @@ -601,8 +603,9 @@ if (!function_exists('generate_relationship_code')) $relationship = ['self' => 1,'spouse' => 2,'son' => 3,'daughter' => 4,'father' => 5,'mother' => 6,'father-in-law' => 7,'mother-in-law' => 8]; $slug = \Config\Services::slug(); $relationship_code = $slug->slugify($arr['relationship']); + $emp_type_code = ($relationship_code == 'self' ? 'EMP_TYP_01' : 'EMP_TYP_03'); $relationship_code = $gender[ $arr['gender'] ] . $relationship[ $relationship_code ] ; - return $relationship_code; + return ['relationship_code' => $relationship_code,'emp_type_code' => $emp_type_code]; } } @@ -730,7 +733,9 @@ if (!function_exists('calculate_premimum')) //generate relationship code if($transformed_familiy_member_data['temp']['action'] != 'D' && $transformed_familiy_member_data['temp']['action'] != 'C' && $transformed_familiy_member_data['temp']['action'] != 'SI') { - $transformed_familiy_member_data['relationship_code'] = generate_relationship_code($transformed_familiy_member_data); + $temp_res = generate_relationship_code($transformed_familiy_member_data); + $transformed_familiy_member_data['relationship_code'] = $temp_res['relationship_code']; + $transformed_familiy_member_data['emp_type'] = $temp_res['emp_type_code']; } //calculate primimum based on grid type @@ -900,7 +905,7 @@ if (!function_exists('premium_calculation_manager')) $insurer = ($insurer->find($policy_terms['insurer_id'])); if($insurer['addition_add_day'] == true) { - $emp_data['policy_details']['date_coverage'] = (new DateTime($emp_data['policy_details']['date_coverage']))->modify('-1 day')->format('Y-m-d'); + $emp_data['policy_details']['date_coverage'] = (new DateTime($emp_data['policy_details']['date_coverage']))->modify('+1 day')->format('Y-m-d'); } } // dd($emp_data); @@ -917,9 +922,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; break; @@ -937,9 +942,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; break; @@ -956,9 +961,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; break; @@ -980,9 +985,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; break; @@ -1000,9 +1005,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; break; @@ -1021,9 +1026,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; break; @@ -1042,9 +1047,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; @@ -1065,9 +1070,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; break; @@ -1086,9 +1091,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = (float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''); $is_match_found = true; break; @@ -1113,9 +1118,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $employee_received_si; $emp_data['policy_details']['date_coverage'] = isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']; $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')); $is_match_found = true; break; @@ -1143,9 +1148,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $familiy_si_covered; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = get_premium_for_si(slab_details: $slab_details,si_amount: $familiy_si_covered,band: $employee_received_band); - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')); $is_match_found = true; break; @@ -1168,9 +1173,9 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $employee_received_si; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; - $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); + $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],(calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days + 1)); $emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')); $is_match_found = true; break; @@ -1193,7 +1198,7 @@ if (!function_exists('premium_calculation_manager')) $emp_data['policy_details']['basic_cover_si'] = $employee_received_si; $emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); $emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date']; - $emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days; + $emp_data['policy_details']['days'] = (calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days + 1); $emp_data['policy_details']['premium'] = $slab_value['premium']; $emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($emp_data['policy_details']['premium'],$emp_data['policy_details']['days'],calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days); $emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')); diff --git a/app/Models/EmployeeModel.php b/app/Models/EmployeeModel.php index cbde9e88..adffe7ff 100644 --- a/app/Models/EmployeeModel.php +++ b/app/Models/EmployeeModel.php @@ -39,7 +39,8 @@ class EmployeeModel extends Model "is_addon_value", "is_createdby_hr", "client_branch_id", - "token_time_out" + "token_time_out", + "emp_type" ]; // Callbacks diff --git a/app/Views/layout/footer.php b/app/Views/layout/footer.php index 35093e66..a4458cb1 100644 --- a/app/Views/layout/footer.php +++ b/app/Views/layout/footer.php @@ -139,7 +139,7 @@ From 61cd91e9260ff2f63422dbd3511e3b9246113e1e Mon Sep 17 00:00:00 2001 From: aadhavan valli Date: Thu, 6 Jun 2024 16:26:13 +0530 Subject: [PATCH 5/8] CHANGE_USER_CREATE_SAME_IN_TICKETING : AADHAVAN --- app/Controllers/UserController.php | 59 ++++++++++++++++++++++++++++++ app/Views/UserList.php | 3 +- 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/app/Controllers/UserController.php b/app/Controllers/UserController.php index 5d1f2813..184cbefa 100644 --- a/app/Controllers/UserController.php +++ b/app/Controllers/UserController.php @@ -58,9 +58,33 @@ class UserController extends AdminController $userData = $this->request->getPost(); $userData['created_by'] = get_session_userid(); + $temp_team = $userData['team']; unset($userData['team']); $insert = $this->userModel->insert($userData); if($insert){ + $db = \Config\Database::connect(); + $tableName = 'hdz_staff'; + + if($userData['role'] == 1){ + $admin = 1; + }else{ + $admin = 0; + } + foreach ($temp_team as $key => $value) { + if($value == 2){ + $hdz_staff = [ + 'emp_code' => $userData['emp_code'], + 'fullname' => $userData['first_name'], + 'username' => strtolower($userData['first_name']), + 'email' => $userData['email'], + 'admin' => $admin, + 'registration' => time(), + ]; + + $db->table($tableName)->insert($hdz_staff); + } + } + $teamData['user_id'] = $insert ; foreach ($teams as $value) { $teamData['team_id'] = $value; @@ -99,6 +123,35 @@ class UserController extends AdminController $update = $this->userModel->where('id', $id )->set($userData)->update(); if($update){ + + $db = \Config\Database::connect(); + $tableName = 'hdz_staff'; + + if($userData['role'] == 1){ + $admin = 1; + }else{ + $admin = 0; + } + + foreach ($userData['team'] as $key => $value) { + if($value == 2){ + $hdz_staff = [ + 'emp_code' => $userData['emp_code'], + 'fullname' => $userData['first_name'], + 'username' => strtolower($userData['first_name']), + 'email' => $userData['email'], + 'admin' => $admin, + ]; + + + $db->table($tableName)->where('emp_code', $userData['emp_code']) + ->where('email', $userData['email']) + ->set($userData) + ->update(); + } + } + + $this->userTeamsModel->where('user_id', $id)->delete(); if($teams){ $teamData['user_id'] = $id ; @@ -120,6 +173,12 @@ class UserController extends AdminController $deactive = $model->where('id', $id)->set(['is_active' => 0])->update(); if($deactive) { + // $db = \Config\Database::connect(); + // $tableName = 'hdz_staff'; + + // $db->table($tableName)->insert($hdz_staff); + + echo json_encode(array("status" => true)); }else{ echo json_encode(array("status" => false)); diff --git a/app/Views/UserList.php b/app/Views/UserList.php index bb51b99d..238d3122 100644 --- a/app/Views/UserList.php +++ b/app/Views/UserList.php @@ -303,8 +303,9 @@ var form = document.getElementById("UserForm"); // Add submit event listener to the form form.addEventListener("submit", function(event) { // Disable the submit button to avoid multiple submissions - document.getElementById("btnSubmit").disabled = true; + // document.getElementById("btnSubmit").disabled = true; }); + From 422df2d3fd75fa792ef0313c2f105a9436f69390 Mon Sep 17 00:00:00 2001 From: velz Date: Fri, 7 Jun 2024 14:06:53 +0530 Subject: [PATCH 6/8] CHANGE_ASSET_EXPIRY&CONTENT_COMPRESSION --- .htaccess | 18 ++++++++++++++++++ app/Config/App.php | 3 +++ public/.htaccess | 16 ++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/.htaccess b/.htaccess index 34427d9c..cf3c1842 100644 --- a/.htaccess +++ b/.htaccess @@ -36,6 +36,24 @@ Options -Indexes # Ensure Authorization header is passed along RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + + + + +ExpiresActive On +ExpiresByType image/jpg "access 1 year" +ExpiresByType image/jpeg "access 1 year" +ExpiresByType image/gif "access 1 year" +ExpiresByType image/png "access 1 year" +ExpiresByType text/css "access 1 month" +ExpiresByType text/js "access 1 month" +ExpiresByType application/pdf "access 1 month" +ExpiresByType application/javascript "access 1 month" +ExpiresByType application/x-javascript "access 1 month" +ExpiresByType application/x-shockwave-flash "access 1 month" +ExpiresByType image/x-icon "access 1 year" +ExpiresDefault "access 2 days" diff --git a/app/Config/App.php b/app/Config/App.php index 884c19f1..03514f13 100644 --- a/app/Config/App.php +++ b/app/Config/App.php @@ -42,6 +42,9 @@ class App extends BaseConfig */ public string $indexPage = 'index.php'; + + public $compressOutput = true; + /** * -------------------------------------------------------------------------- * URI PROTOCOL diff --git a/public/.htaccess b/public/.htaccess index dbed322f..28a9d8df 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -38,6 +38,22 @@ Options -Indexes RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + +ExpiresActive On +ExpiresByType image/jpg "access 1 year" +ExpiresByType image/jpeg "access 1 year" +ExpiresByType image/gif "access 1 year" +ExpiresByType image/png "access 1 year" +ExpiresByType text/css "access 1 month" +ExpiresByType text/js "access 1 month" +ExpiresByType application/pdf "access 1 month" +ExpiresByType application/javascript "access 1 month" +ExpiresByType application/x-javascript "access 1 month" +ExpiresByType application/x-shockwave-flash "access 1 month" +ExpiresByType image/x-icon "access 1 year" +ExpiresDefault "access 2 days" + + # If we don't have mod_rewrite installed, all 404's # can be sent to index.php, and everything works as normal. From 6d70b517dab8b4cad69449fb31096942a0799a15 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 13 Jun 2024 08:25:48 +0530 Subject: [PATCH 7/8] FEAT_CD_MASTER_AND_CD_RELATED_CHANGES : RV --- app/Config/Routes.php | 10 + app/Controllers/ClientController.php | 50 +++- app/Controllers/EmpDataServiceController.php | 52 +++- app/Controllers/MasterController.php | 106 +++++++ app/Helpers/DepositHelper.php | 17 +- app/Models/CDMasterModel.php | 64 +++++ app/Models/ClientDepositModel.php | 3 + app/Models/ClientPolicyModel.php | 6 +- app/Views/cd_master_list.php | 284 +++++++++++++++++++ app/Views/client_policy.php | 79 +++++- app/Views/layout/header.php | 3 + app/Views/view_deposit.php | 20 +- 12 files changed, 668 insertions(+), 26 deletions(-) create mode 100644 app/Models/CDMasterModel.php create mode 100644 app/Views/cd_master_list.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 7917751a..34426123 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -206,6 +206,14 @@ $routes->group("/master", ["filter" => "authMVC"], function ($routes) { $routes->get("remove/(:any)", "MasterController::removePolicyPolicies/$1"); }); }); + + $routes->group("cash_deposite", ["filter" => "authMVC"], function ($routes) { + $routes->get("list", "MasterController::CDMasterList"); + $routes->post("create", "MasterController::createCDMasterData"); + $routes->post("edit", "MasterController::editCDMasterData"); + $routes->get("list/(:any)", "MasterController::getCDMasterDataByID/$1"); + // $routes->get("remove/(:any)", "MasterController::policyTypeRemove/$1"); + }); }); @@ -234,6 +242,8 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get("get-client-branch/(:any)", "ClientController::getClientBranch/$1"); $routes->get("get-client-details/(:any)", "ClientController::getClientAllDetailsByUsingClientID/$1"); $routes->get("delete-additional-rack-rate/(:any)", "ClientController::deleteAdditionalRackRate/$1"); + $routes->get("check_cd_ac_no/(:any)", "MasterController::checkUniqueCDAccountNumber/$1"); + $routes->get("get_cd_ac/(:any)", "ClientController::get_cd_ac/$1"); }); $routes->cli('cli/processjob', 'JobWorker::processJob'); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 52b3dbca..5ee0296c 100644 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -31,6 +31,8 @@ use App\Models\PolicyPremium2Model; use App\Models\EmployeeModel; use App\Models\EmployeePolicyModel; use App\Models\NotificationModel; +use App\Models\CDMasterModel; + @@ -62,6 +64,8 @@ class ClientController extends AdminController protected $employeeModel; protected $employeePolicyModel; protected $notificationModel; + protected $CDMasterModel; + public function __construct() { @@ -90,6 +94,8 @@ class ClientController extends AdminController $this->employeeModel = new EmployeeModel(); $this->employeePolicyModel = new EmployeePolicyModel(); $this->notificationModel = new NotificationModel(); + $this->CDMasterModel = new CDMasterModel(); + @@ -205,8 +211,14 @@ class ClientController extends AdminController 2 => 'Adjustment', 3 => 'Refund', 4 => 'Debit', - // Add more options as needed ]; + $subTypeOptions = [ + 1 => 'Replenishment', + 2 => 'Adjustment', + 3 => 'RefundFromDeletion', + 4 => 'Debit', + ]; + $data['subTypeOptions'] = $subTypeOptions; $headerData['page_name'] = 'Client Deposit'; $data['insurerName']= $this->insurerModel->getInsurerName($insurerId); @@ -231,11 +243,22 @@ class ClientController extends AdminController // Retrieve form data from POST request $loggedInUserID = get_session_userid(); + $client_id = $this->request->getPost('client_id'); + $insurer_id = $this->request->getPost('insurer_id'); + + $CD_Account_Number = $this->CDMasterModel + ->where('client_id', $client_id) + ->where('insurer_id', $insurer_id['insurer_id']) + ->first(); + // Prepare the array with data $data = [ 'amount' => $this->request->getPost('amount'), 'sub_type_id' => $this->request->getPost('sub_type_id'), 'client_id' => $this->request->getPost('client_id'), + 'client_policy_id' => null, + 'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null, + 'endorsement_no' => null, 'insurer_id' => $this->request->getPost('insurer_id'), 'description' => $this->request->getPost('description'), 'transaction_type' => $this->request->getPost('transaction_type') ?: 'Credit', @@ -638,7 +661,8 @@ class ClientController extends AdminController $data['base_policy'] = $this->request->getPost('base_policy'); $data['policy_status'] = 1; $data['inception_type'] = $this->request->getPost('inception_type') ? 2 : 1; - $data['client_branch_id'] = $this->request->getPost('client_branch_id'); + $data['client_branch_id'] = $this->request->getPost('client_branch_id'); + $data['cd_ac_no'] = $this->request->getPost('cd_ac_no'); @@ -733,7 +757,8 @@ class ClientController extends AdminController $data['base_policy'] = $this->request->getPost('base_policy'); $data['policy_status'] = 1; $data['inception_type'] = $this->request->getPost('inception_type') ? 2 : 1; - $data['client_branch_id'] = $this->request->getPost('client_branch_id'); + $data['client_branch_id'] = $this->request->getPost('client_branch_id'); + $data['cd_ac_no'] = $this->request->getPost('cd_ac_no'); @@ -1140,9 +1165,10 @@ class ClientController extends AdminController $client_id = $client_policy_data['client_id']; $polices = $this->policesModel->where(['insurer_id' => $insurer_id, 'is_active' => 1])->findAll(); $client_policy_list = $this->clientPolicyModel->getpolicyWithPattern( $client_id ); + $cd_data = $this->CDMasterModel->where('client_id', $client_id)->where('insurer_id', $insurer_id)->findAll(); - return $this->respond(['status' => true,'code' => 200, 'client_policy_list' => $client_policy_list, 'data' => $client_policy_data, "insurer_id" => $client_policy_data['insurer_id'], 'policy' => $polices], 200); + return $this->respond(['status' => true,'code' => 200, 'client_policy_list' => $client_policy_list, 'data' => $client_policy_data, 'cd_data' => $cd_data, "insurer_id" => $client_policy_data['insurer_id'], 'policy' => $polices], 200); }else{ return $this->respond(['status' => false,'code' => 404, 'message' => 'no data found'], 200); } @@ -1942,10 +1968,6 @@ class ClientController extends AdminController $data['client_policy'] = $client_policy; - - - - $data['client_branch'] = $this->clientModel ->select(' @@ -2120,5 +2142,17 @@ class ClientController extends AdminController + public function get_cd_ac($client_id, $insurer_id){ + + $cd_data = $this->CDMasterModel->where('client_id', $client_id)->where('insurer_id', $insurer_id)->findAll(); + + if($cd_data){ + return $this->respond(['status' => true, 'code' => 200, 'data' => $cd_data], 200); + }else{ + return $this->respond(['status' => false, 'code' => 404, 'insurer_id' => $insurer_id, 'client_id' => $client_id], 200); + } + + } + } \ No newline at end of file diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index 1b3fa587..2d0febe4 100644 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -24,6 +24,7 @@ use App\Models\ClientDepositModel; use App\Models\NotificationModel; use App\Models\MessageModel; use App\Models\UserMessageModel; +use App\Models\CDMasterModel; use App\Controllers\Jobs; use App\Controllers\JobWorker; @@ -52,6 +53,8 @@ class EmpDataServiceController extends BaseController protected $notificationModel; protected $messageModel; protected $userMessageModel; + protected $CDMasterModel; + public function __construct() { @@ -70,6 +73,8 @@ class EmpDataServiceController extends BaseController $this->notificationModel = new NotificationModel(); $this->messageModel = new MessageModel(); $this->userMessageModel = new UserMessageModel(); + $this->CDMasterModel = new CDMasterModel(); + } @@ -138,6 +143,11 @@ class EmpDataServiceController extends BaseController $insurer_id = $this->clientPolicyModel->where('id', $export_data['client_policy_id'])->first(); $cash_balance = $this->clientDepositModel->where('client_id', $export_data['client_id'])->where('insurer_id', $insurer_id['insurer_id'])->orderBy('id', 'DESC')->first(); + if($cash_balance == null){ + + $cash_balance = $this->CDMasterModel->where('client_id', $export_data['client_id'])->where('insurer_id', $insurer_id['insurer_id'])->orderBy('id', 'DESC')->first(); + } + // Calculate the total amount from the objects $totals = array_reduce($objects, function ($carry, $item) { @@ -1083,6 +1093,13 @@ class EmpDataServiceController extends BaseController $batch_code = $file['batch_code']; $user_id = $file['created_by']; + $insurer_id = $this->clientPolicyModel->where('id', $client_policy_id)->first(); + + $CD_Account_Number = $this->CDMasterModel + ->where('client_id', $client_id) + ->where('insurer_id', $insurer_id['insurer_id']) + ->first(); + $get_policy_type = $this->clientPolicyModel ->select('policy_type.policy_type, policies.policy_type_id as policy_type_id') @@ -1192,6 +1209,8 @@ class EmpDataServiceController extends BaseController 'employeeIds' => $emp_policy_ids, 'client_id' => $client_id, 'client_policy_id' => $client_policy_id, + 'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null, + 'endorsement_no' => null, 'client_branch_id' => $client_branch_id, 'count' => $emp_count, 'event' => $file['event_type'], @@ -2095,6 +2114,13 @@ class EmpDataServiceController extends BaseController $batch_code = $file['batch_code']; $user_id = $file['created_by']; + $insurer_id = $this->clientPolicyModel->where('id', $client_policy_id)->first(); + + $CD_Account_Number = $this->CDMasterModel + ->where('client_id', $client_id) + ->where('insurer_id', $insurer_id['insurer_id']) + ->first(); + $status_val = 'success'; if ($status == 'in-progress-partially') { @@ -2113,7 +2139,7 @@ class EmpDataServiceController extends BaseController $emp_policy_ids = []; $employeeIds = []; $emp_details = []; - $endorsement_id = []; + $endorsement_id = ''; $endorsement_details = []; $totals = 0; @@ -2121,7 +2147,7 @@ class EmpDataServiceController extends BaseController $emp_name = $value[1]; $emp_code = $value[2]; - $endorsement_id[] = $value[19]; + $endorsement_id = $value[19]; $totals += $value[18]; @@ -2229,6 +2255,8 @@ class EmpDataServiceController extends BaseController 'client_id' => $client_id, 'client_policy_id' => $client_policy_id, 'client_branch_id' => $client_branch_id, + 'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null, + 'endorsement_no' => $endorsement_id ?? null, 'count' => $emp_count, 'event' => $file['event_type'], 'policy_name' => $policy_name['policy_name'], @@ -2633,6 +2661,13 @@ class EmpDataServiceController extends BaseController $batch_code = $file['batch_code']; $user_id = $file['created_by']; + $insurer_id = $this->clientPolicyModel->where('id', $client_policy_id)->first(); + + $CD_Account_Number = $this->CDMasterModel + ->where('client_id', $client_id) + ->where('insurer_id', $insurer_id['insurer_id']) + ->first(); + $status_val = 'success'; if ($status == 'in-progress-partially') { @@ -2653,6 +2688,7 @@ class EmpDataServiceController extends BaseController $emp_endorsement_table_data = []; $employee_policy_table_data = []; $employee_policy_table_primaryKey = []; + $endorsement_id = ''; $totals = 0; @@ -2662,6 +2698,7 @@ class EmpDataServiceController extends BaseController $emp_name = $value[2]; //employee name $emp_code = $value[1]; //employee code $totals = $totals + $value[13]; + $endorsement_id = $value[15]; $fetch_data = [ @@ -2733,6 +2770,8 @@ class EmpDataServiceController extends BaseController 'client_id' => $client_id, 'client_policy_id' => $client_policy_id, 'client_branch_id' => $client_branch_id, + 'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null, + 'endorsement_no' => $endorsement_id ?? null, 'count' => $emp_count, 'event' => $file['event_type'], 'policy_name' => $policy_name['policy_name'], @@ -3176,6 +3215,9 @@ class EmpDataServiceController extends BaseController 'amount' => $amount->total_sum ?? 0, 'sub_type_id' => 4, 'client_id' => $arrayData['client_id'], + 'client_policy_id' => $arrayData['client_policy_id'], + 'endorsement_no' => $arrayData['endorsement_no'] ?? null, + 'cd_ac_no' => $arrayData['cd_ac_no'] ?? null, 'insurer_id' => $insurer_id['insurer_id'], 'description' => $description, 'transaction_type' => 'Debit', @@ -3214,6 +3256,9 @@ class EmpDataServiceController extends BaseController 'amount' => $amount->total_sum, 'sub_type_id' => 4, 'client_id' => $arrayData['client_id'], + 'client_policy_id' => $arrayData['client_policy_id'], + 'endorsement_no' => $arrayData['endorsement_no'] ?? null, + 'cd_ac_no' => $arrayData['cd_ac_no'] ?? null, 'insurer_id' => $insurer_id['insurer_id'], 'description' => $description, 'transaction_type' => 'Debit', @@ -3254,6 +3299,9 @@ class EmpDataServiceController extends BaseController 'amount' => $amount->total_sum, 'sub_type_id' => 3, 'client_id' => $arrayData['client_id'], + 'client_policy_id' => $arrayData['client_policy_id'], + 'endorsement_no' => $arrayData['endorsement_no'] ?? null, + 'cd_ac_no' => $arrayData['cd_ac_no'] ?? null, 'insurer_id' => $insurer_id['insurer_id'], 'description' => $description, 'transaction_type' => 'Credit', diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index 8afffb88..f24f52a3 100644 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -25,6 +25,7 @@ use App\Models\TPABranchModel; use App\Models\TPAModel; use App\Models\StateModel; use App\Models\PolicyTypeModel; +use App\Models\CDMasterModel; class MasterController extends AdminController { @@ -45,6 +46,9 @@ class MasterController extends AdminController protected $tpaModel; protected $stateModel; protected $policyTypeModel; + protected $CDMasterModel; + protected $clientModel; + public function __construct() @@ -68,6 +72,9 @@ class MasterController extends AdminController $this->tpaModel = new TPAModel(); $this->stateModel = new StateModel(); $this->policyTypeModel = new PolicyTypeModel(); + $this->CDMasterModel = new CDMasterModel(); + $this->clientModel = new ClientModel(); + } public function insurerList() @@ -1111,4 +1118,103 @@ class MasterController extends AdminController } } + + + public function CDMasterList() + { + + $data['CD_Master_Data'] = $this->CDMasterModel + ->select('cd_master.*, clients.client_name, insurers.name as insurer_name, user_profiles.first_name as user_name') + ->join('clients', 'clients.id = cd_master.client_id') + ->join('insurers', 'insurers.id = cd_master.insurer_id') + ->join('user_profiles', 'user_profiles.id = cd_master.created_by') + ->where('cd_master.is_active', 1) + ->findAll(); + $data['insurers'] = $this->insurerModel->findAll(); + $data['clients'] = $this->clientModel->findAll(); + $this->loadLayout('cd_master_list', $data); + } + + + public function createCDMasterData() + { + + $data = $this->request->getPost(); + $date = (string) $this->request->getPost('opening_date'); + $data['opening_date'] = date('Y-m-d', strtotime($date)); + + + if ($data) { + + $insert = $this->CDMasterModel->insert($data); + + if ($insert) { + + session()->setFlashdata('success', "Cash Deposite Master Added Successfully"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } else { + + session()->setFlashdata('error', "Cash Deposite Master Added Failed"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } + } else { + + session()->setFlashdata('error', "Cash Deposite Master Added Failed. Data Not Found"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } + } + + + public function editCDMasterData($id = null) + { + + $id = $this->request->getPost('PrimaryKey'); + $date = (string) $this->request->getPost('opening_date'); + $data = $this->request->getPost(); + $data['opening_date'] = date('Y-m-d', strtotime($date)); + + if ($data) { + + $insert = $this->CDMasterModel->where('id', $id)->set($data)->update(); + + if ($insert) { + + session()->setFlashdata('success', "Cash Deposite Master Updated Successfully"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } else { + + session()->setFlashdata('error', "Cash Deposite Master Update Failed"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } + } else { + + session()->setFlashdata('error', "Cash Deposite Master Update Failed. Data Not Found"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } + } + + public function getCDMasterDataByID($id = null) + { + + $cd_data = $this->CDMasterModel->where('id', $id)->first(); + $cd_data['opening_date'] = date('d-m-Y', strtotime($cd_data['opening_date'])); + + if ($cd_data) { + return $this->respond(['status' => true, 'code' => 200, 'data' => $cd_data], 200); + } else { + return $this->respond(['status' => false, 'code' => 404], 200); + } + } + + public function checkUniqueCDAccountNumber($AccountNumber) + { + $uniqueAC = $this->CDMasterModel->where('cd_ac_no', $AccountNumber)->findAll(); + + if($uniqueAC != null){ + return $this->respond(['status' => true, 'message' => 'The CD Account Number is Already Exist', 'code' => 200], 200); + }else{ + return $this->respond(['status' => false, 'code' => 404], 200); + } + } + } \ No newline at end of file diff --git a/app/Helpers/DepositHelper.php b/app/Helpers/DepositHelper.php index a25aff9e..7d3c713d 100644 --- a/app/Helpers/DepositHelper.php +++ b/app/Helpers/DepositHelper.php @@ -4,6 +4,7 @@ namespace App\Helpers; use App\Models\ClientDepositModel; +use App\Models\CDMasterModel; class DepositHelper { @@ -49,6 +50,9 @@ class DepositHelper 'amount' => $data['amount'], 'sub_type' => $data['sub_type_id'], 'client_id' => $data['client_id'], + 'client_policy_id' => $data['client_policy_id'], + 'cd_ac_no' => $data['cd_ac_no'], + 'endorsement_no' => $data['endorsement_no'], 'insurer_id' => $data['insurer_id'], 'description' => $data['description'], 'transaction_type' => $data['transaction_type'], @@ -90,7 +94,18 @@ class DepositHelper $getLastBalanceQuery = "SELECT balance FROM cash_deposit WHERE client_id = ? AND insurer_id = ? ORDER BY created_at DESC LIMIT 1"; $getLastBalanceParams = [$clientId, $insurerId]; - $lastBalance = $model->query($getLastBalanceQuery, $getLastBalanceParams)->getRow()->balance ?? 0; + $lastBalance = $model->query($getLastBalanceQuery, $getLastBalanceParams)->getRow()->balance; + + if(!$lastBalance){ + + $cd_model = new ClientDepositModel(); + + $getLastBalanceQuery = "SELECT opening_bal FROM cd_master WHERE client_id = ? AND insurer_id = ? ORDER BY created_at DESC LIMIT 1"; + $getLastBalanceParams = [$clientId, $insurerId]; + + $lastBalance = $cd_model->query($getLastBalanceQuery, $getLastBalanceParams)->getRow()->opening_bal ?? 0; + + } return $lastBalance; } diff --git a/app/Models/CDMasterModel.php b/app/Models/CDMasterModel.php new file mode 100644 index 00000000..491d1007 --- /dev/null +++ b/app/Models/CDMasterModel.php @@ -0,0 +1,64 @@ +select('cash_deposit.*') ->select('insurers.name as insurer_name, insurers.short_name as insurer_short') ->select('clients.client_name as clientname, clients.short_name as clientshort') + ->select('policies.name as policy_name') ->select('user_profiles.first_name as username') ->join('user_profiles','user_profiles.id=cash_deposit.created_by') ->join('insurers', 'insurers.id = cash_deposit.insurer_id') ->join('clients', 'clients.id = cash_deposit.client_id') + ->join('client_policy', 'client_policy.id = cash_deposit.client_policy_id') + ->join('policies', 'policies.id = client_policy.policy_id') ->where('cash_deposit.client_id', $clientId) ->where('cash_deposit.insurer_id', $insurerId) // Add this line to filter by insurer_id diff --git a/app/Views/cd_master_list.php b/app/Views/cd_master_list.php new file mode 100644 index 00000000..fde9f69a --- /dev/null +++ b/app/Views/cd_master_list.php @@ -0,0 +1,284 @@ + + +
    +
    +
    +
    +
    +
    +

    CD Master List

    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Client NameInsurer NameOpening DateCD Account NoDeposite AmountDate/UserAction
    by + + +
    +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/app/Views/client_policy.php b/app/Views/client_policy.php index 34a1cd9e..4bb0b618 100644 --- a/app/Views/client_policy.php +++ b/app/Views/client_policy.php @@ -121,13 +121,22 @@
    @@ -521,10 +530,13 @@ $(document).ready(function() { /********* To get the POLICY base on Insurer *******/ $('#insurer').change(function() { + var id = $(this).val(); + var client_id = $('#client_id_policy').val() var parts = id.split('-'); var secondPart = parts[1]; var url = "" + secondPart; + var url_for_cd = "" + client_id + '/' + secondPart; var selectedOption = $('#base_policy').find(':selected'); var base_policy_data_id = selectedOption.data('id'); @@ -597,6 +609,26 @@ console.error(xhr.responseText); console.error(status, error); }); + + + $.get(url_for_cd, function(response){ + + console.log(response) + console.log(response.data) + + if(response.status == false && response.insurer_id != 'undefined'){ + toastr.warning('The CD Account Number not found.', 'Warning'); + return; + } + + appendCDACNO(response.data) + + }).fail(function(xhr, status, error) { + console.error(xhr.responseText); + console.error(status, error); + }); + + }); }); @@ -730,6 +762,7 @@ $('#policy_status').val(checkDateStatus(res.data.policy_end_date)); $('#policy_status_field').show(); + if (res.data.inception_type == 2) { $('#inception_type').prop('checked', true); } else { @@ -841,6 +874,12 @@ }, 3000); + setTimeout(function(){ + appendCDACNO(res.cd_data, res.data.cd_ac_no) + }, 3000) + + + }, error: function(xhr, status, error) { console.error(xhr.responseText); @@ -1528,4 +1567,32 @@ }); }) + + + function appendCDACNO(data, select = null) { + + console.log('appendCDACNO', data); + console.log('appendCDACNO', select); + + $('#cd_ac_no').empty(); + $('#cd_ac_no').append($('
    diff --git a/app/Views/view_deposit.php b/app/Views/view_deposit.php index 222c7929..01eacfb5 100644 --- a/app/Views/view_deposit.php +++ b/app/Views/view_deposit.php @@ -98,26 +98,30 @@ - Date - User - Description + CD Account No + Policy Name + Endorsement No Sub Type Credit Debit Balance + Date/User + Description - created_at)); ?> - username; ?> - description; ?> + cd_ac_no; ?> + policy_name; ?> + endorsement_no; ?> sub_type]) ? $subTypeOptions[$row->sub_type] : ''; ?> transaction_type == 'Credit') ? $row->amount : ''; ?> transaction_type == 'Debit') ? $row->amount : ''; ?> balance; ?> + created_at)); ?> by username; ?> + description; ?> @@ -151,7 +155,7 @@
    - +
    From b38ccd669812c946dbb5659ce8121b8477bd26e3 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 13 Jun 2024 09:49:30 +0530 Subject: [PATCH 8/8] FIX_CD_ACCOUNT_NUMBER_IN _POLICY_BINDING : RV --- app/Controllers/ClientController.php | 20 ++++---- app/Controllers/MasterController.php | 2 +- app/Models/ClientPolicyModel.php | 14 +++--- app/Views/cd_master_list.php | 67 +++++++++++++++----------- app/Views/client_policy.php | 3 +- app/Views/view_deposit.php | 72 +++++++++++++++++----------- 6 files changed, 101 insertions(+), 77 deletions(-) diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 5ee0296c..2dbe4d60 100644 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -206,16 +206,16 @@ class ClientController extends AdminController public function view_Deposit($insurerId) { // Load your model to fetch data based on $clientId and $insurerId - $subTypeOptions = [ - 1 => 'Deposit', - 2 => 'Adjustment', - 3 => 'Refund', - 4 => 'Debit', - ]; + // $subTypeOptions = [ + // 1 => 'Deposit', + // 2 => 'Adjustment', + // 3 => 'Refund', + // 4 => 'Debit', + // ]; $subTypeOptions = [ 1 => 'Replenishment', 2 => 'Adjustment', - 3 => 'RefundFromDeletion', + 3 => 'Refund From Deletion', 4 => 'Debit', ]; @@ -248,7 +248,7 @@ class ClientController extends AdminController $CD_Account_Number = $this->CDMasterModel ->where('client_id', $client_id) - ->where('insurer_id', $insurer_id['insurer_id']) + ->where('insurer_id', $insurer_id) ->first(); // Prepare the array with data @@ -262,12 +262,14 @@ class ClientController extends AdminController 'insurer_id' => $this->request->getPost('insurer_id'), 'description' => $this->request->getPost('description'), 'transaction_type' => $this->request->getPost('transaction_type') ?: 'Credit', - 'updated_by' => 1, // You need to set the correct value for updated_by + 'updated_by' => 1, ]; + // Call the saveDeposit function from DepositHelper $response = DepositHelper::saveDeposit($data, $loggedInUserID); + // Return a boolean value based on success return $this->response->setJSON(['success' => $response['success']]); } diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index f24f52a3..04f1e336 100644 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -1124,7 +1124,7 @@ class MasterController extends AdminController { $data['CD_Master_Data'] = $this->CDMasterModel - ->select('cd_master.*, clients.client_name, insurers.name as insurer_name, user_profiles.first_name as user_name') + ->select('cd_master.*, clients.client_name, clients.short_name, insurers.name as insurer_name, user_profiles.first_name as user_name') ->join('clients', 'clients.id = cd_master.client_id') ->join('insurers', 'insurers.id = cd_master.insurer_id') ->join('user_profiles', 'user_profiles.id = cd_master.created_by') diff --git a/app/Models/ClientPolicyModel.php b/app/Models/ClientPolicyModel.php index ab0f8b74..a339b142 100644 --- a/app/Models/ClientPolicyModel.php +++ b/app/Models/ClientPolicyModel.php @@ -185,19 +185,19 @@ class ClientPolicyModel extends Model ->select('clients.client_name as clientname, clients.short_name as clientshort') ->select('policies.name as policy_name') ->select('user_profiles.first_name as username') - ->join('user_profiles','user_profiles.id=cash_deposit.created_by') - ->join('insurers', 'insurers.id = cash_deposit.insurer_id') - ->join('clients', 'clients.id = cash_deposit.client_id') - ->join('client_policy', 'client_policy.id = cash_deposit.client_policy_id') - ->join('policies', 'policies.id = client_policy.policy_id') - + ->join('user_profiles', 'user_profiles.id = cash_deposit.created_by', 'left') + ->join('insurers', 'insurers.id = cash_deposit.insurer_id', 'left') + ->join('clients', 'clients.id = cash_deposit.client_id', 'left') + ->join('client_policy', 'client_policy.id = cash_deposit.client_policy_id', 'left') + ->join('policies', 'policies.id = client_policy.policy_id', 'left') ->where('cash_deposit.client_id', $clientId) - ->where('cash_deposit.insurer_id', $insurerId) // Add this line to filter by insurer_id + ->where('cash_deposit.insurer_id', $insurerId) ->orderBy('cash_deposit.id', 'DESC') ->get() ->getResult(); } + public function getDepositSummary($clientId, $insurerId) { // Fetch the sum of credit and debit transactions and calculate the balance diff --git a/app/Views/cd_master_list.php b/app/Views/cd_master_list.php index fde9f69a..7a001b39 100644 --- a/app/Views/cd_master_list.php +++ b/app/Views/cd_master_list.php @@ -49,7 +49,7 @@ table.dataTable thead th { - + ( ) @@ -81,11 +81,11 @@ table.dataTable thead th {