From c3e035f0be6aa2accafa32cb5e32f7852bc569da Mon Sep 17 00:00:00 2001 From: "sanjeev.p" Date: Wed, 8 Apr 2026 15:52:25 +0530 Subject: [PATCH] FIX_Agentpayout --- app/Controllers/AgentIncentiveController.php | 60 +++++++++++++------- app/Libraries/PartnerPayoutGridRetention.php | 34 ++++++++--- 2 files changed, 66 insertions(+), 28 deletions(-) diff --git a/app/Controllers/AgentIncentiveController.php b/app/Controllers/AgentIncentiveController.php index 3bf2089..03a0bf6 100644 --- a/app/Controllers/AgentIncentiveController.php +++ b/app/Controllers/AgentIncentiveController.php @@ -556,10 +556,11 @@ class AgentIncentiveController extends ResourceController } // 2. Extract Filters - $insurer = $request->getGet('insurer'); - $rto = $request->getGet('rto'); - $segment = $request->getGet('segment'); - $vehicle_type = $request->getGet('vehicle_type'); + $insurer = trim((string) ($request->getGet('insurer') ?? '')); + $rto = trim((string) ($request->getGet('rto') ?? '')); + $segment = trim((string) ($request->getGet('segment') ?? '')); + $vehicle_type = trim((string) ($request->getGet('vehicle_type') ?? '')); + $search = trim((string) ($request->getGet('search') ?? '')); // ── 3. Resolve file_id based on role ───────────────────────────────── $db = \Config\Database::connect(); @@ -603,14 +604,30 @@ class AgentIncentiveController extends ResourceController $builder->where('partner_agent_incentive_file_id', $resolvedFileId); $builder->orderBy('vehicle_type', 'ASC')->orderBy('insurer', 'ASC'); + // Apply filters for every role on the same resolved file. + if ($insurer !== '') { + $builder->where('insurer', $insurer); + } + if ($rto !== '') { + $builder->where('rto', $rto); + } + if ($segment !== '') { + $builder->where('segment', $segment); + } + if ($vehicle_type !== '') { + $builder->where('vehicle_type', $vehicle_type); + } + if ($search !== '') { + $builder->groupStart() + ->like('insurer', $search) + ->orLike('vehicle_type', $search) + ->orLike('segment', $search) + ->orLike('rto', $search) + ->orLike('remarks', $search) + ->groupEnd(); + } + if (in_array($role, ['Manager', 'Accounts'], true)) { - - // Optional filters for Manager / Accounts - if (!empty($insurer)) $builder->where('insurer', $insurer); - if (!empty($rto)) $builder->where('rto', $rto); - if (!empty($segment)) $builder->where('segment', $segment); - if (!empty($vehicle_type)) $builder->where('vehicle_type', $vehicle_type); - $builder->select('id, insurer, vehicle_type, segment, rto, comp, tp, od, fuel, broker_name, remarks, broker_comp, broker_tp, broker_od, created_by, created_at, updated_by, updated_at'); @@ -665,10 +682,10 @@ class AgentIncentiveController extends ResourceController 'data' => [ 'id' => $resolvedFileId, 'grid' => $gridResults, - 'rtos' => $this->getUniqueColumnValues('rto'), - 'segments' => $this->getUniqueColumnValues('segment'), - 'vehicle_types' => $this->getUniqueColumnValues('vehicle_type'), - 'insurers' => $this->getUniqueColumnValues('insurer'), + 'rtos' => $this->getUniqueColumnValues('rto', $resolvedFileId), + 'segments' => $this->getUniqueColumnValues('segment', $resolvedFileId), + 'vehicle_types' => $this->getUniqueColumnValues('vehicle_type', $resolvedFileId), + 'insurers' => $this->getUniqueColumnValues('insurer', $resolvedFileId), ] ], 200); @@ -684,14 +701,19 @@ class AgentIncentiveController extends ResourceController /** * Helper function to fetch unique non-empty values for a column */ - private function getUniqueColumnValues($column) + private function getUniqueColumnValues($column, ?int $fileId = null) { - $results = $this->PayoutGridModel->select($column) + $builder = $this->PayoutGridModel->select($column) ->distinct() ->where("$column IS NOT NULL") ->where("$column !=", '') - ->orderBy($column, 'ASC') - ->findAll(); + ->orderBy($column, 'ASC'); + + if (!empty($fileId)) { + $builder->where('partner_agent_incentive_file_id', (int) $fileId); + } + + $results = $builder->findAll(); return array_column($results, $column); } diff --git a/app/Libraries/PartnerPayoutGridRetention.php b/app/Libraries/PartnerPayoutGridRetention.php index 07ecb40..ab1d561 100644 --- a/app/Libraries/PartnerPayoutGridRetention.php +++ b/app/Libraries/PartnerPayoutGridRetention.php @@ -162,7 +162,6 @@ class PartnerPayoutGridRetention /** * Agent: only if original comp/tp/od is a positive number → partner_RR − value. * Original null / empty / '-' / zero / negative / unparseable → '-'. - * Result ≤ 0 → '-'. */ public static function agentPayoutColumnFromPartnerRr($raw, float $partnerRr): string { @@ -175,10 +174,6 @@ class PartnerPayoutGridRetention } $result = $partnerRr - $base; - if ($result < 0 || abs($result) < 0.00001) { - return '-'; - } - return self::formatGridNumericDisplay($result); } @@ -270,11 +265,18 @@ class PartnerPayoutGridRetention $row['oa'] = $oa; $row['ob'] = $ob; $row['oc'] = $oc; + // Explicit raw aliases for UI/API consumers. + $row['raw_comp'] = $oa; + $row['raw_tp'] = $ob; + $row['raw_od'] = $oc; $pm = self::resolvePartnerMetaForGridRow($row, $metaMap, $master); if ($pm === null) { $row['partner_VT'] = '-'; $row['partner_RR'] = '-'; + $row['partner_comp'] = '-'; + $row['partner_tp'] = '-'; + $row['partner_od'] = '-'; if (array_key_exists('comp', $row)) { $row['comp'] = '-'; } @@ -290,16 +292,30 @@ class PartnerPayoutGridRetention $row['partner_VT'] = $pm['partner_VT']; $row['partner_RR'] = $pm['partner_RR']; - $rr = (float) $pm['partner_RR']; + $rr = (float) $pm['partner_RR']; + + $partnerComp = array_key_exists('comp', $row) + ? self::agentPayoutColumnFromPartnerRr($oa, $rr) + : '-'; + $partnerTp = array_key_exists('tp', $row) + ? self::agentPayoutColumnFromPartnerRr($ob, $rr) + : '-'; + $partnerOd = array_key_exists('od', $row) + ? self::agentPayoutColumnFromPartnerRr($oc, $rr) + : '-'; + + $row['partner_comp'] = $partnerComp; + $row['partner_tp'] = $partnerTp; + $row['partner_od'] = $partnerOd; if (array_key_exists('comp', $row)) { - $row['comp'] = self::agentPayoutColumnFromPartnerRr($oa, $rr); + $row['comp'] = $partnerComp; } if (array_key_exists('tp', $row)) { - $row['tp'] = self::agentPayoutColumnFromPartnerRr($ob, $rr); + $row['tp'] = $partnerTp; } if (array_key_exists('od', $row)) { - $row['od'] = self::agentPayoutColumnFromPartnerRr($oc, $rr); + $row['od'] = $partnerOd; } } unset($row);