The labour record of a service order. The order's Time Sheet action creates one sheet per run, with one time sheet line for every selected service order line whose item is a Work Item, has open quantity and is not already on a sheet; part lines never go on a sheet. Technicians record work on the lines with the sheet's Start, Pause and End actions, which stamp the server clock. A pause closes the running segment, and Start after a pause opens a new line for the same work. The sheet header's dates, flags, status and hours are rolled up from its lines, and the parent order's Is Time Sheet Generated, Work Started, Is Work Paused and Work Ended flags are re-derived from every work item line on the order. An order cannot be set to Work Completed until every open work item line has ended, and Generate Invoice is refused while any sheet on the order is not at Work Ended. Sheets are numbered TS-DDMMYYYY-NNNNNN and belong to no app menu.
Fields
| Field | Label | Type | Required | What it does |
ActualDurationHours | Actual Duration Hours | Calculated (calculated) | | Calculated: the sum of the Actual Duration (Hours) of the sheet's lines. Each line counts from its Work Start Date to the stamp that closed it (Work End Date, or Work Pause Date for a paused segment), so paused gaps are not counted. |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
ExternalId | External | Text, unique | | |
Id | Id | Guid | Yes | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Name | Text | Yes | Document number, assigned automatically in the form TS-DDMMYYYY-NNNNNN (series TS, creation date, six-digit counter). |
OwnerId | Owner | Lookup → UserAccount | Yes | |
RecordTypeId | Record Type | Guid, hidden | | |
RepairPauseReason | Work Pause Reason | PickList | | Header-level pause reason. Nothing in the standard Pause action reads or writes it: the reason a Pause records is stored on each time sheet line (Pause Reason). Values: Paused-Non Availability of Stock. |
ResourceId | Resource | Lookup → Resource | | The default technician for the sheet. When the order's Time Sheet action creates it, it is the technician chosen in the action, otherwise the order's Technician, otherwise the order's Service Advisor. Each sheet line takes the order line's own technician when it has one and this resource otherwise. |
ServiceOrderId | Service Order | Lookup → ServiceOrder | Yes | The service order the sheet records labour for. Required, and fixed once the sheet is saved: a change is refused on update. |
ServiceOrderLineId | Service Order Line | Lookup → ServiceOrderLine | | Optional single service order line for the whole sheet. Sheets created by the order's Time Sheet action leave it empty and link each covered order line through the sheet's lines instead. Fixed once the sheet is saved. |
StandardDurationHours | Standard Duration Hours | Calculated (calculated) | | Calculated: the sum of the Standard Duration Hours of the service order lines linked to this sheet. A value typed here is replaced on save. |
UIProps | UI Props | Text | | |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
WorkEndDate | Work End Date | DateAndTime | | Latest line end, filled only once every piece of work on the sheet (each order line, technician and item) has ended. Empty while any work is running or paused. |
WorkEnded | Work Ended | Boolean | Yes | Set by the server when every piece of work on the sheet has ended. A sheet with Work Ended set shows Work Status Work Ended, which is what invoice generation on the order checks. |
WorkPaused | Work Paused | Boolean | Yes | Set by the server when every piece of work on the sheet is currently paused (its latest segment closed by a pause, not ended). |
WorkPauseDate | Work Pause Date | DateAndTime | | Latest Work Pause Date among the sheet's lines whose segment is closed by a pause and not ended, recalculated from the lines. |
WorkRemarks | Work Remarks | Text | | Free-text notes on the work done, up to 255 characters. In the field app, applying an AI Mechanic conclusion to the job appends the reported work to the job's latest time sheet here. |
WorkStartDate | Work Start Date | DateAndTime | | Earliest Work Start Date among the sheet's lines, recalculated whenever a line's work dates change. Empty until the first Start. |
WorkStarted | Work Started | Boolean | Yes | Set by the server when every piece of work on the sheet has started at least once. Not a control: typing it does not start any line. |
WorkStatus | Work Status | Calculated (calculated) | | Calculated stage of the sheet: Work Ended when Work Ended is set, Work Paused when Work Paused is set, Work In Progress once any work has been resumed after a pause, Work Started once any line has started, and blank before that. Sheets saved before this formula existed can still show the older words Started, Paused or Completed until a line on them changes. Values: Work Started, Work Paused, Work Ended. |
Actions
| Action | Label | Type | What it does |
BulkDelete | Delete | Delete | Delete |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Delete |
DeleteInList | Delete | Delete | Delete |
Edit | Edit | Edit | Edit |
Edit1 | Edit | EditInline | Edit |
EditEntity | Edit | Edit | Edit Entity |
EditInLine | Edit | Edit | Edit |
EditInLineEntity | Edit | EditInline | EditInLine Entity |
End | End | ServerAction (PerformWorkEnd) | End Work |
New | New | New | New |
Pause | Pause | ServerAction (PerformWorkPause) | Pause Work |
Start | Start | ServerAction (PerformWorkStart) | Start Work |
Validations
| Validation | Applies to | Error message | Notes |
| Work Pause Reason Required | RepairPauseReason, Error | Work Pause Reason is required when the work is set to Paused. | Work Pause Reason is required when the work is set to Paused. |
| Work End Validation Rule | WorkStartDate, Error | Work End Date cannot be before Work Start Date | Work End Date cannot be before Work Start Date |
| Work Pause Validation Rule | WorkStartDate, Error | Work Pause Date cannot be before Work Start Date | Work Pause Date cannot be before Work Start Date |
| Work must be started before pause/end | WorkStarted, Error | Work cannot be paused or ended before it has been started. | Work cannot be paused or ended before it is started. |