4.2 KiB
DOLE Compliance & HRIS Gap Analysis Document
Strategic approach to bridging the gaps identified between current system capabilities and QA DOLE requirements.
1. Timekeeping & Attendance Engine
The Gap: The system fails to process fundamental DOLE timekeeping rules. It lacks grace periods, does not separate tardiness from undertime, and fails to identify Night Differential (ND) hours. Target State: Attendance processing accurately reflects grace periods, separates late/undertime penalties, and tags specific hours for Night Differential (10:00 PM to 6:00 AM).
Technical Approach:
- Refactor
AttendanceRecord::processAttendance():- Fetch the
grace_periodfrom the assignedShift. If clock-in is within the grace period,late_minutes = 0. - Calculate
late_minutes(Tardiness) andearly_departure_minutes(Undertime) as two distinct metrics. - Implement a time-check algorithm to identify how many hours of the shift fall between 10:00 PM and 6:00 AM, storing this in a new
night_diff_hourscolumn.
- Fetch the
2. Payroll Engine: DOLE Compounding Multipliers
The Gap: The system acknowledges Holidays and Overtime but fails to apply DOLE's compounding premium multipliers (e.g., Working OT on a Regular Holiday = 260%).
Target State: The PayrollService mathematically applies the correct multiplier based on the overlapping conditions of the day (Rest Day, Holiday, OT, ND).
Technical Approach:
- Upgrade
App\Services\PayrollService:- Build a DOLE Matrix lookup function that calculates the
Effective Multiplier. - Logic Flow: Base Rate (100%) -> Check Holiday (e.g., x 2.00) -> Check Rest Day (e.g., x 1.30) -> Check OT (e.g., x 1.30) -> Check ND (e.g., x 1.10).
- Update
PayrollRunControllerto display these distinct premium earnings on the payslip.
- Build a DOLE Matrix lookup function that calculates the
- Preceding Day Rule: Add a query to check if the employee was
presentor onpaid_leavethe day before a holiday to determine if they qualify for holiday pay.
3. Leave Management & UI Handling
The Gap: All leaves are treated as unpaid absences. Service Incentive Leave (SIL) and Maternity/Paternity logic are missing. The UI abruptly exits when a user has a zero leave balance, and there is no "Leave Without Pay (LWOP)" option. Target State: Paid leaves do not deduct from the salary. LWOP is available. UI gracefully handles zero balances.
Technical Approach:
- Backend Fixes:
- Modify
LeaveApplication->createAttendanceRecords()to flagis_paidbased on theLeaveType. - Ensure
PayrollServiceignorespaid_leavedays when calculatingunpaid_leave_deduction. - Add "Leave Without Pay" (LWOP) to the standard database seeders/Leave Types.
- Modify
- Frontend Fixes:
- Catch the zero-balance exception in the Vue/Inertia frontend and display a user-friendly toast/modal instead of crashing.
- Remove the Calendar view in the Shifts module as requested by QA.
4. Statutory Automation (SSS, PhilHealth, Pag-IBIG)
The Gap: Deductions are mathematically sound but currently require manual entry by HR. Target State: Statutory deductions auto-calculate based on the employee's gross basic salary and current Philippine brackets.
Technical Approach:
- Implement Contribution Tables:
- Create a configuration file or a database table
StatutoryBracketsthat holds the latest 2024/2025 SSS, PhilHealth (e.g., 5%), and HDMF (e.g., ₱200 max) limits. - Update
PayrollServiceto calculate theemployee_shareautomatically based on theirbasic_salary.
- Create a configuration file or a database table
Proposed Execution Roadmap
To ensure stability without breaking the current working setup, we will implement these fixes in three controlled phases:
- Phase 1: Timekeeping & Leave Architecture
- Implement Grace Periods, Tardiness vs. Undertime.
- Fix the Leave Engine (Paid vs. Unpaid, adding LWOP).
- Apply UI fixes (Zero balance handling, remove Shift Calendar).
- Phase 2: The DOLE Payroll Engine
- Integrate the DOLE Multiplier Matrix into
PayrollService. - Build the Night Differential hour tracker.
- Apply the Preceding Day Rule for holidays.
- Integrate the DOLE Multiplier Matrix into
- Phase 3: Statutory Automation
- Implement the SSS, PhilHealth, and Pag-IBIG bracket auto-computation.
- Final end-to-end testing against the QA Excel formulas.