From 4a97b2ba1cf3aec32965dff7ddc4fda16f6860f8 Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Wed, 16 Jun 2021 18:33:15 +0200 Subject: [PATCH] [FIX] edi_voxel_sale_order_import: Search products from customerinfo Use the same technique for qualifying the product (but reversed) than used on pickings: - See if there's a product with the reference. - If not, check for a customerinfo record with such code, first on the order partner, and if not found yet, on the commercial entity. Note that here the CustomerSKU/SupplierSKU seems to be swapped from their normal use in pickings/invoices according to empirical samples. TT30469 Co-Authored-By: Pedro M. Baeza --- edi_voxel_sale_order_import/__manifest__.py | 2 +- .../models/sale_order.py | 22 ++++++++++++++++++- .../tests/test_voxel_sale_order_import.py | 12 +++++++++- .../Pedido_20190619_145750_0611125750634.xml | 2 +- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/edi_voxel_sale_order_import/__manifest__.py b/edi_voxel_sale_order_import/__manifest__.py index d72d7436500..3f698174fa4 100644 --- a/edi_voxel_sale_order_import/__manifest__.py +++ b/edi_voxel_sale_order_import/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Voxel sale order", "summary": "Import sale order from Voxel.", - "version": "13.0.1.0.2", + "version": "13.0.1.0.3", "category": "Sale", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/edi", diff --git a/edi_voxel_sale_order_import/models/sale_order.py b/edi_voxel_sale_order_import/models/sale_order.py index 25bd5573128..a58dedb1251 100644 --- a/edi_voxel_sale_order_import/models/sale_order.py +++ b/edi_voxel_sale_order_import/models/sale_order.py @@ -264,10 +264,30 @@ def _parse_product_voxel(self, line_vals, line_element): supplier_sku = product_data.get("SupplierSKU") item = product_data.get("Item") domains = [] - product = self.env["res.partner"] + product = self.env["product.product"].browse() if supplier_sku: domains.append([("default_code", "=", supplier_sku)]) product = self.env["product.product"].search(domains[0]) + if not product: + partner = ( + self.env["sale.order"].browse(line_vals["order_id"]).partner_id + ) + customerinfo = self.env["product.customerinfo"].search( + [("name", "=", partner.id), ("product_code", "=", supplier_sku)], + limit=1, + ) + if not customerinfo: + customerinfo = self.env["product.customerinfo"].search( + [ + ("name", "=", partner.commercial_partner_id.id), + ("product_code", "=", supplier_sku), + ], + limit=1, + ) + product = ( + customerinfo.product_id + or customerinfo.product_tmpl_id.product_variant_ids[:1] + ) if len(product) != 1: if item: domains.append([("name", "=", item)]) diff --git a/edi_voxel_sale_order_import/tests/test_voxel_sale_order_import.py b/edi_voxel_sale_order_import/tests/test_voxel_sale_order_import.py index bcd24975443..6d15f82722d 100644 --- a/edi_voxel_sale_order_import/tests/test_voxel_sale_order_import.py +++ b/edi_voxel_sale_order_import/tests/test_voxel_sale_order_import.py @@ -24,7 +24,7 @@ def setUpClass(cls): "zip": "43111", "state_id": cls.env.ref("base.state_es_t").id, "country_id": cls.env.ref("base.es").id, - "currency_id": pricelist_test.id, + "currency_id": pricelist_test.currency_id.id, "vat": "ESA12345674", } ) @@ -37,11 +37,21 @@ def setUpClass(cls): "ref": "F111", "state_id": cls.env.ref("base.state_es_t").id, "country_id": cls.env.ref("base.es").id, + "property_product_pricelist": pricelist_test.id, } ) cls.product_test_1 = cls.env["product.product"].create( {"default_code": "111111", "name": "PRODUCT TEST"} ) + cls.supplierinfo_product_test_1 = cls.env["product.customerinfo"].create( + { + "name": cls.customer_test.id, + "product_tmpl_id": cls.product_test_1.product_tmpl_id.id, + "product_id": cls.product_test_1.id, + "product_code": "SP11111", + "product_name": "SUPPLIER PRODUCT TEST", + } + ) cls.product_test_2 = cls.env["product.product"].create( {"default_code": "222222", "name": "PRODUCT TEST 2"} ) diff --git a/edi_voxel_sale_order_import/tests/voxel_xml/Pedido_20190619_145750_0611125750634.xml b/edi_voxel_sale_order_import/tests/voxel_xml/Pedido_20190619_145750_0611125750634.xml index 527def60618..87d7770a2d6 100644 --- a/edi_voxel_sale_order_import/tests/voxel_xml/Pedido_20190619_145750_0611125750634.xml +++ b/edi_voxel_sale_order_import/tests/voxel_xml/Pedido_20190619_145750_0611125750634.xml @@ -48,7 +48,7 @@