Skip to Content

Odoo 推式物流和拉式物流使用详解

在Odoo中,推式(Push)和拉式(Pull)物流是库存管理的核心机制,二者的配置和应用场景差异显著。以下从技术实现角度深入分析其运作逻辑,并提供具体配置示例:

1. 推式物流(Push Rules)

技术实现

  • 触发条件:基于库存移动的源库位和目标库位自动触发
  • 路由配置:通过`库存路线(Stock Routes)`定义,与产品/产品分类绑定
  • 运作流程
    1. 创建入库(如采购收货)时自动匹配路由规则
    2. 系统生成分步转移单据(如质检→存储)
    3. 每个步骤生成独立的库存移动记录

典型配置示例(XML)

<record id="route_quality_check" model="stock.route">
    <field name="name">质量检测流程</field>
    <field name="rule_ids" eval="[(4, ref('stock_rule_quality_check'))]"/>
</record>

<record id="stock_rule_quality_check" model="stock.rule">
    <field name="name">质检前转移</field>
    <field name="action">push</field>
    <field name="location_src_id" ref="stock.location_stock"/>
    <field name="location_dest_id" ref="quality.location_quality_control"/>
    <field name="picking_type_id" ref="stock.picking_type_internal"/>
    <field name="delay">0</field> <!-- 无延迟立即执行 -->
</record>

高级应用场景

  • 多级质检流程:通过串联多个push规则实现分阶段质检
  • 动态路径选择:使用`route_id`字段动态分配不同转移路径
  • 时效控制:设置`delay`参数控制转移时间间隔

2. 拉式物流(Pull Rules)

技术实现

  • 触发机制:基于需求信号(销售订单、生产工单等)的反向追溯
  • 补货策略:通过`补货规则(Replenishment Rules)`配置
  • 关键算法
    • 动态计算安全库存(min - max规则)
    • 考虑采购提前期(Lead Time)和批量规则
    • 多供应商优先级管理

MTO(按订单生产)配置示例

# 产品配置代码示例
product_template = env['product.template'].create({
    'name': '定制产品',
    'type': 'product',
    'route_ids': [
        (4, env.ref('stock.route_warehouse0_mto').id),
        (4, env.ref('mrp.route_warehouse0_manufacture').id)
    ]
})

补货规则参数详解

参数说明典型值
触发方式库存水平/周期性检查min - max
提前期供应商响应时间5天
订购量经济批量计算方式EOQ公式
来源位置供应商/上级仓库外部供应商

3. 混合模式应用

典型案例:JIT生产模式

  1. 销售订单触发拉式需求(Pull)
  2. 生产工单生成推式工序转移(Push)
  3. 完工自动转移至发货区
graph LR
    A[销售订单] --> B{库存检查}
    B -- 不足 --> C[生成生产订单]
    C --> D[原材料领用 Push]
    D --> E[生产线转移 Push]
    E --> F[质检区 Push]
    F --> G[成品仓 Pull]
    

4. 调试与优化技巧

库存移动追踪

SELECT * FROM stock_move 
WHERE product_id = [产品ID]
ORDER BY create_date DESC;

规则优先级调整

# 调整规则执行顺序
env['stock.rule'].search([...]).write({'sequence': 10})

性能优化

  • 批量处理规则计算(启用`group_procurement`)
  • 缓存常用库位数据
  • 异步执行复杂路由计算

5. 常见问题解决方案

问题场景:推式规则未自动执行

排查步骤

  1. 检查产品路由配置`product_category.route_ids`
  2. 验证仓库路线启用状态`stock_route.active`
  3. 确认源库位可用库存`stock.quant`
  4. 检查操作类型权限`stock_picking_type.show_operations`

问题场景:补货订单未生成

排查步骤

  1. 验证补货策略配置`stock.warehouse.orderpoint`
  2. 检查需求预测计算`stock.demand.forecast`
  3. 确认供应商交货时间`res.partner.delivery_lead`
  4. 查看排程器运行日志`ir_cron`

6. 版本差异说明

  • Odoo 15+:引入动态路由引擎(基于Python的规则引擎)
  • Odoo 16+:增强多仓库级联拉式规则
  • Odoo 17+:新增AI驱动的需求预测集成

建议在实施时结合具体版本参考`stock`模块源码,重点关注以下模型:

  • `stock.rule`(核心路由逻辑)
  • `procurement.group`(需求分组机制)
  • `stock.move`(库存移动执行单元)

通过合理配置推拉结合的策略,可构建适应复杂供应链场景的弹性库存体系。建议在实施前进行完整的业务流程模拟测试,利用Odoo的沙盒环境验证不同场景下的规则触发逻辑。

Odoo 推式物流和拉式物流使用详解
6776, Administrator March 30, 2025
Tags
Archive