Odoo 的库存管理与OpenERP之前的版本有了很大的不同,我将通过连载的方式为大家翻译解读Odoo新的WMS模块中的新特性。
推式规则:

根据一个库存移动的目标库位激发创建另一个库存移动的规则。新创建的库存移动的源库位与原库存移动的目标库位相同。

例如:当货品到达“收货”库位时,设定的推式规则将它们移动到“库存”库位。

所以,当“供应商库位”->”收货“库位的库存移动确认时,该规则会创建另一个库存移动:“收货库位“->“库存库位”。规则允许3中模式:自动(第二个库存移动会被自动确认),手动(第二个库存移动必须手动确认),手动不添加步骤(不创建第二个库存移动而是将第一个库存移动的目标库位替换为指定库位)

推式规则一般用于当采购订单确认后的收货操作,货品需要移入库存库位。


需求 (=拉式)规则:


拉式规则并非推式规则的反向操作!他们的基本不同点在于推式规则影响的是库存移动,而拉式规则影响的是需求。实际上称他们为需求规则更准确。但是,我们也可以这么说:推式规则作用于目标库位,而拉式规则作用于源库位。


当库存移动确认后,如果其需求方式(procurement method)为‘高级:应用需求规则’,则会在其源库位创建一个跟库存移动数量一致的需求单。需求规则会作用于该需求单用以满足需求。不同类型的需求规则会导致需求单运行后产生不同的结果,比如:从其他库位移动产品到原库存移动对应的源库位以满足其对产品的需求,或者通过采购收货到源库位以满足其对产品的需求,也或者通过生产入库到源库位来满足其对产品的需求。参见下图及说明:


Odoo库存管理创建链式库存移动的拉式(需求)和推式规则


这是一个”库存移动“的表单视图,默认情况下其“供应方式”(Supply Method)是“取自库存”(Default:Take from Stock),表示当该库存移动确定时将检查“源库位”是否有足够库存,如果库存不足则进入“等待可用”状态。而当我们将“供应方式”设为:”高级:应用需求规则时“,Odoo就会去检查与该库存移动的”源库位“相关的”需求规则“, 见下图:


Odoo库存管理创建链式库存移动的拉式(需求)和推式规则
上图中可以看到“需求规则”中有定义“需求库位”(Procurement Location), 并且在“动作”(action)中可以选择“采购”,“生产”,和“从其他库位移动存货“(选择此项会显示更多选项),根据“动作”的选择不同会产生对应的需求单,在需求单运行后会产生对应的采购或生产,或其他库存移动来满足“需求库位”的存货需求。

但是需求单也不必一定由库存移动产生。用户可以手动创建需求单,或在确认销售订单时,Odoo为每一个销售订单明细在“客户”货位创建需求单。事实上这个由需求单,库存移动单和需求规则所构建的体系在Odoo系统里是贯彻始终的。比如在最简单的库存管理设置中,当我们运行这些由销售订单创建的需求单时,这些需求规则就会创建出发运单。


在正常情况下需求单会经历下列状态:


已确认:需求单创建之后的状态
运行中:成功应用了一个需求规则(导致创建一个库存移动或报价单或生产单)
完成:   需求规则已应用并且产品已经转运到或已经在需求单所对应的货位了。


当不能找到需求规则或无法应用需求规则(比如产品上没有定义供应商)时,需求单会进入“出错”(Exception)状态。如果对产品的需求不再需要,也可以取消需求单。


默认情况下,Odoo会安装JIT计划模块。Odoo会在需求单确认时自动运算该需求。如果这导致了系统性能问题,我们也可以卸载该模块。这样只有销售订单创建的需求单会被立刻自动运行从而创建出发运单,而由库存移动创建的需求单则不会立即自动运算,而会由计划运行(Scheduler)统一安排运算时间。


由拉式规则生成的规则不能再应用推式规则了,所以拉式规则优先于推式规则。