[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
This commit is contained in:
Nicolas Martinelli
2017-07-18 13:53:13 +02:00
parent 61304087e7
commit 957d57eaf7
2 changed files with 19 additions and 10 deletions
+1 -1
View File
@@ -54,7 +54,7 @@
<field name="name">Submitted</field>
<field name="res_model">hr.expense.sheet</field>
<field name="description">Expense report submitted, waiting approval</field>
<field name="default" eval="False"/>
<field name="default" eval="True"/>
</record>
<record id="mt_expense_paid" model="mail.message.subtype">
<field name="name">Paid</field>
+18 -9
View File
@@ -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):