Merge branch 'dev' of bitbucket.org:jubilian/nhance into dev

This commit is contained in:
aadhavan valli 2024-04-26 09:29:40 +05:30
commit 91e889f1e2
27 changed files with 2650 additions and 336 deletions

View File

@ -17,6 +17,8 @@ $routes->get('/logout', 'LoginController::logout');
$routes->get('/oauth2callback', 'LoginController::receiveGoogleOAuthResponse');
$routes->get('/auth/google', 'LoginController::initiateGoogleOAuth');
$routes->get('/update-emp-policy-status', 'ClientController::updateEmpAndPolicyStatus');
$routes->get('download-e-card/(:segment)/(:segment)', 'EmployeeController::generateIDCardForEmployee/$1/$2');
$routes->group("/user", ["filter" => "authMVC"], function($routes){
@ -114,6 +116,7 @@ $routes->group("/employee", ["filter" => "authMVC"], function($routes){
$routes->post("upload", "EmployeeController::employeesUplodWithEvents");
$routes->get("excel_error/(:any)", "EmployeeController::getExcelFileErrors/$1");
$routes->get("endorsement-list", "EmployeeController::endorsementList");
$routes->get("truncate/(:any)", "EmployeeController::truncateFileData/$1");
});
@ -216,7 +219,9 @@ $routes->group("/util", ["filter" => "authMVC"], function($routes){
$routes->get("view-success-emp-list", "EmployeeController::viewUploadedEmployeeList/$1");
$routes->get("fetch-policy-for-policy-type", "ClientController::fetchPolicyDataForPolicyType/$1");
$routes->get("fetch-emp-count/(:any)", "EmployeeController::getEmpCount/$1");
$routes->get("init-Emp-onboard/(:any)", "EmployeeController::initiateManualEmployeesOnboardProcess/$1");
$routes->get("full-excel-error-file/(:any)", "EmployeeController::downloadFullExcelErrorFile/$1");
$routes->get("id-card", "EmployeeController::viewECard/$1");
});
$routes->cli('cli/processjob', 'JobWorker::processJob');
@ -261,7 +266,15 @@ $routes->group("employeeRest", ["filter" => "authJWT"], function($routes){
$routes->get("getClientPolicy", "EmployeeRestController::getClientPolicy");
$routes->get("getClientDetails", "EmployeeRestController::getClientDetails");
$routes->get("getAddOnPolicy", "EmployeeRestController::getAddOnPolicy");
$routes->get("iAgreeForAddOn", "EmployeeRestController::iAgreeForAddOn");
$routes->post("iAgreeForAddOn", "EmployeeRestController::iAgreeForAddOn");
$routes->get("exportDataByClientPolicyId", "EmployeeRestController::exportDataByClientPolicyId");
$routes->get("getCashDepositData", "EmployeeRestController::getCashDepositData");
$routes->get("exportCashDepositData", "EmployeeRestController::exportCashDepositData");
$routes->get("removeEmpAndEmpPolicyData", "EmployeeRestController::removeEmpAndEmpPolicyData");
});
$routes->post("sendEmail", "EmployeeRestController::send_email");

View File

@ -921,6 +921,39 @@ class ClientController extends AdminController
}
$data = $this->request->getPost();
$insert = true;
}else if($policy_grid_id == '12'){
$premium=$this->request->getPost('12_premium[]');
$sum_insure =$this->request->getPost('12_si[]');
$relationship =$this->request->getPost('12_relationship[]');
for ($i=0; $i < count($premium) ; $i++) {
$data['premium'] = str_replace(',', '',$premium[$i]);
$data['si'] = str_replace(',', '', $sum_insure[$i]);
$data['relationship'] = $relationship[$i];
$dataa= $this->policyPremium2Model->insert($data);
}
$data = $this->request->getPost();
$insert = true;
}else if($policy_grid_id == '13'){
$premium=$this->request->getPost('13_premium[]');
$sum_insure =$this->request->getPost('13_si[]');
$age_from =$this->request->getPost('13_age_from[]');
$age_to =$this->request->getPost('13_age_to[]');
$relationship =$this->request->getPost('13_relationship[]');
for ($i=0; $i < count($premium) ; $i++) {
$data['premium'] = str_replace(',', '',$premium[$i]);
$data['si'] = str_replace(',', '', $sum_insure[$i]);
$data['age_from'] = $age_from[$i];
$data['age_to'] = $age_to[$i];
$data['relationship'] = $relationship[$i];
$dataa= $this->policyPremium2Model->insert($data);
}
$data = $this->request->getPost();
$insert = true;
}
if($insert){
@ -1003,17 +1036,31 @@ class ClientController extends AdminController
$family_floater=json_decode($record['policy_terms'])->family_floater;
}
$policy_terms_data = json_decode($record['policy_terms']);
$self = "";
if ($policy_terms_data !== null && isset($policy_terms_data->family_floaters)) {
$self = $policy_terms_data->family_floaters;
}
$emp_count = $this->employeeModel ->join('client_policy cp',"employees.client_id = cp.client_id")
->join('employee_polices ep',"cp.id = ep.client_policy_id AND employees.id = ep.employee_id")
->where("employees.client_id",$record['client_id'])
->where("employees.emp_status",'active')
->countAllResults();
if($emp_count == 0){
$emp_count = true;
}else{
$emp_count = false;
}
$data = $this->employeePolicyModel->select('employee_polices.id')
->where('employee_polices.is_active', 1)
->where('employee_polices.client_policy_id', $client_policy_id)
->findAll();
$emp_count = count($data);
// if($emp_count == 0){
// $emp_count = true;
// }else{
// $emp_count = false;
// }
$data = $this->policesModel->getPolicyPremium($record['policy_id']);
@ -1054,26 +1101,25 @@ class ClientController extends AdminController
if($search_term === 'GMC'){
$resultss = [];
if ($family_floater == 1) {
try {
foreach ($results as $index => $record) {
if ($index == '8' || $index == '7') {
// Clearing the $results array
$resultss[$index] = $record;
if ($self->self == 1 && $self->spouse == 0 && $self->childrens == 0 && $self->parents == 0 && $self->{'parents-in-law'} == 0 && $self->{'either-parents-pil'} == 0 && $family_floater == 0) {
if ($index == '0' || $index == '1' || $index == '2') {
$resultss[$index] = $record;
}
} else {
if ($index == '3' || $index == '4' || $index == '5' || $index == '6' || $index == '8' || $index == '7' || $index == '9' || $index == '10') {
$resultss[$index] = $record;
}
}
}
}else if($family_floater == 0){
foreach ($results as $index => $record) {
if ($index == '0' || $index == '1' || $index == '2' || $index == '3' || $index == '4' || $index == '5' || $index == '6') {
// Clearing the $results array
$resultss[$index] = $record;
}
}
}else{
foreach ($results as $index => $record) {
$resultss[$index] = $record;
}
} catch (\Exception $e) {
$resultss = $results; // Reset $resultss to an empty array if an exception occurs
}
$premiumDataa ='';
if ($family_floater == 0) {
// print_r($premiumData);die;
@ -1086,7 +1132,7 @@ class ClientController extends AdminController
else if($family_floater == 1){
if(count($premiumData) == 0){
$premiumDataa = $premiumData;
}else if ($premiumData[0]['policy_grid_id'] == '10' || $premiumData[0]['policy_grid_id'] == '11') {
}else if ($premiumData[0]['policy_grid_id'] == '10' || $premiumData[0]['policy_grid_id'] == '11' ) {
$premiumDataa = $premiumData;
}
}else{
@ -1103,15 +1149,15 @@ class ClientController extends AdminController
// echo "hello";
// return json_encode($premiumData);
return $this->respond(['status' => true,'code' => 200,'data' => $resultss, 'premiumData' => json_encode($premiumDataa), 'count' => $emp_count, 'policy_name' => $policy_name,], 200);
return $this->respond(['status' => true,'code' => 200,'data' => $resultss, 'premiumData' => json_encode($premiumDataa), 'count' => $emp_count, 'policy_name' => $policy_name, 'family_floater' => $family_floater, 'self' => $self], 200);
}else if($search_term === 'GPA'){
return $this->respond(['status' => true,'code' => 200,'data' => $results, 'premiumData' => json_encode($premiumData), 'count' => $emp_count, 'policy_name' => $policy_name,], 200);
return $this->respond(['status' => true,'code' => 200,'data' => $results, 'premiumData' => json_encode($premiumData), 'count' => $emp_count, 'policy_name' => $policy_name, 'family_floater' => $family_floater, 'self' => $self], 200);
}else{
return $this->respond(['status' => false,'code' => 200,'data' => $results, 'premiumData' => json_encode($premiumData), 'count' => $emp_count, 'policy_name' => $policy_name,], 200);
return $this->respond(['status' => false,'code' => 200,'data' => $results, 'premiumData' => json_encode($premiumData), 'count' => $emp_count, 'policy_name' => $policy_name, 'family_floater' => $family_floater, 'self' => $self], 200);
}
}

View File

@ -24,6 +24,10 @@ use App\Controllers\Jobs;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
// use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Reader\Exception as SpreadsheetReaderException;
use function PHPUnit\Framework\returnSelf;
class EmpDataServiceController extends BaseController
{
@ -104,6 +108,8 @@ class EmpDataServiceController extends BaseController
// Fetch employee data for export from the database
$objects = $this->employeePolicyModel->getInceptionEmployeeDataForExportExcel($export_data);
// dd($objects);
$totals = 0;
foreach ($objects as $key => $value) {
@ -479,6 +485,12 @@ class EmpDataServiceController extends BaseController
$file = $import_data['file'];
$data = $this->readExcelToArray($file);
if (!$data) {
return 0;
}
unset($data[0]);
array_pop($data);
$count = count($data);
@ -490,8 +502,17 @@ class EmpDataServiceController extends BaseController
try {
if ($value[15] === null) {
$missing_id[] = $key + 1;
if ($import_data['insurer_or_tpa'] == 'tpa') {
if ($value[15] === null) {
$missing_id[] = $key + 1;
}
} else if ($import_data['insurer_or_tpa'] == 'insurer') {
if ($value[16] === null) {
$missing_id[] = $key + 1;
}
}
$emp_code = $value[2];
@ -501,26 +522,30 @@ class EmpDataServiceController extends BaseController
$db = \Config\Database::connect();
// Execute the query
$query = $db->table('employee_polices')
->select('employee_polices.id')
->join('employees', 'employees.id = employee_polices.employee_id')
->where('employee_polices.client_policy_id', $client_policy_id)
->where('employees.client_id', $client_id)
->where('employees.name', $name)
->where('employees.emp_code', $emp_code)
->where('(employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = "")')
->where('(employee_polices.uhid IS NULL OR employee_polices.uhid = "")')
->where('employee_polices.is_active', 1)
->limit(1)
->get();
$query = $db->table('employee_polices');
$query->select('employee_polices.id');
$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);
$query->where('employees.name', $name);
$query->where('employees.emp_code', $emp_code);
if ($import_data['insurer_or_tpa'] == 'tpa') {
$query->where('(employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = "")');
} else if ($import_data['insurer_or_tpa'] == 'insurer') {
$query->where('(employee_polices.uhid IS NULL OR employee_polices.uhid = "")');
}
$query->where('employee_polices.is_active', 1);
$query->limit(1);
// Get the result
$result = $query->getRowArray();
$result = $query->get()->getRowArray();
if (isset($result['id']) && $result['id'] !== null) {
$empty_emp_tpa_uh_ids[] = $result['id'];
}
} catch (\Exception $e) {
// Handle the exception here
return 0;
}
}
@ -529,17 +554,43 @@ class EmpDataServiceController extends BaseController
$missing_id_count = count($missing_id);
$empty_id_count = count($empty_emp_tpa_uh_ids);
// dd($count, $missing_id_count, $empty_id_count, $data, $empty_emp_tpa_uh_ids);
if ($missing_id_count != $count && $missing_id_count != 0) {
if ($import_data['insurer_or_tpa'] == 'tpa') {
return 2;
if ($empty_id_count == 0) {
return 3;
}
if ($missing_id_count != 0) {
return 2;
}
} else if ($import_data['insurer_or_tpa'] == 'insurer') {
if ($empty_id_count == 0) {
return 5;
}
if ($missing_id_count != 0) {
return 4;
}
}
if ($empty_emp_tpa_uh_ids != $count && $empty_id_count == 0) {
// if ($missing_id_count != $count) {
// return 2;
// }
// if ($empty_emp_tpa_uh_ids != $count) {
// return 3;
// }
return 3;
}
// dd($empty_emp_tpa_uh_ids);
@ -557,40 +608,46 @@ class EmpDataServiceController extends BaseController
// dd($import_data, $empty_emp_tpa_uh_ids);
$tpa_id = [];
$uhid = [];
foreach ($data as $key => $value) {
$tpa_id[] = $value[15];
$uhid[] = $value[16];
}
if (!empty($value) && (isset($value[15]) || isset($value[16]))) {
foreach ($empty_emp_tpa_uh_ids as $key => $id) {
$tpa_id = $value[15] !== null ? $value[15] : '';
$uhid = $value[16] !== null ? $value[16] : '';
$dataToUpdateTPAID = ['tpa_id' => $tpa_id[$key]];
$dataToUpdateUHID = ['uhid' => $uhid[$key]];
$this->employeePolicyModel->where('id', $id)
->where('(employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = "")')
->set($dataToUpdateTPAID)->update();
foreach ($empty_emp_tpa_uh_ids as $id) {
// Update employee policies based on the ID
$this->employeePolicyModel->where('id', $id)->set(['tpa_id' => $tpa_id, 'uhid' => $uhid])->update();
}
$this->employeePolicyModel->where('id', $id)
->where('(employee_polices.uhid IS NULL OR employee_polices.uhid = "")')
->set($dataToUpdateUHID)->update();
}
// $query = $this->employeePolicyModel->getLastQuery();
// echo $query . "<br>";
if($import_data['insurer_or_tpa'] == 'tpa'){
} else {
return 0;
}
$policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
$depositeData = [
'employeeIds' => $empty_emp_tpa_uh_ids,
'client_id' => $client_id,
'client_policy_id' => $client_policy_id,
'count' => $count,
'event' => $import_data['event_type'],
'policy_name' => $policy_name['policy_name'],
];
$this->cashDepositCalculationForInception($depositeData);
}
$policy_name = $this->getPolicyNameUsingClientPolicyId($client_policy_id);
$depositeData = [
'employeeIds' => $empty_emp_tpa_uh_ids,
'client_id' => $client_id,
'client_policy_id' => $client_policy_id,
'count' => $count,
'event' => $import_data['event_type'],
'policy_name' => $policy_name['policy_name'],
];
$this->cashDepositCalculationForInception($depositeData);
return 1;
}
@ -1200,7 +1257,7 @@ class EmpDataServiceController extends BaseController
$description = 'The following amount of Rs. ' . $amount->total_sum . '/- has been debited for the ' . $arrayData['count'] . ' employees at ' . remove_underscore_capitalize_first_letter($arrayData['event']) . ' to ' . remove_underscore_capitalize_first_letter($arrayData['policy_name']) . '.';
$data = [
'amount' => $amount->total_sum,
'amount' => $amount->total_sum ?? 0,
'sub_type_id' => 4,
'client_id' => $arrayData['client_id'],
'insurer_id' => $insurer_id['insurer_id'],
@ -1470,34 +1527,42 @@ class EmpDataServiceController extends BaseController
public function readExcelToArray($file)
{
if ($file->isValid() && !$file->hasMoved()) {
$file = $file;
try {
$reader = new Xlsx();
$spreadsheet = $reader->load($file->getPathname());
// Get the active sheet
$sheet = $spreadsheet->getActiveSheet();
// Iterate through rows to read data
$data = [];
foreach ($sheet->getRowIterator() as $row) {
$rowData = [];
foreach ($row->getCellIterator() as $cell) {
$rowData[] = $cell->getValue();
$reader = IOFactory::createReaderForFile($file->getPathname());
$spreadsheet = $reader->load($file->getPathname());
// Get the active sheet
$sheet = $spreadsheet->getActiveSheet();
// Iterate through rows to read data
$data = [];
foreach ($sheet->getRowIterator() as $row) {
$rowData = [];
foreach ($row->getCellIterator() as $cell) {
$rowData[] = $cell->getValue();
}
$data[] = $rowData;
}
$data[] = $rowData;
return $data;
} catch (SpreadsheetReaderException $e) {
error_log('PhpSpreadsheet reader exception: ' . $e->getMessage());
return false;
}
return $data;
} else {
return false;
}
}
public function insertBatchFileAndBatchListForImportExcel($data, $ids)

View File

@ -26,6 +26,10 @@ use App\Controllers\EmpDataServiceController;
use CodeIgniter\API\ResponseTrait;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Dompdf\Dompdf;
class EmployeeController extends AdminController
{
@ -245,18 +249,23 @@ class EmployeeController extends AdminController
{
$file_id = $this->request->uri->getSegment(3);
$empServiceController = new EmployeeServiceController();
$result['file_id'] = $file_id;
// Render views and capture output
$result = $empServiceController->getExcelErrorData($file_id);
// echo '<pre>';
// print_r($result); die;
if($result){
if ($result != 0) {
echo view('excel_errors', $result);
}else{
} else if ($result == 0) {
$data['message'] = 'File Not Found Physically';
return view('errors/404', $data);
} else {
echo view('errors/html/production');
}
}
/**
@ -348,8 +357,14 @@ class EmployeeController extends AdminController
$return = $empDataServiceController->generateExcelForAdditionandInception($batch_data);
if(!$return){
session()->setFlashdata('error', 'No data found about this action');
return redirect()->to(base_url('employee/upload'));
if($insurer_or_tpa == 'tpa'){
session()->setFlashdata('error', "No data was found for this action. The TPA ID has already been updated.");
return redirect()->to(base_url('employee/upload'));
}else if($insurer_or_tpa == 'insurer'){
session()->setFlashdata('error', "No data was found for this action. The UHID has already been updated.");
return redirect()->to(base_url('employee/upload'));
}
} else{
$this->myLogger->logme('error','Successfully exported Excel file in {data}.', ['data' => $event_type]);
}
@ -398,16 +413,28 @@ class EmployeeController extends AdminController
return redirect()->to(base_url('employee/upload'));
}else if($return == 2){
session()->setFlashdata('error', 'The TPA ID or UHID columns are empty.');
session()->setFlashdata('error', 'The TPA ID column is either partially or entirely empty.');
return redirect()->to(base_url('employee/upload'));
}else if($return == 0){
session()->setFlashdata('error', 'Please upload the correct file, something went wrong.');
session()->setFlashdata('error', 'Please upload the correct file.');
return redirect()->to(base_url('employee/upload'));
}else if($return == 3){
session()->setFlashdata('error', 'File already uploaded');
session()->setFlashdata('error', 'The list of employees provided has already been updated with the TPA ID, or this is not the correct file');
return redirect()->to(base_url('employee/upload'));
} }else if($event_type == 'correction'){
}else if($return == 4){
session()->setFlashdata('error', 'The UHID column is either partially or entirely empty.');
return redirect()->to(base_url('employee/upload'));
}else if($return == 5){
session()->setFlashdata('error', 'The list of employees provided has already been updated with the UHID, or this is not the correct file');
return redirect()->to(base_url('employee/upload'));
}
}else if($event_type == 'correction'){
$return = $empDataServiceController->importExcelDataForCorrection($batch_data);
if($return == 1){
@ -419,7 +446,7 @@ class EmployeeController extends AdminController
return redirect()->to(base_url('employee/upload'));
}else if($return == 0){
session()->setFlashdata('error', 'Please upload the correct file, something went wrong.');
session()->setFlashdata('error', 'Please upload the correct file');
return redirect()->to(base_url('employee/upload'));
}else if($return == 3){
session()->setFlashdata('error', 'File already uploaded');
@ -438,7 +465,7 @@ class EmployeeController extends AdminController
return redirect()->to(base_url('employee/upload'));
}else if($return == 0){
session()->setFlashdata('error', 'Please upload the correct file, something went wrong.');
session()->setFlashdata('error', 'Please upload the correct file');
return redirect()->to(base_url('employee/upload'));
}else if($return == 3){
session()->setFlashdata('error', 'File already uploaded');
@ -457,7 +484,7 @@ class EmployeeController extends AdminController
return redirect()->to(base_url('employee/upload'));
}else if($return == 0){
session()->setFlashdata('error', 'Please upload the correct file, something went wrong.');
session()->setFlashdata('error', 'Please upload the correct file');
return redirect()->to(base_url('employee/upload'));
}else if($return == 3){
session()->setFlashdata('error', 'File already uploaded');
@ -564,10 +591,21 @@ class EmployeeController extends AdminController
// this funciton initiate Inception/adition/DA of employees data only form enrollment app when passing
// client_policy_id pull draft and enrolled status employees and proceed to calculatin and make entry in DB
public function initiateManualEmployeesOnboardProcess($client_policy_id)
{
$empServiceController = new EmployeeServiceController();
$res = $empServiceController->employeesOnboardPreprocess(['client_policy_id' => $client_policy_id]);
dd($res);
{
$client_data = $this->clientPolicyModel->select('clients.client_name as client_name, policies.name as policy_name')
->join('clients', 'clients.id = client_policy.client_id')
->join('policies', 'policies.id = client_policy.policy_id')
->where('client_policy.id', $client_policy_id)
->first();
$empServiceController = new EmployeeServiceController();
$res = $empServiceController->employeesOnboardPreprocess(['client_policy_id' => $client_policy_id]);
// dd($res);
$count = count($res);
$message = $count . ' Employees are Initiate Onboard Process againts Client '. $client_data['client_name'] . ' and the Policy is ' . $client_data['policy_name'] ;
session()->setFlashdata('success1', $message);
return redirect()->to(base_url('/employee/upload'));
}
@ -641,6 +679,7 @@ class EmployeeController extends AdminController
$highestRowAndColumn = $sheet->getHighestRowAndColumn();
$excel_data = $sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
// dd($excel_data);
$emp_data['thead'] = $excel_data[0];
unset($excel_data[0]);
$emp_data['tbody'] = $excel_data;
@ -652,7 +691,7 @@ class EmployeeController extends AdminController
$html = '<div class="text-center">No Data Found</div>';
}
return $this->respond(['dataStatus' => true, 'code' => 200, 'data' => $html, 'file_data' => $file_name], 200);
return $this->respond(['dataStatus' => true, 'code' => 200, 'data' => $html, 'file_data' => $file_name, 'excel_data' => $excel_data], 200);
} catch (\Exception $e) {
// Handle exception
@ -665,9 +704,9 @@ class EmployeeController extends AdminController
public function getEmpCount($id = null){
$data = $this->employeeModel->select('employees.id')
->join('clients', 'clients.id = employees.client_id')
->where('employees.client_id', $id)
$data = $this->employeePolicyModel->select('employee_polices.id')
->where('employee_polices.is_active', 1)
->where('employee_polices.client_policy_id', $id)
->findAll();
$emp_count = count($data);
@ -683,5 +722,209 @@ class EmployeeController extends AdminController
}
public function downloadFullExcelErrorFile($file_id = 137, $rowIndex = 1, $colIndex = 1)
{
// Get file data from the database
$file_data = $this->fileModel->find($file_id);
$error = json_decode($file_data['reason']);
// echo '<pre>';
// print_r($error); die;
// dd($error);
// Check if the file exists
if (!$file_data) {
$error_message = "File not found";
$this->myLogger->logme('error', $error_message . ' for file id ' . $file_id);
return $error_message;
}
$fileName = $file_data['file_name'];
$filePath = WRITEPATH . '/uploads/excel/' . $fileName;
// Check if the file exists
if (!file_exists($filePath)) {
$error_message = "File not found";
$this->myLogger->logme('error', $error_message . ' for file id ' . $file_id);
return $error_message;
}
// Load the Excel file
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath);
$sheet = $spreadsheet->getActiveSheet();
// echo '<pre>';
foreach ($error->error_data as $index => $error_data) {
$rowIndex = $index+1;
if( $error->error_type == 1 ){
foreach ($error_data as $key => $value) {
$colIndex = $value->col_idx+1;
$originalValue = $sheet->getCell([$colIndex, $rowIndex])->getValue();
$newValue = implode(', ',$value->error);
$val = $originalValue . ' ( ' . $newValue . ' )';
$sheet->setCellValue([$colIndex, $rowIndex], $val);
$style = [
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'startColor' => ['rgb' => 'ffad99'] // Red color
]
];
$sheet->getStyle([$colIndex, $rowIndex])->applyFromArray($style);
}
}else if( $error->error_type == 2){
foreach ($error_data as $key => $value) {
$originalValue = $sheet->getCell([1, $rowIndex])->getValue();
$newValue = implode(', ',$value->error);
$val = $originalValue . ' ( ' . $newValue . ' )';
$sheet->setCellValue([$colIndex, $rowIndex], $val);
$style = [
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'startColor' => ['rgb' => 'ffad99'] // Red color
]
];
$sheet->getStyle([$colIndex, $rowIndex])->applyFromArray($style);
}
}
}
// Create a new filename for the modified Excel file
$newFileName = 'modified_' . $fileName;
// Save the modified Excel file to a new location
$newFilePath = WRITEPATH . '/uploads/excel/' . $newFileName;
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save($newFilePath);
// Set headers to force download
$response = service('response');
$response->setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$response->setHeader('Content-Disposition', 'attachment;filename="' . $newFileName . '"');
$response->setHeader('Cache-Control', 'max-age=0');
$response->setHeader('Content-Length', filesize($newFilePath));
$response->setBody(file_get_contents($newFilePath));
// Delete the temporary file
unlink($newFilePath);
// Return the response
return $response;
}
public function generateIDCardForEmployee($emp_code, $client_policy_id)
{
$dompdf = new Dompdf();
$data['data'] = $this->employeePolicyModel->getECardDataUsingMd5($client_policy_id, $emp_code);
// $this->loadLayout('id_card_view', $data); exit;
$html = view('id_card_view', $data);
// $html = str_replace('<body>', '<body style="text-align: center;">', $html);
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser
$dompdf->stream();
}
public function viewECard()
{
$this->loadLayout('id_card_view');
}
public function truncateFileData() //truncateFileDataIn DB (de activate rows)
{
$file_id = $this->request->uri->getSegment(3);
// $file_id = 112;
$file = $this->fileModel->find($file_id);
// $file['action'] = 'si_enhancement';
// $result = [];
// !dd($file);
if($file['action'] == 'inception' || $file['action'] == 'dependent_addition' || $file['action'] == 'addition')
{
$result = $this->employeeModel->getEmpListByFileId(file_id: $file_id,emp_status: ['active'],policy_status:['active']);
// ~dd($result);
if(count($result))
{
return $this->respond(['dataStatus' => false,'code' => 404,'message' => 'File data already processed'], 200);
}
else
{
//update emp and emp plocies
$db = db_connect();
$query = "UPDATE employees JOIN employee_polices ON employees.id = employee_polices.employee_id and employees.file_id = $file_id SET employees.emp_status = 'truncated', employee_polices.status = 'truncated', employees.is_active = 0,employee_polices.is_active = 0 WHERE employees.file_id = $file_id";
$db->query($query);
$affectedRows = $db->affectedRows();
// $affectedRows = 10;
//update file status
$this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update();
return $this->respond(['dataStatus' => true,'code' => 200,'data' => round($affectedRows/2)], 200);
}
}
else if($file['action'] == 'si_enhancement' || $file['action'] == 'correction' || $file['action'] == 'deletion')
{
$res = $this->empEndorsementModel->select(['count(id) as count'])
->where('emp_endorsement.file_id',$file_id)
->groupStart()
->where('emp_endorsement.endorsement_id is not null')
->orwhereIn('emp_endorsement.status',['complete'])
->groupEnd()
->get()
->getResult();
// print_r($this->empEndorsementModel->getLastQuery());
// echo $res[0]->count;die();
if($res[0]->count == 0)
{
//update truncated status to db
$this->empEndorsementModel->where('file_id',$file_id)
->set(['status' => 'truncated'])
->update();
//update file status
$this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update();
return $this->respond(['dataStatus' => true,'code' => 200,'data' => 'success'], 200);
}
else
{
return $this->respond(['dataStatus' => false,'code' => 404,'message' => 'File data already processed'], 200);
}
}
}
}

View File

@ -172,16 +172,19 @@ class EmployeeRestController extends AdminController
{
try {
$data = $this->request->getJSON();
if ($data) {
$Count = 0;
foreach ($data as $item) {
if (isset($item->id)) {
//update old data
$id = $item->id;
$item->family_floater_key = $this->RelationshipMap($item->relationship);
$item->gender = $this->GenderMap($item->relationship , $item->emp_code);
$item->dob = $this->convertDateFormatYMD($item->dob);
$item->emp_status = 'Draft';
$item->emp_status = 'draft';
$employee = $this->employeeModel->where('is_active', 1 )->update($id, (array)$item);
if ($employee) {
$Count++;
@ -189,15 +192,12 @@ class EmployeeRestController extends AdminController
}else{
//create new data
$item->family_floater_key = $this->RelationshipMap($item->relationship);
$item->gender = $this->GenderMap($item->relationship , $item->emp_code);
$item->dob = $this->convertDateFormatYMD($item->dob);
$item->emp_status = 'Draft';
$employee = $this->employeeModel->where('is_active', 1 )->insert($item);
$item->emp_status = 'draft';
$employee = $this->employeeModel->insert($item);
if ($employee) {
if(!isset($item->is_addon_value))
{
$this->createEmployeePolicyData($employee,$item->emp_code,$item->client_id,$item->client_policy_id);
}
$Count++;
}
@ -206,6 +206,18 @@ class EmployeeRestController extends AdminController
}
if ($Count > 0) {
if(!isset($data[0]->is_addon_value))
{
$this->createEmployeePolicyData($employee , $data[0]->emp_code , $data[0]->client_id , $data[0]->client_policy_id);
}else{
$this->createEmployeePolicyData($employee , $data[0]->emp_code , $data[0]->client_id , $data[0]->client_policy_id , $data[0]->basic_cover_si);
}
$this->updatePremiumAmount($data[0]->client_policy_id , $data[0]->emp_code);
$result = [];
return $this->respond(['status' => 'success','code' => 200,'data' => $result], 200);
} else {
@ -219,34 +231,70 @@ class EmployeeRestController extends AdminController
}
public function createEmployeePolicyData($employee_id,$emp_code,$client_id,$client_policy_id)
public function createEmployeePolicyData($employee_id,$emp_code,$client_id,$client_policy_id,$basic_cover_si = null)
{
if($basic_cover_si == null)
{
$client_policy = $this->clientPolicyModel->where('id', $client_policy_id)->where('client_id', $client_id)->first();
$policy_terms = json_decode($client_policy['policy_terms']);
$basic_cover_si = $policy_terms->sum_insured;
}
$getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard($client_policy_id,$client_id);
$SlabRatesArray = $getSlabAndGridData['slab_rates'];
$premium = $this->findPremiumAmount($SlabRatesArray, $basic_cover_si);
$checkDataExist = $this->employeePolicyModel->where('employee_id',$employee_id)->where('client_policy_id',$client_policy_id)->first();
if($checkDataExist){
$this->employeePolicyModel
->where('client_policy_id',$client_policy_id )
->where('employee_id' , $employee_id )
->where('is_active', 1 )
->set(array('basic_cover_si'=> $basic_cover_si ))
->update();
$data['employee_id']= $employee_id;
$data['client_policy_id']= $client_policy_id;
$data['basic_cover_si']= $basic_cover_si;
$data['premium']= $premium;
$this->employeePolicyModel->insert($data);
}else{
$data['employee_id']= $employee_id;
$data['client_policy_id']= $client_policy_id;
$data['basic_cover_si']= $basic_cover_si;
$data['status']= 'draft';
$this->employeePolicyModel->insert($data);
}
return true;
}
public function updatePremiumAmount($client_policy_id , $emp_code)
{
$response = $this->calculatePremium($client_policy_id , $emp_code);
if(count($response[$emp_code]))
{
foreach ($response[$emp_code] as $key => $value)
{
$checkIfExist = $this->employeePolicyModel->where('employee_id', $value['temp']['emp_id'])
->where('client_policy_id', $value['policy_details']['client_policy_id'])
->where('is_active', 1 )
->findAll();
if($checkIfExist)
{
$this->employeePolicyModel
->where('client_policy_id',$value['policy_details']['client_policy_id'] )
->where('employee_id' , $value['temp']['emp_id'] )
->where('is_active', 1 )
->set(array('premium'=> $value['policy_details']['rata_premimum'] , 'gst'=> $value['policy_details']['gst'] ))
->update();
}
}
}
}
public function RelationshipMap($value){
if ($value === 'Mother' || $value === 'Father') {
@ -260,6 +308,19 @@ class EmployeeRestController extends AdminController
}
}
public function GenderMap($value,$empCode){
if ($value === 'Mother' || $value === 'Daughter' || $value === 'Mother in Law') {
return 'F';
} else if($value === 'Son' || $value === 'Father' || $value === 'Father in Law'){
return 'M';
}else if($value === 'Spouse'){
$Gender = $this->employeeModel->where('emp_code',$empCode)->where('relationship','Self')->get()->getRow()->gender;
if($Gender == 'M'){ return 'F'; }else{ return 'M'; }
}
}
private function convertDateFormatYMD($dateString)
{
// Attempt to create a DateTime object from the provided date string
@ -323,6 +384,83 @@ class EmployeeRestController extends AdminController
}
} catch (\Exception $e) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
}
}
public function exportDataByClientPolicyId()
{
try {
$empData = $this->employeePolicyModel->getEmployeePolicy( client_id:$this->request->getGet('client_id'),policy_id: $this->request->getGet('client_policy_id'),status:0);
if(count($empData))
{
// Define headers and map database fields to Excel fields
$headers = [
'Employee Code' => 'emp_code',
'Name' => 'name',
'Relationship' => 'relationship',
'DOB' => 'dob',
'Gender' => 'gender',
'Mobile' => 'mobile',
'Email' => 'email_corporate',
'SI' => 'basic_cover_si',
'Premium' => 'rata_premimum',
'Policy Name' => 'policy_name',
'Insurer Branch Name' => 'insurer_branch_name',
'TPA Name' => 'tpa_name',
'Status' => 'emp_status'
];
// Create a new Spreadsheet object
$spreadsheet = new Spreadsheet();
// Get the active sheet
$sheet = $spreadsheet->getActiveSheet();
// Add headers
$column = 'A';
foreach ($headers as $header => $dbField) {
$sheet->setCellValue($column . '1', $header);
$column++;
}
// Add data
$row = 2;
foreach ($empData as $employee) {
$column = 'A';
foreach ($headers as $dbField) {
$sheet->setCellValue($column . $row, $employee[$dbField]);
$column++;
}
$row++;
}
// Set the header for download
$filename = $empData[0]['policy_name'].'-Enrollment.xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
// Save the Excel file to output
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200);
}else{
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
}
} catch (\Exception $e) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
}
@ -340,9 +478,9 @@ class EmployeeRestController extends AdminController
foreach ($ClientPolicyData as $key => $value) {
$getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard( $value['client_policy_id'],$value['client_id']);
if($value['is_addon'] == "2"){
$value['type'] = 'SI-TopUp';
$value['type'] = 'SI TopUp';
}else if($value['is_addon'] == "3"){
$value['type'] = 'Dependent-AddOn';
$value['type'] = 'Dependent AddOn';
}else{
$value['type'] = $getSlabAndGridData['grid_master']['policy_type'];
}
@ -509,27 +647,27 @@ class EmployeeRestController extends AdminController
->where('client_policy_id', $value->client_policy_id)
->where('is_active', 1 )
->findAll();
$getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard($value->client_policy_id,$value->client_id);
$SlabRatesArray = $getSlabAndGridData['slab_rates'];
$premium = $this->findPremiumAmount($SlabRatesArray, $value->basic_cover_si);
// dd($checkIfExist);
if ($checkIfExist) {
$empPolicy = $this->employeePolicyModel->updateSiAndPremium($value->client_policy_id, $value->employee_id, $value->basic_cover_si,$premium);
$empPolicy = $this->employeePolicyModel->updateSiAndPremium($value->client_policy_id, $value->employee_id, $value->basic_cover_si);
}else{
$data['employee_id']= $value->employee_id;
$data['client_policy_id']= $value->client_policy_id;
$data['basic_cover_si']= $value->basic_cover_si;
$data['premium']= $premium;
$data['status'] = 'Draft';
$data['status'] = 'draft';
$this->employeePolicyModel->insert($data);
}
}
return $this->respond(['status' => 'success','code' => 200,'data' => []], 200);
$this->updatePremiumAmount($requestData[0]->client_policy_id , $requestData[0]->emp_code);
return $this->respond(['status' => 'success','code' => 200,'data' => []], 200);
} catch (\Exception $e) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
@ -624,8 +762,8 @@ class EmployeeRestController extends AdminController
$file_data =$this->fileModel->insert($extractData);
$extra = [];
if (count($data[0]) == 10) {
$value = ['S.No','Emp Code','Name','DOJ','Gender','Relation','DOB','Mail','Mobile','SI'];
if (count($data[0]) == 11) {
$value = ['Sno','Emp_Code','Name','DOJ','Gender','Relation','DOB','Mail','Mobile','SI','Grade'];
$check_miss_match = [];
for ($i=0; $i <count($value) ; $i++) {
if ($data[0][$i] != $value[$i]) {
@ -638,7 +776,7 @@ class EmployeeRestController extends AdminController
}
}
if(count($data[0]) != 10){
if(count($data[0]) != 11){
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Uploaded file row count is Not Match!" ], 200);
}
@ -720,13 +858,14 @@ class EmployeeRestController extends AdminController
'email_corporate' => $extra['7'][$index],
'mobile'=> $extra['8'][$index],
'client_id' => $client_id,
'emp_status'=>'draft'
'emp_status'=>'draft',
'band'=> $extra['10'][$index],
];
$basic_cover_si_value = null;
//Grid id is 10 and 11 sum insure value add only for self other grid type self sum insure is for the dependence
if ($policy_permium_2['policy_grid_id'] == 10 || $policy_permium_2['policy_grid_id'] == 11) {
if (isset($policy_permium_2['policy_grid_id']) == 10 || isset($policy_permium_2['policy_grid_id']) == 11) {
if (strtolower($extra['5'][$index]) == 'self') {
$basic_cover_si_value = $extra['9'][$index];
}else{
@ -856,7 +995,7 @@ class EmployeeRestController extends AdminController
// $return_log = json_decode($return_log);
// $this->myLogger->logme('info', "Email Status : {mail_status}, Sender Email:{email}", ['mail_status' => $return_log->status, 'email'=> $return_log->data]);
}
return $this->respond(['status' => 'success', 'code' => 200, 'message' => "Success" ], 404);
return $this->respond(['status' => 'success', 'code' => 200, 'message' => "Success" ], 200);
}else{
return $this->respond(['status' => 'failed', 'code' => 404, 'message' => "Client id and Client Policy id is Not Match!" ], 404);
}
@ -933,8 +1072,19 @@ public function getEmployeePolicy()
// Map family floaters that already exist in the employee table
$familyFloates = $array->Policy_Terms->family_floaters;
// Generate Notes string based on familyFloates terms
$array->notes = $this->FloterNotesConvertion($familyFloates);
if($getSlabAndGridData['slab_rates'][0]['premium_type'] == 1)
{
$array->floter_text_heading = 'Floater Sum Insured';
$array->floter_text_description = 'This is a floater sum insured. A floater is a type of sum insured that provides coverage to more than one member ot a family at the same time. Simply put, its a single insurance cover for the entire family.';
}else{
$array->floter_text_heading = 'Sum Insured';
$array->floter_text_description = '';
}
// Convert familyFloaters terms data to plain array
$floters = $this->FloterConvertion($familyFloates);
@ -1003,9 +1153,9 @@ public function getEmployeePolicy()
}
$result[] = $array;
// $result[] = $array;
}
return $this->respond(['status' => 'success','code' => 200,'data' => []], 200);
}else{
@ -1059,6 +1209,8 @@ public function FloterNotesConvertion($array){
$string = ucwords($string);
$result .= ' + '.$string;
}else if($value != 0 && $key ==='self') {
}else if($value != 0 && $key ==='childrens') {
if($value > 1){ $result .= ' + '.$value.' Children'; }else{ $result .= ' + '.$value.' Child'; }
}else{
$string = str_replace('-', ' ', $key);
$string = ucwords($string);
@ -1066,7 +1218,7 @@ public function FloterNotesConvertion($array){
}
}
}
return $result;
}
@ -1116,6 +1268,16 @@ public function getAddOnPolicy()
$responce['is_addon'] = $array['is_addon'];
$responce['open_for_enrollment'] = $array['open_for_enrollment'];
$responce['policy_terms'] = $decodedArray;
if(count($getSlabAndGridData['slab_rates'])){
if($getSlabAndGridData['slab_rates'][0]['premium_type'] == 1)
{
$responce['floter_text_heading'] = 'Floater Sum Insured';
}else{
$responce['floter_text_heading'] = 'Sum Insured';
}
}
if($array['is_addon'] == 3)
{
@ -1128,8 +1290,9 @@ public function getAddOnPolicy()
$data = [];
$dependent_and_si_value = null;
$dependent_and_si_premium_value = null;
$dependent_and_si_value = 0;
$dependent_and_si_premium_value = 0;
$dependent_and_si_gst_value = 0;
foreach ($floters as $familyFloatesValue) {
$dependent = preg_replace('/\d/', '', $familyFloatesValue);
if(count($addOnEmployeeData)){
@ -1137,7 +1300,8 @@ public function getAddOnPolicy()
if ($value['family_floater_key'] === $dependent) {
$employee_policy = $this->employeePolicyModel->where('employee_id',$value['id'])->where('client_policy_id',$array['id'])->where('is_active', 1 )->get()->getRow();
if(isset($employee_policy->basic_cover_si)){ $dependent_and_si_value = $employee_policy->basic_cover_si; }
if(isset($employee_policy->premium)){ $dependent_and_si_premium_value = $employee_policy->premium;}
if(isset($employee_policy->premium)){ $dependent_and_si_premium_value = $dependent_and_si_premium_value + $employee_policy->premium;}
if(isset($employee_policy->gst)){ $dependent_and_si_gst_value = $dependent_and_si_gst_value + $employee_policy->gst;}
$temp['is_value_exist'] = true;
$temp['data']['family_floater_key'] = $familyFloatesValue;
@ -1214,6 +1378,7 @@ public function getAddOnPolicy()
$responce['family_floaters_of_dependent_and_si_array'] = $data;
$responce['family_floaters_of_dependent_and_si_value'] = $dependent_and_si_value;
$responce['family_floaters_of_dependent_and_si_premium_value'] = $dependent_and_si_premium_value;
$responce['family_floaters_of_dependent_and_gst_value'] = $dependent_and_si_gst_value;
@ -1228,13 +1393,15 @@ public function getAddOnPolicy()
$only_si_array = [];
$only_si_value = null;
$only_si_premium_value = null;
$only_si_value = 0;
$only_si_premium_value = 0;
$only_si_gst_value = 0;
foreach ($GMCEmployeeData as $key => $value) {
$employee_policy = $this->employeePolicyModel->where('employee_id',$value['id'])->where('client_policy_id',$array['id'])->where('is_active', 1 )->get()->getRow();
if(isset($employee_policy->basic_cover_si)){ $only_si_value = $employee_policy->basic_cover_si; }
if(isset($employee_policy->premium)){ $only_si_premium_value = $employee_policy->premium;}
if(isset($employee_policy->premium)){ $only_si_premium_value = $only_si_premium_value + $employee_policy->premium;}
if(isset($employee_policy->gst)){ $only_si_gst_value = $only_si_gst_value + $employee_policy->gst;}
$temp3['is_value_exist'] = true;
$temp3['data']['employee_id'] = $value['id'];
$temp3['data']['relationship'] = $value['relationship'];
@ -1250,6 +1417,7 @@ public function getAddOnPolicy()
$responce['family_floaters_of_only_si_array'] = $only_si_array;
$responce['family_floaters_of_only_si_value'] = $only_si_value;
$responce['family_floaters_of_only_si_premium_value'] = $only_si_premium_value;
$responce['family_floaters_of_only_si_gst_value'] = $only_si_gst_value;
if($this->request->getGet('policy') == 'GMC-SI-TOPUP'){
return $this->respond(['status' => 'success','code' => 200,'data' => ['gmc_si_topup'=>$responce]], 200);
@ -1261,7 +1429,7 @@ public function getAddOnPolicy()
}
// return $this->respond(['status' => 'success','code' => 200,'data' => ['addon_policy'=>$responce]], 200);
return $this->respond(['status' => 'success','code' => 200,'data' => []], 200);
}else{
return $this->respond(['status' => 'failed','code' => 404,'data' => []], 404);
@ -1274,58 +1442,291 @@ public function getAddOnPolicy()
public function iAgreeForAddOn()
{
$emp_code = $this->request->getGet('emp_code');
$client_policy_id = $this->request->getGet('client_policy_id');
$client_id = $this->request->getGet('client_id');
$emp_code = $this->request->getPost('emp_code');
$postData = json_decode($this->request->getBody(), true);
$client_policy_id = $postData['client_policy_id'];
$this->employeeModel->where('emp_code', $emp_code )
->where('is_active', 1 )
->set(array('emp_status'=>'Enrolled'))
->set(array('emp_status'=>'enrolled'))
->update();
$this->employeePolicyModel->where('client_id', $client_id )
->where('client_policy_id', $client_policy_id )
->where('is_active', 1 )
->set(array('status'=>'Enrolled'))
->update();
if (!is_null($client_policy_id) && is_array($client_policy_id))
{
foreach ($client_policy_id as $key => $value)
{
$this->employeePolicyModel->where('client_policy_id', $value )
->where('is_active', 1 )
->set(array('status'=>'enrolled'))
->update();
}
}
return $this->respond(['status' => 'success','code' => 200,'data' => [] ], 200);
}
//Post method - which receives client_policy id and empcode of the family.
//Pull records againest emp code and calculate premium
// retun array
public function calculatePremium()//family level
public function calculatePremium($clientPolicyId = null , $empCode = null, $default_si = null)//family level
{
helper('excel_util_helper');
$client_policy_id = $this->request->getVar('client_policy_id');
$emp_code = $this->request->getVar('emp_code');
$client_policy_id = $this->request->getVar('client_policy_id') ?? $clientPolicyId;
$emp_code = $this->request->getVar('emp_code') ?? $empCode;
$default_si = $this->request->getVar('si') ?? $default_si;// si amt which choosed in add on policy
// dd($client_policy_id);
$client_id = ($this->clientPolicyModel->select('client_id')->find($client_policy_id))['client_id'];
// get policy and rack details
$policy_terms = $this->clientPolicyModel->getPolicyDetails($client_id,$client_policy_id);
$policy_type = $policy_terms[0]->is_addon;
$base_policy = $policy_terms[0]->base_policy;
$policy_terms = (array) $policy_terms[0];// convert obj to array
//get policy slab rates
$slab_details = $this->policesModel->getPolicySlabRatesForEmpOnboard($client_policy_id,$client_id);
// print_r($slab_details);die();
$existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $client_policy_id,emp_code: $emp_code,emp_status:['draft','enrolled'],policy_status:['draft','enrolled']);
if(!count($existing_famility_details) && $policy_type == 2)//top up addon only
{
//get basepolicy id then pull emplist from base policy if only current policy is DA addon policy and emplist is zero
// echo 'inside';
$client_policy_id = $base_policy;
$existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $client_policy_id,emp_code: $emp_code,emp_status:['draft','enrolled'],policy_status:['draft','enrolled']);
}
$file = ['id' => null,'client_id' => $client_id,'policy_id' => $client_policy_id,'action' => 'inception'];
// dd($this->employeeModel->getLastQuery());
// dd($existing_famility_details);die();
// print_r($existing_famility_details);die();
$employee_data_group_by_family = data_group_by_family($existing_famility_details,$data_source = 'db');
// dd($employee_data_group_by_family);
// print_r(($employee_data_group_by_family));die();
foreach ($employee_data_group_by_family as $emp_id => $family)
{
$transformed_famility_details = transform_db_data_to_excel($family);
$data = calculate_premimum($transformed_famility_details,$policy_terms,$slab_details,$file);
// print_r($transformed_famility_details);die();
$data = calculate_premimum($transformed_famility_details,$policy_terms,$slab_details,$file,$default_si);
// dd($data);
$employee_data_group_by_family[$emp_id] = $data;
}
// dd ($employee_data_group_by_family);
if($clientPolicyId != null && $empCode != null)
{
return $employee_data_group_by_family;
}else{
// dd ($employee_data_group_by_family);
return $this->respond(['status' => 'success','code' => (count($employee_data_group_by_family) ? 200 : 404),'data' => [$employee_data_group_by_family] ], 200);
}
}
public function getCashDepositData()
{
$ClientPolicyData = $this->clientPolicyModel->select('client_policy.client_id as clientId , client_policy.insurer_id as insurerId,insurers.name as insurer_name')
->join('insurers', 'client_policy.insurer_id = insurers.id', 'left')
->where('client_policy.client_id', $this->request->getGet('client_id') )
->groupBy('client_policy.insurer_id')
->findAll();
$result = [];
if(count($ClientPolicyData))
{
foreach ($ClientPolicyData as $key => $value) {
$data['clientId'] = $value['clientId'];
$data['insurerId'] = $value['insurerId'];
$data['insurerName'] = $value['insurer_name'];
$data['depositData'] = $this->clientPolicyModel->getdepositData($value['clientId'],$value['insurerId']);
$data['balance'] = count($data['depositData']) ? $data['depositData'][0]->balance : 0;
$data['policyDetails'] = [];
$ClientPolicyData =$this->clientPolicyModel->select('client_policy.id as client_policy_id , client_policy.client_id as client_id, policies.id as policy_id,policies.policy_type_id as policy_type_id, policies.name as policy_name , client_policy.is_addon as is_addon')
->join('policies', 'client_policy.policy_id = policies.id', 'left')
->where('client_policy.insurer_id', $value['insurerId'] )
->where('client_policy.client_id', $this->request->getGet('client_id') )
->findAll();
foreach ($ClientPolicyData as $key => $value)
{
$getSlabAndGridData = $this->policesModel->getPolicySlabRatesForEmpOnboard( $value['client_policy_id'],$value['client_id']);
if($value['is_addon'] == "2"){ $value['type'] = 'SI TopUp'; }else if($value['is_addon'] == "3"){ $value['type'] = 'Dependent AddOn'; }else{ $value['type'] = $getSlabAndGridData['grid_master']['policy_type']; }
$employeeDetails = $this->employeePolicyModel->getEmployeePolicy( client_id:$value['client_id'],policy_id: $value['client_policy_id'],status:0);
$enrolledCount = 0;
$draftCount = 0;
if(count($employeeDetails))
{
foreach ($employeeDetails as $item) {
if ($item['emp_status'] === 'enrolled') {
$enrolledCount++;
} elseif ($item['emp_status'] === 'draft') {
$draftCount++;
}
}
}
$value['totalMembersCount'] = count($employeeDetails);
$value['membersCountOfEnrolled'] = $enrolledCount;
$value['membersCountOfDraft'] = $draftCount;
array_push($data['policyDetails'],$value);
}
array_push($result,$data);
}
}
if($result)
{
return $this->respond(['status' => 'success','code' => (count($result) ? 200 : 404),'data' => $result ], 200);
}else{
return $this->respond(['status' => 'failed','code' => (count($result) ? 200 : 404),'data' => [] ], 200);
}
}
public function exportCashDepositData()
{
$CashDepositData = $this->clientPolicyModel->getdepositData($this->request->getGet('client_id'),$this->request->getGet('insurer_id'));
// echo '<pre>';print_r($CashDepositData); echo '</pre>';die;
if(count($CashDepositData))
{
// Define headers and map database fields to Excel fields
$headers = [
'Date' => 'created_at',
'Type' => 'transaction_type',
'Amount' => 'amount',
'Balance' => 'balance',
'Description' => 'description',
'Insurer Name' => 'insurer_name',
'Client Name' => 'clientname'
];
// Create a new Spreadsheet object
$spreadsheet = new Spreadsheet();
// Get the active sheet
$sheet = $spreadsheet->getActiveSheet();
// Add headers
$column = 'A';
foreach ($headers as $header => $dbField) {
$sheet->setCellValue($column . '1', $header);
$column++;
}
// Add data
$row = 2;
foreach ($CashDepositData as $Cashvalue) {
$column = 'A';
foreach ($headers as $dbField) {
$sheet->setCellValue($column . $row, $Cashvalue->$dbField);
$column++;
}
$row++;
}
// Set the header for download
$filename = $CashDepositData[0]->insurer_name.'-CashDeposit.xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
// Save the Excel file to output
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200);
}else{
return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200);
}
}
public function removeEmpAndEmpPolicyData()
{
try {
$clientPolicy = $this->clientPolicyModel->where('id',$this->request->getGet('client_policy_id'))->findAll();
if(count($clientPolicy))
{
if($clientPolicy[0]['is_addon'] == 2)//Topup
{
$empData = $this->employeeModel->where('emp_code',$this->request->getGet('emp_code'))
->where('is_addon_value', 0 )->findAll();
if(count($empData))
{
foreach ($empData as $key => $value) {
$this->employeePolicyModel->where('client_policy_id',$this->request->getGet('client_policy_id') )
->where('employee_id', $value['id'] )
->set(array('is_active'=> 0 ))
->update();
}
}
}
else if($clientPolicy[0]['is_addon'] == 3)//Dependent addon
{
$empData = $this->employeeModel->where('emp_code',$this->request->getGet('emp_code'))
->where('is_addon_value', 1 )->findAll();
if(count($empData))
{
foreach ($empData as $key => $value) {
$this->employeePolicyModel->where('client_policy_id',$this->request->getGet('client_policy_id') )
->where('employee_id', $value['id'] )
->set(array('is_active'=> 0 ))
->update();
}
$this->employeeModel->where('emp_code', $this->request->getGet('emp_code') )
->where('is_active', 1 )->where('is_addon_value', 1 )
->set(array('is_active'=> 0 ))
->update();
}
}
return $this->respond(['status' => 'success','code' => 200,'data' =>[] ], 200);
}else{
return $this->respond(['status' => 'failed','code' => 404,'data' => [] ], 404);
}
} catch (\Exception $e) {
return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500);
}
}
}

View File

@ -35,7 +35,7 @@ class EmployeeServiceController extends AdminController
protected $empEndorsementModel;
protected $general_relationships = ['self' => ['name' => 'Self', 'gender' => 'M','age_min' => 18,'age_max' => null], 'spouse' => ['name' => 'Spouse', 'gender' => 'F','age_min' => 18,'age_max' => null], 'son' => ['name' => 'Son', 'gender' => 'M','age_min' => null,'age_max' => 25], 'daughter' => ['name' => 'Daughter', 'gender' => 'F','age_min' => null,'age_max' => 25], 'father' => ['name' => 'Father', 'gender' => 'M','age_min' => 18,'age_max' => null], 'mother' => ['name' => 'Mother', 'gender' => 'F','age_min' => 18,'age_max' => null], 'father-in-law' => ['name' => 'Father in Law', 'gender' => 'M','age_min' => 18,'age_max' => null], 'mother-in-law' => ['name' => 'Mother in Law', 'gender' => 'F','age_min' => 18,'age_max' => null]];
protected $inception_excel_columns = ['sno'=>['col_idx'=>0,'col_cell_name'=>'A','col_name'=>'S.No','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'emp_id'=>['col_idx'=>1,'col_cell_name'=>'B','col_name'=>'EMP ID','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'name_of_emp_dep'=>['col_idx'=>2,'col_cell_name'=>'C','col_name'=>'NAME OF EMP/DEP','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'dob'=>['col_idx'=>3,'col_cell_name'=>'D','col_name'=>'DOB','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'custom'=>'check_dob_diff','params'=>['row','relationship']],'gender'=>['col_idx'=>4,'col_cell_name'=>'E','col_name'=>'Gender','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>['M','F']],'relationship'=>['col_idx'=>5,'col_cell_name'=>'F','col_name'=>'RELATIONSHIP','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_relationship','params'=>['row','relationship','policy_terms']],'basic_cover_si'=>['col_idx'=>6,'col_cell_name'=>'G','col_name'=>'BASIC COVER SI','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom' => 'check_si','params' => ['row','policy_terms','slab_details']],'doc'=>['col_idx'=>7,'col_cell_name'=>'H','col_name'=>'Date of Coverage','is_mandatory'=>['A','DA'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'params'=>['row']],'doj'=>['col_idx'=>8,'col_cell_name'=>'I','col_name'=>'DOJ','is_mandatory'=>false,'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'custom'=>'check_doj','params'=>['row']],'basic_pay'=>['col_idx'=>9,'col_cell_name'=>'J','col_name'=>'Basic Pay','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_basic_pay','params'=>['row','policy_terms','slab_details']],'band_grade'=>['col_idx'=>10,'col_cell_name'=>'K','col_name'=>'Band/Grade','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_employee_band','params'=>['row','policy_terms','slab_details']],'designation'=>['col_idx'=>11,'col_cell_name'=>'L','col_name'=>'Designation','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'phone'=>['col_idx'=>12,'col_cell_name'=>'M','col_name'=>'Phone','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'email'=>['col_idx'=>13,'col_cell_name'=>'N','col_name'=>'Email','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'pre_existing_ailments'=>['col_idx'=>14,'col_cell_name'=>'O','col_name'=>'PRE EXISTING AILMENTS','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>['0','1']],'change_event'=>['col_idx'=>15,'col_cell_name'=>'P','col_name'=>'Change event','is_mandatory'=>['A','DA','D'],'data_type'=>'str','format'=>null,'allowed_values'=>null],'date_of_exit'=>['col_idx'=>16,'col_cell_name'=>'Q','col_name'=>'Date of exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null],'reason_for_exit'=>['col_idx'=>17,'col_cell_name'=>'R','col_name'=>'Reason for exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>null,'allowed_values'=>null]];
protected $inception_excel_columns = ['sno'=>['col_idx'=>0,'col_cell_name'=>'A','col_name'=>'S.No','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'emp_id'=>['col_idx'=>1,'col_cell_name'=>'B','col_name'=>'EMP ID','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'name_of_emp_dep'=>['col_idx'=>2,'col_cell_name'=>'C','col_name'=>'NAME OF EMP/DEP','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'dob'=>['col_idx'=>3,'col_cell_name'=>'D','col_name'=>'DOB','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'custom'=>'check_dob_diff','params'=>['row','relationship']],'gender'=>['col_idx'=>4,'col_cell_name'=>'E','col_name'=>'Gender','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>['M','F']],'relationship'=>['col_idx'=>5,'col_cell_name'=>'F','col_name'=>'RELATIONSHIP','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_relationship','params'=>['row','relationship','policy_terms']],'basic_cover_si'=>['col_idx'=>6,'col_cell_name'=>'G','col_name'=>'BASIC COVER SI','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom' => 'check_si','params' => ['row','policy_terms','slab_details']],'doc'=>['col_idx'=>7,'col_cell_name'=>'H','col_name'=>'Date of Coverage','is_mandatory'=>['A','DA'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'params'=>['row']],'doj'=>['col_idx'=>8,'col_cell_name'=>'I','col_name'=>'DOJ','is_mandatory'=>false,'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null,'custom'=>'check_doj','params'=>['row']],'basic_pay'=>['col_idx'=>9,'col_cell_name'=>'J','col_name'=>'Basic Pay','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_basic_pay','params'=>['row','policy_terms','slab_details']],'band_grade'=>['col_idx'=>10,'col_cell_name'=>'K','col_name'=>'Band/Grade','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null,'custom'=>'check_employee_band','params'=>['row','policy_terms','slab_details']],'designation'=>['col_idx'=>11,'col_cell_name'=>'L','col_name'=>'Designation','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'phone'=>['col_idx'=>12,'col_cell_name'=>'M','col_name'=>'Phone','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'email'=>['col_idx'=>13,'col_cell_name'=>'N','col_name'=>'Email','is_mandatory'=>false,'data_type'=>'str','format'=>null,'allowed_values'=>null],'pre_existing_ailments'=>['col_idx'=>14,'col_cell_name'=>'O','col_name'=>'PRE EXISTING AILMENTS','is_mandatory'=>['I','A','DA'],'data_type'=>'str','format'=>null,'allowed_values'=>['0','1']],'change_event'=>['col_idx'=>15,'col_cell_name'=>'P','col_name'=>'Change event','is_mandatory'=>['A','DA','D'],'data_type'=>'str','format'=>null,'allowed_values'=>null]];
protected $deletion_excel_columns = ['sno'=>['col_idx'=>0,'col_cell_name'=>'A','col_name'=>'S.No','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'emp_id'=>['col_idx'=>1,'col_cell_name'=>'B','col_name'=>'EMP ID','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'name_of_emp_dep'=>['col_idx'=>2,'col_cell_name'=>'C','col_name'=>'NAME OF EMP/DEP','is_mandatory'=>true,'data_type'=>'str','format'=>null,'allowed_values'=>null],'change_event'=>['col_idx'=>3,'col_cell_name'=>'D','col_name'=>'Change event','is_mandatory'=>['D'],'data_type'=>'str','format'=>null,'allowed_values'=>null],'date_of_exit'=>['col_idx'=>4,'col_cell_name'=>'E','col_name'=>'Date of exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>'d-M-Y','allowed_values'=>null],'reason_for_exit'=>['col_idx'=>5,'col_cell_name'=>'F','col_name'=>'Reason for exit','is_mandatory'=>['D'],'data_type'=>'str','format'=>null,'allowed_values'=>null]];
@ -568,7 +568,9 @@ class EmployeeServiceController extends AdminController
$existing_famility_details = $this->employeeModel->getEmpFamilybyEmpCode(client_id: $client_id,client_policy_id: $client_policy_id,emp_status: ['enrolled','draft'],policy_status:['enrolled','draft']);
$file = ['id' => null,'client_id' => $client_id,'policy_id' => $client_policy_id,'action' => 'inception'];
// $file = ['id' => null,'client_id' => $client_id,'policy_id' => $client_policy_id,'action' => 'inception'];
$file = ['id' => null,'client_id' => $client_id,'policy_id' => $client_policy_id,'action' => 'inception','created_by' => get_session_userid()];
// dd($this->employeeModel->getLastQuery());
// Kint::dump($existing_famility_details);die();
$employee_data_group_by_family = data_group_by_family($existing_famility_details,$data_source = 'db');
@ -619,14 +621,14 @@ class EmployeeServiceController extends AdminController
$group_key = rand(100000, 999999);
//for emp table
$this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'emp_status','old_value' => $data['emp_status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key]);
$this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'emp_status','old_value' => $data['emp_status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]);
// dd( $this->empEndorsementModel->getLastQuery());
// $this->empEndorsementModel->save(['pk' => (int)$data['emp_id'],'emp_code' => $data['emp_code'],'table_name' => 'employees','actions' => 'd','name' => $data['name'],'field_name' => 'change_event','old_value' => $data['change_event'],'new_value' => 'deletion','created_by' => $file['created_by'],'remarks' => 'general deletion']);
// for employee policy table
$this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'date_of_exit','old_value' => $data['date_of_exit'],'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key]);
$this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'reason_for_exit','old_value' => $data['reason_for_exit'],'new_value' => $row[5],'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key]);
$this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'status','old_value' => $data['status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key]);
$this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'date_of_exit','old_value' => $data['date_of_exit'],'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]);
$this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'reason_for_exit','old_value' => $data['reason_for_exit'],'new_value' => $row[5],'created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]);
$this->empEndorsementModel->save(['pk' => (int)$data['emp_policy_id'],'emp_code' => $data['emp_code'],'table_name' => 'employee_polices','actions' => 'd','name' => $data['name'],'field_name' => 'status','old_value' => $data['status'],'new_value' => 'deactivate','created_by' => $file['created_by'],'remarks' => 'general deletion','group_key' => $group_key,'file_id' => $file['id']]);
};
//iterate each row
foreach ($excel_data as $col_key => $row)
@ -736,7 +738,7 @@ class EmployeeServiceController extends AdminController
if(!count($existing_endorsements))
{
$group_key = rand(100000, 999999);
$this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employees','actions' => 'c','name' => $employee['name'],'field_name' => $field_name,'old_value' => $employee[ $field_name ],'new_value' => $field_value,'created_by' => $file['created_by'],'remarks' => $row[7],'date_of_correction' => change_date_format($row[5],'d-M-Y','Y-m-d'),'group_key' => $group_key]);
$this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employees','actions' => 'c','name' => $employee['name'],'field_name' => $field_name,'old_value' => $employee[ $field_name ],'new_value' => $field_value,'created_by' => $file['created_by'],'remarks' => $row[7],'date_of_correction' => change_date_format($row[5],'d-M-Y','Y-m-d'),'group_key' => $group_key,'file_id' => $file['id']]);
}
@ -801,9 +803,9 @@ class EmployeeServiceController extends AdminController
if($slab_value['si'] == $row[3])
{
$group_key = rand(100000, 999999);
$this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $row[3],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key]);
$this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key]);
$this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key]);
$this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'basic_cover_si','old_value' => $employee_policy['basic_cover_si'],'new_value' => $row[3],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]);
$this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'premium','old_value' => $employee_policy['premium'],'new_value' => $slab_value['premium'],'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]);
$this->empEndorsementModel->save(['pk' => (int)$employee['id'],'emp_code' => $employee['emp_code'],'table_name' => 'employee_polices','actions' => 'si','name' => $employee['name'],'field_name' => 'si_enhancement_date','old_value' => null,'new_value' => change_date_format($row[4],'d-M-Y','Y-m-d'),'created_by' => $file['created_by'],'remarks' => 'general si enhancement','group_key' => $group_key,'file_id' => $file['id']]);
break;
}
}
@ -956,6 +958,7 @@ class EmployeeServiceController extends AdminController
{
$error_message = "File not found";
$this->myLogger->logme('error',($error_message . ' for file id ' . $file_id));
return 0;
}
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);

View File

@ -130,6 +130,7 @@ class RestAuthenticationController extends AdminController
try {
$mobile_number = $this->request->getJSON()->mobile_number;
$randomNumber = rand(100000, 999999);
$randomNumber = 123456;
$HrData = $this->hrModel->where('mobile', $mobile_number)->where('contact_type', 'client')->first();
if ($HrData) {

View File

@ -112,6 +112,10 @@ if (! function_exists('transform_objects_to_array_for_inception')) {
// Iterate through each object
foreach ($objects as $obj) {
$TPAID = isset($obj->tpa_id) && $obj->tpa_id !== '' ? $obj->tpa_id : '';
$UHID = isset($obj->uhid) && $obj->uhid !== '' ? $obj->uhid : '';
// Extract all values for the object
$rowData = [
$serialNumber++, // Serial Number

View File

@ -247,22 +247,33 @@ if (!function_exists('data_group_by_family'))
function data_group_by_family($emp_data,$data_source = 'excel')
{
$result = [];
// dd($emp_data);
foreach ($emp_data as $rkey => $row)
{
if($data_source == 'excel')
{
if(!check_row_is_empty_or_null($row))
{
$result[$row[1]][] = $row;
if(strtolower($row[5]) == 'self' && isset($result[$row[1]]))
{
array_unshift($result[$row[1]],$row);
}else
{
$result[$row[1]][] = $row;
}
}
}else if($data_source = 'db')
{
$result[$row['emp_code']][] = $row;
if(strtolower($row['relationship']) == 'self' && isset($result[$row['emp_code']]))
{
array_unshift($result[$row['emp_code']],$row);
}else
{
$result[$row['emp_code']][] = $row;
}
}
}
return $result;
}
}
@ -509,7 +520,7 @@ if (!function_exists('generate_relationship_code'))
if (!function_exists('calculate_premimum'))
{
function calculate_premimum($family_data,$policy_terms,$slab_details,$fileArr)
function calculate_premimum($family_data,$policy_terms,$slab_details,$fileArr,$default_si = null)
{
//
// dd($fileArr);
@ -530,10 +541,13 @@ if (!function_exists('calculate_premimum'))
// dd($transformed_familiy_member_data);
//store emp id and emp band and attach it to their familiy members where band is always empty
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band'] = null;
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band'] = isset($emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band']) ? $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band'] : NULL;
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si'] = isset($emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si']) ? $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si'] : NULL;
if(strtolower($transformed_familiy_member_data['relationship']) == 'self')
{
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band'] = $transformed_familiy_member_data['band'];
$emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si'] = $transformed_familiy_member_data['policy_details']['basic_cover_si'];
}
//end of store emp id and emp band and attach it to their familiy members where band is always empty
@ -555,10 +569,11 @@ if (!function_exists('calculate_premimum'))
$transformed_familiy_member_data['temp']['band'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['band'];
$transformed_familiy_member_data['temp']['maxage'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['maxage'];
$transformed_familiy_member_data['temp']['maxcount'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['maxcount'];
$transformed_familiy_member_data['policy_details']['basic_cover_si'] = $emp_details_with_empband_max_age_max_count[ $transformed_familiy_member_data['emp_code'] ]['si'];
if( $fileArr['id'] == null || (in_array($grid_type,[10,11]) || $transformed_familiy_member_data['temp']['source'] == 'excel'))//if file id is null then data coming from enrollment (from DB) otherwise data coming from xcel, so calculate only data from excel (new entry) note: even data coming from excel for event dependet additon we fetch other dependts from db and calculate premium for whole family
{
$transformed_familiy_member_data = premium_calculation_manager($transformed_familiy_member_data,$policy_terms,$slab_details);
$transformed_familiy_member_data = premium_calculation_manager($transformed_familiy_member_data,$policy_terms,$slab_details,$default_si);
$result[] = $transformed_familiy_member_data;
}
@ -588,8 +603,8 @@ if (!function_exists('transform_excel_data_to_db'))
$policy['basic_cover_si'] = $memArr[6];
$policy['pre_existing_alignments'] = $memArr[14];
$policy['date_of_exit'] = isset($memArr[16]) ? change_date_format($memArr[16],'d-M-Y','Y-m-d') : NULL;
$policy['reason_for_exit'] = $memArr[17];
// $policy['date_of_exit'] = isset($memArr[16]) ? change_date_format($memArr[16],'d-M-Y','Y-m-d') : NULL;
// $policy['reason_for_exit'] = $memArr[17];
$policy['client_policy_id'] = $actionArr['policy_id'];
$policy['date_coverage'] = isset($memArr[7]) ? change_date_format($memArr[7],'d-M-Y','Y-m-d') : NULL;;
$policy['policy_end_date'] = null;
@ -630,20 +645,23 @@ if (!function_exists('transform_excel_data_to_db'))
if (!function_exists('premium_calculation_manager'))
{
function premium_calculation_manager($emp_data,$policy_terms,$slab_details)
function premium_calculation_manager($emp_data,$policy_terms,$slab_details,$default_si = null)
{
// grid type
// 1 = premium => si
// dd($emp_data);
$slug = \Config\Services::slug();
$grid_type = $slab_details['grid_master']['ui_type'];
switch ($grid_type) {
case "1":
//GPA - Sum Insured (SI) * Multiplier
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si)
{
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
@ -658,11 +676,12 @@ if (!function_exists('premium_calculation_manager'))
break;
case "2":
//GPA - Flat Rate for all SI
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si)
{
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
@ -676,11 +695,12 @@ if (!function_exists('premium_calculation_manager'))
break;
case "3":
//GMC - SI
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si)
{
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
@ -694,13 +714,17 @@ if (!function_exists('premium_calculation_manager'))
break;
case "4":
//GMC - Employees Age band
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
// dd($employee_received_si);
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age))
{
// dd($slab_value);
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
@ -714,13 +738,13 @@ if (!function_exists('premium_calculation_manager'))
break;
case "5":
//GMC - Employees Age + SI
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age))
{
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
@ -734,13 +758,13 @@ if (!function_exists('premium_calculation_manager'))
break;
case "6":
//GMC - Employees + Dependent Age band
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age))
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age) && (($slab_value['premium_type'] == 1 && strtolower($emp_data['relationship']) == 'self') || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null) ))
{
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($emp_data['policy_details']['date_coverage'],$policy_terms['policy_end_date'])->days;
@ -754,13 +778,13 @@ if (!function_exists('premium_calculation_manager'))
break;
case "7":
//GMC - Employees + Dependent Age + SI
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age))
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age) && (($slab_value['premium_type'] == 1 && strtolower($emp_data['relationship']) == 'self') || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null) ))
{
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days;
@ -776,14 +800,14 @@ if (!function_exists('premium_calculation_manager'))
case "8":
//GMC - SI as per Grade or Band
$employee_received_band = $emp_data['temp']['band'];
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['grade'] == $employee_received_band && $slab_value['si'] == $employee_received_si)
if($slab_value['grade'] == $employee_received_band && $slab_value['si'] == $employee_received_si && (($slab_value['premium_type'] == 1 && strtolower($emp_data['relationship']) == 'self') || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null) ))
{
// $emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days;
@ -798,13 +822,13 @@ if (!function_exists('premium_calculation_manager'))
case "9":
//GMC - Flat Rate for all
$employee_received_band = $emp_data['temp']['band'];
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['grade'] == $employee_received_band && $slab_value['si'] == $employee_received_si)
if($slab_value['grade'] == $employee_received_band && $slab_value['si'] == $employee_received_si && (($slab_value['premium_type'] == 1 && strtolower($emp_data['relationship']) == 'self') || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null) ))
{
// $emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['basic_cover_si'] = $slab_value['si'];
$emp_data['policy_details']['date_coverage'] = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days;
@ -819,20 +843,20 @@ if (!function_exists('premium_calculation_manager'))
case "10":
//GMC - Maximum age of Dependents
$max_age = $emp_data['temp']['maxage'];
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
$emp_data['policy_details']['basic_cover_si'] = null;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $max_age && $slab_value['age_to'] >= $max_age))
if($slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $max_age && $slab_value['age_to'] >= $max_age) && (($slab_value['premium_type'] == 1 && strtolower($emp_data['relationship']) == 'self') || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null) ))
{
$emp_data['policy_details']['basic_cover_si'] = (strtolower($emp_data['relationship']) == 'self' ? $employee_received_si : null);
$emp_data['policy_details']['date_coverage'] = (strtolower($emp_data['relationship']) == 'self' ? (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']) : "");
$emp_data['policy_details']['policy_end_date'] = (strtolower($emp_data['relationship']) == 'self' ? $policy_terms['policy_end_date'] : "");
$emp_data['policy_details']['days'] = (strtolower($emp_data['relationship']) == 'self' ? calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days : 0);
$emp_data['policy_details']['premium'] = (strtolower($emp_data['relationship']) == 'self' ? $slab_value['premium'] : 0);
$emp_data['policy_details']['rata_premimum'] = (strtolower($emp_data['relationship']) == 'self' ? calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']) : 0);
$emp_data['policy_details']['gst'] = (strtolower($emp_data['relationship']) == 'self' ? ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')) : 0);
$emp_data['policy_details']['basic_cover_si'] = $employee_received_si;
$emp_data['policy_details']['date_coverage'] = isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date'];
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days;
$emp_data['policy_details']['premium'] = $slab_value['premium'];
$emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']);
$emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''));
break;
}
@ -842,30 +866,84 @@ if (!function_exists('premium_calculation_manager'))
//GMC - Maximum count per Family
$max_count = $emp_data['temp']['maxcount'];
$employee_received_band = $emp_data['temp']['band'];
$employee_received_si = $emp_data['policy_details']['basic_cover_si'];
// echo $employee_received_band;
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
$emp_data['policy_details']['basic_cover_si'] = null;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if($slab_value['si'] == $employee_received_si && ($slab_value['grade'] == $employee_received_band))
if($slab_value['si'] == $employee_received_si && ($slab_value['grade'] == $employee_received_band) && (($slab_value['premium_type'] == 1 && strtolower($emp_data['relationship']) == 'self') || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null) ))
{
//calculate premium based on count
// echo $emp_data['name'];
$familiy_si_covered = $employee_received_si * $max_count;
$familiy_si_covered = ($familiy_si_covered >= $slab_value['max_si'] ? $slab_value['max_si'] : $familiy_si_covered);
$emp_data['policy_details']['basic_cover_si'] = (strtolower($emp_data['relationship']) == 'self' ? $familiy_si_covered : null);
$emp_data['policy_details']['date_coverage'] = (strtolower($emp_data['relationship']) == 'self' ? (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']) : "");
$emp_data['policy_details']['policy_end_date'] = (strtolower($emp_data['relationship']) == 'self' ? $policy_terms['policy_end_date'] : "");
$emp_data['policy_details']['days'] = (strtolower($emp_data['relationship']) == 'self' ? calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days : 0);
$emp_data['policy_details']['premium'] = (strtolower($emp_data['relationship']) == 'self' ? $slab_value['premium'] : 0);
$emp_data['policy_details']['rata_premimum'] = (strtolower($emp_data['relationship']) == 'self' ? calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']) : 0);
$emp_data['policy_details']['gst'] = (strtolower($emp_data['relationship']) == 'self' ? ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.','')) : 0);
$emp_data['policy_details']['basic_cover_si'] = $familiy_si_covered;
$emp_data['policy_details']['date_coverage'] = (empty($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days;
$emp_data['policy_details']['premium'] = $slab_value['premium'];
$emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']);
$emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''));
break;
}
}
break;
case "12":
//GMC - Employee + relationship
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
$employee_relationship = $slug->slugify($emp_data['relationship']);
$employee_relationship = ($employee_relationship == 'daughter' || $employee_relationship == 'son' ? $employee_relationship = 'child' : $employee_relationship);
$emp_data['policy_details']['basic_cover_si'] = null;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if( $slab_value['si'] == $employee_received_si && ((($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null) && $slab_value['relationship'] == $employee_relationship) || ($slab_value['premium_type'] == 1 && strtolower($emp_data['relationship']) == 'self')) )
{
$emp_data['policy_details']['basic_cover_si'] = $employee_received_si;
$emp_data['policy_details']['date_coverage'] = (empty($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days;
$emp_data['policy_details']['premium'] = $slab_value['premium'];
$emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']);
$emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''));
break;
}
}
break;
case "13":
//GMC - Employee + relationship + age
$employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si;
$employee_relationship = $slug->slugify($emp_data['relationship']);
$employee_relationship = ($employee_relationship == 'daughter' || $employee_relationship == 'son' ? $employee_relationship = 'child' : $employee_relationship);
$emp_data['policy_details']['basic_cover_si'] = null;
$age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y;
foreach ($slab_details['slab_rates'] as $skey => $slab_value)
{
if( $slab_value['si'] == $employee_received_si && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age) && ((($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null) && $slab_value['relationship'] == $employee_relationship) || ($slab_value['premium_type'] == 1 && strtolower($emp_data['relationship']) == 'self')) )
{
$emp_data['policy_details']['basic_cover_si'] = $employee_received_si;
$emp_data['policy_details']['date_coverage'] = (empty($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']);
$emp_data['policy_details']['policy_end_date'] = $policy_terms['policy_end_date'];
$emp_data['policy_details']['days'] = calculate_days_bw_dates($policy_terms['policy_start_date'],$policy_terms['policy_end_date'])->days;
$emp_data['policy_details']['premium'] = $slab_value['premium'];
$emp_data['policy_details']['rata_premimum'] = calculate_pro_rata_premimum($slab_value['premium'],$emp_data['policy_details']['days']);
$emp_data['policy_details']['gst'] = ((float) number_format(($emp_data['policy_details']['rata_premimum'] * (18/100)),2,'.',''));
break;
}
}
break;
default:
echo "Not a valid grid";
}

View File

@ -185,6 +185,7 @@ class ClientPolicyModel extends Model
->where('cash_deposit.client_id', $clientId)
->where('cash_deposit.insurer_id', $insurerId) // Add this line to filter by insurer_id
->orderBy('cash_deposit.id', 'DESC')
->get()
->getResult();
}

View File

@ -25,7 +25,8 @@ class EmpEndorsementModel extends Model
"created_by",
"updated_by",
"is_active",
"remarks"
"remarks",
"file_id"
];
// Callbacks

View File

@ -139,4 +139,30 @@ class EmployeeModel extends Model
return $this->where('emp_code',$arr['emp_code'])->where('name',$arr['name'])->where('client_id', $arr['client_id'])->first();
}
public function getEmpListByFileId(int $file_id,array $emp_status = [],array $policy_status = [])
{
$result = $this->select(['employees.id as emp_id', 'employees.client_id', 'employees.relationship', 'employees.relationship_code', 'employees.change_event', 'employees.emp_code', 'employees.name', 'employees.email_personal', 'employees.email_corporate', 'employees.mobile', 'employees.gender', 'employees.dob', 'employees.doj', 'employees.basic_pay', 'employees.band', 'employees.designation', 'employees.emp_status','employee_polices.id as emp_policy_id', 'employee_polices.employee_id', 'employee_polices.client_policy_id', 'employee_polices.tpa_id', 'employee_polices.uhid', 'employee_polices.batch_code', 'employee_polices.status', 'employee_polices.pre_existing_alignments', 'employee_polices.basic_cover_si', 'employee_polices.date_coverage', 'employee_polices.policy_end_date', 'employee_polices.days', 'employee_polices.premium', 'employee_polices.rata_premimum', 'employee_polices.gst', 'employee_polices.date_of_exit', 'employee_polices.reason_for_exit'])
->join('employee_polices', 'employee_polices.employee_id = employees.id')
->where('employees.is_active',1)
->where('employees.file_id',$file_id)
->where('employee_polices.is_active',1)
// ->where('employee_polices.uhid is not null')
// ->where('employee_polices.tpa_id is not null')
->groupStart()
->orWhere('employee_polices.uhid is not null')
->orWhere('employee_polices.tpa_id is not null')
->groupEnd()
->when(count($emp_status), function($query) use ($emp_status){
return $query->whereIn('employees.emp_status', $emp_status);
})
->when(count($policy_status), function($query) use ($policy_status){
return $query->whereIn('employee_polices.status', $policy_status);
})
->findAll();
// ~dd($this->db->getLastQuery());
return ($result);
}
}

View File

@ -79,13 +79,17 @@ class EmployeePolicyModel extends Model
->join('tpa_branch tpab', 'cp.tpa_branch_id = tpab.id') //tpab - tpa brach
->join('clients cm', 'cp.client_id = cm.id') //cm - client master
->where('emp.client_id',$client_id)
->where('employee_polices.client_policy_id',$policy_id);
->where('employee_polices.is_active',1)
->where('emp.is_active',1)
->where('employee_polices.client_policy_id',$policy_id)
->orderBy('emp.emp_code','ASC')->orderBy('employee_polices.employee_id','ASC');
if($status != 0 && !empty($status)){
$result->where('employee_polices.status', $status);
}
$result = $result->findAll();
$result = $result->findAll();
return ($result);
}
@ -106,6 +110,16 @@ class EmployeePolicyModel extends Model
{
$client_policy_id = $ref_data['client_policy_id'];
$insurer_or_tpa = $ref_data['insurer_or_tpa'];
$event = $ref_data['event_type'];
if($insurer_or_tpa == 'tpa'){
$id = 'tpa_id';
}else if($insurer_or_tpa == 'insurer'){
$id = 'uhid';
}
$sql = "
SELECT
@ -120,6 +134,8 @@ class EmployeePolicyModel extends Model
'Has Define' as emp_type,
employee_polices.id as primaryKey,
employee_polices.tpa_id,
employee_polices.uhid,
employee_polices.pre_existing_alignments,
employee_polices.basic_cover_si,
employee_polices.date_coverage,
@ -141,15 +157,12 @@ class EmployeePolicyModel extends Model
batch_files.batch_code as bf
FROM batch_files
LEFT JOIN batch_list ON batch_files.batch_code = batch_list.batch_code
WHERE batch_files.event_type = 'inception'
WHERE batch_files.event_type = '{$event}'
AND batch_files.actions = 'export'
AND batch_files.insurer_or_tpa = '{$insurer_or_tpa}'
) as batch_data ON employee_polices.id = batch_data.emp_policy_id
WHERE batch_data.bf IS NULL
AND batch_data.bl IS NULL
AND employee_polices.client_policy_id = '{$client_policy_id}'
AND (employee_polices.tpa_id IS NULL OR employee_polices.tpa_id = '')
AND (employee_polices.uhid IS NULL OR employee_polices.uhid = '')
WHERE employee_polices.client_policy_id = '{$client_policy_id}'
AND (employee_polices.{$id} IS NULL OR employee_polices.{$id} = '')
AND employee_polices.is_active = 1";
// Get the result set
@ -555,7 +568,7 @@ class EmployeePolicyModel extends Model
// }
public function updateSiAndPremium( $client_policy_id, $employee_id,$basic_cover_si,$premium)
public function updateSiAndPremium( $client_policy_id, $employee_id,$basic_cover_si,$premium = 0)
{
@ -659,12 +672,14 @@ class EmployeePolicyModel extends Model
->where('employee_polices.client_policy_id',$policy_id);
$result->whereIn('employee_polices.status', ['draft', 'enrolled']);
$result->whereIn('emp.emp_status', ['draft', 'enrolled']);
$result = $result->findAll();
return ($result);
}
public function getViewEmpSuccessList($file_id){
public function getViewEmpSuccessList($file_id)
{
return $this->db->table('employees emp')
->select(['employee_polices.*','pm.name as policy_name','im.short_name as insurer_short_name','ib.branch_name as insurer_branch_name','ib.branch_code as insurer_branch_code','tpam.name as tpa_name','tpam.short_name as tpa_short_name','tpab.branch_code as tpa_branch_code','cm.client_name','cm.short_name as client_short_name','emp.relationship','emp.relationship_code','emp.change_event','emp.emp_code','emp.name','emp.email_corporate','emp.dob','emp.gender','emp.emp_status','emp.is_active as emp_is_active','emp.mobile as mobile'])
->join('employee_polices', 'employee_polices.employee_id = emp.id')
@ -679,5 +694,55 @@ class EmployeePolicyModel extends Model
->whereIn('employee_polices.status', ['draft', 'enrolled'])
->get()->getResultArray();
}
public function getECardDataUsingMd5($client_policy_id, $emp_code){
$result = $this->db->table('employees e')
->select('e.id,
e.name, e.mobile,
e.relationship,
e.relationship_code,
e.emp_code,
e.email_personal,
e.email_corporate,
e.gender,
e.dob,
e.doj,
e.band,
TIMESTAMPDIFF(YEAR, e.dob, CURDATE()) AS emp_age,
ep.tpa_id,
ep.uhid,
ep.policy_end_date,
clients.client_name,
clients.short_name AS client_short_name,
policies.name AS policy_name,
insurers.name AS insurer_name,
insurers.short_name AS insurer_short_name,
tpa.name AS tpa_name,
tpa.short_name AS tpa_short_name'
)
->join('employee_polices ep', 'ep.employee_id = e.id')
->join('client_policy cp', 'cp.id = ep.client_policy_id')
->join('clients', 'clients.id = cp.client_id')
->join('policies', 'policies.id = cp.policy_id')
->join('insurers', 'insurers.id = cp.insurer_id')
->join('tpa', 'tpa.id = cp.tpa_id')
->where('e.emp_status', 'active')
->where('e.is_active', '1')
->where('ep.status', 'active')
->where('ep.is_active', '1')
->where('MD5(e.emp_code)', $emp_code)
->where('MD5(ep.client_policy_id)', $client_policy_id)
->get()
->getResultArray();
return $result;
}
}

View File

@ -24,6 +24,7 @@ class PolicyPremium2Model extends Model
"updated_by",
'is_active',
'premium_type',
'relationship',
];

View File

@ -1,3 +1,10 @@
<style>
option:disabled {
color: gray !important; /* Set text color to gray */
background-color: lightgray !important;}
</style>
<div class="tab-pane fade active show" id="general-q-tab">
<div class="row">
@ -124,7 +131,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary">Save changes</button>
<a id="fetch_btn" class="btn btn-primary">Initiate Emp Onboard</a>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
@ -152,6 +159,10 @@
$('#file_upload').hide();
$(document).ready(function() {
<?php if (session()->has('success1')): ?>
toastr.success('<?= session()->getFlashdata('success1') ?>', 'success');
<?php endif; ?>
// Initialize select2
$("#client_id").select2();
$("#policy_id").select2();
@ -478,10 +489,10 @@ $(document).ready(function() {
$('#client_id').on('change', function() {
var selectedClient = $(this).val();
console.log('selectedClient', selectedClient);
// $('#selectedOptionInfo').text('Selected option: ' + selectedOption);
// Check if the selected option exists in apiData
var foundPolicies = clientPolicies.find(function(item) {
return item.id === selectedClient;
@ -489,64 +500,6 @@ $(document).ready(function() {
console.log(foundPolicies.policies);
appendPolicies(foundPolicies.policies);
var apiURL = '<?php echo base_url();?>' + 'util/fetch-emp-count/' + selectedClient;
console.log(apiURL);
$.ajax({
url: apiURL,
method: 'GET',
headers: {
"Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest"
},
success: function(response) {
console.log('responce data emp_count', response);
if (response.code === 200 && response.dataStatus === true && response.data !== "") {
try {
console.log(response.emp_count.length)
if(response.emp_count > 0){
var select = document.getElementById("upload-action-type");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value === "inception") {
select.options[i].disabled = true;
break;
}
}
}else{
var select = document.getElementById("upload-action-type");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value === "inception") {
select.options[i].disabled = false;
break;
}
}
}
} catch (error) {
console.error('Error parsing API response data:', error);
}
} else if (response.code === 404 && response.dataStatus === false) {
console.error('no data found', response);
} else {
console.error('Something went wrong!');
}
},
error: function(xhr, status, error) {
console.error('Error fetching data from API:', error);
var select = document.getElementById("upload-action-type");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value === "inception") {
select.options[i].disabled = false;
break;
}
}
}
});
});
});
@ -637,6 +590,12 @@ document.getElementById('toggleIcon1').addEventListener('click', function() {
$('#fetch_enrolled_data').click(function()
{
var policy_id = $('#policy_id').val();
var uri = '<?= base_url('util/init-Emp-onboard/') ?>' + policy_id;
console.log(policy_id);
console.log(uri);
$('#fetch_btn').attr('href', uri);
$('#emp_data').empty();
var client_id = $('#client_id').val();
var policy_id = $('#policy_id').val();
@ -700,5 +659,75 @@ $('#fetch_enrolled_data').click(function()
})
$(document).ready(function() {
$('#policy_id').change(function(){
var selectedpolicy = $(this).val();
console.log('selectedpolicy',selectedpolicy)
var apiURL = '<?php echo base_url();?>' + 'util/fetch-emp-count/' + selectedpolicy;
console.log(apiURL);
$.ajax({
url: apiURL,
method: 'GET',
headers: {
"Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest"
},
success: function(response) {
console.log('responce data emp_count', response);
if (response.code === 200 && response.dataStatus === true && response.data !== "") {
try {
console.log(response.emp_count.length)
if(response.emp_count > 0){
var select = document.getElementById("upload-action-type");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value === "inception") {
select.options[i].disabled = true;
break;
}
}
}else{
var select = document.getElementById("upload-action-type");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value === "inception") {
select.options[i].disabled = false;
break;
}
}
}
} catch (error) {
console.error('Error parsing API response data:', error);
}
} else if (response.code === 404 && response.dataStatus === false) {
console.error('no data found', response);
} else {
console.error('Something went wrong!');
}
},
error: function(xhr, status, error) {
console.error('Error fetching data from API:', error);
var select = document.getElementById("upload-action-type");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value === "inception") {
select.options[i].disabled = false;
break;
}
}
}
});
})
})
//--------------------------------------------------------------------------------------
</script>

View File

@ -66,6 +66,7 @@ table.dataTable tbody td {
</style>
<!-- <button><a href="">download full file</a></button> -->
<div class="container">
<table class="table table-sm table-hover m-0 table-centered dt-responsive nowrap w-100" cellspacing="0" id="tickets-table">
<thead class="bg-light">
@ -118,6 +119,12 @@ $(document).ready(function() {
extend: 'excel',
text: 'Excel', // Set the title for the Excel button
title: 'ExcelErrorData', // Set your custom title here
},
{
text: 'Excel Error', // Set the text for the custom button
action: function (e, dt, node, config) {
window.location.href = '<?= base_url("util/full-excel-error-file/") . $file_id ?>';
}
}
],
paging: false, // Disable pagination

View File

@ -86,6 +86,11 @@
data-target="#full-width-modal-emp-list" class="dropdown-item view_emp_list"
href="#"><i
class="mdi mdi-eye mr-2 text-muted font-18 vertical-middle"></i>View</a>
<?php if($file['status'] == 'success'){?>
<a data-id="<?php echo $file['id']?>" class="dropdown-item truncate"
href="#"><i
class="mdi mdi-delete mr-2 text-muted font-18 vertical-middle"></i>Truncate</a>
<?php } ?>
</div>
</div>
@ -225,6 +230,80 @@ $('body').on('click', '.upload_button', function() {
$('#file_upload_actions').val(fileId.action)
})
$('body').on('click', '.truncate', function() {
event.preventDefault();
// console.log(event);
var fileId = JSON.parse(this.getAttribute('data-id'));
// alert('Hi' + fileId);
Swal.fire({
title: "Do you want to truncate data from uploaded file?",
showCancelButton: true,
confirmButtonText: "Delete",
confirmButtonColor: "#ff3333",
}).then((result) => {
console.log(result);
if (result.isConfirmed) {
$('.loader').fadeIn();
$('.loader-mask').fadeIn();
var apiURL = '<?php echo base_url();?>' + 'employee/truncate/' + fileId;
$.ajax({
url: apiURL,
method: 'GET',
headers: {
// "Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest"
},
success: function(response) {
// console.log(response.code);
// console.log(response.dataStatus);
// console.log(response.data);
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
}, 1000);
if (response.code === 200 && response.dataStatus === true && response.data !== "") {
Swal.fire({
title: "Deleted!",
// text: "Data from truncated",
icon: "success"
});
} else if (response.code === 404 && response.dataStatus === false) {
console.error('no data found', response);
Swal.fire({
title: "Failed!",
text: response.message,
icon: "error"
});
} else {
Swal.fire({
title: "Failed!",
text: 'Something went wrong! Try later',
icon: "error"
});
}
},
error: function(xhr, status, error) {
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
}, 1000);
console.error('Error fetching data from API:', error);
toastr.error('Something went wrong! Try later', 'Error');
}
});
}
});
})
$('#uploadForm').submit(function() {

View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Driving License ID Card</title>
</head>
<body>
<table>
<?php if(isset($data)) { ?>
<?php foreach ($data as $key => $value) { ?>
<tr>
<td>
<!-- Left side of the ID card -->
<div
style="width: 400px; height: 250px; background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 10px; overflow: hidden; display: flex; flex-direction: column; margin: 0 10px;">
<div style="padding: 20px; box-sizing: border-box; border-right: 1px solid #ccc;">
<div style="margin-bottom: 10px; display: flex; justify-content: space-between;">
<label style="font-weight: bold;">Name:</label>
<span><?= htmlspecialchars($value['name']) ?></span>
</div>
<div style="margin-bottom: 10px; display: flex; justify-content: space-between;">
<label style="font-weight: bold;">Policy No:</label>
<span><?= htmlspecialchars($value['tpa_id']) ?></span>
</div>
<div style="margin-bottom: 10px; display: flex; justify-content: space-between;">
<label style="font-weight: bold;">Card No:</label>
<span><?= 'KR2-0' . $key ?></span>
</div>
<div style="margin-bottom: 10px; display: flex; justify-content: space-between;">
<label style="font-weight: bold;">Emp.Id:</label>
<span><?= htmlspecialchars($value['emp_code']) ?></span>
</div>
<div style="margin-bottom: 10px; display: flex; justify-content: space-between;">
<label style="font-weight: bold;">Age:</label>
<span><?= htmlspecialchars($value['emp_age']) ?></span>
</div>
<div style="margin-bottom: 10px; display: flex; justify-content: space-between;">
<label style="font-weight: bold;">Valid up to:</label>
<span><?= htmlspecialchars(formatDateOrReturn($value['policy_end_date'])) ?></span>
</div>
</div>
</div>
</td>
<td>
<!-- Right side of the ID card -->
<div
style="width: 400px; height: 250px; background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 10px; overflow: hidden; display: flex; flex-direction: column; margin: 0 10px; font-size:smaller">
<div style="padding: 20px; box-sizing: border-box; border-left: 1px solid #ccc;">
<div style="padding-top: 20px;position: relative;bottom: 36px;">
<h4>Terms and Conditions</h4>
<p>This card is non-transferable and is valid at network hospitals only.</p>
<ul style="padding-left: 20px;">
<li>will enable Card Holder to avail cashless hospitalization only on the basis of
</li>
<li>In the case of photoless identity cards issued to beneficiaries, acceptable
proof</li>
<li>Notify the authorities in case of any changes to your personal information.</li>
<li>The mentioned covers are add-ons by paying additional premium and available only if opted by the policyholders.</li>
</ul>
</div>
</div>
</div>
</td>
</tr>
<?php } ?>
<?php } ?>
</table>
<?php if(!isset($data)) { ?>
<a href="<?= htmlspecialchars(base_url('util/digital-id-card/'.md5('EMP004').'/'.md5('12'))) ?>"
target="_blank">button</a>
<?php } ?>
</body>
</html>

View File

@ -27,16 +27,17 @@
</select>
</div>
<div class="form-group col-md-4">
<div class="form-group col-md-4" style="position: relative; left: 45px;display:none" id="premium_type">
<label for="css"> Premium Calculation </label>
<input type="radio" id="individual" name="premium_type" value="2">
<label for="html" style="position: absolute;bottom: 2px;">Individual </label>&nbsp;
<input type="radio" id="single" name="premium_type" value="1"
style="margin-left: 85px;" checked>
<label for="css" style="position: absolute;left: 134px;bottom: 2px;"> Single Insurance
</label>
<div style="display: flex; align-items: center;">
<input type="radio" id="individual" name="premium_type" value="2">
<label for="individual" style="position: relative;top: 5px;left: 5px;"> Individual </label>&nbsp;
<input type="radio" id="single" name="premium_type" value="1">
<label for="single" style="position: relative;top: 5px;left: 5px;"> Single Insurance </label>
</div>
</div>
</div>
<hr>
@ -66,7 +67,7 @@ $('#btnGridSubmit').hide();
$('.close').click(function() {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -92,7 +93,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
if (dataIdValue == '1') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -164,7 +165,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
</div>`;
} else if (dataIdValue == '2') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -186,7 +187,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '3') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -211,7 +212,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '4') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
grid_html = `
@ -245,7 +246,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '5') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -278,7 +279,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '6') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -313,7 +314,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '7') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -346,7 +347,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '8') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -376,7 +377,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '9') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -406,7 +407,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '10') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -438,7 +439,7 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
} else if (dataIdValue == '11') {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
@ -469,8 +470,92 @@ function addGridHTML(event = false, data = false, ui_type = false, si_or_bp = fa
</div>
</div>`;
} else if (dataIdValue == '12') {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
grid_html = `
<div class="form-row" id="grid_12" style="width:84%">
<div class="form-group col-md-2">
<label for="mobile">Sum Insured<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.si : ''}" type="text" class="form-control" placeholder="Enter Sum Insured" name="12_si[]" id="12_si" onkeypress = "return onlyNumbers(event)" onkeyup="formatNumber(this)" required>
<div id='sum_insured_number_word' class="text-danger-2" ></div>
</div>
<div class="form-group col-md-3">
<label for="mobile">Releationship<span class="text-danger">*</span></label>
<select class="form-control" name="12_relationship[]" id="12_relationship" required>
<option value="">Select</option>
<option value="self" ${data !== false && data !== undefined && data !== '' && data.relationship === 'self' ? 'selected' : ''}>Self</option>
<option value="spouse" ${data !== false && data !== undefined && data !== '' && data.relationship === 'spouse' ? 'selected' : ''}>Spouse</option>
<option value="father" ${data !== false && data !== undefined && data !== '' && data.relationship === 'father' ? 'selected' : ''}>Father</option>
<option value="mother" ${data !== false && data !== undefined && data !== '' && data.relationship === 'mother' ? 'selected' : ''}>Mother</option>
<option value="father-in-law" ${data !== false && data !== undefined && data !== '' && data.relationship === 'father-in-law' ? 'selected' : ''}>Father in Law</option>
<option value="mother-in-law" ${data !== false && data !== undefined && data !== '' && data.relationship === 'mother-in-law' ? 'selected' : ''}>Mother in Law</option>
<option value="child" ${data !== false && data !== undefined && data !== '' && data.relationship === 'child' ? 'selected' : ''}>Child</option>
</select>
</div>
<div class="form-group col-md-3">
<label for="mobile">Premium<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.premium : ''}" type="text" class="form-control" placeholder="Enter Premium" name="12_premium[]" id="12_premium" onkeypress = "return onlyNumbers(event)" onkeyup="formatNumber(this)" required>
<div id='premium_number_word' class="text-danger-2" ></div>
</div>
<div class="form-group">
<button style="margin-top: 44px;" type="button" class="btn btn-danger" id="gmc_remove" onclick="removebutton(0,12)">x</button>
<button style="margin-top: 44px;" type="button" class="btn btn-primary" id="gmc_add_more" onclick="appendGridtHtml(12)">+</button>
</div>
</div>`;
} else if (dataIdValue == '13') {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
grid_html = `
<div class="form-row" id="grid_13" style="width:84%">
<div class="form-group col-md-2">
<label for="mobile">Sum Insured<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.si : ''}" type="text" class="form-control" placeholder="Enter Sum Insured" name="13_si[]" id="13_si" onkeypress = "return onlyNumbers(event)" onkeyup="formatNumber(this)" required>
<div id='sum_insured_number_word' class="text-danger-2" ></div>
</div>
<div class="form-group col-md-2">
<label for="mobile">From Age<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.age_from : ''}" type="text" class="form-control" placeholder="Enter From Age" name="13_age_from[]" id="13_age_from" required>
</div>
<div class="form-group col-md-2">
<label for="mobile">To Age<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.age_to : ''}" type="text" class="form-control" placeholder="Enter TO Age" name="13_age_to[]" id="13_age_to" required>
</div>
<div class="form-group col-md-2">
<label for="mobile">Relationship<span class="text-danger">*</span></label>
<select class="form-control" name="13_relationship[]" id="13_relationship" required>
<option value="">Select</option>
<option value="self" ${data !== false && data !== undefined && data !== '' && data.relationship === 'self' ? 'selected' : ''}>Self</option>
<option value="spouse" ${data !== false && data !== undefined && data !== '' && data.relationship === 'spouse' ? 'selected' : ''}>Spouse</option>
<option value="father" ${data !== false && data !== undefined && data !== '' && data.relationship === 'father' ? 'selected' : ''}>Father</option>
<option value="mother" ${data !== false && data !== undefined && data !== '' && data.relationship === 'mother' ? 'selected' : ''}>Mother</option>
<option value="father-in-law" ${data !== false && data !== undefined && data !== '' && data.relationship === 'father-in-law' ? 'selected' : ''}>Father in Law</option>
<option value="mother-in-law" ${data !== false && data !== undefined && data !== '' && data.relationship === 'mother-in-law' ? 'selected' : ''}>Mother in Law</option>
<option value="child" ${data !== false && data !== undefined && data !== '' && data.relationship === 'child' ? 'selected' : ''}>Child</option>
</select>
</div>
<div class="form-group col-md-3">
<label for="mobile">Premium<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.premium : ''}" type="text" class="form-control" placeholder="Enter Premium" name="13_premium[]" id="13_premium" onkeypress = "return onlyNumbers(event)" onkeyup="formatNumber(this)" required>
<div id='premium_number_word' class="text-danger-2" ></div>
</div>
<div class="form-group">
<button style="margin-top: 44px;" type="button" class="btn btn-danger" id="gmc_remove" onclick="removebutton(0,13)">x</button>
<button style="margin-top: 44px;position: absolute;margin-left: 5px;" type="button" class="btn btn-primary" id="gmc_add_more" onclick="appendGridtHtml(13)">+</button>
</div>
</div>`;
} else {
for (var i = 1; i <= 11; i++) {
for (var i = 1; i <= 13; i++) {
$('#grid_' + i).remove();
}
grid_html = '';
@ -597,6 +682,7 @@ $('body').on('click', '.btnPolicyModel', function() {
$('.loader').fadeIn();
$('.loader-mask').fadeIn();
$.ajax({
url: '<?= base_url("util/policy-premium") ?>',
type: "GET",
@ -608,6 +694,14 @@ $('body').on('click', '.btnPolicyModel', function() {
$('#GridForm')[0].reset();
if(res.family_floater == 1){
$('#premium_type').show();
$('#individual').prop('checked', true)
}else{
$('#premium_type').hide();
$('#individual').prop('checked', false)
}
setTimeout(function() {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
@ -620,7 +714,7 @@ $('body').on('click', '.btnPolicyModel', function() {
$('#nameOfThePolicy').html(' - ' + res.policy_name);
$('#grid_emp_count').val(res.count);
if (res.count == false) {
if (res.count > 0) {
console.log('count -- 2', res.count);
$("#btnGridSubmit_2").hide();
} else {
@ -634,7 +728,8 @@ $('body').on('click', '.btnPolicyModel', function() {
}
var policy_grid_id_value = '';
if (res.premiumData && res.premiumData.length > 0 && res.premiumData[0].policy_grid_id) {
if (res.premiumData && res.premiumData.length > 0 && res.premiumData[0]
.policy_grid_id) {
policy_grid_id_value = res.premiumData[0].policy_grid_id;
}
@ -649,23 +744,26 @@ $('body').on('click', '.btnPolicyModel', function() {
});
$('#grid').html(policeGridOptionHTML);
if(res.premiumData[0].hasOwnProperty('premium_type')){
if (res.premiumData[0].hasOwnProperty('premium_type')) {
if (res.premiumData[0].premium_type == '2') {
$('#individual').prop('checked', true)
$('#single').prop('checked', false)
} else if (res.premiumData[0].premium_type == '1') {
} else if (res.premiumData[0].premium_type == '1') {
$('#single').prop('checked', true)
$('#individual').prop('checked', false)
} else {
$('#single').prop('checked', false)
$('#individual').prop('checked', false)
}
}
var si_or_bp_value = '';
if (res.premiumData && res.premiumData.length > 0) {
@ -732,8 +830,8 @@ $('body').on('click', '.btnPolicyModel', function() {
$('#grid').empty();
$('#nameOfThePolicy').html('');
$('#GridForm').hide();
$('#no_data').html('The policy has no Policy Rac Rate');
toastr.warning("The policy has no Policy Rac Rate", "Warning")
$('#no_data').html('The policy has no Policy Rack Rate');
toastr.warning("The policy has no Policy Rack Rate", "Warning")
}
@ -1101,6 +1199,78 @@ function appendGridtHtml(ui_type = false, data = false, ) {
<button style="margin-top: 44px;" type="button" class="btn btn-primary" id="gmc_add_more_${Count}" onclick="appendGridtHtml(11)">+</button>
</div>
</div>`;
} else if (ui_type == '12') {
html = `
<div class="form-row" id="removeChild_${Count}" style="width:84%">
<div class="form-group col-md-2">
<label for="mobile">Sum Insured<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.si : ''}" type="text" class="form-control" placeholder="Enter Sum Insured" name="12_si[]" id="12_si_${Count}" onkeypress = "return onlyNumbers(event)" onkeyup="formatNumber(this)" required>
<div id='sum_insured_number_word_${Count}' class="text-danger-2" ></div>
</div>
<div class="form-group col-md-3">
<label for="mobile">Relationship<span class="text-danger">*</span></label>
<select class="form-control" name="12_relationship[]" id="12_relationship" required>
<option value="">Select</option>
<option value="self" ${data !== false && data !== undefined && data !== '' && data.relationship === 'self' ? 'selected' : ''}>Self</option>
<option value="spouse" ${data !== false && data !== undefined && data !== '' && data.relationship === 'spouse' ? 'selected' : ''}>Spouse</option>
<option value="father" ${data !== false && data !== undefined && data !== '' && data.relationship === 'father' ? 'selected' : ''}>Father</option>
<option value="mother" ${data !== false && data !== undefined && data !== '' && data.relationship === 'mother' ? 'selected' : ''}>Mother</option>
<option value="father-in-law" ${data !== false && data !== undefined && data !== '' && data.relationship === 'father-in-law' ? 'selected' : ''}>Father in Law</option>
<option value="mother-in-law" ${data !== false && data !== undefined && data !== '' && data.relationship === 'mother-in-law' ? 'selected' : ''}>Mother in Law</option>
<option value="child" ${data !== false && data !== undefined && data !== '' && data.relationship === 'child' ? 'selected' : ''}>Child</option>
</select>
</div>
<div class="form-group col-md-3">
<label for="mobile">Premium<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.premium : ''}" type="text" class="form-control" placeholder="Enter Premium" name="12_premium[]" id="12_premium_${Count}" onkeypress = "return onlyNumbers(event)" onkeyup="formatNumber(this)" required>
<div id='premium_number_word_${Count}' class="text-danger-2" ></div>
</div>
<div class="form-group">
<button style="margin-top: 44px;" type="button" class="btn btn-danger" id="gmc_remove" onclick="removebutton(${Count})">x</button>
<button style="margin-top: 44px;" type="button" class="btn btn-primary" id="gmc_add_more_${Count}" onclick="appendGridtHtml(12)">+</button>
</div>
</div>`;
} else if (ui_type == '13') {
html = `
<div class="form-row" id="removeChild_${Count}" style="width:84%">
<div class="form-group col-md-2">
<label for="mobile">Sum Insured<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.si : ''}" type="text" class="form-control" placeholder="Enter Sum Insured" name="13_si[]" id="13_si_${Count}" onkeypress = "return onlyNumbers(event)" onkeyup="formatNumber(this)" required>
<div id='sum_insured_number_word_${Count}' class="text-danger-2" ></div>
</div>
<div class="form-group col-md-2">
<label for="mobile">From Age<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.age_from : ''}" type="text" class="form-control" placeholder="Enter From Age" name="13_age_from[]" id="13_age_from" required>
</div>
<div class="form-group col-md-2">
<label for="mobile">To Age<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.age_to : ''}" type="text" class="form-control" placeholder="Enter TO Age" name="13_age_to[]" id="13_age_to" required>
</div>
<div class="form-group col-md-2">
<label for="mobile">Relationship<span class="text-danger">*</span></label>
<select class="form-control" name="13_relationship[]" id="13_relationship" required>
<option value="">Select</option>
<option value="self" ${data !== false && data !== undefined && data !== '' && data.relationship === 'self' ? 'selected' : ''}>Self</option>
<option value="spouse" ${data !== false && data !== undefined && data !== '' && data.relationship === 'spouse' ? 'selected' : ''}>Spouse</option>
<option value="father" ${data !== false && data !== undefined && data !== '' && data.relationship === 'father' ? 'selected' : ''}>Father</option>
<option value="mother" ${data !== false && data !== undefined && data !== '' && data.relationship === 'mother' ? 'selected' : ''}>Mother</option>
<option value="father-in-law" ${data !== false && data !== undefined && data !== '' && data.relationship === 'father-in-law' ? 'selected' : ''}>Father in Law</option>
<option value="mother-in-law" ${data !== false && data !== undefined && data !== '' && data.relationship === 'mother-in-law' ? 'selected' : ''}>Mother in Law</option>
<option value="child" ${data !== false && data !== undefined && data !== '' && data.relationship === 'child' ? 'selected' : ''}>Child</option>
</select>
</div>
<div class="form-group col-md-3">
<label for="mobile">Premium<span class="text-danger">*</span></label>
<input value="${data !== false && data !== undefined && data !== '' ? data.premium : ''}" type="text" class="form-control" placeholder="Enter Premium" name="13_premium[]" id="13_premium_${Count}" onkeypress = "return onlyNumbers(event)" onkeyup="formatNumber(this)" required>
<div id='premium_number_word_${Count}' class="text-danger-2" ></div>
</div>
<div class="form-group">
<button style="margin-top: 44px;" type="button" class="btn btn-danger" id="gmc_remove" onclick="removebutton(${Count})">x</button>
<button style="margin-top: 44px;position: absolute;margin-left: 5px;" type="button" class="btn btn-primary" id="gmc_add_more_${Count}" onclick="appendGridtHtml(13)">+</button>
</div>
</div>`;
}
@ -1113,8 +1283,6 @@ function appendGridtHtml(ui_type = false, data = false, ) {
Count++
// Number to word
$(document).keyup(function(event) {
if (event.target) {

View File

@ -21,7 +21,7 @@ table.dataTable tbody td {
</thead>
<tbody class="font-12">
<?php for ($i = 1; $i < count($tbody); $i++): ?>
<?php for ($i = 1; $i <= count($tbody); $i++): ?>
<tr>
<?php foreach ($tbody[$i] as $data): ?>
<td>

View File

@ -14,6 +14,7 @@
"ext-intl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"dompdf/dompdf": "^2.0",
"firebase/php-jwt": "^6.10",
"google/apiclient": "^2.15.0",
"laminas/laminas-escaper": "^2.9",

BIN
public/assets/images/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

471
public/assets/images/1.svg Normal file
View File

@ -0,0 +1,471 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg viewBox="0 0 909 1286" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<clipPath id="c0_1"><path d="M76.4 1248.2V38.2H870.8v1210Z"/></clipPath>
<clipPath id="c1_1"><path d="M76.4 1247.4V38.2H870.8V1247.4Z"/></clipPath>
<style type="text/css"><![CDATA[
.g0_1{
fill: #FFF;
}
.g1_1{
fill: none;
stroke: #CCC;
stroke-width: 0.836;
stroke-linecap: square;
stroke-miterlimit: 10;
}
.g2_1{
fill: #AAA;
}
.g3_1{
fill: none;
stroke: #AAA;
stroke-width: 0.836;
stroke-linecap: square;
stroke-miterlimit: 10;
}
.g4_1{
fill: #333;
stroke: #333;
stroke-width: 0.836;
stroke-linecap: square;
stroke-miterlimit: 10;
}
.g5_1{
fill: none;
stroke: #00F;
stroke-width: 0.836;
stroke-linecap: square;
stroke-miterlimit: 10;
}
.g6_1{
fill: none;
stroke: #ACA899;
stroke-width: 0.836;
stroke-linecap: square;
stroke-miterlimit: 10;
}
.g7_1{
fill: none;
stroke: #ECE9D8;
stroke-width: 0.836;
stroke-linecap: square;
stroke-miterlimit: 10;
}
]]></style>
</defs>
<path clip-path="url(#c0_1)" d="M76.4 44.9H872.5V1254.1H76.4V44.9Z" class="g0_1"/>
<path d="M83.1 44.9H865.8v301H83.1V44.9Z" class="g0_1"/>
<path d="M83.1 44.9H865.8v301H83.1V44.9Z" class="g0_1"/>
<g clip-path="url(#c0_1)">
<image preserveAspectRatio="none" x="96" y="50" width="158" height="25" xlink:href="img/1.jpg"/>
<image preserveAspectRatio="none" x="412" y="54" width="50" height="17" xlink:href="img/2.jpg"/>
<image preserveAspectRatio="none" x="390" y="88" width="71" height="81" xlink:href="img/3.jpg"/>
</g>
<path d="M389.6 88v81.1m0 -81.1h71.9m0 0v81.9m-71.9 0h71.9" class="g1_1"/>
<g clip-path="url(#c0_1)">
<image preserveAspectRatio="none" x="395" y="175" width="59" height="64" xlink:href="img/4.jpg"/>
<image preserveAspectRatio="none" x="391" y="239" width="71" height="27" xlink:href="img/5.png"/>
<image preserveAspectRatio="none" x="183" y="274" width="191" height="48" xlink:href="img/6.jpg"/>
</g>
<path d="M469.4 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M465.2 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M461.9 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M458.6 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M455.2 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M451.9 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M448.5 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M445.2 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M441.8 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M438.5 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M435.1 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M431.8 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M428.5 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M425.1 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M421.8 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M418.4 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M415.1 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M411.7 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M408.4 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M405 321.7h.9v.8H405v-.8Z" class="g2_1"/>
<path d="M401.7 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M398.3 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M395 321.7h.8v.8H395v-.8Z" class="g2_1"/>
<path d="M391.7 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M388.3 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M385 321.7h.8v.8H385v-.8Z" class="g2_1"/>
<path d="M381.6 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M378.3 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M374.9 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M371.6 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M368.2 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M364.9 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M361.6 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M358.2 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M354.9 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M351.5 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M348.2 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M344.8 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M341.5 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M338.1 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M334.8 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M331.4 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M328.1 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M324.8 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M321.4 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M318.1 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M314.7 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M311.4 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M308 321.7h.9v.8H308v-.8Z" class="g2_1"/>
<path d="M304.7 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M301.3 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M298 321.7h.8v.8H298v-.8Z" class="g2_1"/>
<path d="M294.7 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M291.3 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M288 321.7h.8v.8H288v-.8Z" class="g2_1"/>
<path d="M284.6 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M281.3 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M277.9 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M274.6 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M271.2 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M267.9 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M264.5 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M261.2 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M257.9 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M254.5 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M251.2 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M247.8 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M244.5 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M241.1 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M237.8 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M234.4 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M231.1 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M227.8 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M224.4 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M221.1 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M217.7 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M214.4 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M211 321.7h.9v.8H211v-.8Z" class="g2_1"/>
<path d="M207.7 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M204.3 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M201 321.7h.8v.8H201v-.8Z" class="g2_1"/>
<path d="M197.6 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M194.3 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M191 321.7h.8v.8H191v-.8Z" class="g2_1"/>
<path d="M187.6 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M184.3 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M180.9 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M177.6 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M174.2 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M170.9 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M167.5 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M164.2 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M160.9 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M157.5 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M154.2 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M150.8 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M147.5 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M144.1 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M140.8 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M137.4 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M134.1 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M130.7 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M127.4 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M124.1 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M120.7 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M117.4 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M114 321.7h.9v.8H114v-.8Z" class="g2_1"/>
<path d="M110.7 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M107.3 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M104 321.7h.8v.8H104v-.8Z" class="g2_1"/>
<path d="M100.6 321.7h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M97.3 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M94 321.7h.8v.8H94v-.8Z" class="g2_1"/>
<path d="M90.6 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M87.3 321.7h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M86.8 45.3V344.7m0 -299.4H470.7m0 0V345.5m-383.9 0H470.7" class="g3_1"/>
<path fill-rule="evenodd" d="M495.4 60.8c0 .8 -.9 1.6 -1.7 1.6c-.9 0 -1.7 -.8 -1.7 -1.6c0 -.9 .8 -1.7 1.7 -1.7c.8 0 1.7 .8 1.7 1.7Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 81.7c0 .8 -.9 1.7 -1.7 1.7c-.9 0 -1.7 -.9 -1.7 -1.7c0 -.9 .8 -1.7 1.7 -1.7c.8 0 1.7 .8 1.7 1.7Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 111.8c0 .8 -.9 1.7 -1.7 1.7c-.9 0 -1.7 -.9 -1.7 -1.7c0 -.9 .8 -1.7 1.7 -1.7c.8 0 1.7 .8 1.7 1.7Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 141.9c0 .8 -.9 1.7 -1.7 1.7c-.9 0 -1.7 -.9 -1.7 -1.7c0 -.8 .8 -1.7 1.7 -1.7c.8 0 1.7 .9 1.7 1.7Z" class="g4_1"/>
<path d="M587.8 215.9h59.3m27.6 0H787.6" class="g5_1"/>
<path d="M478.2 45.3V298.7m0 -253.4H862.1m0 0V299.5m-383.9 0H862.1" class="g3_1"/>
<path d="M83.5 354.7H863.7m-780.2 0v.9" class="g6_1"/>
<path d="M83.5 355.6H863.7m0 -.9v.9" class="g7_1"/>
<path d="M83.1 362.7H865.8v301H83.1v-301Z" class="g0_1"/>
<path d="M83.1 362.7H865.8v301H83.1v-301Z" class="g0_1"/>
<g clip-path="url(#c1_1)">
<image preserveAspectRatio="none" x="96" y="368" width="158" height="25" xlink:href="img/7.jpg"/>
<image preserveAspectRatio="none" x="412" y="372" width="50" height="17" xlink:href="img/8.jpg"/>
<image preserveAspectRatio="none" x="390" y="406" width="71" height="81" xlink:href="img/9.jpg"/>
</g>
<path d="M389.6 405.7v81.1m0 -81.1h71.9m0 0v82m-71.9 0h71.9" class="g1_1"/>
<g clip-path="url(#c1_1)">
<image preserveAspectRatio="none" x="395" y="492" width="59" height="65" xlink:href="img/10.jpg"/>
<image preserveAspectRatio="none" x="391" y="557" width="71" height="26" xlink:href="img/11.png"/>
<image preserveAspectRatio="none" x="183" y="592" width="191" height="47" xlink:href="img/12.jpg"/>
</g>
<path d="M469.4 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M465.2 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M461.9 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M458.6 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M455.2 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M451.9 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M448.5 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M445.2 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M441.8 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M438.5 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M435.1 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M431.8 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M428.5 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M425.1 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M421.8 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M418.4 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M415.1 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M411.7 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M408.4 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M405 639.5h.9v.8H405v-.8Z" class="g2_1"/>
<path d="M401.7 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M398.3 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M395 639.5h.8v.8H395v-.8Z" class="g2_1"/>
<path d="M391.7 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M388.3 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M385 639.5h.8v.8H385v-.8Z" class="g2_1"/>
<path d="M381.6 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M378.3 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M374.9 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M371.6 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M368.2 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M364.9 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M361.6 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M358.2 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M354.9 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M351.5 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M348.2 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M344.8 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M341.5 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M338.1 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M334.8 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M331.4 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M328.1 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M324.8 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M321.4 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M318.1 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M314.7 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M311.4 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M308 639.5h.9v.8H308v-.8Z" class="g2_1"/>
<path d="M304.7 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M301.3 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M298 639.5h.8v.8H298v-.8Z" class="g2_1"/>
<path d="M294.7 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M291.3 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M288 639.5h.8v.8H288v-.8Z" class="g2_1"/>
<path d="M284.6 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M281.3 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M277.9 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M274.6 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M271.2 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M267.9 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M264.5 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M261.2 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M257.9 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M254.5 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M251.2 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M247.8 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M244.5 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M241.1 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M237.8 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M234.4 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M231.1 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M227.8 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M224.4 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M221.1 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M217.7 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M214.4 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M211 639.5h.9v.8H211v-.8Z" class="g2_1"/>
<path d="M207.7 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M204.3 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M201 639.5h.8v.8H201v-.8Z" class="g2_1"/>
<path d="M197.6 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M194.3 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M191 639.5h.8v.8H191v-.8Z" class="g2_1"/>
<path d="M187.6 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M184.3 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M180.9 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M177.6 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M174.2 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M170.9 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M167.5 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M164.2 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M160.9 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M157.5 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M154.2 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M150.8 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M147.5 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M144.1 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M140.8 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M137.4 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M134.1 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M130.7 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M127.4 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M124.1 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M120.7 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M117.4 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M114 639.5h.9v.8H114v-.8Z" class="g2_1"/>
<path d="M110.7 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M107.3 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M104 639.5h.8v.8H104v-.8Z" class="g2_1"/>
<path d="M100.6 639.5h.9v.8h-.9v-.8Z" class="g2_1"/>
<path d="M97.3 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M94 639.5h.8v.8H94v-.8Z" class="g2_1"/>
<path d="M90.6 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M87.3 639.5h.8v.8h-.8v-.8Z" class="g2_1"/>
<path d="M86.8 363.1V662.5m0 -299.4H470.7m0 0V663.3m-383.9 0H470.7" class="g3_1"/>
<path fill-rule="evenodd" d="M495.4 378.6c0 .8 -.9 1.6 -1.7 1.6c-.9 0 -1.7 -.8 -1.7 -1.6c0 -.9 .8 -1.7 1.7 -1.7c.8 0 1.7 .8 1.7 1.7Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 399.5c0 .8 -.9 1.6 -1.7 1.6c-.9 0 -1.7 -.8 -1.7 -1.6c0 -.9 .8 -1.7 1.7 -1.7c.8 0 1.7 .8 1.7 1.7Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 429.6c0 .8 -.9 1.6 -1.7 1.6c-.9 0 -1.7 -.8 -1.7 -1.6c0 -.9 .8 -1.7 1.7 -1.7c.8 0 1.7 .8 1.7 1.7Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 459.7c0 .8 -.9 1.6 -1.7 1.6c-.9 0 -1.7 -.8 -1.7 -1.6c0 -.9 .8 -1.7 1.7 -1.7c.8 0 1.7 .8 1.7 1.7Z" class="g4_1"/>
<path d="M587.8 533.7h59.3m27.6 0H787.6" class="g5_1"/>
<path d="M478.2 363.1V616.5m0 -253.4H862.1m0 0V617.3m-383.9 0H862.1" class="g3_1"/>
<path d="M83.5 672.5H863.7m-780.2 0v.8" class="g6_1"/>
<path d="M83.5 673.3H863.7m0 -.8v.8" class="g7_1"/>
<path d="M83.1 680.4H865.8V981.5H83.1V680.4Z" class="g0_1"/>
<path d="M83.1 680.4H865.8V981.5H83.1V680.4Z" class="g0_1"/>
<g clip-path="url(#c1_1)">
<image preserveAspectRatio="none" x="96" y="685" width="158" height="26" xlink:href="img/13.jpg"/>
<image preserveAspectRatio="none" x="412" y="690" width="50" height="16" xlink:href="img/14.jpg"/>
<image preserveAspectRatio="none" x="390" y="724" width="71" height="81" xlink:href="img/15.jpg"/>
</g>
<path d="M389.6 723.5v81.1m0 -81.1h71.9m0 0v82m-71.9 0h71.9" class="g1_1"/>
<g clip-path="url(#c1_1)">
<image preserveAspectRatio="none" x="395" y="810" width="59" height="64" xlink:href="img/16.jpg"/>
<image preserveAspectRatio="none" x="391" y="874" width="71" height="27" xlink:href="img/17.png"/>
<image preserveAspectRatio="none" x="183" y="910" width="191" height="47" xlink:href="img/18.jpg"/>
</g>
<path d="M469.4 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M465.2 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M461.9 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M458.6 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M455.2 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M451.9 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M448.5 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M445.2 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M441.8 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M438.5 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M435.1 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M431.8 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M428.5 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M425.1 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M421.8 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M418.4 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M415.1 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M411.7 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M408.4 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M405 957.2h.9v.9H405v-.9Z" class="g2_1"/>
<path d="M401.7 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M398.3 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M395 957.2h.8v.9H395v-.9Z" class="g2_1"/>
<path d="M391.7 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M388.3 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M385 957.2h.8v.9H385v-.9Z" class="g2_1"/>
<path d="M381.6 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M378.3 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M374.9 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M371.6 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M368.2 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M364.9 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M361.6 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M358.2 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M354.9 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M351.5 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M348.2 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M344.8 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M341.5 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M338.1 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M334.8 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M331.4 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M328.1 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M324.8 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M321.4 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M318.1 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M314.7 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M311.4 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M308 957.2h.9v.9H308v-.9Z" class="g2_1"/>
<path d="M304.7 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M301.3 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M298 957.2h.8v.9H298v-.9Z" class="g2_1"/>
<path d="M294.7 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M291.3 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M288 957.2h.8v.9H288v-.9Z" class="g2_1"/>
<path d="M284.6 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M281.3 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M277.9 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M274.6 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M271.2 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M267.9 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M264.5 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M261.2 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M257.9 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M254.5 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M251.2 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M247.8 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M244.5 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M241.1 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M237.8 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M234.4 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M231.1 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M227.8 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M224.4 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M221.1 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M217.7 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M214.4 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M211 957.2h.9v.9H211v-.9Z" class="g2_1"/>
<path d="M207.7 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M204.3 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M201 957.2h.8v.9H201v-.9Z" class="g2_1"/>
<path d="M197.6 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M194.3 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M191 957.2h.8v.9H191v-.9Z" class="g2_1"/>
<path d="M187.6 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M184.3 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M180.9 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M177.6 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M174.2 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M170.9 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M167.5 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M164.2 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M160.9 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M157.5 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M154.2 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M150.8 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M147.5 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M144.1 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M140.8 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M137.4 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M134.1 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M130.7 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M127.4 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M124.1 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M120.7 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M117.4 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M114 957.2h.9v.9H114v-.9Z" class="g2_1"/>
<path d="M110.7 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M107.3 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M104 957.2h.8v.9H104v-.9Z" class="g2_1"/>
<path d="M100.6 957.2h.9v.9h-.9v-.9Z" class="g2_1"/>
<path d="M97.3 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M94 957.2h.8v.9H94v-.9Z" class="g2_1"/>
<path d="M90.6 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M87.3 957.2h.8v.9h-.8v-.9Z" class="g2_1"/>
<path d="M86.8 680.9V980.2m0 -299.3H470.7m0 0V981.1m-383.9 0H470.7" class="g3_1"/>
<path fill-rule="evenodd" d="M495.4 696.3c0 .9 -.9 1.7 -1.7 1.7c-.9 0 -1.7 -.8 -1.7 -1.7c0 -.8 .8 -1.6 1.7 -1.6c.8 0 1.7 .8 1.7 1.6Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 717.2c0 .9 -.9 1.7 -1.7 1.7c-.9 0 -1.7 -.8 -1.7 -1.7c0 -.8 .8 -1.6 1.7 -1.6c.8 0 1.7 .8 1.7 1.6Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 747.3c0 .9 -.9 1.7 -1.7 1.7c-.9 0 -1.7 -.8 -1.7 -1.7c0 -.8 .8 -1.6 1.7 -1.6c.8 0 1.7 .8 1.7 1.6Z" class="g4_1"/>
<path fill-rule="evenodd" d="M495.4 777.4c0 .9 -.9 1.7 -1.7 1.7c-.9 0 -1.7 -.8 -1.7 -1.7c0 -.8 .8 -1.6 1.7 -1.6c.8 0 1.7 .8 1.7 1.6Z" class="g4_1"/>
<path d="M587.8 851.5h59.3m27.6 0H787.6" class="g5_1"/>
<path d="M478.2 680.9V934.2m0 -253.3H862.1m0 0V935.1m-383.9 0H862.1" class="g3_1"/>
<path d="M83.5 990.3H863.7m-780.2 0v.8" class="g6_1"/>
<path d="M83.5 991.1H863.7m0 -.8v.8" class="g7_1"/>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/assets/images/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -0,0 +1,177 @@
<?php
namespace App\Tests;
use CodeIgniter\Test\CIUnitTestCase;
use Config\App;
use Config\Services;
use Tests\Support\Libraries\ConfigReader;
// use App\Helpers\excel_util_helper;
use Kint\Kint;
class GridType11PremiumCalculationTest extends CIUnitTestCase
{
public function testType11PremiumCalculationWithPremiumTypeOne()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'A', 'si' => 5000000, 'premium' => 500, 'max_si' => 2500000,'premium_type' => 1, 'relationship' => null],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'B', 'si' => 5000000, 'premium' => 1500, 'max_si' => 2000000, 'premium_type' => 1, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'C', 'si' => 5000000, 'premium' => 400, 'max_si' => 1800000, 'premium_type' => 1, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'D', 'si' => 5000000, 'premium' => 800, 'max_si' => 150000, 'premium_type' => 1, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'E', 'si' => 5000000, 'premium' => 8000, 'max_si' => 130000, 'premium_type' => 1, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'F', 'si' => 5000000, 'premium' => 14000, 'max_si' => 10, 'premium_type' => 1, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'G', 'si' => 5000000, 'premium' => 12000, 'max_si' => 5, 'premium_type' => 1, 'relationship' => null]],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 11,'policy_grid_type' => 'Employees + Relationship + max count','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 1,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1990', 'F', 'Spouse', 5000000, '01-Jan-2024', '01-Jan-2020', 50000, 'A', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1988', 'M', 'Self', '5000000', '', '', '', 'G', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue(($policy_created_count = 1 || $policy_created_count = 0));
}
public function testType11PremiumCalculationWithPremiumTypeNull()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'A', 'si' => 500000, 'premium' => 500, 'max_si' => 2500000,'premium_type' => NULL, 'relationship' => null],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'B', 'si' => 5000000, 'premium' => 1500, 'max_si' => 2000000, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'C', 'si' => 500000, 'premium' => 400, 'max_si' => 1800000, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'D', 'si' => 5000000, 'premium' => 800, 'max_si' => 150000, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'E', 'si' => 5000000, 'premium' => 8000, 'max_si' => 130000, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'F', 'si' => 5000000, 'premium' => 14000, 'max_si' => 10, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'G', 'si' => 5000000, 'premium' => 12000, 'max_si' => 5, 'premium_type' => NULL, 'relationship' => null]],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 11,'policy_grid_type' => 'Employees + Relationship + max count','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 1,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1988', 'F', 'Spouse', 5000000, '01-Jan-2024', '01-Jan-2020', 50000, 'A', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1988', 'M', 'Self', '500000', '', '', '', 'C', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue($policy_created_count > 1);
}
public function testType11PremiumCalculationWithPremiumTypeTwo()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'A', 'si' => 500000, 'premium' => 500, 'max_si' => 2500000,'premium_type' => NULL, 'relationship' => null],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'B', 'si' => 5000000, 'premium' => 1500, 'max_si' => 2000000, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'C', 'si' => 500000, 'premium' => 400, 'max_si' => 1800000, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'D', 'si' => 5000000, 'premium' => 800, 'max_si' => 150000, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'E', 'si' => 5000000, 'premium' => 8000, 'max_si' => 130000, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'F', 'si' => 5000000, 'premium' => 14000, 'max_si' => 10, 'premium_type' => NULL, 'relationship' => null],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 11, 'age_from' => null, 'age_to' => null, 'grade' => 'G', 'si' => 5000000, 'premium' => 12000, 'max_si' => 5, 'premium_type' => NULL, 'relationship' => null]],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 11,'policy_grid_type' => 'Employees + Relationship + max count','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 1,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1988', 'F', 'Spouse', '', '01-Jan-2024', '01-Jan-2020', 50000, '', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1988', 'M', 'Self', '500000', '', '', '', 'C', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue($policy_created_count > 1);
}
}

