上海序说科技,专注于基于Odoo项目实施,实现企业数智化,助力企业成长。
老韩头的开发日常,博客园分享(2022年前博文)
背景
客户在对接第三方的电商平台的时候,存在Odoo系统中配置的属性与第三方电商平台配置的产品属性不一致的情况。比如,我们在Odoo中某产品有4个属性,而电商平台只有其中的三个属性。
因此在该平台销售出去产品的时候,我们是没有办法直接匹配到目标产品的(除非单独建一个三个属性的产品)。
需求
希望在电商平台销售出去这类产品的时候,可以按照一定的规则匹配到其中的任意一台。这里的规则可以是库存最少的、距离客户位置距离最新的等等。
实现
为产品添加一个“共享库存产品”的字段,并为这类产品配置需要共享的产品对象。这里的字段是many2many类型。原因有二,①可避免在核心对象(product.product)新增字段;②可能存在多个产品相互共享的情况。
此处需要强调的是,在获取目标产品的时候,需判断当前库位是否可满足本次销售的数量要求。
if o_product.shared_product_ids:
product_ids = o_product.shared_product_ids.ids
product_ids.append(o_product.id)
prodcut_stock_quants = STOCK_QUANT.search([('product_id','in',product_ids),('location_id','=',location_src_id.id)]).filtered(lambda quant:quant.quantity - quant.reserved_quantity>=demand_count)
if prodcut_stock_quants:
prodcut_stock_quants = sorted(prodcut_stock_quants, key=lambda quant: quant.quantity - quant.reserved_quantity)
o_product = prodcut_stock_quants[0].product_id
return o_product
标签:product,quants,ids,quant,逻辑,Odoo,共享,id,prodcut
From: https://www.cnblogs.com/xushuotec/p/16831904.html