Odoo 路线与推/拉规则详解:配置与使用指南
路线与推/拉规则
路线 在 Odoo 中控制产品在不同位置(内部或外部)之间的流转,使用推规则和拉规则来实现。一旦设置,这些规则会根据特定条件自动化产品移动的物流过程。
::: seealso
- Odoo 教程:路线 - Odoo 中的标准路线 <../daily_operations> :::
:::: note ::: title 注意 :::
路线可以应用于产品、产品类别、运输方式以及销售订单行。 ::::
关于路线和术语
在一个通用仓库中,有收货码头、质量检验区、存储位置、拣选与包装区以及发货码头。所有产品都会经过这些位置。产品在各位置移动时,每个位置会触发产品指定的路线和规则。
{.align-center}
在本例中,供应商卡车将订单产品的托盘卸到收货码头。操作员随后在收货区扫描产品。根据产品的路线和规则,部分产品会被送往质量检验区(例如,用作制造过程的组件),而其他产品则直接存放到各自的位置。
{.align-center}
下面是一个履行路线的示例。早上,会拣选当天需要准备的所有订单的商品。这些商品从存储位置拣选后移至拣选区,靠近订单包装区。随后,订单在各自的箱子中完成包装,传送带将它们送至发货码头,准备交付给客户。
{.align-center}
推规则
推规则用于在产品到达特定收货位置后立即将产品供应到存储位置。
:::: note ::: title 注意 :::
只有在没有已经生成产品转移的拉规则时,推规则才会被触发。 ::::
在使用一步收货路线 <receipts_delivery_one_step> 时,只有一个推规则。当产品进入仓库时,推规则会自动把它转移到存储位置。不同的推规则可以针对不同产品应用,从而实现自定义的存储位置。

有关配置规则的更多信息,请参阅 配置规则章节 <inventory/shipping_receiving/configure-rules>。
拉规则
拉规则在需求触发时(如销售订单或需要补货 <../../warehouses_storage/replenishment/reordering_rules>)启动产品移动。
拉规则从需求位置向后工作。例如,在两步交付 <inventory/shipping_receiving/two-step-delivery> 路线中,商品先从库存移动到出库,再交付到客户位置。拉规则首先在出库到客户之间创建转移。如果产品不在出库,另一个拉规则会在库存到出库之间创建转移。仓库人员随后按逆序处理这些转移:拣选 → 发货。

