| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/19.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Services/Timesheets |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Thibault Delavallée, Aaron Bohy, Yannick Tivisse, Jorge Pinna Puissant, Julien Castiaux, Julien Mougenot, svs-odoo, Prakash Prajapati, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, william-andre, Audric Onockx (auon), luvi, Vincent Larcin, damr, Louis Wicket (wil), Victor Piryns (pivi), Dylan Kiss (dyki), Xavier Bol (xbo), Brieuc-brd, rajh-odoo, guva-odoo, Youssef Bashandy, bary, Maxime de Neuville, suth-odoo, sami odoo, asno-odoo, Mathieu Coutant, Abdelrahman Mahmoud (amah), Mohammad Abdulmoneim (abdu), Michaël Mattiello, K Theja (kthe), bona-odoo, Krzysztof Magusiak (krma), Mahdi Alijani (malj), Ajit Singh, Akash Pandey, vpan-odoo, nsirjacobs, mjvi-odoo, K Theja (kthe@odoo.com), Elliot ELCO, Abdelouahab Laaroussi (abla), Farah (ahmfa), karygauss03, maap-odoo, chpa-odoo, nikhil, Jenish Korat, Stanislav Kostenko |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/timesheet |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:51:40 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - digest - bus - web_tour - html_editor - portal - http_routing - auth_signup - resource - phone_validation - resource_mail - hr_hourly_cost - analytic - uom - project - rating |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_delete_wizard_form |
Delete Employee | hr.employee.delete.wizard | form | New |
hr_employee_public_view_form |
hr.employee.public.form.inherit.timesheet | hr.employee.public | xpath | Inherits hr.hr_employee_public_view_form |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | xpath | Inherits hr_hourly_cost.view_employee_form |
hr_employee_view_kanban_inherit_timesheet |
hr.employee.kanban.timesheet | hr.employee | xpath | Inherits hr.hr_kanban_view_employees |
hr_timesheet.timesheet_project_task_page |
hr_timesheet.timesheet_project_task_page | ir.ui.view | qweb | New |
hr_timesheet.timesheet_table |
hr_timesheet.timesheet_table | ir.ui.view | qweb | New |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_my_timesheet_search |
view.search.my.timesheet.menu | account.analytic.line | field | Inherits hr_timesheet_line_search |
hr_timesheet_line_portal_tree |
portal.hr_timesheet.account.analytic.line.list | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | xpath | Inherits analytic.view_account_analytic_line_filter |
hr_timesheet_line_tree |
account.analytic.line.list.hr_timesheet | account.analytic.line | list | New |
hr_timesheet_report_search |
timesheets.analysis.report.search | timesheets.analysis.report | search | Inherits hr_timesheet.hr_timesheet_line_search |
portal_layout |
Portal layout: timesheet menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_timesheet |
Timesheets | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_task |
Portal: My Task with Timesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
portal_my_task_allocated_hours_template |
portal_my_task_allocated_hours_template | ir.ui.view | qweb | New |
portal_my_timesheets |
My Timesheets | ir.ui.view | qweb | New |
portal_tasks_list_inherit |
Portal: My Tasks with Timesheets | ir.ui.view | qweb | Inherits project.portal_tasks_list |
portal_timesheet_table |
Portal Timesheet Table | ir.ui.view | qweb | New |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | xpath | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_project_view_tree_inherit_sale_project |
project.project.list.inherit.sale.timesheet | project.project | xpath | Inherits project.view_project |
project_sharing_inherit_project_task_view_form |
project.sharing.project.task.view.form.inherit | project.task | xpath | Inherits project.project_sharing_project_task_view_form |
project_sharing_kanban_inherit_project_task_view_kanban |
project.sharing.project.task.timesheet.kanban.inherited | project.task | templates | Inherits project.project_sharing_project_task_view_kanban |
project_task_view_graph |
project.task.view.graph.inherited | project.task | xpath | Inherits project.view_project_task_graph |
project_task_view_pivot |
project.task.view.pivot.inherited | project.task | xpath | Inherits project.view_project_task_pivot |
project_task_view_search |
project.task.view.search.inherit.sale.timesheet.enterprise | project.task | xpath | Inherits project.view_task_search_form_project_fsm_base |
project_templates_view_list_inherit_timesheet |
project.project.template.list.inherit.timesheet | project.project | field | Inherits project.project_templates_view_list |
project_update_view_kanban_inherit |
project.update.view.kanban.inherit | project.update | div | Inherits project.project_update_view_kanban |
project_update_view_search_inherit |
project.update.view.search.inherit | project.update | xpath | Inherits project.project_update_view_search |
report_project_task_timesheet |
report_project_task_timesheet | ir.ui.view | qweb | New |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
report_timesheet_project |
report_timesheet_project | ir.ui.view | qweb | New |
report_timesheet_task |
report_timesheet_task | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_report_subtask |
timesheet_report_subtask | ir.ui.view | qweb | New |
timesheet_view_form_portal_user |
account.analytic.line.form | account.analytic.line | xpath | Inherits hr_timesheet.timesheet_view_form_user |
timesheet_view_form_user |
account.analytic.line.list.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.list.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
timesheets_analysis_report_form |
timesheets.analysis.report.form | timesheets.analysis.report | form | New |
timesheets_analysis_report_graph_employee |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_graph_project |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_graph_task |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_list |
timesheets.analysis.report.list | timesheets.analysis.report | list | New |
timesheets_analysis_report_pivot_employee |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
timesheets_analysis_report_pivot_project |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
timesheets_analysis_report_pivot_task |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
view_calendar_account_analytic_line |
account.analytic.line.calendar | account.analytic.line | calendar | New |
view_calendar_account_analytic_line_multi_create |
account.analytic.line.calendar.multi_create | account.analytic.line | form | New |
view_calendar_account_analytic_line_my_timesheets |
account.analytic.line.calendar | account.analytic.line | calendar | Inherits hr_timesheet.view_calendar_account_analytic_line |
view_employee_tree_inherit_timesheet |
hr.employee.list.timesheet | hr.employee | xpath | Inherits hr.view_employee_tree |
view_hr_timesheet_line_by_project |
account.analytic.line.graph.by.project | account.analytic.line | field | Inherits hr_timesheet.view_hr_timesheet_line_graph_all |
view_hr_timesheet_line_graph |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_all |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_by_employee |
account.analytic.line.graph.by.employee | account.analytic.line | field | Inherits hr_timesheet.view_hr_timesheet_line_graph_all |
view_hr_timesheet_line_graph_my |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_kanban_account_analytic_line_portal_user |
portal.account.analytic.line.kanban | account.analytic.line | xpath | Inherits hr_timesheet.view_kanban_account_analytic_line |
view_my_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | xpath | Inherits project.view_project_kanban |
view_project_project_filter_inherit_timesheet |
project.project.view.inherit.timesheet | project.project | filter | Inherits project.view_project_project_filter |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | xpath | Inherits project.view_task_project_user_graph |
view_task_project_user_pivot_inherited |
report.project.task.user.pivot.inherited | report.project.task.user | pivot | Inherits project.view_task_project_user_pivot |
view_task_tree2_inherited |
project.task.list.inherited | project.task | field | Inherits project.project_task_view_tree_main_base |
business_domain
Selection
ondelete={'timesheet': 'cascade'}
selection_add=[('timesheet', 'Timesheet')]
No public methods.
calendar_display_name
Char
compute='_compute_calendar_display_name'
export_string_translation=False
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
context={'active_test': False}
domain=_domain_employee_id
help="Define an 'hourly cost' on the employee to track the cost of their time."
index=True
args: 'hr.employee', 'Employee'
encoding_uom_id
Many2one → uom.uom
compute='_compute_encoding_uom_id'
export_string_translation=False
args: 'uom.uom'
job_title
Char
export_string_translation=False
related='employee_id.job_title'
manager_id
Many2one → hr.employee
related='employee_id.parent_id'
store=True
args: 'hr.employee', 'Manager'
message_partner_ids
Many2many → res.partner
compute='_compute_message_partner_ids'
search='_search_message_partner_ids'
args: 'res.partner'
milestone_id
Many2one → project.milestone
related='task_id.milestone_id'
args: 'project.milestone'
parent_task_id
Many2one → project.task
index='btree_not_null'
related='task_id.parent_id'
store=True
args: 'project.task'
partner_id
Many2one
compute='_compute_partner_id'
readonly=False
store=True
project_id
Many2one → project.project
compute='_compute_project_id'
domain=_domain_project_id
index=True
readonly=False
store=True
args: 'project.project', 'Project'
readonly_timesheet
Boolean
compute='_compute_readonly_timesheet'
compute_sudo=True
export_string_translation=False
task_id
Many2one → project.task
compute='_compute_task_id'
domain="[('allow_timesheets', '=', True), ('project_id', '=?', project_id), ('has_template_ancestor', '=', False)]"
index='btree_not_null'
readonly=False
store=True
args: 'project.task', 'Task'
user_id
Many2one
compute='_compute_user_id'
readonly=False
store=True
action_open_timesheet_view_portal(self)
create(self, vals_list)
default_get(self, fields)
get_import_templates(self)
get_unusual_days(self, date_from, date_to=None)
get_views(self, views, options=None)
write(self, vals)
active
Boolean
default=True
export_string_translation=False
checked
Boolean
default=True
export_string_translation=False
employee_id
Many2one → hr.employee
export_string_translation=False
args: 'hr.employee'
user_id
Many2one → res.users
default=<expr>
export_string_translation=False
ondelete='cascade'
required=True
args: 'res.users'
No public methods.
has_timesheet
Boolean
compute='_compute_has_timesheet'
export_string_translation=False
action_timesheet_from_employee(self)
action_unlink_wizard(self)
employee_ids
Many2many → hr.employee
context={'active_test': False}
export_string_translation=False
string='Employees'
args: 'hr.employee'
has_active_employee
Boolean
compute='_compute_has_active_employee'
export_string_translation=False
string='Has Active Employee'
has_timesheet
Boolean
compute='_compute_has_timesheet'
compute_sudo=True
export_string_translation=False
string='Has Timesheet'
action_archive(self)
action_confirm_delete(self)
action_open_timesheets(self)
has_timesheet
Boolean
related='employee_id.has_timesheet'
action_timesheet_from_employee(self)
No new fields.
Public methods (2)get_timesheet_uoms(self)
session_info(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
account_id
Many2one
domain="[\n '|', ('company_id', '=', False), ('company_id', '=?', company_id),\n ('partner_id', '=?', partner_id),\n ]"
allocated_hours
Float
string='Allocated Time'
tracking=True
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
default=True
readonly=False
store=True
args: 'Timesheets'
analytic_account_active
Boolean
export_string_translation=False
related='account_id.active'
args: 'Active Account'
effective_hours
Float
compute='_compute_remaining_hours'
compute_sudo=True
string='Time Spent'
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
export_string_translation=False
is_internal_project
Boolean
compute='_compute_is_internal_project'
export_string_translation=False
search='_search_is_internal_project'
is_project_overtime
Boolean
compute='_compute_remaining_hours'
compute_sudo=True
export_string_translation=False
search='_search_is_project_overtime'
args: 'Project in Overtime'
remaining_hours
Float
compute='_compute_remaining_hours'
compute_sudo=True
string='Time Remaining'
timesheet_encode_uom_id
Many2one → uom.uom
compute='_compute_timesheet_encode_uom_id'
export_string_translation=False
args: 'uom.uom'
timesheet_ids
One2many → account.analytic.line
export_string_translation=False
args: 'account.analytic.line', 'project_id', 'Associated Timesheets'
total_timesheet_time
Float
compute='_compute_total_timesheet_time'
export_string_translation=False
groups='hr_timesheet.group_hr_timesheet_user'
string='Total amount of time (in the proper unit) recorded in the project, rounded to the unit.'
action_project_timesheets(self)
action_view_tasks(self)
create(self, vals_list)
get_create_edit_project_ids(self)
write(self, vals)
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
compute_sudo=True
export_string_translation=False
readonly=True
search='_search_allow_timesheets'
args: 'Allow timesheets'
analytic_account_active
Boolean
export_string_translation=False
related='project_id.analytic_account_active'
args: 'Active Analytic Account'
display_name
Char
help='Use these keywords in the title to set new tasks:\n\n 30h Allocate 30 hours to the task\n #tags Set tags on the task\n @user Assign the task to a user\n ! Set the task a medium priority\n !! Set the task a high priority\n !!! Set the task a urgent priority\n\n Make sure to use the right format and order e.g. Improve the configuration screen 5h #feature #v16 @Mitchell !'
effective_hours
Float
compute='_compute_effective_hours'
compute_sudo=True
store=True
args: 'Time Spent'
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
default=<expr>
export_string_translation=False
overtime
Float
compute='_compute_progress_hours'
store=True
progress
Float
aggregator='avg'
compute='_compute_progress_hours'
store=True
args: 'Progress'
project_id
Many2one
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id), ('is_internal_project', '=', False), ('is_template', 'in', [is_template, False])]"
remaining_hours
Float
compute='_compute_remaining_hours'
help='Number of allocated hours minus the number of hours spent.'
readonly=True
store=True
args: 'Time Remaining'
remaining_hours_percentage
Float
compute='_compute_remaining_hours_percentage'
export_string_translation=False
search='_search_remaining_hours_percentage'
subtask_effective_hours
Float
compute='_compute_subtask_effective_hours'
help='Time spent on the sub-tasks (and their own sub-tasks) of this task.'
recursive=True
store=True
args: 'Time Spent on Sub-tasks'
timesheet_ids
One2many → account.analytic.line
export_string_translation=False
args: 'account.analytic.line', 'task_id', 'Timesheets'
total_hours_spent
Float
compute='_compute_total_hours_spent'
help='Time spent on this task and its sub-tasks (and their own sub-tasks).'
store=True
args: 'Total Time Spent'
TASK_PORTAL_READABLE_FIELDS(self)
action_view_subtask_timesheet(self)
allocated_time
Integer
readonly=True
args: 'Allocated Time'
display_timesheet_stats
Boolean
compute='_compute_display_timesheet_stats'
export_string_translation=False
timesheet_percentage
Integer
compute='_compute_timesheet_percentage'
export_string_translation=False
timesheet_time
Integer
readonly=True
args: 'Timesheet Time'
uom_id
Many2one → uom.uom
export_string_translation=False
readonly=True
args: 'uom.uom', 'Unit'
create(self, vals_list)
allocated_hours
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Allocated Time'
effective_hours
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Time Spent'
overtime
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
progress
Float
aggregator='avg'
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Progress'
remaining_hours
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Time Remaining'
remaining_hours_percentage
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Time Remaining Percentage'
No public methods.
internal_project_id
Many2one → project.project
domain=[('is_template', '=', False)]
help='Default project value for timesheet generated from time off type.'
string='Internal Project'
args: 'project.project'
project_time_mode_id
Many2one → uom.uom
default=_default_project_time_mode_id
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
default=_default_timesheet_encode_uom_id
string='Timesheet Encoding Unit'
args: 'uom.uom'
create(self, vals_list)
is_encode_uom_days
Boolean
compute='_compute_is_encode_uom_days'
export_string_translation=False
module_project_timesheet_holidays
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Time Off'
project_time_mode_id
Many2one → uom.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
readonly=False
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'uom.uom'
reminder_allow
Boolean
string='Approver Reminder'
reminder_user_allow
Boolean
string='Employee Reminder'
timesheet_encode_method
Selection
compute='_compute_timesheet_encode_method'
inverse='_inverse_timesheet_encode_method'
required=True
string='Encoding Method'
args: [('hours', 'Hours / Minutes'), ('days', 'Days / Half-Days')]
No public methods.
amount
Monetary
currency_field='currency_id'
readonly=True
args: 'Amount'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
string='Currency'
args: 'res.currency'
date
Date
readonly=True
args: 'Date'
department_id
Many2one → hr.department
readonly=True
string='Department'
args: 'hr.department'
manager_id
Many2one → hr.employee
readonly=True
args: 'hr.employee', 'Manager'
message_partner_ids
Many2many → res.partner
compute='_compute_message_partner_ids'
readonly=True
search='_search_message_partner_ids'
args: 'res.partner'
milestone_id
Many2one → project.milestone
related='task_id.milestone_id'
args: 'project.milestone'
name
Char
readonly=True
args: 'Description'
parent_task_id
Many2one → project.task
readonly=True
string='Parent Task'
args: 'project.task'
partner_id
Many2one → res.partner
readonly=True
string='Partner'
args: 'res.partner'
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
task_id
Many2one → project.task
readonly=True
string='Task'
args: 'project.task'
unit_amount
Float
readonly=True
args: 'Time Spent'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
timesheet_widget
Char
export_string_translation=False
args: 'Widget'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/18.0/hr_timesheet |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Services/Timesheets |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Xavier ALT, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Sébastien Theys, Nasreddin Boulif (bon), Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, william-andre, Hubert Van De Walle, Vincent Larcin, damr, Thomas Lefebvre (thle), alsh-odoo, Louis Wicket (wil), Victor Piryns (pivi), Levi Siuzdak (sile), Dylan Kiss (dyki), Hugo Carlier (Huca), Xavier Bol (xbo), AH-Yussef, Sarah Bellefroid, omra-odoo, rajh-odoo, shag-odoo, guva-odoo, kdeb@odoo.com, Paul Stroobant, ravb-odoo, Mélanie, Youssef Bashandy, bary, Maxime de Neuville, suth-odoo, Abderraouf Ghrissi (abgh), kcv-odoo, adsh-odoo, Tanguy Quéguineur, Ritika Rathore, Chrysanthe (chgo), sami odoo, Louis (wil), asno-odoo, mash, luve-odoo, st-yes, Chris Duvivier, K Theja (kthe), kpt-odoo, kusi-odoo, Bastien (bvdn), bona-odoo, Krzysztof Magusiak (krma), Mahdi Alijani (malj), Ajit Singh, Akash Pandey, Harrison Hutton, nsirjacobs, lakhichand borse, mjvi-odoo, desh, Gurpreet Singh, dise-odoo, dhtr-odoo, Abdelouahab Laaroussi (abla) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/timesheet |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:25:53 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - digest - bus - web_tour - html_editor - portal - web_editor - http_routing - auth_signup - resource - phone_validation - resource_mail - hr_hourly_cost - analytic - uom - project - rating |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_delete_wizard_form |
Delete Employee | hr.employee.delete.wizard | form | New |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | xpath | Inherits hr_hourly_cost.view_employee_form |
hr_timesheet.timesheet_project_task_page |
hr_timesheet.timesheet_project_task_page | ir.ui.view | qweb | New |
hr_timesheet.timesheet_table |
hr_timesheet.timesheet_table | ir.ui.view | qweb | New |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_my_timesheet_search |
view.search.my.timesheet.menu | account.analytic.line | field | Inherits hr_timesheet_line_search |
hr_timesheet_line_portal_tree |
portal.hr_timesheet.account.analytic.line.list | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | xpath | Inherits analytic.view_account_analytic_line_filter |
hr_timesheet_line_tree |
account.analytic.line.list.hr_timesheet | account.analytic.line | list | New |
hr_timesheet_report_search |
timesheets.analysis.report.search | timesheets.analysis.report | search | Inherits hr_timesheet.hr_timesheet_line_search |
portal_layout |
Portal layout: timesheet menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_timesheet |
Timesheets | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_task |
Portal: My Task with Timesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
portal_my_task_allocated_hours_template |
portal_my_task_allocated_hours_template | ir.ui.view | qweb | New |
portal_my_timesheets |
My Timesheets | ir.ui.view | qweb | New |
portal_tasks_list_inherit |
Portal: My Tasks with Timesheets | ir.ui.view | qweb | Inherits project.portal_tasks_list |
portal_timesheet_table |
Portal Timesheet Table | ir.ui.view | qweb | New |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | xpath | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_project_view_tree_inherit_sale_project |
project.project.list.inherit.sale.timesheet | project.project | xpath | Inherits project.view_project |
project_sharing_inherit_project_task_view_form |
project.sharing.project.task.view.form.inherit | project.task | xpath | Inherits project.project_sharing_project_task_view_form |
project_sharing_kanban_inherit_project_task_view_kanban |
project.sharing.project.task.timesheet.kanban.inherited | project.task | templates | Inherits project.project_sharing_project_task_view_kanban |
project_task_view_graph |
project.task.view.graph.inherited | project.task | xpath | Inherits project.view_project_task_graph |
project_task_view_pivot |
project.task.view.pivot.inherited | project.task | xpath | Inherits project.view_project_task_pivot |
project_task_view_search |
project.task.view.search.inherit.sale.timesheet.enterprise | project.task | xpath | Inherits project.view_task_search_form_project_fsm_base |
project_update_view_kanban_inherit |
project.update.view.kanban.inherit | project.update | b | Inherits project.project_update_view_kanban |
project_update_view_search_inherit |
project.update.view.search.inherit | project.update | xpath | Inherits project.project_update_view_search |
report_project_task_timesheet |
report_project_task_timesheet | ir.ui.view | qweb | New |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
report_timesheet_project |
report_timesheet_project | ir.ui.view | qweb | New |
report_timesheet_task |
report_timesheet_task | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_report_subtask |
timesheet_report_subtask | ir.ui.view | qweb | New |
timesheet_view_form_portal_user |
account.analytic.line.form | account.analytic.line | xpath | Inherits hr_timesheet.timesheet_view_form_user |
timesheet_view_form_user |
account.analytic.line.list.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.list.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
timesheets_analysis_report_form |
timesheets.analysis.report.form | timesheets.analysis.report | form | New |
timesheets_analysis_report_graph_employee |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_graph_project |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_graph_task |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_list |
timesheets.analysis.report.list | timesheets.analysis.report | list | New |
timesheets_analysis_report_pivot_employee |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
timesheets_analysis_report_pivot_project |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
timesheets_analysis_report_pivot_task |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
view_employee_tree_inherit_timesheet |
hr.employee.list.timesheet | hr.employee | xpath | Inherits hr.view_employee_tree |
view_hr_timesheet_line_by_project |
account.analytic.line.graph.by.project | account.analytic.line | field | Inherits hr_timesheet.view_hr_timesheet_line_graph_all |
view_hr_timesheet_line_graph |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_all |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_by_employee |
account.analytic.line.graph.by.employee | account.analytic.line | field | Inherits hr_timesheet.view_hr_timesheet_line_graph_all |
view_hr_timesheet_line_graph_my |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_kanban_account_analytic_line_portal_user |
portal.account.analytic.line.kanban | account.analytic.line | xpath | Inherits hr_timesheet.view_kanban_account_analytic_line |
view_my_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | xpath | Inherits project.view_project_kanban |
view_project_project_filter_inherit_timesheet |
project.project.view.inherit.timesheet | project.project | filter | Inherits project.view_project_project_filter |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | xpath | Inherits project.view_task_project_user_graph |
view_task_project_user_pivot_inherited |
report.project.task.user.pivot.inherited | report.project.task.user | pivot | Inherits project.view_task_project_user_pivot |
view_task_tree2_inherited |
project.task.list.inherited | project.task | field | Inherits project.project_task_view_tree_main_base |
business_domain
Selection
ondelete={'timesheet': 'cascade'}
selection_add=[('timesheet', 'Timesheet')]
No public methods.
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
context={'active_test': False}
domain=_domain_employee_id
help="Define an 'hourly cost' on the employee to track the cost of their time."
index=True
args: 'hr.employee', 'Employee'
encoding_uom_id
Many2one → uom.uom
compute='_compute_encoding_uom_id'
export_string_translation=False
args: 'uom.uom'
job_title
Char
export_string_translation=False
related='employee_id.job_title'
manager_id
Many2one → hr.employee
related='employee_id.parent_id'
store=True
args: 'hr.employee', 'Manager'
message_partner_ids
Many2many → res.partner
compute='_compute_message_partner_ids'
search='_search_message_partner_ids'
args: 'res.partner'
milestone_id
Many2one → project.milestone
related='task_id.milestone_id'
args: 'project.milestone'
parent_task_id
Many2one → project.task
index='btree_not_null'
related='task_id.parent_id'
store=True
args: 'project.task'
partner_id
Many2one
compute='_compute_partner_id'
readonly=False
store=True
project_id
Many2one → project.project
compute='_compute_project_id'
domain=_domain_project_id
index=True
readonly=False
store=True
args: 'project.project', 'Project'
readonly_timesheet
Boolean
compute='_compute_readonly_timesheet'
compute_sudo=True
export_string_translation=False
task_id
Many2one → project.task
compute='_compute_task_id'
domain="[('allow_timesheets', '=', True), ('project_id', '=?', project_id)]"
index='btree_not_null'
readonly=False
store=True
args: 'project.task', 'Task'
user_id
Many2one
compute='_compute_user_id'
readonly=False
store=True
action_open_timesheet_view_portal(self)
create(self, vals_list)
default_get(self, field_list)
get_views(self, views, options=None)
write(self, values)
has_timesheet
Boolean
compute='_compute_has_timesheet'
export_string_translation=False
groups='hr.group_hr_user,base.group_system'
action_timesheet_from_employee(self)
action_unlink_wizard(self)
employee_ids
Many2many → hr.employee
context={'active_test': False}
export_string_translation=False
string='Employees'
args: 'hr.employee'
has_active_employee
Boolean
compute='_compute_has_active_employee'
export_string_translation=False
string='Has Active Employee'
has_timesheet
Boolean
compute='_compute_has_timesheet'
compute_sudo=True
export_string_translation=False
string='Has Timesheet'
action_archive(self)
action_confirm_delete(self)
action_open_timesheets(self)
No new fields.
Public methods (2)get_timesheet_uoms(self)
session_info(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
account_id
Many2one
domain="[\n '|', ('company_id', '=', False), ('company_id', '=?', company_id),\n ('partner_id', '=?', partner_id),\n ]"
allocated_hours
Float
string='Allocated Time'
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
default=True
readonly=False
store=True
args: 'Timesheets'
analytic_account_active
Boolean
export_string_translation=False
related='account_id.active'
args: 'Active Account'
effective_hours
Float
compute='_compute_remaining_hours'
compute_sudo=True
string='Time Spent'
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
export_string_translation=False
is_internal_project
Boolean
compute='_compute_is_internal_project'
export_string_translation=False
search='_search_is_internal_project'
is_project_overtime
Boolean
compute='_compute_remaining_hours'
compute_sudo=True
export_string_translation=False
search='_search_is_project_overtime'
args: 'Project in Overtime'
remaining_hours
Float
compute='_compute_remaining_hours'
compute_sudo=True
string='Time Remaining'
timesheet_encode_uom_id
Many2one → uom.uom
compute='_compute_timesheet_encode_uom_id'
export_string_translation=False
args: 'uom.uom'
timesheet_ids
One2many → account.analytic.line
export_string_translation=False
args: 'account.analytic.line', 'project_id', 'Associated Timesheets'
total_timesheet_time
Integer
compute='_compute_total_timesheet_time'
compute_sudo=True
export_string_translation=False
groups='hr_timesheet.group_hr_timesheet_user'
string='Total number of time (in the proper UoM) recorded in the project, rounded to the unit.'
action_project_timesheets(self)
action_view_tasks(self)
create(self, vals_list)
get_create_edit_project_ids(self)
write(self, values)
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
compute_sudo=True
export_string_translation=False
readonly=True
search='_search_allow_timesheets'
args: 'Allow timesheets'
analytic_account_active
Boolean
export_string_translation=False
related='project_id.analytic_account_active'
args: 'Active Analytic Account'
display_name
Char
help='Use these keywords in the title to set new tasks:\n\n 30h Allocate 30 hours to the task\n #tags Set tags on the task\n @user Assign the task to a user\n !\xa0Set the task a high priority\n\n Make sure to use the right format and order\xa0e.g. Improve the configuration screen 5h #feature #v16 @Mitchell !'
effective_hours
Float
compute='_compute_effective_hours'
compute_sudo=True
store=True
args: 'Time Spent'
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
default=<expr>
export_string_translation=False
overtime
Float
compute='_compute_progress_hours'
store=True
progress
Float
aggregator='avg'
compute='_compute_progress_hours'
store=True
args: 'Progress'
project_id
Many2one
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id), ('is_internal_project', '=', False)]"
remaining_hours
Float
compute='_compute_remaining_hours'
help='Number of allocated hours minus the number of hours spent.'
readonly=True
store=True
args: 'Time Remaining'
remaining_hours_percentage
Float
compute='_compute_remaining_hours_percentage'
export_string_translation=False
search='_search_remaining_hours_percentage'
subtask_effective_hours
Float
compute='_compute_subtask_effective_hours'
help='Time spent on the sub-tasks (and their own sub-tasks) of this task.'
recursive=True
store=True
args: 'Time Spent on Sub-tasks'
timesheet_ids
One2many → account.analytic.line
export_string_translation=False
args: 'account.analytic.line', 'task_id', 'Timesheets'
total_hours_spent
Float
compute='_compute_total_hours_spent'
help='Time spent on this task and its sub-tasks (and their own sub-tasks).'
store=True
args: 'Total Time Spent'
SELF_READABLE_FIELDS(self)
action_view_subtask_timesheet(self)
allocated_time
Integer
readonly=True
args: 'Allocated Time'
display_timesheet_stats
Boolean
compute='_compute_display_timesheet_stats'
export_string_translation=False
timesheet_percentage
Integer
compute='_compute_timesheet_percentage'
export_string_translation=False
timesheet_time
Integer
readonly=True
args: 'Timesheet Time'
uom_id
Many2one → uom.uom
export_string_translation=False
readonly=True
args: 'uom.uom', 'Unit Of Measure'
create(self, vals_list)
allocated_hours
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Allocated Time'
effective_hours
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Time Spent'
overtime
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
progress
Float
aggregator='avg'
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Progress'
remaining_hours
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Time Remaining'
remaining_hours_percentage
Float
groups='hr_timesheet.group_hr_timesheet_user'
readonly=True
args: 'Time Remaining Percentage'
subtask_effective_hours
Float
groups='hr_timesheet.group_hr_timesheet_user'
help='Time spent on the sub-tasks (and their own sub-tasks) of this task.'
args: 'Time Spent on Sub-Tasks'
total_hours_spent
Float
groups='hr_timesheet.group_hr_timesheet_user'
help='Time spent on this task, including its sub-tasks.'
args: 'Hours By Task (Including Subtasks)'
No public methods.
internal_project_id
Many2one → project.project
help='Default project value for timesheet generated from time off type.'
string='Internal Project'
args: 'project.project'
project_time_mode_id
Many2one → uom.uom
default=_default_project_time_mode_id
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
default=_default_timesheet_encode_uom_id
domain=<expr>
string='Timesheet Encoding Unit'
args: 'uom.uom'
create(self, values)
is_encode_uom_days
Boolean
compute='_compute_is_encode_uom_days'
export_string_translation=False
module_project_timesheet_holidays
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Time Off'
project_time_mode_id
Many2one → uom.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
readonly=False
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'uom.uom'
reminder_allow
Boolean
string='Approver Reminder'
reminder_user_allow
Boolean
string='Employee Reminder'
timesheet_encode_method
Selection
compute='_compute_timesheet_encode_method'
inverse='_inverse_timesheet_encode_method'
required=True
string='Encoding Method'
args: [('hours', 'Hours / Minutes'), ('days', 'Days / Half-Days')]
No public methods.
amount
Monetary
currency_field='currency_id'
readonly=True
args: 'Amount'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
string='Currency'
args: 'res.currency'
date
Date
readonly=True
args: 'Date'
department_id
Many2one → hr.department
readonly=True
string='Department'
args: 'hr.department'
manager_id
Many2one → hr.employee
readonly=True
args: 'hr.employee', 'Manager'
message_partner_ids
Many2many → res.partner
compute='_compute_message_partner_ids'
readonly=True
search='_search_message_partner_ids'
args: 'res.partner'
milestone_id
Many2one → project.milestone
related='task_id.milestone_id'
args: 'project.milestone'
name
Char
readonly=True
args: 'Description'
parent_task_id
Many2one → project.task
readonly=True
string='Parent Task'
args: 'project.task'
partner_id
Many2one → res.partner
readonly=True
string='Partner'
args: 'res.partner'
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
task_id
Many2one → project.task
readonly=True
string='Task'
args: 'project.task'
unit_amount
Float
readonly=True
args: 'Time Spent'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
timesheet_widget
Char
export_string_translation=False
args: 'Widget'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_delete_wizard_form |
Delete Employee | hr.employee.delete.wizard | form | New |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | xpath | Inherits hr_hourly_cost.view_employee_form |
hr_timesheet.timesheet_project_task_page |
hr_timesheet.timesheet_project_task_page | ir.ui.view | qweb | New |
hr_timesheet.timesheet_table |
hr_timesheet.timesheet_table | ir.ui.view | qweb | New |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_my_timesheet_search |
view.search.my.timesheet.menu | account.analytic.line | field | Inherits hr_timesheet_line_search |
hr_timesheet_line_portal_tree |
portal.hr_timesheet.account.analytic.line.tree | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | xpath | Inherits analytic.view_account_analytic_line_filter |
hr_timesheet_line_tree |
account.analytic.line.tree.hr_timesheet | account.analytic.line | tree | New |
hr_timesheet_report_search |
timesheets.analysis.report.search | timesheets.analysis.report | search | Inherits hr_timesheet.hr_timesheet_line_search |
portal_layout |
Portal layout: timesheet menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_timesheet |
Show Timesheets | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_task |
Portal: My Task with Timesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
portal_my_task_allocated_hours_template |
portal_my_task_allocated_hours_template | ir.ui.view | qweb | New |
portal_my_timesheets |
My Timesheets | ir.ui.view | qweb | New |
portal_tasks_list_inherit |
Portal: My Tasks with Timesheets | ir.ui.view | qweb | Inherits project.portal_tasks_list |
portal_timesheet_table |
Portal Timesheet Table | ir.ui.view | qweb | New |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | xpath | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_project_view_tree_inherit_sale_project |
project.project.tree.inherit.sale.timesheet | project.project | xpath | Inherits project.view_project |
project_sharing_inherit_project_task_view_form |
project.sharing.project.task.view.form.inherit | project.task | xpath | Inherits project.project_sharing_project_task_view_form |
project_sharing_kanban_inherit_project_task_view_kanban |
project.sharing.project.task.timesheet.kanban.inherited | project.task | templates | Inherits project.project_sharing_project_task_view_kanban |
project_task_view_graph |
project.task.view.graph.inherited | project.task | xpath | Inherits project.view_project_task_graph |
project_task_view_pivot |
project.task.view.pivot.inherited | project.task | xpath | Inherits project.view_project_task_pivot |
project_task_view_search |
project.task.view.search.inherit.sale.timesheet.enterprise | project.task | xpath | Inherits project.view_task_search_form_project_fsm_base |
project_update_view_kanban_inherit |
project.update.view.kanban.inherit | project.update | b | Inherits project.project_update_view_kanban |
project_update_view_search_inherit |
project.update.view.search.inherit | project.update | xpath | Inherits project.project_update_view_search |
report_project_task_timesheet |
report_project_task_timesheet | ir.ui.view | qweb | New |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
report_timesheet_project |
report_timesheet_project | ir.ui.view | qweb | New |
report_timesheet_task |
report_timesheet_task | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_view_form_portal_user |
account.analytic.line.form | account.analytic.line | xpath | Inherits hr_timesheet.timesheet_view_form_user |
timesheet_view_form_user |
account.analytic.line.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
timesheets_analysis_report_graph_employee |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_graph_project |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_graph_task |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_pivot_employee |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
timesheets_analysis_report_pivot_project |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
timesheets_analysis_report_pivot_task |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
view_employee_tree_inherit_timesheet |
hr.employee.tree.timesheet | hr.employee | xpath | Inherits hr.view_employee_tree |
view_hr_timesheet_line_graph |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_all |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_by_employee |
account.analytic.line.graph.by.employee | account.analytic.line | field | Inherits hr_timesheet.view_hr_timesheet_line_graph_all |
view_hr_timesheet_line_graph_my |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_kanban_account_analytic_line_portal_user |
portal.account.analytic.line.kanban | account.analytic.line | xpath | Inherits hr_timesheet.view_kanban_account_analytic_line |
view_my_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | field | Inherits project.view_project_kanban |
view_project_project_filter_inherit_timesheet |
project.project.view.inherit.timesheet | project.project | filter | Inherits project.view_project_project_filter |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | xpath | Inherits project.view_task_project_user_graph |
view_task_project_user_pivot_inherited |
report.project.task.user.pivot.inherited | report.project.task.user | xpath | Inherits project.view_task_project_user_pivot |
view_task_tree2_inherited |
project.task.tree.inherited | project.task | field | Inherits project.project_task_view_tree_main_base |
No new fields.
Public methods (0)No public methods.
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
context={'active_test': False}
domain=_domain_employee_id
help="Define an 'hourly cost' on the employee to track the cost of their time."
index=True
args: 'hr.employee', 'Employee'
encoding_uom_id
Many2one → uom.uom
compute='_compute_encoding_uom_id'
args: 'uom.uom'
job_title
Char
related='employee_id.job_title'
manager_id
Many2one → hr.employee
related='employee_id.parent_id'
store=True
args: 'hr.employee', 'Manager'
parent_task_id
Many2one → project.task
related='task_id.parent_id'
store=True
args: 'project.task'
partner_id
Many2one
compute='_compute_partner_id'
readonly=False
store=True
project_id
Many2one → project.project
compute='_compute_project_id'
domain=_domain_project_id
index=True
readonly=False
store=True
args: 'project.project', 'Project'
readonly_timesheet
Boolean
compute='_compute_readonly_timesheet'
compute_sudo=True
string='Readonly Timesheet'
task_id
Many2one → project.task
compute='_compute_task_id'
domain="[('allow_timesheets', '=', True), ('project_id', '=?', project_id)]"
index='btree_not_null'
readonly=False
store=True
args: 'project.task', 'Task'
user_id
Many2one
compute='_compute_user_id'
readonly=False
store=True
create(self, vals_list)
default_get(self, field_list)
get_views(self, views, options=None)
write(self, values)
has_timesheet
Boolean
compute='_compute_has_timesheet'
action_timesheet_from_employee(self)
action_unlink_wizard(self)
employee_ids
Many2many → hr.employee
context={'active_test': False}
string='Employees'
args: 'hr.employee'
has_active_employee
Boolean
compute='_compute_has_active_employee'
string='Has Active Employee'
has_timesheet
Boolean
compute='_compute_has_timesheet'
compute_sudo=True
string='Has Timesheet'
action_archive(self)
action_confirm_delete(self)
action_open_timesheets(self)
No new fields.
Public methods (2)get_timesheet_uoms(self)
session_info(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allocated_hours
Float
string='Allocated Hours'
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
default=True
readonly=False
store=True
args: 'Timesheets'
analytic_account_id
Many2one
domain="[\n '|', ('company_id', '=', False), ('company_id', '=?', company_id),\n ('partner_id', '=?', partner_id),\n ]"
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
is_internal_project
Boolean
compute='_compute_is_internal_project'
search='_search_is_internal_project'
is_project_overtime
Boolean
compute='_compute_remaining_hours'
compute_sudo=True
search='_search_is_project_overtime'
args: 'Project in Overtime'
remaining_hours
Float
compute='_compute_remaining_hours'
compute_sudo=True
string='Remaining Invoiced Time'
timesheet_encode_uom_id
Many2one → uom.uom
compute='_compute_timesheet_encode_uom_id'
args: 'uom.uom'
timesheet_ids
One2many → account.analytic.line
total_timesheet_time
Integer
compute='_compute_total_timesheet_time'
compute_sudo=True
groups='hr_timesheet.group_hr_timesheet_user'
help='Total number of time (in the proper UoM) recorded in the project, rounded to the unit.'
action_project_sharing(self)
action_project_timesheets(self)
action_view_tasks(self)
create(self, vals_list)
get_create_edit_project_ids(self)
write(self, values)
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
compute_sudo=True
help='Timesheets can be logged on this task.'
readonly=True
search='_search_allow_timesheets'
args: 'Allow timesheets'
analytic_account_active
Boolean
compute='_compute_analytic_account_active'
compute_sudo=True
recursive=True
args: 'Active Analytic Account'
display_name
Char
help='Use these keywords in the title to set new tasks:\n\n 30h Allocate 30 hours to the task\n #tags Set tags on the task\n @user Assign the task to a user\n !\xa0Set the task a high priority\n\n Make sure to use the right format and order\xa0e.g. Improve the configuration screen 5h #feature #v16 @Mitchell !'
effective_hours
Float
compute='_compute_effective_hours'
compute_sudo=True
store=True
args: 'Hours Spent'
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
default=<expr>
overtime
Float
compute='_compute_progress_hours'
store=True
progress
Float
compute='_compute_progress_hours'
group_operator='avg'
store=True
args: 'Progress'
project_id
Many2one
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id), ('is_internal_project', '=', False)]"
remaining_hours
Float
compute='_compute_remaining_hours'
help='Number of allocated hours minus the number of hours spent.'
readonly=True
store=True
args: 'Remaining Hours'
remaining_hours_percentage
Float
compute='_compute_remaining_hours_percentage'
search='_search_remaining_hours_percentage'
subtask_effective_hours
Float
compute='_compute_subtask_effective_hours'
help='Time spent on the sub-tasks (and their own sub-tasks) of this task.'
recursive=True
store=True
args: 'Hours Spent on Sub-Tasks'
timesheet_ids
One2many → account.analytic.line
total_hours_spent
Float
compute='_compute_total_hours_spent'
help='Time spent on this task and its sub-tasks (and their own sub-tasks).'
store=True
args: 'Total Hours'
SELF_READABLE_FIELDS(self)
action_view_subtask_timesheet(self)
allocated_time
Integer
readonly=True
args: 'Allocated Time'
display_timesheet_stats
Boolean
compute='_compute_display_timesheet_stats'
timesheet_percentage
Integer
compute='_compute_timesheet_percentage'
timesheet_time
Integer
readonly=True
args: 'Timesheet Time'
uom_id
Many2one → uom.uom
readonly=True
args: 'uom.uom', 'Unit Of Measure'
create(self, vals_list)
allocated_hours
Float
readonly=True
args: 'Allocated Time'
effective_hours
Float
readonly=True
args: 'Hours Spent'
overtime
Float
readonly=True
progress
Float
group_operator='avg'
readonly=True
args: 'Progress'
remaining_hours
Float
readonly=True
args: 'Remaining Hours'
remaining_hours_percentage
Float
readonly=True
args: 'Remaining Hours Percentage'
total_hours_spent
Float
help='Time spent on this task, including its sub-tasks.'
args: 'Hours By Task (Including Subtasks)'
No public methods.
internal_project_id
Many2one → project.project
help='Default project value for timesheet generated from time off type.'
string='Internal Project'
args: 'project.project'
project_time_mode_id
Many2one → uom.uom
default=_default_project_time_mode_id
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
default=_default_timesheet_encode_uom_id
domain=<expr>
string='Timesheet Encoding Unit'
args: 'uom.uom'
create(self, values)
is_encode_uom_days
Boolean
compute='_compute_is_encode_uom_days'
module_project_timesheet_holidays
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Time Off'
project_time_mode_id
Many2one → uom.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
readonly=False
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'uom.uom'
reminder_allow
Boolean
string='Approver Reminder'
reminder_user_allow
Boolean
string='Employee Reminder'
timesheet_encode_method
Selection
compute='_compute_timesheet_encode_method'
inverse='_inverse_timesheet_encode_method'
required=True
string='Encoding Method'
args: [('hours', 'Hours / Minutes'), ('days', 'Days / Half-Days')]
No public methods.
amount
Monetary
readonly=True
args: 'Amount'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
string='Currency'
args: 'res.currency'
date
Date
readonly=True
args: 'Date'
department_id
Many2one → hr.department
readonly=True
string='Department'
args: 'hr.department'
employee_id
Many2one → hr.employee
readonly=True
string='Employee'
args: 'hr.employee'
manager_id
Many2one → hr.employee
readonly=True
args: 'hr.employee', 'Manager'
name
Char
readonly=True
args: 'Description'
parent_task_id
Many2one → project.task
readonly=True
string='Parent Task'
args: 'project.task'
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
task_id
Many2one → project.task
readonly=True
string='Task'
args: 'project.task'
unit_amount
Float
readonly=True
args: 'Hours Spent'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
timesheet_widget
Char
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | xpath | Inherits hr_hourly_cost.view_employee_form |
hr_timesheet.timesheet_project_task_page |
hr_timesheet.timesheet_project_task_page | ir.ui.view | qweb | New |
hr_timesheet.timesheet_table |
hr_timesheet.timesheet_table | ir.ui.view | qweb | New |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_my_timesheet_search |
view.search.my.timesheet.menu | account.analytic.line | field | Inherits hr_timesheet_line_search |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | New |
hr_timesheet_line_tree |
account.analytic.line.tree.hr_timesheet | account.analytic.line | tree | New |
hr_timesheet_report_search |
timesheets.analysis.report.search | timesheets.analysis.report | search | New |
portal_layout |
Portal layout: timesheet menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_timesheet |
Show Timesheets | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_task |
Portal: My Task with Timesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
portal_my_task_planned_hours_template |
portal_my_task_planned_hours_template | ir.ui.view | qweb | New |
portal_my_timesheets |
My Timesheets | ir.ui.view | qweb | New |
portal_tasks_list_inherit |
Portal: My Tasks with Timesheets | ir.ui.view | qweb | Inherits project.portal_tasks_list |
portal_timesheet_table |
Portal Timesheet Table | ir.ui.view | qweb | New |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | xpath | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_project_view_tree_inherit_sale_project |
project.project.tree.inherit.sale.timesheet | project.project | xpath | Inherits project.view_project |
project_sharing_inherit_project_task_view_form |
project.sharing.project.task.view.form.inherit | project.task | xpath | Inherits project.project_sharing_project_task_view_form |
project_sharing_inherit_project_task_view_tree |
project.task.tree.inherited | project.task | field | Inherits project.project_sharing_project_task_view_tree |
project_sharing_kanban_inherit_project_task_view_kanban |
project.sharing.project.task.timesheet.kanban.inherited | project.task | templates | Inherits project.project_sharing_project_task_view_kanban |
project_sharing_project_task_view_search_inherit_timesheet |
project.sharing.project.task.view.search.inherit.timesheet | project.task | xpath | Inherits project.project_sharing_project_task_view_search |
project_task_view_graph |
project.task.view.graph.inherited | project.task | xpath | Inherits project.view_project_task_graph |
project_task_view_pivot |
project.task.view.pivot.inherited | project.task | xpath | Inherits project.view_project_task_pivot |
project_task_view_search |
project.task.view.search.inherit.sale.timesheet.enterprise | project.task | xpath | Inherits project.view_task_search_form |
project_update_view_search_inherit |
project.update.view.search.inherit | project.update | xpath | Inherits project.project_update_view_search |
rating_rating_view_search_project_inherited |
rating.rating.search.project.inherited | rating.rating | xpath | Inherits project.rating_rating_view_search_project |
report_project_task_timesheet |
report_project_task_timesheet | ir.ui.view | qweb | New |
report_project_task_user_view_search |
report.project.task.user.view.search.inherit.hr.timesheet | report.project.task.user | xpath | Inherits project.view_task_project_user_search |
report_project_task_user_view_tree |
report.project.task.user.view.tree.inherit.hr.timesheet | report.project.task.user | field | Inherits project.report_project_task_user_view_tree |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
report_timesheet_project |
report_timesheet_project | ir.ui.view | qweb | New |
report_timesheet_task |
report_timesheet_task | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_view_form_user |
account.analytic.line.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
timesheets_analysis_report_graph_employee |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_graph_project |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_graph_task |
timesheets.analysis.report.graph | timesheets.analysis.report | graph | New |
timesheets_analysis_report_pivot_employee |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
timesheets_analysis_report_pivot_project |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
timesheets_analysis_report_pivot_task |
timesheets.analysis.report.pivot | timesheets.analysis.report | pivot | New |
view_hr_timesheet_line_graph |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_all |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_by_employee |
account.analytic.line.graph.by.employee | account.analytic.line | field | Inherits hr_timesheet.view_hr_timesheet_line_graph_all |
view_hr_timesheet_line_graph_my |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_my_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | field | Inherits project.view_project_kanban |
view_project_project_filter_inherit_timesheet |
project.project.view.inherit.timesheet | project.project | filter | Inherits project.view_project_project_filter |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | xpath | Inherits project.view_task_project_user_graph |
view_task_project_user_pivot_inherited |
report.project.task.user.pivot.inherited | report.project.task.user | xpath | Inherits project.view_task_project_user_pivot |
view_task_search_form_hr_extended |
project.task.view.search.inherit.hr.timesheet | project.task | xpath | Inherits project.view_task_search_form_extended |
view_task_tree2_inherited |
project.task.tree.inherited | project.task | field | Inherits project.view_task_tree2 |
ancestor_task_id
Many2one → project.task
index='btree_not_null'
related='task_id.ancestor_id'
store=True
args: 'project.task'
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
context={'active_test': False}
domain=_domain_employee_id
help="Define an 'hourly cost' on the employee to track the cost of their time."
args: 'hr.employee', 'Employee'
encoding_uom_id
Many2one → uom.uom
compute='_compute_encoding_uom_id'
args: 'uom.uom'
job_title
Char
related='employee_id.job_title'
manager_id
Many2one → hr.employee
related='employee_id.parent_id'
store=True
args: 'hr.employee', 'Manager'
partner_id
Many2one
compute='_compute_partner_id'
readonly=False
store=True
project_id
Many2one → project.project
compute='_compute_project_id'
domain=_domain_project_id
index=True
readonly=False
store=True
args: 'project.project', 'Project'
task_id
Many2one → project.task
compute='_compute_task_id'
domain="[('allow_timesheets', '=', True), ('project_id', '=?', project_id)]"
index='btree_not_null'
readonly=False
store=True
args: 'project.task', 'Task'
user_id
Many2one
compute='_compute_user_id'
readonly=False
store=True
create(self, vals_list)
default_get(self, field_list)
name_get(self)
write(self, values)
No new fields.
Public methods (2)get_timesheet_uoms(self)
session_info(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allocated_hours
Float
string='Allocated Hours'
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
default=True
readonly=False
store=True
args: 'Timesheets'
analytic_account_id
Many2one
domain="[\n '|', ('company_id', '=', False), ('company_id', '=', company_id),\n ('partner_id', '=?', partner_id),\n ]"
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
is_internal_project
Boolean
compute='_compute_is_internal_project'
search='_search_is_internal_project'
is_project_overtime
Boolean
compute='_compute_remaining_hours'
compute_sudo=True
search='_search_is_project_overtime'
args: 'Project in Overtime'
remaining_hours
Float
compute='_compute_remaining_hours'
compute_sudo=True
string='Remaining Invoiced Time'
timesheet_count
Integer
compute='_compute_timesheet_count'
groups='hr_timesheet.group_hr_timesheet_user'
timesheet_encode_uom_id
Many2one → uom.uom
related='company_id.timesheet_encode_uom_id'
args: 'uom.uom'
timesheet_ids
One2many → account.analytic.line
total_timesheet_time
Integer
compute='_compute_total_timesheet_time'
groups='hr_timesheet.group_hr_timesheet_user'
help='Total number of time (in the proper UoM) recorded in the project, rounded to the unit.'
action_project_timesheets(self)
create(self, vals_list)
name_get(self)
write(self, values)
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
compute_sudo=True
help='Timesheets can be logged on this task.'
readonly=True
search='_search_allow_timesheets'
args: 'Allow timesheets'
analytic_account_active
Boolean
compute='_compute_analytic_account_active'
compute_sudo=True
args: 'Active Analytic Account'
effective_hours
Float
compute='_compute_effective_hours'
compute_sudo=True
store=True
args: 'Hours Spent'
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
default=<expr>
overtime
Float
compute='_compute_progress_hours'
store=True
progress
Float
compute='_compute_progress_hours'
group_operator='avg'
store=True
args: 'Progress'
remaining_hours
Float
compute='_compute_remaining_hours'
help='Number of allocated hours minus the number of hours spent.'
readonly=True
store=True
args: 'Remaining Hours'
remaining_hours_percentage
Float
compute='_compute_remaining_hours_percentage'
search='_search_remaining_hours_percentage'
subtask_effective_hours
Float
compute='_compute_subtask_effective_hours'
help='Time spent on the sub-tasks (and their own sub-tasks) of this task.'
recursive=True
store=True
args: 'Sub-tasks Hours Spent'
timesheet_ids
One2many → account.analytic.line
total_hours_spent
Float
compute='_compute_total_hours_spent'
help='Time spent on this task and its sub-tasks (and their own sub-tasks).'
store=True
args: 'Total Hours'
SELF_READABLE_FIELDS(self)
action_view_subtask_timesheet(self)
name_get(self)
write(self, values)
hours_effective
Float
readonly=True
args: 'Effective Hours'
hours_planned
Float
readonly=True
args: 'Planned Hours'
overtime
Float
readonly=True
progress
Float
group_operator='avg'
readonly=True
args: 'Progress'
remaining_hours
Float
readonly=True
args: 'Remaining Hours'
No public methods.
internal_project_id
Many2one → project.project
help='Default project value for timesheet generated from time off type.'
string='Internal Project'
args: 'project.project'
project_time_mode_id
Many2one → uom.uom
default=_default_project_time_mode_id
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
default=_default_timesheet_encode_uom_id
domain=<expr>
string='Timesheet Encoding Unit'
args: 'uom.uom'
create(self, values)
is_encode_uom_days
Boolean
compute='_compute_is_encode_uom_days'
module_project_timesheet_holidays
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Time Off'
module_project_timesheet_synchro
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Awesome Timesheet'
project_time_mode_id
Many2one → uom.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
readonly=False
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'uom.uom'
reminder_manager_allow
Boolean
string='Manager Reminder'
reminder_user_allow
Boolean
string='Employee Reminder'
timesheet_encode_uom_id
Many2one → uom.uom
readonly=False
related='company_id.timesheet_encode_uom_id'
string='Encoding Unit'
args: 'uom.uom'
No public methods.
amount
Monetary
readonly=True
args: 'Amount'
ancestor_task_id
Many2one → project.task
readonly=True
string='Ancestor Task'
args: 'project.task'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
string='Currency'
args: 'res.currency'
date
Date
readonly=True
args: 'Date'
department_id
Many2one → hr.department
readonly=True
string='Department'
args: 'hr.department'
employee_id
Many2one → hr.employee
readonly=True
string='Employee'
args: 'hr.employee'
manager_id
Many2one → hr.employee
readonly=True
args: 'hr.employee', 'Manager'
name
Char
readonly=True
args: 'Description'
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
task_id
Many2one → project.task
readonly=True
string='Task'
args: 'project.task'
unit_amount
Float
readonly=True
args: 'Hours Spent'
user_id
Many2one → res.users
readonly=True
string='User'
args: 'res.users'
init(self)
timesheet_widget
Char
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/15.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Services/Timesheets |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Goffin Simon, Aaron Bohy, GitHub, Barad Mahendra, Yannick Tivisse, Xavier-Do, Victor Feyens, Nasreddin (bon), Julien Mougenot, Anh Thao Pham (pta), Achraf (abz), Nasreddin Boulif (bon), Prakash Prajapati, nie, IEL, Mathieu Duckerts-Antoine, jbm-odoo, Arnaud Joset, William Braeckman, root, Kevin Baptiste, Stefan-Calin Crainiciuc (stcc), Xavier BOL (xbo), jdoutreloux, Mitali Patel, Adrien Peiffer, thcl-odoo, mafo-odoo, Audric Onockx (auon), Nicolas Bayet, Thibault Libioulle, Jinjiu Liu, Laurent Stukkens (LTU), dht-odoo, Pierrot (prro), Thomas Lefebvre (thle), alsh-odoo, Gurupreet Singh, Victor Piryns (pivi), Dominik Rubo, datonefaridze, Yash Vaishnav, Hamza (hisl), Giacomello Nathan (ngi), Levi Siuzdak (sile), Pratik Awasthi, Cedric Prieels (cpr), Hugo Carlier (Huca), Leonardo Pavan Rocha, Noe Antoine, rajh-odoo, Giang Phạm, Giang Pham, Nidhi Patel, shag-odoo |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/timesheet |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:25:26 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource - analytic - uom - project - portal - web_editor - http_routing - auth_signup - rating - digest |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | group | Inherits hr.view_employee_form |
hr_timesheet.timesheet_table |
hr_timesheet.timesheet_table | ir.ui.view | qweb | New |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_my_timesheet_search |
view.search.my.timesheet.menu | account.analytic.line | field | Inherits hr_timesheet_line_search |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | New |
hr_timesheet_line_tree |
account.analytic.line.tree.hr_timesheet | account.analytic.line | tree | New |
portal_layout |
Portal layout: timesheet menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_timesheet |
Show Timesheets | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_task |
Portal: My Task with Timesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
portal_my_task_planned_hours_template |
portal_my_task_planned_hours_template | ir.ui.view | qweb | New |
portal_my_timesheets |
My Timesheets | ir.ui.view | qweb | New |
portal_tasks_list_inherit |
Portal: My Tasks with Timesheets | ir.ui.view | qweb | Inherits project.portal_tasks_list |
portal_timesheet_table |
Portal Timesheet Table | ir.ui.view | qweb | New |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | xpath | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | field | Inherits project.project_project_view_form_simplified |
project_sharing_inherit_project_task_view_form |
project.sharing.project.task.view.form.inherit | project.task | xpath | Inherits project.project_sharing_project_task_view_form |
project_sharing_inherit_project_task_view_search |
project.sharing.inherit.project.task.view.search | project.task | xpath | Inherits project.project_sharing_project_task_view_search |
project_sharing_inherit_project_task_view_tree |
project.task.tree.inherited | project.task | field | Inherits project.project_sharing_project_task_view_tree |
project_sharing_kanban_inherit_project_task_view_kanban |
project.sharing.project.task.timesheet.kanban.inherited | project.task | templates | Inherits project.project_sharing_project_task_view_kanban |
project_task_create_timesheet_view_form |
project.task.create.timesheet.wizard.form | project.task.create.timesheet | form | New |
project_task_view_graph |
project.task.view.graph.inherited | project.task | xpath | Inherits project.view_project_task_graph |
project_task_view_pivot |
project.task.view.pivot.inherited | project.task | xpath | Inherits project.view_project_task_pivot |
project_task_view_search |
project.task.view.search.inherit.sale.timesheet.enterprise | project.task | xpath | Inherits project.view_task_search_form |
report_project_task_timesheet |
report_project_task_timesheet | ir.ui.view | qweb | New |
report_project_task_user_view_search |
report.project.task.user.view.search.inherit.hr.timesheet | report.project.task.user | xpath | Inherits project.view_task_project_user_search |
report_project_task_user_view_tree |
report.project.task.user.view.tree.inherit.hr.timesheet | report.project.task.user | field | Inherits project.report_project_task_user_view_tree |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
report_timesheet_project |
report_timesheet_project | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_view_form_user |
account.analytic.line.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
view_hr_timesheet_line_graph |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_all |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_graph_my |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_my_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | field | Inherits project.view_project_kanban |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | xpath | Inherits project.view_task_project_user_graph |
view_task_project_user_pivot_inherited |
report.project.task.user.pivot.inherited | report.project.task.user | xpath | Inherits project.view_task_project_user_pivot |
view_task_tree2_inherited |
project.task.tree.inherited | project.task | field | Inherits project.view_task_tree2 |
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
context={'active_test': False}
domain=_domain_employee_id
args: 'hr.employee', 'Employee'
encoding_uom_id
Many2one → uom.uom
compute='_compute_encoding_uom_id'
args: 'uom.uom'
partner_id
Many2one
compute='_compute_partner_id'
readonly=False
store=True
project_id
Many2one → project.project
compute='_compute_project_id'
domain=_domain_project_id
readonly=False
store=True
args: 'project.project', 'Project'
task_id
Many2one → project.task
compute='_compute_task_id'
domain="[('allow_timesheets', '=', True), ('project_id', '=?', project_id)]"
index=True
readonly=False
store=True
args: 'project.task', 'Task'
user_id
Many2one
compute='_compute_user_id'
readonly=False
store=True
create(self, vals_list)
default_get(self, field_list)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
name_get(self)
write(self, values)
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
args: 'res.currency'
timesheet_cost
Monetary
currency_field='currency_id'
default=0.0
groups='hr.group_hr_user'
args: 'Timesheet Cost'
No public methods.
No new fields.
Public methods (2)get_timesheet_uoms(self)
session_info(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
default=True
help='Enable timesheeting on the project.'
readonly=False
store=True
args: 'Timesheets'
analytic_account_id
Many2one
domain="[\n '|', ('company_id', '=', False), ('company_id', '=', company_id),\n ('partner_id', '=?', partner_id),\n ]"
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
has_planned_hours_tasks
Boolean
compute='_compute_remaining_hours'
compute_sudo=True
help="True if any of the project's task has a set planned hours"
is_internal_project
Boolean
compute='_compute_is_internal_project'
search='_search_is_internal_project'
remaining_hours
Float
compute='_compute_remaining_hours'
compute_sudo=True
string='Remaining Invoiced Time'
timesheet_count
Boolean
compute='_compute_timesheet_count'
timesheet_encode_uom_id
Many2one → uom.uom
related='company_id.timesheet_encode_uom_id'
args: 'uom.uom'
timesheet_ids
One2many → account.analytic.line
total_timesheet_time
Integer
compute='_compute_total_timesheet_time'
groups='hr_timesheet.group_hr_timesheet_user'
help='Total number of time (in the proper UoM) recorded in the project, rounded to the unit.'
action_show_timesheets_by_employee_invoice_type(self)
create(self, vals_list)
write(self, values)
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
compute_sudo=True
help='Timesheets can be logged on this task.'
readonly=True
search='_search_allow_timesheets'
args: 'Allow timesheets'
analytic_account_active
Boolean
compute='_compute_analytic_account_active'
compute_sudo=True
args: 'Active Analytic Account'
effective_hours
Float
compute='_compute_effective_hours'
compute_sudo=True
help='Time spent on this task, excluding its sub-tasks.'
store=True
args: 'Hours Spent'
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
default=<expr>
overtime
Float
compute='_compute_progress_hours'
store=True
progress
Float
compute='_compute_progress_hours'
group_operator='avg'
help='Display progress of current task.'
store=True
args: 'Progress'
remaining_hours
Float
compute='_compute_remaining_hours'
help='Total remaining time, can be re-estimated periodically by the assignee of the task.'
readonly=True
store=True
args: 'Remaining Hours'
subtask_effective_hours
Float
compute='_compute_subtask_effective_hours'
help='Time spent on the sub-tasks (and their own sub-tasks) of this task.'
recursive=True
store=True
args: 'Sub-tasks Hours Spent'
timesheet_ids
One2many → account.analytic.line
total_hours_spent
Float
compute='_compute_total_hours_spent'
help='Time spent on this task, including its sub-tasks.'
store=True
args: 'Total Hours'
SELF_READABLE_FIELDS(self)
action_view_subtask_timesheet(self)
name_get(self)
write(self, values)
description
Char
task_id
Many2one → project.task
default=<expr>
help='Task for which we are creating a sales order'
required=True
args: 'project.task', 'Task'
time_spent
Float
digits=(16, 2)
args: 'Time'
action_delete_timesheet(self)
save_timesheet(self)
hours_effective
Float
readonly=True
args: 'Effective Hours'
hours_planned
Float
readonly=True
args: 'Planned Hours'
progress
Float
group_operator='avg'
readonly=True
args: 'Progress'
remaining_hours
Float
readonly=True
args: 'Remaining Hours'
No public methods.
internal_project_id
Many2one → project.project
help='Default project value for timesheet generated from time off type.'
string='Internal Project'
args: 'project.project'
project_time_mode_id
Many2one → uom.uom
default=_default_project_time_mode_id
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
default=_default_timesheet_encode_uom_id
domain=<expr>
help='This will set the unit of measure used to encode timesheet. This will simply provide tools\n and widgets to help the encoding. All reporting will still be expressed in hours (default value).'
string='Timesheet Encoding Unit'
args: 'uom.uom'
create(self, values)
is_encode_uom_days
Boolean
compute='_compute_is_encode_uom_days'
module_project_timesheet_holidays
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Time Off'
module_project_timesheet_synchro
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Awesome Timesheet'
project_time_mode_id
Many2one → uom.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
readonly=False
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'uom.uom'
reminder_manager_allow
Boolean
help='If checked, send an email to all manager'
string='Manager Reminder'
reminder_user_allow
Boolean
help='If checked, send an email to all users who have not recorded their timesheet'
string='Employee Reminder'
timesheet_encode_uom_id
Many2one → uom.uom
help='This will set the unit of measure used to encode timesheet. This will simply provide tools\n and widgets to help the encoding. All reporting will still be expressed in hours (default value).'
readonly=False
related='company_id.timesheet_encode_uom_id'
string='Encoding Unit'
args: 'uom.uom'
No public methods.
timesheet_widget
Char
help='Widget used in the webclient when this unit is the one used to encode timesheets.'
args: 'Widget'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/14.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Services/Timesheets |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Lempereur, Thibault Francois, Aaron Bohy, Jeremy Kersten, GitHub, Damien Bouvy, Barad Mahendra, Yannick Tivisse, Jorge Pinna Puissant, Alexandre Kühn, Julien Castiaux, Xavier-Do, Victor Feyens, Nasreddin (bon), fw-bot, Anh Thao Pham (pta), Rémy Baranx (bar), Lucas Lefèvre, Nasreddin Boulif (bon), Prakash Prajapati, nie, IEL, Mathieu Duckerts-Antoine, jbm-odoo, Arnaud Joset, root, Kevin Baptiste, Xavier BOL (xbo), jdoutreloux, Adrien Peiffer, laa, thcl-odoo, mafo-odoo, Jinjiu Liu, Laurent Stukkens (LTU), Pierrot (prro), Thomas Lefebvre (thle), Gurupreet Singh, Siddarth Gajjar, Victor Piryns (pivi), Dominik Rubo, datonefaridze, Yash Vaishnav, Florian Bieringer, Hamza (hisl), Giacomello Nathan (ngi) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/timesheet-mobile-app |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:14:27 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource - analytic - uom - project - portal - web_editor - http_routing - auth_signup - rating - digest |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
timesheet assets | ir.ui.view | qweb | Inherits web.assets_backend |
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | xpath | Inherits hr.view_employee_form |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_my_timesheet_search |
view.search.my.timesheet.menu | account.analytic.line | field | Inherits hr_timesheet_line_search |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | New |
hr_timesheet_line_tree |
account.analytic.line.tree.hr_timesheet | account.analytic.line | tree | New |
portal_layout |
Portal layout: timesheet menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_timesheet |
Show Timesheets | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_task |
Portal: My Task with Timesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
portal_my_timesheets |
My Timesheets | ir.ui.view | qweb | New |
portal_subtask_timesheet_tables |
Portal Subtask Timesheet Tables | ir.ui.view | qweb | New |
portal_timesheet_table |
Portal Timesheet Table | ir.ui.view | qweb | New |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | div | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | field | Inherits project.project_project_view_form_simplified |
project_task_create_timesheet_view_form |
project.task.create.timesheet.wizard.form | project.task.create.timesheet | form | New |
project_task_view_search |
project.task.view.search.inherit.sale.timesheet.enterprise | project.task | xpath | Inherits project.view_task_search_form |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_view_form_user |
account.analytic.line.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
view_hr_timesheet_line_graph |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | field | Inherits project.view_project_kanban |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | graph | Inherits project.view_task_project_user_graph |
view_task_tree2_inherited |
project.task.tree.inherited | project.task | field | Inherits project.view_task_tree2 |
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
context={'active_test': False}
domain=_domain_employee_id
args: 'hr.employee', 'Employee'
encoding_uom_id
Many2one → uom.uom
compute='_compute_encoding_uom_id'
args: 'uom.uom'
partner_id
Many2one
compute='_compute_partner_id'
readonly=False
store=True
project_id
Many2one → project.project
compute='_compute_project_id'
domain=_domain_project_id
readonly=False
store=True
args: 'project.project', 'Project'
task_id
Many2one → project.task
compute='_compute_task_id'
domain="[('project_id.allow_timesheets', '=', True), ('project_id', '=?', project_id)]"
index=True
readonly=False
store=True
args: 'project.task', 'Task'
user_id
Many2one
compute='_compute_user_id'
readonly=False
store=True
create(self, vals_list)
default_get(self, field_list)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
write(self, values)
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
args: 'res.currency'
timesheet_cost
Monetary
currency_field='currency_id'
default=0.0
groups='hr.group_hr_user'
args: 'Timesheet Cost'
No public methods.
No new fields.
Public methods (1)session_info(self)
allow_timesheets
Boolean
compute='_compute_allow_timesheets'
default=True
help='Enable timesheeting on the project.'
readonly=False
store=True
args: 'Timesheets'
analytic_account_id
Many2one
domain="[\n '|', ('company_id', '=', False), ('company_id', '=', company_id),\n ('partner_id', '=?', partner_id),\n ]"
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
timesheet_encode_uom_id
Many2one → uom.uom
related='company_id.timesheet_encode_uom_id'
args: 'uom.uom'
timesheet_ids
One2many → account.analytic.line
total_timesheet_time
Integer
compute='_compute_total_timesheet_time'
help='Total number of time (in the proper UoM) recorded in the project, rounded to the unit.'
create(self, vals_list)
unlink(self)
write(self, values)
allow_timesheets
Boolean
help='Timesheets can be logged on this task.'
readonly=True
related='project_id.allow_timesheets'
args: 'Allow timesheets'
analytic_account_active
Boolean
compute='_compute_analytic_account_active'
args: 'Active Analytic Account'
effective_hours
Float
compute='_compute_effective_hours'
compute_sudo=True
help='Time spent on this task, excluding its sub-tasks.'
store=True
args: 'Hours Spent'
encode_uom_in_days
Boolean
compute='_compute_encode_uom_in_days'
default=<expr>
overtime
Float
compute='_compute_progress_hours'
store=True
progress
Float
compute='_compute_progress_hours'
group_operator='avg'
help='Display progress of current task.'
store=True
args: 'Progress'
remaining_hours
Float
compute='_compute_remaining_hours'
help='Total remaining time, can be re-estimated periodically by the assignee of the task.'
readonly=True
store=True
args: 'Remaining Hours'
subtask_effective_hours
Float
compute='_compute_subtask_effective_hours'
help='Time spent on the sub-tasks (and their own sub-tasks) of this task.'
store=True
args: 'Sub-tasks Hours Spent'
timesheet_ids
One2many → account.analytic.line
total_hours_spent
Float
compute='_compute_total_hours_spent'
help='Time spent on this task, including its sub-tasks.'
store=True
args: 'Total Hours'
action_view_subtask_timesheet(self)
name_get(self)
unlink(self)
write(self, values)
description
Char
task_id
Many2one → project.task
default=<expr>
help='Task for which we are creating a sales order'
required=True
args: 'project.task', 'Task'
time_spent
Float
digits=(16, 2)
args: 'Time'
save_timesheet(self)
hours_effective
Float
readonly=True
args: 'Effective Hours'
hours_planned
Float
readonly=True
args: 'Planned Hours'
progress
Float
group_operator='avg'
readonly=True
args: 'Progress'
remaining_hours
Float
readonly=True
args: 'Remaining Hours'
No public methods.
project_time_mode_id
Many2one → uom.uom
default=_default_project_time_mode_id
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
default=_default_timesheet_encode_uom_id
domain=<expr>
help='This will set the unit of measure used to encode timesheet. This will simply provide tools\n and widgets to help the encoding. All reporting will still be expressed in hours (default value).'
string='Timesheet Encoding Unit'
args: 'uom.uom'
create(self, values)
is_encode_uom_days
Boolean
compute='_compute_is_encode_uom_days'
module_project_timesheet_holidays
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Record Time Off'
module_project_timesheet_synchro
Boolean
compute='_compute_timesheet_modules'
readonly=False
store=True
args: 'Awesome Timesheet'
project_time_mode_id
Many2one → uom.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
readonly=False
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
help='This will set the unit of measure used to encode timesheet. This will simply provide tools\n and widgets to help the encoding. All reporting will still be expressed in hours (default value).'
readonly=False
related='company_id.timesheet_encode_uom_id'
string='Encoding Unit'
args: 'uom.uom'
timesheet_min_duration
Integer
config_parameter='hr_timesheet.timesheet_min_duration'
default=15
args: 'Minimal duration'
timesheet_rounding
Integer
config_parameter='hr_timesheet.timesheet_rounding'
default=15
args: 'Rounding up'
No public methods.
timesheet_widget
Char
help='Widget used in the webclient when this unit is the one used to encode timesheets.'
args: 'Widget'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/13.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Operations/Timesheets |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Thibault Francois, GitHub, Damien Bouvy, Barad Mahendra, Yannick Tivisse, Martin Geubelle, jem-odoo, Jorge Pinna Puissant, Alexandre Kühn, Adrian Torres, Aurélien Warnon, Priyanka Kakadiya, Xavier-Do, Victor Feyens, Sébastien Theys, Nasreddin (bon), fw-bot, Anh Thao Pham (pta), Lucas Lefèvre, Prakash Prajapati, IEL, Jinal Patel, Kevin Baptiste, Geoffroy Larue, Adrien Peiffer |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/timesheet-mobile-app |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:06:41 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource - mail_bot - analytic - uom - project - portal - web_editor - http_routing - auth_signup - rating - digest |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
timesheet assets | ir.ui.view | qweb | Inherits web.assets_backend |
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | xpath | Inherits hr.view_employee_form |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | New |
hr_timesheet_line_tree |
account.analytic.line.tree.hr_timesheet | account.analytic.line | tree | New |
portal_layout |
Portal layout: timesheet menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_timesheet |
Portal My Home : timesheets entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_task |
Portal: My Task with Timesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
portal_my_timesheets |
My Timesheets | ir.ui.view | qweb | New |
portal_timesheet_table |
Portal Timesheet Table | ir.ui.view | qweb | New |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | div | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | field | Inherits project.project_project_view_form_simplified |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_view_form_user |
account.analytic.line.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
view_hr_timesheet_line_graph |
account.analytic.line.graph | account.analytic.line | graph | New |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | field | Inherits project.view_project_kanban |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | graph | Inherits project.view_task_project_user_graph |
view_task_tree2_inherited |
project.task.tree.inherited | project.task | field | Inherits project.view_task_tree2 |
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
encoding_uom_id
Many2one → uom.uom
compute='_compute_encoding_uom_id'
args: 'uom.uom'
project_id
Many2one → project.project
domain=[('allow_timesheets', '=', True)]
args: 'project.project', 'Project'
task_id
Many2one → project.task
domain="[('company_id', '=', company_id)]"
index=True
args: 'project.task', 'Task'
create(self, values)
default_get(self, field_list)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
onchange_project_id(self)
write(self, values)
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
args: 'res.currency'
timesheet_cost
Monetary
currency_field='currency_id'
default=0.0
groups='hr.group_hr_user'
args: 'Timesheet Cost'
No public methods.
No new fields.
Public methods (1)session_info(self)
allow_timesheets
Boolean
default=True
help='Enable timesheeting on the project.'
args: 'Timesheets'
create(self, values)
name_create(self, name)
unlink(self)
write(self, values)
allow_timesheets
Boolean
help='Timesheets can be logged on this task.'
readonly=True
related='project_id.allow_timesheets'
args: 'Allow timesheets'
analytic_account_active
Boolean
readonly=True
related='project_id.analytic_account_id.active'
args: 'Analytic Account'
effective_hours
Float
compute='_compute_effective_hours'
compute_sudo=True
help='Computed using the sum of the task work done.'
store=True
args: 'Hours Spent'
progress
Float
compute='_compute_progress_hours'
group_operator='avg'
help='Display progress of current task.'
store=True
args: 'Progress'
remaining_hours
Float
compute='_compute_remaining_hours'
help='Total remaining time, can be re-estimated periodically by the assignee of the task.'
readonly=True
store=True
args: 'Remaining Hours'
subtask_effective_hours
Float
compute='_compute_subtask_effective_hours'
help='Sum of actually spent hours on the subtask(s)'
store=True
args: 'Sub-tasks Hours Spent'
timesheet_ids
One2many → account.analytic.line
total_hours_spent
Float
compute='_compute_total_hours_spent'
help='Computed as: Time Spent + Sub-tasks Hours.'
store=True
args: 'Total Hours'
write(self, values)
hours_effective
Float
readonly=True
args: 'Effective Hours'
hours_planned
Float
readonly=True
args: 'Planned Hours'
progress
Float
group_operator='avg'
readonly=True
args: 'Progress'
remaining_hours
Float
readonly=True
args: 'Remaining Hours'
No public methods.
project_time_mode_id
Many2one → uom.uom
default=_default_project_time_mode_id
domain=[('measure_type', '=', 'working_time')]
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
default=_default_timesheet_encode_uom_id
domain=[('measure_type', '=', 'working_time')]
help='This will set the unit of measure used to encode timesheet. This will simply provide tools\n and widgets to help the encoding. All reporting will still be expressed in hours (default value).'
required=True
string='Timesheet Encoding Unit'
args: 'uom.uom'
No public methods.
module_project_timesheet_holidays
Boolean
module_project_timesheet_synchro
Boolean
project_time_mode_id
Many2one → uom.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
readonly=False
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
help='This will set the unit of measure used to encode timesheet. This will simply provide tools\n and widgets to help the encoding. All reporting will still be expressed in hours (default value).'
readonly=False
related='company_id.timesheet_encode_uom_id'
string='Encoding Unit'
args: 'uom.uom'
No public methods.
timesheet_widget
Char
help='Widget used in the webclient when this unit is the one used to encode timesheets.'
args: 'Widget'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/12.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Géry Debongnie, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Toufik Benjaa, jem-odoo, Adrien Dieudonne, Christophe Monniez, Jorge Pinna Puissant, Toufik Ben Jaa, Adrian Torres, XavierDo, Xavier-Do, jvm-odoo, Sébastien Theys, LofbergValentin, Naglis Jonaitis |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/timesheet-mobile-app |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:57:00 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource - analytic - decimal_precision - uom - project - portal - http_routing - rating - digest |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_view_form_inherit |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
assets_backend |
timesheet assets | ir.ui.view | qweb | Inherits web.assets_backend |
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | xpath | Inherits hr.view_employee_form |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | New |
hr_timesheet_line_tree |
account.analytic.line.tree.hr_timesheet | account.analytic.line | tree | New |
portal_my_task |
Portal: My Task with Timesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | button | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | field | Inherits project.project_project_view_form_simplified |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_view_form_user |
account.analytic.line.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | field | Inherits project.view_project_kanban |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | graph | Inherits project.view_task_project_user_graph |
view_task_tree2_inherited |
project.task.tree.inherited | project.task | field | Inherits project.view_task_tree2 |
company_uom_id
Many2one → uom.uom
readonly=False
related='company_id.project_time_mode_id'
string='Company UOM'
args: 'uom.uom'
project_count
Integer
compute='_compute_project_count'
args: 'Project Count'
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'analytic_account_id'
action_view_projects(self)
unlink(self)
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
project_id
Many2one → project.project
domain=[('allow_timesheets', '=', True)]
args: 'project.project', 'Project'
task_id
Many2one → project.task
index=True
args: 'project.task', 'Task'
create(self, values)
default_get(self, field_list)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
onchange_project_id(self)
write(self, values)
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
args: 'res.currency'
timesheet_cost
Monetary
currency_field='currency_id'
default=0.0
args: 'Timesheet Cost'
No public methods.
No new fields.
Public methods (1)session_info(self)
allow_timesheets
Boolean
default=True
args: 'Allow timesheets'
analytic_account_id
Many2one → account.analytic.account
copy=False
help='Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.'
ondelete='set null'
string='Analytic Account'
args: 'account.analytic.account'
create(self, values)
name_create(self, name)
unlink(self)
write(self, values)
allow_timesheets
Boolean
help='Timesheets can be logged on this task.'
readonly=True
related='project_id.allow_timesheets'
args: 'Allow timesheets'
analytic_account_active
Boolean
readonly=True
related='project_id.analytic_account_id.active'
args: 'Analytic Account'
effective_hours
Float
compute='_compute_effective_hours'
compute_sudo=True
help='Computed using the sum of the task work done.'
store=True
args: 'Hours Spent'
progress
Float
compute='_compute_progress_hours'
group_operator='avg'
help='Display progress of current task.'
store=True
args: 'Progress'
remaining_hours
Float
compute='_compute_remaining_hours'
help='Total remaining time, can be re-estimated periodically by the assignee of the task.'
readonly=True
store=True
args: 'Remaining Hours'
subtask_effective_hours
Float
compute='_compute_subtask_effective_hours'
help='Sum of actually spent hours on the subtask(s)'
oldname='children_hours'
store=True
args: 'Sub-tasks Hours Spent'
timesheet_ids
One2many → account.analytic.line
total_hours_spent
Float
compute='_compute_total_hours_spent'
help='Computed as: Time Spent + Sub-tasks Hours.'
store=True
args: 'Total Hours'
write(self, values)
hours_effective
Float
readonly=True
args: 'Effective Hours'
hours_planned
Float
readonly=True
args: 'Planned Hours'
progress
Float
group_operator='avg'
readonly=True
args: 'Progress'
remaining_hours
Float
readonly=True
args: 'Remaining Hours'
No public methods.
project_time_mode_id
Many2one → uom.uom
default=_default_project_time_mode_id
domain=[('measure_type', '=', 'time')]
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
default=_default_timesheet_encode_uom_id
domain=[('measure_type', '=', 'time')]
help='This will set the unit of measure used to encode timesheet. This will simply provide tools\n and widgets to help the encoding. All reporting will still be expressed in hours (default value).'
required=True
string='Timesheet Encoding Unit'
args: 'uom.uom'
No public methods.
module_project_timesheet_holidays
Boolean
module_project_timesheet_synchro
Boolean
project_time_mode_id
Many2one → uom.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
readonly=False
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'uom.uom'
timesheet_encode_uom_id
Many2one → uom.uom
help='This will set the unit of measure used to encode timesheet. This will simply provide tools\n and widgets to help the encoding. All reporting will still be expressed in hours (default value).'
readonly=False
related='company_id.timesheet_encode_uom_id'
string='Encoding Unit'
args: 'uom.uom'
No public methods.
timesheet_widget
Char
help='Widget used in the webclient when this unit is the one used to encode timesheets.'
args: 'Widget'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/11.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, Richard Mathot, GitHub, Lucas Perais (lpe), Yannick Tivisse, Odoo Online, Laurent Smet, DVE, jem-odoo, len-odoo, Jorge Pinna Puissant, Denis Vermylen, Florimond Husquinet (fhu) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/employees |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:53:42 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - hr - base_setup - base - web - bus - web_tour - resource - project - product - decimal_precision - analytic - portal - http_routing - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_employee_view_form_inherit_timesheet |
hr.employee.form.timesheet | hr.employee | xpath | Inherits hr.view_employee_form |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | New |
hr_timesheet_line_tree |
account.analytic.line.tree.hr_timesheet | account.analytic.line | tree | New |
portal_my_task |
Portal: My Task with imesheets | ir.ui.view | qweb | Inherits project.portal_my_task |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | button | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | field | Inherits project.project_project_view_form_simplified |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.hr.timesheet | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
timesheet_view_calendar |
account.analytic.line.calendar | account.analytic.line | calendar | New |
timesheet_view_form_user |
account.analytic.line.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet.hr_timesheet_line_form |
timesheet_view_tree_user |
account.analytic.line.view.tree.with.user | account.analytic.line | xpath | Inherits hr_timesheet_line_tree |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_kanban_account_analytic_line |
account.analytic.line.kanban | account.analytic.line | kanban | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | field | Inherits project.view_project_kanban |
view_task_form2_inherited |
project.task.form.inherited | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | graph | Inherits project.view_task_project_user_graph |
view_task_tree2_inherited |
project.task.tree.inherited | project.task | field | Inherits project.view_task_tree2 |
department_id
Many2one → hr.department
compute='_compute_department_id'
compute_sudo=True
store=True
args: 'hr.department', 'Department'
employee_id
Many2one → hr.employee
project_id
Many2one → project.project
domain=[('allow_timesheets', '=', True)]
args: 'project.project', 'Project'
task_id
Many2one → project.task
index=True
args: 'project.task', 'Task'
create(self, vals)
default_get(self, field_list)
onchange_project_id(self)
write(self, vals)
allow_timesheets
Boolean
default=True
args: 'Allow timesheets'
No public methods.
children_hours
Float
compute='_hours_get'
help='Sum of the planned hours of all sub-tasks (when a sub-task is closed or its spent hours exceed its planned hours, spent hours are counted instead)'
store=True
string='Sub-tasks Hours'
delay_hours
Float
compute='_hours_get'
help='Computed as difference between planned hours by the project manager and the total hours of the task.'
store=True
string='Delay Hours'
effective_hours
Float
compute='_hours_get'
help='Computed using the sum of the task work done.'
store=True
string='Hours Spent'
progress
Float
compute='_hours_get'
group_operator='avg'
store=True
string='Progress'
remaining_hours
Float
compute='_hours_get'
help='Total remaining time, can be re-estimated periodically by the assignee of the task.'
store=True
string='Remaining Hours'
timesheet_ids
One2many → account.analytic.line
total_hours
Float
compute='_hours_get'
help='Computed as: Time Spent + Remaining Time.'
store=True
string='Total'
total_hours_spent
Float
compute='_hours_get'
help='Computed as: Time Spent + Sub-tasks Hours.'
store=True
string='Total Hours'
create(self, vals)
write(self, values)
hours_delay
Float
readonly=True
args: 'Avg. Plan.-Eff.'
hours_effective
Float
readonly=True
args: 'Effective Hours'
hours_planned
Float
readonly=True
args: 'Planned Hours'
progress
Float
group_operator='avg'
readonly=True
args: 'Progress'
remaining_hours
Float
readonly=True
args: 'Remaining Hours'
total_hours
Float
readonly=True
args: 'Total Hours'
No public methods.
module_project_timesheet_holidays
Boolean
module_project_timesheet_synchro
Boolean
module_sale_timesheet
Boolean
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/10.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Julien Legros, Thibault Francois, qdp-odoo, GitHub, Damien Bouvy, Yannick Tivisse, Denis Vermylen (dve), Tanguy Charlier |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/employees |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:50:47 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - web_tour - report - analytic - web_planner - hr - resource - project |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_timesheet_line_form |
account.analytic.line.form.inherit.hr_timesheet | account.analytic.line | field | Inherits analytic.view_account_analytic_line_form |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | New |
hr_timesheet_line_tree |
account.analytic.line.tree.hr_timesheet | account.analytic.line | tree | New |
project_invoice_form |
Inherit project form : Invoicing Data | project.project | button | Inherits project.edit_project |
project_project_view_form_simplified_inherit_timesheet |
project.project.view.form.simplified.inherit.timesheet | project.project | group | Inherits project.project_project_view_form_simplified |
report_timesheet |
report_timesheet | ir.ui.view | qweb | New |
view_hr_timesheet_line_pivot |
account.analytic.line.pivot | account.analytic.line | pivot | New |
view_project_kanban_inherited |
project.project.timesheet.kanban.inherited | project.project | field | Inherits project.view_project_kanban |
view_task_form2_inherited |
project.task.form.inherited | project.task | button | Inherits project.view_task_form2 |
view_task_kanban_inherited_progress |
project.task.timesheet.kanban.inherited.progress | project.task | templates | Inherits project.view_task_kanban |
view_task_project_user_graph_inherited |
report.project.task.user.graph.inherited | report.project.task.user | graph | Inherits project.view_task_project_user_graph |
view_task_tree2_inherited |
project.task.tree.inherited | project.task | field | Inherits project.view_task_tree2 |
department_id
Many2one → hr.department
compute='_compute_department_id'
store=True
args: 'hr.department', 'Department'
project_id
Many2one → project.project
domain=[('allow_timesheets', '=', True)]
args: 'project.project', 'Project'
task_id
Many2one → project.task
create(self, vals)
onchange_project_id(self)
write(self, vals)
allow_timesheets
Boolean
default=True
args: 'Allow timesheets'
subtask_project_id
Many2one → project.project
help='Choosing a sub-tasks project will both enable sub-tasks and set their default project (possibly the project itself)'
ondelete='restrict'
string='Sub-task Project'
args: 'project.project'
No public methods.
child_ids
One2many → project.task
string='Sub-tasks'
args: 'project.task', 'parent_id'
children_hours
Float
compute='_hours_get'
help='Sum of the planned hours of all sub-tasks (when a sub-task is closed or its spent hours exceed its planned hours, spent hours are counted instead)'
store=True
string='Sub-tasks Hours'
delay_hours
Float
compute='_hours_get'
help='Computed as difference between planned hours by the project manager and the total hours of the task.'
store=True
string='Delay Hours'
effective_hours
Float
compute='_hours_get'
help='Computed using the sum of the task work done.'
store=True
string='Hours Spent'
parent_id
Many2one → project.task
string='Parent Task'
args: 'project.task'
progress
Float
compute='_hours_get'
group_operator='avg'
store=True
string='Working Time Recorded'
remaining_hours
Float
compute='_hours_get'
help='Total remaining time, can be re-estimated periodically by the assignee of the task.'
store=True
string='Remaining Hours'
subtask_count
Integer
compute='_get_subtask_count'
string='Sub-task count'
type='integer'
subtask_project_id
Many2one → project.project
readonly=True
related='project_id.subtask_project_id'
string='Sub-task Project'
args: 'project.project'
timesheet_ids
One2many → account.analytic.line
total_hours
Float
compute='_hours_get'
help='Computed as: Time Spent + Remaining Time.'
store=True
string='Total'
total_hours_spent
Float
compute='_hours_get'
help='Computed as: Time Spent + Sub-tasks Hours.'
store=True
string='Total Hours'
No public methods.
hours_delay
Float
readonly=True
args: 'Avg. Plan.-Eff.'
hours_effective
Float
readonly=True
args: 'Effective Hours'
hours_planned
Float
readonly=True
args: 'Planned Hours'
progress
Float
group_operator='avg'
readonly=True
args: 'Progress'
remaining_hours
Float
readonly=True
args: 'Remaining Hours'
total_hours
Float
readonly=True
args: 'Total Hours'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/9.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Josse Colpaert, Christophe Simonis, Nicolas Martinelli, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Martin Geubelle, odoo-tac |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/employees |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:29 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - report - analytic - web_tip - web_planner - hr - resource - hr_attendance |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
A project is an analytic account and the time spent on a project generates costs on
the analytic account.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | data | Inherits hr.hr_department_view_kanban |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | New |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | New |
hr_timesheet_line_tree |
account.analytic.line.tree | account.analytic.line | tree | New |
view_hr_timesheet_report_graph |
hr.timesheet.report.graph | hr.timesheet.report | graph | New |
view_hr_timesheet_report_pivot |
hr.timesheet.report.pivot | hr.timesheet.report | pivot | New |
view_hr_timesheet_report_search |
hr.timesheet.report.search | hr.timesheet.report | search | New |
use_timesheets
Boolean
deprecated=True
help='Check this field if this project manages timesheets'
args: 'Timesheets'
No public methods.
is_timesheet
Boolean
string='Is a Timesheet'
No public methods.
account_id
Many2one → account.analytic.account
readonly=True
args: 'account.analytic.account', 'Analytic Account'
company_id
Many2one → res.company
readonly=True
args: 'res.company', 'Company'
cost
Float
digits=dp.get_precision('Account')
readonly=True
args: 'Cost'
date
Date
readonly=True
args: 'Date'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
quantity
Float
readonly=True
args: 'Time'
user_id
Many2one → res.users
readonly=True
args: 'res.users', 'User'
init(self, cr)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/8.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Atul Patel (OpenERP), Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Foram Katharotiya (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Launchpad Translations on behalf of openerp, Denis Ledoux, Fabien Meghazi, Christophe Simonis, Xavier Morel, Goffin Simon, Cedric Snauwaert, Simon Lejeune, Vishmita, Amit Bhavsar (Open ERP), Nimesh Contractor (OpenERP), Richard Mathot, Géry Debongnie, Aaron Bohy, Vishmita Jadeja (openerp), Chandni Machchhar (OpenERP Trainee), Richard Mathot (OpenERP), ged-odoo, Gery Debongnie, Randhir Mayatra rma-openerp, sgo@tinyerp.com, Darshan Kalola (OpenERP), Darshan Kalola, Chirag Dodiya (OpenERP), Erwin van der Ploeg, ssh-odoo, Cécile Tonglet |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/employees |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:45:38 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - report - analytic - board - edi - email_template - hr - resource - hr_attendance |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
A project is an analytic account and the time spent on a project generates costs on
the analytic account.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_timesheet_form |
account.analytic.account.invoice.form | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
hr_timesheet_employee_extd_form |
hr.timesheet.employee.extd_form | hr.employee | xpath | Inherits hr.view_employee_form |
hr_timesheet_line_form |
hr.analytic.timesheet.form | hr.analytic.timesheet | form | New |
hr_timesheet_line_search |
hr.analytic.timesheet.search | hr.analytic.timesheet | search | New |
hr_timesheet_line_tree |
hr.analytic.timesheet.tree | hr.analytic.timesheet | tree | New |
view_hr_timesheet_report_graph |
hr.timesheet.report.graph | hr.timesheet.report | graph | New |
view_hr_timesheet_report_search |
hr.timesheet.report.search | hr.timesheet.report | search | New |
view_hr_timesheet_sign_in |
hr.sign.in.project.form | hr.sign.in.project | form | New |
view_hr_timesheet_sign_in_message |
hr.sign.in.project.message.form | hr.sign.in.project | form | New |
view_hr_timesheet_sign_out |
hr.sign.out.project.form | hr.sign.out.project | form | New |
No models found for this module.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/7.0/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Jagdish Panchal (Open ERP), Twinkle Christian (OpenERP), Cecile Tonglet, Rucha (Open ERP), Atul Patel (OpenERP), Randhir Mayatra (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Pinakin Nayi (OpenERP), Harry (OpenERP), Stéphane Bidoul, Antonin Bourguignon, pankita shah (Open ERP), Martin Trigaux, Ajay Chauhan (OpenERP), Purnendu Singh (OpenERP), Fabien Pinckaers, Meera Trambadia (OpenERP), Saurang Suthar, Olivier Dony, Twinkle (OpenERP), Divyesh Makwana (Open ERP), Tejas Tank, Vo Minh Thu, Hardik, pso (OpenERP), Sbh (Openerp), Amit Patel (OpenERP), Launchpad Translations on behalf of openerp, vta vta@openerp.com, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Nimesh (Open ERP), Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Sanjay Gohel (Open ERP), Alexis de Lattre, ggh-openerp, Xavier ALT, Denis Ledoux dle@openerp.com, dle@openerp.com, Cedric Snauwaert, Amit Patel, Somesh Khare (OpenERP), csn-openerp, Amit (OpenERP) |
| WEBSITE | |
| WEBSITE | http://www.openerp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:43:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - process - decimal_precision - analytic - board - edi - email_template - hr - resource - hr_attendance |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
A project is an analytic account and the time spent on a project generates costs on
the analytic account.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you to set
up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_timesheet_form |
account.analytic.account.invoice.form | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
hr_timesheet_employee_extd_form |
hr.timesheet.employee.extd_form | hr.employee | xpath | Inherits hr.view_employee_form |
hr_timesheet_line_form |
hr.analytic.timesheet.form | hr.analytic.timesheet | form | New |
hr_timesheet_line_search |
hr.analytic.timesheet.search | hr.analytic.timesheet | search | New |
hr_timesheet_line_tree |
hr.analytic.timesheet.tree | hr.analytic.timesheet | tree | New |
view_hr_timesheet_employee |
hr.analytical.timesheet.employee.form | hr.analytical.timesheet.employee | form | New |
view_hr_timesheet_sign_in |
hr.sign.in.project.form | hr.sign.in.project | form | New |
view_hr_timesheet_sign_in_message |
hr.sign.in.project.message.form | hr.sign.in.project | form | New |
view_hr_timesheet_sign_out |
hr.sign.out.project.form | hr.sign.out.project | form | New |
view_hr_timesheet_users |
hr.analytical.timesheet.users.form | hr.analytical.timesheet.users | form | New |
No models found for this module.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/6.1/hr_timesheet |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Human Resources |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Jagdish Panchal (Open ERP), Rucha (Open ERP), Stephane Wirtel, Numerigraphe - Lionel Sausin, Fabien Pinckaers, Antony Lesuisse, Meera Trambadia (OpenERP), Olivier Dony, Thibault Delavallée, Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Kuldeep Joshi (OpenERP), vro, niv-openerp, Ujjvala Collins (OpenERP), Xavier Morel, Chris Biersbach, Carlos Vásquez, ksa (Open ERP), Els Van Vossel, Israel Fermin Montilla, mayur maheshwari (Open ERP), Hardik Ansodariy (OpenERP), rch-openerp, Bharat (OpenERP), ARA (OpenERP), aag (OpenERP), ron@tinyerp.com, mtr, fp, Amit Parmar (OpenERP), Hemendra Paregi (Open ERP) |
| WEBSITE | |
| WEBSITE | http://www.openerp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:41:35 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - product - process - decimal_precision - analytic - board - edi - email_template - base_tools - hr - resource - hr_attendance |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module implements a timesheet system.
==========================================
Each employee can encode and track their time spent on the different projects.
A project is an analytic account and the time spent on a project generates costs on
the analytic account.
Lots of reporting on time and employee tracking are provided.
It is completely integrated with the cost accounting module. It allows you
to set up a management by affair.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
hr_timesheet_employee_extd_form |
hr.timesheet.employee.extd_form | hr.employee | page | Inherits hr.view_employee_form |
hr_timesheet_line_form |
hr.analytic.timesheet.form | hr.analytic.timesheet | form | New |
hr_timesheet_line_search |
hr.analytic.timesheet.search | hr.analytic.timesheet | search | New |
hr_timesheet_line_tree |
hr.analytic.timesheet.tree | hr.analytic.timesheet | tree | New |
view_hr_timesheet_employee |
hr.analytical.timesheet.employee.form | hr.analytical.timesheet.employee | form | New |
view_hr_timesheet_my |
hr.analytical.timesheet.my.form | hr.analytical.timesheet.employee | form | New |
view_hr_timesheet_sign_in |
hr.sign.in.project.form | hr.sign.in.project | form | New |
view_hr_timesheet_sign_in_message |
hr.sign.in.project.message.form | hr.sign.in.project | form | New |
view_hr_timesheet_sign_out |
hr.sign.out.project.form | hr.sign.out.project | form | New |
view_hr_timesheet_users |
hr.analytical.timesheet.users.form | hr.analytical.timesheet.users | form | New |
No models found for this module.