Repository
odoo/odoo · module folder
Module version
1.1
Category
Human Resources/Employees
Folder size
13.27 MB
License
LGPL-3
Application
Yes
Auto-installable
No
Website
https://www.odoo.com/app/employees
Last tracking update
2026-08-15 22:44:17
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier Morel, Raphael Collet, Christophe Simonis, Thibault Delavallée, Odoo Translation Bot, David Monjoie, Lucas Perais (lpe), Yannick Tivisse, Pierre Masereel, Jorge Pinna Puissant, Alexandre Kühn, Julien Castiaux, Sébastien Theys, Julien Mougenot, std-odoo, David Beguin, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Ahmad Khanalizadeh, Didier (did), Dossogne Bertrand, luvi, Renaud Thiry, Vincent Larcin, Ipsita Borisagar, tsm-odoo, Louis Wicket (wil), alsh-odoo, Yash Vaishnav, Victor Piryns (pivi), Maruan Aguerdouh (magm), Dylan Kiss (dyki), Jinane Maksoud, Mayurrajsinh Rathod, Simon Goffaux (sigo), Xavier Bol (xbo), omra-odoo, Zelong Lin, maad-odoo, Mélanie, ravb-odoo, bary, reka-odoo, jugj-odoo, Abderraouf Ghrissi (abgh), Nathaniel (naja), Julien Carion (juca), Tanguy Quéguineur, Alex Kühn, Martin Trigaux (mat), Agustin Castro Bugallo, Chrysanthe (chgo), asno-odoo, aamo-odoo, rmun-odoo, Shaan Thakkar (THSH), Mathieu Coutant, Yassin Abdelkarim, kais-odoo, guce, yagp-odoo, rame-odoo, Abdelrahman Mahmoud (amah), gteboul, Ian, Maira Salazar (srma), gvar-odoo, Pierre Pulinckx, Bastien PIERRE, nikj-odoo, Michaël Mattiello, bona-odoo, Krzysztof Magusiak (krma), devp-odoo, kkuj-odoo, Basioni (basm), rida, Guillaume V, pajo, Giorgio Tocco (gito), akha, kareem, jayp-odoo, Bertrand Dossogne, MAGREMENT, romc-odoo, Ian Cioppa (iacio), Dhwani Patel, Laetitia (ldau), adip-odoo, ksar-odoo, dhka-odoo, Einar Andersen (eian), Waleed Elgamal, Ayush Modi, Dinh Van Khoa (JocelynVN), Arthur Pierrot (arpi), assh-odoo, Elliot ELCO, khom-odoo, Kevin Gerard (kege), Ziri, kuay-odoo, saurabh, lebm-odoo, Jurgen Gjini, Mahmoudk3m, alan-odoo, raja prasad, Martin Lefèvre (mlef), Hashem, karygauss03, Lucas ESTEBAN (lues), djsh-odoo, Camila Vives, chpa-odoo, Faruk Avcı, SaraBriki, shmn-odoo, adak-ahmed, 3amo-magdy, Mohamed Ayman, amga-odoo, Devendra Ladhani, hamza, arkp-odoo, metu-odoo, abshe, Tatiana Skvortsova (taskv), Omar Khair, SurryaT10, usseif, hkafe-odoo, claireclan, Mélanie Peyrat (mepe), Mohammed Farouk, FedericoBraidi, Priyanshu Goyal (prgo), Nat (naja)
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
account_payroll_sheet_import, hr_attendance, hr_calendar, hr_course, hr_department_code, hr_employee_calendar_planning, hr_employee_firstname, hr_employee_language, hr_employee_medical_examination, hr_employee_partner_external, hr_employee_relative, hr_expense, hr_fleet, hr_gamification, hr_holidays, hr_homeworking, hr_hourly_cost, hr_livechat, hr_maintenance, hr_org_chart, hr_presence, hr_recruitment, hr_skills, hr_timesheet, hr_work_entry, l10n_br_hr, mail_bot_hr, mgmtsystem_hazard, mgmtsystem_hazard_risk, mgmtsystem_nonconformity_hr, pos_hr, project_department, project_hr
Description

Code Analysis

