Skip to content

Commit 3b8c9b7

Browse files
authored
Merge pull request #1 from grindtildeath/edi_search_product
Fix search first on supplier code before default code
2 parents e3d80f1 + db73b88 commit 3b8c9b7

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

Diff for: specific-parts/specific-addons/debonix_supplier_invoice_edi/edi_import_supplier_invoice.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -394,23 +394,25 @@ def _get_code_products_dict(self, cr, uid, edi_line_values,
394394
Raise an error if no existing product is found for the product_code.
395395
"""
396396
edi_product_codes = [l.get('product_code') for l in edi_line_values]
397+
# search on product.supplierinfo product_code first
397398
product_supplierinfo_obj = self.pool['product.supplierinfo']
398399
product_supplier_ids = product_supplierinfo_obj.search(cr, uid, [
399400
('product_code', 'in', edi_product_codes)], context=context)
400-
if len(product_supplier_ids) == 1:
401-
products_sup = product_supplierinfo_obj.read(
402-
cr, uid, product_supplier_ids, ['product_code', 'product_id'],
403-
context=context)
404-
edi_products_codes_dict = {products_sup[0]['product_code']:
405-
products_sup[0]['product_id'][0]}
406-
else:
401+
products_sup = product_supplierinfo_obj.read(
402+
cr, uid, product_supplier_ids, ['product_code', 'product_id'], context=context)
403+
edi_products_codes_dict = {p['product_code']: p['product_id'] for p in products_sup}
404+
# Get the products not found
405+
not_found_on_supplierinfo = [code for code in edi_product_codes if code not in edi_products_codes_dict]
406+
if not_found_on_supplierinfo:
407+
# search on product.product default_code
407408
product_obj = self.pool['product.product']
408409
product_ids = product_obj.search(cr, uid, [
409-
('default_code', 'in', edi_product_codes)], context=context)
410+
('default_code', 'in', not_found_on_supplierinfo)], context=context)
410411
products = product_obj.read(cr, uid, product_ids, ['default_code'],
411412
context=context)
412-
edi_products_codes_dict = {p['default_code']: p['id'] for p in
413-
products}
413+
# add found products to edi_products_code_dict
414+
for p in products:
415+
edi_products_codes_dict['p.default_code'] = p.id
414416
not_found_product_codes = set(edi_product_codes) - set(
415417
edi_products_codes_dict.keys())
416418
if not_found_product_codes:

0 commit comments

Comments
 (0)