[FIX] sale_stock: translate product name

Use case: have a partner in fr_FR while operating with a user in en_US
Create a SO for that partner
add a product which name is translated in french

Before this commit, the description of the sale order line takes the
*untranslated* name of the product

After this commit, it takes the *translated* name of the product

The issue was due to a limitation of sudoing within an onchange for related fields
(typically the case of product.product.name)
In this case, values that are missing in the cache are retrieved from another one

In our case:
First, _onchange_product_id_check_availability triggers the evaluation
of product.name as sudo (later in the stack), without lang in context

Second, the function that actually uses the product.name (product_id_change)
retrieves the value found before from the 'wrong' cache

OPW 1863305, 1884106
closes #27031
This commit is contained in:
Lucas Perais (lpe)
2018-09-19 09:12:51 +02:00
parent 7640575a24
commit 6ce265b815
+4 -1
View File
@@ -163,7 +163,10 @@ class SaleOrderLine(models.Model):
return {}
if self.product_id.type == 'product':
precision = self.env['decimal.precision'].precision_get('Product Unit of Measure')
product = self.product_id.with_context(warehouse=self.order_id.warehouse_id.id)
product = self.product_id.with_context(
warehouse=self.order_id.warehouse_id.id,
lang=self.order_id.partner_id.lang or self.env.user.lang or 'en_US'
)
product_qty = self.product_uom._compute_quantity(self.product_uom_qty, self.product_id.uom_id)
if float_compare(product.virtual_available, product_qty, precision_digits=precision) == -1:
is_available = self._check_routing()