diff --git a/addons/purchase/models/purchase_order_line.py b/addons/purchase/models/purchase_order_line.py index 00a7ee26380..77d2dd85dfb 100644 --- a/addons/purchase/models/purchase_order_line.py +++ b/addons/purchase/models/purchase_order_line.py @@ -287,7 +287,7 @@ class PurchaseOrderLine(models.Model): self.product_uom = self.product_id.uom_po_id or self.product_id.uom_id product_lang = self.product_id.with_context( lang=get_lang(self.env, self.partner_id.lang).code, - partner_id=self.partner_id.id, + partner_id=None, company_id=self.company_id.id, ) self.name = self._get_product_purchase_description(product_lang) @@ -364,6 +364,8 @@ class PurchaseOrderLine(models.Model): # record product names to avoid resetting custom descriptions default_names = [] vendors = line.product_id._prepare_sellers({}) + product_ctx = {'seller_id': None, 'partner_id': None, 'lang': get_lang(line.env, line.partner_id.lang).code} + default_names.append(line._get_product_purchase_description(line.product_id.with_context(product_ctx))) for vendor in vendors: product_ctx = {'seller_id': vendor.id, 'lang': get_lang(line.env, line.partner_id.lang).code} default_names.append(line._get_product_purchase_description(line.product_id.with_context(product_ctx))) diff --git a/addons/purchase/tests/test_purchase.py b/addons/purchase/tests/test_purchase.py index 563f7967866..572338918d5 100644 --- a/addons/purchase/tests/test_purchase.py +++ b/addons/purchase/tests/test_purchase.py @@ -572,3 +572,48 @@ class TestPurchase(AccountTestInvoicingCommon): self.assertEqual(po1.order_line[0].price_unit, 100) self.assertEqual(po1.order_line[0].discount, 30) + + def test_orderline_supplierinfo_description(self): + supplierinfo_vals = { + 'partner_id': self.partner_a.id, + 'min_qty': 1, + 'product_id': self.product_a.id, + 'product_tmpl_id': self.product_a.product_tmpl_id.id, + } + + self.env["product.supplierinfo"].create([ + { + **supplierinfo_vals, + 'price': 10, + 'product_name': 'Name 1', + 'product_code': 'Code 1', + }, + { + **supplierinfo_vals, + 'price': 20, + 'product_name': 'Name 2', + 'product_code': 'Code 2', + }, + { + 'partner_id': self.partner_a.id, + 'min_qty': 1, + 'product_id': self.product_b.id, + 'product_tmpl_id': self.product_b.product_tmpl_id.id, + 'price': 5, + 'product_name': 'Name 3', + 'product_code': 'Code 3', + } + ]) + + po_form = Form(self.env['purchase.order']) + po_form.partner_id = self.partner_a + with po_form.order_line.new() as line: + line.product_id = self.product_a + line.product_qty = 1 + po = po_form.save() + self.assertEqual(po.order_line.name, '[Code 1] Name 1') + + with po_form.order_line.edit(0) as line: + line.product_id = self.product_b + po = po_form.save() + self.assertEqual(po.order_line.name, '[Code 3] Name 3')