Views touched (58)
XML IDNameModelTypeStatus
discuss_channel_view_form discuss.channel.view.form.inherit.hr discuss.channel form Inherits mail.discuss_channel_view_form
hr_contract_template_form_view hr.contract.template.form hr.version form New
hr_contract_template_list_view hr.contract.template.list hr.version list New
hr_contract_type_view_form hr.contract.type form New
hr_contract_type_view_tree hr.contract.type list New
hr_department_view_kanban hr.department.kanban hr.department kanban New
hr_departure_reason_view_form hr.departure.reason form New
hr_departure_reason_view_list hr.departure.reason list New
hr_departure_wizard_view_form hr.departure.wizard.view.form hr.departure.wizard form New
hr_employee_list_activites_view hr.employee.list.activites.view hr.employee list New
hr_employee_list_view hr.employee.list hr.employee list New
hr_employee_plan_activity_summary hr_employee_plan_activity_summary ir.ui.view qweb New
hr_employee_public_view_form hr.employee.public.form hr.employee.public form New
hr_employee_public_view_kanban hr.employee.kanban hr.employee.public kanban New
hr_employee_public_view_search hr.employee.search hr.employee.public search New
hr_employee_public_view_tree hr.employee.list hr.employee.public list New
hr_employee_view_activity hr.employee.activity hr.employee activity New
hr_employee_view_graph hr.employee.view.graph hr.employee graph New
hr_employee_view_pivot hr.employee.view.pivot hr.employee pivot New
hr_job_view_kanban hr.job.kanban hr.job kanban New
hr_kanban_view_employees hr.employee.kanban hr.employee kanban New
hr_version_graph_view hr.version.graph hr.version graph New
hr_version_list_view hr.version.list hr.version list New
hr_version_pivot_view hr.version.pivot hr.version pivot New
hr_version_search_view hr.version.search hr.version search New
hr_version_wizard_view_form hr.version.wizard.view.form hr.version.wizard form New
hr_work_location_form_view hr.work.location.view.form hr.work.location form New
hr_work_location_tree_view hr.work.location.view.list hr.work.location list New
mail_activity_plan_template_view_form mail.activity.plan.template.view.form.inherit.hr mail.activity.plan.template form Inherits mail.mail_activity_plan_template_view_form
mail_activity_plan_view_form mail.activity.plan.view.form.inherit.hr mail.activity.plan form Inherits mail.mail_activity_plan_view_form
mail_activity_plan_view_form_hr_employee mail.activity.plan.view.form.hr.employee mail.activity.plan form Inherits mail.mail_activity_plan_view_form_fixed_model
mail_activity_plan_view_tree mail.activity.plan.view.list.inherit.hr mail.activity.plan list Inherits mail.mail_activity_plan_view_tree
mail_activity_schedule_view_form mail.activity.schedule.view.form.inherit.hr mail.activity.schedule form Inherits mail.mail_activity_schedule_view_form
print_employee_badge print_employee_badge ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.hr res.config.settings form Inherits base.res_config_settings_view_form
res_partner_view_form res.partner.view.form.inherit.hr res.partner form Inherits base.view_partner_form
res_partner_view_search res.partner.search.inherit res.partner search Inherits base.view_res_partner_filter
res_users_view_form res.users.form.inherit res.users form Inherits base.view_users_form
res_users_view_form_preferences res.users.preferences.form.inherit res.users form Inherits res_users_view_form_simple_modif
res_users_view_form_simple_modif res.users.preferences.form.simplified.inherit res.users form Inherits base.view_users_form_simple_modif
view_bank_account_allocation_line_list hr.bank.account.allocation.wizard.line.list hr.bank.account.allocation.wizard.line list New
view_bank_account_allocation_wizard hr.bank.account.allocation.wizard.form hr.bank.account.allocation.wizard form New
view_department_filter hr.department.search hr.department search New
view_department_form hr.department.form hr.department form New
view_department_tree hr.department.list hr.department list New
view_employee_category_form hr.employee.category.form hr.employee.category form New
view_employee_category_list hr.employee.category.list hr.employee.category list New
view_employee_filter hr.employee.search hr.employee search New
view_employee_form hr.employee.form hr.employee form New
view_employee_form_smartbutton_inherited view.employee.form.smartbutton.inherited hr.employee form Inherits view_employee_form
view_employee_tree hr.employee.list hr.employee list New
view_hr_job_form hr.job.form hr.job form New
view_hr_job_tree hr.job.list hr.job list New
view_job_filter hr.job.search hr.job search New
view_partner_bank_form_inherit_hr res.partner.bank.form.inherit.hr res.partner.bank form Inherits base.view_partner_bank_form
view_users_form_simple_modif_resource res.users.preferences.form.resource res.users form Inherits base.view_users_form_simple_modif
view_users_simple_form view.users.simple.form.hr res.users form Inherits base.view_users_simple_form
view_users_simple_form_inherit_hr view.users.simple.form.inherit.hr res.users form Inherits base.view_users_simple_form
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (30)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • subscription_department_ids Many2many → hr.department
    help='Automatically subscribe members of those departments to the channel.' string='HR Departments' args: 'hr.department'
Public methods (1)
  • write(self, vals)

New fields (2)
  • allocation_ids One2many → hr.bank.account.allocation.wizard.line
    readonly=False string='Allocations' args: 'hr.bank.account.allocation.wizard.line', 'wizard_id'
  • employee_id Many2one → hr.employee
    required=True args: 'hr.employee'
Public methods (2)
  • action_save(self)
  • create(self, vals_list)
    @api.model_create_multi

New fields (8)
  • acc_number Char
    readonly=True related='bank_account_id.acc_number'
  • amount Float
    digits=(16, 2) readonly=False string='Amount'
  • amount_type Selection
    readonly=False selection='_get_amount_type_selection_vals'
  • bank_account_id Many2one → res.partner.bank
    readonly=True required=True args: 'res.partner.bank'
  • sequence Integer
    default=10
  • symbol Char
    compute='_compute_symbol' readonly=True
  • trusted Boolean
    string='Trusted'
  • wizard_id Many2one → hr.bank.account.allocation.wizard
    ondelete='cascade' required=True args: 'hr.bank.account.allocation.wizard'
Public methods (0)

No public methods.

New fields (4)
  • code Char
    compute='_compute_code' readonly=False store=True
  • country_id Many2one → res.country
    domain=<expr> args: 'res.country'
  • name Char
    required=True translate=True
  • sequence Integer
Public methods (0)

No public methods.

New fields (17)
  • active Boolean
    default=True args: 'Active'
  • child_ids One2many → hr.department
    string='Child Departments' args: 'hr.department', 'parent_id'
  • color Integer
    args: 'Color Index'
  • company_id Many2one → res.company
    compute='_compute_company_id' default=<expr> index=True readonly=False recursive=True store=True string='Company' tracking=True args: 'res.company'
  • complete_name Char
    compute='_compute_complete_name' recursive=True search='_search_complete_name' args: 'Complete Name'
  • has_read_access Boolean
    export_string_translation=False search='_search_has_read_access' store=False
  • jobs_ids One2many → hr.job
    string='Jobs' args: 'hr.job', 'department_id'
  • manager_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', 'in', allowed_company_ids)]" string='Manager' tracking=True args: 'hr.employee'
  • master_department_id Many2one → hr.department
    compute='_compute_master_department_id' store=True args: 'hr.department', 'Master Department'
  • member_ids One2many → hr.employee
    readonly=True string='Members' args: 'hr.employee', 'department_id'
  • name Char
    required=True translate=True args: 'Department Name'
  • note Text
    args: 'Note'
  • parent_id Many2one → hr.department
    check_company=True index=True string='Parent Department' args: 'hr.department'
  • parent_path Char
    index=True
  • plan_ids One2many → mail.activity.plan
    args: 'mail.activity.plan', 'department_id'
  • plans_count Integer
    compute='_compute_plan_count'
  • total_employee Integer
    compute='_compute_total_employee' export_string_translation=False string='Total Employee'
Public methods (9)
  • action_employee_from_department(self)
  • action_open_view_child_departments(self)
  • action_plan_from_department(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_children_department_ids(self)
  • get_department_hierarchy(self)
  • get_formview_action(self, access_uid=None)
  • name_create(self, name)
    @api.model
  • write(self, vals)
    If updating manager of a department, we need to update all the employees of department hierarchy, and subscribe the new manager.

New fields (4)
  • country_code Char
    related='country_id.code'
  • country_id Many2one → res.country
    default=<expr> string='Country' args: 'res.country'
  • name Char
    required=True string='Reason' translate=True
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (7)
  • departure_date Date
    default=_get_default_departure_date required=True string='Contract End Date'
  • departure_description Html
    string='Additional Information'
  • departure_reason_id Many2one → hr.departure.reason
    default=<expr> required=True args: 'hr.departure.reason'
  • employee_ids Many2many → hr.employee
    context={'active_test': False} default=_get_default_employee_ids domain=_get_domain_employee_ids required=True string='Employees' args: 'hr.employee'
  • is_user_employee Boolean
    compute='_compute_is_user_employee' string='User Employee'
  • remove_related_user Boolean
    help='If checked, the related user will be removed from the system.' string='Related User'
  • 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)

