主题
路线和规则
一、路线
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 res5.控制规则
路线是通过规则来驱动和控制的,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。与补货组相关的业务数据表
sqlselect * 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库存-规则配置
