Work Entries

hr_work_entry
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/hr_work_entry
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Aaron Bohy, Yannick Tivisse, Pierre Masereel, Julien Castiaux, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, Abdelouahab (abla), Dossogne Bertrand, Louis Wicket (wil), Victor Piryns (pivi), Dylan Kiss (dyki), Xavier Bol (xbo), Nicolas Viseur (vin), ravb-odoo, Mélanie, jugj-odoo, Tanguy Quéguineur, Agustin Castro Bugallo, rmun-odoo, Mathieu Coutant, Yassin Abdelkarim, kais-odoo, rame-odoo, Abdelrahman Mahmoud (amah), ahta, Michaël Mattiello, nikj-odoo, Krzysztof Magusiak (krma), Hazem Ibrahim, Bertrand Dossogne, romc-odoo, kareem, ksar-odoo, oumaima-aarabe, Arthur Pierrot (arpi), Amr Elkhatieb, renol-odoo, kuay-odoo, Jurgen Gjini, lebm-odoo, Mahmoudk3m, Martin Lefèvre (mlef), Farah (ahmfa), Madhav Pancholi, karygauss03, chpa-odoo, Amr Yasser (amry), amga-odoo, adak(ahmed), Mohammed Farouk, Tatiana Skvortsova (taskv), Omar Khair, Martin (mlef)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - digest
    - mail
    - bus
    - web_tour
    - html_editor
    - portal
    - http_routing
    - auth_signup
    - resource
    - phone_validation
    - resource_mail
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
hr_contract_template_view_form hr.contract.template.view.form.inherit.hr_work_entry hr.version separator Inherits hr.hr_contract_template_form_view
hr_employee_view_form hr.employee.view.form.inherit.hr.work.entry hr.employee button Inherits hr.view_employee_form
hr_work_entry_calendar_gantt_view_form hr.work.entry.form hr.work.entry xpath Inherits hr_work_entry.hr_work_entry_view_form
hr_work_entry_regeneration_wizard hr_work_entry_regeneration_wizard hr.work.entry.regeneration.wizard form New
hr_work_entry_type_view_form hr.work.entry.type.form hr.work.entry.type form New
hr_work_entry_type_view_kanban hr.work.entry.type.kanban.view hr.work.entry.type kanban New
hr_work_entry_type_view_search hr.work.entry.type.view.search hr.work.entry.type search New
hr_work_entry_type_view_tree hr.work.entry.type.list hr.work.entry.type list New
hr_work_entry_view_calendar hr.work.entry.calendar hr.work.entry calendar New
hr_work_entry_view_calendar_multi_create_form hr.work.entry.calendar.multi_create hr.work.entry form New
hr_work_entry_view_form hr.work.entry.form hr.work.entry form New
hr_work_entry_view_pivot hr.work.entry.pivot hr.work.entry pivot New
hr_work_entry_view_search hr.work.entry.filter hr.work.entry search New
hr_work_entry_view_tree hr.work.entry.list hr.work.entry list New
resource_calendar_attendance_view_form resource.calendar.attendance.form.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_form
resource_calendar_attendance_view_tree resource.calendar.attendance.list.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_tree
resource_calendar_leave_view_form resource.calendar.leaves.form.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_form
resource_calendar_leave_view_tree resource.calendar.leaves.list.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_tree
resource_calendar_leaves_view_search_inherit resource.calendar.leaves.search.inherit resource.calendar.leaves filter Inherits resource.view_resource_calendar_leaves_search
Models touched (9)

New fields (3)
  • has_work_entries Boolean
    compute='_compute_has_work_entries' groups='base.group_system,hr.group_hr_user'
  • work_entry_source Selection
    groups='hr.group_hr_manager' inherited=True readonly=False related='version_id.work_entry_source'
  • work_entry_source_calendar_invalid Boolean
    groups='hr.group_hr_manager' inherited=True related='version_id.work_entry_source_calendar_invalid'