New fields (105)
  • active Boolean
    default=True readonly=False related='resource_id.active' store=True args: 'Active'
  • activity_date_deadline Date
    groups='hr.group_hr_user'
  • activity_exception_decoration Selection
    groups='hr.group_hr_user'
  • activity_exception_icon Char
    groups='hr.group_hr_user'
  • activity_ids One2many
    groups='hr.group_hr_user'
  • activity_state Selection
    groups='hr.group_hr_user'
  • activity_summary Char
    groups='hr.group_hr_user'
  • activity_type_icon Char
    groups='hr.group_hr_user'
  • activity_type_id Many2one
    groups='hr.group_hr_user'
  • activity_user_id Many2one
    groups='hr.group_hr_user'
  • bank_account_ids Many2many → res.partner.bank
    column1='employee_id' column2='bank_account_id' copy=False domain="[('partner_id', '=', work_contact_id), '|', ('company_id', '=', False), ('company_id', '=', company_id)]" groups='hr.group_hr_user' help='Employee bank accounts to pay salaries' relation='employee_bank_account_rel' string='Bank Accounts' tracking=True args: 'res.partner.bank'
  • barcode Char
    copy=False groups='hr.group_hr_user' help='ID used for employee identification.' string='Badge ID'
  • birthday Date
    groups='hr.group_hr_user' tracking=True args: 'Birthday'
  • birthday_public_display Boolean
    default=False groups='hr.group_hr_user' args: 'Show to all employees'
  • birthday_public_display_string Char
    compute='_compute_birthday_public_display_string' default='hidden' args: 'Public Date of Birth'
  • category_ids Many2many → hr.employee.category
    groups='hr.group_hr_user' string='Tags' args: 'hr.employee.category', 'employee_category_rel', 'employee_id', 'category_id'
  • certificate Selection
    groups='hr.group_hr_user' selection='_get_certificate_selection' string='Certificate Level' tracking=True
  • child_ids One2many → hr.employee
    domain=[('active', '=', True)] string='Direct subordinates' args: 'hr.employee', 'parent_id'
  • coach_id Many2one → hr.employee
    compute='_compute_coach' domain="['|', ('company_id', '=', False), ('company_id', 'in', allowed_company_ids)]" help='Select the "Employee" who is the coach of this employee.\nThe "Coach" has no specific rights or responsibilities by default.' readonly=False store=True args: 'hr.employee', 'Coach'
  • color Integer
    default=0 args: 'Color Index'
  • company_country_code Char
    depends=['company_country_id'] groups='base.group_system,hr.group_hr_user' readonly=True related='company_country_id.code' string='Company Country Code'
  • company_country_id Many2one → res.country
    groups='base.group_system,hr.group_hr_user' readonly=True related='company_id.country_id' args: 'res.country', 'Company Country'
  • company_id Many2one → res.company
    required=True tracking=True args: 'res.company'
  • contract_date_end Date
    groups='hr.group_hr_manager' inherited=True readonly=False related='version_id.contract_date_end'
  • contract_date_start Date
    groups='hr.group_hr_manager' inherited=True readonly=False related='version_id.contract_date_start'
  • contract_type_id Many2one
    groups='hr.group_hr_manager' inherited=True readonly=False related='version_id.contract_type_id'
  • contract_wage Monetary
    groups='hr.group_hr_manager' inherited=True related='version_id.contract_wage'
  • country_of_birth Many2one → res.country
    groups='hr.group_hr_user' string='Country of Birth' tracking=True args: 'res.country'
  • currency_id Many2one → res.currency
    groups='hr.group_hr_user' readonly=True related='company_id.currency_id' args: 'res.currency'
  • current_date_version Date
    groups='hr.group_hr_user' related='current_version_id.date_version' string='Current Date Version'
  • current_version_id Many2one → hr.version
    bypass_search_access=True compute='_compute_current_version_id' store=True args: 'hr.version'
  • date_end Date
    groups='hr.group_hr_manager' inherited=True related='version_id.date_end'
  • date_start Date
    groups='hr.group_hr_manager' inherited=True related='version_id.date_start'
  • driving_license Binary
    groups='hr.group_hr_user' string='Driving License'
  • email Char
    related='user_id.email'
  • emergency_contact Char
    groups='hr.group_hr_user' tracking=True
  • emergency_phone Char
    groups='hr.group_hr_user' tracking=True
  • employee_properties Properties
    definition='company_id.employee_properties_definition' groups='hr.group_hr_user' precompute=False args: 'Properties'
  • has_message Boolean
    groups='hr.group_hr_user'
  • has_multiple_bank_accounts Boolean
    compute='_compute_has_multiple_bank_accounts' default=False groups='hr.group_hr_user'
  • has_work_permit Binary
    groups='hr.group_hr_user' string='Work Permit'
  • hr_icon_display Selection
    compute='_compute_presence_icon' args: [('presence_present', 'Present'), ('presence_out_of_working_hour', 'Off-Hours'), ('presence_absent', 'Absent'), ('presence_archive', 'Archived'), ('presence_undetermined', 'Undetermined')]
  • hr_presence_state Selection
    compute='_compute_presence_state' default='out_of_working_hour' args: [('present', 'Present'), ('absent', 'Absent'), ('archive', 'Archived'), ('out_of_working_hour', 'Off-Hours')]
  • id_card Binary
    groups='hr.group_hr_user' string='ID Card Copy'
  • im_status Char
    related='user_id.im_status'
  • is_current Boolean
    groups='hr.group_hr_manager' inherited=True related='version_id.is_current'
  • is_future Boolean
    groups='hr.group_hr_manager' inherited=True related='version_id.is_future'
  • is_in_contract Boolean
    groups='hr.group_hr_manager' inherited=True related='version_id.is_in_contract'
  • is_past Boolean
    groups='hr.group_hr_manager' inherited=True related='version_id.is_past'
  • is_trusted_bank_account Boolean
    compute='_compute_is_trusted_bank_account' groups='hr.group_hr_user'
  • is_user_active Boolean
    groups='hr.group_hr_user' related='user_id.active' string="User's active"
  • lang Selection
    groups='hr.group_hr_user' selection=_lang_get string='Lang'
  • last_activity Date
    compute='_compute_last_activity'
  • last_activity_time Char
    compute='_compute_last_activity'
  • legal_name Char
    compute='_compute_legal_name' groups='hr.group_hr_user' readonly=False store=True
  • message_attachment_count Integer
    groups='hr.group_hr_user'
  • message_follower_ids One2many
    groups='hr.group_hr_user'
  • message_has_error Boolean
    groups='hr.group_hr_user'
  • message_has_error_counter Integer
    groups='hr.group_hr_user'
  • message_ids One2many
    groups='hr.group_hr_user'
  • message_is_follower Boolean
    groups='hr.group_hr_user'
  • message_main_attachment_id Many2one
    groups='hr.group_hr_user'
  • message_needaction Boolean
    groups='hr.group_hr_user'
  • message_needaction_counter Integer
    groups='hr.group_hr_user'
  • message_partner_ids Many2many
    groups='hr.group_hr_user'
  • mobile_phone Char
    args: 'Work Mobile'
  • my_activity_date_deadline Date
    groups='hr.group_hr_user'
  • name Char
    readonly=False related='resource_id.name' store=True string='Employee Name' tracking=True
  • newly_hired Boolean
    compute='_compute_newly_hired' search='_search_newly_hired' args: 'Newly Hired'
  • parent_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', 'in', allowed_company_ids)]" index=True tracking=True args: 'hr.employee', 'Manager'
  • permit_no Char
    groups='hr.group_hr_user' tracking=True args: 'Work Permit No'
  • phone Char
    related='user_id.phone'
  • pin Char
    copy=False groups='hr.group_hr_user' help='PIN used to Check In/Out in the Kiosk Mode of the Attendance application (if enabled in Configuration) and to change the cashier in the Point of Sale application.' string='PIN'
  • place_of_birth Char
    groups='hr.group_hr_user' tracking=True args: 'Place of Birth'
  • primary_bank_account_id Many2one → res.partner.bank
    compute='_compute_primary_bank_account_id' groups='hr.group_hr_user' args: 'res.partner.bank'
  • private_car_plate Char
    groups='hr.group_hr_user' help='If you have more than one car, just separate the plates by a space.'
  • private_email Char
    groups='hr.group_hr_user' string='Private Email'
  • private_phone Char
    groups='hr.group_hr_user' string='Private Phone'
  • related_partners_count Integer
    compute='_compute_related_partners_count' groups='hr.group_hr_user'
  • resource_calendar_id Many2one
    check_company=True index=False inherited=True related='version_id.resource_calendar_id' store=False
  • resource_id Many2one → resource.resource
    required=True args: 'resource.resource'
  • salary_distribution Json
    compute='_sync_salary_distribution' groups='hr.group_hr_user' readonly=False store=True string='Salary Distribution'
  • share Boolean
    related='user_id.share'
  • show_hr_icon_display Boolean
    compute='_compute_presence_icon'
  • structure_type_id Many2one
    groups='hr.group_hr_manager' inherited=True readonly=False related='version_id.structure_type_id'
  • study_field Char
    groups='hr.group_hr_user' tracking=True args: 'Field of Study'
  • study_school Char
    groups='hr.group_hr_user' tracking=True args: 'School'
  • trial_date_end Date
    groups='hr.group_hr_manager' inherited=True readonly=False related='version_id.trial_date_end'
  • tz Selection
    tracking=True
  • user_id Many2one → res.users
    check_company=True index='btree_not_null' ondelete='restrict' precompute=True readonly=False related='resource_id.user_id' store=True args: 'res.users', 'User'
  • user_partner_id Many2one
    related='user_id.partner_id' related_sudo=False string="User's partner"
  • version_id Many2one → hr.version
    compute='_compute_version_id' compute_sudo=True groups='hr.group_hr_user' ondelete='cascade' required=True search='_search_version_id' store=False args: 'hr.version'
  • version_ids One2many → hr.version
    groups='hr.group_hr_user' required=True string='Employee Versions' args: 'hr.version', 'employee_id'
  • version_revision Char
    compute='_compute_version_revision' groups='hr.group_hr_user'
  • versions_count Integer
    compute='_compute_versions_count' groups='hr.group_hr_user'
  • visa_expire Date
    groups='hr.group_hr_user' tracking=True args: 'Visa Expiration Date'
  • visa_no Char
    groups='hr.group_hr_user' tracking=True args: 'Visa No'
  • work_contact_id Many2one → res.partner
    copy=False index='btree_not_null' args: 'res.partner', 'Work Contact'
  • work_email Char
    compute='_compute_work_contact_details' inverse='_inverse_work_contact_details' store=True args: 'Work Email'
  • work_location_name Char
    compute='_compute_work_location_name' args: 'Work Location Name'
  • work_location_type Selection
    compute='_compute_work_location_type' tracking=True args: [('home', 'Home'), ('office', 'Office'), ('other', 'Other')]
  • work_permit_expiration_date Date
    groups='hr.group_hr_user' tracking=True args: 'Work Permit Expiration Date'
  • work_permit_name Char
    compute='_compute_work_permit_name' groups='hr.group_hr_user' args: 'work_permit_name'
  • work_permit_scheduled_activity Boolean
    default=False groups='hr.group_hr_user'
  • work_phone Char
    compute='_compute_work_contact_details' inverse='_inverse_work_contact_details' readonly=False store=True tracking=True args: 'Work Phone'
