Repository
OCA/hr · module folder · Try on Runboat
Module version
1.2.0
Category
Human Resources/Employees
Folder size
0.3 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/hr
Last tracking update
2026-08-07 08:43:00
Authors
Odoo Community Association (OCA), Fundación Esment
Maintainers
Odoo Community Association (OCA), Fundación Esment
Committers
Weblate, OCA-git-bot, oca-ci, christian-ramos-tecnativa, Estefanía Bauzá Illán
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
None
Description
This module helps maintain the employee motivation process through periodic performance
appraisals.

Managers can evaluate employee performance and enable employees to perform
self-assessments. Review forms can be customized according to organizational needs.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
hr_appraisal_form_view hr.appraisal.form.view hr.appraisal form New
hr_appraisal_kanban_view hr.appraisal.kanban.view hr.appraisal kanban New
hr_appraisal_request_wizard_view hr.appraisal.request.wizard.view hr.appraisal.request.wizard form New
hr_appraisal_search_view hr.appraisal.search.view hr.appraisal search New
hr_appraisal_tag_form_view hr.appraisal.tag.form.view hr.appraisal.tag form New
hr_appraisal_tag_tree_view hr.appraisal.tag.list.view hr.appraisal.tag list New
hr_appraisal_template_form_view hr.appraisal.template.form.view hr.appraisal.template form New
hr_appraisal_template_tree_view hr.appraisal.template.list.view hr.appraisal.template list New
hr_appraisal_tree_view hr.appraisal.list.view hr.appraisal list New
hr_appraisal_wizard_form_view hr.appraisal.wizard.form.view hr.appraisal.wizard form New
res_config_settings_view_form res.config.settings.view.form.inherit.hr.appraisal.oca res.config.settings form Inherits base.res_config_settings_view_form
view_employee_form hr.employee.form.view hr.employee form Inherits hr.view_employee_form
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (9)

New fields (26)
  • active Boolean
    default=True
  • activity_ids One2many → mail.activity
    args: 'mail.activity', 'res_id', 'Activities'
  • appraisal_template_id Many2one → hr.appraisal.template
    check_company=True string='Appraisal Template' args: 'hr.appraisal.template'
  • can_see_employee_publish Boolean
    compute='_compute_can_see_employee_manager_publish' default=False
  • can_see_manager_publish Boolean
    compute='_compute_can_see_employee_manager_publish' default=False
  • color Integer
    string='Color Index'
  • company_id Many2one → res.company
    related='employee_id.company_id' store=True string='Company' args: 'res.company'
  • created_by Many2one → res.users
    default=<expr> args: 'res.users'
  • date_close Date
    help='Closing date of the current appraisal' required=True string='Appraisal Date'
  • department_id Many2one → hr.department
    related='employee_id.department_id' string='Department' args: 'hr.department'
  • employee_appraisal_count Integer
    related='employee_id.appraisal_count' string='Appraisal Count'
  • employee_domain_ids Many2many → hr.employee
    compute='_compute_employee_domain_ids' args: 'hr.employee'
  • employee_feedback Html
    copy=False readonly=False
  • employee_feedback_published Boolean
    default=True tracking=True
  • employee_id Many2one → hr.employee
    default=<expr> domain="[('id', 'in', employee_domain_ids)]" readonly=True required=True string='Employee' args: 'hr.employee'
  • employee_user_id Many2one → res.users
    related='employee_id.user_id' string='Employee User' args: 'res.users'
  • is_manager Boolean
    compute='_compute_is_manager'
  • job_id Many2one → hr.job
    related='employee_id.job_id' string='Job Position' args: 'hr.job'
  • manager_feedback Html
    copy=False readonly=False
  • manager_feedback_published Boolean
    default=True tracking=True
  • manager_ids Many2many → hr.employee
    check_company=True compute='_compute_manager_ids' domain="[('id', '!=', employee_id)]" inverse='_inverse_manager_ids' required=True store=True args: 'hr.employee', 'hr_appraisal_managers_rel', 'hr_appraisal_id'
  • manager_user_ids Many2many → res.users
    compute='_compute_manager_user' string='Manager Users' args: 'res.users'
  • note Html
    help='The content of this note is not visible by the Employee.' string='Private Note'
  • state Selection
    default='1_new' index=True required=True string='Status' tracking=True args: [('1_new', 'To Confirm'), ('2_pending', 'Confirmed'), ('3_done', 'Done')]
  • tag_ids Many2many → hr.appraisal.tag
    string='Tags' args: 'hr.appraisal.tag'
  • visibility Selection
    default='all' help="If set to 'Visible to managers', the appraisal is only visible to managers and HR officers." required=True selection=[('all', 'Visible to all'), ('manager', 'Visible to managers')]