Public methods (3)
  • action_open_work_entries(self, initial_date=False)
  • create_version(self, values)
  • generate_work_entries(self, date_start, date_stop, force=False)

New fields (4)
  • active Boolean
    default=True args: 'Active'
  • employee_id Many2one → hr.employee
    required=True args: 'hr.employee', 'Employee'
  • is_checked Boolean
    default=True
  • user_id Many2one → res.users
    default=<expr> ondelete='cascade' required=True args: 'res.users', 'Me'
Public methods (0)

No public methods.

New fields (5)
  • date_generated_from Datetime
    default=<expr> groups='hr.group_hr_user' readonly=True required=True string='Generated From' tracking=True
  • date_generated_to Datetime
    default=<expr> groups='hr.group_hr_user' readonly=True required=True string='Generated To' tracking=True
  • last_generation_date Date
    groups='hr.group_hr_user' readonly=True string='Last Generation Date' tracking=True
  • work_entry_source Selection
    default='calendar' groups='hr.group_hr_manager' help="\n Defines the source for work entries generation\n\n Working Schedule: Work entries will be generated from the working hours below.\n Attendances: Work entries will be generated from the employee's attendances. (requires Attendance app)\n Planning: Work entries will be generated from the employee's planning. (requires Planning app)\n " required=True tracking=True args: [('calendar', 'Working Schedule')]
  • work_entry_source_calendar_invalid Boolean
    compute='_compute_work_entry_source_calendar_invalid' groups='hr.group_hr_manager'
Public methods (4)
  • generate_work_entries(self, date_start, date_stop, force=False)
  • has_static_work_entries(self)
  • unlink(self)
  • write(self, vals)

New fields (18)
  • active Boolean
    default=True
  • amount_rate Float
    args: 'Pay rate'
  • code Char
    related='work_entry_type_id.code'
  • color Integer
    readonly=True related='work_entry_type_id.color'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • conflict Boolean
    compute='_compute_conflict' store=True args: 'Conflicts'
  • country_id Many2one → res.country
    related='employee_id.company_id.country_id' search='_search_country_id' args: 'res.country'
  • date Date
    required=True
  • department_id Many2one → hr.department
    related='employee_id.department_id' store=True args: 'hr.department'
  • display_code Char
    related='work_entry_type_id.display_code'
  • duration Float
    default=8 string='Duration'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True required=True args: 'hr.employee'
  • external_code Char
    related='work_entry_type_id.external_code'
  • name Char
  • state Selection
    default='draft' args: [('draft', 'New'), ('conflict', 'In Conflict'), ('validated', 'In Payslip'), ('cancelled', 'Cancelled')]
  • version_id Many2one → hr.version
    index=True required=True string='Employee Record' args: 'hr.version'
  • work_entry_source Selection
    related='version_id.work_entry_source'
  • work_entry_type_id Many2one → hr.work.entry.type
    default=<expr> domain=<expr> index=True args: 'hr.work.entry.type'
Public methods (6)
  • action_split(self, vals)
  • action_validate(self)
    Try to validate work entries. If some errors are found, set `state` to conflict for conflicting work entries and validation fails. :return: True if validation succeeded
  • create(self, vals_list)
    @api.model_create_multi
  • get_unusual_days(self, date_from, date_to=None)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (10)
  • date_from Date
    default=<expr> required=True args: 'From'
  • date_to Date
    compute='_compute_date_to' default=<expr> readonly=False required=True store=True args: 'To'
  • earliest_available_date Date
    compute='_compute_earliest_available_date' args: 'Earliest date'
  • earliest_available_date_message Char
    default='' readonly=True store=False
  • employee_ids Many2many → hr.employee
    domain=<expr> required=True string='Employees' args: 'hr.employee'
  • latest_available_date Date
    compute='_compute_latest_available_date' args: 'Latest date'
  • latest_available_date_message Char
    default='' readonly=True store=False
  • search_criteria_completed Boolean
    compute='_compute_search_criteria_completed'
  • valid Boolean
    compute='_compute_valid'
  • validated_work_entry_employee_ids Many2many → hr.employee
    compute='_compute_validated_work_entry_employee_ids' export_string_translation=False args: 'hr.employee'
