GWM : commissionPayoutReportExport API

This commit is contained in:
Gowtham M 2026-04-18 18:50:16 +05:30
parent 9dad32794b
commit 9e9a99d698

View File

@ -1800,8 +1800,9 @@ class PolicyController extends ResourceController
$builder = $db->table('partner_policy pp'); $builder = $db->table('partner_policy pp');
$builder->select( $builder->select(
'pa.agent_code, pa.name AS agent_name, ' 'pa.agent_code, pa.name AS agent_name, '
. 'ins.short_name AS insurer_short_name, ipti.insurance_plan_type AS insurance_plan_type, '
. 'pp.policy_number AS policy_no, pp.premium_amount AS premium, ' . 'pp.policy_number AS policy_no, pp.premium_amount AS premium, '
. 'pp.commission_amount, pe.reg_no, pp.weight, pp.fuel_type, ' . 'pp.commission_amount, pp.insured_name, pe.reg_no, pp.weight, pp.fuel_type, '
. 'pp.vehicle_type, pp.issued_date' . 'pp.vehicle_type, pp.issued_date'
); );
$builder->select( $builder->select(
@ -1828,6 +1829,9 @@ class PolicyController extends ResourceController
); );
$builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'left'); $builder->join('partner_agent pa', 'pa.id = pp.agent_id', 'left');
$builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left'); $builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left');
$builder->join('partner_quotation pq', 'pq.id = pp.quotation_id', 'left');
$builder->join('insurers ins', 'ins.id = pq.insurer_id', 'left');
$builder->join('partner_insurance_plan_type_master ipti', 'ipti.id = pq.insurance_plan_type_id', 'left');
$builder->where('pp.is_active', 1); $builder->where('pp.is_active', 1);
if ($fromDate !== null) { if ($fromDate !== null) {
@ -1860,19 +1864,7 @@ class PolicyController extends ResourceController
$rows = $builder->get()->getResultArray(); $rows = $builder->get()->getResultArray();
// ── 3. Compute summary totals ───────────────────────────────────────── // ── 3. Build spreadsheet ──────────────────────────────────────────────
$sumTotal = $sumRaised = $sumPending = 0.0;
foreach ($rows as $row) {
$amt = (float) ($row['commission_amount'] ?? 0);
$sumTotal += $amt;
if (($row['received_or_not'] ?? '') === 'yes') {
$sumRaised += $amt;
} else {
$sumPending += $amt;
}
}
// ── 4. Build spreadsheet ──────────────────────────────────────────────
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $spreadsheet->getActiveSheet(); $sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Payout Report'); $sheet->setTitle('Payout Report');
@ -1926,15 +1918,6 @@ class PolicyController extends ResourceController
], ],
'borders' => $cellBorder, 'borders' => $cellBorder,
]; ];
$summaryLabelStyle = [
'font' => ['bold' => true, 'name' => 'Arial', 'size' => 10],
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT],
];
$summaryValueStyle = [
'font' => ['bold' => true, 'name' => 'Arial', 'size' => 10, 'color' => ['argb' => 'FF0070C0']],
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT],
];
// Total columns used: AV (UTR NO + UTR DATE after PAYMENT PO MODE) // Total columns used: AV (UTR NO + UTR DATE after PAYMENT PO MODE)
$lastCol = 'V'; $lastCol = 'V';
$lastColNo = 22; $lastColNo = 22;
@ -1988,7 +1971,7 @@ class PolicyController extends ResourceController
'Q3' => 'A+B (NET)', 'Q3' => 'A+B (NET)',
'R3' => 'S.TAX', 'R3' => 'S.TAX',
'S3' => 'TOTAL', 'S3' => 'TOTAL',
'T3' => "PAYMENT\nPO MODE", 'T3' => "PAYMENT MODE",
'U3' => 'UTR NO', 'U3' => 'UTR NO',
'V3' => 'UTR DATE', 'V3' => 'UTR DATE',
]; ];
@ -2009,7 +1992,7 @@ class PolicyController extends ResourceController
foreach ($rows as $index => $row) { foreach ($rows as $index => $row) {
$refNo = $index + 1; $refNo = $index + 1;
$policyNo = '`'.$row['policy_no'] ?? ''; $policyNo = $row['policy_no'] ?? '';
$regNo = $row['reg_no'] ?? ''; $regNo = $row['reg_no'] ?? '';
$fuelType = $row['fuel_type'] ?? ''; $fuelType = $row['fuel_type'] ?? '';
$vehicleType = $row['vehicle_type'] ?? ''; $vehicleType = $row['vehicle_type'] ?? '';
@ -2022,10 +2005,10 @@ class PolicyController extends ResourceController
$rowData = [ $rowData = [
'A' => $refNo, 'A' => $refNo,
'B' => $row['agent_code'] ?? '', // Insurer / agent code 'B' => $row['insurer_short_name'] ?? '',
'C' => $vehicleType, // Plan type 'C' => $row['insurance_plan_type'] ?? '',
'D' => $policyNo, 'D' => $policyNo,
'E' => '', // Insured name not in current query; extend if needed 'E' => $row['insured_name'] ?? '',
'F' => $regNo, 'F' => $regNo,
'G' => $vehicleType, // Product (two-wheeler, etc.) 'G' => $vehicleType, // Product (two-wheeler, etc.)
'H' => $fuelType, 'H' => $fuelType,
@ -2057,30 +2040,6 @@ class PolicyController extends ResourceController
$rowNum++; $rowNum++;
} }
// ── Summary row ───────────────────────────────────────────────────────
$summaryRow = $rowNum + 1;
$sheet->mergeCells("A{$summaryRow}:{$lastCol}{$summaryRow}");
$sheet->setCellValue("A{$summaryRow}", 'TOTAL COMMISSION SUMMARY');
$sheet->getStyle("A{$summaryRow}")->applyFromArray($summaryLabelStyle);
$summaryRow++;
$sheet->setCellValue("A{$summaryRow}", 'Total Commission:');
$sheet->setCellValue("B{$summaryRow}", round($sumTotal, 2));
$sheet->getStyle("A{$summaryRow}")->applyFromArray($summaryLabelStyle);
$sheet->getStyle("B{$summaryRow}")->applyFromArray($summaryValueStyle);
$summaryRow++;
$sheet->setCellValue("A{$summaryRow}", 'Raised (Invoiced):');
$sheet->setCellValue("B{$summaryRow}", round($sumRaised, 2));
$sheet->getStyle("A{$summaryRow}")->applyFromArray($summaryLabelStyle);
$sheet->getStyle("B{$summaryRow}")->applyFromArray($summaryValueStyle);
$summaryRow++;
$sheet->setCellValue("A{$summaryRow}", 'Pending:');
$sheet->setCellValue("B{$summaryRow}", round($sumPending, 2));
$sheet->getStyle("A{$summaryRow}")->applyFromArray($summaryLabelStyle);
$sheet->getStyle("B{$summaryRow}")->applyFromArray($summaryValueStyle);
// ── Column widths ───────────────────────────────────────────────────── // ── Column widths ─────────────────────────────────────────────────────
$colWidths = [ $colWidths = [
'A' => 8, 'B' => 16, 'C' => 13, 'D' => 14, 'E' => 16, 'A' => 8, 'B' => 16, 'C' => 13, 'D' => 14, 'E' => 16,
@ -2096,7 +2055,7 @@ class PolicyController extends ResourceController
// ── Freeze panes below header ───────────────────────────────────────── // ── Freeze panes below header ─────────────────────────────────────────
$sheet->freezePane('A4'); $sheet->freezePane('A4');
// ── 5. Stream the file to the browser ───────────────────────────────── // ── 4. Stream the file to the browser ─────────────────────────────────
$filename = 'commission_payout_report_' . date('Ymd_His') . '.xlsx'; $filename = 'commission_payout_report_' . date('Ymd_His') . '.xlsx';
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');