GWM : getAgentUnusedCommissionList

This commit is contained in:
Gowtham M 2026-04-04 15:46:23 +05:30
parent 994b0fdbfb
commit 9bec6292f5

View File

@ -485,41 +485,40 @@ class InvoiceController extends ResourceController
try { try {
$manager_id = $this->request->getGet('manager_id'); $manager_id = $this->request->getGet('manager_id');
// $broker_id = $this->request->getGet('broker_id'); if ($manager_id === null || $manager_id === '') {
return $this->respond([
// if (empty($broker_id)) { 'status' => 'failed',
// return $this->respond([ 'code' => 400,
// 'status' => 'failed', 'message'=> 'manager_id is required',
// 'code' => 400, ], 400);
// 'message'=> 'broker_id is required' }
// ], 400);
// }
// Unused = policy has no active invoice line on an active invoice (same idea as commissionPayoutReport pending).
// NOT EXISTS avoids false "invoiced" when only inactive items/invoices exist, and avoids join fan-out.
$query = $this->PolicyModel $query = $this->PolicyModel
->select([ ->select([
'pe.agent_id', 'pe.agent_id',
'pa.name as agent_name', 'MAX(pa.name) as agent_name',
'MAX(pa.agent_code) as agent_code',
'SUM(partner_policy.commission_amount) as unused_commission_amount', 'SUM(partner_policy.commission_amount) as unused_commission_amount',
'COUNT(partner_policy.id) as total_policies' 'COUNT(partner_policy.id) as total_policies',
]) ])
// ->join(
// 'partner_enquiry pe',
// 'pe.id = partner_policy.enquiry_id AND pe.broker_id = ' . (int)$broker_id,
// 'left'
// )
->join('partner_enquiry pe', 'pe.id = partner_policy.enquiry_id', 'left') ->join('partner_enquiry pe', 'pe.id = partner_policy.enquiry_id', 'left')
->join('partner_agent pa', 'pa.id = pe.agent_id', 'left') ->join('partner_agent pa', 'pa.id = pe.agent_id', 'left')
->join('partner_invoice_items pii', 'pii.policy_id = partner_policy.id', 'left')
->join('partner_invoice pi', 'pi.id = pii.invoice_id AND pi.is_active = 1', 'left')
->where('partner_policy.is_active', 1) ->where('partner_policy.is_active', 1)
->where('partner_policy.commission_amount >=', 0) ->where('partner_policy.commission_amount >', 0)
// ->where('partner_policy.is_data_accuracy_checked', 1) ->where('partner_policy.is_data_accuracy_checked', 1)
->where('partner_policy.manager_id', $manager_id) ->where('partner_policy.manager_id', (int) $manager_id)
->where('pii.policy_id IS NULL') // ❗ unused commission ->where('pe.agent_id IS NOT NULL', null, false)
->where(
'NOT EXISTS (SELECT 1 FROM partner_invoice_items pii2 '
. 'INNER JOIN partner_invoice pi2 ON pi2.id = pii2.invoice_id AND pi2.is_active = 1 '
. 'WHERE pii2.policy_id = partner_policy.id AND pii2.is_active = 1)',
null,
false
)
->groupBy('pe.agent_id'); ->groupBy('pe.agent_id');
$data = $query->findAll(); $data = $query->findAll();
// Grand total (optional but useful for FE) // Grand total (optional but useful for FE)