View File

@ -0,0 +1,177 @@
<?php
namespace App\Tests;
use CodeIgniter\Test\CIUnitTestCase;
use Config\App;
use Config\Services;
use Tests\Support\Libraries\ConfigReader;
// use App\Helpers\excel_util_helper;
use Kint\Kint;
class GridType12PremiumCalculationTest extends CIUnitTestCase
{
public function testType12PremiumCalculationWithPremiumTypeOne()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 12, 'age_from' => null, 'age_to' => null, 'grade' => null, 'si' => 5000000, 'premium' => 50, 'max_si' => 0,'premium_type' => 1, 'relationship' => 'self'],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 25000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 20000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'child'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 18000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'father'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 15000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'mother'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 14000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'father-in-law'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 12000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'mother-in-law']],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 12,'policy_grid_type' => 'Employees + Relationship','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 0,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1990', 'F', 'Spouse', 5000000, '01-Jan-2024', '01-Jan-2020', 50000, 'A', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1990', 'M', 'Self', '5000000', '', '', '', '', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue(($policy_created_count = 1 || $policy_created_count = 0));
}
public function testType12PremiumCalculationWithPremiumTypeNull()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 12, 'age_from' => null, 'age_to' => null, 'grade' => null, 'si' => 5000000, 'premium' => 50, 'max_si' => 0,'premium_type' => NULL, 'relationship' => 'self'],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 25000, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 20000, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'child'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 18000, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'father'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 15000, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'mother'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 14000, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'father-in-law'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => NULL, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 12000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'mother-in-law']],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 12,'policy_grid_type' => 'Employees + Relationship','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 0,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1990', 'F', 'Spouse', 5000000, '01-Jan-2024', '01-Jan-2020', 50000, 'A', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1990', 'M', 'Self', '5000000', '', '', '', '', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue($policy_created_count > 1);
}
public function testType12PremiumCalculationWithPremiumTypeTwo()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 12, 'age_from' => null, 'age_to' => null, 'grade' => null, 'si' => 5000000, 'premium' => 50, 'max_si' => 0,'premium_type' => 2, 'relationship' => 'self'],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 25000, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 20000, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'child'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 18000, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'father'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 15000, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'mother'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 14000, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'father-in-law'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 2, 'age_from' => null, 'age_to' => null, 'grade' => '', 'si' => 5000000, 'premium' => 12000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'mother-in-law']],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 12,'policy_grid_type' => 'Employees + Relationship','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 0,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1990', 'F', 'Spouse', 5000000, '01-Jan-2024', '01-Jan-2020', 50000, 'A', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1990', 'M', 'Self', '5000000', '', '', '', '', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue($policy_created_count > 1);
}
}

