FIX_Agentpayout
This commit is contained in:
parent
fac6c7f968
commit
c3e035f0be
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user