Public methods (1)
  • regenerate_work_entries(self, slots=None, record_ids=None)

New fields (13)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the work entry type without removing it.' args: 'Active'
  • amount_rate Float
    default=1.0 help='If you want the hours should be paid double, the rate should be 200%.' string='Rate'
  • code Char
    help='Careful, the Code is used in many references, changing it could lead to unwanted changes.' required=True string='Payroll Code'
  • color Integer
    default=0
  • country_code Char
    related='country_id.code'
  • country_id Many2one → res.country
    domain=<expr> string='Country' args: 'res.country'
  • display_code Char
    help='This code can be changed, it is only for a display purpose (3 letters max)' size=3 string='Display Code' translate=True
  • external_code Char
    help='Use this code to export your data to a third party'
  • is_extra_hours Boolean
    help='Check this setting if you want the hours to be considered as extra time and added as a bonus to the basic salary.' string='Added to Monthly Pay'
  • is_leave Boolean
    default=False help='Allow the work entry type to be linked with time off types.' string='Time Off'
  • is_work Boolean
    compute='_compute_is_work' help='If checked, the work entry is counted as work time in the working schedule' inverse='_inverse_is_work' readonly=False string='Working Time'
  • name Char
    required=True translate=True
  • sequence Integer
    default=25
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    default=_default_work_entry_type_id groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/hr_work_entry
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Damien Bouvy, Yannick Tivisse, Odoo Online, Tiffany Chang (tic), Gorash, Pierre Paridans, Abdelouahab (abla), Louis Wicket (wil), Dylan Kiss (dyki), omra-odoo, Agustin Castro Bugallo, Louis (wil), kais-odoo, Kacper Gasior, dhka-odoo, oumaima-aarabe, Arthur Pierrot (arpi), Madhav Pancholi
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - digest
    - mail
    - bus
    - web_tour
    - html_editor
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - phone_validation
    - resource_mail
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
hr_employee_view_form hr.employee.view.form.inherit.hr.work.entry hr.employee div Inherits hr.view_employee_form
hr_work_entry_type_view_form hr.work.entry.type.form hr.work.entry.type form New
hr_work_entry_type_view_kanban hr.work.entry.type.kanban.view hr.work.entry.type kanban New
hr_work_entry_type_view_search hr.work.entry.type.view.search hr.work.entry.type search New
hr_work_entry_type_view_tree hr.work.entry.type.list hr.work.entry.type list New
hr_work_entry_view_calendar hr.work.entry.calendar hr.work.entry calendar New
hr_work_entry_view_form hr.work.entry.form hr.work.entry form New
hr_work_entry_view_pivot hr.work.entry.pivot hr.work.entry pivot New
hr_work_entry_view_search hr.work.entry.filter hr.work.entry search New
hr_work_entry_view_tree hr.work.entry.list hr.work.entry list New
resource_calendar_attendance_view_form resource.calendar.attendance.form.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_form
resource_calendar_attendance_view_tree resource.calendar.attendance.list.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_tree
resource_calendar_leave_view_form resource.calendar.leaves.form.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_form
resource_calendar_leave_view_tree resource.calendar.leaves.list.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_tree
resource_calendar_leaves_view_search_inherit resource.calendar.leaves.search.inherit resource.calendar.leaves filter Inherits resource.view_resource_calendar_leaves_search
Models touched (6)

New fields (1)
  • has_work_entries Boolean
    compute='_compute_has_work_entries' groups='base.group_system,hr.group_hr_user'
Public methods (1)
  • action_open_work_entries(self, initial_date=False)