Public methods (30)
  • action_archive(self)
  • action_create_user(self)
  • action_create_users(self)
  • action_create_users_confirmation(self)
  • action_open_allocation_wizard(self)
  • action_open_versions(self)
  • action_related_contacts(self)
  • action_toggle_primary_bank_account_trust(self)
  • action_unarchive(self)
  • check_field_access_rights(self, operation, field_names)
    @api.model@api.deprecated('Override of a deprecated method')
  • check_no_existing_contract(self, date)
  • create(self, vals_list)
    @api.model_create_multi
  • create_contract(self, date)
  • create_version(self, values)
  • fetch(self, field_names=None)
  • generate_random_barcode(self)
  • get_accounts_with_fixed_allocations(self)
  • get_avatar_card_data(self, fields)
  • get_bank_account_salary_allocation(self, account_id)
  • get_formview_action(self, access_uid=None)
    Override this method in order to redirect many2one towards the right model depending on access_uid
  • get_formview_id(self, access_uid=None)
    Override this method in order to redirect many2one towards the right model depending on access_uid
  • get_import_templates(self)
    @api.model
  • get_remaining_percentage(self)
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
  • get_views(self, views, options=None)
    @api.model
  • new(self, values=None, origin=None, ref=None)
    @api.model
  • notify_expiring_contract_work_permit(self)
    @api.model
  • search_fetch(self, domain, field_names=None, offset=0, limit=None, order=None)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (3)
  • color Integer
    default=_get_default_color string='Color Index'
  • employee_ids Many2many → hr.employee
    string='Employees' args: 'hr.employee', 'employee_category_rel', 'category_id', 'employee_id'
  • name Char
    required=True string='Tag Name'
