FIX_Download EXCEL With Additional Data 2 commit

This commit is contained in:
sanjeev.p 2025-12-16 18:01:03 +05:30
parent 53ea97a13f
commit 1a5666fa07

View File

@ -58,10 +58,14 @@ class ExcelExportController extends ResourceController
// $sheet->mergeCells("A1:{$lastCol}1"); // $sheet->mergeCells("A1:{$lastCol}1");
$sheet->setCellValue('A1', $title); $sheet->setCellValue('A1', $title);
$sheet->getStyle('A1')->getFont()->setBold(true);
$sheet->getStyle('A1')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); $sheet->getStyle('A1')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
// 2. Headers (Row 2) // 2. Headers (Row 2)
// $sheet->fromArray($header, NULL, 'A2')->getFont()->setBold(true);
$headerRange = 'A2:' . $lastCol . '2';
$sheet->fromArray($header, NULL, 'A2'); $sheet->fromArray($header, NULL, 'A2');
$sheet->getStyle($headerRange)->getFont()->setBold(true);
// 3. Data (Starting from Row 3) // 3. Data (Starting from Row 3)
// Note: The total row MUST be included in the $data array passed to this function. // Note: The total row MUST be included in the $data array passed to this function.
@ -115,14 +119,13 @@ class ExcelExportController extends ResourceController
$data = $this->getBrokerPoliciesData($managerId, $brokerId, $month); $data = $this->getBrokerPoliciesData($managerId, $brokerId, $month);
$header = ['Received Date', $header = [
'Assigned To_name', 'Received Date', 'Assigned To',
'Partner Name' , 'Partner Code', 'Partner Name' , 'Partner Code',
'Insurer Name' ,'Insurer Short Name', 'Insurer Name' ,'Insurer Short Name',
'Insured Name', 'Insured Name', 'Vehicle Number',
'Vehicle Number', 'Payment Mode', 'Plan Type',
'Payment Mode', 'Broker Name', 'Issue Date', 'Policy Number', 'Premium Amount'];
'Plan Type','Broker Name', 'Issue Date', 'Policy Number', 'Premium Amount'];
@ -132,7 +135,7 @@ class ExcelExportController extends ResourceController
// Calculate and append total // Calculate and append total
$grandTotal = array_sum(array_column($data, 13)); $grandTotal = array_sum(array_column($data, 13));
$data[] = ['','','','','','','','','','','','Total:', $grandTotal]; // Column C (index 2) is 'Total:', Column D (index 3) is the value $data[] = ['','','','','','','','','','','','','Total:', $grandTotal]; // Column C (index 2) is 'Total:', Column D (index 3) is the value
$monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month')); $monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month'));
$brokerName = $data[0][10] ?? 'Broker'; $brokerName = $data[0][10] ?? 'Broker';
@ -215,14 +218,13 @@ class ExcelExportController extends ResourceController
$data = $this->getProductPoliciesData($managerId, $vehicleType, $month); $data = $this->getProductPoliciesData($managerId, $vehicleType, $month);
// $header = ['Vehicle Type', 'Issue Date', 'Policy Number', 'Premium Amount']; // $header = ['Vehicle Type', 'Issue Date', 'Policy Number', 'Premium Amount'];
$header = ['Received Date', $header = [
'Assigned To_name', 'Received Date', 'Assigned To',
'Partner Name' , 'Partner Code', 'Partner Name' , 'Partner Code',
'Insurer Name' ,'Insurer Short Name', 'Insurer Name' ,'Insurer Short Name',
'Insured Name', 'Insured Name', 'Vehicle Number',
'Vehicle Number', 'Payment Mode', 'Plan Type',
'Payment Mode', 'Vehicle Type', 'Issue Date', 'Policy Number', 'Premium Amount'];
'Plan Type','Vehicle Type', 'Issue Date', 'Policy Number', 'Premium Amount'];
if (empty($data)) { if (empty($data)) {
throw new \RuntimeException('No policies found for this vehicle type...', 404); throw new \RuntimeException('No policies found for this vehicle type...', 404);
@ -232,7 +234,7 @@ class ExcelExportController extends ResourceController
$data[] = ['','','','','','','','','','','','','Total:',$grandTotal]; // Column C is 'Total:', Column D is the value $data[] = ['','','','','','','','','','','','','Total:',$grandTotal]; // Column C is 'Total:', Column D is the value
$monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month')); $monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month'));
$vehicleType = $data[0][0] ?? 'Vehicle'; $vehicleType = $data[0][10] ?? 'Vehicle';
$cleanVehicleType = str_replace(' ', '_', strtolower($vehicleType)); $cleanVehicleType = str_replace(' ', '_', strtolower($vehicleType));
$fileName = $cleanVehicleType . '_Policies_Details_' . $monthName . '.xlsx'; $fileName = $cleanVehicleType . '_Policies_Details_' . $monthName . '.xlsx';
@ -317,12 +319,12 @@ class ExcelExportController extends ResourceController
$data = $this->getInsurerPoliciesData($managerId, $insurerId, $month); $data = $this->getInsurerPoliciesData($managerId, $insurerId, $month);
// Define column headers // Define column headers
$header = ['Received Date', $header = [
'Assigned To', 'Received Date', 'Assigned To',
'Partner Name' , 'Partner Code', 'Partner Name' , 'Partner Code',
'Vehicle Number', 'Vehicle Number',
'Payment Mode', 'Payment Mode', 'Plan Type',
'Plan Type','Insurer Name', 'Insurer Short Name','Insured Name', 'Policy Issued Date','Policy Number', 'Premium Amount']; 'Insurer Name', 'Insurer Short Name','Insured Name', 'Policy Issued Date','Policy Number', 'Premium Amount'];
// --- 1. MODIFIED LOGIC: Throw RuntimeException if no data --- // --- 1. MODIFIED LOGIC: Throw RuntimeException if no data ---
if (empty($data)) { if (empty($data)) {
@ -333,7 +335,7 @@ class ExcelExportController extends ResourceController
$data[] = ['','','','','','','','','','','','Total:',$grandTotal]; $data[] = ['','','','','','','','','','','','Total:',$grandTotal];
$monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month')); $monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month'));
$InsurerName = $data[0][0] ?? 'Insurer' ; $InsurerName = $data[0][7] ?? 'Insurer' ;
$cleanInsurerName = str_replace(' ', '_', strtolower($InsurerName)); $cleanInsurerName = str_replace(' ', '_', strtolower($InsurerName));
$fileName = $cleanInsurerName . '_Policies_Details_' . $monthName . '.xlsx'; $fileName = $cleanInsurerName . '_Policies_Details_' . $monthName . '.xlsx';
@ -405,19 +407,24 @@ class ExcelExportController extends ResourceController
} }
$data = $this->getLowPremiumAgentData($managerId); $data = $this->getLowPremiumAgentData($managerId);
$header = ['Partner Name', 'Partner Code','Partner Status' ,'Policy Number','Issued Date', 'Premium Amount']; $header = [
'Received Date', 'Assigned To',
'Insurer Name' ,'Insurer Short Name',
'Insured Name', 'Vehicle Number',
'Payment Mode', 'Plan Type',
'Partner Name', 'Partner Code','Partner Status' ,'Policy Number','Issued Date', 'Premium Amount'];
if (empty($data)) { if (empty($data)) {
throw new \RuntimeException('No low premium agents found...', 404); throw new \RuntimeException('No low premium agents found...', 404);
} }
$grandTotal = array_sum(array_column($data, 5)); $grandTotal = array_sum(array_column($data, 13));
$data[] = ['','','','','Total:', $grandTotal]; // Column E is 'Total:', Column F is the value $data[] = ['','','','','','','','','','','','','Total:', $grandTotal]; // Column E is 'Total:', Column F is the value
// Note: $month variable is undefined, assuming you want current month for filename // Note: $month variable is undefined, assuming you want current month for filename
$monthName = date('Ym'); $monthName = date('M_Y');
$PartnerName = $data[0][0] ?? 'Partner'; $PartnerName = $data[0][8] ?? 'Partner';
$fileName = $PartnerName . '_Low_Premium_Details_' . $monthName . '.xlsx'; $fileName = 'Partners_Low_Premium_Policy_Details.xlsx';
// --- CALL CENTRALIZED FUNCTION --- // --- CALL CENTRALIZED FUNCTION ---
$this->streamExcelFile( $this->streamExcelFile(
@ -425,8 +432,8 @@ class ExcelExportController extends ResourceController
$data, $data,
"Partners Low Premium Policy Details", "Partners Low Premium Policy Details",
$fileName, $fileName,
'E', // Total Label Column 'M', // Total Label Column
'F' // Total Value Column 'N' // Total Value Column
); );
return; return;
@ -490,18 +497,23 @@ class ExcelExportController extends ResourceController
// Renamed helper function for consistency: getAgentMonthlyPoliciesData // Renamed helper function for consistency: getAgentMonthlyPoliciesData
$data = $this->getAgentMonthlyPoliciesData($managerId, $agentId); // , $month); $data = $this->getAgentMonthlyPoliciesData($managerId, $agentId); // , $month);
$header = ['Partner Name','Partner Code' , 'Policy Number','Issue Date', 'Premium Amount']; $header = [
'Received Date', 'Assigned To',
'Insurer Name' ,'Insurer Short Name',
'Insured Name', 'Vehicle Number',
'Payment Mode', 'Plan Type',
'Partner Name','Partner Code' , 'Policy Number','Issue Date', 'Premium Amount'];
if (empty($data)) { if (empty($data)) {
throw new \RuntimeException('No policies found for this agent for the specified month.', 404); throw new \RuntimeException('No policies found for this agent for the specified month.', 404);
} }
$grandTotal = array_sum(array_column($data, 4)); $grandTotal = array_sum(array_column($data, 12));
$data[] = ['','','','Total:',$grandTotal]; // Column D is 'Total:', Column E is the value $data[] = ['','','','','','','','','','','','Total:',$grandTotal]; // Column D is 'Total:', Column E is the value
// $monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month')); // $monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month'));
$monthName = date('M_Y') ; $monthName = date('M Y') ;
$PartnerName = $data[0][0] ?? 'Partner'; $PartnerName = $data[0][8] ?? 'Partner';
$cleanPartnerName = str_replace(' ', '_', strtolower($PartnerName)); $cleanPartnerName = str_replace(' ', '_', strtolower($PartnerName));
$fileName = $cleanPartnerName . '_Policies_Details_' . $monthName . '.xlsx'; $fileName = $cleanPartnerName . '_Policies_Details_' . $monthName . '.xlsx';
@ -511,8 +523,8 @@ class ExcelExportController extends ResourceController
$data, $data,
"Partner Policies Details for {$monthName}", "Partner Policies Details for {$monthName}",
$fileName, $fileName,
'D', // Total Label Column 'L', // Total Label Column
'E' // Total Value Column 'M' // Total Value Column
); );
return; return;
@ -662,15 +674,13 @@ class ExcelExportController extends ResourceController
$vehicleType = $data[0][12] ?? 'Vehicle Type'; $vehicleType = $data[0][12] ?? 'Vehicle Type';
// Define column headers // Define column headers
$header = ['Received Date', $header = [
'Assigned To_name', 'Received Date', 'Assigned To',
'Partner Name' , 'Partner Code', 'Partner Name' , 'Partner Code',
'Insurer Name' ,'Insurer Short Name', 'Insurer Name' ,'Insurer Short Name',
'Insured Name', 'Insured Name', 'Vehicle Number',
'Vehicle Number', 'Payment Mode', 'Plan Type',
'Payment Mode', 'Sales Executive Name', 'Vehicle Type', 'Policy Number','Issued Date', 'Premium Amount'];
'Plan Type',
'Sales Executive Name', 'Vehicle Type', 'Policy Number','Issued Date', 'Premium Amount'];
// --- 1. MODIFIED LOGIC: Throw RuntimeException if no data --- // --- 1. MODIFIED LOGIC: Throw RuntimeException if no data ---
if (empty($data)) { if (empty($data)) {
@ -929,7 +939,7 @@ class ExcelExportController extends ResourceController
$builder->where('i.id', $insurerId); $builder->where('i.id', $insurerId);
$builder->where('i.is_active',1); $builder->where('i.is_active',1);
$builder->orderBy('pp.issued_date', 'DESC'); $builder->orderBy('pp.issued_date', 'DESC');
// print_r($builder->getCompiledSelect());die;
$results = $builder->get()->getResultArray(); $results = $builder->get()->getResultArray();
// Restructure data for PhpSpreadsheet (2D array of values) // Restructure data for PhpSpreadsheet (2D array of values)
@ -1151,6 +1161,13 @@ class ExcelExportController extends ResourceController
$builder = $this->db->table('partner_policy pp'); $builder = $this->db->table('partner_policy pp');
$builder->select(" $builder->select("
DATE_FORMAT(pe.created_on, '%d-%m-%Y %h:%i %p') AS received_date,
S.name as assigned_to_name,
I.name as insurer_name,I.short_name as insurer_short_name,
pe.name as insured_name,
pe.reg_no,
pm.value as payment_mode_value,
ipti.insurance_plan_type,
pa.name AS agent_name, pa.name AS agent_name,
pa.agent_code, pa.agent_code,
CASE CASE
@ -1163,6 +1180,15 @@ class ExcelExportController extends ResourceController
"); ");
$builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'inner'); $builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'inner');
$builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_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_insurance_plan_type_master ipti', 'ipti.id = Q.insurance_plan_type_id', 'left');
$builder->join('insurers I', 'I.id = Q.insurer_id', 'left');
$builder->join('partner_staff S', 'S.id = pe.assigned_to', 'left');
// WHERE conditions // WHERE conditions
$builder->where('pp.manager_id', $managerId); $builder->where('pp.manager_id', $managerId);
// $builder->where('pa.id', $agentId); // $builder->where('pa.id', $agentId);