commission list

This commit is contained in:
Gowtham M 2025-12-18 14:16:42 +05:30
parent 31da73e134
commit e6151a8a82

View File

@ -200,56 +200,75 @@ class InvoiceController extends ResourceController
$input = $this->request->getJSON(true);
if (empty($input['broker_id']) || empty($input['issued_date'])) {
return $this->respond([ 'status' => 'failed', 'code' => 400, 'message'=> 'issued_date are required' ], 400);
if (empty($input['broker_id'])) {
return $this->respond([
'status' => 'failed',
'code' => 400,
'message'=> 'broker_id is required'
], 400);
}
$invoice_id = isset($input['invoice_id']) ? $input['invoice_id'] : '';
$data_previous = $this->PolicyModel
->select('partner_policy.policy_number as policy_no,partner_policy.id as policy_id , partner_policy.issued_date, partner_policy.commission_amount, pe.name as customer_name , pq.premium_amount')
// Build the main query
$query = $this->PolicyModel
->select('partner_policy.policy_number as policy_no, partner_policy.id as policy_id, partner_policy.issued_date, partner_policy.commission_amount, partner_policy.insured_name as customer_name, pe.agent_id, partner_policy.premium_amount, pi.id as invoice_id, pi.invoice_no')
->join(
'partner_enquiry pe',
'pe.id = partner_policy.enquiry_id AND pe.broker_id = ' . (int)$input['broker_id'],
'left'
)
->join('partner_quotation pq','pq.id = partner_policy.quotation_id ', 'left')
// ->where('partner_policy.pos_id', $input['pos_id'])
->where('partner_policy.issued_date <=', date('Y-m-d', strtotime($input['issued_date'])))
->where('partner_policy.is_active', 1)
->where('partner_policy.is_data_accuracy_checked', 1)
->findAll();
->join('partner_quotation pq', 'pq.id = partner_policy.quotation_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.commission_amount > 0')
->where('partner_policy.is_data_accuracy_checked', 1);
$query = $this->PolicyModel
->select('partner_policy.policy_number as policy_no, partner_policy.id as policy_id, partner_policy.issued_date, partner_policy.commission_amount, pe.name as customer_name, pq.premium_amount, pi.id as invoice_id, pi.invoice_no')
->join(
'partner_enquiry pe',
'pe.id = partner_policy.enquiry_id AND pe.broker_id = ' . (int)$input['broker_id'],
'left'
)
->join('partner_quotation pq','pq.id = partner_policy.quotation_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.pos_id', $input['pos_id'])
->where('partner_policy.issued_date <=', date('Y-m-d', strtotime($input['issued_date'])))
->where('partner_policy.is_active', 1)
->where('partner_policy.commission_amount > 0')
->where('partner_policy.is_data_accuracy_checked', 1);
if (empty($invoice_id)) {
$query->where('pii.policy_id IS NULL');
} else {
$query->where('pi.id', $invoice_id);
}
// Apply agent_id filter (supports multiple agents)
if (!empty($input['agent_id'])) {
if (is_array($input['agent_id'])) {
$query->whereIn('pe.agent_id', $input['agent_id']);
} else {
$query->where('pe.agent_id', $input['agent_id']);
}
}
$data = $query->findAll();
// Apply date range filters
if (!empty($input['from_date'])) {
$query->where('partner_policy.issued_date >=', date('Y-m-d', strtotime($input['from_date'])));
}
if (!empty($input['to_date'])) {
$query->where('partner_policy.issued_date <=', date('Y-m-d', strtotime($input['to_date'])));
}
// Apply POS filter if provided
if (!empty($input['pos_id'])) {
$query->where('partner_policy.pos_id', $input['pos_id']);
}
// Filter based on invoice_id or policies not yet invoiced
if (empty($invoice_id)) {
$query->where('pii.policy_id IS NULL');
} else {
$query->where('pi.id', $invoice_id);
}
$data = $query->findAll();
// Calculate total commission
$total_commission = 0;
foreach ($data as $policy) {
$total_commission += $policy['commission_amount'];
}
return $this->respond([
'status' => 'success',
'code' => 200,
'previous' => $data_previous,
'data' => $data
'data' => $data,
'total_commission' => $total_commission,
'total_policies' => count($data)
], 200);
} catch (\Exception $e) {
@ -261,6 +280,73 @@ class InvoiceController extends ResourceController
}
}
// public function getCommissionRateList()
// {
// try {
// $input = $this->request->getJSON(true);
// if (empty($input['broker_id']) || empty($input['issued_date'])) {
// return $this->respond([ 'status' => 'failed', 'code' => 400, 'message'=> 'issued_date are required' ], 400);
// }
// $invoice_id = isset($input['invoice_id']) ? $input['invoice_id'] : '';
// $data_previous = $this->PolicyModel
// ->select('partner_policy.policy_number as policy_no,partner_policy.id as policy_id , partner_policy.issued_date, partner_policy.commission_amount, pe.name as customer_name , pq.premium_amount')
// ->join(
// 'partner_enquiry pe',
// 'pe.id = partner_policy.enquiry_id AND pe.broker_id = ' . (int)$input['broker_id'],
// 'left'
// )
// ->join('partner_quotation pq','pq.id = partner_policy.quotation_id ', 'left')
// // ->where('partner_policy.pos_id', $input['pos_id'])
// ->where('partner_policy.issued_date <=', date('Y-m-d', strtotime($input['issued_date'])))
// ->where('partner_policy.is_active', 1)
// ->where('partner_policy.is_data_accuracy_checked', 1)
// ->findAll();
// $query = $this->PolicyModel
// ->select('partner_policy.policy_number as policy_no, partner_policy.id as policy_id, partner_policy.issued_date, partner_policy.commission_amount, pe.name as customer_name, pq.premium_amount, pi.id as invoice_id, pi.invoice_no')
// ->join(
// 'partner_enquiry pe',
// 'pe.id = partner_policy.enquiry_id AND pe.broker_id = ' . (int)$input['broker_id'],
// 'left'
// )
// ->join('partner_quotation pq','pq.id = partner_policy.quotation_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.pos_id', $input['pos_id'])
// ->where('partner_policy.issued_date <=', date('Y-m-d', strtotime($input['issued_date'])))
// ->where('partner_policy.is_active', 1)
// ->where('partner_policy.commission_amount > 0')
// ->where('partner_policy.is_data_accuracy_checked', 1);
// if (empty($invoice_id)) {
// $query->where('pii.policy_id IS NULL');
// } else {
// $query->where('pi.id', $invoice_id);
// }
// $data = $query->findAll();
// return $this->respond([
// 'status' => 'success',
// 'code' => 200,
// 'previous' => $data_previous,
// 'data' => $data
// ], 200);
// } catch (\Exception $e) {
// return $this->respond([
// 'status' => 'failed',
// 'code' => 500,
// 'message'=> $e->getMessage()
// ], 500);
// }
// }