From 6d70b517dab8b4cad69449fb31096942a0799a15 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 13 Jun 2024 08:25:48 +0530 Subject: [PATCH 1/8] FEAT_CD_MASTER_AND_CD_RELATED_CHANGES : RV --- app/Config/Routes.php | 10 + app/Controllers/ClientController.php | 50 +++- app/Controllers/EmpDataServiceController.php | 52 +++- app/Controllers/MasterController.php | 106 +++++++ app/Helpers/DepositHelper.php | 17 +- app/Models/CDMasterModel.php | 64 +++++ app/Models/ClientDepositModel.php | 3 + app/Models/ClientPolicyModel.php | 6 +- app/Views/cd_master_list.php | 284 +++++++++++++++++++ app/Views/client_policy.php | 79 +++++- app/Views/layout/header.php | 3 + app/Views/view_deposit.php | 20 +- 12 files changed, 668 insertions(+), 26 deletions(-) create mode 100644 app/Models/CDMasterModel.php create mode 100644 app/Views/cd_master_list.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 7917751a..34426123 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -206,6 +206,14 @@ $routes->group("/master", ["filter" => "authMVC"], function ($routes) { $routes->get("remove/(:any)", "MasterController::removePolicyPolicies/$1"); }); }); + + $routes->group("cash_deposite", ["filter" => "authMVC"], function ($routes) { + $routes->get("list", "MasterController::CDMasterList"); + $routes->post("create", "MasterController::createCDMasterData"); + $routes->post("edit", "MasterController::editCDMasterData"); + $routes->get("list/(:any)", "MasterController::getCDMasterDataByID/$1"); + // $routes->get("remove/(:any)", "MasterController::policyTypeRemove/$1"); + }); }); @@ -234,6 +242,8 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get("get-client-branch/(:any)", "ClientController::getClientBranch/$1"); $routes->get("get-client-details/(:any)", "ClientController::getClientAllDetailsByUsingClientID/$1"); $routes->get("delete-additional-rack-rate/(:any)", "ClientController::deleteAdditionalRackRate/$1"); + $routes->get("check_cd_ac_no/(:any)", "MasterController::checkUniqueCDAccountNumber/$1"); + $routes->get("get_cd_ac/(:any)", "ClientController::get_cd_ac/$1"); }); $routes->cli('cli/processjob', 'JobWorker::processJob'); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 52b3dbca..5ee0296c 100644 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -31,6 +31,8 @@ use App\Models\PolicyPremium2Model; use App\Models\EmployeeModel; use App\Models\EmployeePolicyModel; use App\Models\NotificationModel; +use App\Models\CDMasterModel; + @@ -62,6 +64,8 @@ class ClientController extends AdminController protected $employeeModel; protected $employeePolicyModel; protected $notificationModel; + protected $CDMasterModel; + public function __construct() { @@ -90,6 +94,8 @@ class ClientController extends AdminController $this->employeeModel = new EmployeeModel(); $this->employeePolicyModel = new EmployeePolicyModel(); $this->notificationModel = new NotificationModel(); + $this->CDMasterModel = new CDMasterModel(); + @@ -205,8 +211,14 @@ class ClientController extends AdminController 2 => 'Adjustment', 3 => 'Refund', 4 => 'Debit', - // Add more options as needed ]; + $subTypeOptions = [ + 1 => 'Replenishment', + 2 => 'Adjustment', + 3 => 'RefundFromDeletion', + 4 => 'Debit', + ]; + $data['subTypeOptions'] = $subTypeOptions; $headerData['page_name'] = 'Client Deposit'; $data['insurerName']= $this->insurerModel->getInsurerName($insurerId); @@ -231,11 +243,22 @@ class ClientController extends AdminController // Retrieve form data from POST request $loggedInUserID = get_session_userid(); + $client_id = $this->request->getPost('client_id'); + $insurer_id = $this->request->getPost('insurer_id'); + + $CD_Account_Number = $this->CDMasterModel + ->where('client_id', $client_id) + ->where('insurer_id', $insurer_id['insurer_id']) + ->first(); + // Prepare the array with data $data = [ 'amount' => $this->request->getPost('amount'), 'sub_type_id' => $this->request->getPost('sub_type_id'), 'client_id' => $this->request->getPost('client_id'), + 'client_policy_id' => null, + 'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null, + 'endorsement_no' => null, 'insurer_id' => $this->request->getPost('insurer_id'), 'description' => $this->request->getPost('description'), 'transaction_type' => $this->request->getPost('transaction_type') ?: 'Credit', @@ -638,7 +661,8 @@ class ClientController extends AdminController $data['base_policy'] = $this->request->getPost('base_policy'); $data['policy_status'] = 1; $data['inception_type'] = $this->request->getPost('inception_type') ? 2 : 1; - $data['client_branch_id'] = $this->request->getPost('client_branch_id'); + $data['client_branch_id'] = $this->request->getPost('client_branch_id'); + $data['cd_ac_no'] = $this->request->getPost('cd_ac_no'); @@ -733,7 +757,8 @@ class ClientController extends AdminController $data['base_policy'] = $this->request->getPost('base_policy'); $data['policy_status'] = 1; $data['inception_type'] = $this->request->getPost('inception_type') ? 2 : 1; - $data['client_branch_id'] = $this->request->getPost('client_branch_id'); + $data['client_branch_id'] = $this->request->getPost('client_branch_id'); + $data['cd_ac_no'] = $this->request->getPost('cd_ac_no'); @@ -1140,9 +1165,10 @@ class ClientController extends AdminController $client_id = $client_policy_data['client_id']; $polices = $this->policesModel->where(['insurer_id' => $insurer_id, 'is_active' => 1])->findAll(); $client_policy_list = $this->clientPolicyModel->getpolicyWithPattern( $client_id ); + $cd_data = $this->CDMasterModel->where('client_id', $client_id)->where('insurer_id', $insurer_id)->findAll(); - return $this->respond(['status' => true,'code' => 200, 'client_policy_list' => $client_policy_list, 'data' => $client_policy_data, "insurer_id" => $client_policy_data['insurer_id'], 'policy' => $polices], 200); + return $this->respond(['status' => true,'code' => 200, 'client_policy_list' => $client_policy_list, 'data' => $client_policy_data, 'cd_data' => $cd_data, "insurer_id" => $client_policy_data['insurer_id'], 'policy' => $polices], 200); }else{ return $this->respond(['status' => false,'code' => 404, 'message' => 'no data found'], 200); } @@ -1942,10 +1968,6 @@ class ClientController extends AdminController $data['client_policy'] = $client_policy; - - - - $data['client_branch'] = $this->clientModel ->select(' @@ -2120,5 +2142,17 @@ class ClientController extends AdminController + public function get_cd_ac($client_id, $insurer_id){ + + $cd_data = $this->CDMasterModel->where('client_id', $client_id)->where('insurer_id', $insurer_id)->findAll(); + + if($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); + } + + } + } \ No newline at end of file diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index 1b3fa587..2d0febe4 100644 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -24,6 +24,7 @@ use App\Models\ClientDepositModel; use App\Models\NotificationModel; use App\Models\MessageModel; use App\Models\UserMessageModel; +use App\Models\CDMasterModel; use App\Controllers\Jobs; use App\Controllers\JobWorker; @@ -52,6 +53,8 @@ class EmpDataServiceController extends BaseController protected $notificationModel; protected $messageModel; protected $userMessageModel; + protected $CDMasterModel; + public function __construct() { @@ -70,6 +73,8 @@ class EmpDataServiceController extends BaseController $this->notificationModel = new NotificationModel(); $this->messageModel = new MessageModel(); $this->userMessageModel = new UserMessageModel(); + $this->CDMasterModel = new CDMasterModel(); + } @@ -138,6 +143,11 @@ class EmpDataServiceController extends BaseController $insurer_id = $this->clientPolicyModel->where('id', $export_data['client_policy_id'])->first(); $cash_balance = $this->clientDepositModel->where('client_id', $export_data['client_id'])->where('insurer_id', $insurer_id['insurer_id'])->orderBy('id', 'DESC')->first(); + if($cash_balance == null){ + + $cash_balance = $this->CDMasterModel->where('client_id', $export_data['client_id'])->where('insurer_id', $insurer_id['insurer_id'])->orderBy('id', 'DESC')->first(); + } + // Calculate the total amount from the objects $totals = array_reduce($objects, function ($carry, $item) { @@ -1083,6 +1093,13 @@ class EmpDataServiceController extends BaseController $batch_code = $file['batch_code']; $user_id = $file['created_by']; + $insurer_id = $this->clientPolicyModel->where('id', $client_policy_id)->first(); + + $CD_Account_Number = $this->CDMasterModel + ->where('client_id', $client_id) + ->where('insurer_id', $insurer_id['insurer_id']) + ->first(); + $get_policy_type = $this->clientPolicyModel ->select('policy_type.policy_type, policies.policy_type_id as policy_type_id') @@ -1192,6 +1209,8 @@ class EmpDataServiceController extends BaseController 'employeeIds' => $emp_policy_ids, 'client_id' => $client_id, 'client_policy_id' => $client_policy_id, + 'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null, + 'endorsement_no' => null, 'client_branch_id' => $client_branch_id, 'count' => $emp_count, 'event' => $file['event_type'], @@ -2095,6 +2114,13 @@ class EmpDataServiceController extends BaseController $batch_code = $file['batch_code']; $user_id = $file['created_by']; + $insurer_id = $this->clientPolicyModel->where('id', $client_policy_id)->first(); + + $CD_Account_Number = $this->CDMasterModel + ->where('client_id', $client_id) + ->where('insurer_id', $insurer_id['insurer_id']) + ->first(); + $status_val = 'success'; if ($status == 'in-progress-partially') { @@ -2113,7 +2139,7 @@ class EmpDataServiceController extends BaseController $emp_policy_ids = []; $employeeIds = []; $emp_details = []; - $endorsement_id = []; + $endorsement_id = ''; $endorsement_details = []; $totals = 0; @@ -2121,7 +2147,7 @@ class EmpDataServiceController extends BaseController $emp_name = $value[1]; $emp_code = $value[2]; - $endorsement_id[] = $value[19]; + $endorsement_id = $value[19]; $totals += $value[18]; @@ -2229,6 +2255,8 @@ class EmpDataServiceController extends BaseController 'client_id' => $client_id, 'client_policy_id' => $client_policy_id, 'client_branch_id' => $client_branch_id, + 'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null, + 'endorsement_no' => $endorsement_id ?? null, 'count' => $emp_count, 'event' => $file['event_type'], 'policy_name' => $policy_name['policy_name'], @@ -2633,6 +2661,13 @@ class EmpDataServiceController extends BaseController $batch_code = $file['batch_code']; $user_id = $file['created_by']; + $insurer_id = $this->clientPolicyModel->where('id', $client_policy_id)->first(); + + $CD_Account_Number = $this->CDMasterModel + ->where('client_id', $client_id) + ->where('insurer_id', $insurer_id['insurer_id']) + ->first(); + $status_val = 'success'; if ($status == 'in-progress-partially') { @@ -2653,6 +2688,7 @@ class EmpDataServiceController extends BaseController $emp_endorsement_table_data = []; $employee_policy_table_data = []; $employee_policy_table_primaryKey = []; + $endorsement_id = ''; $totals = 0; @@ -2662,6 +2698,7 @@ class EmpDataServiceController extends BaseController $emp_name = $value[2]; //employee name $emp_code = $value[1]; //employee code $totals = $totals + $value[13]; + $endorsement_id = $value[15]; $fetch_data = [ @@ -2733,6 +2770,8 @@ class EmpDataServiceController extends BaseController 'client_id' => $client_id, 'client_policy_id' => $client_policy_id, 'client_branch_id' => $client_branch_id, + 'cd_ac_no' => $CD_Account_Number['cd_ac_no'] ?? null, + 'endorsement_no' => $endorsement_id ?? null, 'count' => $emp_count, 'event' => $file['event_type'], 'policy_name' => $policy_name['policy_name'], @@ -3176,6 +3215,9 @@ class EmpDataServiceController extends BaseController 'amount' => $amount->total_sum ?? 0, 'sub_type_id' => 4, 'client_id' => $arrayData['client_id'], + 'client_policy_id' => $arrayData['client_policy_id'], + 'endorsement_no' => $arrayData['endorsement_no'] ?? null, + 'cd_ac_no' => $arrayData['cd_ac_no'] ?? null, 'insurer_id' => $insurer_id['insurer_id'], 'description' => $description, 'transaction_type' => 'Debit', @@ -3214,6 +3256,9 @@ class EmpDataServiceController extends BaseController 'amount' => $amount->total_sum, 'sub_type_id' => 4, 'client_id' => $arrayData['client_id'], + 'client_policy_id' => $arrayData['client_policy_id'], + 'endorsement_no' => $arrayData['endorsement_no'] ?? null, + 'cd_ac_no' => $arrayData['cd_ac_no'] ?? null, 'insurer_id' => $insurer_id['insurer_id'], 'description' => $description, 'transaction_type' => 'Debit', @@ -3254,6 +3299,9 @@ class EmpDataServiceController extends BaseController 'amount' => $amount->total_sum, 'sub_type_id' => 3, 'client_id' => $arrayData['client_id'], + 'client_policy_id' => $arrayData['client_policy_id'], + 'endorsement_no' => $arrayData['endorsement_no'] ?? null, + 'cd_ac_no' => $arrayData['cd_ac_no'] ?? null, 'insurer_id' => $insurer_id['insurer_id'], 'description' => $description, 'transaction_type' => 'Credit', diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index 8afffb88..f24f52a3 100644 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -25,6 +25,7 @@ use App\Models\TPABranchModel; use App\Models\TPAModel; use App\Models\StateModel; use App\Models\PolicyTypeModel; +use App\Models\CDMasterModel; class MasterController extends AdminController { @@ -45,6 +46,9 @@ class MasterController extends AdminController protected $tpaModel; protected $stateModel; protected $policyTypeModel; + protected $CDMasterModel; + protected $clientModel; + public function __construct() @@ -68,6 +72,9 @@ class MasterController extends AdminController $this->tpaModel = new TPAModel(); $this->stateModel = new StateModel(); $this->policyTypeModel = new PolicyTypeModel(); + $this->CDMasterModel = new CDMasterModel(); + $this->clientModel = new ClientModel(); + } public function insurerList() @@ -1111,4 +1118,103 @@ class MasterController extends AdminController } } + + + public function CDMasterList() + { + + $data['CD_Master_Data'] = $this->CDMasterModel + ->select('cd_master.*, clients.client_name, insurers.name as insurer_name, user_profiles.first_name as user_name') + ->join('clients', 'clients.id = cd_master.client_id') + ->join('insurers', 'insurers.id = cd_master.insurer_id') + ->join('user_profiles', 'user_profiles.id = cd_master.created_by') + ->where('cd_master.is_active', 1) + ->findAll(); + $data['insurers'] = $this->insurerModel->findAll(); + $data['clients'] = $this->clientModel->findAll(); + $this->loadLayout('cd_master_list', $data); + } + + + public function createCDMasterData() + { + + $data = $this->request->getPost(); + $date = (string) $this->request->getPost('opening_date'); + $data['opening_date'] = date('Y-m-d', strtotime($date)); + + + if ($data) { + + $insert = $this->CDMasterModel->insert($data); + + if ($insert) { + + session()->setFlashdata('success', "Cash Deposite Master Added Successfully"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } else { + + session()->setFlashdata('error', "Cash Deposite Master Added Failed"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } + } else { + + session()->setFlashdata('error', "Cash Deposite Master Added Failed. Data Not Found"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } + } + + + public function editCDMasterData($id = null) + { + + $id = $this->request->getPost('PrimaryKey'); + $date = (string) $this->request->getPost('opening_date'); + $data = $this->request->getPost(); + $data['opening_date'] = date('Y-m-d', strtotime($date)); + + if ($data) { + + $insert = $this->CDMasterModel->where('id', $id)->set($data)->update(); + + if ($insert) { + + session()->setFlashdata('success', "Cash Deposite Master Updated Successfully"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } else { + + session()->setFlashdata('error', "Cash Deposite Master Update Failed"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } + } else { + + session()->setFlashdata('error', "Cash Deposite Master Update Failed. Data Not Found"); + return redirect()->to(base_url('/master/cash_deposite/list')); + } + } + + public function getCDMasterDataByID($id = null) + { + + $cd_data = $this->CDMasterModel->where('id', $id)->first(); + $cd_data['opening_date'] = date('d-m-Y', strtotime($cd_data['opening_date'])); + + if ($cd_data) { + return $this->respond(['status' => true, 'code' => 200, 'data' => $cd_data], 200); + } else { + return $this->respond(['status' => false, 'code' => 404], 200); + } + } + + public function checkUniqueCDAccountNumber($AccountNumber) + { + $uniqueAC = $this->CDMasterModel->where('cd_ac_no', $AccountNumber)->findAll(); + + if($uniqueAC != null){ + return $this->respond(['status' => true, 'message' => 'The CD Account Number is Already Exist', 'code' => 200], 200); + }else{ + return $this->respond(['status' => false, 'code' => 404], 200); + } + } + } \ No newline at end of file diff --git a/app/Helpers/DepositHelper.php b/app/Helpers/DepositHelper.php index a25aff9e..7d3c713d 100644 --- a/app/Helpers/DepositHelper.php +++ b/app/Helpers/DepositHelper.php @@ -4,6 +4,7 @@ namespace App\Helpers; use App\Models\ClientDepositModel; +use App\Models\CDMasterModel; class DepositHelper { @@ -49,6 +50,9 @@ class DepositHelper 'amount' => $data['amount'], 'sub_type' => $data['sub_type_id'], 'client_id' => $data['client_id'], + 'client_policy_id' => $data['client_policy_id'], + 'cd_ac_no' => $data['cd_ac_no'], + 'endorsement_no' => $data['endorsement_no'], 'insurer_id' => $data['insurer_id'], 'description' => $data['description'], 'transaction_type' => $data['transaction_type'], @@ -90,7 +94,18 @@ class DepositHelper $getLastBalanceQuery = "SELECT balance FROM cash_deposit WHERE client_id = ? AND insurer_id = ? ORDER BY created_at DESC LIMIT 1"; $getLastBalanceParams = [$clientId, $insurerId]; - $lastBalance = $model->query($getLastBalanceQuery, $getLastBalanceParams)->getRow()->balance ?? 0; + $lastBalance = $model->query($getLastBalanceQuery, $getLastBalanceParams)->getRow()->balance; + + if(!$lastBalance){ + + $cd_model = new ClientDepositModel(); + + $getLastBalanceQuery = "SELECT opening_bal FROM cd_master WHERE client_id = ? AND insurer_id = ? ORDER BY created_at DESC LIMIT 1"; + $getLastBalanceParams = [$clientId, $insurerId]; + + $lastBalance = $cd_model->query($getLastBalanceQuery, $getLastBalanceParams)->getRow()->opening_bal ?? 0; + + } return $lastBalance; } diff --git a/app/Models/CDMasterModel.php b/app/Models/CDMasterModel.php new file mode 100644 index 00000000..491d1007 --- /dev/null +++ b/app/Models/CDMasterModel.php @@ -0,0 +1,64 @@ +select('cash_deposit.*') ->select('insurers.name as insurer_name, insurers.short_name as insurer_short') ->select('clients.client_name as clientname, clients.short_name as clientshort') + ->select('policies.name as policy_name') ->select('user_profiles.first_name as username') ->join('user_profiles','user_profiles.id=cash_deposit.created_by') ->join('insurers', 'insurers.id = cash_deposit.insurer_id') ->join('clients', 'clients.id = cash_deposit.client_id') + ->join('client_policy', 'client_policy.id = cash_deposit.client_policy_id') + ->join('policies', 'policies.id = client_policy.policy_id') ->where('cash_deposit.client_id', $clientId) ->where('cash_deposit.insurer_id', $insurerId) // Add this line to filter by insurer_id diff --git a/app/Views/cd_master_list.php b/app/Views/cd_master_list.php new file mode 100644 index 00000000..fde9f69a --- /dev/null +++ b/app/Views/cd_master_list.php @@ -0,0 +1,284 @@ + + +
+
+
+
+
+
+

CD Master List

+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Client NameInsurer NameOpening DateCD Account NoDeposite AmountDate/UserAction
by + + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/app/Views/client_policy.php b/app/Views/client_policy.php index 34a1cd9e..4bb0b618 100644 --- a/app/Views/client_policy.php +++ b/app/Views/client_policy.php @@ -121,13 +121,22 @@
@@ -521,10 +530,13 @@ $(document).ready(function() { /********* To get the POLICY base on Insurer *******/ $('#insurer').change(function() { + var id = $(this).val(); + var client_id = $('#client_id_policy').val() var parts = id.split('-'); var secondPart = parts[1]; var url = "" + secondPart; + var url_for_cd = "" + client_id + '/' + secondPart; var selectedOption = $('#base_policy').find(':selected'); var base_policy_data_id = selectedOption.data('id'); @@ -597,6 +609,26 @@ console.error(xhr.responseText); console.error(status, error); }); + + + $.get(url_for_cd, function(response){ + + console.log(response) + console.log(response.data) + + if(response.status == false && response.insurer_id != 'undefined'){ + toastr.warning('The CD Account Number not found.', 'Warning'); + return; + } + + appendCDACNO(response.data) + + }).fail(function(xhr, status, error) { + console.error(xhr.responseText); + console.error(status, error); + }); + + }); }); @@ -730,6 +762,7 @@ $('#policy_status').val(checkDateStatus(res.data.policy_end_date)); $('#policy_status_field').show(); + if (res.data.inception_type == 2) { $('#inception_type').prop('checked', true); } else { @@ -841,6 +874,12 @@ }, 3000); + setTimeout(function(){ + appendCDACNO(res.cd_data, res.data.cd_ac_no) + }, 3000) + + + }, error: function(xhr, status, error) { console.error(xhr.responseText); @@ -1528,4 +1567,32 @@ }); }) + + + function appendCDACNO(data, select = null) { + + console.log('appendCDACNO', data); + console.log('appendCDACNO', select); + + $('#cd_ac_no').empty(); + $('#cd_ac_no').append($('