New fields (3)
  • active Boolean
    default=True args: 'Active'
  • employee_id Many2one → hr.employee
    required=True args: 'hr.employee', 'Employee'
  • user_id Many2one → res.users
    default=<expr> ondelete='cascade' required=True args: 'res.users', 'Me'
Public methods (0)

No public methods.

New fields (15)
  • active Boolean
    default=True
  • code Char
    related='work_entry_type_id.code'
  • color Integer
    readonly=True related='work_entry_type_id.color'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • conflict Boolean
    compute='_compute_conflict' store=True args: 'Conflicts'
  • country_id Many2one → res.country
    related='employee_id.company_id.country_id' search='_search_country_id' args: 'res.country'
  • date_start Datetime
    required=True string='From'
  • date_stop Datetime
    compute='_compute_date_stop' readonly=False store=True string='To'
  • department_id Many2one → hr.department
    related='employee_id.department_id' store=True args: 'hr.department'
  • duration Float
    compute='_compute_duration' readonly=False store=True string='Duration'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True required=True args: 'hr.employee'
  • external_code Char
    related='work_entry_type_id.external_code'
  • name Char
    compute='_compute_name' readonly=False required=True store=True
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('validated', 'Validated'), ('conflict', 'Conflict'), ('cancelled', 'Cancelled')]
  • work_entry_type_id Many2one → hr.work.entry.type
    default=<expr> domain="['|', ('country_id', '=', False), ('country_id', '=', country_id)]" index=True args: 'hr.work.entry.type'
Public methods (5)
  • action_validate(self)
    Try to validate work entries. If some errors are found, set `state` to conflict for conflicting work entries and validation fails. :return: True if validation succeeded
  • create(self, vals_list)
    @api.model_create_multi
  • init(self)
  • unlink(self)
  • write(self, vals)

New fields (8)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the work entry type without removing it.' args: 'Active'
  • code Char
    help='Careful, the Code is used in many references, changing it could lead to unwanted changes.' required=True string='Payroll Code'
  • color Integer
    default=0
  • country_code Char
    related='country_id.code'
  • country_id Many2one → res.country
    string='Country' args: 'res.country'
  • external_code Char
    help='Use this code to export your data to a third party'
  • name Char
    required=True translate=True
  • sequence Integer
    default=25
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    default=_default_work_entry_type_id groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/hr_work_entry
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Tiffany Chang (tic), Gorash, Pierre Paridans, Kevin Baptiste, sofiagvaladze, Abdelouahab (abla), Dossogne Bertrand, niyasraphy, Louis Wicket (wil), Tommy (tong), Jurgen (jugj), Dylan Kiss (dyki), Michael (mcm), dasz, Flotchet, Louis (wil), Kacper Gasior, oumaima-aarabe
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - phone_validation
    - mail
    - bus
    - web_tour
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
hr_employee_view_form hr.employee.view.form.inherit.hr.work.entry hr.employee div Inherits hr.view_employee_form
hr_work_entry_type_view_form hr.work.entry.type.form hr.work.entry.type form New
hr_work_entry_type_view_kanban hr.work.entry.type.kanban.view hr.work.entry.type kanban New
hr_work_entry_type_view_search hr.work.entry.type.view.search hr.work.entry.type search New
hr_work_entry_type_view_tree hr.work.entry.type.tree hr.work.entry.type tree New
hr_work_entry_view_calendar hr.work.entry.calendar hr.work.entry calendar New
hr_work_entry_view_form hr.work.entry.form hr.work.entry form New
hr_work_entry_view_pivot hr.work.entry.pivot hr.work.entry pivot New
hr_work_entry_view_search hr.work.entry.filter hr.work.entry search New
hr_work_entry_view_tree hr.work.entry.tree hr.work.entry tree New
resource_calendar_attendance_view_form resource.calendar.attendance.form.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_form
resource_calendar_attendance_view_tree resource.calendar.attendance.tree.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_tree
resource_calendar_leave_view_form resource.calendar.leaves.form.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_form
resource_calendar_leave_view_tree resource.calendar.leaves.tree.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_tree
resource_calendar_leaves_view_search_inherit resource.calendar.leaves.search.inherit resource.calendar.leaves filter Inherits resource.view_resource_calendar_leaves_search
Models touched (6)

