diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 7721b203..7bd89152 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -40,7 +40,7 @@ use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use Dompdf\Dompdf; use Dompdf\Options; - +use Kint; class EmployeeController extends AdminController { @@ -207,7 +207,8 @@ class EmployeeController extends AdminController // $this->fileModel->where('id', '12')->set(['status' => 'failed','reason' => $failure_reason])->update(); // dd($failure_reason); // } - + // $this->truncateFileData(747, 5) ; + // die(); if ($this->request->getMethod() == 'post') { //validate uploaded file @@ -1224,7 +1225,7 @@ class EmployeeController extends AdminController public function truncateFileData($file_id, $role_id = null) { $file_id = $this->request->uri->getSegment(3); - // $file_id = 112; + // $file_id = 747; $file = $this->fileModel->find($file_id); $client_id = $file['client_id']; $client_policy_id = $file['policy_id']; @@ -1260,16 +1261,66 @@ class EmployeeController extends AdminController } } 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(); - // print_r($db->getLastQuery()); die; - // $affectedRows = 10; + if($file['action'] != 'enrollment') + { + //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(); + // print_r($db->getLastQuery()); die; + // $affectedRows = 10; - //update file status - $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update(); + //update file status + $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update(); + } + else + { + // echo 'came here...1'; + //check all dependents added by self and other dependent policies + $emp_codes = $this->employeeModel->select('emp_code') + ->where('file_id', $file_id) + ->findAll(); + $emp_codes = array_column($emp_codes,'emp_code'); + // Kint::dump($emp_codes);//die; + + $dependent_policies = $this->clientPolicyModel->select('id') + ->where('base_policy', $client_policy_id) + ->findAll(); + // $dependent_policies = [ [10],[25],[35] ]; + // Kint::dump($dependent_policies); + // Kint::dump(array_column($dependent_policies,'id')); + if(count($dependent_policies)) + { + $dependent_policies = array_column($dependent_policies,'id'); + // Kint::dump($dependent_policies); + $second_level_dependent_policies = $this->clientPolicyModel->select('id') + ->whereIn('base_policy', $dependent_policies) + ->findAll(); + // dd($second_level_dependent_policies); + if(count($second_level_dependent_policies)) + { + $second_level_dependent_policies = array_column($second_level_dependent_policies,'id'); + } + + $dependent_policies = array_merge($dependent_policies,$second_level_dependent_policies); + } + $dependent_policies = array_merge($dependent_policies,[$client_policy_id]); + // Kint::dump($dependent_policies); + + //update emp and emp plocies + $db = db_connect(); + $emp_codes = '(' . implode(',', array_map(fn($code) => "'$code'", $emp_codes)) . ')'; + $dependent_policies = '(' . implode(',', $dependent_policies) . ')'; + $query = "UPDATE employee_polices JOIN employees ON employees.id = employee_polices.employee_id and employees.emp_code in $emp_codes SET employee_polices.status = 'truncated', employee_polices.is_active = 0 WHERE employee_polices.client_policy_id in $dependent_policies"; + $db->query($query); + $affectedRows = $db->affectedRows(); + + // dd($affectedRows); + $affectedRows = $affectedRows * 2; + $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update(); + + } if($cd_tranction){ @@ -1309,7 +1360,7 @@ class EmployeeController extends AdminController if ($res[0]->count == 0 || $role_id == 5 || $role_id == 1) { //update truncated status to db $this->empEndorsementModel->where('file_id', $file_id) - ->set(['status' => 'truncated']) + ->set(['status' => 'truncated','is_active' => 0]) ->update(); //update file status $this->fileModel->where('id', $file_id)->set(['status' => 'truncated'])->update(); diff --git a/app/Controllers/EmployeeServiceController.php b/app/Controllers/EmployeeServiceController.php index 75f24f6e..4341a3a9 100755 --- a/app/Controllers/EmployeeServiceController.php +++ b/app/Controllers/EmployeeServiceController.php @@ -132,7 +132,7 @@ class EmployeeServiceController extends AdminController 'format' => 'd-M-Y', 'allowed_values' => null, 'custom' => 'check_dob_diff', - 'params' => ['row', 'relationship', 'default_age_ratio'] + 'params' => ['row', 'relationship', 'default_age_ratio','policy_details'] ], 'gender' => [ 'col_idx' => 4, @@ -767,10 +767,9 @@ class EmployeeServiceController extends AdminController $relationship = $this->general_relationships; //get exisiting mobilr nos $existing_mobilenos = $this->employeePolicyModel->getExisitingMobileNos(client_policy_id: $file['policy_id']); - //get existing units in the current branch $existing_units = $this->clientBranchModel->getExisitingUnits(client_id: $file['client_id'],client_branch_id: $file['client_branch_id']); - // dd($existing_units); + // dd($excel_data); foreach ($excel_data as $row_key => $row) { //define row wise action/event in temporary variable @@ -1234,7 +1233,6 @@ class EmployeeServiceController extends AdminController // Kint::dump($family);die(); $data = calculate_premium_new(family_data:$family,policy_terms: $policy_terms,slab_details : $slab_details,fileArr: $file, existing_units:$existing_units); - // dd($data); $employee_data_group_by_family[$emp_id] = $data; $this->employeesOnboardProcess(['familiy_data' => $data,'file' => $file]); } @@ -1461,6 +1459,8 @@ class EmployeeServiceController extends AdminController ->where('emp_code',$employee['emp_code']) ->where('name',$employee['name']) ->where('field_name',$field_name) + ->where('is_active',1) + ->where('status !=','truncated') ->findAll(); // dd($existing_endorsements); //make entry in endorsement table @@ -1620,7 +1620,6 @@ class EmployeeServiceController extends AdminController break;//skip db employee } //end implemet of si enhancement of grid type - dd('s'); //save employee table $value['relationship'] = ucfirst(trim($value['relationship'])); if(count($employee)) @@ -1643,7 +1642,6 @@ class EmployeeServiceController extends AdminController // $this->myLogger->logme('error',('Insert - ' . $value['emp_code'] .' - '. $value['name'])); // echo 'update emp'; } - $this->employeeModel->save($value); if (isset($value['id'])) { $emp_id = $value['id']; @@ -1702,7 +1700,7 @@ class EmployeeServiceController extends AdminController $log_message = $file['action'].' - endorsement'. $value['emp_code'].' - '.$value['name'].' - with policy id'.$emp_policy_id; $this->myLogger->logme('error',$log_message); $actions = ($file['action'] == 'dependent_addition' ? 'da' : ($file['action'] == 'addition' ? 'a' : 'a')); - $addition_endorse_data = ['pk' => $emp_policy_id,'group_key' => rand(100000, 999999),'emp_code' => $value['emp_code'],'table_name' => 'employee_polices','actions' => $actions,'name' => $value['name'],'field_name' => 'basic_cover_si','old_value' => NULL,'new_value' => $policy_data['basic_cover_si'],'remarks' => 'addition endorsement','file_id' => $file['id'],'created_by' => $file['created_by']]; + $addition_endorse_data = ['pk' => $emp_policy_id,'group_key' => rand(100000, 999999),'emp_code' => $value['emp_code'],'table_name' => 'employee_polices','actions' => $actions,'name' => $value['name'],'field_name' => 'basic_cover_si','old_value' => NULL,'new_value' => $policy_data['basic_cover_si'],'remarks' => 'addition endorsement','file_id' => $file['id'],'created_by' => $file['created_by'],'status' => 'pending']; $this->employeeEndorsementforAddtionAndDependentAddition($addition_endorse_data); } @@ -2012,10 +2010,10 @@ public function getFileMetaDataByFileId($file_id, $status = 'success'){ $value['emp_code'] = $row[1]; $value['name'] = $row[2]; - $value['doj'] = (!empty($row[3]) ? convert_string_to_date($row[3],'Y-m-d'): null); + $value['doj'] = (!empty($row[3]) ? change_date_format($row[3],'d-M-Y','Y-m-d'); $value['gender'] = $row[4]; $value['relationship'] = ucfirst(trim($row[5])); - $value['dob'] = convert_string_to_date($row[6],'Y-m-d'); + $value['dob'] = change_date_format($row[6],'d-M-Y','Y-m-d'); $value['email_corporate'] = $row[7]; $value['mobile'] = $row[8]; $value['band'] = $row[10]; @@ -2042,7 +2040,7 @@ public function getFileMetaDataByFileId($file_id, $status = 'success'){ $value['family_floater_key'] = $relation; $policy_data['basic_cover_si'] = $row[9]; - $policy_data['date_coverage'] = $row[13] != "" && $row[13] != null ? change_date_format($row[13],null,'Y-m-d') : null; + $policy_data['date_coverage'] = $row[13] != "" && $row[13] != null ? change_date_format($row[13],'d-M-Y','Y-m-d') : null; $policy_data['client_policy_id'] = $file['policy_id']; $employee = $this->employeeModel->checkExistingEmployee($value,$file['client_branch_id']); diff --git a/app/Helpers/excel_util_helper.php b/app/Helpers/excel_util_helper.php index 0cd9afa6..77c6c552 100755 --- a/app/Helpers/excel_util_helper.php +++ b/app/Helpers/excel_util_helper.php @@ -345,8 +345,7 @@ if(!function_exists('check_basic_pay')) if (!function_exists('check_dob_diff')) { - function check_dob_diff($row,$relationships,$default_age_ratio) { - // echo 'called'; + function check_dob_diff($row,$relationships,$default_age_ratio,$policy_details) { if($row['current_action'] != null && in_array(strtoupper($row['current_action']), ['I','A','DA','MI']))// check rule only of action column data available { if($row[3] != null && $row[5] != null) @@ -358,13 +357,11 @@ if (!function_exists('check_dob_diff')) } // return array('status' => true); $dob = $dateString; - // echo $row[3].' - '.$dob;echo '
'; - $currentDateTime = new DateTime();//die(); - // print_r($currentDateTime); + //$currentDateTime = new DateTime();//previously dob calculated from current date time + $temp_date = ($row[7] != null && $row[7] != "") ? convert_string_to_date($row[7]) : $policy_details[0]->policy_start_date; //pick date of coverage from row if not then use policy start date as from to calculate DOB + $currentDateTime = new DateTime($temp_date);//later DOB calculated from date of coverage or policy_start_date // die(); $passedDateTime = new DateTime($dob); - // print_r($passedDateTime); - $interval = $currentDateTime->diff($passedDateTime); //remap default age ratio data into relationship array if(count($default_age_ratio)) @@ -375,7 +372,6 @@ if (!function_exists('check_dob_diff')) $relationship = $slug->slugify($row[5]); $age_min = isset($relationships[$relationship]['age_min']) ? $relationships[$relationship]['age_min'] : NULL; $age_max = isset($relationships[$relationship]['age_max']) ? $relationships[$relationship]['age_max'] : NULL; - // echo $relationship.','.$age_min.'-'.$age_max; if($age_min !== null && $age_min > $interval->y) { return array('status' => false,'error' => "Age conflict : minimum $age_min yrs allowed, received $interval->y"); @@ -965,7 +961,6 @@ if (!function_exists('calculate_premium_new')) if(empty($member[18])){ $member[18] = $existing_units[0]; } //transform as db row column $transformed_familiy_member_data = transform_excel_data_to_db($member,$fileArr); - // kint::dump($transformed_familiy_member_data); //generate relationship code if($transformed_familiy_member_data['temp']['action'] != 'D' && $transformed_familiy_member_data['temp']['action'] != 'C' && $transformed_familiy_member_data['temp']['action'] != 'SI') { @@ -979,7 +974,7 @@ if (!function_exists('calculate_premium_new')) 'isEmployeeSourceEnrollment' => $fileArr['id'] == null, 'isEmployeeSourceExcelFile' => $transformed_familiy_member_data['temp']['source'] == 'excel', 'isCurrentActionDependentAddition' => $fileArr['action'] == 'dependent_addition', - 'isPrimaryGridPremiumTypeSingle' => $transformed_familiy_member_data['temp']['premium_type'] == 1, + 'isPrimaryGridPremiumTypeSingle' => isset($transformed_familiy_member_data['temp']['premium_type']) ? $transformed_familiy_member_data['temp']['premium_type'] == 1 : 0, 'isCurrentRelationshipSelf' => (strtolower($transformed_familiy_member_data['relationship']) == 'self' || (isset($transformed_familiy_member_data['temp']['acting_self']) && $transformed_familiy_member_data['temp']['acting_self'] === true)), 'isBasicCoverCalculatedToCurrentEmployee' => ($transformed_familiy_member_data['policy_details']['basic_cover_si'] != null && $transformed_familiy_member_data['policy_details']['basic_cover_si'] != 0) ]; @@ -1049,7 +1044,7 @@ if (!function_exists('transform_excel_data_to_db')) $result['designation'] = $memArr[11]; $result['mobile'] = $memArr[12]; $result['email_corporate'] = $memArr[13]; - $result['file_id'] = $actionArr['id']; + $result['file_id'] = isset($memArr['temp']['source']) && $memArr['temp']['source'] == 'db' && isset($memArr['temp']['file_id']) ? $memArr['temp']['file_id'] : $actionArr['id']; $result['client_id'] = $actionArr['client_id']; $result['change_event'] = $memArr[15]; $result['unit'] = $memArr[18]; @@ -1078,8 +1073,6 @@ if (!function_exists('premium_calculation_manager')) { function premium_calculation_manager($emp_data,$policy_terms,$slab_details,$default_si = null) { - // Kint::dump($emp_data);die(); - $myLogger = \Config\Services::mylogger(); // grid type // 1 = premium => si @@ -1229,9 +1222,12 @@ if (!function_exists('premium_calculation_manager')) //GMC - Employees Age band $employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si; // dd($employee_received_si); + $temp_date = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); + $age = calculate_days_bw_dates(from_date: $emp_data['dob'],to_date: $temp_date)->y; + foreach ($temp_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['unit'] == $emp_data['unit'] && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age) && (($slab_value['premium_type'] == 1 && ( strtolower($emp_data['relationship']) == 'self' || $emp_data['temp']['acting_self'] ) ) || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null || $slab_value['premium_type'] == 3) )) { // dd($slab_value); @@ -1250,9 +1246,12 @@ if (!function_exists('premium_calculation_manager')) case "5": //GMC - Employees Age + SI $employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si; + $temp_date = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); + $age = calculate_days_bw_dates(from_date: $emp_data['dob'],to_date: $temp_date)->y; + foreach ($temp_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['unit'] == $emp_data['unit'] && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age) && (($slab_value['premium_type'] == 1 && ( strtolower($emp_data['relationship']) == 'self' || $emp_data['temp']['acting_self'] ) ) || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null || $slab_value['premium_type'] == 3 ) )) { $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; @@ -1270,9 +1269,11 @@ if (!function_exists('premium_calculation_manager')) case "6": //GMC - Employees + Dependent Age band $employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si; + $temp_date = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); + $age = calculate_days_bw_dates(from_date: $emp_data['dob'],to_date: $temp_date)->y; foreach ($temp_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['unit'] == $emp_data['unit'] && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age) && (($slab_value['premium_type'] == 1 && ( strtolower($emp_data['relationship']) == 'self' || $emp_data['temp']['acting_self'] ) ) || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null || $slab_value['premium_type'] == 3) )) { // echo $emp_data['name']; @@ -1292,9 +1293,11 @@ if (!function_exists('premium_calculation_manager')) case "7": //GMC - Employees + Dependent Age + SI $employee_received_si = $default_si == null ? $emp_data['policy_details']['basic_cover_si'] : $default_si; + $temp_date = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); + $age = calculate_days_bw_dates(from_date: $emp_data['dob'],to_date: $temp_date)->y; foreach ($temp_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['unit'] == $emp_data['unit'] && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age) && (($slab_value['premium_type'] == 1 && ( strtolower($emp_data['relationship']) == 'self' || $emp_data['temp']['acting_self'] ) ) || ($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null || $slab_value['premium_type'] == 3) )) { $emp_data['policy_details']['basic_cover_si'] = $slab_value['si']; @@ -1442,7 +1445,8 @@ if (!function_exists('premium_calculation_manager')) $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; + $temp_date = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); + $age = calculate_days_bw_dates(from_date: $emp_data['dob'],to_date: $temp_date)->y; foreach ($temp_slab_rates as $skey => $slab_value) { if( $slab_value['si'] == $employee_received_si && $slab_value['unit'] == $emp_data['unit'] && ($slab_value['age_from'] <= $age && $slab_value['age_to'] >= $age) && ((($slab_value['premium_type'] == 2 || $slab_value['premium_type'] == null || $slab_value['premium_type'] == 3) && $slab_value['relationship'] == $employee_relationship) || ($slab_value['premium_type'] == 1 && ( strtolower($emp_data['relationship']) == 'self' || $emp_data['temp']['acting_self'] ) )) ) @@ -1475,7 +1479,8 @@ if (!function_exists('premium_calculation_manager')) } if(!$is_match_found) { - $age = calculate_days_bw_dates(from_date: $emp_data['dob'])->y; + $temp_date = (isset($emp_data['policy_details']['date_coverage']) ? $emp_data['policy_details']['date_coverage'] : $policy_terms['policy_start_date']); + $age = calculate_days_bw_dates(from_date: $emp_data['dob'],to_date: $temp_date)->y; $log_message = '[ client_policy_id : ' .$emp_data['policy_details']['client_policy_id'].' - '. $emp_data['emp_code'].' - '.$emp_data['name'] .' - '. $emp_data['policy_details']['basic_cover_si'] . ', Age : '. $age.' ]'; if($temp_slab_rates[0]['premium_type'] == 1) { @@ -1560,6 +1565,7 @@ if (!function_exists('transform_db_data_to_excel')) $row['temp']['emp_status'] = $value['emp_status']; $row['temp']['policy_status'] = $value['status']; $row['temp']['rata_premimum'] = $value['rata_premimum']; + $row['temp']['file_id'] = $value['file_id']; array_push($return_data, ($row)); } diff --git a/app/Models/EmployeeModel.php b/app/Models/EmployeeModel.php index 06c39c7f..9168c9a7 100755 --- a/app/Models/EmployeeModel.php +++ b/app/Models/EmployeeModel.php @@ -106,7 +106,7 @@ class EmployeeModel extends Model public function getEmpFamilybyEmpCode(string $client_policy_id = null,string $emp_code = null,string $client_id = null,array $emp_status = [],array $policy_status = [],array $relationship = [],array $client_branch_id = []) { - $result = $this->select(['employees.id as emp_id', 'employees.client_id','employees.client_branch_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','employees.unit','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','policy_type.long_name as policy_name','client_policy.is_addon', 'employee_polices.payable_employee']) + $result = $this->select(['employees.id as emp_id', 'employees.client_id','employees.client_branch_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','employees.unit','employees.file_id','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','policy_type.long_name as policy_name','client_policy.is_addon', 'employee_polices.payable_employee']) ->join('employee_polices', 'employee_polices.employee_id = employees.id') ->join('client_policy', 'client_policy.id = employee_polices.client_policy_id') ->join('policy_type', 'policy_type.id = client_policy.policy_type_id','left') diff --git a/public/sample_excel/enrollment.xlsx b/public/sample_excel/enrollment.xlsx index b23bb77d..0666a6c8 100755 Binary files a/public/sample_excel/enrollment.xlsx and b/public/sample_excel/enrollment.xlsx differ