[FIX] website_sale_{loyalty,delivery}: display using website lang
Issue: ====== When we use the website in a language different the the partner lang , it will always display `Free product` in the partner language. Steps to reproduce: =================== - Create a loyalty program that gives a free product - Install another lang (FR for example) apply it for website too - Go to website and change lang to FR - Added the product which gives the free product promotion - Go to cart Origin of the issue: ==================== The lang was forced as partner language in displaying the free product name. Solution: ========= If the call is being made from website , then we need to use the website lang, otherwise the partner_lang opw-3593505 closes odoo/odoo#145122 X-original-commit: fe43d01085f46ac736e598ecfcf9fc3e0c9739f6 Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com> Signed-off-by: Mahdi Cheikh Rouhou (macr) <macr@odoo.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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':
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user