TIP: You can type at any time to perform a new search.
Timesheets / Attendances
hr_timesheet_sheet · odoo/odoo
Security findings
Migration considerations
hr_timesheet_sheet.sheet.state— Field 'state' on 'hr_timesheet_sheet.sheet' uses the deprecated `track_visibility` kwarg: renamed to `tracking` in Odoo 13.0. migration-track-visibilityhr_timesheet_sheet_form— For a target of Odoo 17.0+: view 'hr_timesheet_sheet_form' uses `attrs=`/`states=`, which are no longer supported. Convert modifiers to direct Python boolean expressions in `invisible`/`readonly`/`required`; preserve the original AND/OR logic. migration-view-attrs-states · sourcehr_timesheet_account_tree— View 'hr_timesheet_account_tree' is defined with a `<tree>` root tag: renamed to `<list>` in Odoo 18.0. migration-view-tree-tag · sourcehr_timesheet_sheet.sheet.account— Model 'hr_timesheet_sheet.sheet.account' has `_auto = False` and its init() (re)creates a SQL VIEW: the standard reporting-model pattern, but its raw SQL isn't checked by the ORM - verify it against renamed/removed tables and columns in the target version. migration-sql-viewhr_timesheet_sheet_tree_simplified— View 'hr_timesheet_sheet_tree_simplified' is defined with a `<tree>` root tag: renamed to `<list>` in Odoo 18.0. migration-view-tree-tag · source
Migration review checklist, not a compatibility verdict. No target version is selected: apply version-specific advice only when migrating to that version or later.
- Repository
- odoo/odoo · module folder
- Module version
- 1.1
- Category
- Human Resources
- Folder size
- 1.33 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://www.odoo.com/page/employees
- Last tracking update
- 2026-08-07 04:59:45
- Authors
- Maintainers
- None
- Committers
- Xavier Morel, Antony Lesuisse, Olivier Dony, Fabien Pinckaers, Christophe Simonis, Thibault Delavallée, Martin Trigaux, Odoo Translation Bot, Denis Ledoux, Simon Lejeune, Julien Legros, qdp-odoo, Jeremy Kersten, Yannick Tivisse, qsm-odoo, Denis Vermylen (dve), Tanguy Charlier, jem-odoo, Toufik Ben Jaa, Giulio Marcon
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- analytic_secondaxis_timesheet, hr_timesheet_activity_begin_end, hr_timesheet_attendance, hr_timesheet_fulfill, hr_timesheet_holiday, hr_timesheet_improvement, hr_timesheet_reminder, hr_timesheet_sheet_change_period, hr_timesheet_sheet_period, hr_timesheet_sheet_restrict_project, hr_timesheet_sheet_week_start_day, hr_timesheet_task, hr_worked_days_from_timesheet, project_issue_sheet
- Description
Record and validate timesheets and attendances easily ===================================================== This application supplies a new screen enabling you to manage your work encoding (timesheet) by period. Timesheet entries are made by employees each day. At the end of the defined period, employees validate their sheet and the manager must then approve his team's entries. Periods are defined in the company forms and you can set them to run monthly or weekly. The complete timesheet validation process is: --------------------------------------------- * Draft sheet * Confirmation at the end of the period by the employee * Validation by the project manager The validation can be configured in the company: ------------------------------------------------ * Period size (Day, Week, Month) * Maximal difference between timesheet and attendances
Code Analysis
Views touched (12)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
hr_timesheet_sheet assets | ir.ui.view | qweb | Inherits web.assets_backend |
hr_department_view_kanban |
hr.department.kanban.inherit | hr.department | kanban | Inherits hr.hr_department_view_kanban |
hr_timesheet_account_filter |
hr.timesheet.account.filter | hr_timesheet_sheet.sheet.account | search | New |
hr_timesheet_account_form |
hr.timesheet.account.form | hr_timesheet_sheet.sheet.account | form | New |
hr_timesheet_account_tree |
hr.timesheet.account.tree | hr_timesheet_sheet.sheet.account | tree | New |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | form | Inherits hr_timesheet.hr_timesheet_line_form |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | search | Inherits hr_timesheet.hr_timesheet_line_search |
hr_timesheet_sheet_employee_extd_form |
hr.timesheet.sheet.employee.extd_form | hr.employee | form | Inherits hr.view_employee_form |
hr_timesheet_sheet_form |
hr.timesheet.sheet.form | hr_timesheet_sheet.sheet | form | New |
hr_timesheet_sheet_tree_simplified |
hr.timesheet.sheet.tree | hr_timesheet_sheet.sheet | tree | New |
view_config_settings_form_inherit_hr_timesheet_sheet |
project.config.settings.form.inherit.timesheet.sheet | project.config.settings | form | Inherits project.view_config_settings |
view_hr_timesheet_sheet_filter |
hr_timesheet_sheet.sheet.filter | hr_timesheet_sheet.sheet | search | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (8)
New fields (2)
-
sheet_idMany2one → hr_timesheet_sheet.sheetcompute='_compute_sheet'store=Truestring='Sheet' args: 'hr_timesheet_sheet.sheet' -
sheet_id_computedMany2one → hr_timesheet_sheet.sheetcompute='_compute_sheet'index=Trueondelete='cascade'search='_search_sheet'string='Sheet' args: 'hr_timesheet_sheet.sheet'
-
unlink(self)@api.multi -
write(self, values)@api.multi
New fields (1)
-
timesheet_to_approve_countIntegercompute='_compute_timesheet_to_approve'string='Timesheet to Approve'
No public methods.
New fields (1)
-
timesheet_countIntegercompute='_compute_timesheet_count'string='Timesheets'
No public methods.
New fields (0)
No new fields.
Public methods (1)-
open_timesheet(self)@api.model
New fields (10)
-
account_idsOne2many → hr_timesheet_sheet.sheet.accountreadonly=Truestring='Analytic accounts' args: 'hr_timesheet_sheet.sheet.account', 'sheet_id' -
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
date_fromDatedefault=_default_date_fromindex=Truereadonly=Truerequired=Truestates={'new': [('readonly', False)]}string='Date From' -
date_toDatedefault=_default_date_toindex=Truereadonly=Truerequired=Truestates={'new': [('readonly', False)]}string='Date To' -
department_idMany2one → hr.departmentstring='Department' args: 'hr.department' -
employee_idMany2one → hr.employeedefault=_default_employeerequired=Truestring='Employee' args: 'hr.employee' -
nameCharstates={'confirm': [('readonly', True)], 'done': [('readonly', True)]}string='Note' -
stateSelectiondefault='new'help=" * The 'Open' status is used when a user is encoding a new and unconfirmed timesheet. \n* The 'Waiting Approval' status is used to confirm the timesheet by user. \n* The 'Approved' status is used when the users timesheet is accepted by his/her senior."index=Truereadonly=Truerequired=Truestring='Status'track_visibility='onchange' args: [('new', 'New'), ('draft', 'Open'), ('confirm', 'Waiting Approval'), ('done', 'Approved')] -
timesheet_idsOne2many → account.analytic.linereadonly=Truestates={'draft': [('readonly', False)], 'new': [('readonly', False)]}string='Timesheet lines' args: 'account.analytic.line', 'sheet_id' -
user_idMany2one → res.userscompute_sudo=Truereadonly=Truerelated='employee_id.user_id'store=Truestring='User' args: 'res.users'
-
action_timesheet_confirm(self)@api.multi -
action_timesheet_done(self)@api.multi -
action_timesheet_draft(self)@api.multi -
copy(self, *args, **argv) -
create(self, vals)@api.model -
name_get(self)@api.multi -
onchange_employee_id(self)@api.onchange('employee_id') -
unlink(self)@api.multi -
write(self, vals)@api.multi
New fields (3)
-
nameMany2one → account.analytic.accountreadonly=Truestring='Project / Analytic Account' args: 'account.analytic.account' -
sheet_idMany2one → hr_timesheet_sheet.sheetreadonly=Truestring='Sheet' args: 'hr_timesheet_sheet.sheet' -
totalFloatdigits=(16, 2)readonly=True args: 'Total Time'
-
init(self)@api.model_cr
New fields (2)
-
module_project_timesheet_synchroBooleanstring='Timesheet app for Chrome/Android/iOS' -
timesheet_rangeSelectionrelated='company_id.timesheet_range'string='Timesheet range *'
No public methods.
New fields (1)
-
timesheet_rangeSelectiondefault='week'help='Periodicity on which you validate your timesheets.'string='Timesheet range' args: [('week', 'Week'), ('month', 'Month')]
No public methods.
Loading…
Loading…
Loading…
Loading…