diff --git a/addons/hr_skills_slides/models/slide_channel.py b/addons/hr_skills_slides/models/slide_channel.py index 98c63bd416d..58609b6d6db 100644 --- a/addons/hr_skills_slides/models/slide_channel.py +++ b/addons/hr_skills_slides/models/slide_channel.py @@ -58,22 +58,33 @@ class Channel(models.Model): def _action_add_members(self, target_partners, **member_values): res = super()._action_add_members(target_partners, **member_values) - - if self.env.user.employee_ids: - msg = _('The employee subscribed to the course %(course)s', - link=self.website_url, - course=self.name) - self.env.user.employee_id.message_post(body=msg) - + for channel in self: + channel._message_employee_chatter( + _('The employee subscribed to the course %(course)s', link=channel.website_url, course=channel.name), + target_partners) return res def _remove_membership(self, partner_ids): res = super()._remove_membership(partner_ids) - if self.env.user.employee_ids: - msg = _('The employee left the course %(course)s', - link=self.website_url, - course=self.name) - self.env.user.employee_id.message_post(body=msg) + partners = self.env['res.partner'].browse(partner_ids) + for channel in self: + channel._message_employee_chatter( + _('The employee left the course %(course)s', link=channel.website_url, course=channel.name), + partners) return res + + def _message_employee_chatter(self, msg, partners): + for partner in partners: + employee = self.env['hr.employee'] + if partner.employee: + employee = partner.employee + elif partner.user_ids: + # If the partner is related to a company, we need the employee who belongs to that same company. + employee = partner.user_ids.sudo().filtered( + lambda u: u.employee_id and (not partner.company_id or u.employee_id.company_id == partner.company_id) + ).employee_id + + if employee: + employee.sudo().message_post(body=msg)