Skip to content

app.timesheets

TableRow level security on

A person's time on a project for a period. Hours are derived from the time entries (app.timesheet_hours). The submitter and the worker cannot approve (invariant 18), and an approval is voided when the hours change (invariant 19).

Primary key: id

Columns of app.timesheets
ColumnTypeNullableDescription
iduuidNoPrimary key, UUID v7.
org_iduuidNoOwning org, derived from app.projects on insert; never accepted from the caller and never changed.References app.organizations.id
project_iduuidNoProject.References app.projects.id
membership_iduuidYesMembership of the person whose time it is; NULL for external crew, who work through engagement_id.References app.memberships.id
period_startdateNoFirst day covered.
period_enddateNoLast day covered.
submitted_byuuidYesPerson who submitted it, set by app.submit_timesheet.References app.people.id
timesheet_stateapp.timesheet_stateNoTimesheet state. Changes only through the timesheet RPCs and the void trigger.
deleted_attimestamp with time zoneYesSoft delete time. A row with deleted_at set is ignored by every access helper.
created_attimestamp with time zoneNoWhen the row was inserted. Set by the database.
created_byuuidYesPerson who inserted the row, or null for a platform process. Set by the database.References app.people.id
updated_attimestamp with time zoneNoWhen the row last changed. Set by the database.
updated_byuuidYesPerson who last changed the row, or null for a platform process. Set by the database.References app.people.id
engagement_iduuidYesEngagement of the external person whose time it is. Exactly one of membership_id and engagement_id.References app.engagements.id