路线与推/拉规则

路线 在 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>

由于路线推规则拉规则的集合,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 重要 :::

只有在路线的规则被正确设置后,路线才能生效。 ::::

规则在路线表单中定义。首先进入 库存 --> 配置 --> 路线,打开目标路线表单,点击 编辑,在规则区点击 添加一行

{.align-center}

可用的规则会触发不同的动作。除了 Odoo 提供的规则外,还可选择其他动作。每条规则都有一个动作

  • Pull From(从…拉取):当特定位置需要产品时触发。需求可能来源于已验证的销售订单或制造订单中的组件需求。需求出现后,Odoo 会生成拣选以满足该需求。
  • Push To(推送至):当产品到达定义的源位置时触发。若用户将产品移动到源位置,Odoo 会生成拣选,将产品推送到目标位置。
  • Pull & Push:同时支持上述两种情况。当在特定位置需要产品时,会先在上游位置创建转移以满足需求,随后将产品推送至目标位置,直至所有需求被满足。
  • Buy:在目标位置需要产品时,系统会创建询价单以采购所需产品。
  • Manufacture:在源位置需要产品时,系统会创建生产订单以制造所需产品。

{.align-center}

每条规则还需定义作业类型,决定从规则生成何种拣选。

如果规则的动作Pull FromPull & 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}