Merge branch 'main' of bitbucket.org:jubilian/nhance_partner_be
This commit is contained in:
commit
c22810974a
@ -148,25 +148,28 @@ $routes->group('api', ['filter' => 'appSignature'], function ($routes) {
|
||||
$routes->get("dashboard/productivityDashboard", "DashboardController::productivityDashboard");
|
||||
|
||||
//DASHBOARD Season 1 EXPORT EXCEL (ManagerDashboard - staffLevelPendingSummaryData)
|
||||
$routes->get("dashboard/downloadStaffPendingSummaryExcel", "ExcelExportController::downloadStaffPendingSummaryExcel");
|
||||
$routes->get("dashboard/downloadStaffPendingSummaryExcelByID", "ExcelExportController::downloadStaffPendingSummaryExcelByID");
|
||||
$routes->get("dashboard/downloadExcelStaffPendingSummary", "ExcelExportController::downloadExcelStaffPendingSummary");
|
||||
$routes->get("dashboard/downloadExcelStaffPendingSummaryByID", "ExcelExportController::downloadExcelStaffPendingSummaryByID");
|
||||
|
||||
//DASHBOARD Season 2 EXPORT EXCEL (businessDashboard)
|
||||
$routes->get("dashboard/downloadBrokerPoliciesExcel", "ExcelExportController::downloadBrokerPoliciesExcel");
|
||||
$routes->get("dashboard/downloadInsurerPoliciesExcel", "ExcelExportController::downloadInsurerPoliciesExcel");
|
||||
$routes->get("dashboard/downloadProductPoliciesExcel", "ExcelExportController::downloadProductPoliciesExcel");
|
||||
$routes->get("dashboard/downloadExcelBroker", "ExcelExportController::downloadExcelBroker");
|
||||
$routes->get("dashboard/downloadExcelInsurer", "ExcelExportController::downloadExcelInsurer");
|
||||
$routes->get("dashboard/downloadExcelProduct", "ExcelExportController::downloadExcelProduct");
|
||||
|
||||
|
||||
//DASHBOARD Season 3 EXPORT EXCEL (partnerDashboard)
|
||||
$routes->get("dashboard/downloadT50AgentPoliciesExcel", "ExcelExportController::downloadT50AgentPoliciesExcel"); // whole agent but top 50
|
||||
$routes->get("dashboard/downloadAgentMonthlyPoliciesExcel", "ExcelExportController::downloadAgentMonthlyPoliciesExcel"); // particular Agent
|
||||
$routes->get("dashboard/downloadLowPremiumAgentExcel", "ExcelExportController::downloadLowPremiumAgentExcel");
|
||||
$routes->get("dashboard/downloadAgentsWithoutPoliciesExcel", "ExcelExportController::downloadAgentsWithoutPoliciesExcel");
|
||||
$routes->get("dashboard/downloadExcelLowPremium", "ExcelExportController::downloadExcelLowPremium");
|
||||
$routes->get("dashboard/downloadExcelPerformingAgentsByID", "ExcelExportController::downloadExcelPerformingAgentsByID");
|
||||
$routes->get("dashboard/downloadExcelPerformingAgentsTop50", "ExcelExportController::downloadExcelPerformingAgentsTop50");
|
||||
$routes->get("dashboard/downloadExcelWithoutPolicies", "ExcelExportController::downloadExcelWithoutPolicies");
|
||||
|
||||
//DASHBOARD Season 4 EXPORT EXCEL AS ZIP (partnerDashboard - 3Excel in Zip Folder)
|
||||
$routes->get("dashboard/downloadExcelAsZIP", "ExcelExportController::downloadExcelAsZIP");
|
||||
|
||||
//DASHBOARD Season 5 EXPORT EXCEL (productivityDashboard)
|
||||
$routes->get("dashboard/downloadStaffAndProductPoliciesExcel", "ExcelExportController::downloadStaffAndProductPoliciesExcel");
|
||||
$routes->get("dashboard/downloadExcelStaffAndProduct", "ExcelExportController::downloadExcelStaffAndProduct");
|
||||
|
||||
$routes->get('reports/endorsement-excel', 'PolicyReportController::downloadExcelEndorsement');
|
||||
|
||||
|
||||
|
||||
|
||||
@ -830,6 +830,8 @@ class DashboardController extends ResourceController
|
||||
|
||||
|
||||
$builder = $this->db->table('partner_policy pp');
|
||||
$fromDate = date('Y-m-d', strtotime('-10 days'));
|
||||
$toDate = date('Y-m-d');
|
||||
|
||||
$builder->select("
|
||||
pa.id AS agent_id,
|
||||
@ -842,10 +844,10 @@ class DashboardController extends ResourceController
|
||||
$builder->join('partner_agent pa', 'pp.agent_id = pa.id', 'inner');
|
||||
$builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left');
|
||||
|
||||
$builder->where("MONTH(pp.issued_date) = MONTH('$customDate')", null, false);
|
||||
$builder->where("YEAR(pp.issued_date) = YEAR('$customDate')", null, false);
|
||||
$builder->where('pp.issued_date >=', $fromDate);
|
||||
$builder->where('pp.issued_date <=', $toDate);
|
||||
|
||||
$builder->where('pp.manager_id',$manager_id);
|
||||
// $builder->where('pp.manager_id',$manager_id);
|
||||
|
||||
$builder->groupBy(['pa.id']);
|
||||
$builder->orderBy('policy_count', 'DESC');
|
||||
@ -856,6 +858,7 @@ class DashboardController extends ResourceController
|
||||
}
|
||||
|
||||
$result = $builder->get()->getResultArray();
|
||||
// echo $this->db->getLastQuery()->getQuery();die;
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
@ -31,6 +31,8 @@ class EnquiryController extends ResourceController
|
||||
}
|
||||
|
||||
// List all enquiries
|
||||
// This query is also copied in PolicyReportController::downloadExcel(). Please apply the same changes there as well.
|
||||
// to refer this API URI = enquiry/enquiryList?manager_id=1&only_policy_data=true&from_date=18-12-2025&to_date=02-01-2026&staff_id=
|
||||
public function enquiryList()
|
||||
{
|
||||
try {
|
||||
|
||||
@ -111,7 +111,7 @@ class ExcelExportController extends ResourceController
|
||||
}
|
||||
|
||||
// 1) Broker generate the Excel file
|
||||
public function BrokerWiseExcel()
|
||||
public function downloadExcelBroker()
|
||||
{
|
||||
try{
|
||||
$managerId = $this->request->getGet('manager_id');
|
||||
@ -177,12 +177,7 @@ class ExcelExportController extends ResourceController
|
||||
$monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month'));
|
||||
$brokerName = $finalData[0][11] ?? '';
|
||||
|
||||
if (empty($brokerName) || $brokerName === 'N/A') {
|
||||
$fileName = "Broker_Policies_Details_{$monthName}.xlsx";
|
||||
} else {
|
||||
$cleanName = str_replace(' ', '_', strtolower(trim($brokerName)));
|
||||
$fileName = "{$cleanName}_Policies_Details_{$monthName}.xlsx";
|
||||
}
|
||||
$fileName = "Broker_Policies_Details_{$monthName}.xlsx";
|
||||
$titleName = str_replace(['_', '.xlsx'], [' ', ''], $fileName);
|
||||
|
||||
|
||||
@ -239,7 +234,7 @@ class ExcelExportController extends ResourceController
|
||||
}
|
||||
|
||||
// 2) Product generate the Excel file
|
||||
public function ProductWiseExcel()
|
||||
public function downloadExcelProduct()
|
||||
{
|
||||
try{
|
||||
$managerId = $this->request->getGet('manager_id');
|
||||
@ -309,12 +304,8 @@ class ExcelExportController extends ResourceController
|
||||
$monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month'));
|
||||
$vehicleType = $finalData[0][11] ?? '';
|
||||
|
||||
if (empty($vehicleType) || $vehicleType === 'N/A') {
|
||||
$fileName = "Product_Policies_Details_{$monthName}.xlsx";
|
||||
} else {
|
||||
$cleanName = str_replace(' ', '_', strtolower(trim($vehicleType)));
|
||||
$fileName = "{$cleanName}_Policies_Details_{$monthName}.xlsx";
|
||||
}
|
||||
|
||||
$fileName = "Product_Policies_Details_{$monthName}.xlsx";
|
||||
$titleName = str_replace(['_', '.xlsx'], [' ', ''], $fileName);
|
||||
|
||||
// --- CALL CENTRALIZED FUNCTION ---
|
||||
@ -367,7 +358,7 @@ class ExcelExportController extends ResourceController
|
||||
}
|
||||
|
||||
// 3) Insurer generate the Excel file
|
||||
public function InsurerWiseExcel()
|
||||
public function downloadExcelInsurer()
|
||||
{
|
||||
try{
|
||||
$managerId = $this->request->getGet('manager_id');
|
||||
@ -443,12 +434,8 @@ class ExcelExportController extends ResourceController
|
||||
$monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month'));
|
||||
$InsurerName = $finalData[0][8] ?? "" ;
|
||||
|
||||
if (empty($InsurerName) || $InsurerName === 'N/A') {
|
||||
$fileName = "Insurer_Policies_Details_{$monthName}.xlsx";
|
||||
} else {
|
||||
$cleanName = str_replace(' ', '_', strtolower(trim($InsurerName)));
|
||||
$fileName = "{$cleanName}_Policies_Details_{$monthName}.xlsx";
|
||||
}
|
||||
|
||||
$fileName = "Insurer_Policies_Details_{$monthName}.xlsx";
|
||||
$titleName = str_replace(['_', '.xlsx'], [' ', ''], $fileName);
|
||||
|
||||
// --- CALL CENTRALIZED FUNCTION ---
|
||||
@ -684,13 +671,7 @@ class ExcelExportController extends ResourceController
|
||||
|
||||
$PartnerName = $finalData[0][11] ?? '';
|
||||
|
||||
if (empty($PartnerName) || $PartnerName === 'N/A') {
|
||||
$fileName = 'Performing_Partner_Policy_Details.xlsx';
|
||||
} else {
|
||||
$cleanName = str_replace(' ', '_', strtolower(trim($PartnerName)));
|
||||
$cleanName = ucwords($cleanName);
|
||||
$fileName = "Performing_Partner_({$cleanName})_Policy_Details.xlsx";
|
||||
}
|
||||
$fileName = 'Performing_Partner_Policy_Details.xlsx';
|
||||
$titleName = str_replace(['_', '.xlsx'], [' ', ''], $fileName);
|
||||
|
||||
// --- CALL CENTRALIZED FUNCTION ---
|
||||
@ -1025,14 +1006,7 @@ class ExcelExportController extends ResourceController
|
||||
|
||||
|
||||
$monthName = ($month === 'current') ? date('M_Y') : date('M_Y', strtotime('-1 month'));
|
||||
|
||||
$cleanExec = str_replace(' ', '_', strtolower(trim($executiveName)));
|
||||
$cleanVeh = str_replace(' ', '_', strtolower(trim($vehicleType)));
|
||||
|
||||
$parts = array_filter([$cleanExec, $cleanVeh]);
|
||||
$prefix = !empty($parts) ? implode('_', $parts) . '_' : 'Staff_Product_';
|
||||
|
||||
$fileName = $prefix . "Policies_Details_" . $monthName . ".xlsx";
|
||||
$fileName = "Sales_Executive_Product_Wise_" . $monthName . ".xlsx";
|
||||
$titleName = str_replace(['_', '.xlsx'], [' ', ''], $fileName);
|
||||
|
||||
$this->streamExcelFile($header,$finalData,$titleName,$fileName,true);
|
||||
@ -1424,6 +1398,7 @@ class ExcelExportController extends ResourceController
|
||||
{
|
||||
try{
|
||||
$managerId = $this->request->getGet('manager_id');
|
||||
$search = $this->request->getGet('search');
|
||||
|
||||
|
||||
// --- ADDED VALIDATION (Simplified logic for clarity) ---
|
||||
@ -1433,7 +1408,7 @@ class ExcelExportController extends ResourceController
|
||||
return $this->response->setJSON(['status' => 'error', 'code' => 400, 'data' => [], 'message' => 'Missing required parameters', 'ref' => $ref])->setStatusCode(200);
|
||||
}
|
||||
|
||||
$data = $this->getDataEndorsement($managerId);
|
||||
$data = $this->getDataEndorsement($managerId,$search);
|
||||
|
||||
|
||||
if (empty($data)) {
|
||||
@ -1906,7 +1881,8 @@ class ExcelExportController extends ResourceController
|
||||
$data = [];
|
||||
|
||||
try {
|
||||
$customDate = date('Y-m-d');
|
||||
$fromDate = date('Y-m-d', strtotime('-10 days'));
|
||||
$toDate = date('Y-m-d');
|
||||
|
||||
$builder = $this->db->table('partner_policy pp');
|
||||
|
||||
@ -1920,8 +1896,11 @@ class ExcelExportController extends ResourceController
|
||||
$builder->join('partner_agent pa', 'pp.agent_id = pa.id', 'inner');
|
||||
$builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left');
|
||||
|
||||
$builder->where("MONTH(pp.issued_date) = MONTH('$customDate')", null, false);
|
||||
$builder->where("YEAR(pp.issued_date) = YEAR('$customDate')", null, false);
|
||||
// $builder->where("MONTH(pp.issued_date) = MONTH('$customDate')", null, false);
|
||||
// $builder->where("YEAR(pp.issued_date) = YEAR('$customDate')", null, false);
|
||||
$builder->where('pp.issued_date >=', $fromDate);
|
||||
$builder->where('pp.issued_date <=', $toDate);
|
||||
|
||||
|
||||
$builder->where('pp.manager_id',$manager_id);
|
||||
|
||||
@ -2335,7 +2314,7 @@ class ExcelExportController extends ResourceController
|
||||
}
|
||||
|
||||
|
||||
private function getDataEndorsement($managerId): array
|
||||
private function getDataEndorsement($managerId, $search = ''): array
|
||||
{
|
||||
try {
|
||||
|
||||
@ -2354,31 +2333,63 @@ class ExcelExportController extends ResourceController
|
||||
per.endorsement_description AS remarks,
|
||||
CONCAT('₹ ', FORMAT(per.endorsement_premium, 2, 'en_IN')) AS premium_amount,
|
||||
per.endorsement_premium AS raw_premium
|
||||
FROM partner_endorsement_request AS per
|
||||
FROM partner_endorsement_request per
|
||||
LEFT JOIN partner_policy pp ON pp.agent_id = per.agent_id
|
||||
LEFT JOIN partner_enquiry pe ON pe.agent_id = per.agent_id
|
||||
LEFT JOIN partner_agent pa ON pa.id = per.agent_id
|
||||
LEFT JOIN partner_staff ps ON ps.id = pe.assigned_to
|
||||
LEFT JOIN insurers I ON I.id = pe.insurer_id
|
||||
LEFT JOIN partner_endorsement_type_master petm ON petm.id = per.endorsement_type
|
||||
WHERE per.manager_id = :manager_id:
|
||||
AND per.is_active = 1
|
||||
GROUP BY per.id";
|
||||
WHERE per.manager_id = ?
|
||||
AND per.is_active = 1";
|
||||
|
||||
$bindings = [$managerId];
|
||||
|
||||
if (!empty($search)) {
|
||||
|
||||
$searchTerm = '%' . strtolower(trim($search)) . '%';
|
||||
|
||||
$sql .= " AND (
|
||||
LOWER(per.policy_from) LIKE ? OR
|
||||
LOWER(per.status) LIKE ? OR
|
||||
LOWER(pe.reg_no) LIKE ? OR
|
||||
LOWER(I.name) LIKE ? OR
|
||||
LOWER(pp.policy_number) LIKE ? OR
|
||||
LOWER(petm.endorsement_type) LIKE ? OR
|
||||
LOWER(per.endorsement_no) LIKE ?
|
||||
)";
|
||||
|
||||
for ($i = 0; $i < 7; $i++) {
|
||||
$bindings[] = $searchTerm;
|
||||
}
|
||||
}
|
||||
|
||||
// GROUP BY must be LAST
|
||||
$sql .= " GROUP BY per.id";
|
||||
|
||||
$query = $this->db->query($sql, $bindings);
|
||||
$results = $query->getResultArray();
|
||||
|
||||
// Convert associative rows to indexed rows (Excel-friendly)
|
||||
$data = [];
|
||||
foreach ($results as $row) {
|
||||
$data[] = array_values($row);
|
||||
}
|
||||
// foreach ($results as $row) {
|
||||
// foreach ($row as $key => $value) {
|
||||
// if ($value === null || $value === '') {
|
||||
// $row[$key] = '-';
|
||||
// }
|
||||
// }
|
||||
// $data[] = array_values($row);
|
||||
// }
|
||||
|
||||
|
||||
$query = $this->db->query($sql, ['manager_id' => $managerId]);
|
||||
|
||||
$results = $query->getResultArray();
|
||||
$data = [];
|
||||
foreach ($results as $row) {
|
||||
$data[] = array_values($row);
|
||||
}
|
||||
|
||||
return $data;
|
||||
return $data;
|
||||
|
||||
} catch (\Exception $e) {
|
||||
log_message('error', 'Excel Fetch Error: ' . $e->getMessage());
|
||||
throw $e;
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -30,64 +30,180 @@ class PolicyReportController extends Controller
|
||||
}
|
||||
|
||||
// -----------------------------
|
||||
// QUERY (100% Excel-aligned)
|
||||
// QUERY (100% Excel-aligned) // Old Query Don't Delete It. Any Doubt ask MG Bhai
|
||||
// -----------------------------
|
||||
$data = $db->query("
|
||||
SELECT
|
||||
pos.pos_code AS pos_code,
|
||||
pos.name AS pos_name,
|
||||
pa.agent_code AS ref_code,
|
||||
pp.created_on AS inward_date,
|
||||
pa.name AS partner_name,
|
||||
ins.short_name AS insurer,
|
||||
pp.policy_number,
|
||||
pp.insured_name,
|
||||
pq.insurance_plan_type_id AS plan_type,
|
||||
pp.vehicle_type AS product,
|
||||
// $data = $db->query("
|
||||
// SELECT
|
||||
// pos.pos_code AS pos_code,
|
||||
// pos.name AS pos_name,
|
||||
// pa.agent_code AS ref_code,
|
||||
// pp.created_on AS inward_date,
|
||||
// pa.name AS partner_name,
|
||||
// ins.short_name AS insurer,
|
||||
// pp.policy_number,
|
||||
// pp.insured_name,
|
||||
// pq.insurance_plan_type_id AS plan_type,
|
||||
// pp.vehicle_type AS product,
|
||||
|
||||
pp.od AS od,
|
||||
pp.tp AS tp,
|
||||
(IFNULL(pp.od,0) + IFNULL(pp.tp,0)) AS net_amount,
|
||||
// pp.od AS od,
|
||||
// pp.tp AS tp,
|
||||
// (IFNULL(pp.od,0) + IFNULL(pp.tp,0)) AS net_amount,
|
||||
|
||||
(IFNULL(pp.cgst,0) + IFNULL(pp.sgst,0) + IFNULL(pp.igst,0)) AS service_tax,
|
||||
// (IFNULL(pp.cgst,0) + IFNULL(pp.sgst,0) + IFNULL(pp.igst,0)) AS service_tax,
|
||||
|
||||
(IFNULL(pp.od,0) + IFNULL(pp.tp,0)
|
||||
+ IFNULL(pp.cgst,0) + IFNULL(pp.sgst,0) + IFNULL(pp.igst,0)
|
||||
) AS total_amount,
|
||||
// (IFNULL(pp.od,0) + IFNULL(pp.tp,0)
|
||||
// + IFNULL(pp.cgst,0) + IFNULL(pp.sgst,0) + IFNULL(pp.igst,0)
|
||||
// ) AS total_amount,
|
||||
|
||||
pm.value AS payment_mode,
|
||||
CONCAT(pp.rto_state_code,'-',pp.rto_city_code) AS rto_loc,
|
||||
NULL AS ncb_percent,
|
||||
pp.end_date AS expire_date,
|
||||
// pm.value AS payment_mode,
|
||||
// CONCAT(pp.rto_state_code,'-',pp.rto_city_code) AS rto_loc,
|
||||
// NULL AS ncb_percent,
|
||||
// pp.end_date AS expire_date,
|
||||
|
||||
pb.short_name AS broker_code,
|
||||
ps.name AS assigned_to,
|
||||
pp.manager_id AS sales_manager,
|
||||
pa.name AS sales_executive,
|
||||
pa.mobile AS contact_no,
|
||||
pos.address,
|
||||
pos.pincode,
|
||||
// pb.short_name AS broker_code,
|
||||
// ps.name AS assigned_to,
|
||||
// pp.manager_id AS sales_manager,
|
||||
// pa.name AS sales_executive,
|
||||
// pa.mobile AS contact_no,
|
||||
// pos.address,
|
||||
// pos.pincode,
|
||||
|
||||
pe.status AS booking_status,
|
||||
pe.created_on AS booking_date,
|
||||
pe.id AS booking_ref_no,
|
||||
// pe.status AS booking_status,
|
||||
// pe.created_on AS booking_date,
|
||||
// pe.id AS booking_ref_no,
|
||||
|
||||
pp.agent_retention_rate AS grid_percent,
|
||||
pp.commission_amount AS grid_amount,
|
||||
pe.remarks AS remark
|
||||
FROM partner_policy pp
|
||||
LEFT JOIN partner_agent pa ON pa.id = pp.agent_id
|
||||
LEFT JOIN partner_pos pos ON pos.id = pa.pos_id
|
||||
LEFT JOIN partner_quotation pq ON pq.id = pp.quotation_id
|
||||
LEFT JOIN insurers ins ON ins.id = pq.insurer_id
|
||||
LEFT JOIN partner_payment_mode_master pm ON pm.id = pq.payment_mode_id
|
||||
LEFT JOIN partner_enquiry pe ON pe.id = pp.enquiry_id
|
||||
LEFT JOIN partner_staff ps ON ps.id = pe.assigned_to
|
||||
LEFT JOIN partner_brokers pb ON pb.id = pe.broker_id
|
||||
WHERE pp.manager_id = ?
|
||||
AND pp.issued_date BETWEEN ? AND ?
|
||||
ORDER BY pp.created_on DESC
|
||||
", [$managerId, $fromDate, $toDate])->getResultArray();
|
||||
// pp.agent_retention_rate AS grid_percent,
|
||||
// pp.commission_amount AS grid_amount,
|
||||
// pe.remarks AS remark
|
||||
// FROM partner_policy pp
|
||||
// LEFT JOIN partner_agent pa ON pa.id = pp.agent_id
|
||||
// LEFT JOIN partner_pos pos ON pos.id = pa.pos_id
|
||||
// LEFT JOIN partner_quotation pq ON pq.id = pp.quotation_id
|
||||
// LEFT JOIN insurers ins ON ins.id = pq.insurer_id
|
||||
// LEFT JOIN partner_payment_mode_master pm ON pm.id = pq.payment_mode_id
|
||||
// LEFT JOIN partner_enquiry pe ON pe.id = pp.enquiry_id
|
||||
// LEFT JOIN partner_staff ps ON ps.id = pe.assigned_to
|
||||
// LEFT JOIN partner_brokers pb ON pb.id = pe.broker_id
|
||||
// WHERE pp.manager_id = ?
|
||||
// AND pp.issued_date BETWEEN ? AND ?
|
||||
// ORDER BY pp.created_on DESC
|
||||
// ", [$managerId, $fromDate, $toDate])->getResultArray();
|
||||
|
||||
// New Query
|
||||
// This query is copied from enquiryList() in EnquiryController
|
||||
// to refer this API URI = enquiry/enquiryList?manager_id=1&only_policy_data=true&from_date=18-12-2025&to_date=02-01-2026&staff_id=
|
||||
|
||||
$sql = "SELECT
|
||||
pos.pos_code AS pos_code,
|
||||
pos.name AS pos_name,
|
||||
pa.agent_code AS ref_code,
|
||||
CASE
|
||||
WHEN pp.created_on IS NULL
|
||||
OR pp.created_on = '0000-00-00 00:00:00'
|
||||
THEN 'N/A'
|
||||
ELSE DATE_FORMAT(pp.created_on, '%d-%m-%Y %h:%i %p')
|
||||
END AS inward_date,
|
||||
pa.name AS partner_name,
|
||||
ins.short_name AS insurer,
|
||||
pp.policy_number,
|
||||
pp.insured_name,
|
||||
pq.insurance_plan_type_id AS plan_type,
|
||||
pp.vehicle_type AS product,
|
||||
CASE
|
||||
WHEN pp.od IS NULL OR pp.od = '' THEN 0
|
||||
ELSE pp.od
|
||||
END AS od,
|
||||
CASE
|
||||
WHEN pp.tp IS NULL OR pp.tp = '' THEN 0
|
||||
ELSE pp.tp
|
||||
END AS tp,
|
||||
(IFNULL(pp.od,0) + IFNULL(pp.tp,0)) AS net_amount,
|
||||
(IFNULL(pp.cgst,0) + IFNULL(pp.sgst,0) + IFNULL(pp.igst,0))
|
||||
AS service_tax,
|
||||
(IFNULL(pp.od,0) + IFNULL(pp.tp,0) + IFNULL(pp.cgst,0) + IFNULL(pp.sgst,0) + IFNULL(pp.igst,0))
|
||||
AS total_amount,
|
||||
pm.value AS payment_mode,
|
||||
CONCAT(pp.rto_state_code,'-',pp.rto_city_code) AS rto_loc,
|
||||
CASE
|
||||
WHEN pp.end_date IS NULL
|
||||
OR pp.end_date = '0000-00-00 00:00:00'
|
||||
THEN 'N/A'
|
||||
ELSE DATE_FORMAT(pp.end_date, '%d-%m-%Y %h:%i %p')
|
||||
END AS expire_date,
|
||||
NULL AS ncb_percent,
|
||||
pb.short_name AS broker_code,
|
||||
ps.name AS assigned_to,
|
||||
ps2.name AS sales_manager,
|
||||
pse.name AS sales_executive,
|
||||
pse.mobile AS contact_no,
|
||||
pos.address,
|
||||
pos.pincode,
|
||||
pe.status AS booking_status,
|
||||
CASE
|
||||
WHEN pe.created_on IS NULL
|
||||
OR pe.created_on = '0000-00-00 00:00:00'
|
||||
THEN 'N/A'
|
||||
ELSE DATE_FORMAT(pe.created_on, '%d-%m-%Y %h:%i %p')
|
||||
END AS booking_date,
|
||||
pe.id AS booking_ref_no,
|
||||
pp.agent_retention_rate AS grid_percent,
|
||||
pp.commission_amount AS grid_amount,
|
||||
pe.remarks AS remark
|
||||
FROM partner_enquiry pe
|
||||
LEFT JOIN partner_agent pa ON pa.id = pe.agent_id
|
||||
LEFT JOIN partner_staff ps ON ps.id = pe.assigned_to
|
||||
LEFT JOIN partner_quotation pq ON pq.enquiry_id = pe.id AND pq.status = 'Accepted'
|
||||
LEFT JOIN insurers ins ON ins.id = pe.insurer_id
|
||||
LEFT JOIN partner_policy pp ON pp.quotation_id = pq.id
|
||||
LEFT JOIN partner_payment_mode_master pm ON pm.id = pq.payment_mode_id
|
||||
LEFT JOIN partner_pos pos ON pos.id = pa.pos_id
|
||||
LEFT JOIN partner_sales_executive pse ON pse.id = pa.sales_executive_id
|
||||
LEFT JOIN partner_staff ps2 ON ps2.id = pse.manager_id
|
||||
LEFT JOIN partner_brokers pb ON pb.id = pe.broker_id
|
||||
WHERE pe.is_active = 1
|
||||
AND pe.is_quick_quote = 0
|
||||
AND pp.id IS NOT NULL
|
||||
AND pp.created_on BETWEEN ? AND ?
|
||||
AND pe.manager_id = ?";
|
||||
|
||||
$bindings = [$fromDate, $toDate, $managerId];
|
||||
|
||||
$search = $this->request->getGet('search');
|
||||
|
||||
if (!empty($search)) {
|
||||
|
||||
$searchTerm = '%' . strtolower(trim($search)) . '%';
|
||||
|
||||
$sql .= " AND (
|
||||
LOWER(ps.name) LIKE ?
|
||||
OR LOWER(pa.name) LIKE ?
|
||||
OR LOWER(ins.short_name) LIKE ?
|
||||
OR LOWER(pe.reg_no) LIKE ?
|
||||
OR LOWER(pp.insured_name) LIKE ?
|
||||
OR CAST(pp.premium_amount AS CHAR) LIKE ?
|
||||
OR LOWER(pm.value) LIKE ?
|
||||
OR LOWER(pp.policy_number) LIKE ?
|
||||
)";
|
||||
|
||||
// Bind search term 8 times
|
||||
for ($i = 0; $i < 8; $i++) {
|
||||
$bindings[] = $searchTerm;
|
||||
}
|
||||
|
||||
// YES / NO search support
|
||||
if (strtolower($search) === 'yes') {
|
||||
$sql .= " OR pp.is_bds_pushed = 1";
|
||||
} elseif (strtolower($search) === 'no') {
|
||||
$sql .= " OR pp.is_bds_pushed = 0";
|
||||
}
|
||||
}
|
||||
|
||||
// ORDER BY must be LAST
|
||||
$sql .= " ORDER BY pe.created_on DESC";
|
||||
|
||||
$query = $db->query($sql, $bindings);
|
||||
|
||||
$data = $query->getResultArray();
|
||||
|
||||
// -----------------------------
|
||||
// EXCEL GENERATION
|
||||
@ -97,11 +213,11 @@ class PolicyReportController extends Controller
|
||||
|
||||
// EXACT HEADER FROM YOUR EXCEL
|
||||
$headers = [
|
||||
'POS CODE','POS NAME','REFF CODE','Inward Date','PARTNER NAME',
|
||||
'Insurer','Policy No','Issured Name','PLAN TYPE','Product',
|
||||
'POS CODE','POS NAME','REFF CODE','INWARD DATE','PARTNER NAME',
|
||||
'INSURER','POLICY NO','ISSURED NAME','PLAN TYPE','PRODUCT',
|
||||
'A (OD)','B (TP)','A+B (NET)','S.TAX','TOTAL',
|
||||
'PAYMENT MODE','RTO LOC.','NCB %','Expire Date','BROKER CODE',
|
||||
'Assigned To','SALES MANAGER','SALES EXECUTIVE','CONTACT NO',
|
||||
'ASSIDNED TO','SALES MANAGER','SALES EXECUTIVE','CONTACT NO',
|
||||
'ADDRESS','PIN CODE','BOOKING STATUS','DATE OF BOOKING',
|
||||
'BOOKING REF NO','GRID %','GRID AMT','REMARK'
|
||||
];
|
||||
|
||||
Loading…
Reference in New Issue
Block a user