diff --git a/app/Config/Routes.php b/app/Config/Routes.php index f6746f2d..a7e41f8f 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -428,6 +428,7 @@ $routes->group("policy_tranction", ["filter" => "authMVC"], function ($routes) { $routes->group("report", ["filter" => "authMVC"], function ($routes) { $routes->match(['get', 'post'],"list", "PolicyTransactionController::reportBDS"); + $routes->match(['get', 'post'],"listNew", "PolicyTransactionController::reportBDSNew"); $routes->get("report-varience-list", "PolicyTransactionController::reportVarience"); $routes->get("report-business-list", "PolicyTransactionController::reportBusinessList"); $routes->get("report-finance-list", "PolicyTransactionController::reportFinanceList"); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index bcadb66d..e09c74ec 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -518,8 +518,8 @@ class ClientController extends AdminController public function updateEmpAndPolicyStatus() { - $return = $this->clientPolicyModel->updateStatus(); + return $return; $this->myLogger->logme('error', 'Client Policy Status Update Count: {data}', ['data' => $return['client']]); $this->myLogger->logme('error', 'Employee Policy Status Update Count: {data}', ['data' => $return['emp']]); } @@ -1613,7 +1613,7 @@ class ClientController extends AdminController if ($update) { - $policy_transaction_update = $this->deactivatePolicyTransactionsPolicy($id); + // $policy_transaction_update = $this->deactivatePolicyTransactionsPolicy($id); return $this->respond(['status' => true, 'code' => 200], 200); } else { @@ -4816,6 +4816,7 @@ class ClientController extends AdminController 'vehicle_no' => $data['vehicle_no'], 'type' => $data['type'], 'rc' => $data['rc'], + 'rto_id' => $data['rto_id'], 'branch_id' => $branch_insert, 'owner' => $client_insert, ]; @@ -4861,6 +4862,7 @@ class ClientController extends AdminController 'vehicle_no' => $data['vehicle_no'], 'type' => $data['type'], 'rc' => $data['rc'], + 'rto_id' => $data['rto_id'], 'branch_id' => $data['branch_id'] ?? null, 'owner' => $data['owner'], ]; @@ -5064,10 +5066,12 @@ class ClientController extends AdminController ->where('policy_no', $policy_no) ->countAllResults(); + $client_policy_data = $this->clientPolicyModel->where('is_active', 1)->where('policy_status', 1)->where('policy_no', trim($policy_no))->first(); + if ($data > 0) { - return $this->respond(['status' => true, 'message' => 'This policy number is already linked to another client', 'data' => $data, 'code' => 409, 'received_data' => $received_data], 200); + return $this->respond(['status' => true, 'message' => 'This policy number is already linked to another client', 'data' => $data, 'code' => 409, 'received_data' => $received_data, 'client_policy_id' => $client_policy_data['id'] ?? null], 200); } else { - return $this->respond(['status' => false, 'message' => 'No Data Found', 'code' => 404, 'received_data' => $received_data], 200); + return $this->respond(['status' => false, 'message' => 'No Data Found', 'code' => 404, 'received_data' => $received_data, 'client_policy_id' => $client_policy_data['id'] ?? null], 200); } } diff --git a/app/Controllers/DashboardController.php b/app/Controllers/DashboardController.php index 73c2e31a..369f9444 100755 --- a/app/Controllers/DashboardController.php +++ b/app/Controllers/DashboardController.php @@ -225,20 +225,23 @@ class DashboardController extends AdminController $pendingActionsController = new PendingActionsController; $pendingActionsData = $pendingActionsController->getPendingActionsForDashBoard(); - $businessTeamData = $this->policyTransactionModel->getBusinessReportList(); - $financeTeamData = $this->policyTransactionModel->getFinanceReportList(); - $businessTeamStatusData = $this->data_construct_for_bds($businessTeamData); - $financeTeamStatusData = $this->data_construct_for_bds($financeTeamData); + //BDS dashboard data + // $businessTeamData = $this->policyTransactionModel->getBusinessReportList(); + // $financeTeamData = $this->policyTransactionModel->getFinanceReportList(); + // $businessTeamStatusData = $this->data_construct_for_bds($businessTeamData); + // $financeTeamStatusData = $this->data_construct_for_bds($financeTeamData); + $businessTeamData = []; + $financeTeamData = []; + $businessTeamStatusData = []; + $financeTeamStatusData = []; $data['client_branch_emp_list'] = $results; $session = \Config\Services::session(); $session->set('enrollment_data', json_encode($data)); - // echo "
";
             $data['pendingActionsData'] = $pendingActionsData;
             $data['businessTeamCount'] = count($businessTeamData) ?? 0;
-            // dd($businessTeamData);
             $data['financeTeamCount'] = count($financeTeamData) ?? 0;
             $data['businessTeamStatusData'] = $businessTeamStatusData;
             $data['financeTeamStatusData'] = $financeTeamStatusData;
diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php
index a4666518..3bf6a341 100755
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -35,7 +35,7 @@ use App\Controllers\JobWorker;
 use App\Controllers\Jobs\SubJob;
 use App\Controllers\EmployeeServiceController;
 use App\Controllers\EmpDataServiceController;
-
+use App\Models\ThzMasterModel;
 use CodeIgniter\API\ResponseTrait;
 
 use PhpOffice\PhpSpreadsheet\Spreadsheet;
@@ -1471,6 +1471,7 @@ class EmployeeController extends AdminController
             $template_data_path = WRITEPATH . 'e_card_template/';
             // $tpa_short_name = strtolower(str_replace(' ', '_', $get_emp_code_and_client_policy_id['short_name'])) . '.html';
             $tpa_short_name = 'common.html';
+            // $tpa_short_name = 'new_ecard.html';
             $final_path = $template_data_path . $tpa_short_name;
         
             $this->myLogger->logme('error', 'Checking if template file exists at: ' . $final_path);
@@ -1523,10 +1524,12 @@ class EmployeeController extends AdminController
                     '{QR_IOS}' => base_url() . 'public/e_card_imgs/ios.png',
                     '{QR_ANDROID_2}' => base_url() . 'public/e_card_imgs/play_store.png',
                     '{QR_IOS_2}' => base_url() . 'public/e_card_imgs/appstore.png',
+                    '{NHANCE_N_LOGO}' => base_url() . 'public/assets/images/Nhance_Favi.png',
                 ];
 
                 $placeholders['{LEVELS}'] = $this->generateAcmAndMForEcard($client_id);
-        
+                $placeholders['{NETWORK_HOSPITAL}'] = $this->generateNetworkHospitalsForEcard($value['network_hospitals']);
+       
                 foreach ($placeholders as $placeholder => $replaceValue) {
                     $htmlContent = str_replace($placeholder, $replaceValue, $htmlContent);
                 }
@@ -1534,13 +1537,23 @@ class EmployeeController extends AdminController
                 $html .= $htmlContent;
             }
 
+            // return $html;
             // DomPdf 
             $options = new Options();
             $options->set('isRemoteEnabled', true);
             $options->set('isHtml5ParserEnabled', true);
 
             $dompdf = new Dompdf($options);
-            $dompdf->loadHtml('' . $html); // remove the margin
+            // $dompdf->loadHtml('' . $html); // remove the margin
+            $dompdf->loadHtml('
+                
+                ' . $html
+            );
+
             $dompdf->setPaper('A4', 'portrait');
             $dompdf->render();
 
@@ -2939,20 +2952,43 @@ class EmployeeController extends AdminController
     
         // Generate the HTML content
         $html = '';
-    
+        
+        $level_index = 1;
         foreach ($levels as $level => $contacts) {
             $displayLevel = $level == 3 ? 1 : 2; // Switch levels for display
-            $html .= '
Level ' . $displayLevel . '
'; + if($level_index == 1){ + $html .= 'Level ' . $displayLevel . '
'; + }else{ + $html .= '
Level ' . $displayLevel . '
'; + } foreach ($contacts as $index => $contact) { $html .= ($index + 1) . '. ' . $contact['first_name'] . ' / ' . $contact['mobile'] . ' / ' . $contact['email'] . '
'; } + $level_index++; } - $html .= '


'; + $html .= '
'; return $html; } + public function generateNetworkHospitalsForEcard($network_hospitals) + { + $html = ""; + if (!empty($network_hospitals)) { + $html = '
+ Network Hospital: + ' . $network_hospitals . ' +
'; + } + + // For debugging + // print_r($html); die; + + return $html; + } + + public function getBatchFileData() { $file_id = $this->request->getGet('file_id'); @@ -3065,7 +3101,8 @@ class EmployeeController extends AdminController } else { $text = "create"; $data['created_by'] = get_session_userid(); - $this->thzMasterModel->insert($data); + $thzMasterModel = new ThzMasterModel(); + $thzMasterModel->insert($data); $insertID = $this->partnerEndorsementRequestModel->insertID(); $result = true; } diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index 19cde67b..9e4a5a08 100755 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -2073,7 +2073,7 @@ class MasterController extends AdminController } } - $data = $nhanceBranchModel->where('is_active', 1)->findAll(); + $data = $nhanceBranchModel->where('is_active', 1)->orderBy('id', 'DESC')->findAll(); return $this->loadLayout('nhance_branch_list', ['data' => $data]); } elseif ($method === 'delete') { @@ -2156,7 +2156,7 @@ class MasterController extends AdminController } } - $data = $vehicleTypeModel->where('is_active', 1)->findAll(); + $data = $vehicleTypeModel->where('is_active', 1)->orderBy('id', 'DESC')->findAll(); return $this->loadLayout('vehicle_type_master_list', ['data' => $data]); } elseif ($method === 'delete') { @@ -2239,7 +2239,7 @@ class MasterController extends AdminController } } - $data = $rtoModel->where('is_active', 1)->findAll(); + $data = $rtoModel->where('is_active', 1)->orderBy('id', 'DESC')->findAll(); return $this->loadLayout('rto_master_list', ['data' => $data]); } elseif ($method === 'delete') { diff --git a/app/Controllers/PolicyTransactionController.php b/app/Controllers/PolicyTransactionController.php index 1778d0de..94033074 100644 --- a/app/Controllers/PolicyTransactionController.php +++ b/app/Controllers/PolicyTransactionController.php @@ -113,7 +113,8 @@ class PolicyTransactionController extends BaseController // Policy Transaction Inception public function viewInception() - { + { + $bds_edit_pt_id = $this->request->getGet('pt_id') ?? null; $data['tab_name'] = 'Policy'; $data['page_name'] = 'Policy'; @@ -151,6 +152,8 @@ class PolicyTransactionController extends BaseController // 'bicycle' => 'Bicycle' // ]; $data['vehicle_type'] = db_connect()->table('vehicle_type')->where('is_active', 1)->get()->getResultArray(); + $data['rto_details'] = db_connect()->table('rto_master')->where('is_active', 1)->get()->getResultArray(); + $data['vehicle_des'] = [ 'commercial' => 'Commercial', 'private' => 'Private', @@ -181,34 +184,38 @@ class PolicyTransactionController extends BaseController $issuer = empty($issuer) ? 0 : $issuer; $status = empty($status) ? 0 : $status; // Corrected from `$issuer` - if ($this->request->is('get')) { + if(empty($bds_edit_pt_id)){ + if ($this->request->is('get')) { - // Fetch inception data list - $data['inception_data_list'] = $this->policyTransactionModel->getInceptionTranctionListData( - $start_date, - $end_date, - $client_id, - $insurer_id, - $policy_type_id, - $date_type, - $issuer, - $status - ); - } else { + // Fetch inception data list + $data['inception_data_list'] = $this->policyTransactionModel->getInceptionTranctionListData( + $start_date, + $end_date, + $client_id, + $insurer_id, + $policy_type_id, + $date_type, + $issuer, + $status + ); + } else { - $ids = $this->request->getPost('ids'); - $ids = array_filter(explode(',', $ids)); - $data['inception_data_list'] = $this->policyTransactionModel->getInceptionTranctionListData( - $start_date = 0, - $end_date = 0, - $client_id = 0, - $insurer_id = 0, - $policy_type_id = 0, - $date_type = 0, - $issuer = 0, - $status = 0, - $ids - ); + $ids = $this->request->getPost('ids'); + $ids = array_filter(explode(',', $ids)); + $data['inception_data_list'] = $this->policyTransactionModel->getInceptionTranctionListData( + $start_date = 0, + $end_date = 0, + $client_id = 0, + $insurer_id = 0, + $policy_type_id = 0, + $date_type = 0, + $issuer = 0, + $status = 0, + $ids + ); + } + }else{ + $data['inception_data_list'] = []; } @@ -261,6 +268,7 @@ class PolicyTransactionController extends BaseController $data = $this->preparePolicyData(); $data['cd_ac_pk'] = $this->request->getPost('cd_ac_no'); $data['issuer'] = 2; + $data['status'] = 'completed'; $this->myLogger->logme('error', 'Policy Trancaction modified form data ( insert data ) : '. json_encode($data)); @@ -276,7 +284,6 @@ class PolicyTransactionController extends BaseController $data = $this->request->getPost(); // print_r($data); die; - // var_dump($data); die; if (empty($data['policy_issue_date'])) { $data['policy_issue_date'] = null; @@ -304,7 +311,6 @@ class PolicyTransactionController extends BaseController $data['last_action_date'] = change_date_format($data['last_action_date']); } - // Separate Insurer and TPA Branch IDs and IDs if (isset($data['insurer_id']) && !empty($data['insurer_id'])) { list($data['insurer_branch_id'], $data['insurer_id']) = explode('-', $data['insurer_id']); @@ -373,6 +379,7 @@ class PolicyTransactionController extends BaseController $pt_co_share_details = $this->insertOrUpdateCoShareDetails($data, $insert); + $client_policy_id = null; if ($data['ct_type'] == 2) { $client_policy_insert_data = $this->prepareClientPolicyInsertData($data); $client_policy_id = $this->clientPolicyModel->insert($client_policy_insert_data); @@ -381,7 +388,7 @@ class PolicyTransactionController extends BaseController } if ($data['client_type'] == 1 && $data['status'] == 'completed' && $data['is_cd_reduce_from_bds'] == 1) { - $this->processCompletedStatus($data, $client_policy_id, $data['insurer_id']); + $this->processCompletedStatus($data, $client_policy_id, $data['insurer_id'], $insert); } } @@ -391,7 +398,6 @@ class PolicyTransactionController extends BaseController $clientController = new ClientController(); $data['client_kyc_primary_table'] = $clientController->generateKycPrimaryTable($data['client_id']); $data['client_kyc_other_table'] = $clientController->generateKycOthersTable($data['client_id']); - $data['entity_type_id'] = $client_data['entity_type_id']; return $this->respondSuccess($insert, "Policy transaction created successfully", $data); @@ -432,20 +438,20 @@ class PolicyTransactionController extends BaseController } } - if($old_pt_data['status'] != "completed"){ - if ($data['status'] == 'completed' && $data['ct_type'] == 2) { - if ($data['client_type'] == 1 && $data['is_cd_reduce_from_bds'] == 1) { - $this->processCompletedStatus($data, $data['client_policy_id'], $data['insurer_id']); - } - } - } + // if($old_pt_data['status'] != "completed"){ + // if ($data['status'] == 'completed' && $data['ct_type'] == 2) { + // if ($data['client_type'] == 1 && $data['is_cd_reduce_from_bds'] == 1) { + // $this->processCompletedStatus($data, $data['client_policy_id'], $data['insurer_id'], $id); + // } + // } + // } $data['pt_co_share_details'] = $this->PTCOShareDetailsModel->where('pt_id', $id)->where('is_active', 1)->findAll(); } if(isset($data['cd_amt_changed']) && !empty($data['cd_amt_changed'])){ $policy_data = $this->policyTransactionModel->where('is_active', 1)->where('id', $id)->first(); - $this->cdCorrection($policy_data, $data['cd_amt_changed']); + $this->cdCorrection($policy_data, $data['cd_amt_changed'], $id); } $client_data = $this->clientModel->where('id', $data['client_id'])->first(); @@ -467,10 +473,6 @@ class PolicyTransactionController extends BaseController { // Prepare data for insertion and updating $coShareDetails = []; - - // print_r($data); die; - // die; - if (isset($data['co_share_id']) && !empty($data['co_share_id'])) { $this->removePtCoShareRecords($data['co_share_id'], $pt_id); } @@ -564,7 +566,6 @@ class PolicyTransactionController extends BaseController } // print_r($this->PTCOShareDetailsModel->getLastQuery()); die; - // print_r($coShareDetails); // die; @@ -610,7 +611,7 @@ class PolicyTransactionController extends BaseController $this->policyTransactionStatusModel->insert($statusData); } - private function processCompletedStatus($data, $client_policy_id, $insurer_id) + private function processCompletedStatus($data, $client_policy_id, $insurer_id, $policyTranId) { $totalAmount = (int)$data['total'][0] ?? 0; $description = 'The following amount of Rs. ' . $totalAmount . '/- has been debited for the ' . $data['emp_count'] . ' employees at Inception (BDS).'; @@ -628,13 +629,19 @@ class PolicyTransactionController extends BaseController 'updated_by' => get_session_userid(), 'event_name' => 'inception', 'is_active' => 1, - 'cd_ac_pk' => $data['cd_ac_pk'] + 'cd_ac_pk' => $data['cd_ac_pk'], + 'pt_id' => $policyTranId ?? null, ]; - DepositHelper::saveDeposit($cdTransactionData, get_session_userid()); + $result = DepositHelper::saveDeposit($cdTransactionData, get_session_userid()); + + if(isset($result) && $result['success'] == true){ + $update_data['ct_tran_id'] = $result['insert_id']; + $this->policyTransactionModel->where('id', $policyTranId)->set($update_data)->update(); + } } - private function cdCorrection($data, $amt) + private function cdCorrection($data, $amt, $policyTranId) { $totalAmount = (int)($amt ?? 0); $description = 'The following amount of Rs. ' . $totalAmount . '/- has been debited towards the difference arising from the change in the BDS base premium.'; @@ -652,7 +659,8 @@ class PolicyTransactionController extends BaseController 'updated_by' => get_session_userid(), 'event_name' => 'inception', 'is_active' => 1, - 'cd_ac_pk' => $data['cd_ac_pk'] + 'cd_ac_pk' => $data['cd_ac_pk'], + 'pt_id' => $policyTranId ?? null, ]; DepositHelper::saveDeposit($cdTransactionData, get_session_userid()); @@ -1026,20 +1034,28 @@ class PolicyTransactionController extends BaseController } } - public function removePolicyTransaction($id) - { + public function removePolicyTransaction($id, $type = 0) + { if ($id) { - $data['is_active'] = 0; $policy_transaction_data = $this->policyTransactionModel->where('id', $id)->first(); - if($policy_transaction_data['policy_type_id'] > 7){ + if($policy_transaction_data['policy_type_id'] > 7 && $type == 0){ + $this->policyTransactionModel->where('id', $id)->set($data)->update(); $this->PTCOShareDetailsModel->where('pt_id', $id)->set($data)->update(); $this->clientPolicyModel->where('id', $policy_transaction_data['client_policy_id'])->set($data)->update(); $this->policyTransactionModel->where('client_policy_id', $policy_transaction_data['client_policy_id'])->set($data)->update(); + + $cd_transaction_model = new ClientDepositModel(); + $cd_transaction_model->where('policy_transaction_id', $id)->set($data)->update(); + }else{ $this->policyTransactionModel->where('id', $id)->set($data)->update(); $this->PTCOShareDetailsModel->where('pt_id', $id)->set($data)->update(); + + $cd_transaction_model = new ClientDepositModel(); + $cd_transaction_model->where('policy_transaction_id', $id)->set($data)->update(); + } return $this->respond(['status' => true, 'code' => 200, 'message' => 'Policy Transaction removed successfully'], 200); } else { @@ -1076,7 +1092,7 @@ class PolicyTransactionController extends BaseController { // echo '
';
         // !dd($this->getEndorsementDataForEdit(17));
-
+        $bds_edit_pt_id = $this->request->getGet('pt_id') ?? null;
         $data['tab_name'] = 'Endorsement';
         $data['page_name'] = 'Endorsement';
         $data['issuer'] = [1 => 'JIBS', 2 => 'Nhance'];
@@ -1143,8 +1159,11 @@ class PolicyTransactionController extends BaseController
         $issuer = (!isset($issuer) || $issuer === '' || $issuer === null) ? 0 : $issuer;
         $status = (!isset($issuer) || $status === '' || $status === null) ? 0 : $status;
 
-
-        $data['endorsement_data_list'] = $this->policyTransactionModel->getEndorsementTranctionListData($start_date, $end_date, $client_id, $insurer_id, $policy_type_id, $date_type, $issuer, $status);
+        if($bds_edit_pt_id == null){
+            $data['endorsement_data_list'] = $this->policyTransactionModel->getEndorsementTranctionListData($start_date, $end_date, $client_id, $insurer_id, $policy_type_id, $date_type, $issuer, $status);
+        }else{
+            $data['endorsement_data_list'] = [];
+        }
         $data['client'] = $this->clientModel->where('is_active', 1)->findAll();
         $data['policy_types'] = $this->policyTypeModel->where('is_active', 1)->findAll();
 
@@ -1167,6 +1186,7 @@ class PolicyTransactionController extends BaseController
     {
         $id = $this->request->getPost('id');
         $data = $this->preparePolicyTransactionData();
+        $data['status'] = 'completed';
         // print_r($data); die;
 
         if (!$id) {
@@ -1334,9 +1354,9 @@ class PolicyTransactionController extends BaseController
         if ($update) {
 
             $this->insertTransactionStatus($id, $data, 1);
-            if($old_endorse_data['status'] != "completed"){
-                $this->handleCompletedStatus($data, $id);
-            }
+            // if($old_endorse_data['status'] != "completed"){
+            //     $this->handleCompletedStatus($data, $id);
+            // }
             $this->insertOrUpdateCoShareDetails($data, $id);
 
 
@@ -1347,30 +1367,40 @@ class PolicyTransactionController extends BaseController
     }
 
     private function handleCompletedStatus($data, $policy_tran_id)
-    {
+    {   
         if ($data['client_type'] == 1 && $data['status'] == 'completed' && $data['is_cd_reduce_from_bds'] == 1) {
 
             $tolamt = (int) $data['total'][0] ?? 0;
 
-            $description = 'The following amount of Rs. ' . round($tolamt, 2) . '/- has been' .
-                ($data['action_type'] == 'deletion' ? ' Credit ' : ' Debit ') . 'from the policy transaction (BDS)';
-            $cd_tranction_data = [
-                'amount' => $tolamt,
-                'sub_type_id' => $data['action_type'] == 'deletion' ? 3 : 4,
-                'client_id' => $data['client_id'],
-                'client_policy_id' => $data['client_policy_id'],
-                'endorsement_no' => null,
-                'cd_ac_no' => $data['cd_ac_no'] ?? null,
-                'insurer_id' => $data['insurer_id'],
-                'description' => $description,
-                'transaction_type' => $data['action_type'] == 'deletion' ? 'Credit' : 'Debit',
-                'updated_by' => get_session_userid(),
-                'event_name' => $data['action_type'],
-                'is_active' => 1,
-                'cd_ac_pk' => $data['cd_ac_pk'] ?? null,
-            ];
+            if(!empty($tolamt)){
+                $description = 'The following amount of Rs. ' . round($tolamt, 2) . '/- has been' .
+                    ($data['action_type'] == 'deletion' ? ' Credit ' : ' Debit ') . 'from the policy transaction (BDS)';
+                
+                $cd_tranction_data = [
+                    'amount' => abs($tolamt),
+                    'sub_type_id' => $data['action_type'] == 'deletion' ? 3 : 4,
+                    'client_id' => $data['client_id'],
+                    'client_policy_id' => $data['client_policy_id'],
+                    'endorsement_no' => null,
+                    'cd_ac_no' => $data['cd_ac_no'] ?? null,
+                    'insurer_id' => $data['insurer_id'],
+                    'description' => $description,
+                    'transaction_type' => $data['action_type'] == 'deletion' ? 'Credit' : 'Debit',
+                    'updated_by' => get_session_userid(),
+                    'event_name' => $data['action_type'],
+                    'is_active' => 1,
+                    'cd_ac_pk' => $data['cd_ac_pk'] ?? null,
+                    'pt_id' => $policy_tran_id ?? null,
+                ];
+
+                $result = DepositHelper::saveDeposit($cd_tranction_data, get_session_userid());
+
+                if(isset($result['success']) && $result['success']){
+                    $update_data['ct_tran_id'] = $result['insert_id'];
+                    $this->policyTransactionModel->where('id', $policy_tran_id)->set($update_data)->update();
+                }
+            }
 
-            DepositHelper::saveDeposit($cd_tranction_data, get_session_userid());
         }
     }
 
@@ -1398,13 +1428,13 @@ class PolicyTransactionController extends BaseController
             ->orderBy('id', 'asc')
             ->first();
 
-        $pt_id = null;    
+        $pt_id = null;   
+
         if(!empty($data)){
             $inception_data = $this->policyTransactionModel->where('policy_no', $data['policy_no'])->where('client_id', $data['client_id'])->first();
             $pt_id = $inception_data['id'];
         }    
 
-
         if (!empty($data['policy_start_date'])) {
             $data['policy_start_date'] =  change_date_format($data['policy_start_date'], 'Y-m-d', 'd/m/Y');
         }
@@ -1565,6 +1595,16 @@ class PolicyTransactionController extends BaseController
 
         // print_r($data['endorse_eff_date']); die;
 
+        $pt_bp_amt = $this->PTCOShareDetailsModel
+            ->select('bp_amt, amount')
+            ->where('pt_id', $id)
+            ->where('co_share_type', 1)
+            ->where('is_active', 1)
+            ->first();
+
+        // dd(db_connect()->getLastQuery() ,$pt_bp_amt);
+        $data['base_cd_amount'] = $pt_bp_amt['amount'] ?? null;
+
         if ($data) {
             return $this->respond(['status' => true, 'data' => $data, 'pt_id' => $pt_id], 200);
         } else {
@@ -3128,4 +3168,116 @@ class PolicyTransactionController extends BaseController
 
         return [$policyList, $policyListByClient];
     }
+
+
+public function reportBDSNew()
+{
+    // ๐Ÿงญ Basic Page Info
+    $data['tab_name']   = 'BDS Report';
+    $data['page_name']  = 'BDS Report';
+
+    // ๐Ÿ“‹ Dropdown Data
+    $data['issuer']         = [1 => 'JIBS', 2 => 'Nhance'];
+    $data['client_type']    = [1 => 'Group', 2 => 'Individual'];
+    $data['issuing_type']   = [1 => 'Fresh', 2 => 'Renewal', 3 => 'Roll Over'];
+    $data['policy_status']  = [
+        'pending'              => 'Pending',
+        'exported_to_insurer'  => 'Exported to Insurer',
+        'imported_from_insurer'=> 'Imported from Insurer',
+        'exported_to_tpa'      => 'Exported to TPA',
+        'imported_from_tpa'    => 'Imported from TPA',
+        'completed'            => 'Completed'
+    ];
+    $data['invoice_status_array'] = [
+        'yet_to_generate' => 'Yet to Generate',
+        'generated'       => 'Generated',
+        'send'            => 'Send',
+        'recived'         => 'Recived',
+    ];
+    $data['date_type'] = [
+        'policy_issue_date'  => 'Policy Issue Date',
+        'policy_start_date'  => 'Policy Start Date',
+        'policy_end_date'    => 'Policy End Date',
+        'data_received_date' => 'Data Received Date',
+        'closure_date'       => 'Closure Date',
+        'statement_month'    => 'Statement Month',
+    ];
+
+    // ๐Ÿข Fetch Active Data
+    $data['insurer']       = $this->insurerModel->where('is_active', 1)->findAll();
+    $data['policy_types']  = $this->policyTypeModel->where('is_active', 1)->findAll();
+    $data['clients']       = $this->clientModel->where('is_active', 1)->findAll();
+    $data['users']         = $this->userModel->where('is_active', 1)->findAll();
+    $data['policy_count']  = $this->policyTransactionModel->where('is_active', 1)->countAllResults();
+
+    // ๐Ÿ• Filters
+    $start_date        = $this->request->getGet('start_date');
+    $end_date          = $this->request->getGet('end_date');
+    $client_id         = $this->request->getGet('client_id');
+    $insurer_id        = $this->request->getGet('insurer_id');
+    $policy_type_id    = $this->request->getGet('policy_type_id');
+    $date_type         = $this->request->getGet('date_type');
+    $issuer            = $this->request->getGet('issuer');
+    $client_branch_id  = $this->request->getGet('client_branch_id');
+    $insurer_branch_id = $this->request->getGet('insurer_branch_id');
+    $client_policy_id  = $this->request->getGet('client_policy_id');
+    $user_id           = $this->request->getGet('user_id');
+
+    // Handle statement month range
+    if ($date_type == 'statement_month') {
+        $start_date = (string) date('Y-m-01', strtotime($start_date));
+        $end_date   = (string) date('Y-m-31', strtotime($end_date));
+    }
+
+    // Ensure default values
+    $start_date        = $start_date        ?: 0;
+    $end_date          = $end_date          ?: 0;
+    $client_id         = $client_id         ?: 0;
+    $insurer_id        = $insurer_id        ?: 0;
+    $policy_type_id    = $policy_type_id    ?: 0;
+    $date_type         = $date_type         ?: 0;
+    $issuer            = $issuer            ?: 0;
+    $client_branch_id  = $client_branch_id  ?: 0;
+    $insurer_branch_id = $insurer_branch_id ?: 0;
+    $client_policy_id  = $client_policy_id  ?: 0;
+    $user_id           = $user_id           ?: 0;
+
+    // ๐Ÿงพ Handle POST requests (Dashboard filters)
+    if ($this->request->is('post')) {
+        $isFromDashboard = $this->request->getPost('is_dashboard');
+
+        if (!empty($isFromDashboard) && $isFromDashboard == 1) {
+            $ids = array_filter(explode(',', $this->request->getPost('ids')));
+
+            if (!empty($ids)) {
+                $idsStr = implode(',', array_map('intval', $ids)); // sanitize IDs
+                $where  = "policy_transaction.id IN ($idsStr)";
+            } else {
+                $where = []; // No valid IDs
+            }
+        }
+    }
+
+    // ๐Ÿ“Š Fetch report data
+    $data['report_list'] = $this->policyTransactionModel->reportBDSNew(
+        $start_date,
+        $end_date,
+        $client_id,
+        $insurer_id,
+        $policy_type_id,
+        $date_type,
+        $issuer,
+        $client_branch_id,
+        $insurer_branch_id,
+        $client_policy_id,
+        $user_id,
+        $where ?? ''
+    );
+
+    // ๐Ÿงฉ Load View
+    $this->loadLayout('report_bds_filter', $data);
+}
+
+
+
 }
diff --git a/app/Helpers/DepositHelper.php b/app/Helpers/DepositHelper.php
index 9549f8a1..495797f3 100755
--- a/app/Helpers/DepositHelper.php
+++ b/app/Helpers/DepositHelper.php
@@ -66,7 +66,8 @@ class DepositHelper
             'updated_by' => $data['updated_by'],
             'balance' => $newBalance, // Include the new balance in the data array
             'cd_ac_pk'=> isset($data['cd_ac_pk'])?$data['cd_ac_pk']:null,
-            'record_date' => $data['record_date'] ?? null
+            'record_date' => $data['record_date'] ?? null,
+            'policy_transaction_id' => $data['pt_id'] ?? null
         ];
 
         // Insert data and get the insert ID
diff --git a/app/Models/ClientDepositModel.php b/app/Models/ClientDepositModel.php
index 9d45f38f..8a61b204 100755
--- a/app/Models/ClientDepositModel.php
+++ b/app/Models/ClientDepositModel.php
@@ -28,7 +28,8 @@ class ClientDepositModel extends Model
         "event_name",
         "unit",
         "cd_ac_pk",
-        "record_date"
+        "record_date",
+        "policy_transaction_id",
     ];
 
    
diff --git a/app/Models/EmployeePolicyModel.php b/app/Models/EmployeePolicyModel.php
index 041ac791..bea76e50 100755
--- a/app/Models/EmployeePolicyModel.php
+++ b/app/Models/EmployeePolicyModel.php
@@ -1471,7 +1471,7 @@ class EmployeePolicyModel extends Model
 
                     ep.tpa_id, 
                     ep.uhid,
-                    ep.policy_end_date,
+                    cp.policy_end_date,
                     ep.basic_cover_si,
 
                     clients.client_name, 
@@ -1537,7 +1537,7 @@ class EmployeePolicyModel extends Model
 
                     ep.tpa_id, 
                     ep.uhid,
-                    ep.policy_end_date,
+                    cp.policy_end_date,
                     ep.basic_cover_si,
 
                     clients.client_name, 
diff --git a/app/Models/PolicyTransactionModel.php b/app/Models/PolicyTransactionModel.php
index 6ea94e65..a9629d73 100644
--- a/app/Models/PolicyTransactionModel.php
+++ b/app/Models/PolicyTransactionModel.php
@@ -305,7 +305,7 @@ class PolicyTransactionModel extends Model
 
         if ($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0) {
 
-            $fromDate = date('Y-m-d', strtotime('-30 days'));
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
             $toDate = date('Y-m-d 23:59:59');
 
             $builder->where('policy_transaction.created_at >=', $fromDate)
@@ -881,7 +881,7 @@ class PolicyTransactionModel extends Model
 
         if ($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0) {
 
-            $fromDate = date('Y-m-d', strtotime('-60 days'));
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
             $toDate = date('Y-m-d 23:59:59');
 
             if (empty($where)) {
@@ -1060,7 +1060,7 @@ class PolicyTransactionModel extends Model
 
         // Default to Last 30 Days if No Filters Are Applied
         if (empty($client_id) && empty($insurer_id) && empty($policy_type_id) && empty($date_type) && empty($issuer) && empty($where)) {
-            $fromDate = date('Y-m-d', strtotime('-60 days'));
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
             $toDate = date('Y-m-d 23:59:59');
 
             $builder->where('policy_transaction.created_at >=', $fromDate)
@@ -1108,7 +1108,7 @@ class PolicyTransactionModel extends Model
             ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left')
             ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left')
             ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left')
-            ->join('policy_type', 'client_policy.policy_type_id = policy_type.id', 'left')
+            ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left')
             ->where('policy_transaction.is_active', 1)
             ->where('policy_transaction.action_type !=', 'inception');
 
@@ -1163,7 +1163,7 @@ class PolicyTransactionModel extends Model
 
         if ($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0) {
 
-            $fromDate = date('Y-m-d', strtotime('-60 days'));
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
             $toDate = date('Y-m-d 23:59:59');
 
             $builder->where('policy_transaction.created_at >=', $fromDate)
@@ -1313,7 +1313,7 @@ class PolicyTransactionModel extends Model
                 ->where('policy_transaction.' . $date_type . '<=', $endDate);
         } else {
 
-            $fromDate = date('Y-m-d', strtotime('-30 days'));
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
             $toDate = date('Y-m-d 23:59:59');
 
             $builder->where('policy_transaction.created_at >=', $fromDate)
@@ -1416,7 +1416,7 @@ class PolicyTransactionModel extends Model
                 ->where('policy_transaction.' . $date_type . '<=', $endDate);
         } else {
 
-            $fromDate = date('Y-m-d', strtotime('-30 days'));
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
             $toDate = date('Y-m-d 23:59:59');
 
             $builder->where('policy_transaction.created_at >=', $fromDate)
@@ -1457,7 +1457,7 @@ class PolicyTransactionModel extends Model
 
     public function getFinanceReportList($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0)
     {
-        $dateThreshold = date('Y-m-d H:i:s', strtotime("- 3 days"));
+        $dateThreshold = date('Y-m-d H:i:s', strtotime("-90 days"));
 
         $builder = $this->db->table('policy_transaction')
             ->select("
@@ -1519,7 +1519,7 @@ class PolicyTransactionModel extends Model
                 ->where('policy_transaction.' . $date_type . '<=', $endDate);
         } else {
 
-            $fromDate = date('Y-m-d', strtotime('-30 days'));
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
             $toDate = date('Y-m-d 23:59:59');
 
             $builder->where('policy_transaction.created_at >=', $fromDate)
@@ -1624,7 +1624,7 @@ class PolicyTransactionModel extends Model
             $builder->where('policy_transaction.' . $date_type . '>=', $startDate)
                 ->where('policy_transaction.' . $date_type . '<=', $endDate);
         } else {
-            $fromDate = date('Y-m-d', strtotime('-30 days'));
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
             $toDate = date('Y-m-d 23:59:59');
 
             $builder->where('policy_transaction.created_at >=', $fromDate)
@@ -1712,7 +1712,7 @@ class PolicyTransactionModel extends Model
     //function for fetch renewal report data
     public function getRenewalReportData($start_date = null, $end_date = null, $client_type = null, $client = null, $issuer = null)
     {
-        $fromDate = date('Y-m-d', strtotime('-60 days'));
+        $fromDate = date('Y-m-d', strtotime('-90 days'));
         $toDate = date('Y-m-d 23:59:59');
 
         if (!empty($start_date) && !empty($end_date)) {
@@ -1806,4 +1806,307 @@ class PolicyTransactionModel extends Model
 
         return $result[0];
     }
+
+    public function reportBDSNew(
+        $start_date = 0,
+        $end_date = 0,
+        $client_id = 0,
+        $insurer_id = 0,
+        $policy_type_id = 0,
+        $date_type = 0,
+        $issuer = 0,
+        $client_branch_id = 0,
+        $insurer_branch_id = 0,
+        $client_policy_id = 0,
+        $user_id = 0,
+        $where = []
+    ) {
+        
+        $date_condition = '';
+
+        // ==============================
+        // DATE FILTER FOR STATEMENT MONTH
+        // ==============================
+        if ($date_type == 'statement_month' && $start_date != 0 && $end_date != 0) {
+            $date_condition = "
+                AND insurer_statements.month >= '{$start_date}'
+                AND insurer_statements.month <= '{$end_date}'
+            ";
+        }
+
+        // ==============================
+        // BASE QUERY
+        // ==============================
+        $builder = $this->db->table('policy_transaction')
+            ->select("
+                policy_transaction.*,
+                DATE_FORMAT(policy_transaction.policy_issue_date, '%d %b %Y') AS policy_issue_date,
+                DATE_FORMAT(
+                    IF(policy_transaction.month IS NULL, 
+                        policy_transaction.policy_issue_date, 
+                        policy_transaction.month
+                    ), '%b %Y'
+                ) AS policy_issue_month,
+
+                CASE
+                    WHEN clients.client_type = 1 THEN 'Group'
+                    WHEN clients.client_type = 2 THEN 'Retail'
+                    ELSE '-'
+                END AS client_type,
+
+                CASE
+                    WHEN policy_transaction.revenue_type = 'NA' THEN 'Fresh'
+                    ELSE 'Renewal'
+                END AS revenue_type,
+
+                CASE
+                    WHEN policy_transaction.action_type = 'inception' THEN 'Policy'
+                    ELSE 'Endorsement'
+                END AS action_type,
+
+                clients.client_name AS client_name,
+                clients.short_name AS client_short_name,
+                client_branch.branch_name AS client_branch_name,
+                client_branch.address1 AS client_address,
+                policy_type.policy_type,
+                policy_type.bap,
+                insurers.name AS insurer_name,
+                insurers.short_name AS insurer_short_name,
+                insurer_branch.branch_name AS insurer_branch_name,
+                insurer_branch.branch_code AS insurer_branch_code,
+                user_profiles.first_name AS user_name,
+                vehicle.vehicle_no,
+                tpa.name AS tpa_name,
+                pt_co_share_details.remark AS remarks,
+                pt_co_share_details.cop_amt AS bp_amt,
+                pt_co_share_details.exp_amt,
+                pt_co_share_details.id AS pt_id,
+                sales_user.first_name AS salse_person_name,
+                service_user.first_name AS service_person_name,
+
+                ROUND(pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt, 2) AS premium_wo_gst,
+                ROUND((ROUND(pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt, 2) * 18 / 100), 2) AS gst_amount,
+                ROUND(
+                    ROUND(pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt, 2) + 
+                    ROUND((ROUND(pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt, 2) * 18 / 100), 2),
+                2) AS total_premium,
+
+                ROUND(pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt, 2) AS tp_or_ter,
+                DATEDIFF(policy_transaction.policy_end_date, CURDATE()) AS days,
+                (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per) AS agreed_tp_or_ter_per,
+                pt_co_share_details.agreed_bp_per,
+
+                -- ==============================
+                -- SUBQUERY: Total IRDA Amount
+                -- ==============================
+                ROUND((
+                    SELECT (
+                        SUM(co_share_stmt_details.actual_bp_brokerage_amt) + 
+                        SUM(co_share_stmt_details.actual_tp_brokerage_amt) + 
+                        SUM(co_share_stmt_details.actual_tep_brokerage_amt) +
+                        SUM(co_share_stmt_details.reward)
+                    )
+                    FROM co_share_stmt_details
+                    JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id
+                    WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id
+                    AND co_share_stmt_details.is_active = 1
+                    AND insurer_statements.is_active = 1
+                    {$date_condition}
+                ), 2) AS total_irda_amt,
+
+                -- Reward Only
+                ROUND((
+                    SELECT SUM(co_share_stmt_details.reward)
+                    FROM co_share_stmt_details
+                    JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id
+                    WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id
+                    AND co_share_stmt_details.is_active = 1
+                    AND insurer_statements.is_active = 1
+                    {$date_condition}
+                ), 2) AS reward,
+
+                -- Billed Amount
+                ROUND((
+                    SELECT SUM(
+                        COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) +
+                        COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) +
+                        COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) +
+                        COALESCE(co_share_stmt_details.reward, 0)
+                    )
+                    FROM co_share_stmt_details
+                    JOIN pt_co_share_details AS pt_table ON co_share_stmt_details.co_share_id = pt_table.id
+                    JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id
+                    WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id
+                    AND co_share_stmt_details.is_active = 1
+                    AND pt_table.is_active = 1
+                    AND insurer_statements.is_active = 1
+                    AND insurer_statements.invoice_status IS NOT NULL
+                    {$date_condition}
+                ), 2) AS billed_amt,
+
+                -- Unbilled Amount
+                ROUND(
+                (
+                    (
+                        SELECT 
+                            SUM(
+                                COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) +
+                                COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) +
+                                COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) +
+                                COALESCE(co_share_stmt_details.reward, 0)
+                            )
+                        FROM co_share_stmt_details
+                        JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id
+                        WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id
+                        AND co_share_stmt_details.is_active = 1
+                        {$date_condition}
+                    ) 
+                        -
+                    (
+                        SELECT 
+                            SUM(
+                                COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) +
+                                COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) +
+                                COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) +
+                                COALESCE(co_share_stmt_details.reward, 0)
+                            )
+                        FROM co_share_stmt_details
+                        JOIN pt_co_share_details AS pt_table ON co_share_stmt_details.co_share_id = pt_table.id
+                        JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id
+                        WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id
+                        AND co_share_stmt_details.is_active = 1
+                        AND pt_table.is_active = 1
+                        AND insurer_statements.is_active = 1
+                        AND insurer_statements.invoice_status IS NULL
+                        {$date_condition}
+                    )
+                ), 2) AS unbilled_amt,
+
+                created_user.first_name AS user_name,
+
+                CASE 
+                    WHEN pt_co_share_details.co_share_type IN (0, 1) THEN policy_transaction.policy_no
+                    WHEN pt_co_share_details.co_share_type > 1 THEN 
+                        CASE 
+                            WHEN pt_co_share_details.follower_policy_no IS NULL OR pt_co_share_details.follower_policy_no = '' 
+                            THEN policy_transaction.policy_no
+                            ELSE pt_co_share_details.follower_policy_no
+                        END
+                    ELSE policy_transaction.policy_no
+                END AS policy_no
+            ")
+
+            // ==============================
+            // JOINS
+            // ==============================
+            ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left')
+            ->join('clients', 'clients.id = policy_transaction.client_id')
+            ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left')
+            ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left')
+            ->join('user_profiles', 'policy_transaction.created_by = user_profiles.id', 'left')
+            ->join('vehicle', 'policy_transaction.vehicle_id = vehicle.id', 'left')
+            ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left')
+            ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left')
+            ->join('insurer_branch', 'pt_co_share_details.insurer_branch_id = insurer_branch.id', 'left')
+            ->join('tpa', 'policy_transaction.tpa_id = tpa.id', 'left')
+            ->join('tpa_branch', 'policy_transaction.tpa_branch_id = tpa_branch.id', 'left')
+            ->join('user_profiles AS sales_user', 'policy_transaction.sales_generated_by = sales_user.id', 'left')
+            ->join('user_profiles AS service_user', 'policy_transaction.serviced_by = service_user.id', 'left')
+            ->join('user_profiles AS created_user', 'policy_transaction.created_by = created_user.id', 'left')
+            ->where('policy_transaction.is_active', 1)
+            ->where('pt_co_share_details.is_active', 1);
+
+        // ==============================
+        // ROLE-BASED FILTERS
+        // ==============================
+        if (
+            (!in_array(get_role_id(), [1, 5])) &&
+            !(
+                in_array(MANAGEMENT_TEAM_ID, user_team()) ||
+                in_array(FINANCE_TEAM_ID, user_team()) ||
+                in_array(BUSINESS_TEAM_ID, user_team())
+            )
+        ) {
+            if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) {
+                $builder->where('policy_transaction.created_by', get_session_userid());
+            }
+        }
+
+        // ==============================
+        // ADDITIONAL FILTERS
+        // ==============================
+        if (!empty($where)) {
+            log_message('info', 'Where condition: ' . json_encode($where));
+            $builder->where($where);
+        }
+
+        if ($start_date != 0 && $end_date != 0 && $date_type != 0 && $date_type != 'statement_month') {
+            $startDate = date('Y-m-d 00:00:00', strtotime($start_date));
+            $endDate   = date('Y-m-d 23:59:59', strtotime($end_date));
+
+            $builder->where("policy_transaction.{$date_type} >=", $startDate)
+                    ->where("policy_transaction.{$date_type} <=", $endDate);
+        }
+
+        // JOIN FOR STATEMENT MONTH FILTER
+        if ($date_type == 'statement_month' && $start_date != 0 && $end_date != 0) {
+            $startDate = date('Y-m-d', strtotime($start_date));
+            $endDate   = date('Y-m-d', strtotime($end_date));
+
+            $builder->join('co_share_stmt_details', 'pt_co_share_details.id = co_share_stmt_details.co_share_id', 'left')
+                    ->join('insurer_statements', 'co_share_stmt_details.statement_id = insurer_statements.id', 'left')
+                    ->where('insurer_statements.is_active', 1)
+                    ->where('insurer_statements.month >=', $startDate)
+                    ->where('insurer_statements.month <=', $endDate)
+                    ->groupBy('co_share_stmt_details.co_share_id');
+        }
+
+        // ==============================
+        // FILTER BY IDs
+        // ==============================
+        if ($client_id != 0) $builder->where('policy_transaction.client_id', $client_id);
+        if ($insurer_id != 0) $builder->where('policy_transaction.insurer_id', $insurer_id);
+        if ($client_branch_id != 0) $builder->where('policy_transaction.client_branch_id', $client_branch_id);
+        if ($insurer_branch_id != 0) $builder->where('policy_transaction.insurer_branch_id', $insurer_branch_id);
+        if ($client_policy_id != 0) $builder->where('policy_transaction.client_policy_id', $client_policy_id);
+        if ($user_id != 0) $builder->where('policy_transaction.created_by', $user_id);
+        if ($policy_type_id != 0) $builder->where('client_policy.policy_type_id', $policy_type_id);
+        if ($issuer != 0) $builder->where('policy_transaction.issuer', $issuer);
+
+        // ==============================
+        // DEFAULT 90-DAY FILTER
+        // ==============================
+        if (
+            $client_id == 0 && 
+            $insurer_id == 0 && 
+            $policy_type_id == 0 && 
+            $date_type == 0 && 
+            $issuer == 0
+        ) {
+            $fromDate = date('Y-m-d', strtotime('-90 days'));
+            $toDate   = date('Y-m-d 23:59:59');
+
+            if (empty($where)) {
+                $builder->where('policy_transaction.created_at >=', $fromDate)
+                        ->where('policy_transaction.created_at <=', $toDate);
+            }
+        }
+
+        // ==============================
+        // ORDER & EXECUTION
+        // ==============================
+        $builder->orderBy('policy_transaction.id', 'desc');
+
+        $result = $builder->get()->getResultArray();
+
+        // Uncomment if you need to debug SQL
+        // dd($this->db->getLastQuery());
+
+        return $result;
+    }
+
+
+ 
+
+
 }
diff --git a/app/Models/VehicleModel.php b/app/Models/VehicleModel.php
index 81459170..9c52936f 100644
--- a/app/Models/VehicleModel.php
+++ b/app/Models/VehicleModel.php
@@ -25,6 +25,7 @@ class VehicleModel extends Model
         'is_active',
         'created_by',
         'updated_by',
+        'rto_id',
     ];
 
 
diff --git a/app/Views/DashBoard.php b/app/Views/DashBoard.php
index ba72d495..e71d67ff 100755
--- a/app/Views/DashBoard.php
+++ b/app/Views/DashBoard.php
@@ -208,7 +208,7 @@
 
                     
 
-