From 2c5a8568507bcabbf244abddb8e8ca29b1494a4f Mon Sep 17 00:00:00 2001 From: Evgeniia Kotova Date: Fri, 8 Dec 2023 22:44:16 +0000 Subject: [PATCH] [FIX] sale: change sales team on sale.order if specified on res.partner Current behavior: If new partner is chosen on sale.order, sales team remains the same. This fix allows sales team from res.partner to be considered. opw-3607442 closes odoo/odoo#147231 X-original-commit: ff5a2a419b89fc24b3fbc34edb88c31403484d94 Signed-off-by: Evgeniia Kotova (evko) Signed-off-by: Victor Feyens (vfe) --- addons/sale/models/sale_order.py | 2 +- addons/sale/tests/test_sale_order.py | 29 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/addons/sale/models/sale_order.py b/addons/sale/models/sale_order.py index 0be6c311ead..2b287589424 100644 --- a/addons/sale/models/sale_order.py +++ b/addons/sale/models/sale_order.py @@ -435,7 +435,7 @@ class SaleOrder(models.Model): def _compute_team_id(self): cached_teams = {} for order in self: - default_team_id = self.env.context.get('default_team_id', False) or order.team_id.id or order.partner_id.team_id.id + default_team_id = self.env.context.get('default_team_id', False) or order.partner_id.team_id.id or order.team_id.id user_id = order.user_id.id company_id = order.company_id.id key = (default_team_id, user_id, company_id) diff --git a/addons/sale/tests/test_sale_order.py b/addons/sale/tests/test_sale_order.py index 8fd7095f1dd..48da187fcce 100644 --- a/addons/sale/tests/test_sale_order.py +++ b/addons/sale/tests/test_sale_order.py @@ -637,3 +637,32 @@ class TestSalesTeam(SaleCommon): self.sale_order.prepayment_percent = -1 with self.assertRaises(ValidationError): self.sale_order.prepayment_percent = 1.01 + + def test_sales_team_defined_on_partner_user_no_team(self): + """ Test that sale order picks up a team from res.partner on change if user has no team specified """ + + crm_team0 = self.env['crm.team'].create({ + 'name':"Test Team A" + }) + + crm_team1 = self.env['crm.team'].create({ + 'name':"Test Team B" + }) + + partner_a = self.env['res.partner'].create({ + 'name': 'Partner A', + 'team_id': crm_team0.id, + }) + + partner_b = self.env['res.partner'].create({ + 'name': 'Partner B', + 'team_id': crm_team1.id, + }) + + sale_order = self.env['sale.order'].with_user(self.user_not_in_team).create({ + 'partner_id': partner_a.id, + }) + + self.assertEqual(sale_order.team_id, crm_team0, "Sales team should change to partner's") + sale_order.with_user(self.user_not_in_team).write({'partner_id': partner_b.id}) + self.assertEqual(sale_order.team_id, crm_team1, "Sales team should change to partner's")