From 5d0ee48050077b8a3901251907565a63c641d470 Mon Sep 17 00:00:00 2001 From: velz Date: Fri, 22 Mar 2024 16:01:17 +0530 Subject: [PATCH 1/5] 'FIRST_COMMIT_FOR_TEST-BRANCH' --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 00cdf704..8eaa7d72 100644 --- a/README.md +++ b/README.md @@ -57,3 +57,5 @@ Additionally, make sure that the following extensions are enabled in your PHP: - json (enabled by default - don't turn it off) - [mysqlnd](http://php.net/manual/en/mysqlnd.install.php) if you plan to use MySQL - [libcurl](http://php.net/manual/en/curl.requirements.php) if you plan to use the HTTP\CURLRequest library + +- first test release From df9c1a98fa56c2529d27b2de000baf1a892ceb6e Mon Sep 17 00:00:00 2001 From: velz Date: Fri, 29 Mar 2024 10:55:15 +0530 Subject: [PATCH 2/5] FILES_CPANEL_YAML_ADDED --- .cpanel.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .cpanel.yml diff --git a/.cpanel.yml b/.cpanel.yml new file mode 100644 index 00000000..944de66e --- /dev/null +++ b/.cpanel.yml @@ -0,0 +1,5 @@ +--- +deployment: + tasks: + - export DEPLOYPATH=/home/example/public_html/ + - /bin/cp . $DEPLOYPATH \ No newline at end of file From a6ff0b0b24c3f79332256ca64c495e6d6e9ad69b Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Thu, 19 Dec 2024 14:45:07 +0530 Subject: [PATCH 3/5] FEAT_EXCEL MERGE HELPER CREATED --- app/Helpers/ExcelMergeHelper.php | 93 +++++++++++++++++++++++++++++ composer.json | 1 + tests/unit/ExcelMergeHelperTest.php | 25 ++++++++ 3 files changed, 119 insertions(+) create mode 100644 app/Helpers/ExcelMergeHelper.php create mode 100755 tests/unit/ExcelMergeHelperTest.php diff --git a/app/Helpers/ExcelMergeHelper.php b/app/Helpers/ExcelMergeHelper.php new file mode 100644 index 00000000..06f68c66 --- /dev/null +++ b/app/Helpers/ExcelMergeHelper.php @@ -0,0 +1,93 @@ + $sheetsToMerge) { + // Load the current file + $currentSpreadsheet = IOFactory::load($filePath); + + // Debugging: Log the number of sheets in the current file + error_log("File: $filePath has " . $currentSpreadsheet->getSheetCount() . " sheets."); + + // If this is the first file, initialize the base spreadsheet + if ($spreadsheet === null) { + $spreadsheet = $currentSpreadsheet; + + // If specific sheets are provided for the first file, remove the others + if (!is_null($sheetsToMerge) && !empty($sheetsToMerge)) { + $sheetCount = $spreadsheet->getSheetCount(); + for ($i = $sheetCount - 1; $i >= 0; $i--) { + if (!in_array($i, $sheetsToMerge)) { + $spreadsheet->removeSheetByIndex($i); + } + } + } + } else { + // If we are not working with the first file, we need to merge specified sheets + if (is_null($sheetsToMerge) || empty($sheetsToMerge)) { + // If no specific sheets, merge all sheets + $sheetsToMerge = range(0, $currentSpreadsheet->getSheetCount() - 1); + } + + // Merge the specified sheets from the current file + foreach ($sheetsToMerge as $sheetIndex) { + // Check if sheet index is within bounds + if ($sheetIndex < 0 || $sheetIndex >= $currentSpreadsheet->getSheetCount()) { + throw new Exception("Invalid sheet index $sheetIndex in file $filePath"); + } + + // Retrieve the sheet to copy + $sheetToCopy = $currentSpreadsheet->getSheet($sheetIndex); + + // Handle sheet name collision by renaming the sheet with a counter + $baseName = $sheetToCopy->getTitle(); + $sheetName = $baseName; + $counter = 1; + while ($spreadsheet->sheetNameExists($sheetName)) { + $sheetName = $baseName . '_merged_' . $counter; + $counter++; + } + $sheetToCopy->setTitle($sheetName); + + // Clone and add the sheet to the base spreadsheet + $spreadsheet->addSheet(clone $sheetToCopy); + } + } + } + + // Save the merged file + $writer = new Xlsx($spreadsheet); + $writer->save($outputPath); + + return true; // Return true if merge was successful + } catch (Exception $e) { + // Log the error (optional) and return false on failure + error_log("Excel Merge Error: " . $e->getMessage()); + return false; + } + } +} diff --git a/composer.json b/composer.json index da1c83ff..73453d9c 100755 --- a/composer.json +++ b/composer.json @@ -33,6 +33,7 @@ "friendsofphp/php-cs-fixer": "^3.47.1", "kint-php/kint": "^5.0.4", "mikey179/vfsstream": "^1.6", + "mockery/mockery": "^1.6", "nexusphp/cs-config": "^3.6", "phpunit/phpunit": "^9.1", "predis/predis": "^1.1 || ^2.0" diff --git a/tests/unit/ExcelMergeHelperTest.php b/tests/unit/ExcelMergeHelperTest.php new file mode 100755 index 00000000..e648f0b6 --- /dev/null +++ b/tests/unit/ExcelMergeHelperTest.php @@ -0,0 +1,25 @@ + [1,3,2], + '/home/venba/Downloads/enrollment.xlsx' => [] + ]; + $outputPath = '/home/venba/Documents/merged_file.xlsx'; // Output path for the merged file + + // Call the mergeExcelFiles function + $result = ExcelMergeHelper::mergeExcelFiles($filePaths, $outputPath); + var_dump($result); + // Check if the result is true (indicating success) + $this->assertTrue($result, 'Expected true, but got false'); + } + +} \ No newline at end of file From 0ad5e8d5cc457790f9f5b5ba1470e7c03283d29e Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Sat, 21 Dec 2024 18:15:55 +0530 Subject: [PATCH 4/5] CHANGE_BDS_REPORT_PREMIUM_CALC_VARIENCE_RPORT_AND_OTHERS : RV --- app/Config/Routes.php | 3 + app/Controllers/ClientController.php | 47 +- app/Controllers/EmpDataServiceController.php | 10 +- app/Controllers/MasterController.php | 54 +- .../PolicyTransactionController.php | 252 +++- app/Models/EmployeePolicyModel.php | 18 +- app/Models/InsurerModel.php | 2 +- app/Models/PTCOShareDetailsModel.php | 3 +- app/Models/PolicyTransactionModel.php | 328 ++++- app/Views/insurer_export_templete.php | 8 +- app/Views/insurer_statement_list.php | 8 +- app/Views/policy_gmc_terms.php | 3 + .../policy_transaction_inception_form.php | 1220 +++++++++++------ app/Views/report_bds.php | 132 +- app/Views/report_bds_filter.php | 306 ++++- app/Views/report_bds_old.php | 204 +++ app/Views/variance_report_list.php | 339 ++++- 17 files changed, 2315 insertions(+), 622 deletions(-) create mode 100644 app/Views/report_bds_old.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 6ad4f058..baa54559 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -327,6 +327,9 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get('view_log/(:any)', 'EmployeeController::viewLog/$1'); $routes->get('download_log/(:any)', 'EmployeeController::downloadLog/$1'); $routes->post('checkDuplicateTableFieldValue', 'ClientController::checkDuplicateTableFieldValue'); + $routes->get('getCoShareStatementDetails/(:any)', 'PolicyTransactionController::getCoShareStatementDetails/$1'); + $routes->get('getClientPolicyDataBasedOnClientAndInsuer', 'PolicyTransactionController::getClientPolicyDataBasedOnClientAndInsuer'); + $routes->get('checkCDAmountForBasePremium', 'PolicyTransactionController::checkCDAmountForBasePremium'); }); $routes->group("policy_tranction", ["filter" => "authMVC"], function ($routes) { diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index fcdd14e4..eba1c8de 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -3298,11 +3298,10 @@ class ClientController extends AdminController public function getClientAndBranchAndPolicy() { + // ---------for client----------------------------------------------------------------------------- + $clients = $this->clientModel->where('is_active', 1)->findAll(); - $vehicles = $this->vehicleModel - ->select('vehicle.*, clients.client_type') - ->join('clients', 'clients.id=vehicle.owner') - ->where('vehicle.is_active', 1)->findAll(); + $clientIds = array_column($clients, 'id'); // Fetch branches in a single query @@ -3311,6 +3310,29 @@ class ClientController extends AdminController ->where('is_active', 1) ->findAll(); + // -----------for vehicle --------------------------------------------------------------------------- + + $vehicles = $this->vehicleModel + ->select('vehicle.*, clients.client_type') + ->join('clients', 'clients.id=vehicle.owner') + ->where('vehicle.is_active', 1)->findAll(); + + // -----------for Insurer --------------------------------------------------------------------------- + + //fetch all insurer data + $insurers = $this->insurerModel->where('is_active', 1)->findAll(); + + //map the insurer primary key to column + $insurersIds = array_column($insurers, 'id'); + + // Fetch insurer branches in a single query + $insurerBranches = $this->insurerBranchModel + ->whereIn('insurer_id', $insurersIds) + ->where('is_active', 1) + ->findAll(); + + // -----------for Policy --------------------------------------------------------------------------- + // Fetch policies in a single query $policies = $this->clientPolicyModel ->select(" @@ -3329,16 +3351,26 @@ class ClientController extends AdminController ->where('client_policy.is_active', 1) ->findAll(); + // -------------------------------------------------------------------------------------- + $branchList = []; $policyList = []; $policyListByClient = []; $unitList = []; + $insurerBranchList = []; + //for client branch mapping to the client foreach ($branches as $branch) { $branchList[$branch['client_id']][] = $branch; $unitList[$branch['id']][] = json_decode($branch['units']); } + //for insurer branch mapping to the insurer + foreach ($insurerBranches as $branch) { + $insurerBranchList[$branch['insurer_id']][] = $branch; + } + + //for client policy mapping to the branch and client foreach ($policies as $policy) { $policyList[$policy['client_branch_id']][] = $policy; $policyListByClient[$policy['client_id']][] = $policy; @@ -3349,6 +3381,7 @@ class ClientController extends AdminController } } + //get policy count foreach ($clients as &$client) { $client['client_policy_count'] = $policyCount[$client['id']] ?? 0; } @@ -3361,6 +3394,8 @@ class ClientController extends AdminController 'branch_data' => $branchList, 'policy_data' => $policyList, 'policyListByClient' => $policyListByClient, + 'insurer_data' => $insurers, + 'insurer_branch_data' => $insurerBranchList, 'unit_data' => $unitList, ], 200); } else { @@ -3832,6 +3867,10 @@ class ClientController extends AdminController // $PolicyTransactionController = new PolicyTransactionController(); // $res = $PolicyTransactionController->validateInsurerStatement(['file_id' => '36']); + + // $empServiceController = new EmployeeServiceController(); + // $res = $empServiceController->excelFileDataValidation(['file_id' => '319']); + // dd($res); } // ------------------------------------------------------------------------------------------------------- diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index 1e4366ca..78baac0b 100755 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -3315,7 +3315,7 @@ class EmpDataServiceController extends BaseController $employee_policy_table_primaryKey[] = $result['emp_policy_primarykey']; //for cash deposite $employee_policy_table_data[] = array('id' => $result['emp_policy_primarykey'], 'date_of_exit' => $result['date_of_exit'], 'reason_for_exit' => $result['reason_for_exit'], 'status' => $result['status']); - $employees_table_data[] = array('id' => $result['employees_id'], 'emp_status' => $result['status']); + // $employees_table_data[] = array('id' => $result['employees_id'], 'emp_status' => $result['status']); $emp_endorsement_table_data[] = array('id' => $result['emp_endorsement_primarykey'], 'group_key' => $result['group_key'], 'endorsement_id' => $value[15], 'status' => 'complete'); } @@ -3329,9 +3329,9 @@ class EmpDataServiceController extends BaseController // Check if $employees_table_data is null or empty - if (empty($employees_table_data)) { - return ['status' => 'error', 'message' => 'Employees table data is empty or null.']; - } + // if (empty($employees_table_data)) { + // return ['status' => 'error', 'message' => 'Employees table data is empty or null.']; + // } // Check if $employee_policy_table_data is null or empty if (empty($employee_policy_table_data)) { @@ -3343,7 +3343,7 @@ class EmpDataServiceController extends BaseController return ['status' => 'error', 'message' => 'Employee endorsement table data is empty or null.']; } - $this->employeeModel->updateBatch($employees_table_data, 'id'); + // $this->employeeModel->updateBatch($employees_table_data, 'id'); $this->employeePolicyModel->updateBatch($employee_policy_table_data, 'id'); $this->employeePolicyModel->bulkUpdateForEndorsement($emp_endorsement_table_data); $this->storeEndorsementNumber($file_id, $endorsement_id); diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index a875e437..6a81ebf5 100755 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -1502,25 +1502,34 @@ class MasterController extends AdminController } - public function duplicateTemplate($template_id, $event_name) + // Duplicate the insuer same policy type other events template + public function duplicateTemplate($template_id, $event_name, $insurer_id) { + // Fetch the template data based on the provided ID and ensure it is active $insurer_template_data = $this->insurerTemplateModel->where('id', $template_id) - ->where('is_active', 1) - ->first(); + ->where('is_active', 1) + ->first(); + + // Check if the event name matches the existing template's event name + $insurer_template_data_check_duplicate = $this->insurerTemplateModel + ->where('insurer_id', $insurer_id) + ->where('event_name', $event_name) + ->where('policy_type_id', $insurer_template_data['policy_type_id']) + ->where('is_active', 1) + ->findAll(); + + //if the template already exist than return the message + if (!empty($insurer_template_data_check_duplicate) && count($insurer_template_data_check_duplicate) > 0) { + return $this->respond([ + 'status' => false, + 'message' => 'Template with the same event already exists.', + 'data' => $insurer_template_data_check_duplicate + ]); + } - if ($insurer_template_data) { - - // Check if the event name matches the existing template's event name - if ($insurer_template_data['event_name'] == $event_name) { - return $this->respond([ - 'status' => false, - 'message' => 'Template with the same event already exists.', - 'data' => $insurer_template_data - ]); - } - + // Prepare data for insertion as a duplicate $data_to_insert = [ "insurer_id" => $insurer_template_data['insurer_id'], @@ -1531,28 +1540,28 @@ class MasterController extends AdminController "created_by" => get_session_user(), "is_active" => 1, ]; - + // Insert the duplicate template data $insert_result = $this->insurerTemplateModel->insert($data_to_insert); - + if ($insert_result) { return $this->respond([ - 'status' => true, - 'message' => 'Template duplicated successfully.', + 'status' => true, + 'message' => 'Template duplicated successfully.', 'data' => $insurer_template_data ]); } else { return $this->respond([ - 'status' => false, - 'message' => 'Failed to duplicate template.', + 'status' => false, + 'message' => 'Failed to duplicate template.', 'data' => $insurer_template_data ]); } } else { // No matching active template found return $this->respond([ - 'status' => false, - 'message' => 'No active template data found.', + 'status' => false, + 'message' => 'No active template data found.', 'data' => null ]); } @@ -1674,6 +1683,7 @@ class MasterController extends AdminController 'template_bg' => ROOTPATH . 'public/uploads/template_bg/', 'attachments' => WRITEPATH . 'uploads/attachments/', 'sample_import_excel' => ROOTPATH . 'public/sample_import_excel', + 'lead_files' => WRITEPATH . 'uploads/lead_files/', ]; foreach ($folders as $folderName => $folderPath) { diff --git a/app/Controllers/PolicyTransactionController.php b/app/Controllers/PolicyTransactionController.php index 5e94b340..9873b33a 100644 --- a/app/Controllers/PolicyTransactionController.php +++ b/app/Controllers/PolicyTransactionController.php @@ -179,6 +179,7 @@ class PolicyTransactionController extends BaseController // Fetch additional data $data['client'] = $this->clientModel->where('is_active', 1)->findAll(); + $data['client_branch'] = $this->clientBranchModel->where('is_active', 1)->findAll(); $data['policy_type'] = $this->policyTypeModel->where('is_active', 1)->findAll(); $data['insurer'] = $this->insurerModel->where('is_active', 1)->findAll(); $data['entity'] = $this->kycEntityTypeModel->where('is_active', 1)->findAll(); @@ -473,6 +474,7 @@ class PolicyTransactionController extends BaseController 'created_by' => get_session_userid() ?? null, 'updated_by' => get_session_userid() ?? null, 'id' => $data['co_share_id'][$index] ?? null, // Assuming this is the ID to identify existing records + 'follower_policy_no' => $data['follower_policy_no'][$index] ?? null, // Assuming this is the ID to identify existing records ]; } @@ -786,10 +788,24 @@ class PolicyTransactionController extends BaseController ->findAll(); $data['pt_co_share_details'] = $this->PTCOShareDetailsModel - ->where('pt_id', $id) - ->where('is_active', 1) - ->orderBy('id', 'asc') - ->findAll(); + ->select(" + pt_co_share_details.*, + + ( + SELECT + COUNT(*) + FROM + co_share_stmt_details + WHERE + co_share_stmt_details.co_share_id = pt_co_share_details.id + AND co_share_stmt_details.is_active = 1 + ) AS record_count + ") + ->where('pt_id', $id) + ->where('is_active', 1) + ->orderBy('id', 'asc') + ->findAll(); + $data['emp_data'] = $this->employeeModel ->select('employees.*, employee_polices.id as emp_policy_id') ->join('employee_polices', 'employees.id = employee_polices.employee_id', 'left') @@ -1329,8 +1345,8 @@ class PolicyTransactionController extends BaseController //--------------------------------------------------------------------------------------------------- - //get BDS Reports data - public function reportBDS() + //get BDS Reports data old function + public function reportBDSOld() { $data['page_name'] = 'BDS Report'; @@ -1390,6 +1406,81 @@ class PolicyTransactionController extends BaseController $this->loadLayout('report_bds_filter', $data); } + //get BDS Reports data New Function + public function reportBDS() + { + + $data['page_name'] = 'BDS Report'; + + $data['issuer'] = [1 => 'JIBS', 2 => 'Nhance']; + $data['client_type'] = [1 => 'Group', 2 => 'Individual']; + $data['issuing_type'] = [1 => 'Fresh', 2 => 'Renewal', 3 => 'Roll Over']; + $data['policy_status'] = [ + 'pending' => 'Pending', + 'exported_to_insurer' => 'Exported to Insurer', + 'imported_from_insurer' => 'Imported from Insurer', + 'exported_to_tpa' => 'Exported to TPA', + 'imported_from_tpa' => 'Imported from TPA', + 'completed' => 'Completed' + ]; + $data['invoice_status_array'] = [ + 'yet_to_generate' => 'Yet to Generate', + 'generated' => 'Generated', + 'send' => 'Send', + 'recived' => 'Recived', + ]; + $data['date_type'] = [ + 'policy_issue_date' => 'Policy Issue Date', + 'policy_start_date' => 'Policy Start Date', + 'policy_end_date' => 'Policy End Date', + 'data_received_date' => 'Data Received Date', + 'closure_date' => 'Closure Date', + 'statement_month' => 'Statement Month', + ]; + + $data['insurer'] = $this->insurerModel->where('is_active', 1)->findAll(); + $data['policy_types'] = $this->policyTypeModel->where('is_active', 1)->findAll(); + $data['clients'] = $this->clientModel->where('is_active', 1)->findAll(); + + //filter datas + $start_date = $this->request->getGet('start_date'); + $end_date = $this->request->getGet('end_date'); + $client_id = $this->request->getGet('client_id'); + $insurer_id = $this->request->getGet('insurer_id'); + $policy_type_id = $this->request->getGet('policy_type_id'); + $date_type = $this->request->getGet('date_type'); + $issuer = $this->request->getGet('issuer'); + $client_branch_id = $this->request->getGet('client_branch_id'); + $insurer_branch_id = $this->request->getGet('insurer_branch_id'); + $client_policy_id = $this->request->getGet('client_policy_id'); + + if($date_type == 'statement_month'){ + $start_date = (string)date('Y-m-01', strtotime($start_date)); + $end_date = (string)date('Y-m-31', strtotime($end_date)); + } + + // dd($start_date, $end_date, $date_type); + + $start_date = (!isset($start_date) || $start_date === '' || $start_date === null) ? 0 : $start_date; + $end_date = (!isset($end_date) || $end_date === '' || $end_date === null) ? 0 : $end_date; + + $client_id = (!isset($client_id) || $client_id === '' || $client_id === null) ? 0 : $client_id; + $insurer_id = (!isset($insurer_id) || $insurer_id === '' || $insurer_id === null) ? 0 : $insurer_id; + $policy_type_id = (!isset($policy_type_id) || $policy_type_id === '' || $policy_type_id === null) ? 0 : $policy_type_id; + $date_type = (!isset($date_type) || $date_type === '' || $date_type === null) ? 0 : $date_type; + $issuer = (!isset($issuer) || $issuer === '' || $issuer === null) ? 0 : $issuer; + $client_branch_id = (!isset($client_branch_id) || $client_branch_id === '' || $client_branch_id === null) ? 0 : $client_branch_id; + $insurer_branch_id = (!isset($insurer_branch_id) || $insurer_branch_id === '' || $insurer_branch_id === null) ? 0 : $insurer_branch_id; + $client_policy_id = (!isset($client_policy_id) || $client_policy_id === '' || $client_policy_id === null) ? 0 : $client_policy_id; + + + //Actual data for the list + $data['report_list'] = $this->policyTransactionModel->getBDSReportList($start_date, $end_date, $client_id, $insurer_id, $policy_type_id, $date_type, $issuer, $client_branch_id, $insurer_branch_id, $client_policy_id); + // dd($data['report_list']); + + $this->loadLayout('report_bds_filter', $data); + } + public function reportVarience() { $data['page_name'] = 'Variance Report'; @@ -1414,6 +1505,10 @@ class PolicyTransactionController extends BaseController $policy_type_id = $this->request->getGet('policy_type_id'); $date_type = $this->request->getGet('date_type'); $issuer = $this->request->getGet('issuer'); + $client_branch_id = $this->request->getGet('client_branch_id'); + $insurer_branch_id = $this->request->getGet('insurer_branch_id'); + $client_policy_id = $this->request->getGet('client_policy_id'); + $start_date = (!isset($start_date) || $start_date === '' || $start_date === null) ? 0 : $start_date; $end_date = (!isset($end_date) || $end_date === '' || $end_date === null) ? 0 : $end_date; @@ -1424,7 +1519,12 @@ class PolicyTransactionController extends BaseController $date_type = (!isset($date_type) || $date_type === '' || $date_type === null) ? 0 : $date_type; $issuer = (!isset($issuer) || $issuer === '' || $issuer === null) ? 0 : $issuer; - $data['varience_list'] = $this->policyTransactionModel->getVarienceReportLIst($start_date, $end_date, $client_id, $insurer_id, $policy_type_id, $date_type, $issuer); + $client_branch_id = (!isset($client_branch_id) || $client_branch_id === '' || $client_branch_id === null) ? 0 : $client_branch_id; + $insurer_branch_id = (!isset($insurer_branch_id) || $insurer_branch_id === '' || $insurer_branch_id === null) ? 0 : $insurer_branch_id; + $client_policy_id = (!isset($client_policy_id) || $client_policy_id === '' || $client_policy_id === null) ? 0 : $client_policy_id; + + + $data['varience_list'] = $this->policyTransactionModel->getVarienceReportLIst($start_date, $end_date, $client_id, $insurer_id, $policy_type_id, $date_type, $issuer, $client_branch_id, $insurer_branch_id, $client_policy_id); $this->loadLayout('variance_report_list', $data); } @@ -2120,5 +2220,143 @@ class PolicyTransactionController extends BaseController } + + //--------------------------------------------------------------------------------------------------- + + public function getCoShareStatementDetails($pt_id) + { + if (!$pt_id) { + return $this->respond([ + 'status' => false, + 'code' => 400, + 'message' => 'No data found' + ], 200); + } + + // Fetch data from the database + $data = db_connect()->table("co_share_stmt_details") + ->select(" + co_share_stmt_details.*, + insurer_statements.month, + insurer_statements.invoice_status, + insurer_statements.invoice_date, + insurer_statements.invoice_no, + insurer_statements.invoice_amount, + insurer_statements.stmt_sno, + (co_share_stmt_details.actual_bp_amt + co_share_stmt_details.actual_tp_amt + co_share_stmt_details.actual_tep_amt) AS sum_of_actual_amt + ") + ->join('insurer_statements', 'co_share_stmt_details.statement_id = insurer_statements.id') + ->where([ + 'co_share_stmt_details.is_active' => 1, + 'insurer_statements.is_active' => 1, + 'co_share_stmt_details.co_share_id' => $pt_id + ]) + ->get() + ->getResultArray(); + + // Check if data exists before formatting + if ($data) { + + foreach ($data as &$row) { + // Check if invoice_date is not null before formatting + $row['invoice_date'] = $row['invoice_date'] ? change_date_format($row['invoice_date'], 'Y-m-d', 'd/m/Y') : null; + + // Check if month is not null before formatting + $row['month'] = $row['month'] ? change_date_format($row['month'], 'Y-m-d', 'M-Y') : null; + } + + return $this->respond([ + 'status' => true, + 'code' => 200, + 'data' => $data + ], 200); + } else { + return $this->respond([ + 'status' => false, + 'code' => 400, + 'message' => 'No data found' + ], 200); + } + } + + public function getClientPolicyDataBasedOnClientAndInsuer() + { + + $client_id = $this->request->getGet('client_id') ?? 0; + $client_branch_id = $this->request->getGet('client_branch_id') ?? 0; + $insurer_id = $this->request->getGet('insurer_id') ?? 0; + $insurer_branch_id = $this->request->getGet('insurer_branch_id') ?? 0; + $policy_type_id = $this->request->getGet('policy_type_id') ?? 0; + + $builder = db_connect()->table("client_policy") + ->select(" + client_policy.*, + policy_type.policy_type, + ") + ->join('policy_type', 'client_policy.policy_type_id = policy_type.id') + ->where([ + 'client_policy.is_active' => 1, + ]); + + if (!empty($client_id)) { + $builder->where('client_policy.client_id', $client_id); + } + if (!empty($client_branch_id)) { + $builder->where('client_policy.client_branch_id', $client_branch_id); + } + if (!empty($insurer_id)) { + $builder->where('client_policy.insurer_id', $insurer_id); + } + if (!empty($insurer_branch_id)) { + $builder->where('client_policy.insurer_branch_id', $insurer_branch_id); + } + if (!empty($policy_type_id)) { + $builder->where('client_policy.policy_type_id', $policy_type_id); + } + + $result = $builder->get()->getResultArray(); + + if ($result) { + return $this->respond(['status' => true,'code' => 200,'data' => $result, 'getData' => $this->request->getGet()], 200); + } else { + return $this->respond(['status' => false,'code' => 400,'message' => 'No data found'], 200); + } + } + + public function checkCDAmountForBasePremium() + { + $base_premium = $this->request->getGet('base_premium') ?? 0; + $cd_ac_no = $this->request->getGet('cd_ac_no') ?? 0; + + // Validate inputs + if (empty($cd_ac_no)) { + return $this->respond(['status' => false, 'code' => 400, 'message' => 'CD Account Number is required'], 200); + } + + // Build query + $db = db_connect(); + $builder = $db->table("cash_deposit") + ->where('cd_ac_no', $cd_ac_no) + ->where('is_active', 1) + ->orderBy('id', 'desc') + ->limit(1); + + $result = $builder->get()->getRowArray(); + + if ($result) { + // Check if base premium exceeds balance + $base_premium_greater_than_balance = $base_premium > $result['balance']; + + return $this->respond([ + 'status' => true, + 'code' => 200, + 'data' => $result, + 'base_premium_greater_than_balance' => $base_premium_greater_than_balance, + ], 200); + } + + return $this->respond(['status' => false, 'code' => 400, 'message' => 'No data found for this CD'], 200); + } + } \ No newline at end of file diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php index 9d281507..f0f7eaa2 100755 --- a/app/Models/EmployeePolicyModel.php +++ b/app/Models/EmployeePolicyModel.php @@ -837,7 +837,6 @@ class EmployeePolicyModel extends Model e.remarks, e.endorsement_id, ep.client_policy_id, - policies.name as policy_name, insurers.short_name as insurer_short_name, client_policy.policy_no, policy_type.policy_type @@ -847,9 +846,9 @@ class EmployeePolicyModel extends Model $query1->join('employees', 'employees.id = ep.employee_id'); $query1->join('client_policy', 'client_policy.id = ep.client_policy_id'); $query1->join('client_branch', 'client_branch.id = employees.client_branch_id'); - $query1->join('policies', 'policies.id = client_policy.policy_id'); - $query1->join('policy_type', 'policy_type.id = policies.policy_type_id'); - $query1->join('insurers', 'insurers.id = policies.insurer_id'); + // $query1->join('policies', 'policies.id = client_policy.policy_id'); + $query1->join('policy_type', 'policy_type.id = client_policy.policy_type_id'); + $query1->join('insurers', 'insurers.id = client_policy.insurer_id'); $query1->whereIn('e.actions', ['c']); $query1->where('ep.client_policy_id', $policy_id); $query1->where('employees.client_id', $client_id); @@ -874,7 +873,6 @@ class EmployeePolicyModel extends Model e.endorsement_id, e.remarks, ep.client_policy_id, - policies.name as policy_name, insurers.short_name as insurer_short_name, client_policy.policy_no, policy_type.policy_type @@ -883,10 +881,10 @@ class EmployeePolicyModel extends Model $query2->join('employees', 'employees.id = ep.employee_id'); $query2->join('client_policy', 'client_policy.id = ep.client_policy_id'); $query2->join('client_branch', 'client_branch.id = employees.client_branch_id'); - $query2->join('policies', 'policies.id = client_policy.policy_id'); - $query2->join('policy_type', 'policy_type.id = policies.policy_type_id'); - $query2->join('insurers', 'insurers.id = policies.insurer_id'); - $query2->whereIn('e.actions', ['si', 'd']); + // $query2->join('policies', 'policies.id = client_policy.policy_id'); + $query2->join('policy_type', 'policy_type.id = client_policy.policy_type_id'); + $query2->join('insurers', 'insurers.id = client_policy.insurer_id'); + $query2->whereIn('e.actions', ['si', 'd', 'a']); $query2->where('ep.client_policy_id', $policy_id); $query2->where('employees.client_id', $client_id); $query2->where('employees.client_branch_id', $branch_id); @@ -900,6 +898,8 @@ class EmployeePolicyModel extends Model $results2 = $query2->get()->getResultArray(); $results = array_merge($results1, $results2); + + // dd($this->db->getLastQuery()); return $results; diff --git a/app/Models/InsurerModel.php b/app/Models/InsurerModel.php index a19cd02a..61572263 100755 --- a/app/Models/InsurerModel.php +++ b/app/Models/InsurerModel.php @@ -60,7 +60,7 @@ class InsurerModel extends Model { $insurer_data = $this->db->table('insurer_excel_export_template') ->select('insurer_excel_export_template.*, insurers.name as insurer_name, insurers.is_multi_event') - ->select('CASE WHEN insurers.is_multi_event = 1 THEN "All" ELSE insurer_excel_export_template.event_name END as event_name', false) + // ->select('CASE WHEN insurers.is_multi_event = 1 THEN "All" ELSE insurer_excel_export_template.event_name END as event_name', false) ->select('insurer_excel_export_template.type_name, insurer_excel_export_template.jsoncolumns, policy_type.policy_type') ->join('insurers', 'insurers.id = insurer_excel_export_template.insurer_id') ->join('policy_type', 'policy_type.id = insurer_excel_export_template.policy_type_id') diff --git a/app/Models/PTCOShareDetailsModel.php b/app/Models/PTCOShareDetailsModel.php index 385645ed..6376e6e8 100644 --- a/app/Models/PTCOShareDetailsModel.php +++ b/app/Models/PTCOShareDetailsModel.php @@ -63,7 +63,8 @@ class PTCOShareDetailsModel extends Model 'amount', 'stamp_duty', 'cop_amt', - 'statement_id' + 'statement_id', + 'follower_policy_no', ]; public function getNonReconcileredPolicyTransactions(string $month,string $year,string $insurer_id,string $insurer_branch_id) diff --git a/app/Models/PolicyTransactionModel.php b/app/Models/PolicyTransactionModel.php index ba54a5ce..89700633 100644 --- a/app/Models/PolicyTransactionModel.php +++ b/app/Models/PolicyTransactionModel.php @@ -113,8 +113,9 @@ class PolicyTransactionModel extends Model return $data; } + // BDS Report OLD Functin for QUERY // public function getBDSReportList($client_id, $policy_id, $branch_id, $issuer) - public function getBDSReportList($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0) + public function getBDSReportListOld($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0) { $builder = $this->db->table('policy_transaction') ->select(" @@ -311,6 +312,256 @@ class PolicyTransactionModel extends Model return $builder->get()->getResultArray(); } + + // BDS Report NEW Functin for QUERY + // public function getBDSReportList($client_id, $policy_id, $branch_id, $issuer) + public function getBDSReportList($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $client_branch_id = 0, $insurer_branch_id = 0, $client_policy_id = 0) + { + + $date_condition = ''; + if($date_type == 'statement_month' && $start_date != 0 && $end_date != 0) { + $date_condition = " + AND insurer_statements.month >= '".$start_date ."' + AND insurer_statements.month <= '".$end_date ."' + "; + } + + $builder = $this->db->table('policy_transaction') + ->select(" + policy_transaction.*, + DATE_FORMAT(policy_transaction.policy_issue_date, '%d %b %Y') AS policy_issue_date, + DATE_FORMAT( + IF(policy_transaction.month IS NULL, + policy_transaction.policy_issue_date, + policy_transaction.month), + '%b %Y') AS policy_issue_month, + CASE + WHEN clients.client_type = 1 THEN 'Group' + WHEN clients.client_type = 2 THEN 'Retail' + ELSE '-' + END AS client_type, + CASE + WHEN policy_transaction.revenue_type = 'NA' THEN 'Fresh' + ELSE 'Renewal' + END AS revenue_type, + CASE + WHEN policy_transaction.action_type = 'inception' THEN 'Policy' + ELSE 'Endorsement' + END AS action_type, + clients.client_name AS client_name, + clients.short_name AS client_short_name, + client_branch.branch_name AS client_branch_name, + client_branch.address1 AS client_address, + policy_type.policy_type, + policy_type.bap, + insurers.name AS insurer_name, + insurers.short_name AS insurer_short_name, + insurer_branch.branch_name AS insurer_branch_name, + insurer_branch.branch_code AS insurer_branch_code, + user_profiles.first_name as user_name, + vehicle.vehicle_no, + tpa.name as tpa_name, + pt_co_share_details.remark as remarks, + pt_co_share_details.reward, + pt_co_share_details.bp_amt, + pt_co_share_details.exp_amt, + pt_co_share_details.id as pt_id, + sales_user.first_name as salse_person_name, + service_user.first_name as service_person_name, + + ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) AS premium_wo_gst, + + ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) * 18 / 100), 2) AS gst_amount, + + ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) + ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) * 18 / 100), 2)), 2) AS total_premium, + + ROUND((pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) AS tp_or_ter, + + DATEDIFF(policy_transaction.policy_end_date, CURDATE()) AS days, + + (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per) AS agreed_tp_or_ter_per, + + pt_co_share_details.agreed_bp_per, + + ROUND( + ( + SELECT + ( + SUM(co_share_stmt_details.actual_bp_brokerage_amt) + + SUM(co_share_stmt_details.actual_tp_brokerage_amt) + + SUM(co_share_stmt_details.actual_tep_brokerage_amt) + + SUM(co_share_stmt_details.reward) + + ) AS total_irda_amt + FROM + co_share_stmt_details + JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id + WHERE + co_share_stmt_details.co_share_id = pt_co_share_details.id + AND co_share_stmt_details.is_active = 1 + $date_condition + ), + 2 + ) AS total_irda_amt, + + ROUND( + ( + SELECT + SUM( + COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.reward, 0) + ) AS total_irda_amt + FROM + co_share_stmt_details + JOIN pt_co_share_details AS pt_table ON co_share_stmt_details.co_share_id = pt_table.id + JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id + WHERE + co_share_stmt_details.co_share_id = pt_co_share_details.id + AND co_share_stmt_details.is_active = 1 + AND pt_table.is_active = 1 + AND insurer_statements.is_active = 1 + AND insurer_statements.invoice_no IS NOT NULL + $date_condition + + ), + 2 + ) AS billed_amt, + + ROUND( + ( + ( + SELECT + SUM( + COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.reward, 0) + ) + FROM + co_share_stmt_details + JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id + WHERE + co_share_stmt_details.co_share_id = pt_co_share_details.id + AND co_share_stmt_details.is_active = 1 + $date_condition + ) + - + ( + SELECT + SUM( + COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) + + COALESCE(co_share_stmt_details.reward, 0) + ) + FROM + co_share_stmt_details + JOIN pt_co_share_details AS pt_table ON co_share_stmt_details.co_share_id = pt_table.id + JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id + WHERE + co_share_stmt_details.co_share_id = pt_co_share_details.id + AND co_share_stmt_details.is_active = 1 + AND pt_table.is_active = 1 + AND insurer_statements.is_active = 1 + AND insurer_statements.invoice_no IS NOT NULL + $date_condition + ) + ), + 2 + ) AS unbilled_amt + + ") + ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') + ->join('insurer_statements', 'pt_co_share_details.statement_id = insurer_statements.id', 'left') + ->join('clients', 'clients.id = policy_transaction.client_id') + ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') + ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') + ->join('user_profiles', 'policy_transaction.created_by = user_profiles.id', 'left') + ->join('vehicle', 'policy_transaction.vehicle_id = vehicle.id', 'left') + ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') + ->join('insurers', 'policy_transaction.insurer_id = insurers.id', 'left') + ->join('insurer_branch', 'policy_transaction.insurer_branch_id = insurer_branch.id', 'left') + ->join('tpa', 'policy_transaction.tpa_id = tpa.id', 'left') + ->join('tpa_branch', 'policy_transaction.tpa_branch_id = tpa_branch.id', 'left') + ->join('user_profiles AS sales_user', 'policy_transaction.sales_generated_by = sales_user.id', 'left') + ->join('user_profiles AS service_user', 'policy_transaction.serviced_by = service_user.id', 'left') + ->where('policy_transaction.is_active', 1) + ->where('pt_co_share_details.is_active', 1); + + // Check if the start date and end date are provided + if ($start_date != 0 && $end_date != 0 && $date_type != 0 && $date_type != 'statement_month') { + + $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); + $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); + + $builder->where('policy_transaction.'.$date_type.'>=', $startDate) + ->where('policy_transaction.'.$date_type.'<=', $endDate); + + }else{ + + // $fromDate = date('Y-m-d', strtotime('-30 days')); + // $toDate = date('Y-m-d 23:59:59'); + + // $builder->where('policy_transaction.created_at >=', $fromDate) + // ->where('policy_transaction.created_at <=', $toDate); + } + + if($date_type == 'statement_month' && $start_date != 0 && $end_date != 0){ + + $builder->where('policy_transaction.month >=', $startDate) + ->where('policy_transaction.month <=', $endDate); + } + + if ($client_id != 0) { + $builder->where('policy_transaction.client_id', $client_id); + } + + if ($insurer_id != 0) { + $builder->where('policy_transaction.insurer_id', $insurer_id); + } + + if ($client_branch_id != 0) { + $builder->where('policy_transaction.client_branch_id', $client_branch_id); + } + + if ($insurer_branch_id != 0) { + $builder->where('policy_transaction.insurer_branch_id', $insurer_branch_id); + } + + if ($client_policy_id != 0) { + $builder->where('policy_transaction.client_policy_id', $client_policy_id); + } + + + + if ($policy_type_id != 0) { + $builder->where('client_policy.policy_type_id', $policy_type_id); + } + + if ($issuer != 0) { + $builder->where('policy_transaction.issuer', $issuer); + } + + if($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0){ + + $fromDate = date('Y-m-d', strtotime('-30 days')); + $toDate = date('Y-m-d 23:59:59'); + + $builder->where('policy_transaction.created_at >=', $fromDate) + ->where('policy_transaction.created_at <=', $toDate); + + } + + $builder->orderBy('policy_transaction.id', 'desc'); + + $result = $builder->get()->getResultArray(); + + // dd($this->db->getLastQuery()); + + return $result; + } public function getInceptionTranctionListData($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0) { @@ -466,50 +717,74 @@ class PolicyTransactionModel extends Model return $builder->get()->getResultArray(); } - public function getVarienceReportLIst($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0) + public function getVarienceReportLIst($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $client_branch_id = 0, $insurer_branch_id = 0, $client_policy_id = 0) { $builder = $this->db->table('policy_transaction') ->select(" + policy_transaction.id, clients.client_name, + client_branch.branch_name as client_branch_name, insurers.name AS insurer_name, + insurer_branch.branch_name AS insurer_branch_name, policy_type.policy_type, policy_transaction.policy_no, policy_transaction.endorsement_no, - CASE - WHEN policy_transaction.action_type = 'inception' THEN 'I' - ELSE 'E' - END AS action_type, + pt_co_share_details.exp_amt, pt_co_share_details.variance, - insurer_statements.invoice_amount, - insurer_statements.invoice_status, - - ROUND((pt_co_share_details.actual_bp_brokerage_amt + pt_co_share_details.actual_tp_brokerage_amt + pt_co_share_details.actual_tep_brokerage_amt), 2) AS realization_amount2, + ROUND( ( SELECT - (SUM(inv_payment_details.inv_amt) + SUM(inv_payment_details.tds)) AS realization_amount + ( + SUM(co_share_stmt_details.actual_bp_brokerage_amt) + SUM(co_share_stmt_details.actual_tp_brokerage_amt) + SUM(co_share_stmt_details.actual_tep_brokerage_amt) + ) AS total_irda_amt FROM - inv_payment_details + co_share_stmt_details + JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id WHERE - inv_payment_details.statement_id = insurer_statements.id - AND inv_payment_details.is_active = 1 - - ) AS realization_amount, + co_share_stmt_details.co_share_id = pt_co_share_details.id + AND co_share_stmt_details.is_active = 1 + ), + 2 + ) AS statement_amount, + + ROUND( + pt_co_share_details.exp_amt - + ( + SELECT + ( + SUM(co_share_stmt_details.actual_bp_brokerage_amt) + + SUM(co_share_stmt_details.actual_tp_brokerage_amt) + + SUM(co_share_stmt_details.actual_tep_brokerage_amt) + ) + FROM co_share_stmt_details + JOIN insurer_statements + ON co_share_stmt_details.statement_id = insurer_statements.id + WHERE + co_share_stmt_details.co_share_id = pt_co_share_details.id + AND co_share_stmt_details.is_active = 1 + ), + 2 + ) AS variance_amt + ") ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('insurer_statements', 'pt_co_share_details.statement_id = insurer_statements.id', 'left') - ->join('inv_payment_details', 'insurer_statements.id = inv_payment_details.statement_id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id', 'left') + ->join('client_branch', 'client_branch.id = policy_transaction.client_branch_id', 'left') ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') + ->join('insurer_branch', 'pt_co_share_details.insurer_branch_id = insurer_branch.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') ->where('policy_transaction.is_active', 1) - ->where('pt_co_share_details.actual_bp_brokerage_amt IS NOT NULL AND pt_co_share_details.actual_bp_brokerage_amt != 0') - ->where('pt_co_share_details.variance IS NOT NULL') - ->where('pt_co_share_details.variance !=', 0); + ->where('pt_co_share_details.is_active', 1) + ->having('variance_amt IS NOT NULL'); + // ->where('pt_co_share_details.actual_bp_brokerage_amt IS NOT NULL AND pt_co_share_details.actual_bp_brokerage_amt != 0'); + // ->where('pt_co_share_details.variance IS NOT NULL') + // ->where('pt_co_share_details.variance !=', 0); if ($start_date != 0 && $end_date != 0 && $date_type != 0) { @@ -543,9 +818,18 @@ class PolicyTransactionModel extends Model $builder->where('policy_transaction.issuer', $issuer); } - if ($status != 0) { - $builder->where('policy_transaction.status', $status); + if ($client_branch_id != 0) { + $builder->where('policy_transaction.client_branch_id', $client_branch_id); } + + if ($insurer_branch_id != 0) { + $builder->where('policy_transaction.insurer_branch_id', $insurer_branch_id); + } + + if ($client_policy_id != 0) { + $builder->where('policy_transaction.client_policy_id', $client_policy_id); + } + $builder->orderBy('policy_transaction.id', 'desc'); diff --git a/app/Views/insurer_export_templete.php b/app/Views/insurer_export_templete.php index 6934ab5e..19c96574 100755 --- a/app/Views/insurer_export_templete.php +++ b/app/Views/insurer_export_templete.php @@ -91,7 +91,7 @@ - + @@ -209,6 +209,8 @@ - -
-
-
+ @@ -130,11 +138,23 @@ \ No newline at end of file diff --git a/app/Views/report_bds_old.php b/app/Views/report_bds_old.php new file mode 100644 index 00000000..0caa9383 --- /dev/null +++ b/app/Views/report_bds_old.php @@ -0,0 +1,204 @@ + + +
+
+
+
+
+

BDS Report

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $row){ ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S. NoMonthBusiness TypeClient TypeInsured NamePolicy/
Endorsement
Policy TypeBAP GroupVehicle NumberPolicy NoEndorsement NoInsurer NameInsurer BranchTPAEndorsement
Effective Date
Policy
Effective Date
Policy
Expiry Date
ReferenceRemarksBase PremiumTerrorism/TPPremium
(without GST)
GST @ 18%Total PremiumBase
Revenue %
TP / Terrorism
Revenue %
Total IRDA
Revenue INR
GST on RevenueTotal Amount
Receivable
RewardsInvoice NumberInvoice DateInvoice AmountRealization AmountOutstanding AmountPayment StatusUTRPayment Date
 % % + +
+ +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/app/Views/variance_report_list.php b/app/Views/variance_report_list.php index 850531ad..07387337 100644 --- a/app/Views/variance_report_list.php +++ b/app/Views/variance_report_list.php @@ -27,6 +27,7 @@ table.dataTable tbody td {
+
@@ -43,34 +44,35 @@ table.dataTable tbody td {
- - $value) { - echo ""; - } - } - ?>
- - + + +
+ +
+ + +
+ +
+ +
-
+
+ + +
+
-
- -
-
-
- -
-
+
+ `; -
- - + // Incured claim div + newRow8.innerHTML += ` + + -
+ + + + + + + + + + + + + + + + + + + + +
- +
+ `; + + //renewal div + newRow2.innerHTML += ` + +
+ + +
+ +
+ + +
+ +
+ + +
+ `; + + //inception div + newRow3.innerHTML += ` + +
+ + +
+ +
+ + +
+ +
+ + +
+ `; + + //expiry div + newRow4.innerHTML += ` + +
+ + +
+ +
+ + +
+ +
+ + +
+ + `; + + //file upload div + newRow7.innerHTML += ` +
+ + + +
+ `; + + //button div + newRow5.innerHTML += ` +
x +
`; + + container.appendChild(newRow); + container.appendChild(newRow8); + + const hrElement2 = document.createElement('hr'); + container.appendChild(hrElement2); + + container.appendChild(newRow3); + container.appendChild(newRow2); + container.appendChild(newRow4); + + container.appendChild(newRow7); + + container.appendChild(newRow5); var lead_type = $('#lead_type').val(); @@ -722,9 +923,32 @@ function addHTMLInput(check) { if (lead_type == 2) { // $('.proposed_div').show().find('select, input').attr('required', 'required'); $('.proposed_div').show(); + $('.freashDiv').show() + $('.renewalDiv').hide() + + $('.emp_title').text('No of Employees at Inception') + $('.depnd_title').text(' No of Dependents at Inception') + $('.total_title').text('Total Lives at Inception') + + } else { // $('.proposed_div').hide().find('select, input').removeAttr('required'); $('.proposed_div').hide() + + if(lead_type == 1){ + $('.freashDiv').hide() + $('.renewalDiv').show() + $('.emp_title').text('No of Employees') + $('.depnd_title').text('No of Dependents') + $('.total_title').text('Total Lives') + }else{ + $('.freashDiv').show() + $('.renewalDiv').hide() + $('.emp_title').text('No of Employees at Inception') + $('.depnd_title').text(' No of Dependents at Inception') + $('.total_title').text('Total Lives at Inception') + + } } // Scroll the newly added select into view and focus on it @@ -747,6 +971,24 @@ function addHTMLInput(check) { policy_end_date.setFullYear(policy_end_date.getFullYear() + 1); policy_end_date.setDate(policy_end_date.getDate() - 1); // Set end date to last day of selected year policy_end_datePicker.setDate(policy_end_date); + + console.log('this object', this); + console.log('id of this element:', this.element); + console.log('id of this element:', this.element.id); + + let increment = this.element.id.split('_').pop(); + console.log(increment); // Outputs: 1 + + + console.log('increment', increment); + console.log('policy_start_datePicker selectedDates', selectedDates); + console.log('policy_start_datePicker incurred_claim_', $("#incurred_claim_" + increment).val()); + + // Recalculate policy_run_days if incurred claim date is already selected + if ($("#incurred_claim_date_" + increment).val()) { + console.log('policy_start_datePicker selectedDates', selectedDates); + calculatePolicyRunDays(increment); + } } }); @@ -755,6 +997,34 @@ function addHTMLInput(check) { allowInput: false }); + var incurred_claim_datepicker = flatpickr("#incurred_claim_date_" + increment, { + dateFormat: "d/m/Y", + allowInput: false, + onChange: function(selectedDates) { + + console.log('this object', this); + console.log('id of this element:', this.id); + + let increment = this.element.id.split('_').pop(); + console.log(increment); // Outputs: 1 + + console.log('selectedDates', selectedDates); + console.log('policy_start_date_', $("#policy_start_date_" + increment).val()); + + // Recalculate policy_run_days if policy start date is already selected + if ($("#policy_start_date_" + increment).val()) { + + console.log('selectedDates', selectedDates); + calculatePolicyRunDays(increment); + } + } + }); + + var premium_date_datepicker = flatpickr("#premium_date_" + increment, { + dateFormat: "d/m/Y", + allowInput: false + }); + $('#source_policy_id').on('change', function(){ let client_policy_id = $(this).val(); console.log('client_policy_id', client_policy_id) @@ -790,6 +1060,97 @@ function removeHTMLInput(element) } } +function calculatePolicyRunDays(increment) { + + console.log('calculatePolicyRunDays function called'); + + var policyStartDate = flatpickr.parseDate($("#policy_start_date_" + increment).val(), "d/m/Y"); + var incurredClaimDate = flatpickr.parseDate($("#incurred_claim_" + increment).val(), "d/m/Y"); + + console.log('policyStartDate', policyStartDate) + console.log('incurredClaimDate', incurredClaimDate) + + if (policyStartDate && incurredClaimDate) { + var timeDiff = incurredClaimDate - policyStartDate; // Time difference in milliseconds + console.log('timeDiff', timeDiff); + var daysDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24)); // Convert to days and add 1 + console.log('daysDiff', daysDiff); + $("#policy_run_days_" + increment).val(daysDiff); // Set value in the policy_run_days_ input + } +} + +function incurredClaimSum(input) { + + let increment = input.id.split('_').pop(); // Extract the increment part + console.log('increment', increment); + + // Retrieve and convert the values to numbers, fallback to 0 if empty or invalid + let paid_claims = Number($('#paid_claims_' + increment).val()) || 0; + console.log('paid_claims', paid_claims); + + let outstanding_claims = Number($('#outstanding_claims_' + increment).val()) || 0; + console.log('outstanding_claims', outstanding_claims); + + // Calculate the incurred claim + let incurred_claims = paid_claims + outstanding_claims; + console.log('incurred_claims', incurred_claims); + + // Set the calculated value + $('#incurred_claims_' + increment).val(incurred_claims); + + // ------------------------------------------------------------------------------------------ + + let policy_run_days = Number($('#policy_run_days_' + increment).val()) || 0; + console.log('policy_run_days', policy_run_days); + + // Prevent division by zero in annualised claims calculation + let annualised_claims = policy_run_days > 0 ? incurred_claims / policy_run_days * 365 : 0; + console.log('annualised_claims', annualised_claims); + + $('#annualised_claims_' + increment).val(annualised_claims); + + // ------------------------------------------------------------------------------------------ + + // Prevent division by zero in incurred claim ratio calculation + let incurred_claim_ratio = annualised_claims > 0 ? incurred_claims / annualised_claims : 0; + console.log('incurred_claim_ratio', incurred_claim_ratio); + + $('#incurred_claims_ratio_' + increment).val(incurred_claim_ratio); + + // ------------------------------------------------------------------------------------------ + + let earned_premium = Number($('#earned_premium_' + increment).val()) || 0; + console.log('earned_premium', earned_premium); + + // Prevent division by zero in earned claims ratio calculation + let earned_claims_ratio = earned_premium > 0 ? incurred_claims / earned_premium : 0; + console.log('earned_claims_ratio', earned_claims_ratio); + + $('#earned_claims_ratio_' + increment).val(earned_claims_ratio); +} + + +function earnedPremiumCalc(input) { + + let increment = input.id.split('_').pop(); // Extract the increment part + console.log('increment', increment); + + // Retrieve and convert the values to numbers, fallback to 0 if empty or invalid + let premium_at_inception = Number($('#premium_at_inception_' + increment).val()) || 0; + console.log('premium_at_inception', premium_at_inception); + + let policy_run_days = Number($('#policy_run_days_' + increment).val()) || 0; + console.log('policy_run_days', policy_run_days); + + // Prevent division by zero and calculate earned premium + let earned_premium = policy_run_days > 0 ? premium_at_inception / policy_run_days : 0; + console.log('earned_premium', earned_premium); + + // Set the calculated value with two decimal places + $('#earned_premium_' + increment).val(earned_premium.toFixed(2)); +} + + //--------------------------------------------------------------------------------------------------------- $("#leads_form_id").submit(function(event) { @@ -876,6 +1237,8 @@ $('#lead_type').change(function() { $('#policy_start_date').removeAttr('required'); $('#claims').removeAttr('required'); $('#freshDiv').hide(); + $('.freashDiv').show() + $('.renewalDiv').hide() $('#gst').val(''); $('#pan').val(''); @@ -885,6 +1248,10 @@ $('#lead_type').change(function() { $('#contact_person_mobile').val(''); $('#contact_person_email').val(''); + $('.emp_title').text('No of Employees at Inception') + $('.depnd_title').text(' No of Dependents at Inception') + $('.total_title').text('Total Lives at Inception') + } else { $('#renewalDiv').find('select, input').removeAttr('required'); @@ -905,6 +1272,23 @@ $('#lead_type').change(function() { $('#client_name').val(''); $('#client_short_name').val(''); $('#entity_type_id').val(''); + + if(value == 1){ + $('.freashDiv').hide() + $('.renewalDiv').show() + + $('.emp_title').text('No of Employees') + $('.depnd_title').text('No of Dependents') + $('.total_title').text('Total Lives') + }else{ + $('.freashDiv').show() + $('.renewalDiv').hide() + + $('.emp_title').text('No of Employees at Inception') + $('.depnd_title').text(' No of Dependents at Inception') + $('.total_title').text('Total Lives at Inception') + + } } }) @@ -929,6 +1313,12 @@ function tpaChange(input, unique_id) { //----------------------------------------------------------------------------------------------------------- +function sumOfLives(input){ + +} + +//----------------------------------------------------------------------------------------------------------- + function getURLParamsForReport() { const params = new URLSearchParams(window.location.search); diff --git a/app/Views/leads_list.php b/app/Views/leads_list.php index a67b3b49..99799e37 100644 --- a/app/Views/leads_list.php +++ b/app/Views/leads_list.php @@ -102,11 +102,11 @@ table.dataTable tbody td { RFQ - 0) { ?> +
diff --git a/app/Views/view_rfq.php b/app/Views/view_rfq.php index b173c674..c0a4bef7 100644 --- a/app/Views/view_rfq.php +++ b/app/Views/view_rfq.php @@ -199,7 +199,7 @@
-

+

Save RFQ       Export Excel - + - @@ -261,7 +260,7 @@ - QCR + QCR Client