出库策略

Odoo 出库时到底先拿哪批货:removal strategy、FIFO/FEFO 和库存层选择讲透

很多库存问题表面像“系统随便挑了一批货”,其实背后往往是 removal strategy 在决定先拿哪层库存。本文把 FIFO、FEFO 和出库层选择讲清楚。

Odoo 开发 库存
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

先说结论

在 Odoo 里,出库时系统不是“随便挑一批现有库存”。

更常见的真实机制是:

  • 先看可用库存
  • 再按某种移除策略决定优先拿哪层
  • 最后把结果落实到具体保留 / move line / lot 上

这条链路里,removal strategy 很关键。


为什么这个问题经常被误会成随机行为

因为用户最直观看到的是:

  • 为什么系统先挑了这一批,而不是另一批?

如果不理解库存层选择逻辑,就很容易觉得:

  • 系统在随机选
  • 系统没按我的直觉拿货

但很多时候它其实是在严格执行:

  • FIFO
  • FEFO
  • 或其他出库优先规则

也就是说,看起来像随机,背后往往是规则命中了你没注意的维度。


removal strategy 真正在决定什么

它更像:

当多层库存都可用时,先消耗哪一层。

它不只是“仓库偏好”,而是在决定:

  • 先出旧货还是新货
  • 先出更早到期的批次还是别的批次
  • 在多 lot / 多包装下优先怎么拿

所以它直接影响实际出库行为。


FIFO 和 FEFO 为什么不能混着理解

因为它们关注的维度不同:

  • FIFO 更偏时间先后 / 先入先出
  • FEFO 更偏到期先后 / 先过期先出

如果你脑子里只剩一句“都是先出老的”,很多批次问题就会看错。

尤其在有 lot、有效期、保质期管理时,FEFO 的意义就会非常明显。


为什么出库策略不只是仓库管理细节

因为它会影响很多后果:

  • 实际拿的是哪批货
  • lot / serial 怎么被分配
  • 保质期风险怎么控制
  • 成本层消费如何和业务动作对上

所以 removal strategy 不是“仓库里随便配一下”的小选项,而是履约规则的一部分。


为什么它常和 reservation / move line 一起看

因为策略只是决定“应该优先拿哪层”,真正落地还要进入执行层:

  • reservation
  • move line 分配
  • lot / package 具体落定

所以出库问题常常不能只看策略名字,还要继续看:

  • 实际预留到了什么
  • move line 最后怎么生成

这也是为什么策略层和执行层经常要一起排查。


实战里最容易踩的 5 个坑

1. 以为系统在随机挑库存

其实是没看到策略维度。

2. 把 FIFO 和 FEFO 混成一回事

一有 lot / expiry 就容易判断错。

3. 只看策略配置,不看最终 reservation 结果

链路会查不全。

4. 只按仓库直觉理解,不按系统层次理解

会和实际行为总对不上。

5. lot / package / 有效期都存在时,还只按“数量先后”思维看问题

很容易误判。


一句话记忆法

把它记成一句话:

removal strategy 负责决定多层库存里先消耗谁,FIFO 偏入库先后,FEFO 偏到期先后,而真正落地还要看 reservation 和 move line 怎么把它执行出来。

理解这一句,很多出库批次问题就不会再像黑箱。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。