Attendance & Roster¶
Attendance feeds two things: payroll (loss-of-pay for absences, overtime, shift allowances) and leave (weekly-offs and holidays are excluded from leave counts).
Shifts¶
A Shift defines working hours, grace and early-exit allowances, break minutes, weekly-offs, and overtime rules (daily and weekly caps, premium multipliers). A shift can be flagged as a night shift with a differential percentage — see below.
How a shift is chosen for a day¶
Every attendance path resolves a shift the same way: the employee's roster entry for that date first, then their default shift as a fallback. This means a new joiner without a roster can still punch in (they get their default shift), and a rostered factory/hospital worker is always evaluated against the shift they were actually scheduled for.
Rosters¶
- Daily roster (HR Management → Roster,
/hr/roster) — assign a shift to an employee for a date. Manual edits always win and are never overwritten by automatic generation.
Placeholder — screenshot to be added (assets/img/hrms-roster.png).
Rotation patterns (factory / hospital)¶
For rotating shift work, define a rotation pattern under
HR Management → Roster → Rotation Patterns (/hr/roster/rotation):
- Build the cycle as ordered steps — e.g.
7× Morning → 7× Evening → 7× Night → 2× Rest. A step with no shift is a rest day (no roster row is generated). - Assign an employee to the pattern with a start date (cycle day 1).
- The system materialises the pattern into ordinary roster rows 14 days ahead, every night — or click Generate rosters now. From there, the rest of the system just sees rosters; it needs no rotation awareness.
Placeholder — screenshot to be added (assets/img/hrms-rotation-pattern.png).
Night-shift differential
Set a shift's night differential % and every attended night earns that percentage of the daily basic rate, folded into payroll automatically. The rate is taken from the shift the employee actually worked, so rotation staff earn each night's own rate.
On-call (standby)¶
Record an on-call window (/api/hr/roster/on-call) with a daily allowance for hospital/IT
standby. The allowance is paid pro-rata for the days that fall in each pay cycle. Actual call-outs
worked are logged as ordinary overtime.
Capturing attendance¶
- Biometric devices push punches; an hourly job reconciles them into attendance (first-in / last-out, duration, overtime, shift compliance). Duplicate punches are de-duplicated automatically.
- Web / mobile punch — employees clock in/out from the portal with geolocation.
- CSV upload — bulk-import punches from a device export (duplicates are skipped).
Corrections¶
Missed a punch? The employee raises an attendance correction from ESS (missed check-in/out, system error, forgot ID card); their manager approves it and the attendance record is updated.
Overtime caps
A day's overtime is capped at the shift's daily limit and then clamped to the remaining weekly limit, so a busy week can't run overtime past the configured ceiling.
Next: Leave →