diff --git a/app/Controllers/PolicyTransactionController.php b/app/Controllers/PolicyTransactionController.php index 7c9c46e7..6edf652e 100644 --- a/app/Controllers/PolicyTransactionController.php +++ b/app/Controllers/PolicyTransactionController.php @@ -75,7 +75,7 @@ class PolicyTransactionController extends BaseController $this->employeeModel = new EmployeeModel(); $this->userTeamsModel = new UserTeamsModel(); $this->userModel = new UserModel(); - $this->employeePolicyModel = new EmployeePolicyModel(); + $this->employeePolicyModel = new EmployeePolicyModel(); } // Policy Transaction Inception @@ -133,6 +133,7 @@ class PolicyTransactionController extends BaseController clients.client_name, client_branch.branch_name AS client_branch_name, insurers.name AS insurer_name, + insurers.short_name AS insurer_short_name, policy_type.policy_type, pt_co_share_details.agreed_amt AS amount, pt_co_share_details.bp_amt AS bp, @@ -141,7 +142,7 @@ class PolicyTransactionController extends BaseController ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id', 'left') ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') - ->join('insurers', 'policy_transaction.insurer_id = insurers.id', 'left') + ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'client_policy.policy_type_id = policy_type.id', 'left') ->where('policy_transaction.is_active', 1) @@ -307,7 +308,6 @@ class PolicyTransactionController extends BaseController return $this->respondError("Failed to update policy transaction"); } - private function insertOrUpdateCoShareDetails($data, $pt_id) { // Prepare data for insertion and updating @@ -657,12 +657,14 @@ class PolicyTransactionController extends BaseController clients.short_name as client_short_name, clients.client_code, client_branch.branch_name as client_branch_name, - insurers.name as insurer_name, + insurers.name AS insurer_name, + insurers.short_name AS insurer_short_name, policy_type.policy_type ') + ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('clients', 'policy_transaction.client_id = clients.id', 'left') ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') - ->join('insurers', 'policy_transaction.insurer_id = insurers.id','left') + ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id','left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'client_policy.policy_type_id = policy_type.id', 'left') ->where('policy_transaction.is_active', 1) @@ -682,7 +684,6 @@ class PolicyTransactionController extends BaseController $this->loadLayout('policy_transaction_endorsement_list', $data); } - public function createEndorsementPolicy() { $id = $this->request->getPost('id'); @@ -698,7 +699,7 @@ class PolicyTransactionController extends BaseController private function preparePolicyTransactionData() { $data = $this->request->getPost(); - // print_r($data); + // print_r($data); die; $data_received_date = (string)$this->request->getPost('data_received_date'); $closure_date = (string)$this->request->getPost('closure_date'); @@ -716,11 +717,57 @@ class PolicyTransactionController extends BaseController $issue_type = $this->policyTransactionModel ->where('action_type', 'inception') ->where('client_id', $this->request->getPost('client_id')) - ->where('client_branch_id', $this->request->getPost('client_branch_id')) + ->where('client_policy_id', $this->request->getPost('client_policy_id')) ->first(); + $data['tsi'] = generate_tsi_code($issue_type['issue_type'] ?? 1); - // print_r($data); die; + $client_branch_id = $data['client_branch_id']; + if($data['client_branch_id'] == ""){ + $client_branch_id = $issue_type['client_branch_id']; + } + + if(!$data['id']){ + $data += [ + 'issuer' => $issue_type['issuer'] ?? null, + 'client_type' => $data['client_type'] ?? $issue_type['client_type'] ?? null, + 'policy_type_id' => $issue_type['policy_type_id'] ?? null, + 'policy_type_id' => $issue_type['policy_type_id'] ?? null, + 'issue_type' => $issue_type['issue_type'] ?? null, + 'source_client_policy_id' => $issue_type['source_client_policy_id'] ?? null, + 'cd_ac_no' => $issue_type['issue_type'] ?? null, + 'policy_issue_date' => $issue_type['policy_issue_date'] ?? null, + 'policy_start_date' => $issue_type['policy_start_date'] ?? null, + 'policy_end_date' => $issue_type['policy_end_date'] ?? null, + 'revenue_type' => $issue_type['revenue_type'] ?? null, + 'co_share' => $issue_type['co_share'] ?? 0, + 'bro_payable_by' => $issue_type['bro_payable_by'] ?? 0, + 'installment' => $issue_type['installment'] ?? null, + 'installment_data' => $issue_type['installment_data'] ?? null, + 'location' => $issue_type['location'] ?? null, + 'links' => $issue_type['links'] ??null, + 'stage' => $issue_type['stage'] ?? null, + 'etat' => $issue_type['etat'] ?? null, + 'etat_band' => $issue_type['etat_band'] ?? null, + 'edate' => $issue_type['edate'] ?? null, + 'renewal_date' => $issue_type['renewal_date'] ?? null, + 'rollover_date' => $issue_type['rollover_date'] ?? null, + 'policy_holder_name' => $issue_type['policy_holder_name'] ?? null, + 'same_as_proposer' => $issue_type['same_as_proposer'] ?? 1, + 'ref' => $issue_type['ref'] ?? null, + 'spl' => $issue_type['spl'] ?? null, + 'fund_received' => $issue_type['fund_received'] ?? null, + 'listed_insurers' => $issue_type['listed_insurers'] ?? null, + 'ppteam' => $issue_type['ppteam'] ?? null, + 'sales_generated_by' => $issue_type['sales_generated_by'] ?? null, + 'serviced_by' => $issue_type['serviced_by'] ?? null + ]; + + $data['client_branch_id'] = $client_branch_id; + } + // print_r($issue_type); + // print_r($data); + // die; return $data; } @@ -730,11 +777,11 @@ class PolicyTransactionController extends BaseController $insert = $this->policyTransactionModel->insert($data); if ($insert) { + $this->insertTransactionStatus($insert, $data['status'], 1); $this->handleCompletedStatus($data, $insert); $this->insertOrUpdateCoShareDetails($data, $insert); - return $this->respond(['status' => true, 'message' => 'Endorsement transaction created successfully'], 200); } @@ -785,7 +832,6 @@ class PolicyTransactionController extends BaseController } } - public function getEndorsementDataForEdit($id) { $data = $this->policyTransactionModel @@ -894,6 +940,7 @@ class PolicyTransactionController extends BaseController ->join('policy_transaction', 'policy_transaction.id = pt_co_share_details.pt_id') ->where('policy_transaction.client_id', $client_id) ->where('policy_transaction.client_policy_id', $client_policy_id) + ->where('policy_transaction.action_type', 'inception') ->findAll(); if ($totalCount) { diff --git a/app/Views/policy_transaction_endorsement_form.php b/app/Views/policy_transaction_endorsement_form.php index 3b7b4ae0..8478f296 100644 --- a/app/Views/policy_transaction_endorsement_form.php +++ b/app/Views/policy_transaction_endorsement_form.php @@ -284,13 +284,15 @@ Premium Details + - + Insurer + - + Is Leader? @@ -630,6 +632,7 @@ $("#endorsement_form_id").submit(function(event) { if (res.status == true) { toastr.success(res.message, 'Success'); $('#policy_tranction_primarykey').val(res.pt_id); + window.location.reload(true); } else { toastr.error(res.message, 'Error'); } @@ -832,23 +835,23 @@ function addInsurerColumn() { switch(index) { case 0: // Insurer selection newCell = ` - - `; + + `; break; case 1: // Is Leader? newCell = ` - - + + `; break; case 2: // Co-Share % @@ -860,7 +863,7 @@ function addInsurerColumn() { case 4: // TP / Ter Premium newCell = ``; break; - case 5: // co Premium + case 5: // Co Premium newCell = ``; break; case 6: // CGST @@ -873,13 +876,13 @@ function addInsurerColumn() { newCell = ``; break; case 9: // GST Amount - newCell = ``; + newCell = ``; break; case 10: // Stamp Duty newCell = ``; break; case 11: // Total - newCell = ``; + newCell = ``; break; case 12: // Agreed BP % newCell = ``; @@ -888,69 +891,68 @@ function addInsurerColumn() { newCell = ``; break; case 14: // Agreed Amount - newCell = ``; + newCell = ``; break; case 15: // Standard BP % - newCell = ``; + newCell = ``; break; + case 16: // Standard TP % - newCell = ``; - newCell += ``; + newCell = ``; + newCell += ``; break; case 17: // id newCell = ``; break; - } + // Append new cell to the current row $(this).append(newCell); - $('#follow_insurer_id_' + insurerCount).select2() + // Initialize select2 for newly added insurer select dropdown + $('#follow_insurer_id_' + insurerCount).select2(); - var selectedOption = $('#policy_type_id').find('option:selected'); + // Get selected policy type data + const selectedOption = $('#policy_type_id').find('option:selected'); + const bap = selectedOption.data('bap'); - var ebp = selectedOption.data('ebp'); - var etp = selectedOption.data('etp'); - var etep = selectedOption.data('etep'); - var iep = selectedOption.data('iep'); - var itp = selectedOption.data('itp'); - var itep = selectedOption.data('itep'); - - var bap = selectedOption.data('bap'); - - - if(bap == 'Fire' || bap == 'Marine Cargo' || bap == 'Marine Hull'){ - $('#tp_premium_td').text('Ter Premium') - $('#agree_tp_td').text('Agreed Ter %') - $('#std_head').text('Standard Ter %') - $('.std_ter_td').show() + // Update column headers and visibility based on policy type + if (bap === 'Fire' || bap === 'Marine Cargo' || bap === 'Marine Hull') { + $('#tp_premium_td').text('Ter Premium'); + $('#agree_tp_td').text('Agreed Ter %'); + $('#std_head').text('Standard Ter %'); + $('.std_ter_td').show(); $('.std_tp_td').hide(); - }else{ - $('#tp_premium_td').text('TP Premium') - $('#agree_tp_td').text('Agreed TP %') - $('#std_head').text('Standard TP %') - $('.std_ter_td').hide() - $('.std_tp_td').show() + } else { + $('#tp_premium_td').text('TP Premium'); + $('#agree_tp_td').text('Agreed TP %'); + $('#std_head').text('Standard TP %'); + $('.std_ter_td').hide(); + $('.std_tp_td').show(); } - if(bap == 'Motor'){ + // Hide TP premium row for Motor policy type + if (bap === 'Motor') { $('#tp_premium_tr').hide(); - }else{ + } else { $('#tp_premium_tr').show(); } - $('[name="standard_bp[]"]').val(ebp); - $('[name="standard_tp[]"]').val(etp); - $('[name="standard_tep[]"]').val(etep); + // Set standard values + $('#standard_bp_' + insurerCount).val(selectedOption.data('ebp')); + // $('[name="standard_bp[]"]').val(selectedOption.data('ebp')); + $('[name="standard_tp[]"]').val(selectedOption.data('etp')); + $('[name="standard_tep[]"]').val(selectedOption.data('etep')); - if(insurerCount > 1){ + // Set 'follow_insurer' to required if more than 1 column exists + if (insurerCount > 1) { $('.follow_insurer').prop('required', true); - }else{ + } else { $('.follow_insurer').prop('required', false); } - }); + // Add click event for delete button $('.delete-insurer').off('click').on('click', function() { const index = $(this).closest('th').index(); @@ -994,16 +996,18 @@ function removeAllColumnsExceptFirst(tableId) { function populateTable(dataArray, status = false) { dataArray.forEach((data, index) => { // Add a new insurer column for each entry in the data array - addInsurerColumn(); // This will add a new column dynamically + addInsurerColumn(); // Assuming this function adds a new column dynamically // Populate the fields with the provided data $('#insurerTable tbody tr').each(function(rowIndex, row) { - const cell = $(row).find('td').eq(insurerCount); // Get the newly added column by `insurerCount` + const cell = $(row).find('td').eq(insurerCount); // Ensure insurerCount is correctly set or incremented - let insurer = data.insurer_branch_id + '-' + data.insurer_id + // Split insurer id and branch id properly + let insurer = data.insurer_branch_id + '-' + data.insurer_id; + switch (rowIndex) { case 0: // Insurer selection - cell.find('select').val(insurer).change(); + cell.find('select').val(insurer).prop('disabled', true).select2(); break; case 1: // Is Leader? cell.find('input[type="checkbox"]').prop('checked', data.co_share_type === '1'); @@ -1058,11 +1062,12 @@ function populateTable(dataArray, status = false) { } break; case 17: // id - cell.find('input').val(data.id); + cell.find('input').val(status ? data.id : ''); break; } }); }); } + \ No newline at end of file diff --git a/app/Views/policy_transaction_endorsement_list.php b/app/Views/policy_transaction_endorsement_list.php index 96e08b7d..aea58180 100644 --- a/app/Views/policy_transaction_endorsement_list.php +++ b/app/Views/policy_transaction_endorsement_list.php @@ -68,6 +68,7 @@ table.dataTable thead th { Issuer Client Branch + Insurer Policy Endorsement Type Endorsement No @@ -83,11 +84,12 @@ table.dataTable thead th { - + + - + diff --git a/app/Views/policy_transaction_inception_form.php b/app/Views/policy_transaction_inception_form.php index 85d882af..f6fcdaa8 100644 --- a/app/Views/policy_transaction_inception_form.php +++ b/app/Views/policy_transaction_inception_form.php @@ -1123,54 +1123,57 @@ $(document).ready(function() { //edit function function getPolicyTransactionDataForEdit(input) { + $('.loader').fadeIn(); $('.loader-mask').fadeIn(); $('#inception_form_id')[0].reset(); var id = $(input).attr('data-id'); + console.log('Selected policy transaction ID:', id); $.ajax({ url: '' + id, type: "GET", dataType: 'json', success: function(res) { - console.log('getPolicyTransactionDataForEdit', res); if (res.status == true) { - hide_list_show_add() + hide_list_show_add(); - var page_title = 'Edit Policy' + (res.data.client_short_name || res.data.policy_type || res - .data.policy_no ? ' - ' + [res.data.client_short_name, res.data.policy_type, res - .data.policy_no - ].filter(Boolean).join('-') : ''); + var page_title = 'Edit Policy' + (res.data.client_short_name || res.data.policy_type || res.data.policy_no ? + ' - ' + [res.data.client_short_name, res.data.policy_type, res.data.policy_no] + .filter(Boolean).join('-') : ''); - $('#page_title').text(page_title) + $('#page_title').text(page_title); + // Setting values to correct fields $('#policy_tranction_primarykey').val(res.data.id); $('#client_policy_id').val(res.data.client_policy_id); $('#client_id_for_edit').val(res.data.client_id); $('#issuer').val(res.data.issuer); - $('#issue_type').val(res.data.issue_type).change(); + $('#issue_type').val(res.data.issue_type); - $('#client_id').val(res.data.client_id).change(); - $('#client_type').val(res.data.client_type); - $('#insurer_id').val(res.data.insurer_branch_id + '-' + res.data.insurer_id).change(); - $('#vehicle_no').val(res.data.vehicle_id).change(); + setTimeout(function() { + $('#client_id').val(res.data.client_id).change(); + $('#client_type').val(res.data.client_type); + $('#insurer_id').val(res.data.insurer_branch_id + '-' + res.data.insurer_id); + $('#vehicle_no').val(res.data.vehicle_id).select2(); + }, 1000); var tpaValue = ''; - if (res.data.master_tpa_branch_id && res.data.master_tpa_id) { tpaValue = res.data.master_tpa_branch_id + '-' + res.data.master_tpa_id; - }else if(res.data.tpa_branch_id && res.data.tpa_id){ + } else if (res.data.tpa_branch_id && res.data.tpa_id) { tpaValue = res.data.tpa_branch_id + '-' + res.data.tpa_id; } $('#tpa').val(tpaValue).change(); - if(res.data.master_policy_type_id){ + + if (res.data.master_policy_type_id) { $('#policy_type_id').val(res.data.master_policy_type_id).change(); - }else{ + } else { $('#policy_type_id').val(res.data.policy_type_id).change(); } @@ -1184,7 +1187,7 @@ function getPolicyTransactionDataForEdit(input) { appendFileTableBody(res.data.pt_files); - if(res.data.pt_co_share_details){ + if (res.data.pt_co_share_details) { populateTable(res.data.pt_co_share_details); } @@ -1193,29 +1196,24 @@ function getPolicyTransactionDataForEdit(input) { } if (res.data.pt_co_share_details && res.data.pt_co_share_details.length > 0) { - - $('#tab_content').empty() - count = 0 - + $('#tab_content').empty(); + count = 0; $.each(res.data.pt_co_share_details, function(index, item) { - // appendNewTab(item); + // appendNewTab(item); // Uncomment when implementing tab addition logic }); - } - setTimeout(function() { - $('#cd_ac_no').val(res.data.cd_ac_no); - $('#client_branch_id').val(res.data.client_branch_id).change(); + $('#client_branch_id').val(res.data.client_branch_id).select2(); $('#source_client_policy_id').val(res.data.source_client_policy_id).change(); $('#base_policy').val(res.data.base_policy).change(); $('.loader').fadeOut(); $('.loader-mask').delay(350).fadeOut('slow'); + }, 2000); - }, 1000) - + // Set additional fields $('#policy_status').val(res.data.status); $('#ref').val(res.data.ref); $('#spl').val(res.data.spl); @@ -1242,8 +1240,7 @@ function getPolicyTransactionDataForEdit(input) { $('#sales_generated_by').val(res.data.sales_generated_by ?? '').change(); $('#serviced_by').val(res.data.serviced_by ?? '').change(); - - // Issuer Type - JBIS or Nhance + // Additional form handling logic if (res.data.issue_type == 2) { $('#renewal').show(); $('#source_client_policy_id').attr('required', true); @@ -1252,106 +1249,95 @@ function getPolicyTransactionDataForEdit(input) { $('#source_client_policy_id').attr('required', false); } - //For Base Policy + // Handle base policy visibility if (res.data.is_addon == 2 || res.data.is_addon == 3) { $('#base_policy_id').show(); } else { $('#base_policy_id').hide(); } - //for Co Share Percentage + // Handle co-share percentage if (res.data.co_share == 1) { $('#cop_yes').prop('checked', true); - $('#add_more_row').removeClass('d-none'); - $('.payby').removeClass('d-none'); - $('#is_leader_tr').show() - $('#co_share_per_tr').show() - $('#co_premium_tr').show() + $('#add_more_row').removeClass('d-none'); + $('.payby').removeClass('d-none'); + $('#is_leader_tr').show(); + $('#co_share_per_tr').show(); + $('#co_premium_tr').show(); } else { $('#cop_yes').prop('checked', false); $('#add_more_row').addClass('d-none'); $('.payby').addClass('d-none'); - $('#is_leader_tr').hide() - $('#co_share_per_tr').hide() - $('#co_premium_tr').hide() + $('#is_leader_tr').hide(); + $('#co_share_per_tr').hide(); + $('#co_premium_tr').hide(); } - //for Same Insured Name + // Handle "Same Insured Name" if (res.data.same_as_proposer == 1) { $('#same_as_proposer').prop('checked', true); $('#dynamic-form-container-for-insured').empty(); $('#family_details').hide(); } else { $('#same_as_proposer').prop('checked', false); - if(res.data.client_type == 2 && res.data.policy_type_id != 8){ + if (res.data.client_type == 2 && res.data.policy_type_id != 8) { $('#family_details').show(); $.each(res.data.emp_data, function(index, emp) { - appendInsured(emp) + appendInsured(emp); }); - - }else{ + } else { $('#dynamic-form-container-for-insured').empty(); $('#family_details').hide(); } } - // for Brokerage Pay By + // Handle brokerage pay by if (res.data.bro_payable_by == 1) { $('#bro_payable_by').prop('checked', true); } else { $('#bro_payable_by').prop('checked', false); } - //for Policy Tranction Status - if(res.data.status == "completed"){ - - $('#sales_row').show() - $('#policy_no').prop('required', true) - $('#policy_issue_date').prop('required', true) - $('#policy_start_date').prop('required', true) - $('#policy_end_date').prop('required', true) - $('#tpa').prop('required', true) - $('#emp_count').prop('required', true) - $('#dependent_count').prop('required', true) - $('.follow_insurer').prop('required', true) - - }else{ - $('#sales_row').hide() - $('#policy_no').prop('required', false) - $('#policy_issue_date').prop('required', false) - $('#policy_start_date').prop('required', false) - $('#policy_end_date').prop('required', false) - $('#tpa').prop('required', false) - $('#emp_count').prop('required', false) - $('#dependent_count').prop('required', false) - $('.follow_insurer').prop('required', false) - + // Policy transaction status handling + if (res.data.status == "completed") { + $('#sales_row').show(); + $('#policy_no').prop('required', true); + $('#policy_issue_date').prop('required', true); + $('#policy_start_date').prop('required', true); + $('#policy_end_date').prop('required', true); + $('#tpa').prop('required', true); + $('#emp_count').prop('required', true); + $('#dependent_count').prop('required', true); + $('.follow_insurer').prop('required', true); + } else { + $('#sales_row').hide(); + $('#policy_no').prop('required', false); + $('#policy_issue_date').prop('required', false); + $('#policy_start_date').prop('required', false); + $('#policy_end_date').prop('required', false); + $('#tpa').prop('required', false); + $('#emp_count').prop('required', false); + $('#dependent_count').prop('required', false); + $('.follow_insurer').prop('required', false); } - //for Client Type Changes - if(res.data.client_type == 2){ - if(policy_type_id == 8){ + // Client type changes + if (res.data.client_type == 2) { + if (res.data.policy_type_id == 8) { $('#policyholdernamediv').hide(); - }else{ + } else { $('#policyholdernamediv').show(); } - - - $('.branchdiv').hide(); + $('.branchdiv').hide(); $('#client_branch_id').prop('required', false); - } else { $('#policyholdernamediv').hide(); - $('.branchdiv').show(); + $('.branchdiv').show(); $('#client_branch_id').prop('required', true); - - } - } else { console.log('No data found'); } - }, error: function(xhr, status, error) { $('.loader').fadeOut(); @@ -1715,7 +1701,7 @@ $("#vehicle_form").submit(function(event) { getClientAndBranchAndPolicy(); $('#client_type').val(res.owner_type); setTimeout(function(){ - appendVehicles(res.vehicles, res.vehicle_id) + appendVehicles(res.vehicles, res.vehicle_id); $('#client_id').val(res.owner_id).change(); if(res.owner_type == 1){ diff --git a/app/Views/policy_transaction_inception_list.php b/app/Views/policy_transaction_inception_list.php index a88a9325..84dbad89 100644 --- a/app/Views/policy_transaction_inception_list.php +++ b/app/Views/policy_transaction_inception_list.php @@ -130,6 +130,7 @@ table.dataTable tbody td {
Issuing Type
Client Type
Client / Branch
+
Insurer
Policy
Policy No
Policy Issue Date
@@ -150,7 +151,8 @@ table.dataTable tbody td { - + +