有关配置规则的更多信息,请参阅 配置规则章节 <inventory/shipping_receiving/configure-rules>。
配置 {#use-routes/routes-rules}
由于路线是推规则和拉规则的集合,Odoo 帮助您管理高级路线配置,例如:
- 管理产品制造链。
- 管理每个产品的默认位置。
- 根据业务需求在仓库内部定义路线,如质量检验、售后服务或供应商退货。
- 通过为租赁产品生成自动回库移动,帮助租赁管理。
要为产品配置路线,首先打开 库存 应用,进入 配置 --> 设置。在 仓库 部分,启用 多步路线 功能并点击 保存。
{.align-center}
:::: note ::: title 注意 :::
存储位置 功能会随 多步路线 功能自动激活。
::::
完成上述第一步后,用户可以使用 Odoo 自带的预配置路线,或自行创建自定义路线。
预配置路线
要访问 Odoo 的预配置路线,进入 库存 --> 配置 --> 仓库,打开仓库表单。在 仓库配置 选项卡中,用户可以查看该仓库针对入库和出库的预配置路线。
{.align-center}
一些更高级的路线(如拣选‑包装‑发货)也可用。用户可选择最符合业务需求的路线。设置好 入库 和 出库 路线后,前往 库存 --> 配置 --> 路线 查看 Odoo 生成的具体路线。
{.align-center}
在 路线 页面,点击任意路线打开表单。表单中可以查看该路线的适用对象。用户还可以将路线限定在特定公司上,这在多公司环境中非常有用,例如在国家 A 有公司和仓库,在国家 B 另有公司和仓库。
{.align-center}
在路线表单底部,用户可以查看该路线的具体规则。每条规则包含动作、源位置和目标位置。
{.align-center}
自定义路线
要创建自定义路线,进入 库存 --> 配置 --> 路线,点击 创建。随后选择该路线可被选中的对象。路线可以同时适用于多种对象的组合。
{.align-center}
每个对象的行为不同,务必只勾选实际需要的对象并相应调整路线。随后配置该路线的规则。
如果路线适用于产品类别,需要在 库存 --> 配置 --> 产品类别 表单中手动为该类别设置路线:打开相应类别,点击 编辑,在物流部分选择路线。
当在产品类别上应用路线时,类别中的所有产品都会遵循该路线配置的规则。这在对同一类别的所有产品使用 dropshipping(直发)流程时非常有用。
{.align-center}
同理,若路线适用于仓库,则该仓库内部满足规则条件的所有转移都会遵循该路线。
{.align-center}
如果路线适用于销售订单行,则在创建报价单时需要手动选择路线。这适用于同一订单中不同产品走不同路线的情况。
记得在报价单/销售订单中显示路线列,然后在每行选择相应的路线。
{.align-center}
最后,也可以将路线直接应用于单个产品。方法与产品类别类似:在 库存 --> 产品 --> 产品 中选择产品,切换到库存标签,在操作部分选择路线。
{.align-center}
:::: important ::: title 重要 :::
只有在路线的规则被正确设置后,路线才能生效。 ::::
规则 {#inventory/shipping_receiving/configure-rules}
规则在路线表单中定义。首先进入 库存 --> 配置 --> 路线,打开目标路线表单,点击 编辑,在规则区点击 添加一行。
{.align-center}
可用的规则会触发不同的动作。除了 Odoo 提供的推和拉规则外,还可选择其他动作。每条规则都有一个动作:
- Pull From(从…拉取):当特定位置需要产品时触发。需求可能来源于已验证的销售订单或制造订单中的组件需求。需求出现后,Odoo 会生成拣选以满足该需求。
- Push To(推送至):当产品到达定义的源位置时触发。若用户将产品移动到源位置,Odoo 会生成拣选,将产品推送到目标位置。
- Pull & Push:同时支持上述两种情况。当在特定位置需要产品时,会先在上游位置创建转移以满足需求,随后将产品推送至目标位置,直至所有需求被满足。
- Buy:在目标位置需要产品时,系统会创建询价单以采购所需产品。
- Manufacture:在源位置需要产品时,系统会创建生产订单以制造所需产品。
{.align-center}
每条规则还需定义作业类型,决定从规则生成何种拣选。
如果规则的动作为 Pull From 或 Pull & Push,则必须设置供应方式,它决定在源位置的处理方式:
- Take From Stock:从源位置的可用库存中提取产品。
- Trigger Another Rule:系统尝试寻找其他库存规则将产品调入源位置,忽略现有库存。
- Take From Stock, if Unavailable, Trigger Another Rule:先从可用库存提取;若库存不足,再触发其他规则调入。
示例流程
下面使用自定义的 拣选‑包装‑发货 路线,演示完整的高级自定义路线流程。
首先快速浏览该路线的规则及其供应方式。共有三条规则,全部为 Pull From。每条规则的供应方式如下:
- Take From Stock:当
WH/包装区需要产品时,会从WH/库存创建内部转移(拣选),满足需求。 - Trigger Another Rule:当
WH/出库需要产品时,会从WH/包装区创建内部转移(包装),满足需求。 - Trigger Another Rule:当
合作伙伴位置/客户需要产品时,会从WH/出库创建交付单,完成发货。
{.align-center}
这意味着,当客户下单且该产品绑定了 拣选‑包装‑发货 路线时,系统会生成交付单来完成订单。
{.align-center}
:::: note ::: title 注意 :::
如果多个转移的来源文档相同(同一销售订单),其状态可能不同。若前置转移尚未完成,后续转移状态为 Waiting Another Operation(等待其他操作)。
::::
{.align-center}
为准备交付单,需要在出库区准备好包装好的产品,于是系统请求从包装区到出库区的内部转移。
{.align-center}
显然,包装区本身也需要产品。因此系统再请求从库存到包装区的内部转移,员工即可从仓库拣选所需商品。
{.align-center}
正如文档开头所述,整个流程的最后一步(此处为交付单)会首先被触发,随后逐层触发其他规则,直至最初的内部转移(库存 → 包装区)完成。所有规则与转移完成后,客户即可收到订单商品。
{.align-center}