Dropship 路线

Odoo 一件代发为什么看起来不像普通出库:Dropship 路线和单据链到底怎么串起来

很多人会配置 Odoo Dropship,但一到源码层就不知道销售、采购和拣货单为什么会这样联动。本文把一件代发链路讲清楚。

Odoo 开发 库存 采购 销售
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 14 阅读

先说结论

Odoo 里的 Dropship 之所以看起来不像正常发货,不是因为它脱离了库存框架,而是因为它把物流路径换掉了:

货不是从你自己的仓库出去,而是直接从供应商流向客户。

一旦这个前提成立,后面的很多现象就都合理了:

  • 不走普通仓内拣货路线
  • 会生成特殊的 dropship picking type
  • 销售和采购之间的关联更直接
  • 交付数量计算也要单独处理

官方模块在做什么

stock_dropshipping 模块看,官方并不是只加一个勾选框,而是补了一整套支撑结构:

  • Dropship 路线
  • Dropship 专用 picking type
  • 专用 sequence
  • 对销售、采购、库存规则的扩展

这说明一件代发不是页面显示变一下,而是一条完整业务路线。


为什么会有单独的 dropship picking type

在官方源码里,stock.picking.type.code 通过 selection_add 新增了 dropship

而且这个类型的默认位置很关键:

  • 来源位置是 supplier
  • 目标位置是 customer

这就直接说明了它和普通出库的区别。

普通出库常见的是仓库内部位置到客户,而 dropship 是供应商到客户。


为什么销售单和采购单会被绑得更紧

源码里一个非常关键的点,是 stock.rule._get_procurements_to_merge_groupby() 对 dropship 的处理。

官方特别避免把来自不同销售行的采购需求随便合并,因为这会影响后续交付数量计算和来源追踪。

你可以把它理解成:

Dropship 不是简单去买货,而是替某个销售承诺去买货并直送客户。


为什么销售单上会单独统计 Dropship 数量

sale.py 里,官方给 sale.order 单独算了 dropship_picking_count,并且把普通 delivery_count 扣掉 dropship 的部分。

这背后表达的意思很明确:

  • 系统承认 dropship 也是履约
  • 但它不应该和你仓库自己的 delivery 混着展示

为什么有时你会感觉它像 MTO

因为从业务体验上看,一件代发经常也是接单后触发采购。

源码里销售行 _compute_is_mto() 也会把这种从 supplier 直达 customer 的规则识别进来。

更准确地说,它是:

以销售需求为起点、通过采购补给、但物流从供应商直接到客户的一条履约路线。


新手最容易误解的 4 件事

1. 以为 dropship 只是采购动作

其实它是销售、采购、库存规则一起协作的结果。

2. 以为 dropship 会先进自己仓库

如果先进仓,那通常就不是标准的一件代发了。

3. 以为 delivery_count 少了就是系统算错

很多时候只是官方把 dropship 单独分类显示了。

4. 以为所有采购都能自动视为 dropship

真正起作用的是路线、规则、拣货类型和来源位置语义,不是采购两个字本身。


一句话记忆法

它不是普通出库的变种,而是销售触发采购、供应商直接对客户履约的另一条库存路线。

DISCUSSION

评论区

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