Skip to content
Timesheet statement generation

Timesheet statement generation

Opens a pending timesheet statement for each active employee whose current approval period is not yet covered.

How it works

When timesheet approval is turned on in employment terms, every employee on those terms should have one timesheet statement per approval period. This job opens the missing statement for the current period:

  1. Finds terms with approval — employment terms whose Approval Mode is not None
  2. Works out the current period — for each set of terms, the start and end of the approval period that contains the run date
  3. Selects employees — active employees on those terms who do not yet have a statement with exactly that start and end date
  4. Opens the period — one per employee. This creates the pending statement, or does nothing if a matching statement already exists

The exact start and end date matter: switching the approval period (e.g. monthly → weekly) leaves the old monthly statement in place but creates fresh weekly ones from the next run on.

When it runs

The job runs automatically and only triggers when at least one employee is missing a statement. Turning on approval mid-period creates the missing statement on the next run, not at the start of the next period.

Parameters

This job has no parameters. The run date controls which period is considered “current”.

Running with a past run date

You can create statements in advance, or for a past period, by triggering the job manually with a run date inside that period. A statement is never created twice, so re-runs are safe.

Job results

MetricDescription
createdNumber of pending statements created
errorsNumber of employees for whom the statement could not be opened

When no terms have approval enabled, the run reports skipped: "no employment terms with approval enabled".

Troubleshooting

IssueSolution
Statement not generated for an employeeConfirm the employee’s employment terms have an Approval Mode other than None and the employee is active
Statement created with the old period datesThe period’s start and end are taken from the terms at run time. If the terms changed mid-period, the next run generates a new statement for the new dates; the old one remains until reviewed
No statements created for a new approval modeRun the job manually after the change; it picks up the new period dates straight away