New fields (1)
  • has_work_entries Boolean
    compute='_compute_has_work_entries'
Public methods (1)
  • action_open_work_entries(self, initial_date=False)

New fields (3)
  • active Boolean
    default=True args: 'Active'
  • employee_id Many2one → hr.employee
    required=True args: 'hr.employee', 'Employee'
  • user_id Many2one → res.users
    default=<expr> ondelete='cascade' required=True args: 'res.users', 'Me'
Public methods (0)

No public methods.

New fields (14)
  • active Boolean
    default=True
  • code Char
    related='work_entry_type_id.code'
  • color Integer
    readonly=True related='work_entry_type_id.color'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • conflict Boolean
    compute='_compute_conflict' store=True args: 'Conflicts'
  • date_start Datetime
    required=True string='From'
  • date_stop Datetime
    compute='_compute_date_stop' readonly=False store=True string='To'
  • department_id Many2one → hr.department
    related='employee_id.department_id' store=True args: 'hr.department'
  • duration Float
    compute='_compute_duration' readonly=False store=True string='Duration'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True required=True args: 'hr.employee'
  • external_code Char
    related='work_entry_type_id.external_code'
  • name Char
    compute='_compute_name' readonly=False required=True store=True
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('validated', 'Validated'), ('conflict', 'Conflict'), ('cancelled', 'Cancelled')]
  • work_entry_type_id Many2one → hr.work.entry.type
    default=<expr> index=True args: 'hr.work.entry.type'
Public methods (5)
  • action_validate(self)
    Try to validate work entries. If some errors are found, set `state` to conflict for conflicting work entries and validation fails. :return: True if validation succeded
  • create(self, vals_list)
    @api.model_create_multi
  • init(self)
  • unlink(self)
  • write(self, vals)

New fields (6)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the work entry type without removing it.' args: 'Active'
  • code Char
    help='Careful, the Code is used in many references, changing it could lead to unwanted changes.' required=True string='Payroll Code'
  • color Integer
    default=0
  • external_code Char
    help='Use this code to export your data to a third party'
  • name Char
    required=True translate=True
  • sequence Integer
    default=25
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    default=_default_work_entry_type_id groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/hr_work_entry
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Yannick Tivisse, Romeo Fragomeli, Victor Feyens, Alvaro Fuentes, Gorash, William Braeckman, Kevin Baptiste, Philippe Wauthy, Dossogne Bertrand, niyasraphy, Tommy (tong), Jurgen (jugj), Kacper Gasior
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
hr_employee_view_form hr.employee.view.form.inherit.hr.work.entry hr.employee div Inherits hr.view_employee_form
hr_work_entry_type_view_form hr.work.entry.type.form hr.work.entry.type form New
hr_work_entry_type_view_kanban hr.work.entry.type.kanban.view hr.work.entry.type kanban New
hr_work_entry_type_view_search hr.work.entry.type.view.search hr.work.entry.type search New
hr_work_entry_type_view_tree hr.work.entry.type.tree hr.work.entry.type tree New
hr_work_entry_view_calendar hr.work.entry.calendar hr.work.entry calendar New
hr_work_entry_view_form hr.work.entry.form hr.work.entry form New
hr_work_entry_view_pivot hr.work.entry.pivot hr.work.entry pivot New
hr_work_entry_view_search hr.work.entry.filter hr.work.entry search New
hr_work_entry_view_tree hr.work.entry.tree hr.work.entry tree New
resource_calendar_attendance_view_form resource.calendar.attendance.form.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_form
resource_calendar_attendance_view_tree resource.calendar.attendance.tree.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_tree
resource_calendar_leave_view_form resource.calendar.leaves.form.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_form
resource_calendar_leave_view_tree resource.calendar.leaves.tree.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_tree
resource_calendar_leaves_view_search_inherit resource.calendar.leaves.search.inherit resource.calendar.leaves filter Inherits resource.view_resource_calendar_leaves_search
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • action_open_work_entries(self, initial_date=False)

