三路线分流

Odoo 采购为什么不能只在 Dropship 和分包之间二选一:Buy to Stock、Dropship、Subcontracting 三路线分流讲透

站里已经讲过 Dropship 和分包采购不是一回事,但实际实施里更常见的误判是:只要不是标准入库,就在 Dropship 和分包里硬选一个。真正应该一起比较的,是 Buy to Stock、Dropship 和 Subcontracting 三条采购路线,因为它们分别对应补库存、直发履约和外包生产三种完全不同的责任链。

采购
进阶 开发者 2 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

先说结论

很多实施团队已经知道:

  • Dropship ≠ Subcontracting

但还是会继续掉进另一个坑:

  • 只要不是普通采购入库,就在这两个里硬选一个

这同样不对。

在 Odoo 里,采购最常见的三条路线其实是:

  1. Buy to Stock:买回来进入你的库存或中转体系
  2. Dropship:供应商直接把货交给客户
  3. Subcontracting:供应商替你完成某个制造环节或装配责任

所以更准确地说:

这三条路线的区别,不只是货去了哪里,而是采购需求从哪里来、目标位置是什么、提前期怎么计算、后续责任由谁承担。


这篇为什么不是已有“Dropship vs 分包”文章的重复

站里已有一篇,重点讲:

  • Dropship 和分包为什么都像采购,却不是同一类采购

那篇是双路线横向对比。

这篇补上实施里最缺的一块:

  • 为什么你不能把标准 Buy to Stock 从脑子里删掉
  • 什么时候明明看上去也像“向供应商买”,但本质上其实还是普通补库存
  • 三条路线到底该怎么分流

也就是说,这篇不是重复比较 Dropship 和分包,而是把 标准采购入库这条基准路线 拉回桌面,让三条路在同一张图上讲清。


第一条路线:Buy to Stock 的核心是“先补到你的供应链位置”

标准 Buy to Stock 最容易被忽略,恰恰因为它太常见。

它的采购语义是:

  • 你向供应商买
  • 货先进入你的内部库存、仓库、或受你控制的中转位置
  • 后续销售、生产、内部补给再从这些位置继续向下游流动

这条路线的关键不是“有没有采购”,而是:

  • 采购的第一目的地是你自己的供应链体系

所以它适合:

  • 补安全库存
  • 应对未来订单
  • 为后续制造提前备料
  • 统一仓配与履约

如果业务目标首先是“货先归到我方可控位置”,那它通常还是 Buy to Stock,而不是别的花样路线。


第二条路线:Dropship 的关键不是“也向供应商买”,而是“直接履约给客户”

/home/ubuntu/odoo-temp/addons/stock_dropshipping/models/stock.py 里,官方给 dropship 增加了专门的拣货类型:

  • code = 'dropship'

而且默认位置很鲜明:

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

这说明 Dropship 的库存语义根本不是“采购后再交付”,而是:

采购动作直接服务客户履约,货并不先回到你的库存主链。

源码里还特别处理了:

  • 不同 sale_line_id 的 procurement 不要乱合并

因为 dropship 的采购单据和销售承诺绑定得很紧,随便合单会让 delivered quantity 与归属关系失真。

所以如果你的核心问题是“谁来对客户交付这批货”,Dropship 才是那个答案。


第三条路线:Subcontracting 的关键不是“也向供应商买”,而是“供应商替你完成制造责任”

/home/ubuntu/odoo-temp/addons/mrp_subcontracting_purchase/models/stock_rule.py 里,官方重点扩展的是:

  • _get_lead_days()

注释写得非常清楚:

  • 分包提前期 = max(Vendor lead time, Manufacturing lead time + Days To Prepare MO) + Days to Purchase

这句话一出来,就把它和普通采购、Dropship 全部拉开了。

因为标准 Buy to Stock 关注的是:

  • 什么时候能收到这批货到我方链路

Dropship 关注的是:

  • 供应商什么时候能把货直接交到客户

