From 0fab780d3b103896bc94a14c0d65d16d742a0be3 Mon Sep 17 00:00:00 2001 From: "sanjeev.p" Date: Tue, 16 Dec 2025 17:24:17 +0530 Subject: [PATCH 1/2] FIX_Dashboard DB error --- app/Controllers/DashboardController.php | 2 +- app/Controllers/ExcelExportController.php | 172 ++++++++++++++++++---- 2 files changed, 144 insertions(+), 30 deletions(-) diff --git a/app/Controllers/DashboardController.php b/app/Controllers/DashboardController.php index 14bcae1..bf91699 100644 --- a/app/Controllers/DashboardController.php +++ b/app/Controllers/DashboardController.php @@ -678,7 +678,7 @@ class DashboardController extends ResourceController $builder = $this->db->table('partner_policy pp'); $builder->select(" pb.name AS broker_name, - pb.short_name AS broker_short_name + pb.short_name AS broker_short_name, pb.id AS broker_id, COUNT( CASE diff --git a/app/Controllers/ExcelExportController.php b/app/Controllers/ExcelExportController.php index 4e6c871..4aaf00a 100644 --- a/app/Controllers/ExcelExportController.php +++ b/app/Controllers/ExcelExportController.php @@ -115,18 +115,27 @@ class ExcelExportController extends ResourceController $data = $this->getBrokerPoliciesData($managerId, $brokerId, $month); - $header = ['Broker Name', 'Issue Date', 'Policy Number', 'Premium Amount']; + $header = ['Received Date', + 'Assigned To_name', + 'Partner Name' , 'Partner Code', + 'Insurer Name' ,'Insurer Short Name', + 'Insured Name', + 'Vehicle Number', + 'Payment Mode', + 'Plan Type','Broker Name', 'Issue Date', 'Policy Number', 'Premium Amount']; + + if (empty($data)) { throw new \RuntimeException('No policies found...', 404); } // Calculate and append total - $grandTotal = array_sum(array_column($data, 3)); - $data[] = ['','','Total:', $grandTotal]; // Column C (index 2) is 'Total:', Column D (index 3) is the value + $grandTotal = array_sum(array_column($data, 13)); + $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')); - $brokerName = $data[0][0] ?? 'Broker'; + $brokerName = $data[0][10] ?? 'Broker'; $cleanbrokerName = str_replace(' ', '_', strtolower($brokerName)); $fileName = $cleanbrokerName . '_Policies_Details_' . $monthName . '.xlsx'; @@ -136,8 +145,8 @@ class ExcelExportController extends ResourceController $data, "Broker Policies Details for {$monthName}", $fileName, - 'C', // Total Label Column (aligned right) - 'D' // Total Value Column (bold) + 'M', // Total Label Column (aligned right) + 'N' // Total Value Column (bold) ); return; @@ -205,14 +214,22 @@ class ExcelExportController extends ResourceController } $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', + 'Assigned To_name', + 'Partner Name' , 'Partner Code', + 'Insurer Name' ,'Insurer Short Name', + 'Insured Name', + 'Vehicle Number', + 'Payment Mode', + 'Plan Type','Vehicle Type', 'Issue Date', 'Policy Number', 'Premium Amount']; if (empty($data)) { throw new \RuntimeException('No policies found for this vehicle type...', 404); } - $grandTotal = array_sum(array_column($data, 3)); - $data[] = ['','','Total:',$grandTotal]; // Column C is 'Total:', Column D is the value + $grandTotal = array_sum(array_column($data, 13)); + $data[] = ['','','','','','','','','','','','','Total:',$grandTotal]; // Column C is 'Total:', Column D is the value $monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month')); $vehicleType = $data[0][0] ?? 'Vehicle'; @@ -225,8 +242,8 @@ class ExcelExportController extends ResourceController $data, "Vehicle Type Policies Details for {$monthName}", $fileName, - 'C', // Total Label Column - 'D' // Total Value Column + 'M', // Total Label Column + 'N' // Total Value Column ); return; @@ -300,15 +317,20 @@ class ExcelExportController extends ResourceController $data = $this->getInsurerPoliciesData($managerId, $insurerId, $month); // Define column headers - $header = ['Insurer Name', 'Insurer Short Name','Insured Name', 'Policy Issued Date','Policy Number', 'Premium Amount']; + $header = ['Received Date', + 'Assigned To', + 'Partner Name' , 'Partner Code', + 'Vehicle Number', + 'Payment Mode', + 'Plan Type','Insurer Name', 'Insurer Short Name','Insured Name', 'Policy Issued Date','Policy Number', 'Premium Amount']; // --- 1. MODIFIED LOGIC: Throw RuntimeException if no data --- if (empty($data)) { throw new \RuntimeException('No policies found for this insurer for the specified month.', 404); } - $grandTotal = array_sum(array_column($data, 5)); - $data[] = ['','','','','Total:',$grandTotal]; + $grandTotal = array_sum(array_column($data, 12)); + $data[] = ['','','','','','','','','','','','Total:',$grandTotal]; $monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month')); $InsurerName = $data[0][0] ?? 'Insurer' ; @@ -321,8 +343,8 @@ class ExcelExportController extends ResourceController $data, "Insurer Policies Details for {$monthName}", $fileName, - 'E', // Total Label Column - 'F' // Total Value Column + 'L', // Total Label Column + 'M' // Total Value Column ); return; // STOP CI4 rendering anything else @@ -383,7 +405,7 @@ class ExcelExportController extends ResourceController } $data = $this->getLowPremiumAgentData($managerId); - $header = ['Partner Name', 'Partner Code','Partner Status' ,'Policy Number','Issued Date', 'Premium Amount']; + $header = ['Partner Name', 'Partner Code','Partner Status' ,'Policy Number','Issued Date', 'Premium Amount']; if (empty($data)) { throw new \RuntimeException('No low premium agents found...', 404); @@ -636,18 +658,27 @@ class ExcelExportController extends ResourceController } $data = $this->getStaffAndProductPoliciesExcel($managerId, $executiveId,$vehicleType, $month); - $executiveName = $data[0][0] ?? 'Sales Executive'; - $vehicleType = $data[0][1] ?? 'Vehicle Type'; + $executiveName = $data[0][11] ?? 'Sales Executive'; + $vehicleType = $data[0][12] ?? 'Vehicle Type'; // Define column headers - $header = ['Sales Executive Name', 'Vehicle Type', 'Policy Number','Issued Date', 'Premium Amount']; + + $header = ['Received Date', + 'Assigned To_name', + 'Partner Name' , 'Partner Code', + 'Insurer Name' ,'Insurer Short Name', + 'Insured Name', + 'Vehicle Number', + 'Payment Mode', + 'Plan Type', + 'Sales Executive Name', 'Vehicle Type', 'Policy Number','Issued Date', 'Premium Amount']; // --- 1. MODIFIED LOGIC: Throw RuntimeException if no data --- if (empty($data)) { throw new \RuntimeException('No policies found for the specified month.', 404); } - $grandTotal = array_sum(array_column($data, 4)); - $data[] = ['','','','Total:',$grandTotal]; // Column D is 'Total:', Column E is the value + $grandTotal = array_sum(array_column($data, 14)); + $data[] = ['','','','','','','','','','','','','','Total:',$grandTotal]; // Column D is 'Total:', Column E is the value $monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month')); @@ -662,8 +693,8 @@ class ExcelExportController extends ResourceController $data, "Staff And Product Policies Details for {$monthName}", $fileName, - 'D', // Total Label Column - 'E' // Total Value Column + 'N', // Total Label Column + 'O' // Total Value Column ); return; // STOP CI4 rendering anything else @@ -724,9 +755,26 @@ class ExcelExportController extends ResourceController try { $builder = $this->db->table('partner_policy pp'); // Note: I removed 'broker_id' from SELECT as it's redundant in the Excel sheet details - $builder->select('pb.name AS broker_name, DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.policy_number, pp.premium_amount'); + + + $builder->select(' + DATE_FORMAT(pe.created_on, "%d-%m-%Y %h:%i %p") AS received_date, + S.name as assigned_to_name, + A.name as agent_name, A.agent_code, + 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, + pb.name AS broker_name, DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.policy_number, pp.premium_amount'); $builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', '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->join('partner_staff S', 'S.id = pe.assigned_to', 'left'); // --- Correction 2: Use Robust Date Range Filtering --- if ($month === "current") { @@ -777,7 +825,24 @@ class ExcelExportController extends ResourceController try { $builder = $this->db->table('partner_policy pp'); // Note: I removed 'broker_id' from SELECT as it's redundant in the Excel sheet details - $builder->select('pp.vehicle_type, DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.policy_number, pp.premium_amount'); + $builder->select(' + DATE_FORMAT(pe.created_on, "%d-%m-%Y %h:%i %p") AS received_date, + S.name as assigned_to_name, + A.name as agent_name, A.agent_code, + 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, + pp.vehicle_type, DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.policy_number, pp.premium_amount'); + + $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_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->join('partner_staff S', 'S.id = pe.assigned_to', 'left'); // --- Correction 2: Use Robust Date Range Filtering --- @@ -829,11 +894,23 @@ class ExcelExportController extends ResourceController try { $builder = $this->db->table('partner_policy pp'); // Note: I removed 'broker_id' from SELECT as it's redundant in the Excel sheet details - $builder->select('i.name AS insurer_name,i.short_name,pp.insured_name, DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.policy_number, pp.premium_amount'); + $builder->select(' + DATE_FORMAT(pe.created_on, "%d-%m-%Y %h:%i %p") AS received_date, + S.name as assigned_to_name, + A.name as agent_name, A.agent_code, + pe.reg_no, + pm.value as payment_mode_value, + ipti.insurance_plan_type, + i.name AS insurer_name,i.short_name,pp.insured_name, DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.policy_number, pp.premium_amount'); $builder->join('partner_quotation pq', 'pq.id = pp.quotation_id', 'left'); $builder->join('insurers i', 'i.id = pq.insurer_id', 'left'); + $builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left'); + $builder->join('partner_payment_mode_master pm', 'pm.id = pq.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 = pq.insurance_plan_type_id', 'left'); + $builder->join('partner_staff S', 'S.id = pe.assigned_to', 'left'); // --- Correction 2: Use Robust Date Range Filtering --- if ($month === "current") { @@ -886,9 +963,28 @@ class ExcelExportController extends ResourceController try { $builder = $this->db->table('partner_policy pp'); - $builder->select('pse.name as sales_executive_name, pp.vehicle_type AS vechile_type,pp.policy_number,DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.premium_amount'); + $builder->select(' + DATE_FORMAT(pe.created_on, "%d-%m-%Y %h:%i %p") AS received_date, + S.name as assigned_to_name, + pa.name as agent_name, pa.agent_code, + 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, + pse.name as sales_executive_name, pp.vehicle_type AS vechile_type,pp.policy_number,DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.premium_amount'); $builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'left'); $builder->join('partner_sales_executive pse', 'pse.id = pa.sales_executive_id', 'left'); + + $builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', '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_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'); + // --- Correction 2: Use Robust Date Range Filtering --- if ($month === "current") { @@ -943,11 +1039,29 @@ class ExcelExportController extends ResourceController try { $builder = $this->db->table('partner_policy pp'); // Note: I removed 'broker_id' from SELECT as it's redundant in the Excel sheet details - $builder->select('pa.name AS agent_name,pa.agent_code,pp.policy_number,DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.premium_amount'); + $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.agent_code,pp.policy_number,DATE_FORMAT(pp.issued_date, "%d-%m-%Y") AS issued_date,pp.premium_amount'); $builder->join('partner_agent pa', 'pp.agent_id = pa.id', 'inner'); $builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', '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_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'); + + $builder->where('pp.manager_id', $managerId); $builder->where('pa.id', $AgentId); $builder->where('pp.policy_number IS NOT NULL'); From 1a5666fa076771e934adbb3b20b88ba0f45091b3 Mon Sep 17 00:00:00 2001 From: "sanjeev.p" Date: Tue, 16 Dec 2025 18:01:03 +0530 Subject: [PATCH 2/2] FIX_Download EXCEL With Additional Data 2 commit --- app/Controllers/ExcelExportController.php | 124 +++++++++++++--------- 1 file changed, 75 insertions(+), 49 deletions(-) diff --git a/app/Controllers/ExcelExportController.php b/app/Controllers/ExcelExportController.php index 4aaf00a..557cbdf 100644 --- a/app/Controllers/ExcelExportController.php +++ b/app/Controllers/ExcelExportController.php @@ -58,10 +58,14 @@ class ExcelExportController extends ResourceController // $sheet->mergeCells("A1:{$lastCol}1"); $sheet->setCellValue('A1', $title); + $sheet->getStyle('A1')->getFont()->setBold(true); $sheet->getStyle('A1')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); // 2. Headers (Row 2) + // $sheet->fromArray($header, NULL, 'A2')->getFont()->setBold(true); + $headerRange = 'A2:' . $lastCol . '2'; $sheet->fromArray($header, NULL, 'A2'); + $sheet->getStyle($headerRange)->getFont()->setBold(true); // 3. Data (Starting from Row 3) // 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); - $header = ['Received Date', - 'Assigned To_name', + $header = [ + 'Received Date', 'Assigned To', 'Partner Name' , 'Partner Code', - 'Insurer Name' ,'Insurer Short Name', - 'Insured Name', - 'Vehicle Number', - 'Payment Mode', - 'Plan Type','Broker Name', 'Issue Date', 'Policy Number', 'Premium Amount']; + 'Insurer Name' ,'Insurer Short Name', + 'Insured Name', 'Vehicle Number', + 'Payment Mode', 'Plan Type', + 'Broker Name', 'Issue Date', 'Policy Number', 'Premium Amount']; @@ -132,7 +135,7 @@ class ExcelExportController extends ResourceController // Calculate and append total $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')); $brokerName = $data[0][10] ?? 'Broker'; @@ -215,14 +218,13 @@ class ExcelExportController extends ResourceController $data = $this->getProductPoliciesData($managerId, $vehicleType, $month); // $header = ['Vehicle Type', 'Issue Date', 'Policy Number', 'Premium Amount']; - $header = ['Received Date', - 'Assigned To_name', - 'Partner Name' , 'Partner Code', - 'Insurer Name' ,'Insurer Short Name', - 'Insured Name', - 'Vehicle Number', - 'Payment Mode', - 'Plan Type','Vehicle Type', 'Issue Date', 'Policy Number', 'Premium Amount']; + $header = [ + 'Received Date', 'Assigned To', + 'Partner Name' , 'Partner Code', + 'Insurer Name' ,'Insurer Short Name', + 'Insured Name', 'Vehicle Number', + 'Payment Mode', 'Plan Type', + 'Vehicle Type', 'Issue Date', 'Policy Number', 'Premium Amount']; if (empty($data)) { 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 $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)); $fileName = $cleanVehicleType . '_Policies_Details_' . $monthName . '.xlsx'; @@ -317,12 +319,12 @@ class ExcelExportController extends ResourceController $data = $this->getInsurerPoliciesData($managerId, $insurerId, $month); // Define column headers - $header = ['Received Date', - 'Assigned To', - 'Partner Name' , 'Partner Code', - 'Vehicle Number', - 'Payment Mode', - 'Plan Type','Insurer Name', 'Insurer Short Name','Insured Name', 'Policy Issued Date','Policy Number', 'Premium Amount']; + $header = [ + 'Received Date', 'Assigned To', + 'Partner Name' , 'Partner Code', + 'Vehicle Number', + 'Payment Mode', 'Plan Type', + 'Insurer Name', 'Insurer Short Name','Insured Name', 'Policy Issued Date','Policy Number', 'Premium Amount']; // --- 1. MODIFIED LOGIC: Throw RuntimeException if no data --- if (empty($data)) { @@ -333,7 +335,7 @@ class ExcelExportController extends ResourceController $data[] = ['','','','','','','','','','','','Total:',$grandTotal]; $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)); $fileName = $cleanInsurerName . '_Policies_Details_' . $monthName . '.xlsx'; @@ -405,19 +407,24 @@ class ExcelExportController extends ResourceController } $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)) { throw new \RuntimeException('No low premium agents found...', 404); } - $grandTotal = array_sum(array_column($data, 5)); - $data[] = ['','','','','Total:', $grandTotal]; // Column E is 'Total:', Column F is the value + $grandTotal = array_sum(array_column($data, 13)); + $data[] = ['','','','','','','','','','','','','Total:', $grandTotal]; // Column E is 'Total:', Column F is the value // Note: $month variable is undefined, assuming you want current month for filename - $monthName = date('Ym'); - $PartnerName = $data[0][0] ?? 'Partner'; - $fileName = $PartnerName . '_Low_Premium_Details_' . $monthName . '.xlsx'; + $monthName = date('M_Y'); + $PartnerName = $data[0][8] ?? 'Partner'; + $fileName = 'Partners_Low_Premium_Policy_Details.xlsx'; // --- CALL CENTRALIZED FUNCTION --- $this->streamExcelFile( @@ -425,8 +432,8 @@ class ExcelExportController extends ResourceController $data, "Partners Low Premium Policy Details", $fileName, - 'E', // Total Label Column - 'F' // Total Value Column + 'M', // Total Label Column + 'N' // Total Value Column ); return; @@ -490,18 +497,23 @@ class ExcelExportController extends ResourceController // Renamed helper function for consistency: getAgentMonthlyPoliciesData $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)) { throw new \RuntimeException('No policies found for this agent for the specified month.', 404); } - $grandTotal = array_sum(array_column($data, 4)); - $data[] = ['','','','Total:',$grandTotal]; // Column D is 'Total:', Column E is the value + $grandTotal = array_sum(array_column($data, 12)); + $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 = date('M_Y') ; - $PartnerName = $data[0][0] ?? 'Partner'; + $monthName = date('M Y') ; + $PartnerName = $data[0][8] ?? 'Partner'; $cleanPartnerName = str_replace(' ', '_', strtolower($PartnerName)); $fileName = $cleanPartnerName . '_Policies_Details_' . $monthName . '.xlsx'; @@ -511,8 +523,8 @@ class ExcelExportController extends ResourceController $data, "Partner Policies Details for {$monthName}", $fileName, - 'D', // Total Label Column - 'E' // Total Value Column + 'L', // Total Label Column + 'M' // Total Value Column ); return; @@ -662,15 +674,13 @@ class ExcelExportController extends ResourceController $vehicleType = $data[0][12] ?? 'Vehicle Type'; // Define column headers - $header = ['Received Date', - 'Assigned To_name', - 'Partner Name' , 'Partner Code', - 'Insurer Name' ,'Insurer Short Name', - 'Insured Name', - 'Vehicle Number', - 'Payment Mode', - 'Plan Type', - 'Sales Executive Name', 'Vehicle Type', 'Policy Number','Issued Date', 'Premium Amount']; + $header = [ + 'Received Date', 'Assigned To', + 'Partner Name' , 'Partner Code', + 'Insurer Name' ,'Insurer Short Name', + 'Insured Name', 'Vehicle Number', + 'Payment Mode', 'Plan Type', + 'Sales Executive Name', 'Vehicle Type', 'Policy Number','Issued Date', 'Premium Amount']; // --- 1. MODIFIED LOGIC: Throw RuntimeException if no data --- if (empty($data)) { @@ -929,7 +939,7 @@ class ExcelExportController extends ResourceController $builder->where('i.id', $insurerId); $builder->where('i.is_active',1); $builder->orderBy('pp.issued_date', 'DESC'); - + // print_r($builder->getCompiledSelect());die; $results = $builder->get()->getResultArray(); // Restructure data for PhpSpreadsheet (2D array of values) @@ -1151,6 +1161,13 @@ class ExcelExportController extends ResourceController $builder = $this->db->table('partner_policy pp'); $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.agent_code, CASE @@ -1163,6 +1180,15 @@ class ExcelExportController extends ResourceController "); $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 $builder->where('pp.manager_id', $managerId); // $builder->where('pa.id', $agentId);