Work
Monthly timesheets
One record per client per calendar month, always the same record whatever its state. Pick a month and a client to start one — a client can have at most one.
Clients and their state in
| Client | Timesheet | Regular | Overtime | Day equivalent | Invoice reference |
|---|
All timesheets, newest month first
nothing here can be deleted| Client | Month | Status | Artifacts | Invoice reference | Updated |
|---|
Recent history
meaningful revisions onlyStarting a timesheet
Creation takes two snapshots from the live records at that instant:
- Party Details — company and client identity, plus the document language that applies.
- Working Terms — effective Standard Day, Clock Details policy, workday defaults.
- Consultant — from the company profile, overridable while Draft.
Because of that, editing a client or the company profile after
creation changes new timesheets only. A draft adopts new values through one explicit
Refresh snapshot action.
Design notes — dashboard
- TS-01 / I1 Where a client already has a timesheet for the month the create action is absent and the existing one is linked instead — the request would answer 409
duplicate_timesheetwithexistingId; try it anyway in the dialog. - GAP-04 An archived client has no create action at all: restore first.
- CL-05 The archived toggle is off by default and, when on, shows history unchanged rather than greyed-out-and-unclickable.
- TOT-02 The month summary strip shows no overtime block when a month has none, and shows combined inline when there is.
- CP-04 / TS-07 The Consultant column would sit beside the status; in this cut the client column wins the space and the Consultant lives on the timesheet page.