From c75e855836f1f88c706eb7ad95a9f1699e748694 Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Thu, 18 Dec 2025 15:20:28 +0530 Subject: [PATCH] commission list --- app/Controllers/PolicyController.php | 40 +++++++++++++++++++++++----- app/Models/PolicyModel.php | 6 ++++- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/app/Controllers/PolicyController.php b/app/Controllers/PolicyController.php index 283fe81..74a8a3b 100644 --- a/app/Controllers/PolicyController.php +++ b/app/Controllers/PolicyController.php @@ -93,9 +93,11 @@ class PolicyController extends ResourceController try { $id = $this->request->getGet('id'); - $record = $this->PolicyModel->select('partner_policy.* , ipti.insurance_plan_type,pq.insurer_id') + $record = $this->PolicyModel->select('partner_policy.* , ipti.insurance_plan_type,pq.insurer_id,,A.retention_rate as agent_retention_rate,S.retention_rate as manager_retention_rate') ->join('partner_quotation pq', 'pq.id = partner_policy.quotation_id', 'left') ->join('partner_insurance_plan_type_master ipti', 'ipti.id = pq.insurance_plan_type_id', 'left') + ->join('partner_agent A', 'A.id = partner_policy.agent_id', 'left') + ->join('partner_staff S', 'S.id = partner_policy.manager_id', 'left') ->find($id); $record['issued_date'] = format_date_for_client($record['issued_date']); @@ -851,13 +853,15 @@ class PolicyController extends ResourceController { log_message('debug', 'calculateCommission() started with policyId: ' . $policyId); - $record = $this->PolicyModel->select('partner_policy.* , rto_state.rto_state_name as rto_state_code , ,pe.insurer_id , VT.vehicle_type as vehicle_type_master , ipti.insurance_plan_type,') + $record = $this->PolicyModel->select('partner_policy.* , rto_state.rto_state_name as rto_state_code ,pe.insurer_id , VT.vehicle_type as vehicle_type_master , ipti.insurance_plan_type,A.retention_rate as agent_retention_rate,S.retention_rate as manager_retention_rate') ->join('partner_enquiry pe', 'pe.id = partner_policy.enquiry_id', 'left') ->join('vehicle_type VT', 'VT.id = pe.vehicle_type_id', 'left') ->join('partner_quotation pq', 'pq.id = partner_policy.quotation_id', 'left') ->join('partner_insurance_plan_type_master ipti', 'ipti.id = pq.insurance_plan_type_id', 'left') ->join('rto_master rto_state', 'rto_state.rto_state = partner_policy.rto_state_code', 'left') // ->join('rto_master rto_city', 'rto_city.rto_code = partner_policy.rto_city_code', 'left') + ->join('partner_agent A', 'A.id = partner_policy.agent_id', 'left') + ->join('partner_staff S', 'S.id = partner_policy.manager_id', 'left') ->where('partner_policy.id', $policyId) ->first(); @@ -941,12 +945,25 @@ class PolicyController extends ResourceController if (!empty($result) && isset($result['success']) && $result['success'] === true) { + + + $actualCommission = $result['data']['payout']; + $agentRetention = $record['agent_retention_rate']; + $managerRetention = $record['manager_retention_rate']; + $commissionDeduction = $actualCommission * ($agentRetention+$managerRetention) / 100; + $commission = $actualCommission - $commissionDeduction; + + // Safely extract values $policyData = [ - 'commission_amount' => $result['data']['payout'] ?? null, - 'commission_applied_rule' => $result['data']['rule']['id'] ?? null, + 'commission_from_insurer' => $result['data']['payout'] ?? null, + 'agent_retention_rate' => $agentRetention, + 'manager_retention_rate' => $managerRetention, + 'commission_amount' => $commission, + 'commission_applied_rule' => $result['data']['rule']['id'] ?? null, ]; + log_message('debug', 'Updating Policy (ID=75) With: ' . json_encode($policyData)); if($return == true) @@ -1113,12 +1130,23 @@ class PolicyController extends ResourceController if (!empty($result) && isset($result['success']) && $result['success'] === true) { + $actualCommission = $result['data']['payout']; + $agentRetention = $postRequest['agent_retention_rate']; + $managerRetention = $postRequest['manager_retention_rate']; + $commissionDeduction = $actualCommission * ($agentRetention+$managerRetention) / 100; + $commission = $actualCommission - $commissionDeduction; + + // Safely extract values $policyData = [ - 'commission_amount' => $result['data']['payout'] ?? null, - 'commission_applied_rule' => $result['data']['rule']['id'] ?? null, + 'commission_from_insurer' => $result['data']['payout'] ?? null, + 'agent_retention_rate' => $agentRetention, + 'manager_retention_rate' => $managerRetention, + 'commission_amount' => $commission, + 'commission_applied_rule' => $result['data']['rule']['id'] ?? null, ]; + log_message('debug', 'Updating Policy (ID=75) With: ' . json_encode($policyData)); return $this->respond(['status' => 'success', 'code' => 200, 'data' => $policyData ], 200); diff --git a/app/Models/PolicyModel.php b/app/Models/PolicyModel.php index 1c71632..1b15c48 100644 --- a/app/Models/PolicyModel.php +++ b/app/Models/PolicyModel.php @@ -52,7 +52,11 @@ class PolicyModel extends Model 'broker_name', 'commission_amount', 'is_data_accuracy_checked', - 'pos_id' + 'pos_id', + 'commission_from_insurer', + 'agent_retention_rate', + 'manager_retention_rate', + 'is_invoice_generated' ]; protected $useTimestamps = false;