From 04e75e85b340a27140b268de626c537ef20fd158 Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Wed, 5 Feb 2025 09:48:31 +0530 Subject: [PATCH] FEAT_DYNAMIC_CLAIMS_REPORT_SRINIVAS --- app/Controllers/TicketController.php | 300 +++++++++++-------- app/Models/TicketMasterModel.php | 196 ++++++++++++ app/Views/claims_report_acc_manager_gmc.php | 169 ----------- app/Views/claims_report_acc_manager_gpa.php | 203 ------------- app/Views/claims_report_acc_manager_wise.php | 103 +++++++ app/Views/claims_report_tpa_wise.php | 205 +++---------- 6 files changed, 523 insertions(+), 653 deletions(-) delete mode 100644 app/Views/claims_report_acc_manager_gmc.php delete mode 100644 app/Views/claims_report_acc_manager_gpa.php create mode 100644 app/Views/claims_report_acc_manager_wise.php diff --git a/app/Controllers/TicketController.php b/app/Controllers/TicketController.php index d8af5e1c..a6b45f9e 100644 --- a/app/Controllers/TicketController.php +++ b/app/Controllers/TicketController.php @@ -867,20 +867,72 @@ class TicketController extends BaseController $policy_type = $received_data['policy_type']; // print_rr($received_data); if ($received_data['report_type'] == "acc_manager_wise_status"){ - - $viewData['account_manager_wise_data'] = $this->accountManagerWiseReport($policy_type,$fromDate,$toDate); + $viewData['policy_type'] = $received_data['policy_type']; + $viewData['account_manager_wise_data'] = $this->ticketMasterModel->accountManagerWiseReport($policy_type,$fromDate,$toDate); // print_rr($viewData); if ($policy_type == 1){ - $html = view('claims_report_acc_manager_gmc', $viewData); + $viewData['column_order'] = [ + 'ACM_NAME', 'ID NOT GENERATED', 'NON ID', 'CDA', 'INFORMATION REQUIRED', + 'UNDER PROCESS - CLAIM NO. UPDATION', 'UNDER PROCESS - INVESTIGATION STATUS', + 'UNDER PROCESS - QUERY DOCUMENT RECEIVED', 'APPROVED', 'PAYMENT INITIATED', + 'TOTAL' + ]; + $ordered_data = []; + + foreach ($viewData['account_manager_wise_data'] as $tpa_data) { + $temp = []; + foreach ($viewData['column_order'] as $key) { + $temp[$key] = isset($tpa_data[$key]) ? $tpa_data[$key] : 0; // Default to 0 if key is missing + } + $ordered_data[] = $temp; + } + $viewData['tpa_wise_data'] = $ordered_data; + $html = view('claims_report_acc_manager_wise', $viewData); return $this->respond(['status' => true, 'html' => $html], 200); }else{ - $html = view('claims_report_acc_manager_gpa', $viewData); + $viewData['column_order'] = [ + 'ACM_NAME', 'CLAIM INTIMATION', 'INTIMATION TO INSURER', 'CLIENT PENDING', + 'INSURER PENDING','INVESTIGATION','APPROVED','ON HOLD','TOTAL', 'NOT COVERED', + 'CLOSED', 'SETTLED', 'CLEARED_TOTAL' + ]; + $ordered_data = []; + + foreach ($viewData['account_manager_wise_data'] as $tpa_data) { + $temp = []; + foreach ($viewData['column_order'] as $key) { + $temp[$key] = isset($tpa_data[$key]) ? $tpa_data[$key] : 0; // Default to 0 if key is missing + } + $ordered_data[] = $temp; + } + $viewData['tpa_wise_data'] = $ordered_data; + $html = view('claims_report_acc_manager_wise', $viewData); return $this->respond(['status' => true, 'html' => $html], 200); } }elseif ($received_data['report_type'] == 'tpa_wise_status'){ - $viewData['tpa_wise_data'] = $this->tpaWiseReport($policy_type,$fromDate,$toDate); + $viewData['tpa_wise_data'] = $this->ticketMasterModel->tpaWiseReport($policy_type, $fromDate, $toDate); + + $viewData['column_order'] = [ + 'TPA_NAME', 'NON ID', 'ID NOT GENERATED', 'CDA', 'INFORMATION REQUIRED', + 'UNDER PROCESS - CLAIM NO. UPDATION', 'UNDER PROCESS - INVESTIGATION STATUS', + 'UNDER PROCESS - QUERY DOCUMENT RECEIVED', 'APPROVED', 'PAYMENT INITIATED', + 'TOTAL', 'SETTLED', 'CLOSED', 'CANCELLED', 'RETURNED', 'CLEARED_TOTAL' + ]; + + // Reorder data based on column order + $ordered_data = []; + + foreach ($viewData['tpa_wise_data'] as $tpa_data) { + $temp = []; + foreach ($viewData['column_order'] as $key) { + $temp[$key] = isset($tpa_data[$key]) ? $tpa_data[$key] : 0; // Default to 0 if key is missing + } + $ordered_data[] = $temp; + } + $viewData['tpa_wise_data'] = $ordered_data; + // $html = view('claims_report_tpa_wise', $viewData); + $html = view('claims_report_tpa_wise',$viewData); return $this->respond(['status' => true, 'html' => $html], 200); @@ -897,134 +949,134 @@ class TicketController extends BaseController } - public function accountManagerWiseReport($policy_type = null ,$start_date = null, $end_date = null){ + // public function accountManagerWiseReport($policy_type = null ,$start_date = null, $end_date = null){ - if ($policy_type == 1) { - $sql = "SELECT - u.first_name AS acc_manager_name, - COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = 1 THEN master.id END) AS id_not_generated, - COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = 1 THEN master.id END) AS non_id, - COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = 1 THEN master.id END) AS cda, - COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = 1 THEN master.id END) AS information_required, - COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = 1 THEN master.id END) AS under_process, - COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = 1 THEN master.id END) AS approved, - COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = 1 THEN master.id END) AS payment_initiated, - ( - COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = 1 THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = 1 THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = 1 THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = 1 THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = 1 THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = 1 THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = 1 THEN master.id END) - ) AS total - FROM - ticket_master master - JOIN - user_profiles u ON master.acm_id = u.id and u.is_active = 1 - JOIN - ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1 - WHERE - master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1 - GROUP BY - u.id; - "; - $result = $this->ticketMasterModel->query($sql)->getResultArray(); - // dd($result); + // if ($policy_type == 1) { + // $sql = "SELECT + // u.first_name AS acc_manager_name, + // COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = 1 THEN master.id END) AS id_not_generated, + // COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = 1 THEN master.id END) AS non_id, + // COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = 1 THEN master.id END) AS cda, + // COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = 1 THEN master.id END) AS information_required, + // COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = 1 THEN master.id END) AS under_process, + // COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = 1 THEN master.id END) AS approved, + // COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = 1 THEN master.id END) AS payment_initiated, + // ( + // COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = 1 THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = 1 THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = 1 THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = 1 THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = 1 THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = 1 THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = 1 THEN master.id END) + // ) AS total + // FROM + // ticket_master master + // JOIN + // user_profiles u ON master.acm_id = u.id and u.is_active = 1 + // JOIN + // ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1 + // WHERE + // master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1 + // GROUP BY + // u.id; + // "; + // $result = $this->ticketMasterModel->query($sql)->getResultArray(); + // // dd($result); - return $result; + // return $result; - }else{ - $sql = "SELECT u.first_name AS acc_manager_name, - COUNT(CASE WHEN tcs.claim_status = 'CLAIM INTIMATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS claim_intimation, - COUNT(CASE WHEN tcs.claim_status = 'INTIMATION TO INSURER' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS int_to_insurer, - COUNT(CASE WHEN tcs.claim_status = 'CLIENT PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS client_pending, - COUNT(CASE WHEN tcs.claim_status = 'INSURER PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS information_required, - COUNT(CASE WHEN tcs.claim_status = 'INVESTIGATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS investigation, - COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS approved, - COUNT(CASE WHEN tcs.claim_status = 'ON HOLD' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS on_hold, + // }else{ + // $sql = "SELECT u.first_name AS acc_manager_name, + // COUNT(CASE WHEN tcs.claim_status = 'CLAIM INTIMATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS claim_intimation, + // COUNT(CASE WHEN tcs.claim_status = 'INTIMATION TO INSURER' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS int_to_insurer, + // COUNT(CASE WHEN tcs.claim_status = 'CLIENT PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS client_pending, + // COUNT(CASE WHEN tcs.claim_status = 'INSURER PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS information_required, + // COUNT(CASE WHEN tcs.claim_status = 'INVESTIGATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS investigation, + // COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS approved, + // COUNT(CASE WHEN tcs.claim_status = 'ON HOLD' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS on_hold, - ( - COUNT(CASE WHEN tcs.claim_status = 'CLAIM INTIMATION' AND master.ticket_type_id = '$policy_type' THEN master.id END)+ - COUNT(CASE WHEN tcs.claim_status = 'INTIMATION TO INSURER' AND master.ticket_type_id = '$policy_type' THEN master.id END)+ - COUNT(CASE WHEN tcs.claim_status = 'CLIENT PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'INSURER PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'INVESTIGATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'ON HOLD' AND master.ticket_type_id = '$policy_type' THEN master.id END) - ) AS total1, - COUNT(CASE WHEN tcs.claim_status = 'NOT COVERED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS not_covered, - COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS closed, - COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS settled, - ( - COUNT(CASE WHEN tcs.claim_status = 'NOT COVERED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) - ) AS total2 - FROM - ticket_master master - JOIN - user_profiles u ON master.acm_id = u.id and u.is_active = 1 - JOIN - ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1 - WHERE - master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1 and master.ticket_type_id = '$policy_type' - GROUP BY - u.id; - "; - $result = $this->ticketMasterModel->query($sql)->getResultArray(); + // ( + // COUNT(CASE WHEN tcs.claim_status = 'CLAIM INTIMATION' AND master.ticket_type_id = '$policy_type' THEN master.id END)+ + // COUNT(CASE WHEN tcs.claim_status = 'INTIMATION TO INSURER' AND master.ticket_type_id = '$policy_type' THEN master.id END)+ + // COUNT(CASE WHEN tcs.claim_status = 'CLIENT PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'INSURER PENDING' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'INVESTIGATION' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'ON HOLD' AND master.ticket_type_id = '$policy_type' THEN master.id END) + // ) AS total1, + // COUNT(CASE WHEN tcs.claim_status = 'NOT COVERED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS not_covered, + // COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS closed, + // COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS settled, + // ( + // COUNT(CASE WHEN tcs.claim_status = 'NOT COVERED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + // ) AS total2 + // FROM + // ticket_master master + // JOIN + // user_profiles u ON master.acm_id = u.id and u.is_active = 1 + // JOIN + // ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1 + // WHERE + // master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1 and master.ticket_type_id = '$policy_type' + // GROUP BY + // u.id; + // "; + // $result = $this->ticketMasterModel->query($sql)->getResultArray(); - return $result; - } - } + // return $result; + // } + // } - public function tpaWiseReport($policy_type = null ,$start_date = null,$end_date = null ){ - // $policy_type = 1; - $sql = "SELECT - tpa.name AS tpa_name, - COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS id_not_generated, - COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS non_id, - COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS cda, - COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS information_required, - COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS under_process, - COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS approved, - COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS payment_initiated, - ( - COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) - ) AS total, - COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS closed, - COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS settled, - COUNT(CASE WHEN tcs.claim_status = 'RETURNED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS returned, - COUNT(CASE WHEN tcs.claim_status = 'REJECTED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS denied, - ( - COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type'THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'RETURNED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + - COUNT(CASE WHEN tcs.claim_status = 'REJECTED' AND master.ticket_type_id = '$policy_type' THEN master.id END) - ) AS total2 - FROM - ticket_master master - JOIN - tpa ON master.tpa_id = tpa.id and tpa.is_active = 1 - JOIN - ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1 - WHERE - master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1 - GROUP BY - tpa.id; + // public function tpaWiseReport($policy_type = null ,$start_date = null,$end_date = null ){ + // // $policy_type = 1; + // $sql = "SELECT + // tpa.name AS tpa_name, + // COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS id_not_generated, + // COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS non_id, + // COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS cda, + // COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS information_required, + // COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS under_process, + // COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS approved, + // COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS payment_initiated, + // ( + // COUNT(CASE WHEN tcs.claim_status = 'ID NOT GENERATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'NON ID' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'CDA' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'INFORMATION REQUIRED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status LIKE '%UNDER PROCESS%' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'APPROVED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'PAYMENT INITIATED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + // ) AS total, + // COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS closed, + // COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS settled, + // COUNT(CASE WHEN tcs.claim_status = 'RETURNED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS returned, + // COUNT(CASE WHEN tcs.claim_status = 'REJECTED' AND master.ticket_type_id = '$policy_type' THEN master.id END) AS denied, + // ( + // COUNT(CASE WHEN tcs.claim_status = 'CLOSED' AND master.ticket_type_id = '$policy_type'THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'SETTLED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'RETURNED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + + // COUNT(CASE WHEN tcs.claim_status = 'REJECTED' AND master.ticket_type_id = '$policy_type' THEN master.id END) + // ) AS total2 + // FROM + // ticket_master master + // JOIN + // tpa ON master.tpa_id = tpa.id and tpa.is_active = 1 + // JOIN + // ticket_claim_status tcs ON tcs.id = master.claim_status_id and tcs.is_active = 1 + // WHERE + // master.created_at <= '$end_date' and master.created_at >= '$start_date' and master.is_active = 1 + // GROUP BY + // tpa.id; - "; - $result = $this->ticketMasterModel->query($sql)->getResultArray(); + // "; + // $result = $this->ticketMasterModel->query($sql)->getResultArray(); - return $result; - } + // return $result; + // } } diff --git a/app/Models/TicketMasterModel.php b/app/Models/TicketMasterModel.php index def64345..6dd1a2a8 100644 --- a/app/Models/TicketMasterModel.php +++ b/app/Models/TicketMasterModel.php @@ -270,5 +270,201 @@ class TicketMasterModel extends Model return $data; } + + public function tpaWiseReport($policy_type = null ,$start_date = null, $end_date = null){ + $ticket_type_data_1 = ""; + $ticket_type_data_2 = ""; + + if (!empty($policy_type)) { + $ticket_type_data_1 = "AND ticket_type = $policy_type"; + $ticket_type_data_2 = "AND master.ticket_type_id = $policy_type"; + } + + // Fetch claim statuses dynamically + $statusQuery = "SELECT id, claim_status FROM ticket_claim_status WHERE is_active = 1 $ticket_type_data_1"; + $statusResult = $this->db->query($statusQuery)->getResultArray(); + + // Initialize dynamic query parts + $dynamicSelect = ''; + $dynamicTotal = ''; + $dynamicClosedTotal = ''; + + // Loop through each claim status and generate the CASE statements + foreach ($statusResult as $status) { + $dynamicSelect .= " + COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) AS `{$status['claim_status']}`, "; + + if (in_array($status['claim_status'], ['ID NOT GENERATED', 'NON ID', 'CDA', 'INFORMATION REQUIRED','UNDER PROCESS - CLAIM NO. UPDATION', + 'UNDER PROCESS - INVESTIGATION STATUS','UNDER PROCESS - QUERY DOCUMENT RECEIVED','APPROVED','PAYMENT INITIATED'])) { + $dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + "; + } + // Include in total count + // $dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + "; + + // Include only closed-related statuses in total2 count + if (in_array($status['claim_status'], ['CLOSED', 'SETTLED', 'RETURNED', 'REJECTED'])) { + $dynamicClosedTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + "; + } + } + + // Remove the trailing commas and `+` signs + $dynamicSelect = rtrim($dynamicSelect, ', '); + $dynamicTotal = rtrim($dynamicTotal, ' +'); + $dynamicClosedTotal = rtrim($dynamicClosedTotal, ' +'); + // print_rr($dynamicSelect); + // Construct the final SQL query + $sql = " + SELECT + tpa.name AS TPA_NAME, + $dynamicSelect, + ($dynamicTotal) AS TOTAL, + ($dynamicClosedTotal) AS CLEARED_TOTAL + FROM + ticket_master master + JOIN + tpa ON master.tpa_id = tpa.id AND tpa.is_active = 1 + WHERE + master.created_at BETWEEN '$start_date' AND '$end_date' + AND master.is_active = 1 + $ticket_type_data_2 + GROUP BY + tpa.id; + "; + + // Execute the query + $result = $this->db->query($sql)->getResultArray(); + + // print_rr($result);die(); + return $result; + + } + + public function accountManagerWiseReport($policy_type = null ,$start_date = null, $end_date = null){ + + if ($policy_type == 1) { + $ticket_type_data_1 = ""; + $ticket_type_data_2 = ""; + + if (!empty($policy_type)) { + $ticket_type_data_1 = "AND ticket_type = $policy_type"; + $ticket_type_data_2 = "AND master.ticket_type_id = $policy_type"; + } + + // Fetch claim statuses dynamically + $statusQuery = "SELECT id, claim_status FROM ticket_claim_status WHERE is_active = 1 $ticket_type_data_1"; + $statusResult = $this->db->query($statusQuery)->getResultArray(); + + // Initialize dynamic query parts + $dynamicSelect = ''; + $dynamicTotal = ''; + + // Loop through each claim status and generate the CASE statements + foreach ($statusResult as $status) { + $dynamicSelect .= " + COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) AS `{$status['claim_status']}`, "; + + + // Include in total count + $dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + "; + + // Include only closed-related statuses in total2 count + + } + + // Remove the trailing commas and `+` signs + $dynamicSelect = rtrim($dynamicSelect, ', '); + $dynamicTotal = rtrim($dynamicTotal, ' +'); + // print_rr($dynamicSelect); + // Construct the final SQL query + $sql = " + SELECT + user_profiles.first_name AS ACM_NAME, + $dynamicSelect, + ($dynamicTotal) AS TOTAL + FROM + ticket_master master + JOIN + user_profiles ON master.acm_id = user_profiles.id AND user_profiles.is_active = 1 + WHERE + master.created_at BETWEEN '$start_date' AND '$end_date' + AND master.is_active = 1 + $ticket_type_data_2 + GROUP BY + user_profiles.id; + "; + + $result = $this->db->query($sql)->getResultArray(); + // dd($result); + + return $result; + + + }else{ + $ticket_type_data_1 = ""; + $ticket_type_data_2 = ""; + + if (!empty($policy_type)) { + $ticket_type_data_1 = "AND ticket_type = $policy_type"; + $ticket_type_data_2 = "AND master.ticket_type_id = $policy_type"; + } + + // Fetch claim statuses dynamically + $statusQuery = "SELECT id, claim_status FROM ticket_claim_status WHERE is_active = 1 $ticket_type_data_1"; + $statusResult = $this->db->query($statusQuery)->getResultArray(); + + // Initialize dynamic query parts + $dynamicSelect = ''; + $dynamicTotal = ''; + $dynamicClosedTotal = ''; + + // Loop through each claim status and generate the CASE statements + foreach ($statusResult as $status) { + $dynamicSelect .= " + COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) AS `{$status['claim_status']}`, "; + + if (in_array($status['claim_status'], ['CLAIM INTIMATION', 'INTIMATION TO INSURER', 'CLIENT PENDING', 'INSURER PENDING','INVESTIGATION', + 'APPROVED','ON HOLD'])) { + $dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + "; + } + // Include in total count + // $dynamicTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + "; + + // Include only closed-related statuses in total2 count + if (in_array($status['claim_status'], ['CLOSED', 'SETTLED', 'NOT COVERED'])) { + $dynamicClosedTotal .= "COUNT(CASE WHEN master.claim_status_id = {$status['id']} THEN master.id END) + "; + } + } + + // Remove the trailing commas and `+` signs + $dynamicSelect = rtrim($dynamicSelect, ', '); + $dynamicTotal = rtrim($dynamicTotal, ' +'); + $dynamicClosedTotal = rtrim($dynamicClosedTotal, ' +'); + // print_rr($dynamicSelect); + // Construct the final SQL query + $sql = " + SELECT + user_profiles.first_name AS ACM_NAME, + $dynamicSelect, + ($dynamicTotal) AS TOTAL, + ($dynamicClosedTotal) AS CLEARED_TOTAL + FROM + ticket_master master + JOIN + user_profiles ON master.acm_id = user_profiles.id AND user_profiles.is_active = 1 + WHERE + master.created_at BETWEEN '$start_date' AND '$end_date' + AND master.is_active = 1 + $ticket_type_data_2 + GROUP BY + user_profiles.id; + "; + + // Execute the query + $result = $this->db->query($sql)->getResultArray(); + + // print_rr($result);die(); + return $result; + } + } } diff --git a/app/Views/claims_report_acc_manager_gmc.php b/app/Views/claims_report_acc_manager_gmc.php deleted file mode 100644 index b24b462b..00000000 --- a/app/Views/claims_report_acc_manager_gmc.php +++ /dev/null @@ -1,169 +0,0 @@ - - -
-
-
-
-
-

