Timesheet types

There are basically two types of timesheets:

  1. Concrete timesheets
  2. Virtual timesheets

Concrete timesheets

Concrete timesheets are sheets that are have their own data associated with them and can be workflowed to allow for complex interactions such as submission and approval. They cover a given timeperiod (such as a month or a week). These concrete timesheets should be stored. It should be possible to set the timesheet to read-only (most likely through security settings).

One possible feature is the stating of completion constraints; for example the minimum number of hours logged against a sub-key for a certain timeperiod; e.g. 40 hours per week per principal.

Virtual timesheets

Virtual timesheets provide windows into the logged data over an arbitrary timespan. They are purely a View; no data needs to be stored for them. They either act directly on the ITimeLogStore or on concrete timesheets; in the latter case UI should accuratly reflect the read-only state of dates taken from read-only timesheets.

Possibly they should just be named Timesheet Views except that they are not full Views in the Zope3 sense. They are not multiadapters; instead an actual Zope3 View will adapt these virtual timesheets to an HTTP or an FTP client.