From 7a968e20997e1cc680f05127ffd16d85d37161f4 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 27 Oct 2025 13:06:51 +0530 Subject: [PATCH] CHANGE_IMPOERT_CD_AMT_BALANCE_CHECK --- app/Controllers/EmpDataServiceController.php | 83 ++++++++++++++++++++ app/Controllers/EmployeeController.php | 8 +- app/Views/batch_list.php | 19 +++-- 3 files changed, 98 insertions(+), 12 deletions(-) diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index 1c9fac18..4b51b5a4 100755 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -1457,6 +1457,47 @@ class EmpDataServiceController extends BaseController //get the employee data for excel file validation $employee_data = $this->employeePolicyModel->getInceptionEmployeeDataForExportExcel($ref_data, 1); + // ----------------- CD BALANCE CHECK --------------------------------------------------------------------------- + + $cash_balance = $this->clientDepositModel + ->where('cd_ac_pk', $client_policy_data['cd_ac_pk']) + ->where('is_active', 1) + ->orderBy('id', 'DESC') + ->first(); + + if ($cash_balance == null) { + $balance = $this->CDMasterModel + ->where('client_id', $file['client_id']) + ->where('insurer_id', $client_policy_data['insurer_id']) + ->where('id', $client_policy_data['cd_ac_pk']) + ->first(); + + $cash_balance['balance'] = $balance['opening_bal']; + } + + // Calculate the total amount from the objects + $totals = 0; + foreach ($employee_data as $item) { + $totals = $totals + $item['total']; + } + + $totals = round($totals, 2); + + //check CD amt insufficient only insurer, not tpa + if($file['insurer_or_tpa'] == 'insurer') + { + if (!empty($cash_balance)) { + if ((int) $cash_balance['balance'] < (int) $totals) { + $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]); + $this->batchFileModel->where('id', $file_id)->set(['status' => 'failed-7', 'error_data' => 'Insufficient deposit balance. Available CD Balance: ' . $cash_balance['balance'] . ', Excel Total Amount: ' . $totals])->update(); + return ['status' => 'error', 'message' => 'Insufficient deposit balance. Available CD Balance: ' . $cash_balance['balance'] . ', Required Amount: ' . $totals]; + } + } + } + + // ---------------- END CD BALANCE CHECK ---------------------------------------------------------------------------- + + if ($employee_data == null || empty($employee_data)) { if ($insurer_or_tpa == 'tpa') { @@ -2569,6 +2610,7 @@ class EmpDataServiceController extends BaseController 'event_type' => $file['event_type'], ]; + $client_policy_data = $this->clientPolicyModel->where('id', $client_policy_id)->first(); $file_name_with_path = WRITEPATH . "/uploads/import_excel/" . $file['file_name']; @@ -2691,6 +2733,47 @@ class EmpDataServiceController extends BaseController // dd($endorsement_data, $excel_data); + // ----------------- CD BALANCE CHECK --------------------------------------------------------------------------- + + $cash_balance = $this->clientDepositModel + ->where('cd_ac_pk', $client_policy_data['cd_ac_pk']) + ->where('is_active', 1) + ->orderBy('id', 'DESC') + ->first(); + + if ($cash_balance == null) { + $balance = $this->CDMasterModel + ->where('client_id', $file['client_id']) + ->where('insurer_id', $client_policy_data['insurer_id']) + ->where('id', $client_policy_data['cd_ac_pk']) + ->first(); + + $cash_balance['balance'] = $balance['opening_bal']; + } + + // Calculate the total amount from the objects + $totals = 0; + foreach ($endorsement_data as $item) { + $totals = $totals + $item['total']; + } + + $totals = round($totals, 2); + + //check CD amt insufficient only insurer, not tpa + if($file['insurer_or_tpa'] == 'insurer') + { + if (!empty($cash_balance)) { + if ((int) $cash_balance['balance'] < (int) $totals) { + $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]); + $this->batchFileModel->where('id', $file_id)->set(['status' => 'failed-7', 'error_data' => 'Insufficient deposit balance. Available CD Balance: ' . $cash_balance['balance'] . ', Excel Total Amount: ' . $totals])->update(); + return ['status' => 'error', 'message' => 'Insufficient deposit balance. Available CD Balance: ' . $cash_balance['balance'] . ', Required Amount: ' . $totals]; + } + } + } + + // ---------------- END CD BALANCE CHECK ---------------------------------------------------------------------------- + + if ($endorsement_data == null || empty($endorsement_data)) { diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 0dbac06f..0005c651 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -388,13 +388,11 @@ class EmployeeController extends AdminController batch_files.client_branch_id, CASE - WHEN batch_files.status = 'partially success' OR batch_files.status = 'in-progress-partially' THEN - batch_files.error_data - ELSE - NULL + WHEN batch_files.status IN ('partially success', 'in-progress-partially', 'failed-7') + THEN batch_files.error_data + ELSE NULL END AS error_data, - clients.short_name as client_short_name, client_branch.branch_name, client_policy.policy_no, diff --git a/app/Views/batch_list.php b/app/Views/batch_list.php index cbbc1731..d4b69dcf 100755 --- a/app/Views/batch_list.php +++ b/app/Views/batch_list.php @@ -82,14 +82,15 @@ - - + - -   + - + +   + + @@ -98,7 +99,6 @@   - @@ -135,6 +135,11 @@ failed + + + failed +