New fields (3)
  • active Boolean
    default=True args: 'Active'
  • employee_id Many2one → hr.employee
    required=True args: 'hr.employee', 'Employee'
  • user_id Many2one → res.users
    default=<expr> required=True args: 'res.users', 'Me'
Public methods (0)

No public methods.

New fields (12)
  • active Boolean
    default=True
  • color Integer
    readonly=True related='work_entry_type_id.color'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • conflict Boolean
    compute='_compute_conflict' store=True args: 'Conflicts'
  • date_start Datetime
    required=True string='From'
  • date_stop Datetime
    compute='_compute_date_stop' readonly=False store=True string='To'
  • department_id Many2one → hr.department
    related='employee_id.department_id' store=True args: 'hr.department'
  • duration Float
    compute='_compute_duration' readonly=False store=True string='Duration'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True required=True args: 'hr.employee'
  • name Char
    compute='_compute_name' readonly=False required=True store=True
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('validated', 'Validated'), ('conflict', 'Conflict'), ('cancelled', 'Cancelled')]
  • work_entry_type_id Many2one → hr.work.entry.type
    default=<expr> index=True args: 'hr.work.entry.type'
Public methods (5)
  • action_validate(self)
    Try to validate work entries. If some errors are found, set `state` to conflict for conflicting work entries and validation fails. :return: True if validation succeded
  • create(self, vals_list)
    @api.model_create_multi
  • init(self)
  • unlink(self)
  • write(self, vals)

New fields (5)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the work entry type without removing it.' args: 'Active'
  • code Char
    help='Careful, the Code is used in many references, changing it could lead to unwanted changes.' required=True
  • color Integer
    default=0
  • name Char
    required=True translate=True
  • sequence Integer
    default=25
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    default=_default_work_entry_type_id groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/hr_work_entry
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Yannick Tivisse, Adrien Dieudonne, Xavier-Do, Julien Mougenot, Alvaro Fuentes, William Braeckman, Kevin Baptiste, sofiagvaladze, niyasraphy, Jurgen (jugj), Leonardo Pavan Rocha
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
hr_employee_view_form hr.employee.view.form.inherit.hr.work.entry hr.employee div Inherits hr.view_employee_form
hr_work_entry_type_view_form hr.work.entry.type.form hr.work.entry.type form New
hr_work_entry_type_view_kanban hr.work.entry.type.kanban.view hr.work.entry.type kanban New
hr_work_entry_type_view_search hr.work.entry.type.view.search hr.work.entry.type search New
hr_work_entry_type_view_tree hr.work.entry.type.tree hr.work.entry.type tree New
hr_work_entry_view_calendar hr.work.entry.calendar hr.work.entry calendar New
hr_work_entry_view_form hr.work.entry.form hr.work.entry form New
hr_work_entry_view_search hr.work.entry.filter hr.work.entry search New
hr_work_entry_view_tree hr.work.entry.tree hr.work.entry tree New
resource_calendar_attendance_view_form resource.calendar.attendance.form.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_form
resource_calendar_attendance_view_tree resource.calendar.attendance.tree.inherit.hr.work.entry resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_tree
resource_calendar_leave_view_form resource.calendar.leaves.form.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_form
resource_calendar_leave_view_tree resource.calendar.leaves.tree.inherit.hr.work.entry resource.calendar.leaves field Inherits resource.resource_calendar_leave_tree
resource_calendar_leaves_view_search_inherit resource.calendar.leaves.search.inherit resource.calendar.leaves filter Inherits resource.view_resource_calendar_leaves_search
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • action_open_work_entries(self)

