diff --git a/addons/hr_holidays/models/hr.py b/addons/hr_holidays/models/hr.py index eb69a0437b1..7767b648aa8 100644 --- a/addons/hr_holidays/models/hr.py +++ b/addons/hr_holidays/models/hr.py @@ -215,3 +215,10 @@ class Employee(models.Model): ('type', '=', 'remove') ]) return [('id', 'in', holidays.mapped('employee_id').ids)] + + def write(self, values): + res = super(Employee, self).write(values) + if 'parent_id' in values: + holidays = self.env['hr.holidays'].search([('state', 'in', ['draft', 'confirm']), ('employee_id', 'in', self.ids)]) + holidays.write({'manager_id': values['parent_id']}) + return res diff --git a/addons/hr_holidays/models/hr_holidays.py b/addons/hr_holidays/models/hr_holidays.py index 2ad8de7130e..5706317a019 100644 --- a/addons/hr_holidays/models/hr_holidays.py +++ b/addons/hr_holidays/models/hr_holidays.py @@ -180,7 +180,7 @@ class Holidays(models.Model): states={'draft': [('readonly', False)], 'confirm': [('readonly', False)]}) employee_id = fields.Many2one('hr.employee', string='Employee', index=True, readonly=True, states={'draft': [('readonly', False)], 'confirm': [('readonly', False)]}, default=_default_employee, track_visibility='onchange') - manager_id = fields.Many2one('hr.employee', related='employee_id.parent_id', string='Manager', readonly=True, store=True) + manager_id = fields.Many2one('hr.employee', string='Manager', readonly=True) notes = fields.Text('Reasons', readonly=True, states={'draft': [('readonly', False)], 'confirm': [('readonly', False)]}) number_of_days_temp = fields.Float( 'Allocation', copy=False, readonly=True, @@ -213,6 +213,10 @@ class Holidays(models.Model): double_validation = fields.Boolean('Apply Double Validation', related='holiday_status_id.double_validation') can_reset = fields.Boolean('Can reset', compute='_compute_can_reset') + @api.onchange('employee_id') + def _onchange_employee_id(self): + self.manager_id = self.employee_id and self.employee_id.parent_id + @api.multi @api.depends('number_of_days_temp', 'type') def _compute_number_of_days(self): @@ -358,6 +362,8 @@ class Holidays(models.Model): values.update({'department_id': self.env['hr.employee'].browse(employee_id).department_id.id}) holiday = super(Holidays, self.with_context(mail_create_nolog=True, mail_create_nosubscribe=True)).create(values) holiday.add_follower(employee_id) + if 'employee_id' in values: + holiday._onchange_employee_id() return holiday @api.multi @@ -367,6 +373,8 @@ class Holidays(models.Model): raise AccessError(_('You cannot set a leave request as \'%s\'. Contact a human resource manager.') % values.get('state')) result = super(Holidays, self).write(values) self.add_follower(employee_id) + if 'employee_id' in values: + self._onchange_employee_id() return result @api.multi