| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/18.0/hr_appraisal_oca |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Human Resources/Employees |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Fundación Esment |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Fundación Esment |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, christian-ramos-tecnativa, Estefanía Bauzá Illán |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:08 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - hr - base_setup - web - digest - 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 | 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. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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 | xpath | Inherits base.res_config_settings_view_form |
view_employee_form |
hr.employee.form.view | hr.employee | div | Inherits hr.view_employee_form |
active
Boolean
default=True
activity_ids
One2many → mail.activity
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')]
action_back(self)
action_confirm(self)
action_done(self)
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)
write(self, vals)
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'
default_get(self, fields)
send_button(self)
color
Integer
default=_get_default_color
name
Char
required=True
args: 'Tag Name'
No public methods.
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'
No public methods.
res_id
Integer
required=True
string='Resource ID'
res_model
Char
required=True
string='HR Appraisal'
ok_button(self)
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
No public methods.
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'
action_open_last_appraisal(self)
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'
No public methods.
No new fields.
Public methods (1)send_email_with_template(self, template_xml_id, recipient_id, email, ctx)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/hr |
| GIT | |
| GIT | https://github.com/OCA/hr.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/hr/tree/16.0/hr_appraisal_oca |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Human Resources/Employees |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Fundación Esment |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Fundación Esment |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Estefanía Bauzà Illán |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/hr |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:11:53 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - hr - base_setup - web - bus - web_tour - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| 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. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
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.tree.view | hr.appraisal.tag | tree | New |
hr_appraisal_template_form_view |
hr.appraisal.template.form.view | hr.appraisal.template | form | New |
hr_appraisal_template_tree_view |
hr.appraisal.template.tree.view | hr.appraisal.template | tree | New |
hr_appraisal_tree_view |
hr.appraisal.tree.view | hr.appraisal | tree | 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 | xpath | Inherits base.res_config_settings_view_form |
view_employee_form |
hr.employee.form.view | hr.employee | div | Inherits hr.view_employee_form |
active
Boolean
default=True
activity_ids
One2many → mail.activity
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
compute='_compute_department'
args: 'hr.department', '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
compute='_compute_employee_feedback'
readonly=False
store=True
employee_feedback_published
Boolean
default=True
tracking=True
employee_feedback_template
Html
compute='_compute_feedback_templates'
employee_id
Many2one → hr.employee
default=<expr>
domain="[('id', 'in', employee_domain_ids)]"
readonly=True
required=True
states={'1_new': [('readonly', False)]}
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
compute='_compute_manager_feedback'
readonly=False
store=True
manager_feedback_published
Boolean
default=True
tracking=True
manager_feedback_template
Html
compute='_compute_feedback_templates'
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'
action_back(self)
action_confirm(self)
action_done(self)
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)
write(self, vals)
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'
default_get(self, fields)
send_button(self)
color
Integer
default=_get_default_color
name
Char
required=True
args: 'Tag Name'
No public methods.
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'
No public methods.
res_id
Integer
required=True
string='Resource ID'
res_model
Char
required=True
string='HR Appraisal'
ok_button(self)
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
No public methods.
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'
action_open_last_appraisal(self)
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'
No public methods.
No new fields.
Public methods (1)send_email_with_template(self, template_xml_id, recipient_id, email, ctx)