From 9dad32794b473b36892a55d33be08f90dde7ac98 Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Sat, 18 Apr 2026 18:33:29 +0530 Subject: [PATCH] GWM : commissionPayoutReportExport API --- app/Controllers/PolicyController.php | 74 +++++++++++++++++++++------- 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/app/Controllers/PolicyController.php b/app/Controllers/PolicyController.php index 358ddea..3dc1283 100644 --- a/app/Controllers/PolicyController.php +++ b/app/Controllers/PolicyController.php @@ -1812,6 +1812,14 @@ class PolicyController extends ResourceController . 'WHERE pii_utr.policy_id = pp.id AND pii_utr.is_active = 1), "") AS utr_no', false ); + $builder->select( + 'COALESCE((SELECT GROUP_CONCAT(DATE_FORMAT(piu.utr_date, \'%d-%m-%Y\') ORDER BY piu.id SEPARATOR ", ") ' + . 'FROM partner_invoice_items pii_utr2 ' + . 'INNER JOIN partner_invoice pi_u2 ON pi_u2.id = pii_utr2.invoice_id AND pi_u2.is_active = 1 ' + . 'INNER JOIN partner_invoice_utr piu ON piu.invoice_id = pii_utr2.invoice_id AND piu.is_active = 1 ' + . 'WHERE pii_utr2.policy_id = pp.id AND pii_utr2.is_active = 1), "") AS utr_date', + false + ); $builder->select( "(CASE WHEN EXISTS (SELECT 1 FROM partner_invoice_items pii " . "INNER JOIN partner_invoice pi ON pi.id = pii.invoice_id AND pi.is_active = 1 " @@ -1888,33 +1896,52 @@ class PolicyController extends ResourceController 'fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => ['argb' => 'FFFFFF00']], 'font' => ['bold' => true, 'name' => 'Arial', 'size' => 10], ]; - $colHeaderStyle = [ + $colHeaderStyleText = [ 'font' => ['bold' => true, 'name' => 'Arial', 'size' => 10], 'fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => ['argb' => 'FFB8CCE4']], - 'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, 'wrapText' => true], + 'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT, 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, 'wrapText' => true], 'borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN]], ]; - $cellStyle = [ - 'font' => ['name' => 'Arial', 'size' => 9], - 'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER], + $colHeaderStyleNumber = [ + 'font' => ['bold' => true, 'name' => 'Arial', 'size' => 10], + 'fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => ['argb' => 'FFB8CCE4']], + 'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT, 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, 'wrapText' => true], 'borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN]], ]; + // Data rows: text left-aligned (LTR), numbers right-aligned + $cellBorder = ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN]]; + $cellStyleText = [ + 'font' => ['name' => 'Arial', 'size' => 9], + 'alignment' => [ + 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT, + 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, + ], + 'borders' => $cellBorder, + ]; + $cellStyleNumber = [ + 'font' => ['name' => 'Arial', 'size' => 9], + 'alignment' => [ + 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT, + 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, + ], + '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_LEFT], + 'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT], ]; - // Total columns used: A–T (20 columns) - $lastCol = 'T'; - $lastColNo = 20; + // Total columns used: A–V (UTR NO + UTR DATE after PAYMENT PO MODE) + $lastCol = 'V'; + $lastColNo = 22; // ── Row 1: Title ────────────────────────────────────────────────────── $sheet->mergeCells("A1:{$lastCol}1"); - $sheet->setCellValue('A1', 'WE NEED THIS TYPE FORMENT IN PATNER LOGIN (PAYOUT REPORT)'); + $sheet->setCellValue('A1', 'Payout Report'); $sheet->getStyle('A1')->applyFromArray($redBoldCenter); $sheet->getRowDimension(1)->setRowHeight(20); @@ -1961,12 +1988,18 @@ class PolicyController extends ResourceController 'Q3' => 'A+B (NET)', 'R3' => 'S.TAX', 'S3' => 'TOTAL', - 'T3' => "PAYMENT\nPO MODE", // UTR / UTR DATE placed here for simplicity + 'T3' => "PAYMENT\nPO MODE", + 'U3' => 'UTR NO', + 'V3' => 'UTR DATE', ]; + $headerNumberCols = ['A', 'O', 'P', 'Q', 'R', 'S', 'I']; foreach ($headers as $cell => $label) { $sheet->setCellValue($cell, $label); - $sheet->getStyle($cell)->applyFromArray($colHeaderStyle); + $col = preg_replace('/\d+/', '', $cell); + $sheet->getStyle($cell)->applyFromArray( + in_array($col, $headerNumberCols, true) ? $colHeaderStyleNumber : $colHeaderStyleText + ); } $sheet->getRowDimension(3)->setRowHeight(30); @@ -1976,7 +2009,7 @@ class PolicyController extends ResourceController foreach ($rows as $index => $row) { $refNo = $index + 1; - $policyNo = $row['policy_no'] ?? ''; + $policyNo = '`'.$row['policy_no'] ?? ''; $regNo = $row['reg_no'] ?? ''; $fuelType = $row['fuel_type'] ?? ''; $vehicleType = $row['vehicle_type'] ?? ''; @@ -1984,6 +2017,7 @@ class PolicyController extends ResourceController $commissionAmt = (float) ($row['commission_amount'] ?? 0); $premium = (float) ($row['premium'] ?? 0); $utrNo = $row['utr_no'] ?? ''; + $utrDate = $row['utr_date'] ?? ''; $payoutStatus = ($row['received_or_not'] ?? '') === 'yes' ? 'LINK' : 'PENDING'; $rowData = [ @@ -2006,12 +2040,17 @@ class PolicyController extends ResourceController 'Q' => $premium, // A+B Net 'R' => 0, // S.TAX – add if available 'S' => $commissionAmt, // Commission as TOTAL - 'T' => $payoutStatus . ($utrNo ? ' | ' . $utrNo : ''), + 'T' => $payoutStatus, + 'U' => $utrNo, + 'V' => $utrDate, ]; + $dataNumberCols = ['A', 'I', 'O', 'P', 'Q', 'R', 'S']; foreach ($rowData as $col => $value) { $sheet->setCellValue("{$col}{$rowNum}", $value); - $sheet->getStyle("{$col}{$rowNum}")->applyFromArray($cellStyle); + $sheet->getStyle("{$col}{$rowNum}")->applyFromArray( + in_array($col, $dataNumberCols, true) ? $cellStyleNumber : $cellStyleText + ); } $sheet->getRowDimension($rowNum)->setRowHeight(18); @@ -2020,7 +2059,7 @@ class PolicyController extends ResourceController // ── Summary row ─────────────────────────────────────────────────────── $summaryRow = $rowNum + 1; - $sheet->mergeCells("A{$summaryRow}:R{$summaryRow}"); + $sheet->mergeCells("A{$summaryRow}:{$lastCol}{$summaryRow}"); $sheet->setCellValue("A{$summaryRow}", 'TOTAL COMMISSION SUMMARY'); $sheet->getStyle("A{$summaryRow}")->applyFromArray($summaryLabelStyle); @@ -2047,7 +2086,8 @@ class PolicyController extends ResourceController 'A' => 8, 'B' => 16, 'C' => 13, 'D' => 14, 'E' => 16, 'F' => 13, 'G' => 13, 'H' => 10, 'I' => 8, 'J' => 8, 'K' => 10, 'L' => 13, 'M' => 16, 'N' => 16, 'O' => 8, - 'P' => 8, 'Q' => 10, 'R' => 8, 'S' => 10, 'T' => 18, + 'P' => 8, 'Q' => 10, 'R' => 8, 'S' => 10, 'T' => 12, + 'U' => 18, 'V' => 14, ]; foreach ($colWidths as $col => $width) { $sheet->getColumnDimension($col)->setWidth($width);