From f61c5a43ee92b4ec94b375fa583b163561afa4ea Mon Sep 17 00:00:00 2001 From: Victor Feyens Date: Thu, 16 Feb 2023 14:58:39 +0000 Subject: [PATCH] [FIX] sale: salesman computation Task-3105314 closes odoo/odoo#113314 X-original-commit: bba5b6a440544151cc610bbc6848adfbadb38bfb Signed-off-by: Victor Feyens (vfe) --- addons/sale/models/sale_order.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/sale/models/sale_order.py b/addons/sale/models/sale_order.py index 9f64b5046ad..794dc8f0ffb 100644 --- a/addons/sale/models/sale_order.py +++ b/addons/sale/models/sale_order.py @@ -415,9 +415,15 @@ class SaleOrder(models.Model): @api.depends('partner_id') def _compute_user_id(self): for order in self: - if order.partner_id and not order.user_id: - order.user_id = order.partner_id.user_id or order.partner_id.commercial_partner_id.user_id or \ - (self.user_has_groups('sales_team.group_sale_salesman') and self.env.user) + if order.partner_id and not (order._origin.id and order.user_id): + # Recompute the salesman on partner change + # * if partner is set (is required anyway, so it will be set sooner or later) + # * if the order is not saved or has no salesman already + order.user_id = ( + order.partner_id.user_id + or order.partner_id.commercial_partner_id.user_id + or (self.user_has_groups('sales_team.group_sale_salesman') and self.env.user) + ) @api.depends('partner_id', 'user_id') def _compute_team_id(self):