而分包关注的是:

  • 供应商在替我完成某段制造工作时,整个生产准备和交付节奏怎么计算

所以分包采购本质上不是物流捷径,而是:

  • 制造责任外包

三条路线在“采购需求来源”上就已经不同

Buy to Stock

需求来源通常是:

  • 补库存
  • 重订货规则
  • MTO/MTS 混合下的补给
  • 未来销售或生产的提前备货

Dropship

需求来源通常直接带销售履约语义。

也就是说:

  • 因为要给客户交付
  • 所以系统驱动向供应商下采购

Subcontracting

需求来源看起来也可能走采购动作,但背后是制造链条。

系统要先认定:

  • 是否存在对应的 subcontract BOM
  • 当前 seller 是否真是该 BOM 的 subcontractor

这条需求不是“为了备库存”,也不是“为了直接交客户”,而是:

  • 为了完成外包制造承诺

所以三条路线从一开始就不是同一道题的三个选项,而是三种不同问题的答案。


三条路线在“目标位置”上的差异最容易帮助业务判断

Buy to Stock

目标位置是:

  • internal / transit / 受你控制的位置

Dropship

目标位置是:

  • customer

Subcontracting

目标不该只用“仓位”去理解,而应理解为:

  • 某个分包商参与的制造链结果位置与责任节点

也就是说,如果你只看“货不进自有仓”,你会把 Dropship 和分包看得很像;但如果你看 目的地承担什么业务责任,两者就完全不同。


三条路线在“提前期脑回路”上也完全不同

Buy to Stock

重点多半是:

  • 供应商提前期
  • 仓库到货时间
  • 补货窗口

Dropship

重点是:

  • 供应商何时可直接满足客户交期
  • 销售承诺是否还能守住

Subcontracting

重点是:

  • 供应商 lead time
  • 制造 lead time
  • Days to Prepare MO
  • Days to Purchase

而且不是简单加总,而是按源码规则比较后再叠加。

因此,分包的日期计算天然比普通采购或直发更像生产排程问题。


三条路线在责任边界上的一句话区别

Buy to Stock

  • 我先把货纳入我方可控供应链

Dropship

  • 供应商替我完成对客户的直接物流履约

Subcontracting

  • 供应商替我完成某段制造或装配责任

很多实施决策卡壳,本质上不是不会配 route,而是没有先问清:

  • 这批货要先归谁的链路负责?
  • 履约责任在客户交付,还是在制造产出?

这个问题一旦问清,路线通常就不难选。


最容易误解的 5 个点

1. 以为不进自有仓就该在 Dropship 和分包里二选一

错。先问目标是不是客户履约,还是制造责任外包。

2. 以为 Buy to Stock 只是最普通、可以忽略的默认路线

它恰恰是理解其他特殊路线的基准线。

3. 以为 Dropship 只是“少走一步入库”

它改变的是客户履约责任链。

4. 以为分包采购只是“供应商供货更复杂”

它改变的是制造语义和提前期计算框架。

5. 以为三条路线主要差在物流位置

更深的差异在需求来源、提前期口径和责任边界。


实施时的决策顺序

如果要快速判断一条采购需求该走哪条路,建议按这个顺序问:

  1. 货要先进入我方可控库存吗? - 是:优先考虑 Buy to Stock
  2. 供应商是不是直接对客户履约? - 是:优先考虑 Dropship
  3. 供应商是不是在替我完成某段制造/装配? - 是:优先考虑 Subcontracting
  4. 日期主要由仓配 lead time、客户交期,还是制造准备时间驱动?
  5. 后续责任在库存、销售履约,还是制造产出?

这样判断,基本能避免把 route 配成“能跑起来,但语义全错”。


一句话记忆法

Buy to Stock 是补到我方供应链,Dropship 是供应商直履约客户,Subcontracting 是供应商替我完成制造责任。

DISCUSSION

评论区

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