FIX_ExportExcel
This commit is contained in:
parent
6dff58e50e
commit
efe503ea40
@ -788,10 +788,10 @@ class ExcelExportController extends ResourceController
|
|||||||
// We create a new array for each row
|
// We create a new array for each row
|
||||||
$finalData[] = [
|
$finalData[] = [
|
||||||
$serialNo++,
|
$serialNo++,
|
||||||
$row['agent_code'],
|
$row[0],
|
||||||
$row['agent_name'],
|
$row[1],
|
||||||
$row['email'],
|
$row[2],
|
||||||
$row['mobile']
|
$row[3]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1205,7 +1205,7 @@ class ExcelExportController extends ResourceController
|
|||||||
|
|
||||||
public function downloadStaffPendingSummaryExcelByID()
|
public function downloadStaffPendingSummaryExcelByID()
|
||||||
{
|
{
|
||||||
// try{
|
try{
|
||||||
$managerId = $this->request->getGet('manager_id');
|
$managerId = $this->request->getGet('manager_id');
|
||||||
$staffId = $this->request->getGet('staff_id');
|
$staffId = $this->request->getGet('staff_id');
|
||||||
$status = $this->request->getGet('status');
|
$status = $this->request->getGet('status');
|
||||||
@ -1231,9 +1231,13 @@ class ExcelExportController extends ResourceController
|
|||||||
|
|
||||||
// Define column headers
|
// Define column headers
|
||||||
|
|
||||||
$header = ['S.No', 'Staff Name', 'REG Number','Received Date'];
|
|
||||||
|
$header = ['S.No', 'Received Date',
|
||||||
// Initialize totals
|
'Assigned To(Staff Name)',
|
||||||
|
'Partner Name', 'Partner Code',
|
||||||
|
'Insurer Name', 'Insurer Short Name',
|
||||||
|
'Insured Name', 'Vehicle Number',
|
||||||
|
'Payment Mode', 'Plan Type'];
|
||||||
// Initialize totals
|
// Initialize totals
|
||||||
$lastIndex = count(reset($data)) - 1;
|
$lastIndex = count(reset($data)) - 1;
|
||||||
// usort($data, function($a, $b) use ($lastIndex) {
|
// usort($data, function($a, $b) use ($lastIndex) {
|
||||||
@ -1249,65 +1253,65 @@ class ExcelExportController extends ResourceController
|
|||||||
$finalData[] = array_merge([$serialNo++], $row);
|
$finalData[] = array_merge([$serialNo++], $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
$staffName = $finalData[0][1] ?? 'Staff';
|
$staffName = $finalData[0][2] ?? 'Staff';
|
||||||
|
|
||||||
$fileName = $staffName.'_'.$status.'_Summary.xlsx';
|
|
||||||
// Calculate and append total
|
|
||||||
|
|
||||||
$cleanStaffName = str_replace(' ', '_', strtolower($staffName));
|
$cleanStaffName = str_replace(' ', '_', strtolower($staffName));
|
||||||
$cleanStatus = ucwords(str_replace('_', ' ', strtolower($status)));
|
$cleanStaffName2 = ucwords($staffName);
|
||||||
$fileName = $cleanStaffName . '_' . $cleanStatus . '_Summary.xlsx';
|
|
||||||
|
|
||||||
|
$cleanStatus = str_replace('_', ' ', strtolower($status));
|
||||||
|
$cleanStatus2 = ucwords(str_replace('_', ' ', strtolower($status)));
|
||||||
|
|
||||||
|
$fileName = $cleanStaffName . '_' . $cleanStatus . '_Summary.xlsx';
|
||||||
|
|
||||||
// --- CALL CENTRALIZED FUNCTION ---
|
// --- CALL CENTRALIZED FUNCTION ---
|
||||||
$this->streamExcelFile(
|
$this->streamExcelFile(
|
||||||
$header,
|
$header,
|
||||||
$finalData,
|
$finalData,
|
||||||
$cleanStaffName ." ". $cleanStatus." Summary",
|
$cleanStaffName2 ." ". $cleanStatus2." Summary",
|
||||||
$fileName,
|
$fileName,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
return; // STOP CI4 rendering anything else
|
return; // STOP CI4 rendering anything else
|
||||||
|
|
||||||
// } catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
|
|
||||||
// // ... (Your error handling remains the same) ...
|
// ... (Your error handling remains the same) ...
|
||||||
// $ref = [];
|
$ref = [];
|
||||||
// // Case 1: No Data Found (Soft Success JSON)
|
// Case 1: No Data Found (Soft Success JSON)
|
||||||
// if ($e instanceof \RuntimeException && $e->getCode() === 404) {
|
if ($e instanceof \RuntimeException && $e->getCode() === 404) {
|
||||||
// $ref['message'] = 'No Data Found';
|
$ref['message'] = 'No Data Found';
|
||||||
// return $this->respond([
|
return $this->respond([
|
||||||
// 'status' => 'success',
|
'status' => 'success',
|
||||||
// 'code' => 200,
|
'code' => 200,
|
||||||
// 'data' => [],
|
'data' => [],
|
||||||
// 'message' => 'No Data Found',
|
'message' => 'No Data Found',
|
||||||
// 'ref' => $ref
|
'ref' => $ref
|
||||||
// ], 200);
|
], 200);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// // Case 2: Database or Other Error (Error JSON)
|
// Case 2: Database or Other Error (Error JSON)
|
||||||
// $isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|
||||||
// || $e instanceof \mysqli_sql_exception
|
|| $e instanceof \mysqli_sql_exception
|
||||||
// || $e instanceof \PDOException;
|
|| $e instanceof \PDOException;
|
||||||
|
|
||||||
// if ($isDbError) {
|
if ($isDbError) {
|
||||||
// $ref['debug_info'] = $e->getFile() . " / LN : " . $e->getLine();
|
$ref['debug_info'] = $e->getFile() . " / LN : " . $e->getLine();
|
||||||
// $ref['message'] = 'Database Error Occurred.';
|
$ref['message'] = 'Database Error Occurred.';
|
||||||
// $message = 'Database Error Occurred.';
|
$message = 'Database Error Occurred.';
|
||||||
// } else {
|
} else {
|
||||||
// $ref['message'] = 'An unexpected error occurred: ' . $e->getMessage();
|
$ref['message'] = 'An unexpected error occurred: ' . $e->getMessage();
|
||||||
// $message = 'An unexpected error occurred: ' . $e->getMessage();
|
$message = 'An unexpected error occurred: ' . $e->getMessage();
|
||||||
// }
|
}
|
||||||
|
|
||||||
// return $this->respond([
|
return $this->respond([
|
||||||
// 'status' => 'error',
|
'status' => 'error',
|
||||||
// 'code' => 500,
|
'code' => 500,
|
||||||
// 'data' => [],
|
'data' => [],
|
||||||
// 'message'=> $message,
|
'message'=> $message,
|
||||||
// 'ref' => $ref
|
'ref' => $ref
|
||||||
// ], 200);
|
], 200);
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1840,7 +1844,12 @@ class ExcelExportController extends ResourceController
|
|||||||
SUM(CASE WHEN pe.enquiry_status = 'Assigned' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_pending,
|
SUM(CASE WHEN pe.enquiry_status = 'Assigned' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_pending,
|
||||||
SUM(CASE WHEN pe.enquiry_status = 'In progress' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_in_progress,
|
SUM(CASE WHEN pe.enquiry_status = 'In progress' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_in_progress,
|
||||||
SUM(CASE WHEN pe.enquiry_status = 'Completed' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_completed,
|
SUM(CASE WHEN pe.enquiry_status = 'Completed' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_completed,
|
||||||
SUM(CASE WHEN pe.enquiry_status != 'Completed' THEN 1 ELSE 0 END) AS previous_total_pending,
|
/* SUM(CASE WHEN pe.enquiry_status != 'Completed' THEN 1 ELSE 0 END) AS previous_total_pending,
|
||||||
|
Logic: (All Pending) - (All Assigned Today) */
|
||||||
|
GREATEST(0,
|
||||||
|
SUM(CASE WHEN pe.enquiry_status != 'Completed' THEN 1 ELSE 0 END) -
|
||||||
|
SUM(CASE WHEN DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END)
|
||||||
|
) AS previous_total_pending
|
||||||
")
|
")
|
||||||
->join('partner_staff ps', 'ps.id = pe.assigned_to', 'left')
|
->join('partner_staff ps', 'ps.id = pe.assigned_to', 'left')
|
||||||
->where('pe.manager_id', $managerId)
|
->where('pe.manager_id', $managerId)
|
||||||
@ -1872,15 +1881,29 @@ class ExcelExportController extends ResourceController
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$builder = $this->db->table('partner_enquiry pe');
|
$builder = $this->db->table('partner_enquiry pe');
|
||||||
|
$builder = $this->db->table('partner_enquiry pe');
|
||||||
|
|
||||||
// Note: Change 'received_date' back to 'created_on' or update the loop below
|
$builder->select('
|
||||||
$builder->select("
|
DATE_FORMAT(pe.created_on, "%d-%m-%Y %h:%i %p") AS received_date,
|
||||||
ps.name AS staff_name,
|
ps.name AS staff_name,
|
||||||
CONCAT('\t', pe.reg_no) AS reg_no,
|
A.name as agent_name,
|
||||||
DATE_FORMAT(pe.created_on, '%d-%m-%Y %h:%i %p') AS created_on
|
A.agent_code,
|
||||||
", false);
|
I.name as insurer_name,
|
||||||
|
I.short_name as insurer_short_name,
|
||||||
|
pe.name as insured_name,
|
||||||
|
CONCAT("\t", pe.reg_no) AS reg_no,
|
||||||
|
pm.value as payment_mode_value,
|
||||||
|
ipti.insurance_plan_type
|
||||||
|
', false); // 'false' prevents CI from automatically escaping quotes in functions like DATE_FORMAT
|
||||||
|
|
||||||
|
$builder->join('partner_policy pp', 'pp.enquiry_id = pe.id', 'left');
|
||||||
$builder->join('partner_staff ps', 'ps.id = pe.assigned_to', 'left');
|
$builder->join('partner_staff ps', 'ps.id = pe.assigned_to', 'left');
|
||||||
|
$builder->join('partner_brokers pb', 'pb.id = pe.broker_id', 'left');
|
||||||
|
$builder->join('partner_quotation Q', 'Q.enquiry_id = pe.id', 'left');
|
||||||
|
$builder->join('partner_payment_mode_master pm', 'pm.id = Q.payment_mode_id', 'left');
|
||||||
|
$builder->join('partner_agent A', 'A.id = pe.agent_id', 'left');
|
||||||
|
$builder->join('partner_insurance_plan_type_master ipti', 'ipti.id = Q.insurance_plan_type_id', 'left');
|
||||||
|
$builder->join('insurers I', 'I.id = Q.insurer_id', 'left');
|
||||||
|
|
||||||
$builder->where('pe.manager_id', $managerId);
|
$builder->where('pe.manager_id', $managerId);
|
||||||
$builder->where('pe.assigned_to', $staffId);
|
$builder->where('pe.assigned_to', $staffId);
|
||||||
@ -1891,31 +1914,31 @@ class ExcelExportController extends ResourceController
|
|||||||
$todayEnd = date('Y-m-d 23:59:59');
|
$todayEnd = date('Y-m-d 23:59:59');
|
||||||
|
|
||||||
switch ($status) {
|
switch ($status) {
|
||||||
case 'today_assigned':
|
case 'TodayAssigned':
|
||||||
$builder->where('pe.created_on >=', $todayStart);
|
$builder->where('pe.created_on >=', $todayStart);
|
||||||
$builder->where('pe.created_on <=', $todayEnd);
|
$builder->where('pe.created_on <=', $todayEnd);
|
||||||
break;
|
break;
|
||||||
|
case 'Assigned':
|
||||||
case 'today_pending':
|
|
||||||
$builder->where('pe.enquiry_status', 'Assigned');
|
$builder->where('pe.enquiry_status', 'Assigned');
|
||||||
$builder->where('pe.created_on >=', $todayStart);
|
$builder->where('pe.created_on >=', $todayStart);
|
||||||
$builder->where('pe.created_on <=', $todayEnd);
|
$builder->where('pe.created_on <=', $todayEnd);
|
||||||
break;
|
break;
|
||||||
|
case 'InProgress':
|
||||||
case 'today_in_progress':
|
|
||||||
$builder->where('pe.enquiry_status', 'In progress');
|
$builder->where('pe.enquiry_status', 'In progress');
|
||||||
$builder->where('pe.created_on >=', $todayStart);
|
$builder->where('pe.created_on >=', $todayStart);
|
||||||
$builder->where('pe.created_on <=', $todayEnd);
|
$builder->where('pe.created_on <=', $todayEnd);
|
||||||
break;
|
break;
|
||||||
|
case 'Completed':
|
||||||
case 'today_completed':
|
|
||||||
$builder->where('pe.enquiry_status', 'Completed');
|
$builder->where('pe.enquiry_status', 'Completed');
|
||||||
$builder->where('pe.created_on >=', $todayStart);
|
$builder->where('pe.created_on >=', $todayStart);
|
||||||
$builder->where('pe.created_on <=', $todayEnd);
|
$builder->where('pe.created_on <=', $todayEnd);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'previous_total_pending':
|
case 'PrevPending':
|
||||||
// "Previous Pending" usually means anything NOT completed from BEFORE today
|
/** * To match your Summary Logic (SUM CASE WHEN status != 'Completed'):
|
||||||
|
* We remove the date restriction.
|
||||||
|
* This shows ALL records that are not completed, regardless of date.
|
||||||
|
*/
|
||||||
$builder->where('pe.enquiry_status !=', 'Completed');
|
$builder->where('pe.enquiry_status !=', 'Completed');
|
||||||
$builder->where('pe.created_on <', $todayStart);
|
$builder->where('pe.created_on <', $todayStart);
|
||||||
break;
|
break;
|
||||||
@ -1925,11 +1948,7 @@ class ExcelExportController extends ResourceController
|
|||||||
|
|
||||||
$data = [];
|
$data = [];
|
||||||
foreach ($results as $row) {
|
foreach ($results as $row) {
|
||||||
$data[] = [
|
$data[] = array_values($row);
|
||||||
$row['staff_name'] ?? 'N/A',
|
|
||||||
$row['reg_no'] ?? '-',
|
|
||||||
$row['created_on'] ?? '-' // Matches the alias in select
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user