From 1a1855364e544e2ba9fcd69b0b090da72c73e1cd Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Fri, 15 Nov 2024 09:31:34 +0530 Subject: [PATCH 1/2] CHANGE_ in emp Profile API - added date_coverage key : GWM --- app/Controllers/EmployeeRestController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index dd807973..0cf0e3af 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -112,6 +112,12 @@ class EmployeeRestController extends AdminController ->where('is_active', 1 ) ->where('relationship', $relationship) ->first(); + if (null !== $this->request->getGet('client_policy_id')) + { + $date_coverage = $this->employeePolicyModel->where('employee_id',$employee['id'])->where('client_policy_id',$this->request->getGet('client_policy_id'))->get()->getRow()->date_coverage; + $employee['date_coverage'] = $date_coverage; + } + $result = $employee; $AccountManagerDetails = $this->clientRMModel->select('client_rm.* , user_profiles.*') ->join('user_profiles', 'client_rm.user_id = user_profiles.id', 'left') From 0d438da65e4f41cef63ce222e75be5aa34f54c5a Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Fri, 15 Nov 2024 10:35:10 +0530 Subject: [PATCH 2/2] CHANGE_REMOVE_COLUMN_IN_IMPORT_EXPORT_ExCEL_HEADER_AND_CREATE_DOWNLOAD_LINK_FOR_SAMPLE_IMPORT_EXCEL_FILE : RV --- app/Config/Routes.php | 2 +- app/Controllers/ClientController.php | 24 +- app/Controllers/EmpDataServiceController.php | 254 ++++++++++-------- app/Controllers/EmployeeController.php | 38 ++- app/Controllers/MasterController.php | 2 +- app/Models/ClientModel.php | 14 +- app/Views/insurer_or_tpa_data.php | 30 ++- .../sample_import_Addition.xlsx | Bin 0 -> 6370 bytes .../sample_import_Deletion.xlsx | Bin 0 -> 6334 bytes .../sample_import_Dependent_Addition.xlsx | Bin 0 -> 6370 bytes .../sample_import_Inception.xlsx | Bin 0 -> 6370 bytes .../sample_import_SI_Enhancement.xlsx | Bin 0 -> 6409 bytes .../sample_import_correction.xlsx | Bin 0 -> 6271 bytes 13 files changed, 236 insertions(+), 128 deletions(-) create mode 100644 public/sample_import_excel/sample_import_Addition.xlsx create mode 100644 public/sample_import_excel/sample_import_Deletion.xlsx create mode 100644 public/sample_import_excel/sample_import_Dependent_Addition.xlsx create mode 100644 public/sample_import_excel/sample_import_Inception.xlsx create mode 100644 public/sample_import_excel/sample_import_SI_Enhancement.xlsx create mode 100644 public/sample_import_excel/sample_import_correction.xlsx diff --git a/app/Config/Routes.php b/app/Config/Routes.php index e94c6ad4..1f6d0bf9 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -308,7 +308,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get("send_mail_for_individual_employee_ecard/(:any)", "EmployeeController::send_mail_for_individual_employee_ecard/$1"); $routes->post("update_emp_data", "EmployeeController::update_emp_data"); $routes->get("checkDeletionGetDataFunction", "EmployeeController::checkDeletionGetDataFunction"); - + $routes->get("download_import_excel/(:any)", "EmployeeController::downloadSampleImportExcelFile/$1"); }); $routes->group("policy_tranction", ["filter" => "authMVC"], function ($routes) { diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index b937e835..e90f1e1b 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -120,7 +120,29 @@ class ClientController extends AdminController public function smapletest() { - $headers = ['S.No','EMP ID','EMP NAME','DOB','GENDER','RELATIONSHIP','SUM INSURED','Date of Leaving','Policy End Date','No Of Days','Premium','Pro Rata Premium','GST','Total','Claim Status','ENDORSEMENT_ID']; + $headers = [ + 'S.No', + 'NAME OF EMP/DEP', + 'EMP ID', + // 'EMP/DEP TYPE', + // 'RELATIONSHIP CODE', + 'DOB', + 'GENDER', + 'PRE EXISTING AILMENTS', + 'BASIC COVER SI', + 'DATE OF COVERAGE', + 'AGE', + 'RELATIONSHIP', + 'REMARKS', + 'POLICY END DATE', + 'NO OF DAYS', + 'TPA ID', + 'UHID', + // 'PREMIUM', + 'PRO RATA PREMIUM', + 'GST', + 'TOTAL AMOUNT' + ]; $filePath = generateExcelWithHeader($headers); echo "Excel file created at: $filePath"; } diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index ff8e0413..8bd4e545 100755 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -225,93 +225,93 @@ class EmpDataServiceController extends BaseController 'column_name' => 'EMP ID', 'db_column_name' => 'emp_code' ], + // [ + // 'column_index' => 3, + // 'column_name' => 'EMP/DEP TYPE', + // 'db_column_name' => 'emp_type' + // ], + // [ + // 'column_index' => 4, + // 'column_name' => 'RELATIONSHIP CODE', + // 'db_column_name' => 'emp_relationship_code' + // ], [ 'column_index' => 3, - 'column_name' => 'EMP/DEP TYPE', - 'db_column_name' => 'emp_type' - ], - [ - 'column_index' => 4, - 'column_name' => 'RELATIONSHIP CODE', - 'db_column_name' => 'emp_relationship_code' - ], - [ - 'column_index' => 5, 'column_name' => 'DOB', 'db_column_name' => 'emp_dob' ], [ - 'column_index' => 6, + 'column_index' => 4, 'column_name' => 'GENDER', 'db_column_name' => 'emp_gender' ], [ - 'column_index' => 7, + 'column_index' => 5, 'column_name' => 'PRE EXISTING AILMENTS', 'db_column_name' => 'pre_existing_alignments' ], [ - 'column_index' => 8, + 'column_index' => 6, 'column_name' => 'BASIC COVER SI', 'db_column_name' => 'basic_cover_si' ], [ - 'column_index' => 9, + 'column_index' => 7, 'column_name' => 'DATE OF COVERAGE', 'db_column_name' => 'date_coverage' ], [ - 'column_index' => 10, + 'column_index' => 8, 'column_name' => 'AGE', 'db_column_name' => 'emp_age' ], [ - 'column_index' => 11, + 'column_index' => 9, 'column_name' => 'RELATIONSHIP', 'db_column_name' => 'emp_relationship' ], [ - 'column_index' => 12, + 'column_index' => 10, 'column_name' => 'REMARKS', 'db_column_name' => 'remarks' ], [ - 'column_index' => 13, + 'column_index' => 11, 'column_name' => 'POLICY END DATE', 'db_column_name' => 'policy_end_date' ], [ - 'column_index' => 14, + 'column_index' => 12, 'column_name' => 'NO OF DAYS', 'db_column_name' => 'days' ], [ - 'column_index' => 15, + 'column_index' => 13, 'column_name' => 'TPA ID', 'db_column_name' => 'tpa_id' ], [ - 'column_index' => 16, + 'column_index' => 14, 'column_name' => 'UHID', 'db_column_name' => 'uhid' ], + // [ + // 'column_index' => 15, + // 'column_name' => 'PREMIUM', + // 'db_column_name' => 'premium' + // ], [ - 'column_index' => 17, - 'column_name' => 'PREMIUM', - 'db_column_name' => 'premium' - ], - [ - 'column_index' => 18, + 'column_index' => 15, 'column_name' => 'PRO RATA PREMIUM', 'db_column_name' => 'rata_premimum' ], [ - 'column_index' => 19, + 'column_index' => 16, 'column_name' => 'GST', 'db_column_name' => 'gst' ], [ - 'column_index' => 20, + 'column_index' => 17, 'column_name' => 'TOTAL AMOUNT', 'db_column_name' => 'total' ] @@ -335,93 +335,93 @@ class EmpDataServiceController extends BaseController 'column_name' => 'EMP ID', 'db_column_name' => 'emp_code' ], + // [ + // 'column_index' => 3, + // 'column_name' => 'EMP/DEP TYPE', + // 'db_column_name' => 'emp_type' + // ], + // [ + // 'column_index' => 4, + // 'column_name' => 'RELATIONSHIP CODE', + // 'db_column_name' => 'emp_relationship_code' + // ], [ 'column_index' => 3, - 'column_name' => 'EMP/DEP TYPE', - 'db_column_name' => 'emp_type' - ], - [ - 'column_index' => 4, - 'column_name' => 'RELATIONSHIP CODE', - 'db_column_name' => 'emp_relationship_code' - ], - [ - 'column_index' => 5, 'column_name' => 'DOB', 'db_column_name' => 'emp_dob' ], [ - 'column_index' => 6, + 'column_index' => 4, 'column_name' => 'GENDER', 'db_column_name' => 'emp_gender' ], [ - 'column_index' => 7, + 'column_index' => 5, 'column_name' => 'PRE EXISTING AILMENTS', 'db_column_name' => 'pre_existing_alignments' ], [ - 'column_index' => 8, + 'column_index' => 6, 'column_name' => 'BASIC COVER SI', 'db_column_name' => 'basic_cover_si' ], [ - 'column_index' => 9, + 'column_index' => 7, 'column_name' => 'DATE OF COVERAGE', 'db_column_name' => 'date_coverage' ], [ - 'column_index' => 10, + 'column_index' => 8, 'column_name' => 'AGE', 'db_column_name' => 'emp_age' ], [ - 'column_index' => 11, + 'column_index' => 9, 'column_name' => 'RELATIONSHIP', 'db_column_name' => 'emp_relationship' ], [ - 'column_index' => 12, + 'column_index' => 10, 'column_name' => 'REMARKS', 'db_column_name' => 'remarks' ], [ - 'column_index' => 13, + 'column_index' => 11, 'column_name' => 'POLICY END DATE', 'db_column_name' => 'policy_end_date' ], [ - 'column_index' => 14, + 'column_index' => 12, 'column_name' => 'NO OF DAYS', 'db_column_name' => 'no_of_days' ], [ - 'column_index' => 15, + 'column_index' => 13, 'column_name' => 'TPA ID', 'db_column_name' => 'tpa_id' ], [ - 'column_index' => 16, + 'column_index' => 14, 'column_name' => 'UHID', 'db_column_name' => 'uhid' ], + // [ + // 'column_index' => 17, + // 'column_name' => 'PREMIUM', + // 'db_column_name' => 'premium' + // ], [ - 'column_index' => 17, - 'column_name' => 'PREMIUM', - 'db_column_name' => 'premium' - ], - [ - 'column_index' => 18, + 'column_index' => 15, 'column_name' => 'PRO RATA PREMIUM', 'db_column_name' => 'pro_rata_premium' ], [ - 'column_index' => 19, + 'column_index' => 16, 'column_name' => 'GST', 'db_column_name' => 'gst' ], [ - 'column_index' => 20, + 'column_index' => 17, 'column_name' => 'TOTAL AMOUNT', 'db_column_name' => 'total' ] @@ -1283,7 +1283,29 @@ class EmpDataServiceController extends BaseController unset($excel_data[0]); // array_pop($excel_data); - $inceptionHeader = ['S.No', 'NAME OF EMP/DEP','EMP ID','EMP/DEP TYPE','RELATIONSHIP CODE','DOB','GENDER','PRE EXISTING AILMENTS','BASIC COVER SI','DATE OF COVERAGE','AGE','RELATIONSHIP','REMARKS','POLICY END DATE','NO OF DAYS','TPA ID','UHID','PREMIUM','PRO RATA PREMIUM','GST','TOTAL AMOUNT']; + $inceptionHeader = [ + 'S.No', + 'NAME OF EMP/DEP', + 'EMP ID', + // 'EMP/DEP TYPE', + // 'RELATIONSHIP CODE', + 'DOB', + 'GENDER', + 'PRE EXISTING AILMENTS', + 'BASIC COVER SI', + 'DATE OF COVERAGE', + 'AGE', + 'RELATIONSHIP', + 'REMARKS', + 'POLICY END DATE', + 'NO OF DAYS', + 'TPA ID', + 'UHID', + // 'PREMIUM', + 'PRO RATA PREMIUM', + 'GST', + 'TOTAL AMOUNT' + ]; foreach ($inceptionHeader as $key => $value) { if($excel_header[$key] != $value){ @@ -1427,14 +1449,14 @@ class EmpDataServiceController extends BaseController } if ($insurer_or_tpa == 'tpa') { - if ($excel_data[$key][15] === null) { + if ($excel_data[$key][13] === null) { $missing_id[$key][] = [ 'row' => $key, 'column' => 15, ]; } } else if ($insurer_or_tpa == 'insurer') { - if ($excel_data[$key][16] === null) { + if ($excel_data[$key][14] === null) { $missing_id[$key][] = [ 'row' => $key, 'column' => 16, @@ -1461,115 +1483,115 @@ class EmpDataServiceController extends BaseController ]; } - if ($emp_value['emp_dob'] != $excel_data[$key][5]) { + if ($emp_value['emp_dob'] != $excel_data[$key][3]) { + $errors[$key][] = [ + 'row' => $key, + 'column' => 3, + 'db_data' => $emp_value['emp_dob'], + 'excel_data' => $excel_data[$key][3] + ]; + } + + if ($emp_value['emp_gender'] != $excel_data[$key][4]) { + $errors[$key][] = [ + 'row' => $key, + 'column' => 4, + 'db_data' => $emp_value['emp_gender'], + 'excel_data' => $excel_data[$key][4] + ]; + } + + if ($emp_value['pre_existing_alignments'] != $excel_data[$key][5]) { $errors[$key][] = [ 'row' => $key, 'column' => 5, - 'db_data' => $emp_value['emp_dob'], + 'db_data' => $emp_value['pre_existing_alignments'], 'excel_data' => $excel_data[$key][5] ]; } - if ($emp_value['emp_gender'] != $excel_data[$key][6]) { + if ($emp_value['basic_cover_si'] != $excel_data[$key][6]) { $errors[$key][] = [ 'row' => $key, 'column' => 6, - 'db_data' => $emp_value['emp_gender'], + 'db_data' => $emp_value['basic_cover_si'], 'excel_data' => $excel_data[$key][6] ]; } - if ($emp_value['pre_existing_alignments'] != $excel_data[$key][7]) { + if ($emp_value['emp_relationship'] != $excel_data[$key][9]) { $errors[$key][] = [ 'row' => $key, - 'column' => 7, - 'db_data' => $emp_value['pre_existing_alignments'], - 'excel_data' => $excel_data[$key][7] + 'column' => 9, + 'db_data' => $emp_value['emp_relationship'], + 'excel_data' => $excel_data[$key][9] ]; } - if ($emp_value['basic_cover_si'] != $excel_data[$key][8]) { - $errors[$key][] = [ - 'row' => $key, - 'column' => 8, - 'db_data' => $emp_value['basic_cover_si'], - 'excel_data' => $excel_data[$key][8] - ]; - } - - if ($emp_value['emp_relationship'] != $excel_data[$key][11]) { + if ($emp_value['policy_end_date'] != $excel_data[$key][11]) { $errors[$key][] = [ 'row' => $key, 'column' => 11, - 'db_data' => $emp_value['emp_relationship'], + 'db_data' => $emp_value['policy_end_date'], 'excel_data' => $excel_data[$key][11] ]; } - if ($emp_value['policy_end_date'] != $excel_data[$key][13]) { + if ($emp_value['no_of_days'] != $excel_data[$key][12]) { $errors[$key][] = [ 'row' => $key, - 'column' => 13, - 'db_data' => $emp_value['policy_end_date'], - 'excel_data' => $excel_data[$key][13] - ]; - } - - if ($emp_value['no_of_days'] != $excel_data[$key][14]) { - $errors[$key][] = [ - 'row' => $key, - 'column' => 14, + 'column' => 12, 'db_data' => $emp_value['no_of_days'], - 'excel_data' => $excel_data[$key][14] + 'excel_data' => $excel_data[$key][12] ]; } - if ($emp_value['premium'] != $excel_data[$key][17]) { - $errors[$key][] = [ - 'row' => $key, - 'column' => 17, - 'db_data' => $emp_value['premium'], - 'excel_data' => $excel_data[$key][17] - ]; - } + // if ($emp_value['premium'] != $excel_data[$key][17]) { + // $errors[$key][] = [ + // 'row' => $key, + // 'column' => 17, + // 'db_data' => $emp_value['premium'], + // 'excel_data' => $excel_data[$key][17] + // ]; + // } - if ($emp_value['pro_rata_premium'] != $excel_data[$key][18]) { + if ($emp_value['pro_rata_premium'] != $excel_data[$key][15]) { $errors[$key][] = [ 'row' => $key, - 'column' => 18, + 'column' => 15, 'db_data' => $emp_value['pro_rata_premium'], - 'excel_data' => $excel_data[$key][18] + 'excel_data' => $excel_data[$key][15] ]; } - if ($emp_value['gst'] != $excel_data[$key][19]) { + if ($emp_value['gst'] != $excel_data[$key][16]) { $errors[$key][] = [ 'row' => $key, - 'column' => 19, + 'column' => 16, 'db_data' => $emp_value['gst'], - 'excel_data' => $excel_data[$key][19] + 'excel_data' => $excel_data[$key][16] ]; } if ($insurer_or_tpa == 'tpa') { - if ($emp_value['uhid'] != $excel_data[$key][16]) { + if ($emp_value['uhid'] != $excel_data[$key][14]) { $errors[$key][] = [ 'row' => $key, - 'column' => 16, + 'column' => 14, 'db_data' => $emp_value['uhid'], - 'excel_data' => $excel_data[$key][16] + 'excel_data' => $excel_data[$key][14] ]; } } else if ($insurer_or_tpa == 'insurer') { - if ($emp_value['tpa_id'] != $excel_data[$key][15]) { + if ($emp_value['tpa_id'] != $excel_data[$key][13]) { $errors[$key][] = [ 'row' => $key, - 'column' => 15, + 'column' => 13, 'db_data' => $emp_value['tpa_id'], - 'excel_data' => $excel_data[$key][15] + 'excel_data' => $excel_data[$key][13] ]; } } @@ -1735,9 +1757,9 @@ class EmpDataServiceController extends BaseController $name = $value[1]; $emp_code = $value[2]; - $tpa_id[] = $value[15]; - $uhid[] = $value[16]; - $amount = $value[20]; + $tpa_id[] = $value[13]; + $uhid[] = $value[14]; + $amount = $value[17]; if(!empty($name) && !empty($emp_code)){ @@ -1767,7 +1789,7 @@ class EmpDataServiceController extends BaseController $result = $query->get()->getRowArray(); if (isset($result['id']) && $result['id'] !== null) { $emp_policy_ids[] = $result['id']; //for cash deposite - $emp_details[] = array('id' => $result['id'], 'tpa_id' => $value[15], 'uhid' => $value[16]); + $emp_details[] = array('id' => $result['id'], 'tpa_id' => $value[13], 'uhid' => $value[14]); } } diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 841671a5..dfb76e4e 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -1128,7 +1128,7 @@ class EmployeeController extends AdminController '{SELF_NAME}' => $value['self'] ?? $value['name'], '{POLICY_DATE}' => date('d-M-Y', strtotime($value['policy_end_date'])), '{POLICY_START_DATE}' => date('d-M-Y', strtotime($value['policy_start_date'])), - '{POLICY_NO}' => date('d-M-Y', strtotime($value['policy_start_date'])), + '{POLICY_NO}' => $value['policy_no'], '{INSURER_NAME}' => strtoupper($value['insurer_name']), '{INSURER_LOGO}' => base_url() . 'public/uploads/logo/' . $value['insurer_logo'], '{FRONT_CARD}' => base_url() . 'public/uploads/template_bg/' . $value['front_card'], @@ -1786,4 +1786,40 @@ class EmployeeController extends AdminController } + // ---------------------------------------------------------------------------------------------------------- + + public function downloadSampleImportExcelFile($actionType = null) + { + // $actionType = $this->request->getGet(); + $filePath = ''; + // Path to your file + if ($actionType == 'inception') { + $filePath = ROOTPATH . 'public/sample_import_excel/sample_import_Inception.xlsx'; + } else if ($actionType == 'correction') { + $filePath = ROOTPATH . 'public/sample_import_excel/sample_import_correction.xlsx'; + } else if ($actionType == 'si_enhancement') { + $filePath = ROOTPATH . 'public/sample_import_excel/sample_import_SI_Enhancement.xlsx'; + } else if ($actionType == 'dependent_addition') { + $filePath = ROOTPATH . 'public/sample_import_excel/sample_import_Dependent_Addition.xlsx'; + } else if ($actionType == 'addition') { + $filePath = ROOTPATH . 'public/sample_import_excel/sample_import_Addition.xlsx'; + } else if ($actionType == 'deletion') { + $filePath = ROOTPATH . 'public/sample_import_excel/sample_import_Deletion.xlsx'; + }else if ($actionType == 'missed_inception') { + $filePath = ROOTPATH . 'public/sample_import_excel/sample_import_Inception.xlsx'; + } + + // Check if the file exists + if (file_exists($filePath)) { + + // Set the appropriate MIME type + $mimeType = mime_content_type($filePath); + + // Send the file to the client for download + return $this->response->download($filePath, null, $mimeType); + } else { + // File not found, show an error message or redirect + echo view('errors/html/production'); + } + } } diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index 13305f50..e3123418 100755 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -1671,7 +1671,7 @@ class MasterController extends AdminController 'logo' => ROOTPATH . 'public/uploads/logo/', 'template_bg' => ROOTPATH . 'public/uploads/template_bg/', 'attachments' => WRITEPATH . 'uploads/attachments/', - + 'sample_import_excel' => ROOTPATH . 'public/sample_import_excel', ]; foreach ($folders as $folderName => $folderPath) { diff --git a/app/Models/ClientModel.php b/app/Models/ClientModel.php index 3b40a3fb..2151ec97 100755 --- a/app/Models/ClientModel.php +++ b/app/Models/ClientModel.php @@ -55,14 +55,14 @@ class ClientModel extends Model ->where('is_active',1) ->findAll(); - if($role_id == 2 || $role_id == 3){ + // if($role_id == 2 || $role_id == 3){ - $clients = $this->select($columns) - ->join('client_rm', 'client_rm.client_id = clients.id') - ->where('client_rm.user_id', $user_id) - ->where('clients.is_active',1) - ->findAll(); - } + // $clients = $this->select($columns) + // ->join('client_rm', 'client_rm.client_id = clients.id') + // ->where('client_rm.user_id', $user_id) + // ->where('clients.is_active',1) + // ->findAll(); + // } diff --git a/app/Views/insurer_or_tpa_data.php b/app/Views/insurer_or_tpa_data.php index 5c77af6c..2dc6c83b 100755 --- a/app/Views/insurer_or_tpa_data.php +++ b/app/Views/insurer_or_tpa_data.php @@ -95,7 +95,7 @@
- +  [ ]
@@ -627,4 +627,32 @@ }) + //------------------------------------------------------------------------------------------------------ + + + $('#import_excel_download').click(function() { + + // Check if the element with ID "import_excel_download" has the href attribute set + if (!$(this).attr('href')) { + // If href attribute is not set, show an error message + toastr.warning('Please select an Action to download a sample Excel.', 'Warning'); + } else { + // console.log('Download action triggered.'); + } + }); + + /**This function updates the download link based on the selected option in the dropdown menu. **/ + $('#event_type').change(function() { + + var selectedValue = $(this).val(); + if (selectedValue !== '') { + $('#import_excel_download').show(); + var fullURL = '' + selectedValue; + $('#import_excel_download').attr('href', fullURL); + } else { + $('#import_excel_download').hide(); + $('#import_excel_download').removeAttr('href'); + } + }); + \ No newline at end of file diff --git a/public/sample_import_excel/sample_import_Addition.xlsx b/public/sample_import_excel/sample_import_Addition.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..19b1f86f6eb171a34e7fb815aa6ec834bcead456 GIT binary patch literal 6370 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 literal 0 HcmV?d00001 diff --git a/public/sample_import_excel/sample_import_Dependent_Addition.xlsx b/public/sample_import_excel/sample_import_Dependent_Addition.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..19b1f86f6eb171a34e7fb815aa6ec834bcead456 GIT binary patch literal 6370 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 literal 0 HcmV?d00001 diff --git a/public/sample_import_excel/sample_import_correction.xlsx b/public/sample_import_excel/sample_import_correction.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d1535f284cf331fc086863902de4b11209bed019 GIT binary patch literal 6271 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 o=XaJl