Skip to content

Record attendance (actuals)

Goal

Record what actually happened — who was present, late, or absent — by Excel import or by editing a day's records, so reconciliation can compare actuals to the planned roster.

Who can do this

  • Import (Excel): attendance.import — System Administrator, HR Administrator, Planner (and HR Director, COO).
  • Capture: attendance.capture — Supervisor (or System Administrator).
  • Validate: attendance.validate — Supervisor, Manager, Planner.
  • Review / revert an edit: attendance.reviewManager (or System Administrator).

Before you start

  • The day's planned shift exists (e.g. SHT-EVE-16 — Evening Shift 16:00–00:00 on 2026-06-01).
  • For import: an .xlsx matching the template (columns Employee_Code, Date, Shift_Code, Time_In, Time_Out, Status, Notes), ≤ 10 MB.

Steps

  1. Import: open Attendance import (/admin/attendance/import), Download template, fill one row per employee per day (status PRESENT / ABSENT / LATE / …), then Preview and Commit.
  2. Or edit a row: open Attendance (/admin/attendance), filter to the date/terminal, and edit a record. Every edit raises a pending review for a Manager.
  3. View the day's actuals — e.g. for 2026-06-01 at Demo Container Terminal: one ABSENT (no-show), one LATE at 16:45, the rest PRESENT.

Attendance for 2026-06-01 at Demo Container Terminal — EMP-00001 ABSENT, EMP-00002 LATE 16:45, EMP-00003 PRESENT, all sourced from EXCEL_IMPORT.

What the system does

Attendance is the actuals record (one row per employee per day) — the canonical source is Excel import (Source = EXCEL_IMPORT); there is no biometric clock / punch feed. An Admin/Planner edit applies immediately but is surfaced to a Manager as a pending review to acknowledge or revert. Reconciliation then compares these actuals to the published roster — see View reports.

What can block you

  • Cross-midnight clock-out is rejected (finding F3). For the 16:00→00:00 evening shift, importing the true end time 00:00 fails validation (TIME_OUT_BEFORE_IN) — the importer compares times same-day. Night-shift end times cannot be recorded as 00:00 via import; use a pre-midnight time, and don't document 00:00 clock-out as supported.
  • One row per employee per day — a single shift per day (no multiple punches).
  • A Manager revert can fail (409 stale) if the record changed after the edit was raised — re-fetch and retry.