Duty roster

This module allows easy encoding of duty roster that is usually created and
distributed in spreadsheet. It follows the common format used by
manufacturing to enroll their general workers for duty each month.

Shift codes must be defined prior to creation of duty roster.  At the moment,
shift code is exactly 1 letter. While it may seems like a non-ideal
restriction, it allows duty roster to be created very quickly (with the help
of custom widgets).

The creation of a duty roster is usually responsiblity of department
supervisor, and validated by department manager. However, this module does
not distinguish supervisor from manager. User of this module should edit
the groups accordingly.