TIP: You can type at any time to perform a new search.
Project timesheet time control
hr_timesheet_time_control · OCA/timesheet
- Repository
- OCA/timesheet · module folder · Try on Runboat
- Module version
- 1.0.3
- Category
- Project
- Folder size
- 0.95 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/timesheet
- Last tracking update
- 2026-08-07 09:06:28
- Authors
- Odoo Community Association (OCA), Tecnativa
- Maintainers
- Odoo Community Association (OCA), Tecnativa
- Committers
- Christopher Rogos, Weblate, OCA-git-bot, oca-ci, christian-ramos-tecnativa
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- crm_timesheet, hr_timesheet_time_control_begin_end
- Description
Allow to track the exact moment when a timesheet line is started (not only the day, but also the minute and second) and let users start and stop timers easily.
Code Analysis ⓘ
Views touched (10)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_line_tree |
account.analytic.line | tree | Inherits hr_timesheet.hr_timesheet_line_tree | |
hr_timesheet_line_form |
account.analytic.line.form.inherit | account.analytic.line | form | Inherits hr_timesheet.hr_timesheet_line_form |
hr_timesheet_switch_form |
hr.timesheet.switch resume form | hr.timesheet.switch | form | New |
project_invoice_form |
Add timesheet time controls | project.project | form | Inherits hr_timesheet.project_invoice_form |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | Inherits hr_timesheet.view_kanban_account_analytic_line |
view_project_kanban_inherited |
Add timesheet time controls | project.project | kanban | Inherits hr_timesheet.view_project_kanban_inherited |
view_project_tree |
Add timesheet time controls | project.project | list | Inherits project.view_project |
view_task_form2_inherited |
Add timesheet time controls | project.task | Inherits hr_timesheet.view_task_form2_inherited | |
view_task_kanban |
Add timesheet time controls | project.task | kanban | Inherits project.view_task_kanban |
view_task_tree2_inherited |
Add timesheet time controls | project.task | list | Inherits hr_timesheet.view_task_tree2_inherited |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (5)
New fields (3)
-
date_timeDatetimecopy=Falsedefault=<expr>string='Start Time' -
date_time_endDatetimecompute='_compute_date_time_end'inverse='_inverse_date_time_end'search='_search_date_time_end'string='End Time' -
show_time_controlSelectioncompute='_compute_show_time_control'help='Indicate which time control button to show, if any.'selection=[('resume', 'Resume'), ('stop', 'Stop')]
-
button_end_work(self) -
button_resume_work(self)Create a new record starting now, with a running timer. -
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (10)
-
analytic_line_idMany2one → account.analytic.linecomodel_name='account.analytic.line'string='Origin line' -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>readonly=Truerequired=Truestring='Company' -
date_timeDatetimedefault=fields.Datetime.nowrequired=Truestring='Start Time' -
date_time_endDatetimestring='End Time' -
nameCharrequired=Truestring='Description' -
project_idMany2one → project.projectcomodel_name='project.project'compute='_compute_project_id'domain=<expr>readonly=Falsestore=Truestring='Project' -
running_timer_durationFloatcompute='_compute_running_timer_duration'help='When the previous timer is stopped, it will save this duration.'string='Previous timer duration' -
running_timer_idMany2one → account.analytic.linecomodel_name='account.analytic.line'default=<expr>help='This timer is running and will be stopped'ondelete='cascade'readonly=Truestring='Previous timer' -
running_timer_startDatetimereadonly=Truerelated='running_timer_id.date_time'string='Previous timer start' -
task_idMany2one → project.taskcomodel_name='project.task'compute='_compute_task_id'domain="\n [\n ('company_id', '=', company_id),\n ('project_id.allow_timesheets', '=', True),\n ('project_id', '=?', project_id)\n ]\n "index=Truereadonly=Falsestore=Truestring='Task'
-
action_switch(self)Stop old timer, start new one. -
default_get(self, fields_list)@api.modelReturn defaults depending on the context where it is called.
New fields (1)
-
show_time_controlSelectioncompute='_compute_show_time_control'help='Indicate which time control button to show, if any.'selection=[('start', 'Start'), ('stop', 'Stop')]
-
button_end_work(self) -
button_start_work(self)Create a new record starting now, with a running timer.
New fields (0)
No new fields.
Public methods (1)-
button_start_work(self)
New fields (0)
No new fields.
Public methods (1)-
button_start_work(self)