Skip to main content

Timesheets

Overview

Timesheets aggregate clock events into daily and period views for review and approval. They bridge time tracking and payroll, giving supervisors a clear picture of hours worked before payroll is finalized.

Daily View

The daily view shows all worklogs for an employee grouped by date. Each entry displays:

FieldDescription
Clock-in timeActual time the employee started work
Clock-out timeActual time the employee ended work
Rounded durationTotal worked time rounded to 15-min increments
Linked shiftThe planned shift times for comparison
Break segmentsStart and end times of each break taken
LocationThe work location for the worklog
ExceptionsAny detected anomalies for this entry

You can filter the daily view by date range, employee, location, or worklog status.

Period Summary

For a payroll period, the period summary shows aggregated hours across all employees. For each employee, you can see:

FieldDescription
Total worked minutesSum of all rounded worklog durations
Draft worklogsNumber of worklogs still in Draft status
Approved worklogsNumber of worklogs that have been approved
Locked worklogsNumber of worklogs locked for payroll
Exception countNumber of unresolved exceptions
Payroll readinessWhether the employee is ready for payroll lock

Worklog statuses

A worklog moves through five possible statuses. Most clean clock-event worklogs flow draft → approved → locked → exported on the happy path; supervisors only intervene for the ones that didn't auto-approve.

┌─────────┐ approve ┌──────────┐ period ┌─────────┐ export ┌──────────┐
│ draft │ ─────────▶ │ approved │ ─────────▶│ locked │ ─────────▶ │ exported │
│ │ ◀───────── │ │ lock │ │ ◀───────── │ │
└─────────┘ unapprove └──────────┘ ◀──── └─────────┘ revoke └──────────┘
│ unlock export

│ discard (with reason)

┌───────────┐
│ discarded │ (terminal — audit-only row)
└───────────┘
StatusMeaning
draftRecorded but not yet reviewed. Adjustable by supervisor.
approvedCleared by either auto-approve or supervisor. Counted in payroll.
lockedThe payroll period has been locked; worklog is frozen for processing.
exportedThe locked period has been pushed to payroll (e.g., Netvisor).
discardedRemoved from payroll but kept as an audit row. Terminal.

Automatic approval

When an employee clocks out, the system attempts to auto-approve their worklog. The worklog moves directly from Draft to Approved without supervisor review when all of the following are true:

  • The worklog has a linked planned shift (no unscheduled work).
  • The actual start time is within ±5 minutes of the planned start.
  • The actual end time is within ±5 minutes of the planned end.
  • No exceptions were detected for the worklog.

Otherwise the worklog stays in Draft and waits for the supervisor to approve it manually (see Approval Workflow below).

Manual worklogs always require supervisor approval. When a supervisor or employee enters a worklog directly through the timesheet UI, the system records a manual_entry exception on it, which prevents auto-approval regardless of how cleanly the times line up.

Approval Workflow

Worklogs that didn't auto-approve land in the period view as Draft. To clear them:

  1. Review the draft worklogs for the payroll period.
  2. Resolve any exceptions — adjust times or add notes as needed.
  3. Select the worklogs you want to approve and click Approve Selected.
  4. The status changes from Draft to Approved.
  5. If corrections are needed later, unapprove to revert the worklog back to Draft.

Ready for Payroll

An employee's timesheets are ready to lock for payroll when all of the following conditions are met:

  • No draft worklogs remain for the period.
  • No unresolved exceptions exist.
  • At least one approved or locked worklog exists for the period.

Once all conditions are satisfied, the employee appears as ready in the period summary.

Adjusting Times

To correct a worklog:

  1. Click on the worklog entry to open the adjustment dialog.
  2. Modify the start time, end time, or both.
  3. Save the changes.
  4. The adjustment is audited with before and after values recorded automatically.
  5. The worklog returns to Draft status and needs re-approval.

Exceptions

The following exceptions are automatically detected and shown on the timesheet:

ExceptionTrigger
Long shiftShift exceeds 12 hours
Insufficient restLess than 11 hours between consecutive shifts
Missing clock-outEmployee clocked in but did not clock out
Unscheduled workWorklog recorded without a linked planned shift

Resolve exceptions by adjusting times, adding explanatory notes, or acknowledging them before locking the period for payroll.

Absent shifts (no-shows)

When a published shift's planned end time has passed and no worklog exists for the same employee covering that interval, the timesheets list surfaces it inline as an Absent row alongside real worklogs. This is the manager's no-show review surface — no more cross-referencing the roster against the worklog list by hand.

An absent row shows the employee, planned date and times, location, and an Absent status badge (distinct colour). Clock-derived fields (rounded duration, breaks, exceptions) are not shown — the row carries no clock data by definition.

Filter the list by Absent in the status bar to see only no-shows, or leave the status filter on All to see absents mixed with worklogs in date order.

Each absent row exposes two row actions in a dropdown:

ActionWhat it does
Add manual worklogOpens the manual-worklog dialog pre-filled with the shift's employee, location, department, date, start, and end. Save to create a proper worklog and the absent row disappears.
Mark shift cancelledOpens a confirm dialog with a translated default reason (No-show — manager review); confirming cancels the shift via the usual cancel-shift flow. The absent row disappears once the shift is cancelled.

Absent rows are read-only with respect to bulk actions: they're not selectable for Approve / Unapprove / Discard (they have no worklog id), and the select all visible drafts header checkbox skips them.

A shift is considered absent only when:

  • Its status is published (not draft, not cancelled).
  • Its planned_end is in the past.
  • No worklog with status draft, approved, locked, or exported for the same employee overlaps the planned interval. (discarded worklogs do not suppress the absent classification — they don't count as coverage.)

A manual worklog that overlaps the planned interval clears the absent row even if its times don't exactly match the plan. A different-time manual worklog on the same day (e.g. 12:00–14:00 against a 14:00–22:00 shift) does not clear it.