Insurer List

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account MangerID Not GeneratedNon-IDCDAInformation RequiredUnder ProcessApprovedPayment InitiatedTotal
Grand Total
-
-
-
-
- - diff --git a/app/Views/claims_report_acc_manager_gpa.php b/app/Views/claims_report_acc_manager_gpa.php deleted file mode 100644 index b1523e04..00000000 --- a/app/Views/claims_report_acc_manager_gpa.php +++ /dev/null @@ -1,203 +0,0 @@ - - -
-
-
-
-
-

Insurer List

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OPENCLEARED
Account MangerClaim IntimationIntimation to InsurerClient PendingInsurer PendingInvestigationApprovedOn HoldTotalNot CoveredClosedSettledTotal
Grand Total
-
-
-
-
- - diff --git a/app/Views/claims_report_acc_manager_wise.php b/app/Views/claims_report_acc_manager_wise.php new file mode 100644 index 00000000..a629a01c --- /dev/null +++ b/app/Views/claims_report_acc_manager_wise.php @@ -0,0 +1,103 @@ + + +
+
+
+
+
+

Account Manger Claim Status List

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + {$totals[$col_name]}"; + } + } + ?> + + +
OPENCLEARED
Grand Total
+
+
+
+
+ + diff --git a/app/Views/claims_report_tpa_wise.php b/app/Views/claims_report_tpa_wise.php index 3682ca00..0a3fc65a 100644 --- a/app/Views/claims_report_tpa_wise.php +++ b/app/Views/claims_report_tpa_wise.php @@ -1,24 +1,23 @@
@@ -26,7 +25,7 @@ table.dataTable tbody td {
-

Insurer List

+

TPA Claim Status List

@@ -34,63 +33,40 @@ table.dataTable tbody td { OPEN - CLEARED + CLEARED - TPA - ID Not Generated - Non-ID - CDA - Information Required - Under Process - Approved - Payment Initiated - Total - Closed - Settled - Returned - Denied - Total - + + + - + - - - - - - - - - - - - - - + + + - + Grand Total - - - - - - - - - - - - - - + {$totals[$col_name]}"; + } + } + ?> @@ -106,102 +82,17 @@ table.dataTable tbody td { if (ticketsTable.length) { ticketsTable.DataTable({ scrollX: true, - dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector + dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + + "<'row'<'col-sm-12'tr>>" + + "<'row'<'col-sm-5'i><'col-sm-7'p>>", buttons: [ - { - extend: 'csv', - text: 'CSV', - title: 'Insurer-Wise-Report-List', - }, - { - extend: 'excel', - text: 'Excel', - title: 'Insurer-Wise-Report-List', - exportOptions: { - orthogonal: 'sort' - }, - } + { extend: 'csv', text: 'CSV', title: 'Insurer-Wise-Report-List' }, + { extend: 'excel', text: 'Excel', title: 'Insurer-Wise-Report-List', exportOptions: { orthogonal: 'sort' } } ], - language: { - search: "_INPUT_", - searchPlaceholder: "Search..." - }, - paging: true, // Enable pagination - pageLength: 10, // Set default number of rows per page (optional) - ordering: false, - footerCallback: function(row, data, start, end, display) { - var api = this.api(); - - // Helper function to parse numbers - var parseNumber = function(value) { - return typeof value === 'string' ? - parseFloat(value.replace(/[\$,]/g, '')) : - typeof value === 'number' ? value : 0; - }; - - // Calculate total for each column - var total_id_not_generated = api.column(1).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - - var total_non_id = api.column(2).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - - var total_cda = api.column(3).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_information_required = api.column(4).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_under_process = api.column(5).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_approved = api.column(6).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_payment_initiated = api.column(7).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_of_total = api.column(8).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_closed = api.column(9).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_settled = api.column(10).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_returned = api.column(11).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_denied = api.column(12).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - var total_of_total2 = api.column(13).data().reduce(function(a, b) { - return parseNumber(a) + parseNumber(b); - }, 0); - - // Update the footer with totals - $(api.column(1).footer()).html(total_id_not_generated); - $(api.column(2).footer()).html(total_non_id); - $(api.column(3).footer()).html(total_cda); - $(api.column(4).footer()).html(total_information_required); - $(api.column(5).footer()).html(total_under_process); - $(api.column(6).footer()).html(total_approved); - $(api.column(7).footer()).html(total_payment_initiated); - $(api.column(8).footer()).html(total_of_total); - $(api.column(9).footer()).html(total_closed); - $(api.column(10).footer()).html(total_settled); - $(api.column(11).footer()).html(total_returned); - $(api.column(12).footer()).html(total_denied); - $(api.column(13).footer()).html(total_of_total2); - - - - } + language: { search: "_INPUT_", searchPlaceholder: "Search..." }, + paging: true, + pageLength: 10, + ordering: false }); } else { console.error("Table not found.");