View File

@ -0,0 +1,177 @@
<?php
namespace App\Tests;
use CodeIgniter\Test\CIUnitTestCase;
use Config\App;
use Config\Services;
use Tests\Support\Libraries\ConfigReader;
// use App\Helpers\excel_util_helper;
use Kint\Kint;
class GridType13PremiumCalculationTest extends CIUnitTestCase
{
public function testType13PremiumCalculationWithPremiumTypeOne()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 12, 'age_from' => 18, 'age_to' => 35, 'grade' => null, 'si' => 5000000, 'premium' => 500, 'max_si' => 0,'premium_type' => 1, 'relationship' => 'self'],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 55, 'grade' => '', 'si' => 5000000, 'premium' => 1500, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'self'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 18, 'age_to' => 35, 'grade' => '', 'si' => 5000000, 'premium' => 400, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 55, 'grade' => '', 'si' => 5000000, 'premium' => 800, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 8000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'mother'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 14000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'father-in-law'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 40, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 12000, 'max_si' => 0, 'premium_type' => 1, 'relationship' => 'mother-in-law']],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 13,'policy_grid_type' => 'Employees + Relationship + age','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 0,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1990', 'F', 'Spouse', 5000000, '01-Jan-2024', '01-Jan-2020', 50000, 'A', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1988', 'M', 'Self', '5000000', '', '', '', '', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue(($policy_created_count = 1 || $policy_created_count = 0));
}
public function testType13PremiumCalculationWithPremiumTypeNull()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 12, 'age_from' => 18, 'age_to' => 35, 'grade' => null, 'si' => 5000000, 'premium' => 500, 'max_si' => 0,'premium_type' => NULL, 'relationship' => 'self'],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 55, 'grade' => '', 'si' => 5000000, 'premium' => 1500, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'self'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 18, 'age_to' => 35, 'grade' => '', 'si' => 5000000, 'premium' => 400, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 55, 'grade' => '', 'si' => 5000000, 'premium' => 800, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 8000, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'mother'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 14000, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'father-in-law'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 40, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 12000, 'max_si' => 0, 'premium_type' => NULL, 'relationship' => 'mother-in-law']],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 13,'policy_grid_type' => 'Employees + Relationship + age','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 0,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1988', 'F', 'Spouse', 5000000, '01-Jan-2024', '01-Jan-2020', 50000, 'A', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1988', 'M', 'Self', '5000000', '', '', '', '', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue($policy_created_count > 1);
}
public function testType13PremiumCalculationWithPremiumTypeTwo()
{
helper('excel_util_helper');
$slab_details = [ 'slab_rates' =>[
[ 'id' => 322, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 12, 'age_from' => 18, 'age_to' => 35, 'grade' => null, 'si' => 5000000, 'premium' => 500, 'max_si' => 0,'premium_type' => 2, 'relationship' => 'self'],
[ 'id' => 323, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 55, 'grade' => '', 'si' => 5000000, 'premium' => 1500, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'self'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 18, 'age_to' => 35, 'grade' => '', 'si' => 5000000, 'premium' => 400, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 55, 'grade' => '', 'si' => 5000000, 'premium' => 800, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'spouse'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 8000, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'mother'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 36, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 14000, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'father-in-law'],
[ 'id' => 324, 'client_id' => 61, 'client_policy_id' => 63, 'policy_grid_id' => 4, 'age_from' => 40, 'age_to' => 65, 'grade' => '', 'si' => 5000000, 'premium' => 12000, 'max_si' => 0, 'premium_type' => 2, 'relationship' => 'mother-in-law']],
'grid_master' => ['id' => 4,'policy_type' => 'GMC','ui_type' => 13,'policy_grid_type' => 'Employees + Relationship + age','is_dependent_allowed' => 1,'max_dependent_age' => 0,'max_dependent_count' => 0,'basicpay' => 0,'emp_band' => 0,]
];
// Sample family data
$family_details = [ 'TEST001' =>
[1,'TEST001','Jane Doe', '01-Jan-1988', 'F', 'Spouse', 5000000, '01-Jan-2024', '01-Jan-2020', 50000, 'A', 'Manager', '1234567890', 'john.doe@example.com', 'None', '', '', ''],
[2,'TEST001','John Doe', '01-Jan-1988', 'M', 'Self', '5000000', '', '', '', '', '', '', '', '', '', ''],
[3,'TEST001','Peter Doe', '01-Jan-1990', 'M', 'Father', '', '', '', '', '', '', '', '', '', '', ''],
[4,'TEST001','Mary Doe', '01-Jan-1990', 'F', 'Mother', '', '', '', '', '', '', '', '', '', '', ''],
[5,'TEST001','Grace Doe', '01-Jan-1990', 'F', 'Mother in law', '', '', '', '', '', '', '', '', '', '', ''],
[6,'TEST001','George Doe', '01-Jan-1990', 'M', 'Father in law', '', '', '', '', '', '', '', '', '', '', ''],
[7,'TEST001','Alice Doe', '01-Jan-1990', 'F', 'Daughter', 5000000, '01-Jan-2024', '01-Jan-2024', 40000, 'B', 'Supervisor', '9876543210', '', '', '', ''],
[8,'TEST001','Bob Doe', '01-Jan-1990', 'M', 'Son', '5000000', '', '', '', '', '', '', '', '', '', ''],
];
// Sample policy terms
$policy_terms = [
'family_floater' => true,
'family_floaters' => [
'childrens' => 2,
'spouse' => 1,
'either-parents-pil' => 0,
'parents' => 2,
'parents-in-law' => 2,
],
];
$policy_details = ['base_policy' => null,"policy_start_date" => "2023-02-02","policy_end_date" => "2024-02-02","policy_terms" => json_encode($policy_terms)];
$file = ['id' => null,'client_id' => 10,'policy_id' => 10,'action' => 'inception'];
$data = calculate_premimum($family_details,$policy_details,$slab_details,$file);
$policy_created_count = 0;
echo "\n";
foreach ($data as $key => $value)
{
echo $value['emp_code'].' - '.$value['name'].' - '.$value['relationship'].' - '.$value['policy_details']['basic_cover_si'].' - '.$value['policy_details']['premium']."\n";
if(!empty($value['policy_details']['premium'])){ $policy_created_count = $policy_created_count + 1; }
}
// Kint::dump($data);
$this->assertTrue($policy_created_count > 1);
}
}