From 957d57eaf7b015a06d88e527ff32d4aa3561b80d Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Mon, 17 Jul 2017 14:58:29 +0200 Subject: [PATCH] [FIX] hr_expense: mail to manager When an employee submits an expense, no mail is sent to the manager. This should be the case, since it works this way on holidays. The trick, however, is that the expense is created as submitted, but the followers are only added afterwards. We need to make sure to add the followers at creation. opw-751085 --- addons/hr_expense/data/hr_expense_data.xml | 2 +- addons/hr_expense/models/hr_expense.py | 27 ++++++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) 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):