SI Enhancement increases sum insured for active members on a policy via Excel upload
(files.action = si_enhancement). The process recalculates premium from slab/rack rates and
creates pending SI endorsements on employee_polices — SI and premium are not
updated in place until endorsements are applied downstream.
Core logic: EmployeeServiceController::employeesSIEnhanceProcess.
Premium math uses transform_si_excel_row_to_calculatable_format and
premium_calculation_manager (see
EB rack rate calculation).
In short:
check_si).| Area | Location |
|---|---|
| UI | app/Views/employee_upload.php — action SI Enhancement |
| Upload | EmployeeController::employeesUplodWithEvents |
| Validation | excelFileFormatValidation, excelFileDataValidation |
| SI process | employeesSIEnhanceProcess |
| Onboard SI path | employeesSIEnhanceProcessWhileOnbboard — SI during dependent addition onboard (not Excel) |
| Job | employeesSIEnhanceProcess in JobWorker.php |
| Helpers | excel_util_helper.php — transform_si_excel_row_to_calculatable_format, premium_calculation_manager |
Routes (group /employee, authMVC):
GET /employee/upload — upload screenPOST /employee/upload — upload-action-type=si_enhancementGET /employee/excel_error/{file_id} — validation errorsfiles.policy_id is the client policy id. Slab rates load via
getPolicySlabRatesForEmpOnboard(policy_id, client_id).
| Step | < 1 MB | ≥ 1 MB |
|---|---|---|
| Format validation | Inline on upload | Job excelFileFormatValidation |
| Data validation | Job excelFileDataValidation | Same |
| SI enhance | Job employeesSIEnhanceProcess | Same |
$si_enhance_excel_columns — 5 columns (A–E).SI for mandatory rules.check_si against policy slabs (same helper as inception SI column).d-M-Y.| Code | Meaning |
|---|---|
| 1 | Mandatory missing |
| 2 | Wrong format |
| 3 | Not in allowed list |
| 4 | Custom validation failed (e.g. invalid Augmented SI for slab) |
| 5 | File / policy / slab problem |
| 6 | Column headers wrong |
name_and_empid_check_in_db for si_enhancement:
employee_polices on the policy.On success → queues employeesSIEnhanceProcess.
Per row:
removeNumberFormatting).employee_polices row.transform_si_excel_row_to_calculatable_format (uses family max age/count).premium_calculation_manager → new premium for the augmented SI.employee_polices (actions = si):| field_name | new_value source |
|---|---|
basic_cover_si | Excel Augmented SI (column D) |
premium | Recalculated premium from rack logic |
si_enhancement_date | Excel Date of SI Enhancement (column E) |
Sets files.status = success when the loop completes. Skipped rows (duplicate pending SI, missing member)
are logged only — the file still succeeds.
| Col | Header | Required | Notes |
|---|---|---|---|
| A | S.No | Yes | |
| B | EMP ID | Yes | |
| C | NAME OF EMP/DEP | Yes | Must match DB |
| D | Augmented SI | Yes | New SI; validated via check_si |
| E | Date of SI Enhancement | Yes | d-M-Y |
Enhance Self SI — one row:
| EMP ID | NAME | Augmented SI | Date of SI Enhancement |
|---|---|---|---|
| EMP001 | Raj Kumar | 1000000 | 19-May-2026 |
Enhance spouse only — separate row (premium uses that member’s relationship for rack selection):
| EMP ID | NAME | Augmented SI | Date of SI Enhancement |
|---|---|---|---|
| EMP001 | Priya Kumar | 500000 | 19-May-2026 |
upload-action-type=si_enhancement; note file_id./employee/excel_error/{file_id} — codes 4 (SI/slab) or 10 (member missing).emp_endorsement where file_id = upload id, actions = 'si', status = 'pending' — expect up to 3 rows per member (same group_key).new_value on basic_cover_si and premium to Excel and rack expectations.check_si in step 1 must pass before the job runs.files.status = success does not guarantee every row created endorsements.employee_polices.basic_cover_si changes after endorsement processing.Related: Inception, Correction, EB rack rate calculation.