diff --git a/app/Config/Routes.php b/app/Config/Routes.php index ac723e59..e3685dd8 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -89,6 +89,8 @@ $routes->group("/client", ["filter" => "authMVC"], function ($routes) { $routes->get('deposit/(:num)', 'ClientController::deposit/$1'); $routes->get('remove/(:num)', 'ClientController::removeClient/$1'); $routes->get("list/(:any)", "ClientController::editClientOnboarding/$1"); + $routes->post('wipe', 'ClientController::wipeDemoClient'); + // application/config/routes.php // Add a route for the view_Deposit method @@ -591,7 +593,9 @@ $routes->group("/ticket", ["filter" => "authMVC"], function ($routes) { $routes->post("getPoliciesbyEmpID","TicketController::getPoliciesbyEmpID"); $routes->post("getMoreInfo","TicketController::getMoreInfo"); $routes->get("getMoreInfo","TicketController::getMoreInfo"); -// $routes->post('ticket_messages','TicketController::getTicketMessage'); + $routes->post('upload_url',"TicketController::upload_url"); + $routes->post('getUrlDataByTicketId',"TicketController::getUrlDataByTicketId"); + $routes->get('remove_url',"TicketController::remove_url"); }); $routes->group("clientApi",["filter" => "AuthClientApi"], function ($routes){ diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index e639c97c..d4bfa5d8 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -608,6 +608,8 @@ class ClientController extends AdminController $data['policy_types'] = $this->policyTypeModel->findAll(); $data['policy_type'] = ['1' => 'Base Policy', '2' => 'SI Topup', '3' => 'Dependent Addon']; $data['client_type'] = ['1' => 'Group', '2' => 'Retail']; + $data['clients'] = $this->clientModel->where('is_active', 1)->findAll(); + $data['insurers'] = $this->insurerModel->where('is_active', 1)->findAll(); // echo "
";
         // print_r($data); die;
@@ -809,7 +811,12 @@ class ClientController extends AdminController
             $data['is_download_btn'] = 1;
         }
 
+        if(empty($data['parent_client_id'])){
+            $data['parent_client_id'] = null;
+        }
+
         $insert = $this->clientModel->insert($data);
+
         if ($insert) {
             $client_data = $this->clientModel->where(['id' => $insert, 'is_active' => 1])->first();
             return $this->respond(['status' => true, 'code' => 200, 'data' => $client_data], 200);
@@ -838,6 +845,9 @@ class ClientController extends AdminController
             $data['is_download_btn'] = 1;
         }
 
+        if(empty($data['parent_client_id'])){
+            $data['parent_client_id'] = null;
+        }
         // print_r($data);die;
 
         $update             = $this->clientModel->update($id, $data);
@@ -2170,6 +2180,7 @@ class ClientController extends AdminController
 
             $insurer_id = $client_policy_data['insurer_id'];
             $client_id = $client_policy_data['client_id'];
+            $insurer_branch_id = $client_policy_data['insurer_branch_id'];
 
             if (!empty($client_policy_data['policy_start_date'])) {
                 $client_policy_data['source_policy_start_date'] =  change_date_format($client_policy_data['policy_start_date'], 'Y-m-d', 'd/m/Y');
@@ -2190,7 +2201,8 @@ class ClientController extends AdminController
                 ->findAll();
 
             $client_policy_list = $this->clientPolicyModel->getPolicyTypeForPolicyBinding($client_id);
-            $cd_data = $this->CDMasterModel->where('client_id', $client_id)->where('insurer_id', $insurer_id)->where('is_active', 1)->findAll();
+            // $cd_data = $this->CDMasterModel->where('client_id', $client_id)->where('insurer_id', $insurer_id)->where('is_active', 1)->findAll();
+            $cd_data = $this->get_cd_ac($client_id, $insurer_id, $insurer_branch_id, "internal");
             // $client_policy_data['policy_end_date'] = date('d/m/Y', strtotime($client_policy_data['policy_end_date']));
             $fromDate = new \DateTime($client_policy_data['policy_end_date']);
             $fromDate->modify('+1 year');
@@ -2549,6 +2561,7 @@ class ClientController extends AdminController
             // $data['special_condition_label'] = str_replace(',', '', $this->request->getPost("special_condition_label")) ?? [];
             // $data['special_condition_input'] = str_replace(',', '', $this->request->getPost("special_condition_input")) ?? [];
             // $data['multiple_sum_insured'] = str_replace(',', '', $this->request->getPost("multiple_sum_insured")) ?? [];
+            
             $fields = [
                 'waiverofpreexistingdiseases' => false,
                 'waiverof1,2,3&4thyearexclusions' => false,
@@ -2595,18 +2608,17 @@ class ClientController extends AdminController
                 'special_condition_input' => true,
                 'multiple_sum_insured' => true,
             ];
-            
-            // $data = [];
-            
+                       
             foreach ($fields as $field => $needsCleanup) {
                 $value = $this->request->getPost($field);
             
                 if ($value !== null && $value !== '') {
                     $data[$field] = $needsCleanup ? str_replace(',', '', $value) : $value;
+                }else{
+                     $data[$field] = $value;
                 }
             }
             
-
             $data['enrollment_display_key'] = $this->enrollmentGMCDisplayValueTransform();
 
             // print_r($data);die;
@@ -2869,6 +2881,8 @@ class ClientController extends AdminController
         try {
             $this->myLogger->logme('error', 'Policy GPA Terms CREATE function called');
 
+            // print_r($this->request->getPost()); die;
+
             /*** Client Policy Table Primary Key(ID) ***/
             $client_policy_id = $this->request->getPost("client_policy_id");
 
@@ -2940,6 +2954,8 @@ class ClientController extends AdminController
                 $value = $this->request->getPost($field);
                 if ($value !== null) {
                     $data[$field] = str_replace(',', '', $value);
+                }else{
+                     $data[$field] = $value;
                 }
             }
             
@@ -2948,6 +2964,8 @@ class ClientController extends AdminController
                 $value = $this->request->getPost($field);
                 if ($value !== null) {
                     $data[$field] = $value;
+                }else{
+                     $data[$field] = $value;
                 }
             }
             
@@ -3555,23 +3573,64 @@ class ClientController extends AdminController
         return $this->respond(['status' => true, 'code' => 200, 'message' => 'Additionaly Rack Rate Data Remove Successfully'], 200);
     }
 
