diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index 10b4f4ef..4c1903bd 100755
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -216,6 +216,9 @@ $routes->group("/employee", ["filter" => "authMVC"], function ($routes) {
$routes->post("retail-endorsement-save", "EmployeeController::retailendorsementsave");
$routes->get("getTPADataVariationReport/(:num)", "EmployeeController::getTPADataVariationReport/$1");
$routes->get("bulkGenerateEcardAndStoreinS3", "EmployeeController::bulkGenerateEcardAndStoreinS3");
+ $routes->get('clearCdSession', 'EmployeeController::clearCdSession');
+ $routes->get('checkSessionStatus', 'EmployeeController::checkSessionStatus');
+
});
diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php
index eb95e8be..f1c78481 100755
--- a/app/Controllers/EmpDataServiceController.php
+++ b/app/Controllers/EmpDataServiceController.php
@@ -209,24 +209,23 @@ class EmpDataServiceController extends BaseController
//check CD amt insufficient only insurer, not tpa // DO NOT REMOVE THIS
if($export_data['insurer_or_tpa'] == 'insurer')
{
- if (!empty($cash_balance)) {
- clear_cd_balance_session();
- 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]);
-
- $cd_session_data = json_encode(['cd_balance' => false, 'cd_amount' => $cash_balance['balance'], 'excel_file_amt' => $totals]);
- session()->set('cd_balance_info', $cd_session_data);
- session()->set('cd_balance', false);
-
- $hr_data = $this->getHrdataForInsufficientMailSend($export_data['client_branch_id']);
- $session_data = json_encode(['client_id' => $export_data['client_id'], 'hr_data' => $hr_data]);
- session()->set('hr_data', $session_data);
-
- }else{
- session()->set('cd_balance', true);
-
- }
+ if ((int) $cash_balance['balance'] < (int) $totals) {
+ clear_cd_balance_session(); // Clear old junk first
+
+ $cd_session_data = json_encode([
+ 'cd_balance' => false,
+ 'cd_amount' => $cash_balance['balance'],
+ 'excel_file_amt' => $totals
+ ]);
+
+ session()->set('cd_balance_info', $cd_session_data);
+ session()->set('cd_balance', 'insufficient'); // Use a string status for clarity
+
+ $hr_data = $this->getHrdataForInsufficientMailSend($export_data['client_branch_id']);
+ session()->set('hr_data', json_encode(['client_id' => $export_data['client_id'], 'hr_data' => $hr_data]));
+ }else{
+ session()->set('cd_balance', 'sufficient'); // Use a string status for clarity
+ session()->set('cd_balance_info', null);
}
}
diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php
index c1d2d717..f9d16f7a 100755
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -4584,6 +4584,20 @@ class EmployeeController extends AdminController
}
+ public function clearCdSession()
+ {
+ clear_cd_balance_session();
+ return $this->response->setJSON(['status' => 'cleared']);
+ }
+
+ public function checkSessionStatus()
+ {
+ // Uses your existing get_cd_balance() helper
+ $data = get_cd_balance();
+
+ // Return as JSON so JavaScript can read it
+ return $this->response->setJSON($data);
+ }
}
diff --git a/app/Helpers/utility_helper.php b/app/Helpers/utility_helper.php
index efec7f1d..919fd49c 100755
--- a/app/Helpers/utility_helper.php
+++ b/app/Helpers/utility_helper.php
@@ -1108,6 +1108,7 @@ if (!function_exists('get_cd_balance')) {
return [
'has_cd_balance' => $session->has('cd_balance'),
+ 'cd_balance' => $session->get('cd_balance') ?? null,
'hr_data' => $session->get('hr_data') ?? [],
'cd_balance_info' => $session->get('cd_balance_info') ?? [],
];
diff --git a/app/Views/insurer_or_tpa_data.php b/app/Views/insurer_or_tpa_data.php
index 9635fb4b..b0baf94d 100755
--- a/app/Views/insurer_or_tpa_data.php
+++ b/app/Views/insurer_or_tpa_data.php
@@ -1163,68 +1163,50 @@
}
- function checkCDBalance() {
+ async function checkCDBalance() {
+ try {
+ // 1. Fetch the LATEST session data from the server
+ const response = await fetch('checkSessionStatus');
+ const cdData = await response.json();
- const cdData = = json_encode(get_cd_balance()) ?>;
- console.log(cdData, typeof cdData);
+ console.log('Current Session Data:', cdData);
- // cdData itself null / undefined safety
- if (!cdData || typeof cdData !== 'object') {
- console.log('CD data not available');
- return;
- }
+ // 2. Check if cd_balance_info exists and isn't empty
+ if (cdData.has_cd_balance && cdData.cd_balance_info) {
- let cd_balance_info = cdData.cd_balance_info
- console.log('cd_balance_info', cd_balance_info);
- cd_balance_info = JSON.parse(cd_balance_info);
- console.log('cd_balance_info', cd_balance_info);
+ if(cdData.cd_balance === 'sufficient'){
+ stopInterval(); // Stop checking once we find the error
+ console.log("CD Balance is sufficient");
+ return;
+ }
+
+ let cd_balance_info = JSON.parse(cdData.cd_balance_info) ?? null;
+ let hr_info = cdData.hr_data ? JSON.parse(cdData.hr_data) : null;
- let hr_data = cdData.hr_data
- console.log('hr_data', hr_data);
- hr_data = JSON.parse(hr_data);
- console.log('hr_data', hr_data);
+ // If balance is marked as false (insufficient)
+ if (cd_balance_info.cd_balance === false) {
+
+ stopInterval(); // Stop checking once we find the error
+ toastr.warning(
+ `Insufficient CD Balance.
Balance: ₹${cd_balance_info.cd_amount}`,
+ 'WARNING',
+ { allowHtml: true }
+ );
- let cd_balance = cd_balance_info.cd_balance;
- let cd_amount = cd_balance_info.cd_amount;
- let excel_file_amt = cd_balance_info.excel_file_amt;
+ if(hr_info) {
+ $('#client_id_for_hr_mail_send').val(hr_info.client_id);
+ window.hr_data = hr_info.hr_data;
+ }
- console.log(cd_balance ,cd_amount ,excel_file_amt);
+ openModal();
- window.hr_data = hr_data.hr_data;
- $('#client_id_for_hr_mail_send').val(hr_data.client_id)
-
- console.log(cd_balance, typeof cd_balance);
-
- if (cd_balance === false && messageShown === false) {
-
- const message1 =
- 'Insufficient CD Balance deducted. Please wait the file will be downloaded
' +
- 'CD Amount: ₹' + cd_amount + '
' +
- 'Total Amount: ₹' + excel_file_amt;
-
- toastr.warning(message1, 'WARNING', {
- allowHtml: true,
- timeOut: 10000,
- extendedTimeOut: 3000
- });
-
- messageShown = true;
- stopInterval();
- openModal();
-
-
-
- }
- else if (cd_balance === true) {
-
- console.log('CD Balance is sufficient');
- stopInterval();
-
- }
- else {
-
- console.log('CD balance info not available');
+ // 3. Clear the session now that we've handled it
+ fetch('clearCdSession');
+ }
+ }
+ } catch (error) {
+ console.error('Error checking CD balance:', error);
}
}
@@ -1234,7 +1216,7 @@
messageShown = false; // Reset message flag
submitInterval = setInterval(function() {
checkCDBalance();
- }, 10000);
+ }, 2000);
console.log("Checking CD balance started...");
}
}