Employee Contracts

hr_contract
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Contracts
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Xavier ALT, Christophe Simonis, Damien Bouvy, Yannick Tivisse, Odoo Online, Pierre Masereel, Adrien Dieudonné, Nasreddin Boulif (bon), Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, sofiagvaladze, Florian Damhaut, Audric Onockx (auon), Dossogne Bertrand, bve-odoo, Louis Wicket (wil), Pierre-Yves Dufays, Levi Siuzdak (sile), Dylan Kiss (dyki), Mattis Megevand (mmeg), omra-odoo, Paul Stroobant, ravb-odoo, Mélanie, Youssef Bashandy, Maryam Kia, Flotchet, jugj-odoo, Julien Carion (juca), Ahmad (khah), sami odoo, Louis (wil), Kacper Gasior, Abdelrahman Mahmoud (amah), sapp-odoo, Chris Duvivier, Pierre Pulinckx (pipu), laro-odoo, Ajit Singh, kareem, dhka-odoo, Einar Andersen (eian), assh-odoo, arpr-odoo, Arthur Pierrot
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:59
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
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
hr_contract_history_view_form hr.contract.history.form hr.contract.history form New
hr_contract_history_view_kanban hr.contract.history.view.kanban hr.contract.history kanban New
hr_contract_history_view_list hr.contract.history.list hr.contract.history list New
hr_contract_history_view_search hr.contract.history.search hr.contract.history search New
hr_contract_view_activity hr.contract.activity hr.contract activity New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_kanban hr.contract.kanban hr.contract kanban New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.list hr.contract list New
hr_departure_wizard_view_form hr.departure.wizard.view.form.extend hr.departure.wizard xpath Inherits hr.hr_departure_wizard_view_form
hr_employee_view_graph_inherit_hr_contract hr.employee.view.graph hr.employee field Inherits hr.hr_employee_view_graph
hr_employee_view_pivot_inherit_hr_contract hr.employee.view.pivot hr.employee field Inherits hr.hr_employee_view_pivot
hr_employee_view_search hr.employee.view.search.inherit.contract hr.employee xpath Inherits hr.view_employee_filter
hr_employee_view_search hr.employee.view.search hr.employee data Inherits hr.view_employee_filter
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
hr_hr_employee_view_form3 hr.hr.employee.view.form3 hr.employee data Inherits hr.view_employee_form
hr_user_view_form hr.user.preferences.view.form.contract.inherit res.users xpath Inherits hr.res_users_view_form_profile
res_config_settings_view_form res.config.settings.view.form.inherit.hr.contract res.config.settings xpath Inherits hr.res_config_settings_view_form
resource_calendar_view_form resource.calendar.view.form.inherit.hr.contract resource.calendar div Inherits resource.resource_calendar_form
resource_calendar_view_tree resource.calendar.view.list.inherit.hr.contract resource.calendar field Inherits resource.view_resource_calendar_tree
view_employee_public_form hr.employee.public xpath Inherits hr.hr_employee_public_view_form
view_employee_tree hr.employee.list hr.employee xpath Inherits hr.view_employee_tree
Models touched (15)

New fields (27)
  • active Boolean
    default=True
  • active_employee Boolean
    related='employee_id.active' string='Active Employee'
  • calendar_mismatch Boolean
    compute='_compute_calendar_mismatch' compute_sudo=True
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    compute='_compute_employee_contract' default=<expr> readonly=False required=True store=True args: 'res.company'
  • contract_type_id Many2one → hr.contract.type
    tracking=True args: 'hr.contract.type', 'Contract Type'
  • contract_wage Monetary
    compute='_compute_contract_wage' args: 'Contract Wage'
  • contracts_count Integer
    groups='hr_contract.group_hr_contract_employee_manager' related='employee_id.contracts_count'
  • country_code Char
    depends=['company_country_id'] readonly=True related='company_country_id.code'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    help="End date of the contract (if it's a fixed-term contract)." tracking=True args: 'End Date'
  • date_start Date
    default=fields.Date.today index=True required=True tracking=True args: 'Start Date'
  • department_id Many2one → hr.department
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True string='Employee' tracking=True args: 'hr.employee'
  • first_contract_date Date
    related='employee_id.first_contract_date'
  • hr_responsible_id Many2one → res.users
    domain=_get_hr_responsible_domain help="Person responsible for validating the employee's contracts." tracking=True args: 'res.users', 'HR Responsible'
  • job_id Many2one → hr.job
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Job Position' args: 'hr.job'
  • kanban_state Selection
    copy=False default='normal' string='Kanban State' tracking=True args: [('normal', 'Ongoing'), ('done', 'Ready'), ('blocked', 'Warning')]
  • name Char
    required=True args: 'Contract Reference'
  • notes Html
    args: 'Notes'
  • permit_no Char
    readonly=False related='employee_id.permit_no' args: 'Work Permit No'
  • resource_calendar_id Many2one → resource.calendar
    compute='_compute_employee_contract' copy=False default=<expr> domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True readonly=False store=True tracking=True args: 'resource.calendar', 'Working Schedule'
  • state Selection
    copy=False default='draft' group_expand=True help='Status of the contract' string='Status' tracking=True args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    compute='_compute_structure_type_id' readonly=False store=True string='Salary Structure Type' tracking=True args: 'hr.payroll.structure.type'
  • trial_date_end Date
    help='End date of the trial period (if there is one).' args: 'End of Trial Period'
  • visa_no Char
    readonly=False related='employee_id.visa_no' args: 'Visa No'
  • wage Monetary
    aggregator='avg' help="Employee's monthly gross wage." required=True tracking=True args: 'Wage'
Public methods (6)
  • action_open_contract_form(self)
  • action_open_contract_history(self)
  • action_open_contract_list(self)
  • create(self, vals_list)
    @api.model_create_multi
  • update_state(self)
    @api.model
  • write(self, vals)

New fields (24)
  • active_employee Boolean
    readonly=True args: 'Active Employee'
  • activity_state Selection
    related='contract_id.activity_state'
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • contract_count Integer
    compute='_compute_contract_count' string='# Contracts'
  • contract_id Many2one → hr.contract
    readonly=True args: 'hr.contract'
  • contract_ids One2many → hr.contract
    compute='_compute_contract_ids' compute_sudo=True readonly=True string='Contracts' args: 'hr.contract'
  • contract_type_id Many2one → hr.contract.type
    readonly=True args: 'hr.contract.type', 'Contract Type'
  • country_code Char
    depends=['company_country_id'] readonly=True related='company_country_id.code'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    readonly=True args: 'End Date'
  • date_hired Date
    readonly=True args: 'Hire Date'
  • date_start Date
    readonly=True args: 'Start 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'
  • hr_responsible_id Many2one → res.users
    readonly=True string='HR Responsible' args: 'res.users'
  • is_under_contract Boolean
    readonly=True args: 'Is Currently Under Contract'
  • job_id Many2one → hr.job
    readonly=True string='Job Position' args: 'hr.job'
  • name Char
    readonly=True args: 'Contract Name'
  • resource_calendar_id Many2one → resource.calendar
    readonly=True string='Working Schedule' args: 'resource.calendar'
  • state Selection
    readonly=True string='Status' args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    readonly=True string='Salary Structure Type' args: 'hr.payroll.structure.type'
  • under_contract_state Selection
    compute='_compute_under_contract_state' string='Contractual Status' args: [('done', 'Under Contract'), ('blocked', 'Not Under Contract')]
  • wage Monetary
    aggregator='avg' help="Employee's monthly gross wage." readonly=True args: 'Wage'
Public methods (2)
  • hr_contract_view_form_new_action(self)
  • init(self)

New fields (1)
  • set_date_end Boolean
    default=<expr> help='Set the end date on the current contract.' string='Set Contract End Date'
