diff --git a/addons/hr_expense/data/hr_expense_data.xml b/addons/hr_expense/data/hr_expense_data.xml index e378419120d..73f3599826b 100644 --- a/addons/hr_expense/data/hr_expense_data.xml +++ b/addons/hr_expense/data/hr_expense_data.xml @@ -54,7 +54,7 @@ Submitted hr.expense.sheet Expense report submitted, waiting approval - + Paid diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index 11fabccdb30..e9a3409a322 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -412,10 +412,15 @@ class HrExpenseSheet(models.Model): @api.model def create(self, vals): + # Add the followers at creation, so they can be notified + if vals.get('employee_id'): + employee = self.env['hr.employee'].browse(vals['employee_id']) + users = self._get_users_to_subscribe(employee=employee) - self.env.user + vals['message_follower_ids'] = [] + for partner in users.mapped('partner_id'): + vals['message_follower_ids'] += self.env['mail.followers']._add_follower_command(self._name, [], {partner.id: None}, {})[0] sheet = super(HrExpenseSheet, self).create(vals) self.check_consistency() - if vals.get('employee_id'): - sheet._add_followers() return sheet @api.multi @@ -450,16 +455,20 @@ class HrExpenseSheet(models.Model): return 'hr_expense.mt_expense_paid' return super(HrExpenseSheet, self)._track_subtype(init_values) - def _add_followers(self): - user_ids = [] - employee = self.employee_id + def _get_users_to_subscribe(self, employee=False): + users = self.env['res.users'] + employee = employee or self.employee_id if employee.user_id: - user_ids.append(employee.user_id.id) + users |= employee.user_id if employee.parent_id: - user_ids.append(employee.parent_id.user_id.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: - user_ids.append(employee.department_id.manager_id.user_id.id) - self.message_subscribe_users(user_ids=user_ids) + users |= employee.department_id.manager_id.user_id + return users + + def _add_followers(self): + users = self._get_users_to_subscribe() + self.message_subscribe_users(user_ids=users.ids) @api.onchange('employee_id') def _onchange_employee_id(self):