[FIX] hr_holidays: Remove related on employee's manager
- In SaaS-16 we have added a related on the employee's manager as the manager of the leave.
This cause access rights issues when changing the employee's manager.
We do not want to rewrite all the old records, only the new ones should use the new manager.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user