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):