Public methods (0)

No public methods.

New fields (50)
  • active Boolean
    readonly=True
  • address_id Many2one → res.partner
    readonly=True args: 'res.partner'
  • avatar_1024 Image
    compute_sudo=True related='employee_id.avatar_1024' args: 'Avatar 1024'
  • avatar_128 Image
    compute_sudo=True related='employee_id.avatar_128' args: 'Avatar 128'
  • avatar_1920 Image
    compute_sudo=True related='employee_id.avatar_1920' args: 'Avatar'
  • avatar_256 Image
    compute_sudo=True related='employee_id.avatar_256' args: 'Avatar 256'
  • avatar_512 Image
    compute_sudo=True related='employee_id.avatar_512' args: 'Avatar 512'
  • birthday_public_display_string Char
    related='employee_id.birthday_public_display_string' args: 'Public Date of Birth'
  • child_ids One2many → hr.employee.public
    readonly=True string='Direct subordinates' args: 'hr.employee.public', 'parent_id'
  • coach_id Many2one → hr.employee.public
    readonly=True args: 'hr.employee.public', 'Coach'
  • color Integer
    readonly=True
  • company_id Many2one → res.company
    readonly=True args: 'res.company'
  • country_code Char
    compute='_compute_country_code'
  • create_date Datetime
    readonly=True
  • department_id Many2one → hr.department
    readonly=True args: 'hr.department'
  • email Char
    related='employee_id.email'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee', 'Employee'
  • hr_icon_display Selection
    compute='_compute_presence_icon' selection='_get_selection_hr_icon_display'
  • hr_presence_state Selection
    compute='_compute_presence_state' default='out_of_working_hour' args: [('present', 'Present'), ('absent', 'Absent'), ('archive', 'Archived'), ('out_of_working_hour', 'Off-Hours')]
  • im_status Char
    related='employee_id.im_status'
  • image_1024 Image
    compute_sudo=True related='employee_id.image_1024' args: 'Image 1024'
  • image_128 Image
    compute_sudo=True related='employee_id.image_128' args: 'Image 128'
  • image_1920 Image
    compute_sudo=True related='employee_id.image_1920' args: 'Image'
  • image_256 Image
    compute_sudo=True related='employee_id.image_256' args: 'Image 256'
  • image_512 Image
    compute_sudo=True related='employee_id.image_512' args: 'Image 512'
  • is_manager Boolean
    compute='_compute_is_manager'
  • is_user Boolean
    compute='_compute_is_user'
  • job_id Many2one → hr.job
    readonly=True args: 'hr.job'
  • job_title Char
    related='employee_id.job_title'
  • last_activity Date
    compute='_compute_last_activity'
  • last_activity_time Char
    compute='_compute_last_activity'
  • member_of_department Boolean
    compute='_compute_member_of_department' search='_search_part_of_department'
  • mobile_phone Char
    readonly=True
  • name Char
    readonly=True
  • newly_hired Boolean
    compute='_compute_newly_hired' search='_search_newly_hired' args: 'Newly Hired'
  • parent_id Many2one → hr.employee.public
    readonly=True args: 'hr.employee.public', 'Manager'
  • phone Char
    related='employee_id.phone'
  • resource_calendar_id Many2one → resource.calendar
    readonly=True args: 'resource.calendar'
  • resource_id Many2one → resource.resource
    readonly=True args: 'resource.resource'
  • share Boolean
    related='employee_id.share'
  • show_hr_icon_display Boolean
    compute='_compute_presence_icon'
  • tz Selection
    related='resource_id.tz'
  • user_id Many2one → res.users
    readonly=True args: 'res.users'
  • user_partner_id Many2one
    related='user_id.partner_id' related_sudo=False string="User's partner"
  • work_contact_id Many2one → res.partner
    readonly=True args: 'res.partner'
  • work_email Char
    readonly=True
  • work_location_id Many2one → hr.work.location
    readonly=True args: 'hr.work.location'
  • work_location_name Char
    related='employee_id.work_location_name'
  • work_location_type Selection
    related='employee_id.work_location_type'
  • work_phone Char
    readonly=True
Public methods (2)
  • get_avatar_card_data(self, fields)
  • init(self)

New fields (14)
  • active Boolean
    default=True
  • allowed_user_ids Many2many → res.users
    compute='_compute_allowed_user_ids' readonly=True args: 'res.users'
  • company_id Many2one → res.company
    default=<expr> string='Company' tracking=True args: 'res.company'
  • contract_type_id Many2one → hr.contract.type
    string='Employment Type' tracking=True args: 'hr.contract.type'
  • department_id Many2one → hr.department
    check_company=True index='btree_not_null' string='Department' tracking=True args: 'hr.department'
  • description Html
    sanitize_attributes=False string='Job Description'
  • employee_ids One2many → hr.employee
    groups='base.group_user' string='Employees' args: 'hr.employee', 'job_id'
  • expected_employees Integer
    compute='_compute_employees' groups='hr.group_hr_user' help='Expected number of employees for this job position after new recruitment.' string='Total Forecasted Employees'
  • name Char
    index='trigram' required=True string='Job Position' translate=True
  • no_of_employee Integer
    compute='_compute_employees' groups='hr.group_hr_user' help='Number of employees currently occupying this job position.' string='Current Number of Employees'
  • no_of_recruitment Integer
    copy=False default=1 help='Number of new employees you expect to recruit.' string='Target'
  • requirements Text
    groups='hr.group_hr_user' args: 'Requirements'
  • sequence Integer
    default=10
  • user_id Many2one → res.users
    default=<expr> domain="[('share', '=', False), ('company_ids', '=?', company_id)]" groups='hr.group_hr_user' help='The Recruiter will be the default value for all Applicants in this job position. The Recruiter is automatically added to all meetings with the Applicant.' tracking=True args: 'res.users', 'Recruiter'
