From 79228dd4d01f70d086feba3cd184e441435fec0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Lef=C3=A8vre?= Date: Fri, 20 Sep 2019 09:23:27 +0000 Subject: [PATCH] [FIX] hr_holidays: Call onchange parent_id Currently, parent_id is defined on hr.employee. This field as an onchange defined. But the inherit of hr.employee.base in the leave module adds an onchange('parent_id'). The onchange method is never called because the onchange in hr.employee does not call super (which it's not supposed to do because the parent model does not have the parent_id field). To fix the issue, parent_id and all its onchange methods are now defined on hr.employee.base --- addons/hr/models/hr_employee.py | 9 --------- addons/hr/models/hr_employee_base.py | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/hr/models/hr_employee.py b/addons/hr/models/hr_employee.py index d886bfd2683..057fafeeca0 100644 --- a/addons/hr/models/hr_employee.py +++ b/addons/hr/models/hr_employee.py @@ -97,9 +97,7 @@ class HrEmployeePrivate(models.Model): image_1920 = fields.Image(default=_default_image) phone = fields.Char(related='address_home_id.phone', related_sudo=False, string="Private Phone", groups="hr.group_hr_user") # employee in company - parent_id = fields.Many2one('hr.employee', 'Manager', domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]") child_ids = fields.One2many('hr.employee', 'parent_id', string='Direct subordinates') - coach_id = fields.Many2one('hr.employee', 'Coach', domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]") category_ids = fields.Many2many( 'hr.employee.category', 'employee_category_rel', 'emp_id', 'category_id', groups="hr.group_hr_manager", @@ -196,13 +194,6 @@ class HrEmployeePrivate(models.Model): if employee.pin and not employee.pin.isdigit(): raise ValidationError(_("The PIN must be a sequence of digits.")) - @api.onchange('parent_id') - def _onchange_parent_id(self): - manager = self.parent_id - previous_manager = self._origin.parent_id - if manager and (self.coach_id == previous_manager or not self.coach_id): - self.coach_id = manager - @api.onchange('job_id') def _onchange_job_id(self): if self.job_id: diff --git a/addons/hr/models/hr_employee_base.py b/addons/hr/models/hr_employee_base.py index 4548cb4382f..b1b5acf3f3d 100644 --- a/addons/hr/models/hr_employee_base.py +++ b/addons/hr/models/hr_employee_base.py @@ -26,6 +26,8 @@ class HrEmployeeBase(models.AbstractModel): user_id = fields.Many2one('res.users') resource_id = fields.Many2one('resource.resource') resource_calendar_id = fields.Many2one('resource.calendar', domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]") + parent_id = fields.Many2one('hr.employee', 'Manager', domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]") + coach_id = fields.Many2one('hr.employee', 'Coach', domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]") tz = fields.Selection( string='Timezone', related='resource_id.tz', readonly=False, help="This field is used in order to define in which timezone the resources will work.") @@ -72,3 +74,10 @@ class HrEmployeeBase(models.AbstractModel): else: employee.last_activity = False employee.last_activity_time = False + + @api.onchange('parent_id') + def _onchange_parent_id(self): + manager = self.parent_id + previous_manager = self._origin.parent_id + if manager and (self.coach_id == previous_manager or not self.coach_id): + self.coach_id = manager