Public methods (1)
  • action_register_departure(self)
    If set_date_end is checked, set the departure date as the end date to current running contract, and cancel all draft contracts

New fields (8)
  • calendar_mismatch Boolean
    groups='base.group_system,hr.group_hr_user' related='contract_id.calendar_mismatch'
  • contract_id Many2one → hr.contract
    copy=False domain="[('company_id', '=', company_id), ('employee_id', '=', id)]" groups='hr.group_hr_user' help='Current contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    groups='hr.group_hr_user' string='Employee Contracts' args: 'hr.contract', 'employee_id'
  • contract_warning Boolean
    compute='_compute_contract_warning' groups='hr.group_hr_user' store=True string='Contract Warning'
  • contracts_count Integer
    compute='_compute_contracts_count' groups='hr.group_hr_user' string='Contract Count'
  • first_contract_date Date
    compute='_compute_first_contract_date' groups='hr.group_hr_user' store=True
  • legal_name Char
    compute='_compute_legal_name' groups='hr.group_hr_user' readonly=False store=True
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
Public methods (3)
  • action_open_contract(self)
  • filter_valid(self, checked_date)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • first_contract_date Date
    compute='_compute_manager_only_fields' search='_search_first_contract_date'
Public methods (0)

No public methods.

New fields (4)
  • country_code Char
    related='country_id.code'
  • country_id Many2one → res.country
    default=<expr> string='Country' args: 'res.country'
  • default_resource_calendar_id Many2one → resource.calendar
    default=<expr> args: 'resource.calendar', 'Default Working Hours'
  • name Char
    args: 'Salary Structure Type'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • contract_expiration_notice_period Integer
    default=7 args: 'Contract Expiry Notice Period'
  • work_permit_expiration_notice_period Integer
    default=60 args: 'Work Permit Expiry Notice Period'
Public methods (0)

No public methods.

New fields (2)
  • contract_expiration_notice_period Integer
    readonly=False related='company_id.contract_expiration_notice_period' string='Contract Expiry Notice Period'
  • work_permit_expiration_notice_period Integer
    readonly=False related='company_id.work_permit_expiration_notice_period' string='Work Permit Expiry Notice Period'
Public methods (0)

No public methods.

New fields (2)
  • bank_account_id Many2one
    related='employee_id.bank_account_id'
  • vehicle Char
    related='employee_id.vehicle'
Public methods (1)
  • SELF_READABLE_FIELDS(self)
    @property

New fields (1)
  • contracts_count Integer
    compute='_compute_contracts_count' groups='hr_contract.group_hr_contract_manager' args: '# Contracts using it'
Public methods (2)
  • action_open_contracts(self)
  • transfer_leaves_to(self, other_calendar, resources=None, from_date=None)
    Transfer some resource.calendar.leaves from 'self' to another calendar 'other_calendar'. Transfered leaves linked to `resources` (or all if `resources` is None) and starting after 'from_date' (or today if None).

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

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_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Contracts
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Xavier ALT, Christophe Simonis, Xavier Morel, GitHub, Damien Bouvy, Yannick Tivisse, Odoo Online, Pierre Masereel, Jorge Pinna Puissant, Alexandre Kühn, Xavier-Do, Victor Feyens, alt-odoo, Samuel Degueldre, Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, Kevin Baptiste, Philippe Wauthy, pedrambiria, sofiagvaladze, Audric Onockx (auon), Dossogne Bertrand, bve-odoo, Thomas Lefebvre (thle), Louis Wicket (wil), Pierre-Yves Dufays, Jurgen (jugj), Levi Siuzdak (sile), Dylan Kiss (dyki), FrancoisGe, mehjabin, prye-odoo, Kartik Chavda, TN Tommy, Brieuc-brd, Mattis Megevand (mmeg), Paul Stroobant, dasz, Youssef Bashandy, bary, Flotchet, jugj-odoo, Ahmad (khah), Louis (wil), Elisabeth Dickinson, Kacper Gasior, Abdelrahman Mahmoud (amah), Sina Chaichi Maleki (cmsi), Carmine, Arthur Pierrot (arpi), Arthur Pierrot
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:10
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
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
hr_contract_history_view_form hr.contract.history.form hr.contract.history form New
hr_contract_history_view_kanban hr.contract.history.view.kanban hr.contract.history kanban New
hr_contract_history_view_list hr.contract.history.list hr.contract.history tree New
hr_contract_history_view_search hr.contract.history.search hr.contract.history search New
hr_contract_view_activity hr.contract.activity hr.contract activity New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_kanban hr.contract.kanban hr.contract kanban New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.tree hr.contract tree New
hr_departure_wizard_view_form hr.departure.wizard.view.form.extend hr.departure.wizard xpath Inherits hr.hr_departure_wizard_view_form
hr_employee_view_graph_inherit_hr_contract hr.employee.view.graph hr.employee field Inherits hr.hr_employee_view_graph
hr_employee_view_pivot_inherit_hr_contract hr.employee.view.pivot hr.employee field Inherits hr.hr_employee_view_pivot
hr_employee_view_search hr.employee.view.search.inherit.contract hr.employee xpath Inherits hr.view_employee_filter
hr_employee_view_search hr.employee.view.search hr.employee data Inherits hr.view_employee_filter
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
hr_hr_employee_view_form3 hr.hr.employee.view.form3 hr.employee data Inherits hr.view_employee_form
hr_user_view_form hr.user.preferences.view.form.contract.inherit res.users xpath Inherits hr.res_users_view_form_profile
res_config_settings_view_form res.config.settings.view.form.inherit.hr.contract res.config.settings xpath Inherits hr.res_config_settings_view_form
resource_calendar_view_form resource.calendar.view.form.inherit.hr.contract resource.calendar div Inherits resource.resource_calendar_form
resource_calendar_view_tree resource.calendar.view.tree.inherit.hr.contract resource.calendar field Inherits resource.view_resource_calendar_tree
view_employee_public_form hr.employee.public xpath Inherits hr.hr_employee_public_view_form
view_employee_tree hr.employee.tree hr.employee xpath Inherits hr.view_employee_tree
Models touched (14)

New fields (26)
  • active Boolean
    default=True
  • calendar_mismatch Boolean
    compute='_compute_calendar_mismatch' compute_sudo=True
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    compute='_compute_employee_contract' default=<expr> readonly=False required=True store=True args: 'res.company'
  • contract_type_id Many2one → hr.contract.type
    tracking=True args: 'hr.contract.type', 'Contract Type'
  • contract_wage Monetary
    compute='_compute_contract_wage' args: 'Contract Wage'
  • contracts_count Integer
    related='employee_id.contracts_count'
  • country_code Char
    depends=['company_country_id'] readonly=True related='company_country_id.code'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    help="End date of the contract (if it's a fixed-term contract)." tracking=True args: 'End Date'
  • date_start Date
    default=fields.Date.today index=True required=True tracking=True args: 'Start Date'
  • department_id Many2one → hr.department
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True string='Employee' tracking=True args: 'hr.employee'
  • first_contract_date Date
    related='employee_id.first_contract_date'
  • hr_responsible_id Many2one → res.users
    domain=_get_hr_responsible_domain help="Person responsible for validating the employee's contracts." tracking=True args: 'res.users', 'HR Responsible'
  • job_id Many2one → hr.job
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Job Position' args: 'hr.job'
  • kanban_state Selection
    copy=False default='normal' string='Kanban State' tracking=True args: [('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')]
  • name Char
    required=True args: 'Contract Reference'
  • notes Html
    args: 'Notes'
  • permit_no Char
    readonly=False related='employee_id.permit_no' args: 'Work Permit No'
  • resource_calendar_id Many2one → resource.calendar
    compute='_compute_employee_contract' copy=False default=<expr> domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True readonly=False store=True tracking=True args: 'resource.calendar', 'Working Schedule'
  • state Selection
    copy=False default='draft' group_expand='_expand_states' help='Status of the contract' string='Status' tracking=True args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    compute='_compute_structure_type_id' readonly=False store=True string='Salary Structure Type' tracking=True args: 'hr.payroll.structure.type'
  • trial_date_end Date
    help='End date of the trial period (if there is one).' args: 'End of Trial Period'
  • visa_no Char
    readonly=False related='employee_id.visa_no' args: 'Visa No'
  • wage Monetary
    group_operator='avg' help="Employee's monthly gross wage." required=True tracking=True args: 'Wage'