Public methods (3)
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
    We don't want the current user to be follower of all created job
  • write(self, vals)

New fields (2)
  • employee_id Many2one → hr.employee
    readonly=True string='Employee' args: 'hr.employee'
  • has_department_manager_access Boolean
    compute='_compute_has_department_manager_access' search='_search_has_department_manager_access'
Public methods (0)

No public methods.

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

No public methods.

New fields (63)
  • active Boolean
    default=True tracking=True
  • active_employee Boolean
    groups='hr.group_hr_user' related='employee_id.active' string='Active Employee'
  • additional_note Text
    copy=False groups='hr.group_hr_user' string='Additional Note' tracking=True
  • address_id Many2one → res.partner
    check_company=True default=_get_default_address_id readonly=False store=True string='Work Address' tracking=True args: 'res.partner'
  • allowed_country_state_ids Many2many → res.country.state
    compute='_compute_allowed_country_state_ids' groups='hr.group_hr_user' args: 'res.country.state'
  • children Integer
    groups='hr.group_hr_user' string='Dependent Children' tracking=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_company_id' default=<expr> readonly=False store=True tracking=True args: 'res.company'
  • contract_date_end Date
    groups='hr.group_hr_manager' help="End date of the contract (if it's a fixed-term contract)." tracking=True args: 'Contract End Date'
  • contract_date_start Date
    groups='hr.group_hr_manager' tracking=True args: 'Contract Start Date'
  • contract_template_id Many2one → hr.version
    domain="[('company_id', '=', company_id), ('employee_id', '=', False)]" groups='hr.group_hr_user' help='Select a contract template to auto-fill the contract form with predefined values. You can still edit the fields as needed after applying the template.' string='Contract Template' tracking=True args: 'hr.version'
  • contract_type_id Many2one → hr.contract.type
    groups='hr.group_hr_manager' tracking=True args: 'hr.contract.type', 'Contract Type'
  • contract_wage Monetary
    compute='_compute_contract_wage' groups='hr.group_hr_manager' args: 'Contract Wage'
  • country_code Char
    depends=['company_country_id'] readonly=True related='company_country_id.code'
  • country_id Many2one → res.country
    groups='hr.group_hr_user' tracking=True args: 'res.country', 'Nationality (Country)'
  • currency_id Many2one
    readonly=True related='company_id.currency_id' string='Currency'
  • date_end Date
    compute='_compute_dates' groups='hr.group_hr_manager' search='_search_end_date'
  • date_start Date
    compute='_compute_dates' groups='hr.group_hr_manager' search='_search_start_date'
  • date_version Date
    default=fields.Date.today groups='hr.group_hr_user' required=True tracking=True
  • department_id Many2one → hr.department
    check_company=True index=True tracking=True args: 'hr.department'
  • departure_date Date
    copy=False groups='hr.group_hr_user' string='Departure Date' tracking=True
  • departure_description Html
    copy=False groups='hr.group_hr_user' string='Additional Information'
  • departure_reason_id Many2one → hr.departure.reason
    copy=False groups='hr.group_hr_user' ondelete='restrict' string='Departure Reason' tracking=True args: 'hr.departure.reason'
  • display_name Char
    compute='_compute_display_name'
  • distance_home_work Integer
    groups='hr.group_hr_user' string='Home-Work Distance' tracking=True
  • distance_home_work_unit Selection
    default='kilometers' groups='hr.group_hr_user' required=True tracking=True args: [('kilometers', 'km'), ('miles', 'mi')], 'Home-Work Distance unit'
  • employee_id Many2one → hr.employee
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True string='Employee' tracking=True args: 'hr.employee'
  • employee_type Selection
    default='employee' groups='hr.group_hr_user' required=True string='Employee Type' tracking=True args: [('employee', 'Employee'), ('worker', 'Worker'), ('student', 'Student'), ('trainee', 'Trainee'), ('contractor', 'Contractor'), ('freelance', 'Freelancer')]
  • hr_responsible_id Many2one → res.users
    default=<expr> domain=_get_hr_responsible_domain groups='hr.group_hr_user' help="Person responsible for validating the employee's contracts." required=True tracking=True args: 'res.users', 'HR Responsible'
  • identification_id Char
    groups='hr.group_hr_user' help="Enter the employee's National Identification Number issued by the government (e.g., Aadhaar, SIN, NIN). This is used for official records and statutory compliance." string='Identification No' tracking=True
  • is_current Boolean
    compute='_compute_is_current' groups='hr.group_hr_manager'
  • is_custom_job_title Boolean
    compute='_compute_is_custom_job_title' default=False groups='hr.group_hr_user' store=True
  • is_flexible Boolean
    compute='_compute_is_flexible' groups='hr.group_hr_user' store=True
  • is_fully_flexible Boolean
    compute='_compute_is_flexible' groups='hr.group_hr_user' store=True
  • is_future Boolean
    compute='_compute_is_future' groups='hr.group_hr_manager'
  • is_in_contract Boolean
    compute='_compute_is_in_contract' groups='hr.group_hr_manager'
  • is_past Boolean
    compute='_compute_is_past' groups='hr.group_hr_manager'
  • job_id Many2one → hr.job
    check_company=True index=True tracking=True args: 'hr.job'
  • job_title Char
    compute='_compute_job_title' inverse='_inverse_job_title' readonly=False store=True string='Job Title' tracking=True
  • km_home_work Integer
    compute='_compute_km_home_work' groups='hr.group_hr_user' inverse='_inverse_km_home_work' store=True string='Home-Work Distance in Km' tracking=True
  • last_modified_date Datetime
    default=fields.Datetime.now groups='hr.group_hr_user' required=True string='Last Modified on'
  • last_modified_uid Many2one → res.users
    default=<expr> groups='hr.group_hr_user' required=True string='Last Modified by' args: 'res.users'
  • marital Selection
    default='single' groups='hr.group_hr_user' required=True selection='_get_marital_status_selection' string='Marital Status' tracking=True
  • member_of_department Boolean
    compute='_compute_part_of_department' help="Whether the employee is a member of the active user's department or one of it's child department." search='_search_part_of_department' args: 'Member of department'
  • name Char
    tracking=True
  • passport_expiration_date Date
    groups='hr.group_hr_user' tracking=True args: 'Passport Expiration Date'
  • passport_id Char
    groups='hr.group_hr_user' tracking=True args: 'Passport No'
  • private_city Char
    groups='hr.group_hr_user' string='Private City' tracking=True
  • private_country_id Many2one → res.country
    groups='hr.group_hr_user' string='Private Country' tracking=True args: 'res.country'
  • private_state_id Many2one → res.country.state
    domain="[('id', 'in', allowed_country_state_ids)]" groups='hr.group_hr_user' string='Private State' tracking=True args: 'res.country.state'
  • private_street Char
    groups='hr.group_hr_user' string='Private Street' tracking=True
  • private_street2 Char
    groups='hr.group_hr_user' string='Private Street2' tracking=True
  • private_zip Char
    groups='hr.group_hr_user' string='Private Zip' tracking=True
  • resource_calendar_id Many2one → resource.calendar
    check_company=True inverse='_inverse_resource_calendar_id' string='Working Hours' tracking=True args: 'resource.calendar'
  • sex Selection
    groups='hr.group_hr_user' help='This is the legal sex recognized by the state.' string='Gender' tracking=True args: [('male', 'Male'), ('female', 'Female'), ('other', 'Other')]
  • spouse_birthdate Date
    groups='hr.group_hr_user' string='Spouse Birthdate' tracking=True
  • spouse_complete_name Char
    groups='hr.group_hr_user' string='Spouse Legal Name' tracking=True
  • ssnid Char
    groups='hr.group_hr_user' help='Social Security Number' tracking=True args: 'SSN No'
  • structure_type_id Many2one → hr.payroll.structure.type
    compute='_compute_structure_type_id' default=_default_salary_structure groups='hr.group_hr_manager' readonly=False store=True string='Salary Structure Type' tracking=True args: 'hr.payroll.structure.type'
  • trial_date_end Date
    groups='hr.group_hr_manager' help='End date of the trial period (if there is one).' tracking=True args: 'End of Trial Period'
  • tz Selection
    related='employee_id.tz'
  • wage Monetary
    aggregator='avg' groups='hr.group_hr_manager' help="Employee's monthly gross wage." tracking=True args: 'Wage'
  • work_location_id Many2one → hr.work.location
    domain="[('address_id', '=', address_id)]" tracking=True args: 'hr.work.location', 'Work Location'
