diff --git a/helpdesk_mgmt/models/helpdesk_ticket.py b/helpdesk_mgmt/models/helpdesk_ticket.py index 27b98b495c..5ce8606ab7 100644 --- a/helpdesk_mgmt/models/helpdesk_ticket.py +++ b/helpdesk_mgmt/models/helpdesk_ticket.py @@ -223,7 +223,13 @@ def create(self, vals_list): ) if channel_email_id: vals["channel_id"] = channel_email_id.id - return super().create(vals_list) + tickets = super().create(vals_list) + for ticket in tickets.filtered( + lambda t: t.team_id.add_leader_as_follower and t.team_id.user_id.partner_id + ): + ticket.message_subscribe(partner_ids=[ticket.team_id.user_id.partner_id.id]) + + return tickets def copy(self, default=None): self.ensure_one() @@ -244,7 +250,16 @@ def write(self, vals): vals["closed_date"] = now if vals.get("user_id"): vals["assigned_date"] = now - return super().write(vals) + res = super().write(vals) + if "team_id" in vals: + for ticket in self.filtered( + lambda t: t.team_id.add_leader_as_follower + and t.team_id.user_id.partner_id + ): + ticket.message_subscribe( + partner_ids=[ticket.team_id.user_id.partner_id.id] + ) + return res def action_duplicate_tickets(self): for ticket in self.browse(self.env.context["active_ids"]): diff --git a/helpdesk_mgmt/models/helpdesk_ticket_team.py b/helpdesk_mgmt/models/helpdesk_ticket_team.py index e2c75c18d9..216865b8d0 100644 --- a/helpdesk_mgmt/models/helpdesk_ticket_team.py +++ b/helpdesk_mgmt/models/helpdesk_ticket_team.py @@ -75,6 +75,11 @@ class HelpdeskTeam(models.Model): compute="_compute_complete_name", store=True, recursive=True ) parent_path = fields.Char(index=True, unaccent=False) + add_leader_as_follower = fields.Boolean( + string="Leader follows tickets", + default=False, + help="If enabled, the team leader will automatically follow new tickets.", + ) @api.depends("name", "parent_id.complete_name") def _compute_complete_name(self): diff --git a/helpdesk_mgmt/tests/test_helpdesk_ticket.py b/helpdesk_mgmt/tests/test_helpdesk_ticket.py index f4bf33d9bf..45b08539db 100644 --- a/helpdesk_mgmt/tests/test_helpdesk_ticket.py +++ b/helpdesk_mgmt/tests/test_helpdesk_ticket.py @@ -111,6 +111,40 @@ def test_helpdesk_ticket_copy(self): "have the same number than the origin ticket.", ) + def test_helpdesk_ticket_team_leader_follower_on_create(self): + self.team_a.write( + { + "add_leader_as_follower": True, + "user_id": self.user_own.id, + } + ) + new_ticket = self.env["helpdesk.ticket"].create( + { + "name": "Ticket with team leader follower", + "description": "Description", + "team_id": self.team_a.id, + } + ) + self.assertIn(self.user_own.partner_id, new_ticket.message_partner_ids) + + def test_helpdesk_ticket_team_leader_follower_on_team_change(self): + self.team_b.write( + { + "add_leader_as_follower": True, + "user_id": self.user_team.id, + } + ) + new_ticket = self.env["helpdesk.ticket"].create( + { + "name": "Ticket changing team", + "description": "Description", + "team_id": self.team_a.id, + } + ) + self.assertNotIn(self.user_team.partner_id, new_ticket.message_partner_ids) + new_ticket.write({"team_id": self.team_b.id}) + self.assertIn(self.user_team.partner_id, new_ticket.message_partner_ids) + def test_helpdesk_ticket_message_new(self): Partner = self.env["res.partner"] Ticket = self.env["helpdesk.ticket"] diff --git a/helpdesk_mgmt/views/helpdesk_ticket_team_views.xml b/helpdesk_mgmt/views/helpdesk_ticket_team_views.xml index 12b31b4bd2..843674c3e3 100644 --- a/helpdesk_mgmt/views/helpdesk_ticket_team_views.xml +++ b/helpdesk_mgmt/views/helpdesk_ticket_team_views.xml @@ -102,6 +102,7 @@ groups="base.group_multi_company" /> +