Public methods (6)
  • action_open_contract_form(self)
  • action_open_contract_history(self)
  • action_open_contract_list(self)
  • create(self, vals_list)
    @api.model_create_multi
  • update_state(self)
    @api.model
  • write(self, vals)

New fields (24)
  • active_employee Boolean
    readonly=True args: 'Active Employee'
  • activity_state Selection
    related='contract_id.activity_state'
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • contract_count Integer
    compute='_compute_contract_count' string='# Contracts'
  • contract_id Many2one → hr.contract
    readonly=True args: 'hr.contract'
  • contract_ids One2many → hr.contract
    compute='_compute_contract_ids' compute_sudo=True readonly=True string='Contracts' args: 'hr.contract'
  • contract_type_id Many2one → hr.contract.type
    readonly=True args: 'hr.contract.type', 'Contract Type'
  • country_code Char
    depends=['company_country_id'] readonly=True related='company_country_id.code'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    readonly=True args: 'End Date'
  • date_hired Date
    readonly=True args: 'Hire Date'
  • date_start Date
    readonly=True args: 'Start 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'
  • hr_responsible_id Many2one → res.users
    readonly=True string='HR Responsible' args: 'res.users'
  • is_under_contract Boolean
    readonly=True args: 'Is Currently Under Contract'
  • job_id Many2one → hr.job
    readonly=True string='Job Position' args: 'hr.job'
  • name Char
    readonly=True args: 'Contract Name'
  • resource_calendar_id Many2one → resource.calendar
    readonly=True string='Working Schedule' args: 'resource.calendar'
  • state Selection
    readonly=True string='Status' args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    readonly=True string='Salary Structure Type' args: 'hr.payroll.structure.type'
  • under_contract_state Selection
    compute='_compute_under_contract_state' string='Contractual Status' args: [('done', 'Under Contract'), ('blocked', 'Not Under Contract')]
  • wage Monetary
    group_operator='avg' help="Employee's monthly gross wage." readonly=True args: 'Wage'
Public methods (2)
  • hr_contract_view_form_new_action(self)
  • init(self)

New fields (1)
  • set_date_end Boolean
    default=<expr> help='Set the end date on the current contract.' string='Set Contract End Date'
Public methods (1)
  • action_register_departure(self)
    If set_date_end is checked, set the departure date as the end date to current running contract, and cancel all draft contracts

