Timesheet statement reminder
Notifies employees when a timesheet statement reaches its submission deadline or becomes overdue.
How it works
The job walks through every pending or ready timesheet statement in the workspace and emits a lifecycle event when a threshold is reached:
- Pending → Ready — when today is on or after the last working day of the period, the statement is marked ready and the employee is notified that the deadline has arrived
- Ready → Overdue — when today is on or after the first working day after the period ended and the statement still has not been submitted, the statement is marked overdue and an overdue notification is sent
Both thresholds are evaluated against the employee’s own schedule, so weekends, holidays, and any planned time-off don’t accidentally count as “the deadline day”.
The job uses “>=” rather than “==” on each threshold, so a statement that missed its exact day (job outage, period predates the feature) catches up on the next run. Events have deterministic IDs, so re-runs do not produce duplicate notifications.
When it runs
The job runs automatically and only triggers when at least one pending or ready statement exists for the workspace.
Parameters
This job has no parameters.
Job results
| Metric | Description |
|---|---|
processed | Number of statements evaluated |
ready_emitted | Number of statements promoted to ready (deadline reached) |
overdue_emitted | Number of statements promoted to overdue (first working day past end) |
skipped | Statements not yet at any threshold or already past it (dedup hit) |
errors | Failures during processing |
Who gets notified
The lifecycle events also carry the employee’s direct manager as a target — this is how the manager’s approvals inbox gets populated on rebuild. Live notifications follow the same routing: the employee sees the deadline/overdue notification; the manager sees the pending approval in their inbox.
Troubleshooting
| Issue | Solution |
|---|---|
| No deadline notification | Check that the statement is in “pending” state and that today is on or after the last working day of the period for that employee |
| No overdue notification | The statement must be in “ready” state and today must be on or after the first working day after the period ended. If the employee’s schedule has a long absence right after the period, the overdue day can be pushed back |
| Manager inbox empty after a rebuild | Re-run the Rebuild employee projections job, then re-run this job to re-emit lifecycle events with target manager IDs |