]po[ Hour
A "timesheet hour" represents the work done by an employee at a certain project. Actually, timesheet hours are not a real ]project-open[ objects because they does not reference the acs_objects table and don't support services such as permissions.
Fields of the im_hours Table:
- User (user_id:integer references users):
The user who has logged some hours.
- Project (project_id:integer references im_projects):
The project or timesheet task on which the hours have been logged.
- Day (day:timestamptz):
The day when the hours have been logged.
- Hours (hours:numeric)
The number of hours logged
- Billing Rate (billing_rate:numeric):
Not used currently. May be deleted in one of the next versions.
- Billing Currency (billing_currency:char(3)):
Not used currently. May be deleted in one of the next versions.
- Note (note:text):
Comment on what has been done during the time logged.
- Timesheet Task2 (timesheet_task2_id:integer)
Not used currently. May be deleted in one of the next versions.
- Confirmation Object (conf_object_id:integer references im_timesheet_conf_objects):
A reference to a confirmation object. This conf objects represents a confirmation request, when a user clicks on the button "submit hours for configuration" in the timesheet GUI. The confirmation object contains a conf_status_id that can be Requested, Active or Rejected. This way you can distinguish between confirmed timesheet hours and unconfirmed hours.
- Timesheet Cost (cost_id:integer references im_costs):
Reference to the cost item with the financial impact of the logged hours.
When logging hours, ]po[ will automatically create a financial item of type "Timesheet Costs" to represent the cost of hours. The amount of the timesheet cost item is calculated as number of hours x hourly cost (im_employees.hourly_cost of the user logging the hours).
- Timesheet Invoice (invoice_id:integer references im_costs):
Link to a Timesheet Invoice containing the logged hour. This way we can keep track of non-billed hours delivered to a customer. Please see the Timesheet Invoices for detailes on Timesheet billing.
- Material (material_id:integer references im_materials):
]po[ allows to specify the material (type of service) when logging hours. This way, a user logging hours can differentiate between the type of services delivering. You need to enable the parameter [HourLoggingWithMaterialsP] in order to use this feature. In that case. ]po[ will show a drop down field with materials for every hour logged.
- Internal Note (internal_note:text):
Allows a user to differentiate between "internal" and "external" comments about what the user has done if the parameter [HourLoggingInternalCommentP] is enabled. The "internal" comment is used if the external comment will be presented directly to a customer.
Data-Model
Structure of the im_hours database table:
create table im_hours (
user_id integer
constraint im_hours_user_id_nn
not null
constraint im_hours_user_id_fk
references users,
project_id integer
constraint im_hours_project_id_nn
not null
constraint im_hours_project_id_fk
references im_projects,
day timestamptz,
hours numeric(5,2) not null,
cost_id integer
constraint im_hours_cost_fk
references im_costs,
conf_object_id integer
constraint im_hours_conf_object_fk
references im_timesheet_conf_objects
invoice_id integer
constraint im_hours_invoice_fk
references im_costs,
material_id integer
constraint im_hours_material_fk
references im_materials,
-- ArsDigita/ACS billing system - log prices with hours
billing_rate numeric(7,2),
billing_currency char(3)
constraint im_hours_billing_currency_fk
references currency_codes(iso),
note text,
internal_note text
);