diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index 5519ca8a888..cc827d6fce7 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -527,18 +527,10 @@ class HrExpenseSheet(models.Model): @api.model def create(self, vals): - self._create_set_followers(vals) sheet = super(HrExpenseSheet, self).create(vals) sheet.activity_update() return sheet - @api.multi - def write(self, vals): - res = super(HrExpenseSheet, self).write(vals) - if vals.get('employee_id'): - self._add_followers() - return res - @api.multi def unlink(self): for expense in self: @@ -561,41 +553,14 @@ class HrExpenseSheet(models.Model): return 'hr_expense.mt_expense_paid' return super(HrExpenseSheet, self)._track_subtype(init_values) - def _get_users_to_subscribe(self, employee=False): - users = self.env['res.users'] - employee = employee or self.employee_id - if employee.user_id: - users |= employee.user_id - if employee.parent_id: - users |= employee.parent_id.user_id - if employee.department_id and employee.department_id.manager_id and employee.parent_id != employee.department_id.manager_id: - users |= employee.department_id.manager_id.user_id - return users - - def _add_followers(self): - users = self._get_users_to_subscribe() - self.message_subscribe(partner_ids=users.mapped('partner_id').ids) - - @api.model - def _create_set_followers(self, values): - # Add the followers at creation, so they can be notified - employee_id = values.get('employee_id') - if not employee_id: - return - - employee = self.env['hr.employee'].browse(employee_id) - users = self._get_users_to_subscribe(employee=employee) - self.env.user - values['message_follower_ids'] = [] - MailFollowers = self.env['mail.followers'] - for partner in users.mapped('partner_id'): - values['message_follower_ids'] += MailFollowers._add_follower_command(self._name, [], {partner.id: None}, {})[0] - - if values.get('user_id') and values.get('user_id') != employee.user_id.id and values.get('user_id') != self.env.uid: - resp_partner = self.env['res.users'].browse(values['user_id']) - # Parsing ORM command to avoid adding several times the same partner - # TDE note: a better implementation should come in saas 11.3 or 11.4, allowing to normally remove that code - if resp_partner.partner_id.id not in (x[2].get('partner_id') for x in values['message_follower_ids'] if len(x) == 3): - values['message_follower_ids'] += MailFollowers._add_follower_command(self._name, [], {resp_partner.partner_id.id: None}, {})[0] + def _message_auto_subscribe_followers(self, updated_values, subtype_ids): + res = super(HrExpenseSheet, self)._message_auto_subscribe_followers(updated_values, subtype_ids) + if updated_values.get('employee_id'): + employee = self.env['hr.employee'].browse(updated_values['employee_id']) + users = employee.user_id | employee.parent_id.user_id | employee.department_id.manager_id.user_id + for pid in users.mapped('partner_id').ids: + res.append((pid, subtype_ids, False)) + return res # -------------------------------------------- # Actions