Skip to content
Snippets Groups Projects
Commit eb39622c authored by Goffin Simon's avatar Goffin Simon Committed by Pedro Manuel Calheiros Lima de Sousa (peso)
Browse files

[FIX] delivery: Shipping product is added in user language

Steps to reproduce:

 - Install Sales,Inventory
 - Set delivery methods
 - Set customer language in French have the user in English
 - Create sale order with at least one item
 - Add a delivery Method, Free Delivery Method

Issue:

  Sale order line related to delivery product is in both
  the customer language and user language.
  If you print and invoice, the delivery method line
  will be in two different languages

Cause:

  Partner language wasn't being applied to context
  and therefore translations were not in partner's
  language.

Solution:

  A local variable context was defined and assigned
  the partner language to in the local scope. This induces translations
  to occur in partner's language.

https://github.com/odoo/odoo/blob/cff91c6acbb7ef6a884d4dc4170574b83ff6e4cb/odoo/tools/translate.py#L416-L417



Backport of 863537b9

opw-3000159

closes odoo/odoo#103663

Signed-off-by: default avatarNicolas Lempereur (nle) <nle@odoo.com>
Co-authored-by: default avatarPedro <peso@odoo.com>
parent bf63a711
No related branches found
No related tags found
No related merge requests found
......@@ -91,8 +91,11 @@ class SaleOrder(models.Model):
def _create_delivery_line(self, carrier, price_unit):
SaleOrderLine = self.env['sale.order.line']
context = {}
if self.partner_id:
# set delivery detail in the customer language
# used in local scope translation process
context['lang'] = self.partner_id.lang
carrier = carrier.with_context(lang=self.partner_id.lang)
# Apply fiscal position
......@@ -102,12 +105,12 @@ class SaleOrder(models.Model):
taxes_ids = self.fiscal_position_id.map_tax(taxes, carrier.product_id, self.partner_id).ids
# Create the sales order line
carrier_with_partner_lang = carrier.with_context(lang=self.partner_id.lang)
if carrier_with_partner_lang.product_id.description_sale:
so_description = '%s: %s' % (carrier_with_partner_lang.name,
carrier_with_partner_lang.product_id.description_sale)
if carrier.product_id.description_sale:
so_description = '%s: %s' % (carrier.name,
carrier.product_id.description_sale)
else:
so_description = carrier_with_partner_lang.name
so_description = carrier.name
values = {
'order_id': self.id,
'name': so_description,
......@@ -127,6 +130,7 @@ class SaleOrder(models.Model):
if self.order_line:
values['sequence'] = self.order_line[-1].sequence + 1
sol = SaleOrderLine.sudo().create(values)
del context
return sol
def _format_currency_amount(self, amount):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment