Definitions

Timesheets are TimeEntries containers. A timesheet belongs to a single user owner and ranges over several days [startsOn - endsOn[ (endsOn excluded). Its range depends on the submission frequency set up in Timmi Timesheet (weekly / monthly).

A timesheet purpose is to ease the approval workflow: rather than approving each TimeEntry individually, they are approved in a weekly / monthly batch.

The approval workflow looks like this:

Timmi Timesheet - Approval workflow

Thus, a timesheet:

  • is created upon submission ;
  • is "pending approval" or "submitted" (status: 1) as long as all approvers have not approved it ;
  • is "approved" (status: 2) once all approvers have approved it ;
  • may become "rejected" (status: 3) whenever:
    • the submitter cancels the submission, which is possible as long as the timesheet is not fully approved ;
    • one of the approvers denies the timesheet ;
    • an administrator invalidates the timesheet, which is only possible once the timesheet is fully approved.

Once a timesheet is rejected, a new one has to be submitted and the workflow starts again.

Timesheets are created and their status are set to submitted. In some cases, timesheets may then be automatically approved, depending on the approval workflow settings.

Once submitted, all timeentries on the period for that user can no longer be modified. In order to be able to modify them, the timesheet must first be rejected through cancel, deny or invalidate operations (depends on the current timesheet status).

Available guide

Please see this guide on how to submit timesheets the right way.

Fields

id
integer

Uniquer identifier of the timesheet.

name
string

Human-readable description of the Timesheet

ownerId
integer

Reference to the Timesheet owner.

Required range: x > 1
owner
object

A Timesheet limited model of a user

startsOn
string

The Timesheet starting date (included).

endsOn
string

The Timesheet ending date (excluded).

expectedNextActorId
integer

Reference to the TimesheetUser responsible for the next approval workflow step. Is null if status <> 1

expectedNextActor
object

Reference to the TimesheetUser responsible for the next approval workflow step. Is null if status <> 1

status
enum<integer>

Approval workflow status for this timesheet

  • 0: the timesheet is yet to be submitted
  • 1: the timesheet has been submitted and approval is still pending
  • 2: the timesheet has been submitted and approved.
  • 3: the timesheet has been rejected (cancelled after submission, denied upon approval or invalidated after having been approved)
Available options:
0,
1,
2,
3
statuteId
integer

Reference to the applicable "statute" (configuration).