diff --git a/addons/sale/models/sale_order.py b/addons/sale/models/sale_order.py index 4553712985b..7a52ab599fa 100644 --- a/addons/sale/models/sale_order.py +++ b/addons/sale/models/sale_order.py @@ -1898,3 +1898,11 @@ class SaleOrder(models.Model): """ self.ensure_one() return self.currency_id.compare_amounts(self.amount_paid, self.amount_total) >= 0 + + def _get_lang(self): + self.ensure_one() + + if self.partner_id.lang and not self.partner_id.is_public: + return self.partner_id.lang + + return self.env.lang diff --git a/addons/sale/models/sale_order_line.py b/addons/sale/models/sale_order_line.py index 3d225247d9c..ce454eaa8f4 100644 --- a/addons/sale/models/sale_order_line.py +++ b/addons/sale/models/sale_order_line.py @@ -313,10 +313,10 @@ class SaleOrderLine(models.Model): @api.depends('product_id') def _compute_name(self): for line in self: - lang = line.order_partner_id.lang or self.env.user.lang if not line.product_id: continue - if not line.order_partner_id.is_public: + lang = line.order_id._get_lang() + if lang != self.env.lang: line = line.with_context(lang=lang) name = line._get_sale_order_line_multiline_description_sale() if line.is_downpayment and not line.display_type: diff --git a/addons/sale_loyalty/models/sale_order.py b/addons/sale_loyalty/models/sale_order.py index 7c71fa8cbfa..ad2ff6c2747 100644 --- a/addons/sale_loyalty/models/sale_order.py +++ b/addons/sale_loyalty/models/sale_order.py @@ -541,8 +541,8 @@ class SaleOrder(models.Model): def _get_reward_line_values(self, reward, coupon, **kwargs): self.ensure_one() - self = self.with_context(lang=self.partner_id.lang) - reward = reward.with_context(lang=self.partner_id.lang) + self = self.with_context(lang=self._get_lang()) + reward = reward.with_context(lang=self._get_lang()) if reward.reward_type == 'discount': return self._get_reward_values_discount(reward, coupon, **kwargs) elif reward.reward_type == 'product': diff --git a/addons/sale_loyalty_delivery/models/sale_order.py b/addons/sale_loyalty_delivery/models/sale_order.py index 2451ebd1a19..daf21169551 100644 --- a/addons/sale_loyalty_delivery/models/sale_order.py +++ b/addons/sale_loyalty_delivery/models/sale_order.py @@ -53,8 +53,8 @@ class SaleOrder(models.Model): def _get_reward_line_values(self, reward, coupon, **kwargs): self.ensure_one() if reward.reward_type == 'shipping': - self = self.with_context(lang=self.partner_id.lang) - reward = reward.with_context(lang=self.partner_id.lang) + self = self.with_context(lang=self._get_lang()) + reward = reward.with_context(lang=self._get_lang()) return self._get_reward_values_free_shipping(reward, coupon, **kwargs) return super()._get_reward_line_values(reward, coupon, **kwargs) diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index fae5b696b6c..5be17a4118a 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -632,3 +632,12 @@ class SaleOrder(models.Model): def _is_public_order(self): self.ensure_one() return self.partner_id.id == request.website.user_id.sudo().partner_id.id + + def _get_lang(self): + res = super()._get_lang() + + if self.website_id and request and request.is_frontend: + # Use request lang as cart lang if request comes from frontend + return request.env.lang + + return res