New fields (3)
  • active Boolean
    default=True args: 'Active'
  • employee_id Many2one → hr.employee
    required=True args: 'hr.employee', 'Employee'
  • user_id Many2one → res.users
    default=<expr> required=True args: 'res.users', 'Me'
Public methods (0)

No public methods.

New fields (12)
  • active Boolean
    default=True
  • color Integer
    readonly=True related='work_entry_type_id.color'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • conflict Boolean
    compute='_compute_conflict' store=True args: 'Conflicts'
  • date_start Datetime
    required=True string='From'
  • date_stop Datetime
    compute='_compute_date_stop' readonly=False store=True string='To'
  • department_id Many2one → hr.department
    related='employee_id.department_id' store=True args: 'hr.department'
  • duration Float
    compute='_compute_duration' store=True string='Period'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True required=True args: 'hr.employee'
  • name Char
    compute='_compute_name' readonly=False required=True store=True
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('validated', 'Validated'), ('conflict', 'Conflict'), ('cancelled', 'Cancelled')]
  • work_entry_type_id Many2one → hr.work.entry.type
    index=True args: 'hr.work.entry.type'
Public methods (5)
  • action_validate(self)
    Try to validate work entries. If some errors are found, set `state` to conflict for conflicting work entries and validation fails. :return: True if validation succeded
  • create(self, vals_list)
    @api.model_create_multi
  • init(self)
  • unlink(self)
  • write(self, vals)

New fields (5)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the work entry type without removing it.' args: 'Active'
  • code Char
    help='Carefull, the Code is used in many references, changing it could lead to unwanted changes.' required=True
  • color Integer
    default=0
  • name Char
    required=True translate=True
  • sequence Integer
    default=25
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    default=_default_work_entry_type_id groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    groups='hr.group_hr_user' args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/hr_work_entry
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Christophe Simonis, Nicolas Martinelli, Aaron Bohy, Yannick Tivisse, Adrien Dieudonne, Xavier-Do, Alvaro Fuentes, jbm-odoo, niyasraphy, Jurgen (jugj)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
hr_work_entry_type_view_form hr.work.entry.type.form hr.work.entry.type form New
hr_work_entry_type_view_kanban hr.work.entry.type.kanban.view hr.work.entry.type kanban New
hr_work_entry_type_view_search hr.work.entry.type.view.search hr.work.entry.type search New
hr_work_entry_type_view_tree hr.work.entry.type.tree hr.work.entry.type tree New
hr_work_entry_view_calendar hr.work.entry.calendar hr.work.entry calendar New
hr_work_entry_view_form hr.work.entry.form hr.work.entry form New
hr_work_entry_view_search hr.work.entry.filter hr.work.entry search New
hr_work_entry_view_tree hr.work.entry.tree hr.work.entry tree New
resource_calendar_attendance_view_form resource.calendar.attendance.view.form resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_form
resource_calendar_attendance_view_tree resource.calendar.attendance.view.tree resource.calendar.attendance field Inherits resource.view_resource_calendar_attendance_tree
resource_calendar_leave_view_form resource.calendar.leaves.view.form resource.calendar.leaves field Inherits resource.resource_calendar_leave_form
resource_calendar_leave_view_tree resource.calendar.leaves.view.tree resource.calendar.leaves field Inherits resource.resource_calendar_leave_tree
resource_calendar_view_form resource.calendar.view.form resource.calendar xpath Inherits resource.resource_calendar_form
Models touched (5)

