diff --git a/addons/crm/models/crm_team.py b/addons/crm/models/crm_team.py index 60b5c3ed49c..652df523700 100644 --- a/addons/crm/models/crm_team.py +++ b/addons/crm/models/crm_team.py @@ -497,11 +497,12 @@ class Team(models.Model): leads_assigned += lead leads_done_ids.add(lead.id) - leads_assigned._handle_salesmen_assignment(user_ids=None, team_id=self.id) + duplicates_to_assign = self.env['crm.lead'].union(*leads_dups_dict.keys()) + (leads_assigned | duplicates_to_assign)._handle_salesmen_assignment(user_ids=None, team_id=self.id) for lead in leads.filtered(lambda lead: lead in leads_dups_dict): lead_duplicates = leads_dups_dict[lead] - merged = lead_duplicates._merge_opportunity(user_id=False, team_id=self.id, max_length=0) + merged = lead_duplicates._merge_opportunity(user_id=False, team_id=False, max_length=0) leads_dup_ids.update((lead_duplicates - merged).ids) leads_merged_ids.add(merged.id) diff --git a/addons/crm/tests/test_crm_lead_assignment.py b/addons/crm/tests/test_crm_lead_assignment.py index 11a5c953176..b72e8c19e64 100644 --- a/addons/crm/tests/test_crm_lead_assignment.py +++ b/addons/crm/tests/test_crm_lead_assignment.py @@ -196,6 +196,8 @@ class TestLeadAssign(TestLeadAssignCommon): self.env['crm.team'].browse(self.sales_teams.ids)._action_assign_leads(work_days=2) # teams assign + # due to duplicate management keeping master team, we may not ensure leads to be + # fulfilling their original team volume leads = self.env['crm.lead'].search([('id', 'in', leads.ids)]) # ensure order leads_st1 = leads.filtered_domain([('team_id', '=', self.sales_team_1.id)]) leads_stc = leads.filtered_domain([('team_id', '=', self.sales_team_convert.id)]) @@ -411,5 +413,5 @@ class TestLeadAssign(TestLeadAssignCommon): sales_team_dupe._action_assign_leads(work_days=2) self.assertFalse(dupe_lead.exists()) - self.assertEqual(master_opp.team_id, sales_team_dupe, 'Opportunity: current team wins lead even if was on duplicated lead') + self.assertEqual(master_opp.team_id, self.sales_team_1, 'Opportunity: should keep its sales team') self.assertEqual(master_opp.user_id, self.user_sales_manager, 'Opportunity: should keep its salesman') diff --git a/addons/crm/tests/test_performances.py b/addons/crm/tests/test_performances.py index fdea9cd00b6..42de8145b7b 100644 --- a/addons/crm/tests/test_performances.py +++ b/addons/crm/tests/test_performances.py @@ -54,6 +54,8 @@ class TestLeadAssignPerf(TestLeadAssignCommon): self.env['crm.team'].browse(self.sales_teams.ids)._action_assign_leads(work_days=2) # teams assign + # due to duplicate management keeping master team, we may not ensure leads to be + # fulfilling their original team volume leads = self.env['crm.lead'].search([('id', 'in', leads.ids)]) # ensure order leads_st1 = leads.filtered_domain([('team_id', '=', self.sales_team_1.id)]) leads_stc = leads.filtered_domain([('team_id', '=', self.sales_team_convert.id)])