Tier 7 — People, Timesheets & Leave
Timesheet statuses, permissions and messages
Every timesheet status, every timesheet permission, and every message that stops a timesheet or its time from changing, with what to do about each.
Statuses
A week shows exactly one of these. The status filter and the badges on every timesheet screen use the same labels.
| Status | Meaning | Set by |
|---|---|---|
| Not started | No sheet exists for the week yet. | — |
| Draft | Being filled in. Lines can change. | Starting a sheet, Recall, Reopen |
| Awaiting approval | Submitted. The sheet and its job time are locked. | Submit |
| Changes requested | Sent back with a reason. Lines can change, then it is submitted again. | Request changes |
| Approved | Signed off. The sheet and its job time are locked. | Approve |
Line sources
| Line | Comes from | Change it |
|---|---|---|
| Job time | Closed job time entries, 24 hours or less, on that day | On the job's Time Tracking card |
| Leave | Approved leave, per working day covered | On the leave request |
| Hand-entered | Add time on the sheet — Work, Travel, Admin, Training or Other | On the sheet |
Permissions
These appear under Timesheets in the People & HR group on an employee's Permissions tab.
| Permission | Key | Allows |
|---|---|---|
| View All Timesheets | erp:hr:timesheets:view | Every employee's sheets, the week view, and the two people reports |
| View My Timesheets | erp:hr:timesheets:view-own | Your own sheets |
| Submit Timesheets | erp:hr:timesheets:create | Start, fill in, submit and recall your own sheets |
| Edit Any Timesheet | erp:hr:timesheets:edit | Start and fill in sheets for other employees |
| Approve Timesheets | erp:hr:timesheets:approve | Approve, send back and reopen other people's sheets |
| Full Management | erp:hr:timesheets:manage | All of the above, plus the timesheet settings |
Messages
These come from the server, so they read the same in the portal and the app. Job numbers, names and dates are filled in for the sheet in question.
| Message | What to do |
|---|---|
| Still clocked in to JOB-… Clock out before submitting. | Clock off the job, then submit. |
| Time on JOB-… runs over 24 hours — correct it on the job before submitting. | Fix the entry's end time on the job. |
| There is no time on this timesheet. Add your hours before submitting. | Add time, or delete the sheet. |
| This week has not started yet | Submit once the week begins. |
| Timesheets cannot be created for future weeks | Start the sheet during the week. |
| This timesheet has been submitted. Recall it to make changes. | Select Recall. |
| This timesheet has been approved. It must be reopened by an approver before it can change. | Ask an approver to select Reopen. |
| This time is on …'s submitted timesheet for the week of … | The sheet must be recalled or sent back before the job time can change. |
| This time is on …'s approved timesheet for the week of … | The sheet must be reopened before the job time can change. |
| This line mirrors time logged on job JOB-… Change it on the job and the timesheet follows. | Edit the time on the job. |
| This line mirrors approved leave. Change the leave request instead. | Edit or cancel the leave request. |
| The end time must be after the start time. Split overnight work across two days. | Enter one line before midnight and one after. |
| That would record … hours on … — more than a day holds | Reduce the hours on that day. |
| You cannot approve your own timesheet | Another approver, or an administrator, approves it. |
| … already has a timesheet covering … | Open the existing sheet. This happens after the week start day changes. |
Source of truth: statuses and line sources from migrations/528_timesheets.sql; permissions from portal/src/constants/permissionLabels.ts; messages from api/src/services/erp/TimesheetService.js. Re-verify there when reviewing this page.