New fields (3)
  • active Boolean
    default=True args: 'Active'
  • employee_id Many2one → hr.employee
    required=True args: 'hr.employee', 'Employee'
  • user_id Many2one → res.users
    default=<expr> required=True args: 'res.users', 'Me'
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True
  • color Integer
    readonly=True related='work_entry_type_id.color'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • conflict Boolean
    compute='_compute_conflict' store=True args: 'Conflicts'
  • date_start Datetime
    required=True string='From'
  • date_stop Datetime
    compute='_compute_date_stop' readonly=False store=True string='To'
  • duration Float
    compute='_compute_duration' store=True string='Period'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True required=True args: 'hr.employee'
  • name Char
    required=True
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('validated', 'Validated'), ('conflict', 'Conflict'), ('cancelled', 'Cancelled')]
  • work_entry_type_id Many2one → hr.work.entry.type
    index=True args: 'hr.work.entry.type'
Public methods (5)
  • action_validate(self)
    Try to validate work entries. If some errors are found, set `state` to conflict for conflicting work entries and validation fails. :return: True if validation succeded
  • create(self, vals_list)
    @api.model_create_multi
  • init(self)
  • unlink(self)
  • write(self, vals)

New fields (5)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the work entry type without removing it.' args: 'Active'
  • code Char
    required=True
  • color Integer
    default=0
  • name Char
    required=True translate=True
  • sequence Integer
    default=25
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    default=_default_work_entry_type_id args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/hr_work_entry
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Denis Ledoux, Nicolas Martinelli, Yannick Tivisse, Jigar Patel, Adrien Dieudonne, Adrian Torres, Xavier-Do, Sébastien Theys, Alvaro Fuentes, Kevin Baptiste
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - mail_bot
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
hr_work_entry_type_view_form hr.work.entry.type.form hr.work.entry.type form New
hr_work_entry_type_view_kanban hr.work.entry.type.kanban.view hr.work.entry.type kanban New
hr_work_entry_type_view_search hr.work.entry.type.view.search hr.work.entry.type search New
hr_work_entry_type_view_tree hr.work.entry.type.tree hr.work.entry.type tree New
hr_work_entry_view_calendar hr.work.entry.calendar hr.work.entry calendar New
hr_work_entry_view_form hr.work.entry.form hr.work.entry form New
hr_work_entry_view_search hr.work.entry.filter hr.work.entry search New
hr_work_entry_view_tree hr.work.entry.tree hr.work.entry tree New
Models touched (5)

New fields (3)
  • active Boolean
    default=True args: 'Active'
  • employee_id Many2one → hr.employee
    required=True args: 'hr.employee', 'Employee'
  • user_id Many2one → res.users
    default=<expr> required=True args: 'res.users', 'Me'
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True
  • color Integer
    readonly=True related='work_entry_type_id.color'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • conflict Boolean
    compute='_compute_conflict' store=True args: 'Conflicts'
  • date_start Datetime
    required=True string='From'
  • date_stop Datetime
    string='To'
  • duration Float
    compute='_compute_duration' inverse='_inverse_duration' store=True string='Period'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True required=True args: 'hr.employee'
  • name Char
    required=True
  • state Selection
    default='draft' args: [('draft', 'Draft'), ('validated', 'Validated'), ('conflict', 'Conflict'), ('cancelled', 'Cancelled')]
  • work_entry_type_id Many2one → hr.work.entry.type
    args: 'hr.work.entry.type'
Public methods (5)
  • action_validate(self)
    Try to validate work entries. If some errors are found, set `state` to conflict for conflicting work entries and validation fails. :return: True if validation succeded
  • create(self, vals_list)
    @api.model_create_multi
  • init(self)
  • unlink(self)
  • write(self, vals)

New fields (5)
  • active Boolean
    default=True help='If the active field is set to false, it will allow you to hide the work entry type without removing it.' args: 'Active'
  • code Char
    required=True
  • color Integer
    default=0
  • name Char
    required=True
  • sequence Integer
    default=25
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    default=_default_work_entry_type_id args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.

New fields (1)
  • work_entry_type_id Many2one → hr.work.entry.type
    args: 'hr.work.entry.type', 'Work Entry Type'
Public methods (0)

No public methods.