@@ -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