Skip to content

路线和规则

一、路线

1.序列

用途: 决定多条路线的执行优先级,数字越小,优先级越高;当一个产品可能匹配到多条路线时,系统会根据序列决定先执行哪个。

2.供应的仓库

含义: 当前路线作用于哪个仓库;用于多仓库系场景。

应用场景: 主仓库给分仓库补货。

3.公司

含义: 不配置,则为共享路线,作用于所有公司;配置,则为专用路线,作用于配置的公司。

4.可应用于

配置项用途说明优先级
销售订单明细在销售订单行手动选择路线(如 代发货1
包装可在产品包装设置中选择该路线2
产品可以让路线直接绑定在产品上3
产品类别属于某类别的所有产品可自动继承路线4
仓库切换仓库时,自动使用该路线5
送货方式可在交货方式设置中选择该路线6

优先级参考代码

python
# addons\stock\models\stock_rule.py
def get_rule_for_routes(rule_dict, route_ids, packaging_id, product_id, warehouse_id, location_dest_id):
    res = self.env['stock.rule']
    if route_ids:
        res = extract_rule(rule_dict, route_ids, warehouse_id, location_dest_id)
    if not res and packaging_id:
        res = extract_rule(rule_dict, packaging_id.route_ids, warehouse_id, location_dest_id)
    if not res:
        res = extract_rule(rule_dict, product_id.route_ids | product_id.categ_id.total_route_ids, warehouse_id, location_dest_id)
    if not res and warehouse_id:
        res = extract_rule(rule_dict, warehouse_id.route_ids, warehouse_id, location_dest_id)
    return res

5.控制规则

路线是通过规则来驱动和控制的,odoo 中的规则操作类型如下列表:

操作类型含义用途
当目标位置需要产品时,从源位置自动“拉取”库存调拨
当产品进入源位置时,系统自动“推送”到目标位置。调拨
拉推同时具备拉和推的行为,适合串联多个中转库位。调拨
购买当有需求时,不是从库存拉货,而是触发外部采购。补货
制造当有需求时,不是从库存拉货,而是触发生产制造。补货

备注:路线是否生效,取决于路线中的规则能否成功匹配。

6.视频讲解:odoo库存-路线配置

二、规则

1.操作

  • 含义: 本质上是实现库存自动化流转的触发器+指令执行

2.作业类型

  • 含义: 指令执行的内容。

3.使用规则的目标位置

  • 含义: 当前规则的目的位置与作业类型(Operation Type)目的位置不一致时,在创建作业单的时候,如果勾选则使用当前规则的目的位置,如果不勾选,则使用作业类型的目的位置。

源位置和目的位置存在的意义

1.确定作业单的源位置和目的位置

2.组合完整路线

4.供应方法

  • a.从库存获取: 产品从源位置的库存中获取,库存不足,也不会自动去采购 / 制造 / 调拨。

  • b.触发其他规则: 跳过源位置库存,通过触发路线的上游规则去获取。

  • c.从库存调取,如不可用,触发其他规则: 优先从源位置库存获取,如不能满足,再往上游找。

5.传播

  • a.补货组的传播

    补货组定义: 用来把 同一业务来源 的一整串库存动作(move / picking / MO / PO)串在一起的 业务主线id。例如,一张销售订单(SO)对应 一个补货组id; MTO / 制造 / 采购,都是围绕这个补货组展开的。

    补货组的传播: (例如销售订单)生成上游的需求(例如采购订单)时,新生成的单据是否要继承原始单据的 补货组id

    与补货组相关的业务数据表

    sql
    select * from sale_order where name='S00055';--procurement_group_id=36
    select * from stock_move where group_id=36 order by id desc;
    select * from stock_picking where group_id=36 order by id desc;
    select * from purchase_order where group_id=36 or origin='S00055' order by id desc;
    select * from purchase_order_line where group_id=36  order by id desc;
    select * from mrp_production where origin='S00055' or procurement_group_id=36 order by id desc;
    
    select * from stock_rule where group_id=106 order by id desc;
    select * from pos_order where procurement_group_id=99 order by id desc;
    select * from repair_order where procurement_group_id=99 order by id desc;
    select * from stock_orderpoint where procurement_group_id=99 order by id desc;
    选项补货组 ID 的变化业务追踪能力常见用途
    留空断开联系弱,各环节独立通用补货,不挂钩具体订单
    传播保持一致 (SO001 -> PO001)强,全链路闭环MTO (按订单生产/采购)
    固定的使用预设 ID集中化管理特殊分类的物流操作
  • b.取消下一步移动: 当期规则所创建的作业单被取消的时候,是否取消由它所触发的下一个规则所创建的作业单。

  • c.承运商的传播: 是否把上游单据的承运商(carrier_id)传递给下游单据。备注:上游即供应端,下游即需求端。

  • d.传播的仓库: 一般不配置,用于多仓库间的补货需求。

6.选项

  • a.业务伙伴地址: 货物的运送地址,选填。

  • b.前置时间: 当前规则被触发到当前规则对应的作业操作完成,需要的时间。

7.视频讲解:odoo库存-规则配置

学习交流