@@ -394,23 +394,25 @@ def _get_code_products_dict(self, cr, uid, edi_line_values,
394
394
Raise an error if no existing product is found for the product_code.
395
395
"""
396
396
edi_product_codes = [l .get ('product_code' ) for l in edi_line_values ]
397
+ # search on product.supplierinfo product_code first
397
398
product_supplierinfo_obj = self .pool ['product.supplierinfo' ]
398
399
product_supplier_ids = product_supplierinfo_obj .search (cr , uid , [
399
400
('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
407
408
product_obj = self .pool ['product.product' ]
408
409
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 )
410
411
products = product_obj .read (cr , uid , product_ids , ['default_code' ],
411
412
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
414
416
not_found_product_codes = set (edi_product_codes ) - set (
415
417
edi_products_codes_dict .keys ())
416
418
if not_found_product_codes :
0 commit comments