-    public function get_cd_ac($client_id, $insurer_id, $insurer_branch_id)
+    public function get_cd_ac($client_id, $insurer_id, $insurer_branch_id, $return_type = null)
     {
+        // Get client data
+        $client_data = $this->clientModel
+            ->where('is_active', 1)
+            ->where('id', $client_id)
+            ->first();
 
-        $cd_data = $this->CDMasterModel
+        $cd_data = [];
+
+        // If client has a parent, fetch parent client CD data
+        if (!empty($client_data['parent_client_id'])) {
+            $parent_cd_data = $this->CDMasterModel
+                ->where('client_id', $client_data['parent_client_id'])
+                ->where('insurer_id', $insurer_id)
+                ->where('insurer_branch_id', $insurer_branch_id)
+                ->where('is_active', 1)
+                ->findAll();
+
+            $cd_data = array_merge($cd_data, $parent_cd_data);
+        }
+
+        // Fetch current client CD data
+        $client_cd_data = $this->CDMasterModel
             ->where('client_id', $client_id)
             ->where('insurer_id', $insurer_id)
             ->where('insurer_branch_id', $insurer_branch_id)
             ->where('is_active', 1)
             ->findAll();
 
-        if ($cd_data) {
-            return $this->respond(['status' => true, 'code' => 200, 'data' => $cd_data], 200);
+        $cd_data = array_merge($cd_data, $client_cd_data);
+
+        if($return_type == "internal"){
+            if(!empty($cd_data)){
+                return $cd_data;
+            }else{
+                return [];
+            }
+        }
+
+        if (!empty($cd_data)) {
+            return $this->respond([
+                'status' => true,
+                'code' => 200,
+                'data' => $cd_data
+            ], 200);
         } else {
-            return $this->respond(['status' => false, 'code' => 404, 'insurer_id' => $insurer_id, 'client_id' => $client_id], 200);
+            return $this->respond([
+                'status' => false,
+                'code' => 404,
+                'client_id' => $client_id,
+                'insurer_id' => $insurer_id,
+                'insurer_branch_id' => $insurer_branch_id
+            ], 200);
         }
     }
 
+
     public function otherPolicyTermsFormSubmit()
     {
 
@@ -4100,22 +4159,60 @@ class ClientController extends AdminController
     }
 
 
-    
-    public function getCDAccNoByClientAndInsurer($client, $insurer, $insurer_branch_id)
+    public function getCDAccNoByClientAndInsurer($client_id, $insurer_id, $insurer_branch_id)
     {
-        $cdmData = $this->CDMasterModel
-                        ->where('client_id', $client)
-                        ->where('insurer_id', $insurer)
-                        ->where('insurer_branch_id', $insurer_branch_id)
-                        ->where('is_active', 1)
-                        ->findAll();
+        // Get client data
+        $client_data = $this->clientModel
+            ->where('is_active', 1)
+            ->where('id', $client_id)
+            ->first();
 
-        if ($cdmData) {
-            return $this->respond(['status' => true, 'data' => $cdmData], 200);
+        $cd_data = [];
+
+        // If client has a parent, fetch parent client CD data
+        if (!empty($client_data['parent_client_id'])) {
+            $parent_cd_data = $this->CDMasterModel
+                ->where('client_id', $client_data['parent_client_id'])
+                ->where('insurer_id', $insurer_id)
+                ->where('insurer_branch_id', $insurer_branch_id)
+                ->where('is_active', 1)
+                ->findAll();
+
+            $cd_data = array_merge($cd_data, $parent_cd_data);
+        }
+
+        // Fetch current client CD data
+        $client_cd_data = $this->CDMasterModel
+            ->where('client_id', $client_id)
+            ->where('insurer_id', $insurer_id)
+            ->where('insurer_branch_id', $insurer_branch_id)
+            ->where('is_active', 1)
+            ->findAll();
+
+        $cd_data = array_merge($cd_data, $client_cd_data);
+
+        if (!empty($cd_data)) {
+            return $this->respond([ 'status' => true,'code' => 200, 'data' => $cd_data], 200);
         } else {
-            return $this->respond(['status' => false], 200);
+            return $this->respond(['status' => false,'code' => 404,'client_id' => $client_id,'insurer_id' => $insurer_id,'insurer_branch_id' => $insurer_branch_id ], 200);
         }
     }
+    
+    // public function getCDAccNoByClientAndInsurer($client, $insurer, $insurer_branch_id)
+    // {
+    //     $cdmData = $this->CDMasterModel
+    //                     ->where('client_id', $client)
+    //                     ->where('insurer_id', $insurer)
+    //                     ->where('insurer_branch_id', $insurer_branch_id)
+    //                     ->where('is_active', 1)
+    //                     ->findAll();
+
+    //     if ($cdmData) {
+    //         return $this->respond(['status' => true, 'data' => $cdmData], 200);
+    //     } else {
+    //         return $this->respond(['status' => false], 200);
+    //     }
+    // }
 
     public function createClientWithMinimalData()
     {
@@ -4125,7 +4222,7 @@ class ClientController extends AdminController
         $client_data = [
             'client_type' => $postData['client_type'],
             'client_name' => $postData['client_name'],
-            'short_name' => $postData['short_name'],
+            'short_name' => $postData['short_name'] ?? $postData['client_name'],
             'pan' => $postData['pan'],
             'client_code' => generate_client_code(),
         ];
@@ -4943,24 +5040,24 @@ class ClientController extends AdminController
         
         // ---------- EMP SERVICE CONTROLLER --------------------------------------------------------------------------------
 
-        $employeeRestController = new EmployeeServiceController();
-        // $employeeRestController->excelFileDataValidation(['file_id' => 1629]); die;
-        // $employeeRestController->employeesOnboardPreprocess(['file_id' => 726]);
-        // $employeeRestController->employeesOnboardProcess(['file_id' => 835]);
-        // $employeeRestController->employeesEnrollmentInsert(['file_id' => 836]);
-        // $r = Jobs::addJob(['job_name' => 'employeesEnrollmentInsert','payload' => ['file_id' => 721]]);
         $empServiceController = new EmployeeServiceController();
         // $res = $empServiceController->excelFileFormatValidation(['file_id' => '865']);
         // $res = $empServiceController->excelFileDataValidation(['file_id' => '865']);
+        // $res = $empServiceController->employeesOnboardPreprocess(['file_id' => 726]);
+        // $res = $empServiceController->employeesOnboardProcess(['file_id' => 835]);
+        // $res = $empServiceController->employeesEnrollmentInsert(['file_id' => 836]);
         // $res = $empServiceController->employeesSIEnhanceProcess(['file_id' => '978']);
-        // $res = $empServiceController->employeeDisembark(['file_id' => '1681']); dd( $res); 
+        // $res = $empServiceController->employeeDisembark(['file_id' => '1681']); 
+        // $res = $empServiceController->employeesCorrectionProcess(['file_id' => '1681']); 
+        // dd( $res); 
+
+        // ---------- POLICY TRANSACTION CONTROLLER --------------------------------------------------------------------------------
 
         $policyTransactionController = new PolicyTransactionController();
         // $res = $policyTransactionController->validateInsurerStatement(['file_id' => '17']);
         // $res = $policyTransactionController->updateInsurerStatement(['file_id' => '22']);
         // dd('-----', $res);
 
-
         // ----------EMP DATA SERVICE CONTROLLER--------------------------------------------------------------------------------
 
         $batch_data = [
@@ -4991,44 +5088,26 @@ class ClientController extends AdminController
         // $client_policy_data = $this->clientPolicyModel->getPolicyDetailsForRemainder($client_id=159, $client_branch_id=126);
         // $dashBoardController->sendRemainderMail($client_policy_data);
 
-        // $EmpDataServiceController = new EmpDataServiceController();
         // $emp_data = $this->employeePolicyModel->getEmployeePolicyForEcard(12);
         // $ids = array_column($emp_data, 'id');
-        // $EmpDataServiceController->sendMailForDownloadingECard($ids);
         
         $EmpDataServiceController = new EmpDataServiceController();
-        // $return = $EmpDataServiceController->generateExcelForDeletion($batch_data); dd($return); die;
-        // $EmpDataServiceController->generateExcelForSIEnhancement($batch_data); die;
-        // $EmpDataServiceController->importInceptionFileValidation(['file_id' => 1932]); die;
-        // $EmpDataServiceController->importDeletionValidation(['file_id' => 304]); //for live
-        // $EmpDataServiceController->importSIEnhancementUpdateEndorsementID(['file_id' => 1199]); //for live
-        // $result = $EmpDataServiceController->importSIEnhancementValidation(['file_id' => 2496]); //for live
-        // $EmpDataServiceController->importInceptionUpdateTPAandUHID(['file_id' => 214]); //for live
-
-        // $result = $this->employeePolicyModel->getDeletionEmployeeDataForExportExcel($batch_data, 1); dd($result);
-        // $result = $this->employeePolicyModel->getSIEnhancementEmployeesDataForExportExcel($batch_data, 1);
+        // $res = $EmpDataServiceController->generateExcelForDeletion($batch_data); dd($return); die;
+        // $res = $EmpDataServiceController->generateExcelForSIEnhancement($batch_data); die;
+        // $res = $EmpDataServiceController->importInceptionFileValidation(['file_id' => 1932]); die;
+        // $res = $EmpDataServiceController->importDeletionValidation(['file_id' => 304]); //for live
+        // $res = $EmpDataServiceController->importSIEnhancementUpdateEndorsementID(['file_id' => 1199]); //for live
+        // $res = $EmpDataServiceController->importSIEnhancementValidation(['file_id' => 2496]); //for live
+        // $res = $EmpDataServiceController->importInceptionUpdateTPAandUHID(['file_id' => 214]); //for live
+        // $res = $EmpDataServiceController->importInceptionUpdateTPAandUHID(['file_id' => 310]); dd($res);//for live
+        // $res = $EmpDataServiceController->getInceptionBasePremium(["13332","13333","13334","13335","13336"]); dd($res);//for live
+        // $res = $EmpDataServiceController->getDeletionBasePremium(["13248","13250","13249","13247"], json_decode('{"employeeIds":["13248","13250","13249","13247"],"client_id":"3927","client_policy_id":"6183","client_branch_id":"1874","cd_ac_no":"CD9751909505","endorsement_no":"END1238","count":4,"event_name":"deletion","policy_name":"GMC","user_id":"48"}', true)); dd($res);//for live
+        // $res = $EmpDataServiceController->makeEntryForBDSPolicyTransaction(json_decode('{"client_policy_id":"6187","endorsement_no":null,"emp_count":5,"action_type":"inception","no_of_insured":3,"no_of_dependent":0}', true)); dd($res);//for live
+        // $res = $EmpDataServiceController->sendMailForDownloadingECard($ids);
+        // $res = $this->employeePolicyModel->getDeletionEmployeeDataForExportExcel($batch_data, 1); dd($result);
+        // $res = $this->employeePolicyModel->getSIEnhancementEmployeesDataForExportExcel($batch_data, 1);
         // return $this->downloadInsurerExcelExport($batch_data);
-        // dd($result); die;
-
-        // $empServiceController = new EmployeeServiceController();
-        // $res = $empServiceController->employeesOnboardPreprocess(['file_id' => '741']);
-
-        // $PolicyTransactionController = new PolicyTransactionController();
-        // $res = $PolicyTransactionController->validateInsurerStatement(['file_id' => '36']);
-
-        // $empServiceController = new EmployeeServiceController();
-        // $res = $empServiceController->excelFileDataValidation(['file_id' => '1101']);
-        // dd($res);
-
-        // $EmpDataServiceController = new EmpDataServiceController();
-        // $EmpDataServiceController->importInceptionFileValidation(['file_id' => 160]);
-
-        // $EmpDataServiceController = new EmpDataServiceController();
-        // $EmpDataServiceController->importInceptionUpdateTPAandUHID(['file_id' => 162]);
-        // $EmpDataServiceController->importInceptionFileValidation(['file_id' => 162]);
-        // $EmpDataServiceController->importDeletionValidation(['file_id' => 171]);
-        // $EmpDataServiceController->importDeletionUpdateEndorsementID(['file_id' => 171]);
-        // $EmpDataServiceController->importCorrectionUpdateEndorsementID(['file_id' => 188]);
+        // dd($res); die;
 
         // $params = [
         //     'client_policy_id' => 6090,
@@ -6147,7 +6226,7 @@ class ClientController extends AdminController
         }
     }
     
-    // ---------------------------------------------------------------------------------------------------
+    // ---------------- HR ACCESS CONTROL -----------------------------------------------------------------------------------
 
     public function viewHrAccessData()
     {   
@@ -6493,8 +6572,585 @@ class ClientController extends AdminController
         }
     }
 
+    // ------------------- DEMO CLIENT FUNCTION --------------------------------------------------------------------------------
 
+    // public function wipeDemoClient()
+    // {
+    //     // $this->myLogger->logme('error', "Wipe Demo Client function called");
+    //     $this->myLogger->logme('error', "Wipe Demo Client function called"); // Red text
 
+    //     $this->myLogger->logme('error', "Wipe Demo client Payload : " . json_encode($this->request->getPost() ?? []));
+    //     $client_id = $this->request->getPost('client_id');
+
+    //     if (empty($client_id)) {
+    //         return $this->respond(['status' => false, 'message' => 'Client id required'], 404);
+    //     }
+
+    //     // 1. Client Model
+    //     $client_data = $this->clientModel->where('id', $client_id)->where('is_active', 1)->first();
+    //     $this->myLogger->logme('error', "Client data : " . json_encode($client_data ?? []));
+
+    //     if (!empty($client_data)) {
+    //         $is_deleted = $this->clientModel->where('id', $client_id)->delete();
+
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Client data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "Client record does not exist.");
+    //         }
+    //     } else {
+    //         return $this->respond(['status' => false, 'message' => 'Client not found'], 404);
+    //     }
+
+    //     // 2. Client RM Model
+    //     $client_rm_data = $this->clientRMModel->where('client_id', $client_id)->first();
+    //     $this->myLogger->logme('error', "Client Relationship Manager data : " . json_encode($client_rm_data ?? []));
+
+    //     if (!empty($client_rm_data)) {
+    //         $is_deleted = $this->clientRMModel->where('client_id', $client_id)->delete();
+
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Client Relationship Manager data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "Client Relationship Manager record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Client Relationship Manager data not found.");
+    //     }
+
+    //     // 3. Client KYC Docs Model
+    //     $client_kyc_data = $this->clientKYCDocsModel->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Client KYC Docs data : " . json_encode($client_kyc_data ?? []));
+
+    //     if (!empty($client_kyc_data)) {
+    //         $is_deleted = $this->clientKYCDocsModel->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Client KYC Docs data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "Client KYC Docs record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Client KYC Docs data not found.");
+    //     }
+
+    //     // 4. Client Branch Model
+    //     $client_branch_data = $this->clientBranchModel->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Client Branch data : " . json_encode($client_branch_data ?? []));
+
+    //     $branch_ids = array_column($client_branch_data, 'id') ?? [];
+    //     $this->myLogger->logme('error', "Client Branch id count : " . count($branch_ids ?? []));
+
+    //     if (!empty($client_branch_data)) {
+
+    //         $is_deleted = $this->clientBranchModel->where('client_id', $client_id)->delete();
+
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Client Branch data removed successfully.");
+
+    //             if(!empty($branch_ids)){
+
+    //                 $level_contact_data = $this->levelContactModel->where('contact_type', 'client')->whereIn('ref_id', $branch_ids)->findAll();
+    //                 $this->myLogger->logme('error', "Level Contact data : " . json_encode($level_contact_data ?? []));
+
+    //                 $is_deleted = $this->levelContactModel->where('contact_type', 'client')->whereIn('ref_id', $branch_ids)->delete();
+    //                 if ($is_deleted) {
+    //                     $this->myLogger->logme('error', "Level Contact data removed successfully.");
+    //                 } else {
+    //                     $this->myLogger->logme('error', "Level Contact record does not exist. To delete");
+    //                 }
+
+    //             }else{
+    //                  $this->myLogger->logme('error', "Level Contact data not found.");
+    //             }
+
+    //         } else {
+    //             $this->myLogger->logme('error', "Client Branch record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Client Branch data not found.");
+    //     }
+
+    //     // 5. Client Policy Model
+    //     $client_policy_data = $this->clientPolicyModel->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Client Policy data : " . json_encode($client_policy_data ?? []));
+
+    //     $policy_ids = array_column($client_policy_data, 'id') ?? [];
+    //     $this->myLogger->logme('error', "Client Policy id count : " . count($policy_ids ?? []));
+
+    //     if (!empty($client_policy_data)) {
+    //         $is_deleted = $this->clientPolicyModel->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+
+    //             $this->myLogger->logme('error', "Client Policy data removed successfully.");
+
+    //             if(!empty($policy_ids)){
+
+    //                 $employee_policy_data = $this->employeePolicyModel->whereIn('client_policy_id', $policy_ids)->findAll();
+    //                 $this->myLogger->logme('error', "Employee Policy data count : " . count($employee_policy_data ?? []));
+
+    //                 $is_deleted = $this->employeePolicyModel->whereIn('client_policy_id', $policy_ids)->delete();
+    //                 if ($is_deleted) {
+    //                     $this->myLogger->logme('error', "Employee policy data removed successfully.");
+    //                 } else {
+    //                     $this->myLogger->logme('error', "Employee policy record does not exist. To delete");
+    //                 }
+
+    //             }else{
+    //                  $this->myLogger->logme('error', "Employee policy data not found.");
+    //             }
+
+    //         } else {
+    //             $this->myLogger->logme('error', "Client Policy record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Client Policy data not found.");
+    //     }
+
+    //     // 6. Employee Model
+    //     $employee_data = $this->employeeModel->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Employee data count : " . count($employee_data ?? []));
+
+    //     if (!empty($employee_data)) {
+
+    //         $is_deleted = $this->employeeModel->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Employee data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "Employee record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Employee data not found.");
+    //     }
+
+    //     // 7. Client Deposit Model
+    //     $client_deposit_data = $this->clientDepositModel->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Client Deposit data : " . json_encode($client_deposit_data ?? []));
+
+    //     if (!empty($client_deposit_data)) {
+    //         $is_deleted = $this->clientDepositModel->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Client Deposit data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "Client Deposit record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Client Deposit data not found.");
+    //     }
+
+    //     // 8. Policy Premium 1 Model
+    //     $policy_premium1_data = $this->policyPremium1Model->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Policy Premium 1 data count : " . count($policy_premium1_data ?? []));
+
+    //     if (!empty($policy_premium1_data)) {
+    //         $is_deleted = $this->policyPremium1Model->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Policy Premium 1 data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "Policy Premium 1 record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Policy Premium 1 data not found.");
+    //     }
+
+    //     // 9. Policy Premium 2 Model
+    //     $policy_premium2_data = $this->policyPremium2Model->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Policy Premium 2 data count: " . count($policy_premium2_data ?? []));
+
+    //     if (!empty($policy_premium2_data)) {
+    //         $is_deleted = $this->policyPremium2Model->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Policy Premium 2 data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "Policy Premium 2 record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Policy Premium 2 data not found.");
+    //     }
+
+    //     // 10. Notification Model
+    //     $notification_data = $this->notificationModel->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Notification data : " . json_encode($notification_data ?? []));
+
+    //     if (!empty($notification_data)) {
+    //         $is_deleted = $this->notificationModel->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Notification data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "Notification record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Notification data not found.");
+    //     }
+
+    //     // 11. CD Master Model
+    //     $cd_master_data = $this->CDMasterModel->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "CD Master data : " . json_encode($cd_master_data ?? []));
+
+    //     if (!empty($cd_master_data)) {
+    //         $is_deleted = $this->CDMasterModel->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "CD Master data removed successfully.");
+    //         } else {
+    //             $this->myLogger->logme('error', "CD Master record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "CD Master data not found.");
+    //     }
+
+    //     // 12. Policy Transaction Model
+    //     $policy_transaction_data = $this->policyTransactionModel->where('client_id', $client_id)->findAll();
+    //     $this->myLogger->logme('error', "Policy Transaction data : " . json_encode($policy_transaction_data ?? []));
+
+    //     $pt_ids = array_column($policy_transaction_data, 'id') ?? [];
+    //     $this->myLogger->logme('error', "Policy Transaction id count : " . count($pt_ids ?? []));
+
+    //     if (!empty($policy_transaction_data)) {
+    //         $is_deleted = $this->policyTransactionModel->where('client_id', $client_id)->delete();
+    //         if ($is_deleted) {
+    //             $this->myLogger->logme('error', "Policy Transaction data removed successfully.");
+
+    //             if(!empty($pt_ids)){
+
+    //                 $pt_co_share_data = $this->PTCOShareDetailsModel->whereIn('pt_id', $pt_ids)->findAll();
+    //                 $this->myLogger->logme('error', "PT CO Share data : " . json_encode($pt_co_share_data ?? []));
+
+    //                 $is_deleted = $this->PTCOShareDetailsModel->whereIn('pt_id', $pt_ids)->delete();
+    //                 if ($is_deleted) {
+    //                     $this->myLogger->logme('error', "PT CO Share data removed successfully.");
+    //                 } else {
+    //                     $this->myLogger->logme('error', "PT CO Share record does not exist. To delete");
+    //                 }
+
+    //             }else{
+    //                  $this->myLogger->logme('error', "PT CO Share data not found.");
+    //             }
+
+    //         } else {
+    //             $this->myLogger->logme('error', "Policy Transaction record does not exist. To delete");
+    //         }
+    //     } else {
+    //         $this->myLogger->logme('error', "Policy Transaction data not found.");
+    //     }
+
+    //     $this->myLogger->logme('error', "Wipe Demo Client function closed");
+    //     return $this->respond(['status' => true, 'message' => 'Demo client data wiped successfully'], 200);
+    // }
+
+    public function wipeDemoClient()
+    {
+        $this->myLogger->logme('error', "========================================");
+        $this->myLogger->logme('error', "WIPE DEMO CLIENT FUNCTION STARTED");
+        $this->myLogger->logme('error', "========================================");
+
+        $this->myLogger->logme('error', "Request Payload: " . json_encode($this->request->getPost() ?? []));
+        $client_id = $this->request->getPost('client_id');
+
+        if (empty($client_id)) {
+            $this->myLogger->logme('error', "ERROR: Client ID is required");
+            return $this->respond(['status' => false, 'message' => 'Client id required'], 404);
+        }
+
+        $this->myLogger->logme('error', "Client ID to wipe: " . $client_id);
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 1. CLIENT MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "1. PROCESSING CLIENT MODEL");
+        $client_data = $this->clientModel->where('id', $client_id)->where('is_active', 1)->first();
+        $this->myLogger->logme('error', "   Found Client Data: " . json_encode($client_data ?? []));
+
+        if (!empty($client_data)) {
+            $is_deleted = $this->clientModel->where('id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Client data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete client record");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ✗ Client not found or inactive");
+            return $this->respond(['status' => false, 'message' => 'Client not found'], 404);
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 2. CLIENT RM MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "2. PROCESSING CLIENT RM MODEL");
+        $client_rm_data = $this->clientRMModel->where('client_id', $client_id)->first();
+        $this->myLogger->logme('error', "   Found Client RM Data: " . json_encode($client_rm_data ?? []));
+
+        if (!empty($client_rm_data)) {
+            $is_deleted = $this->clientRMModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Client RM data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete Client RM record");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ℹ No Client RM data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 3. CLIENT KYC DOCS MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "3. PROCESSING CLIENT KYC DOCS MODEL");
+        $client_kyc_data = $this->clientKYCDocsModel->where('client_id', $client_id)->findAll();
+        $this->myLogger->logme('error', "   Found Client KYC Records: " . count($client_kyc_data ?? []));
+        $this->myLogger->logme('error', "   Client KYC Data: " . json_encode($client_kyc_data ?? []));
+
+        if (!empty($client_kyc_data)) {
+            $is_deleted = $this->clientKYCDocsModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Client KYC Docs data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete Client KYC Docs records");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ℹ No Client KYC Docs data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 4. CLIENT BRANCH MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "4. PROCESSING CLIENT BRANCH MODEL");
+        $client_branch_data = $this->clientBranchModel->where('client_id', $client_id)->findAll();
+        $branch_ids = array_column($client_branch_data, 'id') ?? [];
+        $this->myLogger->logme('error', "   Found Client Branch Records: " . count($client_branch_data ?? []));
+        $this->myLogger->logme('error', "   Branch IDs: " . json_encode($branch_ids));
+        $this->myLogger->logme('error', "   Client Branch Data: " . json_encode($client_branch_data ?? []));
+
+        if (!empty($client_branch_data)) {
+            $is_deleted = $this->clientBranchModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Client Branch data removed successfully");
+
+                // Delete related Level Contact data
+                if (!empty($branch_ids)) {
+                    $this->myLogger->logme('error', "   4a. PROCESSING RELATED LEVEL CONTACT DATA");
+                    $level_contact_data = $this->levelContactModel->where('contact_type', 'client')->whereIn('ref_id', $branch_ids)->findAll();
+                    $this->myLogger->logme('error', "      Found Level Contact Records: " . count($level_contact_data ?? []));
+                    $this->myLogger->logme('error', "      Level Contact Data: " . json_encode($level_contact_data ?? []));
+
+                    $is_deleted = $this->levelContactModel->where('contact_type', 'client')->whereIn('ref_id', $branch_ids)->delete();
+                    if ($is_deleted) {
+                        $this->myLogger->logme('error', "      ✓ Level Contact data removed successfully");
+                    } else {
+                        $this->myLogger->logme('error', "      ✗ Failed to delete Level Contact records");
+                    }
+                } else {
+                    $this->myLogger->logme('error', "   ℹ No Branch IDs available for Level Contact deletion");
+                }
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete Client Branch records");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ℹ No Client Branch data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 5. CLIENT POLICY MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "5. PROCESSING CLIENT POLICY MODEL");
+        $client_policy_data = $this->clientPolicyModel->where('client_id', $client_id)->findAll();
+        $policy_ids = array_column($client_policy_data, 'id') ?? [];
+        $this->myLogger->logme('error', "   Found Client Policy Records: " . count($client_policy_data ?? []));
+        $this->myLogger->logme('error', "   Policy IDs: " . json_encode($policy_ids));
+        $this->myLogger->logme('error', "   Client Policy Data: " . json_encode($client_policy_data ?? []));
+
+        if (!empty($client_policy_data)) {
+            $is_deleted = $this->clientPolicyModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Client Policy data removed successfully");
+
+                // Delete related Employee Policy data
+                if (!empty($policy_ids)) {
+                    $this->myLogger->logme('error', "   5a. PROCESSING RELATED EMPLOYEE POLICY DATA");
+                    $employee_policy_data = $this->employeePolicyModel->whereIn('client_policy_id', $policy_ids)->findAll();
+                    $this->myLogger->logme('error', "      Found Employee Policy Records: " . count($employee_policy_data ?? []));
+
+                    $is_deleted = $this->employeePolicyModel->whereIn('client_policy_id', $policy_ids)->delete();
+                    if ($is_deleted) {
+                        $this->myLogger->logme('error', "      ✓ Employee Policy data removed successfully");
+                    } else {
+                        $this->myLogger->logme('error', "      ✗ Failed to delete Employee Policy records");
+                    }
+                } else {
+                    $this->myLogger->logme('error', "   ℹ No Policy IDs available for Employee Policy deletion");
+                }
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete Client Policy records");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ℹ No Client Policy data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 6. EMPLOYEE MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "6. PROCESSING EMPLOYEE MODEL");
+        $employee_data = $this->employeeModel->where('client_id', $client_id)->findAll();
+        $this->myLogger->logme('error', "   Found Employee Records: " . count($employee_data ?? []));
+
+        if (!empty($employee_data)) {
+            $is_deleted = $this->employeeModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Employee data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete Employee records");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ℹ No Employee data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 7. CLIENT DEPOSIT MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "7. PROCESSING CLIENT DEPOSIT MODEL");
+        $client_deposit_data = $this->clientDepositModel->where('client_id', $client_id)->findAll();
+        $this->myLogger->logme('error', "   Found Client Deposit Records: " . count($client_deposit_data ?? []));
+        $this->myLogger->logme('error', "   Client Deposit Data: " . json_encode($client_deposit_data ?? []));
+
+        if (!empty($client_deposit_data)) {
+            $is_deleted = $this->clientDepositModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Client Deposit data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete Client Deposit records");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ℹ No Client Deposit data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 8. POLICY PREMIUM 1 MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "8. PROCESSING POLICY PREMIUM 1 MODEL");
+        $policy_premium1_data = $this->policyPremium1Model->where('client_id', $client_id)->findAll();
+        $this->myLogger->logme('error', "   Found Policy Premium 1 Records: " . count($policy_premium1_data ?? []));
+
+        if (!empty($policy_premium1_data)) {
+            $is_deleted = $this->policyPremium1Model->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Policy Premium 1 data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete Policy Premium 1 records");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ℹ No Policy Premium 1 data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 9. POLICY PREMIUM 2 MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "9. PROCESSING POLICY PREMIUM 2 MODEL");
+        $policy_premium2_data = $this->policyPremium2Model->where('client_id', $client_id)->findAll();
+        $this->myLogger->logme('error', "   Found Policy Premium 2 Records: " . count($policy_premium2_data ?? []));
+
+        if (!empty($policy_premium2_data)) {
+            $is_deleted = $this->policyPremium2Model->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "   ✓ Policy Premium 2 data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "   ✗ Failed to delete Policy Premium 2 records");
+            }
+        } else {
+            $this->myLogger->logme('error', "   ℹ No Policy Premium 2 data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 10. NOTIFICATION MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "10. PROCESSING NOTIFICATION MODEL");
+        $notification_data = $this->notificationModel->where('client_id', $client_id)->findAll();
+        $this->myLogger->logme('error', "    Found Notification Records: " . count($notification_data ?? []));
+        $this->myLogger->logme('error', "    Notification Data: " . json_encode($notification_data ?? []));
+
+        if (!empty($notification_data)) {
+            $is_deleted = $this->notificationModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "    ✓ Notification data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "    ✗ Failed to delete Notification records");
+            }
+        } else {
+            $this->myLogger->logme('error', "    ℹ No Notification data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 11. CD MASTER MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "11. PROCESSING CD MASTER MODEL");
+        $cd_master_data = $this->CDMasterModel->where('client_id', $client_id)->findAll();
+        $this->myLogger->logme('error', "    Found CD Master Records: " . count($cd_master_data ?? []));
+        $this->myLogger->logme('error', "    CD Master Data: " . json_encode($cd_master_data ?? []));
+
+        if (!empty($cd_master_data)) {
+            $is_deleted = $this->CDMasterModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "    ✓ CD Master data removed successfully");
+            } else {
+                $this->myLogger->logme('error', "    ✗ Failed to delete CD Master records");
+            }
+        } else {
+            $this->myLogger->logme('error', "    ℹ No CD Master data found");
+        }
+        $this->myLogger->logme('error', "----------------------------------------");
+
+        // ========================================
+        // 12. POLICY TRANSACTION MODEL DELETION
+        // ========================================
+        $this->myLogger->logme('error', "12. PROCESSING POLICY TRANSACTION MODEL");
+        $policy_transaction_data = $this->policyTransactionModel->where('client_id', $client_id)->findAll();
+        $pt_ids = array_column($policy_transaction_data, 'id') ?? [];
+        $this->myLogger->logme('error', "    Found Policy Transaction Records: " . count($policy_transaction_data ?? []));
+        $this->myLogger->logme('error', "    Policy Transaction IDs: " . json_encode($pt_ids));
+        $this->myLogger->logme('error', "    Policy Transaction Data: " . json_encode($policy_transaction_data ?? []));
+
+        if (!empty($policy_transaction_data)) {
+            $is_deleted = $this->policyTransactionModel->where('client_id', $client_id)->delete();
+            if ($is_deleted) {
+                $this->myLogger->logme('error', "    ✓ Policy Transaction data removed successfully");
+
+                // Delete related PT CO Share data
+                if (!empty($pt_ids)) {
+                    $this->myLogger->logme('error', "    12a. PROCESSING RELATED PT CO SHARE DATA");
+                    $pt_co_share_data = $this->PTCOShareDetailsModel->whereIn('pt_id', $pt_ids)->findAll();
+                    $this->myLogger->logme('error', "         Found PT CO Share Records: " . count($pt_co_share_data ?? []));
+                    $this->myLogger->logme('error', "         PT CO Share Data: " . json_encode($pt_co_share_data ?? []));
+
+                    $is_deleted = $this->PTCOShareDetailsModel->whereIn('pt_id', $pt_ids)->delete();
+                    if ($is_deleted) {
+                        $this->myLogger->logme('error', "         ✓ PT CO Share data removed successfully");
+                    } else {
+                        $this->myLogger->logme('error', "         ✗ Failed to delete PT CO Share records");
+                    }
+                } else {
+                    $this->myLogger->logme('error', "    ℹ No Policy Transaction IDs available for PT CO Share deletion");
+                }
+            } else {
+                $this->myLogger->logme('error', "    ✗ Failed to delete Policy Transaction records");
+            }
+        } else {
+            $this->myLogger->logme('error', "    ℹ No Policy Transaction data found");
+        }
+
+        $this->myLogger->logme('error', "========================================");
+        $this->myLogger->logme('error', "WIPE DEMO CLIENT FUNCTION COMPLETED");
+        $this->myLogger->logme('error', "Client ID: " . $client_id . " - Successfully processed");
+        $this->myLogger->logme('error', "========================================");
+
+        return $this->respond(['status' => true, 'message' => 'Demo client data wiped successfully'], 200);
+    }
 }
 
 
diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php
index 9d3eeecf..506b39a1 100755
--- a/app/Controllers/EmpDataServiceController.php
+++ b/app/Controllers/EmpDataServiceController.php
@@ -36,13 +36,13 @@ use App\Models\PTCOShareDetailsModel;
 
 use App\Controllers\Jobs;
 use App\Controllers\JobWorker;
-
-
+use App\Models\PolicyTypeModel;
 use PhpOffice\PhpSpreadsheet\Spreadsheet;
 use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
 use PhpOffice\PhpSpreadsheet\IOFactory;
 use PhpOffice\PhpSpreadsheet\Reader\Exception as SpreadsheetReaderException;
 use PhpParser\Node\Expr\Cast\Double;
+use Kint\Kint;
 
 use function PHPUnit\Framework\returnSelf;
 
@@ -199,13 +199,21 @@ class EmpDataServiceController extends BaseController
         
         $totals = round($totals, 2);
 
-        if($export_data['insurer_or_tpa'] == 'insurer') //check CD amt related issue for only insurer, not tpa
+        //check CD amt insufficient only insurer, not tpa // DO NOT REMOVE THIS
+        if($export_data['insurer_or_tpa'] == 'insurer')
         {
             if (!empty($cash_balance)) {
                 if ((int) $cash_balance['balance']  < (int) $totals) {
                     $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.');
                     $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.  CASH BALANCE : {balance}  and  TOTAL AMOUNT : {total}', ['balance' => $cash_balance['balance'], 'total' => $totals]);
-                    return 0;
+                     session()->set('cd_balance', false);
+                     session()->set('cd_amount', $cash_balance['balance']);
+                     session()->set('excel_file_amt', $totals);
+                }else{
+                     session()->set('cd_balance', true);
+                     session()->set('cd_amount', $cash_balance['balance']);
+                     session()->set('excel_file_amt', $totals);
+
                 }
             }
         }
@@ -700,13 +708,21 @@ class EmpDataServiceController extends BaseController
         // echo '
';
         // print_r($ids); die;
 
-        if($export_data['insurer_or_tpa'] == 'insurer') //check CD amt related issue for only insurer, not tpa
+        //check CD amt insufficiend for only insurer, not tpa // DO NOT REMOVE THIS
+        if($export_data['insurer_or_tpa'] == 'insurer')
         {
             if (!empty($cash_balance)) {
                 if ((int) $cash_balance['balance']  < (int) $rounded_totals) {
                     $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.');
                     $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.  CASH BALANCE : {balance}  and  TOTAL AMOUNT : {total}', ['balance' => $cash_balance['balance'], 'total' => $totals]);
-                    return 0;
+                    session()->set('cd_balance', false);
+                    session()->set('cd_amount', $cash_balance['balance']);
+                    session()->set('excel_file_amt', $rounded_totals);
+                }else{
+                    session()->set('cd_balance', true);
+                    session()->set('cd_amount', $cash_balance['balance']);
+                    session()->set('excel_file_amt', $rounded_totals);
+
                 }
             }
         }
@@ -1003,22 +1019,29 @@ class EmpDataServiceController extends BaseController
                 $cash_balance['balance'] = $balance['opening_bal'];
             }
 
+            // Calculate the total amount from the objects
+            $totals = 0;
+            foreach ($inceptionData as $item) {
+                $totals =  $totals + $item->total;
+            }
 
-            
-                // Calculate the total amount from the objects
-                $totals = 0;
-                foreach ($inceptionData as $item) {
-                    $totals =  $totals + $item->total;
-                }
              $totals = round($totals, 2);
             
-            if($export_data['insurer_or_tpa'] != 'tpa')// check overal emp premium amt with cd balance only for insurer export, not tpa export
+            
+             if($export_data['insurer_or_tpa'] != 'tpa')// check overal emp premium amt with cd balance only for insurer export, not tpa export
             { 
                 if (!empty($cash_balance)) {
                     if ((int) $cash_balance['balance']  < (int) $totals) {
                         $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.');
                         $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.  CASH BALANCE : {balance}  and  TOTAL AMOUNT : {total}', ['balance' => $cash_balance['balance'], 'total' => $totals]);
-                        return 0;
+                        session()->set('cd_balance', false);
+                        session()->set('cd_amount', $cash_balance['balance']);
+                        session()->set('excel_file_amt', $totals);
+                    }else{
+                        session()->set('cd_balance', true);
+                        session()->set('cd_amount', $cash_balance['balance']);
+                        session()->set('excel_file_amt', $totals);
+
                     }
                 }
             }
@@ -1359,6 +1382,8 @@ class EmpDataServiceController extends BaseController
         $batch_code = $file['batch_code'];
         $user_id = $file['created_by'];
 
+        $client_policy_data = $this->clientPolicyModel->where('id', $client_policy_id)->first();
+
         $insurer_or_tpa = $file['insurer_or_tpa'];
         if ($insurer_or_tpa == 'tpa') {
             $id = 'tpa_id';
@@ -1516,38 +1541,42 @@ class EmpDataServiceController extends BaseController
 
             //--- TPA ID Duplicate check start ---
 
-            $current_tpa_id = $excel_data[$key][13];
+            // Duplicate checking for only GMC's and GPA
+            if(in_array($client_policy_data['policy_type_id'], [1,2,3,4,5])){
+                $current_tpa_id = $excel_data[$key][13];
 
-            if (isset($tpa_id_all[$current_tpa_id])) {
+                if (isset($tpa_id_all[$current_tpa_id])) {
 
-                // Add the current row to errors
-                $errors[$key][] = [
-                    'row' => $key,
-                    'column' => 13,
-                    'db_data' => "Duplicate TPA ID Found",
-                    'excel_data' => $current_tpa_id
-                ];
-            
-                // Add all existing rows with the same TPA ID to errors
-                foreach ($tpa_id_all[$current_tpa_id] as $existing_row) {
-                    $errors[$existing_row][] = [
-                        'row' => $existing_row,
+                    // Add the current row to errors
+                    $errors[$key][] = [
+                        'row' => $key,
                         'column' => 13,
                         'db_data' => "Duplicate TPA ID Found",
                         'excel_data' => $current_tpa_id
                     ];
-                }
+                
+                    // Add all existing rows with the same TPA ID to errors
+                    foreach ($tpa_id_all[$current_tpa_id] as $existing_row) {
+                        $errors[$existing_row][] = [
+                            'row' => $existing_row,
+                            'column' => 13,
+                            'db_data' => "Duplicate TPA ID Found",
+                            'excel_data' => $current_tpa_id
+                        ];
+                    }
 
-            } else {
-                if($current_tpa_id != "" && $current_tpa_id != null){
-                    $tpa_id_all[$current_tpa_id][] = $key;
-                }            
+                } else {
+                    if($current_tpa_id != "" && $current_tpa_id != null){
+                        $tpa_id_all[$current_tpa_id][] = $key;
+                    }            
+                }
             }
             
             //--- TPA ID Duplicate check end ---
 
-            if ($insurer_or_tpa == 'tpa') {
+            if ($insurer_or_tpa == 'tpa' && in_array($client_policy_data['policy_type_id'], [1,2,3,4,5])) {
 
+                //verify the TPA ID is not null
                 if ($excel_data[$key][13] === null) {
                     $missing_id[$key][] = [
                         'row' => $key,
@@ -1557,6 +1586,8 @@ class EmpDataServiceController extends BaseController
                     ];
                 }
             } else if ($insurer_or_tpa == 'insurer') {
+
+                //verify the UHID or Risk ID is not null
                 if ($excel_data[$key][14] === null) {
                     $missing_id[$key][] = [
                         'row' => $key,
@@ -1699,7 +1730,7 @@ class EmpDataServiceController extends BaseController
                     ];
                 }
 
-            } else if ($insurer_or_tpa == 'insurer') {
+            } else if ($insurer_or_tpa == 'insurer' && in_array($client_policy_data['policy_type_id'], [1,2,3,4,5])) {
 
                  if ($emp_value['tpa_id'] != $excel_data[$key][13]) {
                     $errors[$key][] = [
@@ -1867,6 +1898,9 @@ class EmpDataServiceController extends BaseController
         $emp_endorsement_table_data = [];
         $enrollment_file_id = null;
         $endorsement_id = null;
+        $no_of_insured = [];
+        $no_of_dependent = [];
+
 
         $emp_count = count($excel_data);
         $db = \Config\Database::connect();
@@ -1886,7 +1920,7 @@ class EmpDataServiceController extends BaseController
                 $totals = $totals + floatval($amount);
 
                 $query = $db->table('employee_polices');
-                $query->select('employee_polices.id');
+                $query->select('employee_polices.id, employees.id as emp_id, employees.emp_code, employees.name as emp_name, employees.relationship');
                 $query->join('employees', 'employees.id = employee_polices.employee_id');
                 $query->where('employee_polices.client_policy_id', $client_policy_id);
                 $query->where('employees.client_id', $client_id);
@@ -1907,11 +1941,20 @@ class EmpDataServiceController extends BaseController
                 $query->limit(1);
 
                 $result = $query->get()->getRowArray();
+                // Kint::dump($result);    
+
                 if (isset($result['id']) && $result['id'] !== null) {
                     $emp_policy_ids[] = $result['id']; //for cash deposite
                     $emp_details[] = array('id' => $result['id'], 'tpa_id' => $value[13], 'uhid' => $value[14]);
+                    if (strtolower($result['relationship']) == 'self') {
+                        $no_of_insured[] = ['emp_id' => $result['emp_id'], 'emp_code' => $result['emp_code'], 'emp_name' => $result['emp_name'] ];
+                    }else{
+                        $no_of_dependent[] = ['emp_id' => $result['emp_id'], 'emp_code' => $result['emp_code'], 'emp_name' => $result['emp_name'] ];
+                    }
                 }
 
+
+
                 if(in_array($file['event_type'], ['missed_inception']) && isset($value[18])){
                     $endorsement_id = $value[18];
 
@@ -1973,7 +2016,7 @@ class EmpDataServiceController extends BaseController
 
         }
 
-        // dd($emp_endorsement_table_data, $enrollment_file_id);
+        // dd($emp_endorsement_table_data, $enrollment_file_id, $no_of_insured, $no_of_dependent);
 
         //update the employee policy data (TPAID or UHID)
         $return = $this->employeePolicyModel->bulkUpdate($emp_details);
@@ -1993,6 +2036,10 @@ class EmpDataServiceController extends BaseController
         $this->myLogger->logme('error', 'Inception Update TPA and UHID --    batch file status : {data}', ['data' => $status_val]);
         $this->myLogger->logme('error', 'Inception Update TPA and UHID --    total amount for cash deposite : {data}', ['data' => $totals]);
 
+        //get the BASE PREMIUM and GST for BDS Entry
+        $base_bremium_and_gst = $this->getInceptionBasePremium($emp_policy_ids);
+        $this->myLogger->logme('error', 'Inception Base Premium and GST :'. json_encode($base_bremium_and_gst ?? []));
+        
         //update CD transaction entry if only insurer
         if ($file['insurer_or_tpa'] == 'insurer') {
 
@@ -2035,6 +2082,10 @@ class EmpDataServiceController extends BaseController
                 'endorsement_no' => $endorsement_id ?? null,
                 'emp_count' => $emp_count ?? null,
                 'action_type' => $file['event_type'] ?? null,
+                'no_of_insured' => count($no_of_insured ?? []) ?? null,
+                'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
+                'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
+                'gst' => $base_bremium_and_gst['gst'] ?? null,
             ]]);
 
             // $this->cashDepositCalculationForInception($depositeData);
@@ -2977,6 +3028,8 @@ class EmpDataServiceController extends BaseController
         $endorsement_id = '';
         $enrollment_file_id = '';
         $endorsement_details = [];
+        $no_of_insured = [];
+        $no_of_dependent = [];
         $totals = 0;
 
         foreach ($excel_data as $key => $value) {
@@ -2989,7 +3042,14 @@ class EmpDataServiceController extends BaseController
 
             $result =  $this->empEndorsementModel
 
-                ->select('emp_endorsement.*, employees.id as emp_id, employee_polices.id as emp_policy_id')
+                ->select('
+                    emp_endorsement.*, 
+                    employees.id as emp_id, 
+                    employees.name as emp_name, 
+                    employees.emp_code, 
+                    employees.relationship, 
+                    employee_polices.id as emp_policy_id
+                ')
                 ->join('employee_polices', 'employee_polices.id = emp_endorsement.pk')
                 ->join('employees', 'employees.emp_code = emp_endorsement.emp_code')
                 ->where('employees.emp_code', $emp_code)
@@ -3015,6 +3075,11 @@ class EmpDataServiceController extends BaseController
                 $emp_policy_ids[] = array('id' => $result['emp_policy_id'], 'is_active' => 0);
                 $employeeIds[] = $result['emp_policy_id'];
                 $endorsement_details[] = array('id' => $result['id'], 'group_key' => $result['group_key'], 'endorsement_id' => $value[19], 'status' => 'complete');
+                if (strtolower($result['relationship']) == 'self') {
+                    $no_of_insured[] = ['emp_id' => $result['emp_id'], 'emp_code' => $result['emp_code'], 'emp_name' => $result['emp_name'] ];
+                }else{
+                    $no_of_dependent[] = ['emp_id' => $result['emp_id'], 'emp_code' => $result['emp_code'], 'emp_name' => $result['emp_name'] ];
+                }
             }
 
             $empData = $this->employeePolicyModel
@@ -3082,6 +3147,11 @@ class EmpDataServiceController extends BaseController
         $this->myLogger->logme('error', 'SI Enhancement Update Endorsement ID --      Employee count : {data}', ['data' => $emp_count]);
         $this->myLogger->logme('error', 'SI Enhancement Update Endorsement ID --      Batch File status : {data}', ['data' => $status_val]);
 
+        //get the BASE PREMIUM and GST for BDS Entry
+        $base_bremium_and_gst = $this->getInceptionBasePremium($employeeIds);
+        $this->myLogger->logme('error', 'SI Enhancement Base Premium and GST :'. json_encode($base_bremium_and_gst ?? []));
+
+
         //call the cash deposite function
         if ($file['insurer_or_tpa'] == 'insurer') {
 
@@ -3105,6 +3175,10 @@ class EmpDataServiceController extends BaseController
                 'endorsement_no' => $endorsement_id ?? null,
                 'emp_count' => $emp_count ?? null,
                 'action_type' => $file['event_type'] ?? null,
+                'no_of_insured' => count($no_of_insured ?? []) ?? null,
+                'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
+                'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
+                'gst' => $base_bremium_and_gst['gst'] ?? null,
             ]]);
 
         }
@@ -3493,6 +3567,8 @@ class EmpDataServiceController extends BaseController
         $employee_policy_table_primaryKey = [];
         $endorsement_id = '';
         $enrollment_file_id = null; //files table primary key
+        $no_of_insured = [];
+        $no_of_dependent = [];
 
         $totals = 0;
 
@@ -3526,6 +3602,12 @@ class EmpDataServiceController extends BaseController
                     $employee_policy_table_data[] = array('id' => $result['emp_policy_primarykey'], 'date_of_exit' => change_date_format($result['date_of_exit']), 'reason_for_exit' => $result['reason_for_exit'], 'claim_status' => $result['claim_status'], 'status' => $result['status']);
                     // $employees_table_data[] = array('id' => $result['employees_id'], 'emp_status' => $result['status']);
                     $emp_endorsement_table_data[] = array('id' => $result['emp_endorsement_primarykey'], 'group_key' => $result['group_key'], 'endorsement_id' => $value[15], 'status' => 'complete');
+                   
+                    if (strtolower($result['relationship']) == 'self') {
+                        $no_of_insured[] = ['emp_id' => $result['employees_primarykey'], 'emp_code' => $result['emp_code'], 'emp_name' => $result['emp_name'] ];
+                    }else{
+                        $no_of_dependent[] = ['emp_id' => $result['employees_primarykey'], 'emp_code' => $result['emp_code'], 'emp_name' => $result['emp_name'] ];
+                    }
                 }
 
             }
@@ -3575,6 +3657,9 @@ class EmpDataServiceController extends BaseController
         $this->myLogger->logme('error', 'Deletion Update Endorsement ID --      Employee count : {data}', ['data' => $emp_count]);
         $this->myLogger->logme('error', 'Deletion Update Endorsement ID --      Batch File status : {data}', ['data' => $status_val]);
 
+        $base_bremium_and_gst = $this->getDeletionBasePremium($employee_policy_table_primaryKey, ['client_policy_id' => $client_policy_id]);
+        $this->myLogger->logme('error', 'Deletion Base Premium and GST :'. json_encode($base_bremium_and_gst ?? []));
+
         //call the cash deposite function
         if ($file['insurer_or_tpa'] == 'insurer') {
 
@@ -3598,6 +3683,10 @@ class EmpDataServiceController extends BaseController
                 'endorsement_no' => $endorsement_id ?? null,
                 'emp_count' => $emp_count ?? null,
                 'action_type' => $file['event_type'] ?? null,
+                'no_of_insured' => count($no_of_insured ?? []) ?? null,
+                'no_of_dependent' => count($no_of_dependent ?? []) ?? null,
+                'base_premium' => $base_bremium_and_gst['base_premium'] ?? null,
+                'gst' => $base_bremium_and_gst['gst'] ?? null,
             ]]);
         }
 
@@ -4262,8 +4351,6 @@ class EmpDataServiceController extends BaseController
     }
 
 
-
-
     /**
      * Below function retrieves the policy name associated with a given client policy ID.
      *
@@ -4280,8 +4367,6 @@ class EmpDataServiceController extends BaseController
     }
 
 
-
-
     /**
      * Below function converts row data into column data format for SI enhancement.
      *
@@ -4838,8 +4923,8 @@ class EmpDataServiceController extends BaseController
             $this->myLogger->logme("error", "Policy transaction inserted successfully: " . json_encode(['insert_id' => $insert_id]));
 
             //do not remove this commented item
-            // $coShareDetails = $this->ConstructPTShareData($policy_data, $insert_id);
-            // $pt_co_share_id = $this->PTCOShareDetailsModel->insert($coShareDetails);
+            $coShareDetails = $this->ConstructPTShareData($policy_data, $insert_id, $params);
+            $pt_co_share_id = $this->PTCOShareDetailsModel->insert($coShareDetails);
 
             // $this->myLogger->logme("error", "PT Co share data inserted successfully: " . json_encode(['pt_co_share_id' => $pt_co_share_id]));
 
@@ -4875,11 +4960,12 @@ class EmpDataServiceController extends BaseController
 
     private function constructBDSData($policy_data, $lead_data, $params)
     {   
-
+        
+        $this->myLogger->logme("error", "constructBDSData Params: " . json_encode(['policy_data' => $policy_data, 'lead_data' => $lead_data, 'params' => $params]));
         $action_type_string = $params['action_type'];
-         if(in_array($params['action_type'], ['dependent_addition', 'missed_inception'])){
+        if(in_array($params['action_type'], ['dependent_addition', 'missed_inception'])){
             $action_type_string = "addition";
-         }
+        }
 
         $policyTransactionData = [
 
@@ -4900,9 +4986,9 @@ class EmpDataServiceController extends BaseController
             'policy_end_date' => $policy_data['policy_end_date'] ?? null,
             'data_received_date' => $policy_data['data_received_date'] ?? null,
             'closure_date' => $policy_data['closure_date'] ?? null,
-            'emp_count' => $policy_data['emp_count'] ?? null,
-            'dependent_count' => $policy_data['dependent_count'] ?? null,
-            'revenue_type' => ($lead_data['lead_type'] == 1 ? "NA" : ($lead_data['lead_type'] == 2 ? "EA" : "EANR") ) ?? null,
+            'emp_count' => $params['no_of_insured'] ?? null,
+            'dependent_count' => $params['no_of_dependent'] ?? null,
+            'revenue_type' => isset($lead_data['lead_type']) ?($lead_data['lead_type'] == 1 ? "NA" : ($lead_data['lead_type'] == 2 ? "EA" : "EANR") ) : null,
             'co_share' => $policy_data['co_share'] ?? 0,
             'pre_payable_by' => $policy_data['pre_payable_by'] ?? 1,
             'renewal_date' => $policy_data['policy_end_date'] ?? null,
@@ -4910,8 +4996,10 @@ class EmpDataServiceController extends BaseController
             'ct_type' => 1,
             'is_cd_reduce_from_bds' => 0,
             'client_type_id' => 0,
+            'bro_payable_by' => 1,
 
-            'status' => "co_insurer_pending",
+            // 'status' => "co_insurer_pending",
+            'status' => "completed",
             'action_type' => $action_type_string ?? null,
             'endorsement_no' => $params['endorsement_no'] ?? null,
 
@@ -4926,17 +5014,29 @@ class EmpDataServiceController extends BaseController
         return $policyTransactionData;
     }
 
-    private function ConstructPTShareData($policy_data, $pt_id)
+    private function ConstructPTShareData($policy_data, $pt_id, $params)
     {   
+        $policyTypeModel = new PolicyTypeModel();
+        $policy_type_data = $policyTypeModel->where('is_active', 1)->where('id', $policy_data['policy_type_id'])->first();
+
         $coShareData = [
             'pt_id' => $pt_id,
             'insurer_id' => $policy_data['insurer_id'],
             'insurer_branch_id' => $policy_data['insurer_branch_id'],
+            'bp_amt' => $params['base_premium'],
+            'cop_amt' => $params['base_premium'],
+            'bp_gst_amt' => $params['gst'],
+            'bp_sgst' => 9,
+            'bp_cgst' => 9,
             'co_share_type' => 1,
+            'co_share_per' => 100,
+            'standerd_bp_per' => $policy_type_data['ebp'],
+            'amount' => ($params['base_premium'] ?? 0) + ($params['gst'] ?? 0),
         ];
 
-        $this->myLogger->logme("error", "Constructed PT co-share data: " . json_encode($coShareData));
+        $coShareData['exp_amt'] = (($params['base_premium'] ?? 0) * ($policy_type_data['ebp'] ?? 0)) / 100;
 
+        $this->myLogger->logme("error", "Constructed PT co-share data: " . json_encode($coShareData));
 
         return $coShareData;
     }
@@ -5085,8 +5185,117 @@ class EmpDataServiceController extends BaseController
 
     }
 
+    // --------------------------------------------------------------------------------------------------------------------------------
+    
+    public function getInceptionBasePremium($ids)
+    {   
+        $this->myLogger->logme('error', 'getInceptionBasePremium called with the params : ' . json_encode($ids ?? ""));
+       
+        // Validate input
+        if (empty($ids) || !is_array($ids)) {
+            return ['base_premium' => 0, 'gst' => 0];
+        }
 
+        // Sanitize IDs to ensure they are integers
+        $sanitizedIds = array_filter(array_map('intval', $ids), function ($id) {
+            return $id > 0;
+        });
 
+        if (empty($sanitizedIds)) {
+            return ['base_premium' => 0, 'gst' => 0];
+        }
 
+        // Use parameter binding for security
+        $placeholders = str_repeat('?,', count($sanitizedIds) - 1) . '?';
 
+        $amount = $this->employeePolicyModel->query("
+            SELECT SUM(employee_polices.rata_premimum) AS base_premium, 
+                SUM(employee_polices.gst) AS gst
+            FROM employee_polices
+            JOIN employees ON employees.id = employee_polices.employee_id
+            WHERE employee_polices.id IN ($placeholders)
+        ", $sanitizedIds)->getRowArray();
+
+        $this->myLogger->logme('error', 'Get Last Executed Query : '.db_connect()->getLastQuery());
+
+        // Ensure we return proper numeric values
+        return [
+            'base_premium' => round($amount['base_premium'] ?? 0, 2),
+            'gst' => round($amount['gst'] ?? 0, 2)
+        ];
+    }
+
+    public function getDeletionBasePremium($ids, $params)
+    {   
+        $this->myLogger->logme('error', 'getDeletionBasePremium called with the params : ' . json_encode(['emp_policy_id' => $ids ?? [], 'params' => $params ?? []] ?? ""));
+
+        // Validate input
+        if (empty($ids) || !is_array($ids)) {
+            return ['base_premium' => 0, 'gst' => 0];
+        }
+
+        // Sanitize IDs to ensure they are integers
+        $sanitizedIds = array_filter(array_map('intval', $ids), function ($id) {
+            return $id > 0;
+        });
+
+        if (empty($sanitizedIds)) {
+            return ['base_premium' => 0, 'gst' => 0];
+        }
+
+        // Validate client_policy_id parameter
+        if (empty($params['client_policy_id'])) {
+            return ['base_premium' => 0, 'gst' => 0];
+        }
+
+        $get_insurer_id_from_client_policy = $this->clientPolicyModel
+            ->select('insurers.deletion_add_day')
+            ->join('insurers', 'client_policy.insurer_id = insurers.id')
+            ->where('client_policy.id', intval($params['client_policy_id']))
+            ->first();
+
+        $add_one_day = 0;
+        if (isset($get_insurer_id_from_client_policy['deletion_add_day']) && $get_insurer_id_from_client_policy['deletion_add_day'] == 1) {
+            $add_one_day = 1;
+        }
+
+        // Use parameter binding for security
+        $placeholders = str_repeat('?,', count($sanitizedIds) - 1) . '?';
+
+        // Prepare parameters array (ids repeated twice for both IN clauses)
+        $queryParams = array_merge($sanitizedIds, $sanitizedIds);
+
+        $amount = $this->employeePolicyModel->query("
+            SELECT 
+                SUM(ROUND(
+                    ((employee_polices.rata_premimum * (DATEDIFF(employee_polices.policy_end_date, emp_endorsement.new_value) + ?)) / 365), 
+                    2
+                )) AS base_premium,
+                SUM(ROUND(
+                    (((employee_polices.rata_premimum * (DATEDIFF(employee_polices.policy_end_date, emp_endorsement.new_value) + ?)) / 365) * 0.18), 
+                    2
+                )) AS gst
+            FROM 
+                employee_polices
+            JOIN 
+                employees ON employees.id = employee_polices.employee_id
+            JOIN 
+                emp_endorsement ON emp_endorsement.pk = employee_polices.id
+            WHERE 
+                employee_polices.id IN ($placeholders)
+                AND emp_endorsement.pk IN ($placeholders)
+                AND employee_polices.claim_status = 0
+                AND emp_endorsement.field_name = 'date_of_exit'
+                AND emp_endorsement.is_active = 1
+                AND emp_endorsement.actions = 'd'
+                AND emp_endorsement.status != 'truncated'
+        ", array_merge([$add_one_day, $add_one_day], $queryParams))->getRowArray();
+
+        $this->myLogger->logme('error', 'Get Last Executed Query : '.db_connect()->getLastQuery());
+        // Ensure we return proper numeric values with rounding
+        return [
+            'base_premium' => round($amount['base_premium'] ?? 0, 2),
+            'gst' => round($amount['gst'] ?? 0, 2)
+        ];
+    }
 }
diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php
index 512122c6..dd80cd05 100755
--- a/app/Controllers/EmployeeController.php
+++ b/app/Controllers/EmployeeController.php
@@ -302,9 +302,11 @@ class EmployeeController extends AdminController
         //for TPA/insurer upload
         $data['events'] = ['inception' => 'Inception (Employee + Dependents)', 'missed_inception' => 'Missed Inception (Employee + Dependents)', 'addition' => 'Addition (Employee + Dependents)', 'dependent_addition' => 'Dependent Addition (Only Dependents)', 'deletion' => 'Deletion', 'correction' => 'Correction', 'si_enhancement' => 'SI Enhancement'];
         //for inception upload
-        $data['actions'] = ['inception' => 'Inception (Employee + Dependents)',  'missed_inception' => 'Missed Inception (Employee + Dependents)', 'addition' => 'Addition (Employee + Dependents)', 'dependent_addition' => 'Dependent Addition (Only Dependents)', 'deletion' => 'Deletion', 'correction' => 'Correction', 'si_enhancement' => 'SI Enhancement','enrollment' => 'Enrolment'];
-
-        $data['import_or_export'] = ['import' => 'Import', 'export' => 'Export'];
+        $data['actions'] = ['inception' => 'Inception (Employee + Dependents)', 'missed_inception' => 'Missed Inception (Employee + Dependents)', 'addition' => 'Addition (Employee + Dependents)', 'dependent_addition' => 'Dependent Addition (Only Dependents)', 'deletion' => 'Deletion', 'correction' => 'Correction', 'si_enhancement' => 'SI Enhancement'];
+        // $data['actions'] = ['inception' => 'Inception (Employee + Dependents)',  'missed_inception' => 'Missed Inception (Employee + Dependents)', 'addition' => 'Addition (Employee + Dependents)', 'dependent_addition' => 'Dependent Addition (Only Dependents)', 'deletion' => 'Deletion', 'correction' => 'Correction', 'si_enhancement' => 'SI Enhancement','enrollment' => 'Enrolment'];
+        
+        // $data['import_or_export'] = ['import' => 'Import', 'export' => 'Export'];
+        $data['import_or_export'] = ['import' => 'Upload', 'export' => 'Download'];
         $data['insurer_or_tpa'] = ['insurer' => 'Insurer', 'tpa' => 'TPA'];
 
         // $data['fileList'] = $this->fileModel
diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php
index 938c9099..2cc47520 100755
--- a/app/Controllers/EmployeeServiceController.php
+++ b/app/Controllers/EmployeeServiceController.php
@@ -1319,6 +1319,7 @@ class EmployeeServiceController extends AdminController
         //get file name
         $file_id = $params['file_id'];
         $file = $this->fileModel->find($file_id);
+        // dd($file);
 
         $file_name_with_path = WRITEPATH."/uploads/excel/".$file['file_name'];
 
@@ -1330,6 +1331,7 @@ class EmployeeServiceController extends AdminController
         $excel_data = $sheet->rangeToArray('A1:' . $allowedHighestColumn['col_cell_name'] . $highestRowAndColumn['row']);
         // $excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
         
+        // dd($excel_data);
         unset($excel_data[0]);
         // kint::dump($excel_data);
         $endorsement_data = [];
@@ -1379,10 +1381,14 @@ class EmployeeServiceController extends AdminController
                         ->where('employee_polices.client_policy_id',$file['policy_id'])
                         ->where('employees.emp_status !=','truncated')
                         ->where('employees.is_active', 1)
+                        ->where('employee_polices.status !=','truncated')
+                        ->where('employee_polices.is_active', 1)
                         ->first();
 
             // $employee = $this->employeeModel->where('emp_code', $row[1])->where('name',$row[2])->where('client_id',$file['client_id'])->first();
             // dd($employee);
+            // kint::dump($employee);
+
             if(is_array($employee) && count($employee))
             {
                 // dd($employee);
@@ -1406,7 +1412,13 @@ class EmployeeServiceController extends AdminController
                                 
                                 if(!in_array($employee['id'],$endorsement_data))//make entry in endorsement firsttime only with checking that PK of emp exisintg in variable $endorsement_data
                                 {
-                                    $employee_policy = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$file['policy_id'])->first();
+                                    $employee_policy = $this->employeePolicyModel
+                                                            ->where('employee_id',$employee['id'])
+                                                            ->where('client_policy_id',$file['policy_id'])
+                                                            ->where('status !=','truncated')
+                                                            ->where('is_active', 1)
+                                                            ->first();
+
                                     $data = ['emp_id' => $employee['id'],'name' => $employee['name'],'emp_status' => $employee['emp_status'],'emp_policy_id' => $employee_policy['id'],'emp_code' => $employee['emp_code'],'change_event' => $employee['change_event'],'date_of_exit' => $employee_policy['date_of_exit'],'reason_for_exit' => $employee_policy['reason_for_exit'],'status' => $employee_policy['status'],'claim_status' => $employee_policy['claim_status']];
                                     $endorsement($data,$file,$row);
                                     $endorsement_data[] = $employee['id'];
@@ -1447,7 +1459,7 @@ class EmployeeServiceController extends AdminController
 
         //set success msg to pull notifications
         $this->setPullNotification($this->getFileMetaDataByFileId($file_id,'success'));
-         return $endorsement_data; 
+        return $endorsement_data; 
 
     }
 
diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php
index 178b5599..b1db3311 100644
--- a/app/Controllers/LeadsController.php
+++ b/app/Controllers/LeadsController.php
@@ -121,6 +121,7 @@ class LeadsController extends BaseController
         ];
 
         $this->claim_type_for_gpa = [
+            'nil' => 'Nil',
             'accident_death' => 'Accident Death',
             'permanent_total_disablement' => 'Permanent Total Disablement',
             'permanent_partial_disablement' => 'Permanent Partial Disablement',
@@ -1823,6 +1824,72 @@ class LeadsController extends BaseController
             $filename = "{$rfq_data['client_name']}_{$rfq_data['policy_type']}_{$string}_" . $policy_year . '_'  . '.xlsx';
         }
 
+        //claim history new sheet;
+        if (!empty($rfq_data['fin_years_claims'])) {
+
+            $claim_details = json_decode($rfq_data['fin_years_claims'], true) ?? [];
+
+            if (!empty($claim_details['finyear'])) {
+
+                // Get headers dynamically
+                $headers = array_map(function ($key) {
+                    return ucwords(str_replace('_', ' ', $key));
+                }, array_keys($claim_details['finyear'][0]));
+
+                $newSheet = new Worksheet($spreadsheet, 'Claims Experience');
+                $spreadsheet->addSheet($newSheet);
+                $spreadsheet->setActiveSheetIndexByName('Claims Experience');
+                $sheet = $spreadsheet->getActiveSheet();
+
+                // Set headers
+                $sheet->fromArray($headers, NULL, 'A1');
+
+                // Apply background color and bold style to headers
+                $headerCellRange = 'A1:' . chr(64 + count($headers)) . '1'; // e.g., A1:G1
+
+                $sheet->getStyle($headerCellRange)->getFont()->setBold(true);
+                $sheet->getStyle($headerCellRange)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB('ADD8E6');
+
+                // Add border to header
+                $sheet->getStyle($headerCellRange)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN);
+
+                // Fill data and apply borders
+                $row = 2;
+                foreach ($claim_details['finyear'] as $record) {
+                    $col = 'A';
+                    foreach ($record as $value) {
+                        $label = ucwords(str_replace('_', ' ', ($value ??  "")));
+                        $sheet->setCellValue($col . $row, $label);
+                        $col++;
+                    }
+
+                    // Apply border to each data row
+                    $sheet->getStyle('A' . $row . ':' . chr(64 + count($headers)) . $row)
+                        ->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN);
+
+                    $row++;
+                }
+                // Auto-size all columns based on header count
+                for ($i = 0; $i < count($headers); $i++) {
+                    $colLetter = chr(65 + $i); // 'A', 'B', etc.
+                    $sheet->getColumnDimension($colLetter)->setAutoSize(true);
+                }
+
+                // Enable wrap text for all cells
+                $maxColLetter = chr(64 + count($headers)); // Last column letter
+                $sheet->getStyle("A2:{$maxColLetter}{$row}")->getAlignment()->setWrapText(true);
+
+                // Optional: center vertically for neatness
+                $sheet->getStyle("A2:{$maxColLetter}{$row}")->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);
+
+                // Optional: Make row height auto (helps when wrap text is on)
+                for ($i = 2; $i < $row; $i++) {
+                    $sheet->getRowDimension($i)->setRowHeight(-1);
+                }
+
+            }
+        }
+
         // Save to temporary location
         $uploadFilePath = WRITEPATH . 'tmp/' . $filename;
         $writer = new Xlsx($spreadsheet);
diff --git a/app/Controllers/PolicyTransactionController.php b/app/Controllers/PolicyTransactionController.php
index 3d9ee4f6..dddedd54 100644
--- a/app/Controllers/PolicyTransactionController.php
+++ b/app/Controllers/PolicyTransactionController.php
@@ -1209,6 +1209,10 @@ class PolicyTransactionController extends BaseController
             $client_branch_id = $issue_type['client_branch_id'];
         }
 
+        // if($data['bro_payable_by'] == ""){
+        //     $data['bro_payable_by'] = $issue_type['bro_payable_by'];
+        // }
+
         if (!$data['id']) {
 
             $data += [
@@ -1224,7 +1228,7 @@ class PolicyTransactionController extends BaseController
                 'policy_end_date' => $issue_type['policy_end_date'] ?? null,
                 'revenue_type' =>  $issue_type['revenue_type'] ?? null,
                 'co_share' => $issue_type['co_share'] ?? 0,
-                'bro_payable_by' => $issue_type['bro_payable_by'] ?? 0,
+                'bro_payable_by' =>  $data['bro_payable_by'] == "" ? $issue_type['bro_payable_by'] ?? 0 :  $data['bro_payable_by'],
                 'installment' => $issue_type['installment'] ?? null,
                 'installment_data' => $issue_type['installment_data'] ?? null,
                 'location' => $issue_type['location'] ?? null,
@@ -2279,7 +2283,9 @@ class PolicyTransactionController extends BaseController
         // if all good return true, otherwise return false with messssage 
         foreach ($excel_data as $excel_key => $excel_row) {
             $is_row_empty = check_row_is_empty_or_null($excel_row);
+
             if (!$is_row_empty) {
+
                 // $excel_row = ExcelSanitizeHelper::sanitizeArrayData($excel_row);
                 $is_source_found = 0;
                 // Kint::dump($excel_key,$excel_row[1],$excel_row[2]);
@@ -2297,8 +2303,17 @@ class PolicyTransactionController extends BaseController
                 // Kint::dump($excel_key,$policy_no,$endorsement_no,$policy_start_date,$policy_end_date);//die();
                 foreach ($source_data as $source_key => $source_row) {
                     $source_endorsement_no = $source_row['endorsement_no'] !== null ? $source_row['endorsement_no'] : null;
-                    // Kint::dump($source_endorsement_no);
-                    if (($policy_no == $source_row['policy_no']) && $endorsement_no == $source_endorsement_no  && change_date_format($policy_start_date, 'd-m-Y', 'Y-m-d') == $source_row['policy_start_date'] &&  change_date_format($policy_end_date, 'd-m-Y', 'Y-m-d') == $source_row['policy_end_date'] && $client_name == $source_row['client_name']) 
+                    // Kint::dump($source_row, $source_endorsement_no, $policy_no, $endorsement_no);
+                    
+                    // if (($policy_no == $source_row['policy_no']) && $endorsement_no == $source_endorsement_no  && change_date_format($policy_start_date, 'd-m-Y', 'Y-m-d') == $source_row['policy_start_date'] &&  change_date_format($policy_end_date, 'd-m-Y', 'Y-m-d') == $source_row['policy_end_date'] && $client_name == $source_row['client_name']) 
+                    // {
+                    //     $is_source_found = 1;
+                    //     $line_items = $line_items + 1;
+                    //     unset($source_data[$source_key]);
+                    //     continue 2;
+                    // }  
+                    
+                    if (($policy_no == $source_row['policy_no']) && $endorsement_no == $source_endorsement_no) 
                     {
                         $is_source_found = 1;
                         $line_items = $line_items + 1;
@@ -2395,7 +2410,8 @@ class PolicyTransactionController extends BaseController
                 foreach ($source_data as $source_key => $source_row) {
                     // Kint::dump(change_date_format($excel_row[3],'d-m-Y','Y-m-d'));
                     $source_endorsement_no = $source_row['endorsement_no'] !== null ? $source_row['endorsement_no'] : null;
-                    if (($policy_no == $source_row['policy_no']) && $endorsement_no == $source_endorsement_no  && change_date_format($policy_start_date, 'd-m-Y', 'Y-m-d') == $source_row['policy_start_date'] &&  change_date_format($policy_end_date, 'd-m-Y', 'Y-m-d') == $source_row['policy_end_date'] && $client_name == $source_row['client_name']) {
+                    // if (($policy_no == $source_row['policy_no']) && $endorsement_no == $source_endorsement_no  && change_date_format($policy_start_date, 'd-m-Y', 'Y-m-d') == $source_row['policy_start_date'] &&  change_date_format($policy_end_date, 'd-m-Y', 'Y-m-d') == $source_row['policy_end_date'] && $client_name == $source_row['client_name']) {
+                    if (($policy_no == $source_row['policy_no']) && $endorsement_no == $source_endorsement_no) {
                         $is_source_found = 1;
 
                         //calculate percentage first
diff --git a/app/Controllers/TicketController.php b/app/Controllers/TicketController.php
index 6a311ea1..5e119628 100644
--- a/app/Controllers/TicketController.php
+++ b/app/Controllers/TicketController.php
@@ -20,6 +20,7 @@ use App\Models\EmployeePolicyModel;
 use App\Models\InsurerModel;
 use App\Models\EmployeeModel;
 use App\Models\TPAModel;
+use App\Models\ClaimFilesModel;
 
 use DOMDocument;
 use Psr\Log\LoggerInterface;
@@ -58,6 +59,7 @@ class TicketController extends BaseController
     protected $extraFieldsDisplayForFrontend;
     protected $insurerModel;
     protected $TPAModel;
+    protected $claimFilesModel;
 
     public function __construct()
     {
@@ -341,6 +343,7 @@ class TicketController extends BaseController
         $this->employeePolicyModel = new EmployeePolicyModel();
         $this->insurerModel = new InsurerModel();
         $this->TPAModel = new TPAModel();
+        $this->claimFilesModel = new ClaimFilesModel();
     }
 
     public function ticketList()
@@ -825,8 +828,12 @@ class TicketController extends BaseController
         // dd($data);
         $data['ticket_data'] = $ticket_data;
         $data['acms'] =  $this->employeeModel->getAcmUsingClientID($ticket_data['client_id']);
+        
+        $raw_json = $this->ticketMasterModel->getPolicyTermsJson($ticket_id) ;
+        
+        $decoded_top = json_decode($raw_json ?? "", true) ?? [];
+        $data['policy_terms'] = $this->recursive_json_decode($decoded_top);
 
-        // dd($data);
 
         return $this->loadLayout('ticket_edit_onbording', $data);
     }
@@ -2135,7 +2142,117 @@ class TicketController extends BaseController
         $date = \DateTime::createFromFormat($format, $value);
         return $date && $date->format($format) === $value;
     }
+
+    public function upload_url(){
+
+        $data = $this->request->getPost();
+
+        $insertArr = [];
+
+        foreach ($data['docs_name'] as $key => $eachData) {
+
+            if (!empty($eachData) ) {
+
+                    $insertData = [
+                        'doc_name' => $data['docs_name'][$key]??'',
+                        'url'      => $data['url'][$key]??'',
+                        'ticket_id'=> $data['ticket_id_url']??'',
+                        'created_by' => get_session_userid(),
+                        'is_active'  => 1
+                    ];
+                    
+                    $insertArr[] = $insertData;
+                    
+                }
+        }
+
+        if(!empty($insertArr)){
+                    // Insert into database
+                    $insert = $this->claimFilesModel->insertBatch($insertArr);
+        }
+        
+
+        if (isset($insert) && !empty($insert)) {
+            return $this->respond(['status' => true, 'message' => 'File uploaded successfully ']);
+        } else {
+            return $this->respond(['status' => false, 'message' => 'Failed to upload file ']);
+        }
     
+    }
+
+    public function getUrlDataByTicketId()
+    {
+        $ticket_id = $this->request->getPost('ticket_id');
+
+        if (!$ticket_id) {
+            return $this->response->setJSON([
+                'status' => false,
+                'message' => 'Ticket ID is required',
+                'data' => []
+            ]);
+        }
+
+        $urlData = $this->claimFilesModel
+                        ->where('ticket_id', $ticket_id)
+                        ->where('is_active',1)
+                        ->findAll();
+
+        return $this->response->setJSON([
+            'status' => true,
+            'data' => $urlData
+        ]);
+    }
+
+    public function remove_url()
+    {
+        $id = $this->request->getGet('id');
+
+        if (empty(trim($id))) {
+            return $this->response->setJSON([
+                'status' => false,
+                'message' => 'Invalid ID'
+            ]);
+        }
+
+        $updated = $this->claimFilesModel
+            ->where('id', $id)
+            ->set(['is_active' => 0])
+            ->update();
+
+        if ($updated) {
+            return $this->response->setJSON([
+                'status' => true,
+                'message' => 'URL successfully marked inactive.'
+            ]);
+        } else {
+            return $this->response->setJSON([
+                'status' => false,
+                'message' => 'Failed to update record.'
+            ]);
+        }
+    }
+
+    public function recursive_json_decode($input) {
+        if (is_string($input)) {
+            $decoded = json_decode($input, true);
+            if (json_last_error() === JSON_ERROR_NONE) {
+                return $this->recursive_json_decode($decoded); // continue decoding recursively
+            } else {
+                return $input;
+            }
+        }
+
+        if (is_array($input)) {
+            foreach ($input as $key => $value) {
+                $input[$key] = $this->recursive_json_decode($value);
+            }
+        }
+
+        return $input;
+    }
+
+
+
     
 
 }
diff --git a/app/Helpers/excel_import_export_helper.php b/app/Helpers/excel_import_export_helper.php
index ad484ffe..9c72c973 100755
--- a/app/Helpers/excel_import_export_helper.php
+++ b/app/Helpers/excel_import_export_helper.php
@@ -664,12 +664,18 @@ if(!function_exists('generate_insurer_based_excel')){
 
             $rowData = [];
             foreach ($excel_header_array as $header) {
+
                 $fieldName = $header['db_column_name'];
+                $defaultValue = isset($header['default_value']) ? $header['default_value'] : null;
 
                 if ($fieldName === 'index') {
                     $value = $serialNumber;
                 } else {
-                    $value = $row->$fieldName ?? '';
+                    if(empty($fieldName) && !empty($defaultValue)){
+                        $value = $defaultValue;
+                    }else{
+                        $value = $row->$fieldName ?? '';
+                    }
                 }
 
                 $rowData[] = $value;
diff --git a/app/Models/ClaimFilesModel.php b/app/Models/ClaimFilesModel.php
new file mode 100644
index 00000000..2a5ec138
--- /dev/null
+++ b/app/Models/ClaimFilesModel.php
@@ -0,0 +1,55 @@
+db->query("
             SELECT DISTINCT
@@ -1251,6 +1251,9 @@ class EmployeePolicyModel extends Model
                     ee.id as emp_endorsement_primarykey,
                     ep.id as emp_policy_primarykey,
                     e.id as employees_primarykey,
+                    e.relationship,
+                    e.emp_code,
+                    e.name as emp_name,
                     ee.file_id,
                     ee.group_key,
                     (
@@ -2098,4 +2101,6 @@ class EmployeePolicyModel extends Model
         // var_dump($this->db->getLastQuery());
         return $data;
     }
+
+    
 }
\ No newline at end of file
diff --git a/app/Models/PolicyTransactionModel.php b/app/Models/PolicyTransactionModel.php
index 5eabf684..ba9b2fcd 100644
--- a/app/Models/PolicyTransactionModel.php
+++ b/app/Models/PolicyTransactionModel.php
@@ -765,7 +765,12 @@ class PolicyTransactionModel extends Model
                 ), 
                 2
                 ) AS unbilled_amt,
-                 created_user.first_name as user_name
+                 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 `pt_co_share_details`.`follower_policy_no`
+                    ELSE `policy_transaction`.`policy_no` -- Default fallback
+                END AS `policy_no`
 
             ")
             ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left')
@@ -986,7 +991,12 @@ class PolicyTransactionModel extends Model
                 pt_co_share_details.tp_amt AS tp,
                 clients.pan,
                 DATE_FORMAT(policy_transaction.created_at, '%d %b %Y %h:%i %p') AS created_at,
-                user_profiles.first_name as user_name
+                user_profiles.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 `pt_co_share_details`.`follower_policy_no`
+                    ELSE `policy_transaction`.`policy_no` -- Default fallback
+                END AS `policy_no`
             ")
             ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left')
             ->join('clients', 'clients.id = policy_transaction.client_id', 'left')
@@ -1049,8 +1059,8 @@ class PolicyTransactionModel extends Model
 
         // Optimize Query Execution
         $builder->orderBy('policy_transaction.id', 'desc');
-
-        return $builder->get()->getResultArray();
+        $data = $builder->get()->getResultArray();
+        return $data;
     }
 
 
@@ -1065,7 +1075,12 @@ class PolicyTransactionModel extends Model
                     client_branch.branch_name as client_branch_name,
                     insurers.name AS insurer_name,
                     insurers.short_name AS insurer_short_name,
-                    policy_type.policy_type 
+                    policy_type.policy_type ,
+                    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 `pt_co_share_details`.`follower_policy_no`
+                        ELSE `policy_transaction`.`policy_no` -- Default fallback
+                    END AS `policy_no`
                 ')
             ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left')
             ->join('clients', 'policy_transaction.client_id = clients.id', 'left')
@@ -1228,7 +1243,12 @@ class PolicyTransactionModel extends Model
                             AND co_share_stmt_details.is_active = 1
                     ),
                     2
-                ) AS variance_amt
+                ) AS variance_amt,
+                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 `pt_co_share_details`.`follower_policy_no`
+                    ELSE `policy_transaction`.`policy_no` -- Default fallback
+                END AS `policy_no`
 
 
             ")
@@ -1317,7 +1337,6 @@ class PolicyTransactionModel extends Model
                 'clients.client_name',
                 'insurers.name AS insurer_name',
                 'policy_type.policy_type',
-                'policy_transaction.policy_no',
                 'policy_transaction.endorsement_no',
                 "CASE
                     WHEN policy_transaction.action_type = 'inception' THEN 'I'
@@ -1327,7 +1346,12 @@ class PolicyTransactionModel extends Model
                 'pt_co_share_details.bp_amt',
                 'pt_co_share_details.tp_amt',
                 'pt_co_share_details.tep_amt',
-                'policy_transaction.status'
+                'policy_transaction.status',
+                '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 `pt_co_share_details`.`follower_policy_no`
+                    ELSE `policy_transaction`.`policy_no` -- Default fallback
+                END AS `policy_no`'
             ])
             ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left')
             ->join('clients', 'clients.id = policy_transaction.client_id', 'left')
@@ -1417,7 +1441,12 @@ class PolicyTransactionModel extends Model
                 policy_transaction.action_type AS action_type_full,
                 pt_co_share_details.exp_amt,
                 pt_co_share_details.variance,
-                policy_transaction.status
+                policy_transaction.status,
+                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 `pt_co_share_details`.`follower_policy_no`
+                    ELSE `policy_transaction`.`policy_no` -- Default fallback
+                END AS `policy_no`
             ")
             ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left')
             ->join('clients', 'clients.id = policy_transaction.client_id', 'left')
@@ -1490,7 +1519,6 @@ class PolicyTransactionModel extends Model
                 clients.client_name,
                 insurers.name AS insurer_name,
                 policy_type.policy_type,
-                policy_transaction.policy_no,
                 policy_transaction.endorsement_no,
                 CASE
                     WHEN policy_transaction.action_type = 'inception' THEN 'I'
@@ -1525,7 +1553,12 @@ class PolicyTransactionModel extends Model
                         inv_payment_details.statement_id = insurer_statements.id
                         AND inv_payment_details.is_active = 1
                     ),
-                2) AS outstanding_amount
+                2) AS outstanding_amount,
+                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 `pt_co_share_details`.`follower_policy_no`
+                    ELSE `policy_transaction`.`policy_no` -- Default fallback
+                END AS `policy_no`
             ")
             ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left')
             ->join('insurer_statements', 'pt_co_share_details.statement_id = insurer_statements.id', 'left')
diff --git a/app/Models/TicketMasterModel.php b/app/Models/TicketMasterModel.php
index b85dad62..3a7c191a 100644
--- a/app/Models/TicketMasterModel.php
+++ b/app/Models/TicketMasterModel.php
@@ -953,4 +953,29 @@ class TicketMasterModel extends Model
             'ticket_ids' => $ticketIdsString
         ];
     }
+
+    public function getPolicyTermsJson($ticket_id)
+    {
+        $sql = " SELECT cp.policy_terms
+                    FROM ticket_master tm
+                    JOIN client_policy cp ON cp.id = tm.client_policy_id
+                    WHERE tm.id = ?
+                    AND   tm.is_active = 1
+                    AND   cp.is_active = 1
+        ";
+
+        $binds = [$ticket_id];
+        $query = $this->db->query($sql, $binds);
+
+        if ($query && $query->getNumRows() > 0) {
+            $row = $query->getRowArray();
+            return json_encode(['policy_terms' => $row['policy_terms']]);
+        }
+
+        return json_encode(['policy_terms' => null]);
+    }
+
+
+
+
 }
diff --git a/app/Views/UserList.php b/app/Views/UserList.php
index be654b8d..b7de1d73 100755
--- a/app/Views/UserList.php
+++ b/app/Views/UserList.php
@@ -1,4 +1,4 @@
- -->
+
+
+
 
     
@@ -96,7 +286,7 @@ table.dataTable tbody td { -