New fields (7)
  • calendar_mismatch Boolean
    related='contract_id.calendar_mismatch'
  • contract_id Many2one → hr.contract
    copy=False domain="[('company_id', '=', company_id), ('employee_id', '=', id)]" groups='hr.group_hr_user' help='Current contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    string='Employee Contracts' args: 'hr.contract', 'employee_id'
  • contract_warning Boolean
    compute='_compute_contract_warning' groups='hr.group_hr_user' store=True string='Contract Warning'
  • contracts_count Integer
    compute='_compute_contracts_count' string='Contract Count'
  • first_contract_date Date
    compute='_compute_first_contract_date' groups='hr.group_hr_user' store=True
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
Public methods (2)
  • action_open_contract(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • first_contract_date Date
    compute='_compute_manager_only_fields' search='_search_first_contract_date'
Public methods (0)

No public methods.

New fields (4)
  • country_code Char
    related='country_id.code'
  • country_id Many2one → res.country
    default=<expr> string='Country' args: 'res.country'
  • default_resource_calendar_id Many2one → resource.calendar
    default=<expr> args: 'resource.calendar', 'Default Working Hours'
  • name Char
    args: 'Salary Structure Type'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • contract_expiration_notice_period Integer
    default=7 args: 'Contract Expiry Notice Period'
  • work_permit_expiration_notice_period Integer
    default=60 args: 'Work Permit Expiry Notice Period'
Public methods (0)

No public methods.

New fields (2)
  • contract_expiration_notice_period Integer
    readonly=False related='company_id.contract_expiration_notice_period' string='Contract Expiry Notice Period'
  • work_permit_expiration_notice_period Integer
    readonly=False related='company_id.work_permit_expiration_notice_period' string='Work Permit Expiry Notice Period'
Public methods (0)

No public methods.

New fields (2)
  • bank_account_id Many2one
    related='employee_id.bank_account_id'
  • vehicle Char
    related='employee_id.vehicle'
Public methods (1)
  • SELF_READABLE_FIELDS(self)
    @property

New fields (1)
  • contracts_count Integer
    compute='_compute_contracts_count' groups='hr_contract.group_hr_contract_manager' args: '# Contracts using it'
Public methods (2)
  • action_open_contracts(self)
  • transfer_leaves_to(self, other_calendar, resources=None, from_date=None)
    Transfer some resource.calendar.leaves from 'self' to another calendar 'other_calendar'. Transfered leaves linked to `resources` (or all if `resources` is None) and starting after 'from_date' (or today if None).

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

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_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Contracts
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Denis Ledoux, Christophe Simonis, Xavier Morel, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Xavier-Do, David Tran, Romeo Fragomeli, Luis Torres, Victor Feyens, alt-odoo, Prakash Prajapati, Tiffany Chang (tic), Gorash, Pierre Paridans, William Braeckman, Kevin Baptiste, Stefan-Calin Crainiciuc (stcc), Philippe Wauthy, pedrambiria, sofiagvaladze, Audric Onockx (auon), Thibault Libioulle, Dossogne Bertrand, bve-odoo, Thomas Lefebvre (thle), Louis Wicket (wil), Jurgen (jugj), Levi Siuzdak (sile), TN Tommy, Paul Stroobant, bary, Flotchet, jugj-odoo, Martin Trigaux (mat), Ahmad (khah), Kacper Gasior, Abdelrahman Mahmoud (amah)
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:53
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
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
hr_contract_history_view_form hr.contract.history.form hr.contract.history form New
hr_contract_history_view_kanban hr.contract.history.view.kanban hr.contract.history kanban New
hr_contract_history_view_list hr.contract.history.list hr.contract.history tree New
hr_contract_history_view_search hr.contract.history.search hr.contract.history search New
hr_contract_view_activity hr.contract.activity hr.contract activity New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_kanban hr.contract.kanban hr.contract kanban New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.tree hr.contract tree New
hr_departure_wizard_view_form hr.departure.wizard.view.form.extend hr.departure.wizard xpath Inherits hr.hr_departure_wizard_view_form
hr_employee_public_view_form hr.employee.public.form hr.employee.public field Inherits hr.hr_employee_public_view_form
hr_employee_view_search hr.employee.view.search hr.employee data Inherits hr.view_employee_filter
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
hr_user_view_form hr.user.preferences.view.form.contract.inherit res.users xpath Inherits hr.res_users_view_form_profile
resource_calendar_view_form resource.calendar.view.form.inherit.hr.contract resource.calendar div Inherits resource.resource_calendar_form
resource_calendar_view_tree resource.calendar.view.tree.inherit.hr.contract resource.calendar field Inherits resource.view_resource_calendar_tree
view_employee_tree hr.employee.tree hr.employee xpath Inherits hr.view_employee_tree
Models touched (10)

New fields (26)
  • active Boolean
    default=True
  • calendar_mismatch Boolean
    compute='_compute_calendar_mismatch' compute_sudo=True
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    compute='_compute_employee_contract' default=<expr> readonly=False required=True store=True args: 'res.company'
  • contract_type_id Many2one → hr.contract.type
    args: 'hr.contract.type', 'Contract Type'
  • contract_wage Monetary
    compute='_compute_contract_wage' args: 'Contract Wage'
  • country_code Char
    depends=['company_country_id'] readonly=True related='company_country_id.code'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    help="End date of the contract (if it's a fixed-term contract)." tracking=True args: 'End Date'
  • date_start Date
    default=fields.Date.today index=True required=True tracking=True args: 'Start Date'
  • department_id Many2one → hr.department
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Employee' tracking=True args: 'hr.employee'
  • first_contract_date Date
    related='employee_id.first_contract_date'
  • hr_responsible_id Many2one → res.users
    domain=_get_hr_responsible_domain help="Person responsible for validating the employee's contracts." tracking=True args: 'res.users', 'HR Responsible'
  • job_id Many2one → hr.job
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Job Position' args: 'hr.job'
  • kanban_state Selection
    copy=False default='normal' string='Kanban State' tracking=True args: [('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')]
  • name Char
    required=True args: 'Contract Reference'
  • notes Html
    args: 'Notes'
  • permit_no Char
    readonly=False related='employee_id.permit_no' args: 'Work Permit No'
  • resource_calendar_id Many2one → resource.calendar
    compute='_compute_employee_contract' copy=False default=<expr> domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True readonly=False store=True args: 'resource.calendar', 'Working Schedule'
  • state Selection
    copy=False default='draft' group_expand='_expand_states' help='Status of the contract' string='Status' tracking=True args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    string='Salary Structure Type' args: 'hr.payroll.structure.type'
  • trial_date_end Date
    help='End date of the trial period (if there is one).' args: 'End of Trial Period'
  • visa_expire Date
    readonly=False related='employee_id.visa_expire' args: 'Visa Expiration Date'
  • visa_no Char
    readonly=False related='employee_id.visa_no' args: 'Visa No'
  • wage Monetary
    help="Employee's monthly gross wage." required=True tracking=True args: 'Wage'
Public methods (4)
  • action_open_contract_form(self)
  • create(self, vals_list)
    @api.model_create_multi
  • update_state(self)
    @api.model
  • write(self, vals)

New fields (25)
  • active_employee Boolean
    readonly=True args: 'Active Employee'
  • activity_state Selection
    related='contract_id.activity_state'
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • contract_count Integer
    compute='_compute_contract_count' string='# Contracts'
  • contract_id Many2one → hr.contract
    readonly=True args: 'hr.contract'
  • contract_ids One2many → hr.contract
    compute='_compute_contract_ids' compute_sudo=True readonly=True string='Contracts' args: 'hr.contract'
  • contract_type_id Many2one → hr.contract.type
    readonly=True args: 'hr.contract.type', 'Contract Type'
  • country_code Char
    depends=['company_country_id'] readonly=True related='company_country_id.code'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    readonly=True args: 'End Date'
  • date_hired Date
    readonly=True args: 'Hire Date'
  • date_start Date
    readonly=True args: 'Start Date'
  • department_id Many2one → hr.department
    readonly=True string='Department' args: 'hr.department'
  • display_name Char
    compute='_compute_display_name'
  • employee_id Many2one → hr.employee
    readonly=True string='Employee' args: 'hr.employee'
  • hr_responsible_id Many2one → res.users
    readonly=True string='HR Responsible' args: 'res.users'
  • is_under_contract Boolean
    readonly=True args: 'Is Currently Under Contract'
  • job_id Many2one → hr.job
    readonly=True string='Job Position' args: 'hr.job'
  • name Char
    readonly=True args: 'Contract Name'
  • resource_calendar_id Many2one → resource.calendar
    readonly=True string='Working Schedule' args: 'resource.calendar'
  • state Selection
    readonly=True string='Status' args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    readonly=True string='Salary Structure Type' args: 'hr.payroll.structure.type'
  • under_contract_state Selection
    compute='_compute_under_contract_state' string='Contractual Status' args: [('done', 'Under Contract'), ('blocked', 'Not Under Contract')]
  • wage Monetary
    group_operator='avg' help="Employee's monthly gross wage." readonly=True args: 'Wage'
Public methods (2)
  • hr_contract_view_form_new_action(self)
  • init(self)

New fields (1)
  • set_date_end Boolean
    default=<expr> help='Set the end date on the current contract.' string='Set Contract End Date'
Public methods (1)
  • action_register_departure(self)
    If set_date_end is checked, set the departure date as the end date to current running contract, and cancel all draft contracts

New fields (7)
  • calendar_mismatch Boolean
    related='contract_id.calendar_mismatch'
  • contract_id Many2one → hr.contract
    copy=False domain="[('company_id', '=', company_id), ('employee_id', '=', id)]" groups='hr.group_hr_user' help='Current contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    string='Employee Contracts' args: 'hr.contract', 'employee_id'
  • contract_warning Boolean
    compute='_compute_contract_warning' groups='hr.group_hr_user' store=True string='Contract Warning'
  • contracts_count Integer
    compute='_compute_contracts_count' string='Contract Count'
  • first_contract_date Date
    compute='_compute_first_contract_date' groups='hr.group_hr_user' store=True
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
Public methods (2)
  • action_open_contract_history(self)
  • write(self, vals)

New fields (1)
  • first_contract_date Date
    groups='base.group_user' readonly=True
Public methods (0)

No public methods.

New fields (3)
  • country_id Many2one → res.country
    default=<expr> string='Country' args: 'res.country'
  • default_resource_calendar_id Many2one → resource.calendar
    default=<expr> args: 'resource.calendar', 'Default Working Hours'
  • name Char
    args: 'Salary Structure Type'
Public methods (0)

No public methods.

New fields (2)
  • bank_account_id Many2one
    related='employee_id.bank_account_id'
  • vehicle Char
    related='employee_id.vehicle'
Public methods (1)
  • SELF_READABLE_FIELDS(self)
    @property

New fields (1)
  • contracts_count Integer
    compute='_compute_contracts_count' groups='hr_contract.group_hr_contract_manager' args: '# Contracts using it'
Public methods (2)
  • action_open_contracts(self)
  • transfer_leaves_to(self, other_calendar, resources=None, from_date=None)
    Transfer some resource.calendar.leaves from 'self' to another calendar 'other_calendar'. Transfered leaves linked to `resources` (or all if `resources` is None) and starting after 'from_date' (or today if None).

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

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_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Contracts
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Barad Mahendra, Yannick Tivisse, Adrien Dieudonne, Xavier-Do, David Tran, Luis Torres, Victor Feyens, alt-odoo, Julien Mougenot, Adrien Widart, Tiffany Chang (tic), Arnaud Joset, William Braeckman, Kevin Baptiste, Stefan-Calin Crainiciuc (stcc), Hardik Prajapati, sofiagvaladze, Thibault Libioulle, Laurent Stukkens (LTU), bve-odoo, Thomas Lefebvre (thle), Louis Wicket (wil), Levi Siuzdak (sile), TN Tommy, Leonardo Pavan Rocha, Dawn Hwang, Paul Stroobant, bary, Flotchet, jugj-odoo, Ahmad (khah)
WEBSITE
WEBSITEhttps://www.odoo.com/app/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25: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
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
hr_contract_history_view_form hr.contract.history.form hr.contract.history form New
hr_contract_history_view_kanban hr.contract.history.view.kanban hr.contract.history kanban New
hr_contract_history_view_list hr.contract.history.list hr.contract.history tree New
hr_contract_history_view_search hr.contract.history.search hr.contract.history search New
hr_contract_view_activity hr.contract.activity hr.contract activity New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_kanban hr.contract.kanban hr.contract kanban New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.tree hr.contract tree New
hr_departure_wizard_view_form hr.departure.wizard.view.form.extend hr.departure.wizard xpath Inherits hr.hr_departure_wizard_view_form
hr_employee_public_view_form hr.employee.public.form hr.employee.public field Inherits hr.hr_employee_public_view_form
hr_employee_view_search hr.employee.view.search hr.employee data Inherits hr.view_employee_filter
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
hr_user_view_form hr.user.preferences.view.form.contract.inherit res.users xpath Inherits hr.res_users_view_form_profile
resource_calendar_view_form resource.calendar.view.form.inherit.hr.contract resource.calendar div Inherits resource.resource_calendar_form
resource_calendar_view_tree resource.calendar.view.tree.inherit.hr.contract resource.calendar field Inherits resource.view_resource_calendar_tree
view_employee_tree hr.employee.tree hr.employee xpath Inherits hr.view_employee_tree
Models touched (10)

New fields (26)
  • active Boolean
    default=True
  • calendar_mismatch Boolean
    compute='_compute_calendar_mismatch'
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    compute='_compute_employee_contract' default=<expr> readonly=False required=True store=True args: 'res.company'
  • contract_type_id Many2one → hr.contract.type
    args: 'hr.contract.type', 'Contract Type'
  • contract_wage Monetary
    compute='_compute_contract_wage' args: 'Contract Wage'
  • country_code Char
    readonly=True related='company_country_id.code'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    help="End date of the contract (if it's a fixed-term contract)." tracking=True args: 'End Date'
  • date_start Date
    default=fields.Date.today help='Start date of the contract.' index=True required=True tracking=True args: 'Start Date'
  • department_id Many2one → hr.department
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Employee' tracking=True args: 'hr.employee'
  • first_contract_date Date
    related='employee_id.first_contract_date'
  • hr_responsible_id Many2one → res.users
    help="Person responsible for validating the employee's contracts." tracking=True args: 'res.users', 'HR Responsible'
  • job_id Many2one → hr.job
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Job Position' args: 'hr.job'
  • kanban_state Selection
    copy=False default='normal' string='Kanban State' tracking=True args: [('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')]
  • name Char
    required=True args: 'Contract Reference'
  • notes Html
    args: 'Notes'
  • permit_no Char
    readonly=False related='employee_id.permit_no' args: 'Work Permit No'
  • resource_calendar_id Many2one → resource.calendar
    compute='_compute_employee_contract' copy=False default=<expr> domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True readonly=False store=True args: 'resource.calendar', 'Working Schedule'
  • state Selection
    copy=False default='draft' group_expand='_expand_states' help='Status of the contract' string='Status' tracking=True args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    string='Salary Structure Type' args: 'hr.payroll.structure.type'
  • trial_date_end Date
    help='End date of the trial period (if there is one).' args: 'End of Trial Period'
  • visa_expire Date
    readonly=False related='employee_id.visa_expire' args: 'Visa Expiration Date'
  • visa_no Char
    readonly=False related='employee_id.visa_no' args: 'Visa No'
  • wage Monetary
    help="Employee's monthly gross wage." required=True tracking=True args: 'Wage'
Public methods (4)
  • action_open_contract_form(self)
  • create(self, vals)
    @api.model
  • update_state(self)
    @api.model
  • write(self, vals)

New fields (25)
  • active_employee Boolean
    readonly=True args: 'Active Employee'
  • activity_state Selection
    related='contract_id.activity_state'
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • contract_count Integer
    compute='_compute_contract_count' string='# Contracts'
  • contract_id Many2one → hr.contract
    readonly=True args: 'hr.contract'
  • contract_ids One2many → hr.contract
    compute='_compute_contract_ids' readonly=True string='Contracts' args: 'hr.contract'
  • contract_type_id Many2one → hr.contract.type
    readonly=True args: 'hr.contract.type', 'Contract Type'
  • country_code Char
    readonly=True related='company_country_id.code'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    readonly=True args: 'End Date'
  • date_hired Date
    readonly=True args: 'Hire Date'
  • date_start Date
    readonly=True args: 'Start Date'
  • department_id Many2one → hr.department
    readonly=True string='Department' args: 'hr.department'
  • display_name Char
    compute='_compute_display_name'
  • employee_id Many2one → hr.employee
    readonly=True string='Employee' args: 'hr.employee'
  • hr_responsible_id Many2one → res.users
    readonly=True string='HR Responsible' args: 'res.users'
  • is_under_contract Boolean
    readonly=True args: 'Is Currently Under Contract'
  • job_id Many2one → hr.job
    readonly=True string='Job Position' args: 'hr.job'
  • name Char
    readonly=True args: 'Contract Name'
  • resource_calendar_id Many2one → resource.calendar
    readonly=True string='Working Schedule' args: 'resource.calendar'
  • state Selection
    readonly=True string='Status' args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    readonly=True string='Salary Structure Type' args: 'hr.payroll.structure.type'
  • under_contract_state Selection
    compute='_compute_under_contract_state' string='Contractual Status' args: [('done', 'Under Contract'), ('blocked', 'Not Under Contract')]
  • wage Monetary
    group_operator='avg' help="Employee's monthly gross wage." readonly=True args: 'Wage'
Public methods (2)
  • hr_contract_view_form_new_action(self)
  • init(self)

New fields (1)
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (1)
  • set_date_end Boolean
    default=True help='Set the end date on the current contract.' string='Set Contract End Date'
Public methods (1)
  • action_register_departure(self)
    If set_date_end is checked, set the departure date as the end date to current running contract, and cancel all draft contracts

New fields (7)
  • calendar_mismatch Boolean
    related='contract_id.calendar_mismatch'
  • contract_id Many2one → hr.contract
    copy=False domain="[('company_id', '=', company_id), ('employee_id', '=', id)]" groups='hr.group_hr_user' help='Current contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    string='Employee Contracts' args: 'hr.contract', 'employee_id'
  • contract_warning Boolean
    compute='_compute_contract_warning' groups='hr.group_hr_user' store=True string='Contract Warning'
  • contracts_count Integer
    compute='_compute_contracts_count' string='Contract Count'
  • first_contract_date Date
    compute='_compute_first_contract_date' groups='hr.group_hr_user' store=True
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
Public methods (2)
  • action_open_contract_history(self)
  • write(self, vals)

New fields (1)
  • first_contract_date Date
    groups='base.group_user' related='employee_id.first_contract_date'
Public methods (0)

No public methods.

New fields (3)
  • country_id Many2one → res.country
    default=<expr> string='Country' args: 'res.country'
  • default_resource_calendar_id Many2one → resource.calendar
    default=<expr> args: 'resource.calendar', 'Default Working Hours'
  • name Char
    args: 'Salary Structure Type'
Public methods (0)

No public methods.

New fields (2)
  • bank_account_id Many2one
    related='employee_id.bank_account_id'
  • vehicle Char
    related='employee_id.vehicle'
Public methods (1)
  • SELF_READABLE_FIELDS(self)
    @property

New fields (1)
  • contracts_count Integer
    compute='_compute_contracts_count' groups='hr_contract.group_hr_contract_manager' args: '# Contracts using it'
Public methods (2)
  • action_open_contracts(self)
  • transfer_leaves_to(self, other_calendar, resources=None, from_date=None)
    Transfer some resource.calendar.leaves from 'self' to another calendar 'other_calendar'. Transfered leaves linked to `resources` (or all if `resources` is None) and starting after 'from_date' (or today if None).

New fields (0)

No new fields.

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_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Contracts
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Joren Van Onder, Nicolas Martinelli, Aaron Bohy, Barad Mahendra, Yannick Tivisse, Adrien Dieudonne, Julien Castiaux, Xavier-Do, Victor Feyens, Enric Tobella, Sébastien Theys, Lucas Lefèvre, Adrien Widart, jbm-odoo, Arnaud Joset, Kevin Baptiste, sofiagvaladze, bve-odoo, Thomas Lefebvre (thle), Louis Wicket (wil), Simon Genin (ges), TN Tommy
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:30
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
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
assets_backend assets_backend ir.ui.view qweb Inherits web.assets_backend
hr_contract_view_activity hr.contract.activity hr.contract activity New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_kanban hr.contract.kanban hr.contract kanban New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.tree hr.contract tree New
hr_departure_wizard_view_form hr.departure.wizard.view.form.extend hr.departure.wizard xpath Inherits hr.hr_departure_wizard_view_form
hr_employee_view_search hr.employee.view.search hr.employee data Inherits hr.view_employee_filter
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
hr_user_view_form hr.user.preferences.view.form.contract.inherit res.users xpath Inherits hr.res_users_view_form_profile
Models touched (6)

New fields (23)
  • active Boolean
    default=True
  • calendar_mismatch Boolean
    compute='_compute_calendar_mismatch'
  • company_country_id Many2one → res.country
    readonly=True related='company_id.country_id' string='Company country' args: 'res.country'
  • company_id Many2one → res.company
    compute='_compute_employee_contract' default=<expr> readonly=False required=True store=True args: 'res.company'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    help="End date of the contract (if it's a fixed-term contract)." tracking=True args: 'End Date'
  • date_start Date
    default=fields.Date.today help='Start date of the contract.' required=True tracking=True args: 'Start Date'
  • department_id Many2one → hr.department
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Employee' tracking=True args: 'hr.employee'
  • first_contract_date Date
    related='employee_id.first_contract_date'
  • hr_responsible_id Many2one → res.users
    help="Person responsible for validating the employee's contracts." tracking=True args: 'res.users', 'HR Responsible'
  • job_id Many2one → hr.job
    compute='_compute_employee_contract' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" readonly=False store=True string='Job Position' args: 'hr.job'
  • kanban_state Selection
    copy=False default='normal' string='Kanban State' tracking=True args: [('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')]
  • name Char
    required=True args: 'Contract Reference'
  • notes Text
    args: 'Notes'
  • permit_no Char
    readonly=False related='employee_id.permit_no' args: 'Work Permit No'
  • resource_calendar_id Many2one → resource.calendar
    compute='_compute_employee_contract' copy=False default=<expr> domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True readonly=False store=True args: 'resource.calendar', 'Working Schedule'
  • state Selection
    copy=False default='draft' group_expand='_expand_states' help='Status of the contract' string='Status' tracking=True args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • structure_type_id Many2one → hr.payroll.structure.type
    string='Salary Structure Type' args: 'hr.payroll.structure.type'
  • trial_date_end Date
    help='End date of the trial period (if there is one).' args: 'End of Trial Period'
  • visa_expire Date
    readonly=False related='employee_id.visa_expire' args: 'Visa Expire Date'
  • visa_no Char
    readonly=False related='employee_id.visa_no' args: 'Visa No'
  • wage Monetary
    help="Employee's monthly gross wage." required=True tracking=True args: 'Wage'
Public methods (3)
  • create(self, vals)
    @api.model
  • update_state(self)
    @api.model
  • write(self, vals)

New fields (1)
  • set_date_end Boolean
    default=True string='Set Contract End Date'
Public methods (1)
  • action_register_departure(self)
    If set_date_end is checked, set the departure date as the end date to current running contract, and cancel all draft contracts

New fields (7)
  • calendar_mismatch Boolean
    related='contract_id.calendar_mismatch'
  • contract_id Many2one → hr.contract
    domain="[('company_id', '=', company_id)]" groups='hr.group_hr_user' help='Current contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    string='Employee Contracts' args: 'hr.contract', 'employee_id'
  • contract_warning Boolean
    compute='_compute_contract_warning' groups='hr.group_hr_user' store=True string='Contract Warning'
  • contracts_count Integer
    compute='_compute_contracts_count' string='Contract Count'
  • first_contract_date Date
    compute='_compute_first_contract_date' groups='hr.group_hr_user'
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
Public methods (1)
  • write(self, vals)

New fields (3)
  • country_id Many2one → res.country
    default=<expr> string='Country' args: 'res.country'
  • default_resource_calendar_id Many2one → resource.calendar
    default=<expr> args: 'resource.calendar', 'Default Working Hours'
  • name Char
    args: 'Contract Type'
Public methods (0)

No public methods.

New fields (2)
  • bank_account_id Many2one
    related='employee_id.bank_account_id'
  • vehicle Char
    related='employee_id.vehicle'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • transfer_leaves_to(self, other_calendar, resources=None, from_date=None)
    Transfer some resource.calendar.leaves from 'self' to another calendar 'other_calendar'. Transfered leaves linked to `resources` (or all if `resources` is None) and starting after 'from_date' (or today if None).
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Contracts
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Xavier Morel, Joren Van Onder, Nicolas Martinelli, Yannick Tivisse, Martin Geubelle, Odoo Online, Nicolas Seinlet, Adrien Dieudonne, RomainLibert, Toufik Ben Jaa, Adrian Torres, Xavier-Do, Sébastien Theys, Lucas Lefèvre, Adrien Widart, jbm-odoo, Kevin Baptiste
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:44
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
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
assets_backend assets_backend ir.ui.view qweb Inherits web.assets_backend
hr_contract_view_activity hr.contract.activity hr.contract activity New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_kanban hr.contract.kanban hr.contract kanban New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.tree hr.contract tree New
hr_employee_view_kanban hr.employee.view.kanban hr.employee data Inherits hr.hr_kanban_view_employees
hr_employee_view_search hr.employee.view.search hr.employee data Inherits hr.view_employee_filter
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
hr_user_view_form hr.user.preferences.view.form.contract.inherit res.users xpath Inherits hr.res_users_view_form_profile
Models touched (4)

New fields (21)
  • active Boolean
    default=True
  • advantages Text
    args: 'Advantages'
  • calendar_mismatch Boolean
    compute='_compute_calendar_mismatch'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    help="End date of the contract (if it's a fixed-term contract)." tracking=True args: 'End Date'
  • date_start Date
    default=fields.Date.today help='Start date of the contract.' required=True tracking=True args: 'Start Date'
  • department_id Many2one → hr.department
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Employee' tracking=True args: 'hr.employee'
  • hr_responsible_id Many2one → res.users
    help="Person responsible for validating the employee's contracts." tracking=True args: 'res.users', 'HR Responsible'
  • job_id Many2one → hr.job
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Job Position' args: 'hr.job'
  • kanban_state Selection
    copy=False default='normal' string='Kanban State' tracking=True args: [('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')]
  • name Char
    required=True args: 'Contract Reference'
  • notes Text
    args: 'Notes'
  • permit_no Char
    readonly=False related='employee_id.permit_no' args: 'Work Permit No'
  • resource_calendar_id Many2one → resource.calendar
    copy=False default=<expr> domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" args: 'resource.calendar', 'Working Schedule'
  • state Selection
    copy=False default='draft' group_expand='_expand_states' help='Status of the contract' string='Status' tracking=True args: [('draft', 'New'), ('open', 'Running'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • trial_date_end Date
    help='End date of the trial period (if there is one).' args: 'End of Trial Period'
  • visa_expire Date
    readonly=False related='employee_id.visa_expire' args: 'Visa Expire Date'
  • visa_no Char
    readonly=False related='employee_id.visa_no' args: 'Visa No'
  • wage Monetary
    help="Employee's monthly gross wage." required=True tracking=True args: 'Wage'
Public methods (3)
  • create(self, vals)
    @api.model
  • update_state(self)
    @api.model
  • write(self, vals)

New fields (7)
  • calendar_mismatch Boolean
    related='contract_id.calendar_mismatch'
  • contract_id Many2one → hr.contract
    domain="[('company_id', '=', company_id)]" groups='hr.group_hr_user' help='Current contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    string='Employee Contracts' args: 'hr.contract', 'employee_id'
  • contract_warning Boolean
    compute='_compute_contract_warning' groups='hr.group_hr_user' store=True string='Contract Warning'
  • contracts_count Integer
    compute='_compute_contracts_count' string='Contract Count'
  • medic_exam Date
    groups='hr.group_hr_user' string='Medical Examination Date'
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
Public methods (1)
  • write(self, vals)

New fields (3)
  • bank_account_id Many2one
    related='employee_id.bank_account_id'
  • medic_exam Date
    related='employee_id.medic_exam'
  • vehicle Char
    related='employee_id.vehicle'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • transfer_leaves_to(self, other_calendar, resources=None, from_date=None)
    Transfer some resource.calendar.leaves from 'self' to another calendar 'other_calendar'. Transfered leaves linked to `resources` (or all if `resources` is None) and starting after 'from_date' (or today if None).
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Christophe Simonis, Joren Van Onder, Nicolas Martinelli, Richard Mathot, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Martin Geubelle, Adrian Torres, Priyanka Kakadiya, Xavier-Do, Kinjal Mehta
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:02
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
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
hr_contract_type_view_form hr.contract.type.form hr.contract.type form New
hr_contract_type_view_search hr.contract.type.search hr.contract.type search New
hr_contract_type_view_tree hr.contract.type.tree hr.contract.type tree New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_kanban hr.contract.kanban hr.contract kanban New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.tree hr.contract tree New
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
Models touched (3)

New fields (20)
  • active Boolean
    default=True
  • advantages Text
    args: 'Advantages'
  • company_id Many2one → res.company
    default=<expr> args: 'res.company'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    help="End date of the contract (if it's a fixed-term contract)." args: 'End Date'
  • date_start Date
    default=fields.Date.today help='Start date of the contract.' required=True args: 'Start Date'
  • department_id Many2one → hr.department
    string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    string='Employee' args: 'hr.employee'
  • job_id Many2one → hr.job
    string='Job Position' args: 'hr.job'
  • name Char
    required=True args: 'Contract Reference'
  • notes Text
    args: 'Notes'
  • permit_no Char
    readonly=False related='employee_id.permit_no' args: 'Work Permit No'
  • reported_to_secretariat Boolean
    help='Green this button when the contract information has been transfered to the social secretariat.' args: 'Social Secretariat'
  • resource_calendar_id Many2one → resource.calendar
    default=<expr> args: 'resource.calendar', 'Working Schedule'
  • state Selection
    default='draft' group_expand='_expand_states' help='Status of the contract' string='Status' track_visibility='onchange' args: [('draft', 'New'), ('open', 'Running'), ('pending', 'To Renew'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • trial_date_end Date
    help='End date of the trial period (if there is one).' args: 'End of Trial Period'
  • type_id Many2one → hr.contract.type
    default=<expr> required=True string='Employee Category' args: 'hr.contract.type'
  • visa_expire Date
    readonly=False related='employee_id.visa_expire' args: 'Visa Expire Date'
  • visa_no Char
    readonly=False related='employee_id.visa_no' args: 'Visa No'
  • wage Monetary
    digits=(16, 2) help="Employee's monthly gross wage." required=True track_visibility='onchange' args: 'Wage'
Public methods (1)
  • update_state(self)
    @api.model

New fields (2)
  • name Char
    required=True string='Contract Type' translate=True
  • sequence Integer
    default=10 help='Gives the sequence when displaying a list of Contract.'
Public methods (0)

No public methods.

New fields (6)
  • contract_id Many2one → hr.contract
    compute='_compute_contract_id' help='Latest contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    string='Employee Contracts' args: 'hr.contract', 'employee_id'
  • contracts_count Integer
    compute='_compute_contracts_count' string='Contract Count'
  • manager Boolean
    string='Is a Manager'
  • medic_exam Date
    groups='hr.group_hr_user' string='Medical Examination Date'
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
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/11.0/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Jérome Maes, Jeremy Kersten, GitHub, Yannick Tivisse, qsm-odoo, Odoo Online, DVE
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:44
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
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
hr_contract_type_view_form hr.contract.type.form hr.contract.type form New
hr_contract_type_view_search hr.contract.type.search hr.contract.type search New
hr_contract_type_view_tree hr.contract.type.tree hr.contract.type tree New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_kanban hr.contract.kanban hr.contract kanban New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.tree hr.contract tree New
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
Models touched (3)

New fields (18)
  • advantages Text
    args: 'Advantages'
  • company_id Many2one → res.company
    default=<expr> args: 'res.company'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    help="End date of the contract (if it's a fixed-term contract)." args: 'End Date'
  • date_start Date
    default=fields.Date.today help='Start date of the contract.' required=True args: 'Start Date'
  • department_id Many2one → hr.department
    string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    string='Employee' args: 'hr.employee'
  • job_id Many2one → hr.job
    string='Job Position' args: 'hr.job'
  • name Char
    required=True args: 'Contract Reference'
  • notes Text
    args: 'Notes'
  • permit_no Char
    related='employee_id.permit_no' args: 'Work Permit No'
  • resource_calendar_id Many2one → resource.calendar
    default=<expr> args: 'resource.calendar', 'Working Schedule'
  • state Selection
    default='draft' group_expand='_expand_states' help='Status of the contract' string='Status' track_visibility='onchange' args: [('draft', 'New'), ('open', 'Running'), ('pending', 'To Renew'), ('close', 'Expired'), ('cancel', 'Cancelled')]
  • trial_date_end Date
    help='End date of the trial period (if there is one).' args: 'End of Trial Period'
  • type_id Many2one → hr.contract.type
    default=<expr> required=True string='Contract Type' args: 'hr.contract.type'
  • visa_expire Date
    related='employee_id.visa_expire' args: 'Visa Expire Date'
  • visa_no Char
    related='employee_id.visa_no' args: 'Visa No'
  • wage Monetary
    digits=(16, 2) help="Employee's monthly gross wage." required=True track_visibility='onchange' args: 'Wage'
Public methods (1)
  • update_state(self)
    @api.model

New fields (2)
  • name Char
    required=True string='Contract Type'
  • sequence Integer
    default=10 help='Gives the sequence when displaying a list of Contract.'
Public methods (0)

No public methods.

New fields (9)
  • children Integer
    groups='hr.group_hr_user' string='Number of Children'
  • contract_id Many2one → hr.contract
    compute='_compute_contract_id' help='Latest contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    string='Contracts' args: 'hr.contract', 'employee_id'
  • contracts_count Integer
    compute='_compute_contracts_count' string='Contracts'
  • manager Boolean
    string='Is a Manager'
  • medic_exam Date
    groups='hr.group_hr_user' string='Medical Examination Date'
  • place_of_birth Char
    groups='hr.group_hr_user' args: 'Place of Birth'
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
  • vehicle_distance Integer
    groups='hr.group_hr_user' help='In kilometers' string='Home-Work Dist.'
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/10.0/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Denis Ledoux, Christophe Simonis, Nicolas Martinelli, Jérome Maes, Julien Legros, qdp-odoo, Jeremy Kersten, GitHub, Yannick Tivisse
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - hr
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
hr_contract_type_view_form hr.contract.type.form hr.contract.type form New
hr_contract_type_view_search hr.contract.type.search hr.contract.type search New
hr_contract_type_view_tree hr.contract.type.tree hr.contract.type tree New
hr_contract_view_form hr.contract.form hr.contract form New
hr_contract_view_search hr.contract.search hr.contract search New
hr_contract_view_tree hr.contract.tree hr.contract tree New
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
view_base_action_rule_form_resource base.action.rule.form base.action.rule xpath Inherits base_action_rule.view_base_action_rule_form
Models touched (4)

New fields (1)
  • trg_date_resource_field_id Many2one → ir.model.fields
    help="Use the user's working schedule." string='Use employee work schedule' args: 'ir.model.fields'
Public methods (0)

No public methods.

New fields (17)
  • advantages Text
    args: 'Advantages'
  • date_end Date
    args: 'End Date'
  • date_start Date
    default=fields.Date.today required=True args: 'Start Date'
  • department_id Many2one → hr.department
    string='Department' args: 'hr.department'
  • employee_id Many2one → hr.employee
    required=True string='Employee' args: 'hr.employee'
  • job_id Many2one → hr.job
    string='Job Title' args: 'hr.job'
  • name Char
    required=True args: 'Contract Reference'
  • notes Text
    args: 'Notes'
  • permit_no Char
    args: 'Work Permit No'
  • state Selection
    default='draft' help='Status of the contract' string='Status' track_visibility='onchange' args: [('draft', 'New'), ('open', 'Running'), ('pending', 'To Renew'), ('close', 'Expired')]
  • trial_date_end Date
    args: 'Trial End Date'
  • trial_date_start Date
    args: 'Trial Start Date'
  • type_id Many2one → hr.contract.type
    default=<expr> required=True string='Contract Type' args: 'hr.contract.type'
  • visa_expire Date
    args: 'Visa Expire Date'
  • visa_no Char
    args: 'Visa No'
  • wage Float
    digits=(16, 2) help='Basic Salary of the employee' required=True args: 'Wage'
  • working_hours Many2one → resource.calendar
    string='Working Schedule' args: 'resource.calendar'
Public methods (2)
  • set_as_close(self)
    @api.multi
  • set_as_pending(self)
    @api.multi

New fields (2)
  • name Char
    required=True string='Contract Type'
  • sequence Integer
    default=10 help='Gives the sequence when displaying a list of Contract.'
Public methods (0)

No public methods.

New fields (9)
  • children Integer
    groups='hr.group_hr_user' string='Number of Children'
  • contract_id Many2one → hr.contract
    compute='_compute_contract_id' help='Latest contract of the employee' string='Current Contract' args: 'hr.contract'
  • contract_ids One2many → hr.contract
    string='Contracts' args: 'hr.contract', 'employee_id'
  • contracts_count Integer
    compute='_compute_contracts_count' string='Contracts'
  • manager Boolean
    string='Is a Manager'
  • medic_exam Date
    groups='hr.group_hr_user' string='Medical Examination Date'
  • place_of_birth Char
    groups='hr.group_hr_user' args: 'Place of Birth'
  • vehicle Char
    groups='hr.group_hr_user' string='Company Vehicle'
  • vehicle_distance Integer
    groups='hr.group_hr_user' help='In kilometers' string='Home-Work Dist.'
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/9.0/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Nicolas Martinelli, Jérome Maes, Richard Mathot, Géry Debongnie, Yannick Tivisse
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - hr
    - web_tip
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
hr_contract_type_view_form hr.contract.type.view.form hr.contract.type form New
hr_contract_type_view_search hr.contract.type.view.search hr.contract.type search New
hr_contract_type_view_tree hr.contract.type.view.tree hr.contract.type tree New
hr_contract_view_form hr.contract.view.form hr.contract form New
hr_contract_view_search hr.contract.view.search hr.contract search New
hr_contract_view_tree hr.contract.view.tree hr.contract tree New
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
view_base_action_rule_form_resource base.action.rule.form base.action.rule xpath Inherits base_action_rule.view_base_action_rule_form
Models touched (1)

New fields (0)

No new fields.

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/8.0/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Launchpad Translations on behalf of openerp, Denis Ledoux, Fabien Meghazi, Amit Bhavsar (Open ERP), Richard Mathot, Géry Debongnie, Aaron Bohy, ged-odoo, Gery Debongnie, Randhir Mayatra rma-openerp, Yogesh Parekh (OpenERP)
WEBSITE
WEBSITEhttps://www.odoo.com/page/employees
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_action_rule
    - base
    - resource
    - mail
    - base_setup
    - web_kanban
    - web
    - hr
    - board
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
hr_contract_type_view_form hr.contract.type.view.form hr.contract.type form New
hr_contract_type_view_search hr.contract.type.view.search hr.contract.type search New
hr_contract_type_view_tree hr.contract.type.view.tree hr.contract.type tree New
hr_contract_view_form hr.contract.view.form hr.contract form New
hr_contract_view_search hr.contract.view.search hr.contract search New
hr_contract_view_tree hr.contract.view.tree hr.contract tree New
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
view_base_action_rule_form_resource base.action.rule.form base.action.rule xpath Inherits base_action_rule.view_base_action_rule_form
Models touched (1)

New fields (0)

No new fields.

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/7.0/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSJagdish Panchal (Open ERP), Twinkle Christian (OpenERP), Cecile Tonglet, Jalpesh Patel (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Pinakin Nayi (OpenERP), Antonin Bourguignon, Martin Trigaux, Ajay Chauhan (OpenERP), Purnendu Singh (OpenERP), Fabien Pinckaers, Bharat Devnani (OpenERP), Olivier Dony, 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), Mayur Maheshwari (OpenERP), Sanjay Gohel (Open ERP), help, Amit Patel
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:43:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web_kanban
    - web
    - mail
    - resource
    - process
    - board
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Add all information on the employee form to manage contracts.
=============================================================

    * Contract
    * Place of Birth,
    * Medical Examination Date
    * Company Vehicle

You can assign several contracts per employee.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
hr_contract_type_view_form hr.contract.type.view.form hr.contract.type form New
hr_contract_type_view_search hr.contract.type.view.search hr.contract.type search New
hr_contract_type_view_tree hr.contract.type.view.tree hr.contract.type tree New
hr_contract_view_form hr.contract.view.form hr.contract form New
hr_contract_view_search hr.contract.view.search hr.contract search New
hr_contract_view_tree hr.contract.view.tree hr.contract tree New
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee data Inherits hr.view_employee_form
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/6.1/hr_contract
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Stephane Wirtel, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Mayur Maheshwari (OpenERP), vro, niv-openerp, Ujjvala Collins (OpenERP), Xavier Morel, Thibault Francois, Carlos Vásquez, Els Van Vossel, Israel Fermin Montilla, Hardik Ansodariy (OpenERP), rch-openerp, Bharat (OpenERP), ARA (OpenERP), mtr, Mustufa Rangwala, psi (Open ERP), Anup (OpenERP)
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:41:35
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - mail
    - base_tools
    - resource
    - process
    - board
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Add all information on the employee form to manage contracts.
=============================================================

    * Marital status,
    * Security number,
    * Place of birth, birth date, ...

You can assign several contracts per employee.
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
hr_contract_type_view_form hr.contract.type.view.form hr.contract.type form New
hr_contract_type_view_search hr.contract.type.view.search hr.contract.type search New
hr_contract_type_view_tree hr.contract.type.view.tree hr.contract.type tree New
hr_contract_view_form hr.contract.view.form hr.contract form New
hr_contract_view_search hr.contract.view.search hr.contract search New
hr_contract_view_tree hr.contract.view.tree hr.contract tree New
hr_hr_employee_view_form2 hr.hr.employee.view.form2 hr.employee page Inherits hr.view_employee_form
Models touched (0)

No models found for this module.