Public methods (9)
  • action_back(self)
  • action_confirm(self)
    Confirm the appraisal by setting its state to 'pending' and resetting feedback flags. - Sends confirmation emails to the employee and managers. - Creates CFR activities for the employee and managers if they have associated users. - If the appraisal is only visible to managers, the employee is not notified and no employee activity is created.
  • action_done(self)
    Mark the appraisal as done, publish feedback flags, send completion emails, and log the status change. - Sends completion email to employee only if visible. - Managers are always notified.
  • action_open_employee_appraisals(self)
  • action_publish_employee_feedback(self)
  • action_publish_manager_feedback(self)
  • action_send_appraisal_request(self)
  • default_get(self, fields_list)
    @api.model
    Set default template and initialize feedback fields. - If user already provided values, preserve them. - If no template is provided, use the default from config. - If no feedback is provided, populate from the selected template.
  • write(self, vals)

New fields (5)
  • appraisal_id Many2one → hr.appraisal
    required=True args: 'hr.appraisal'
  • recipient_ids Many2many → res.partner
    required=True string='Recipients' args: 'res.partner'
  • recipient_users Many2many → res.users
    store=False string='Recipients Users' args: 'res.users'
  • subject Char
  • user_body Html
    string='User Contents'
Public methods (2)
  • default_get(self, fields)
    @api.model
    Provide default values based on 'default_appraisal_id' in context. Prefills recipients, users, subject, and appraisal ID using related appraisal and appropriate email template.
  • send_button(self)
    Send appraisal request email using the appropriate template.

New fields (2)
  • color Integer
    default=_get_default_color
  • name Char
    required=True args: 'Tag Name'
Public methods (0)

No public methods.

New fields (5)
  • appraisal_employee_feedback_template Html
    string='Employee Feedback' translate=True
  • appraisal_manager_feedback_template Html
    string='Manager Feedback' translate=True
  • company_id Many2one → res.company
    default=<expr> args: 'res.company'
  • description Text
    required=True
  • is_default Boolean
    compute='_compute_is_default'
Public methods (0)

No public methods.

New fields (2)
  • res_id Integer
    required=True string='Resource ID'
  • res_model Char
    required=True string='HR Appraisal'
Public methods (1)
  • ok_button(self)
    Publish employee feedback as manager.

New fields (5)
  • allowed_user_ids Many2many → res.users
    column1='employee_id' column2='user_id' compute='_compute_allowed_user_ids' relation='hr_employee_manager_user_rel' store=True string='Allowed Users' args: 'res.users'
  • appraisal_count Integer
    compute='_compute_appraisal_count' groups='hr.group_hr_user' store=True
  • appraisal_ids One2many → hr.appraisal
    string='Appraisal' args: 'hr.appraisal', 'employee_id'
  • last_appraisal_state Selection
    related='last_appraisal_id.state' string='Status'
  • ongoing_appraisal_count Integer
    compute='_compute_ongoing_appraisal_count' groups='hr.group_hr_user' store=True
Public methods (0)

No public methods.

New fields (2)
  • can_open_last_appraisal Boolean
    compute='_compute_can_open_last_appraisal'
  • last_appraisal_id Many2one → hr.appraisal
    compute='_compute_last_appraisal_id' search='_search_last_appraisal_id' args: 'hr.appraisal'
Public methods (1)
  • action_open_last_appraisal(self)

New fields (1)
  • appraisal_default_template_id Many2one → hr.appraisal.template
    comodel_name='hr.appraisal.template' config_parameter='hr_appraisal_oca.default_appraisal_template_id' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" help='Default template used for appraisals' string='Default Appraisal Template'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • send_email_with_template(self, template_xml_id, recipient_id, email, ctx)
    @api.model

Loading…