FIX_ISSUE_3

This commit is contained in:
VENKATESHWARAN 2026-02-02 09:22:35 +05:30
parent e00e55c517
commit 7119fe98fb
5 changed files with 72 additions and 73 deletions

View File

@ -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');
});

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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') ?? [],
];

View File

@ -1163,68 +1163,50 @@
<?php endif; ?>
}
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.<br>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<br>' +
'<strong>CD Amount:</strong> ₹' + cd_amount + '<br>' +
'<strong>Total Amount:</strong> ₹' + excel_file_amt;
toastr.warning(message1, 'WARNING', {
allowHtml: true,
timeOut: 10000,
extendedTimeOut: 3000
});
messageShown = true;
stopInterval();
openModal();
<?php clear_cd_balance_session(); ?>
}
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...");
}
}