Public methods (7)
  • action_open_version(self)
  • action_open_version_form_view(self)
  • check_contract_finished(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_formview_action(self, access_uid=None)
    Override this method in order to redirect many2one towards the right model - Contract template -> hr.version - Employee record -> hr.employee(.public) with version_id in context
  • get_values_from_contract_template(self, contract_template_id)
  • write(self, vals)

New fields (1)
  • contract_template_id Many2one → hr.version
    domain=<expr> groups='hr.group_hr_user' help='Select a contract template to auto-fill the contract form with predefined values. You can still edit the fields as needed after applying the template.' required=True string='Contract Template' args: 'hr.version'
Public methods (1)
  • action_load_template(self)

New fields (6)
  • active Boolean
    default=True
  • address_id Many2one → res.partner
    check_company=True required=True string='Work Address' args: 'res.partner'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • location_number Char
  • location_type Selection
    default='office' required=True string='Cover Image' args: [('home', 'Home'), ('office', 'Office'), ('other', 'Other')]
  • name Char
    required=True string='Work Location'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • department_assignable Boolean
    compute='_compute_department_assignable'
  • department_id Many2one → hr.department
    check_company=True compute='_compute_department_id' index='btree_not_null' ondelete='cascade' readonly=False store=True args: 'hr.department'
Public methods (0)

No public methods.

New fields (1)
  • responsible_type Selection
    ondelete={'coach': 'cascade', 'manager': 'cascade', 'employee': 'cascade'} selection_add=[('coach', 'Coach'), ('manager', 'Manager'), ('employee', 'Employee')]
Public methods (0)

No public methods.

New fields (2)
  • department_id Many2one → hr.department
    compute='_compute_department_id' args: 'hr.department'
  • plan_department_filterable Boolean
    compute='_compute_plan_department_filterable'
Public methods (0)

No public methods.

New fields (1)
  • alias_contact Selection
    ondelete={'employees': 'cascade'} selection_add=[('employees', 'Authenticated Employees')]
Public methods (0)

No public methods.

New fields (9)
  • contract_expiration_notice_period Integer
    default=7 args: 'Contract Expiry Notice Period'
  • employee_properties_definition PropertiesDefinition
    args: 'Employee Properties'
  • hr_presence_control_attendance Boolean
    string='Based on attendances'
  • hr_presence_control_email Boolean
    string='Based on number of emails sent'
  • hr_presence_control_email_amount Integer
    string='# emails to send'
  • hr_presence_control_ip Boolean
    string='Based on IP Address'
  • hr_presence_control_ip_list Char
    string='Valid IP addresses'
  • hr_presence_control_login Boolean
    default=True string='Based on user status in system'
  • work_permit_expiration_notice_period Integer
    default=60 args: 'Work Permit Expiry Notice Period'
Public methods (0)

No public methods.

New fields (11)
  • contract_expiration_notice_period Integer
    readonly=False related='company_id.contract_expiration_notice_period' string='Contract Expiry Notice Period'
  • hr_presence_control_email Boolean
    readonly=False related='company_id.hr_presence_control_email'
  • hr_presence_control_email_amount Integer
    readonly=False related='company_id.hr_presence_control_email_amount'
  • hr_presence_control_ip Boolean
    readonly=False related='company_id.hr_presence_control_ip'
  • hr_presence_control_ip_list Char
    readonly=False related='company_id.hr_presence_control_ip_list'
  • hr_presence_control_login Boolean
    readonly=False related='company_id.hr_presence_control_login'
  • module_hr_attendance Boolean
    readonly=False related='company_id.hr_presence_control_attendance'
  • module_hr_presence Boolean
    string='Advanced Presence Control'
  • module_hr_skills Boolean
    string='Skills Management'
  • resource_calendar_id Many2one → resource.calendar
    readonly=False related='company_id.resource_calendar_id' args: 'resource.calendar', 'Company Working Hours'
  • 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 (3)
  • employee Boolean
    compute='_compute_employee' copy=False help='Whether this contact is an Employee.' readonly=False store=True
  • employee_ids One2many → hr.employee
    groups='hr.group_hr_user' help='Related employees based on their private address' string='Employees' args: 'hr.employee', 'work_contact_id'
  • employees_count Integer
    compute='_compute_employees_count' groups='hr.group_hr_user'
Public methods (1)
  • action_open_employees(self)

New fields (13)
  • bank_city Char
    readonly=False related='bank_id.city'
  • bank_country Many2one
    readonly=False related='bank_id.country'
  • bank_email Char
    readonly=False related='bank_id.email'
  • bank_phone Char
    readonly=False related='bank_id.phone'
  • bank_state Many2one
    readonly=False related='bank_id.state'
  • bank_street Char
    readonly=False related='bank_id.street'
  • bank_street2 Char
    readonly=False related='bank_id.street2'
  • bank_zip Char
    readonly=False related='bank_id.zip'
  • currency_symbol Char
    related='currency_id.symbol'
  • employee_has_multiple_bank_accounts Boolean
    related='employee_id.has_multiple_bank_accounts'
  • employee_id Many2many → hr.employee
    compute='_compute_employee_id' search='_search_employee_id' args: 'hr.employee', 'Employee'
  • employee_salary_amount Float
    compute='_compute_salary_amount' digits=(16, 4) readonly=True store=False string='Salary Allocation'
  • employee_salary_amount_is_percentage Boolean
    compute='_compute_salary_amount' readonly=True store=False
Public methods (1)
  • action_open_allocation_wizard(self)

New fields (34)
  • additional_note Text
    readonly=False related='employee_id.additional_note' related_sudo=False
  • bank_account_ids Many2many
    related='employee_id.bank_account_ids'
  • barcode Char
    readonly=False related='employee_id.barcode' related_sudo=False
  • category_ids Many2many
    readonly=False related='employee_id.category_ids' related_sudo=False string='Employee Tags'
  • create_employee Boolean
    copy=False default=False store=False string='Technical field, whether to create an employee'
  • create_employee_id Many2one → hr.employee
    copy=False store=False string='Technical field, bind user to this employee on create' args: 'hr.employee'
  • emergency_contact Char
    readonly=False related='employee_id.emergency_contact' related_sudo=False
  • emergency_phone Char
    readonly=False related='employee_id.emergency_phone' related_sudo=False
  • employee_bank_account_ids Many2many → res.partner.bank
    readonly=False related='employee_id.bank_account_ids' related_sudo=False string="Employee's Bank Accounts" args: 'res.partner.bank'
  • employee_count Integer
    compute='_compute_employee_count'
  • employee_id Many2one → hr.employee
    compute='_compute_company_employee' search='_search_company_employee' store=False string='Company employee' args: 'hr.employee'
  • employee_ids One2many → hr.employee
    domain=_employee_ids_domain string='Related employee' args: 'hr.employee', 'user_id'
  • employee_resource_calendar_id Many2one
    readonly=True related='employee_id.resource_calendar_id' string="Employee's Working Hours"
  • is_hr_user Boolean
    compute='_compute_is_hr_user'
  • is_system Boolean
    compute='_compute_is_system'
  • job_title Char
    related='employee_id.job_title'
  • km_home_work Integer
    readonly=False related='employee_id.km_home_work' related_sudo=False
  • mobile_phone Char
    readonly=False related='employee_id.mobile_phone' related_sudo=False
  • pin Char
    readonly=False related='employee_id.pin' related_sudo=False
  • private_city Char
    readonly=False related='employee_id.private_city' related_sudo=False string='Private City'
  • private_country_id Many2one
    readonly=False related='employee_id.private_country_id' related_sudo=False string='Private Country'
  • private_email Char
    readonly=False related='employee_id.private_email' string='Private Email'
  • private_phone Char
    readonly=False related='employee_id.private_phone' related_sudo=False
  • private_state_id Many2one
    domain="[('country_id', '=?', private_country_id)]" readonly=False related='employee_id.private_state_id' related_sudo=False string='Private State'
  • private_street Char
    readonly=False related='employee_id.private_street' related_sudo=False string='Private Street'
  • private_street2 Char
    readonly=False related='employee_id.private_street2' related_sudo=False string='Private Street2'
  • private_zip Char
    readonly=False related='employee_id.private_zip' related_sudo=False string='Private Zip'
  • visa_expire Date
    readonly=False related='employee_id.visa_expire' related_sudo=False
  • work_contact_id Many2one
    readonly=False related='employee_id.work_contact_id' related_sudo=False
  • work_email Char
    readonly=False related='employee_id.work_email' related_sudo=False
  • work_location_id Many2one
    readonly=False related='employee_id.work_location_id' related_sudo=True
  • work_location_name Char
    related='employee_id.work_location_name'
  • work_location_type Selection
    related='employee_id.work_location_type'
  • work_phone Char
    readonly=False related='employee_id.work_phone' related_sudo=False
Public methods (11)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property
  • action_create_employee(self)
  • action_get(self)
    @api.model
  • action_open_employees(self)
  • action_related_contact(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_formview_action(self, access_uid=None)
    Override this method in order to redirect many2one towards the full user form view incase the user is ERP manager and the request coming from employee form.
  • get_view(self, view_id=None, view_type='form', **options)
    @api.model
  • get_views(self, views, options=None)
    @api.model
  • write(self, vals)
    Synchronize user and its related employee and check access rights if employees are not allowed to update their own data (otherwise sudo is applied for self data).

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).

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (10)
  • calendar_id Many2one
    inverse='_inverse_calendar_id'
  • department_id Many2one → hr.department
    compute='_compute_department_id' compute_sudo=True args: 'hr.department'
  • employee_id One2many → hr.employee
    check_company=True context={'active_test': False} args: 'hr.employee', 'resource_id'
  • hr_icon_display Selection
    related='employee_id.hr_icon_display'
  • job_title Char
    compute='_compute_job_title' compute_sudo=True
  • show_hr_icon_display Boolean
    related='employee_id.show_hr_icon_display'
  • user_id Many2one
    copy=False
  • work_email Char
    related='employee_id.work_email'
  • work_location_id Many2one
    related='employee_id.work_location_id'
  • work_phone Char
    related='employee_id.work_phone'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…