履约编排与库存分配 P17 · 订单与履约

货不够分的时候,系统怎么决定先给谁?这就是履约编排的核心。 它不是一个技术问题,而是业务优先级的代码化

这一页讲什么

ATP 与 CTP 的区别、分配规则与优先级、缺货分配模拟(可切换规则)、拆单合单、占用与释放时机。

关键概念

ATP 可承诺量、CTP 可承诺能力、分配规则、订单优先级、拆单 / 合单、占用(Allocation)、软占用 / 硬占用、释放。

常见坑

分配规则写死成"先到先得"。一旦大客户或紧急订单被排在后面,销售只能线下打招呼改库存, 系统数据立刻失真。规则必须可配置且可解释。

1. ATP 与 CTP:能交货 vs 有能力生产

ATP(Available to Promise)可承诺量

基于现有库存 + 已确认的入库(在途/在产),减去已分配与安全库存, 算出"还能答应客户多少"。

ATP = 可用库存 + 预计入库 − 已分配 − 安全库存预留

回答的是:现在手上有什么,能承诺多少。

CTP(Capable to Promise)可承诺能力

进一步考虑产能与物料约束:如果库存不够,能不能插单生产/紧急采购, 最早什么时候能交。

CTP = ATP + 可排产的产能(受物料齐套与产线产能约束)

回答的是:没有现货时,最快什么时候能交付。

系统实现上的差别

ATP 是查一次库存,毫秒级;CTP 要跑一遍产能与 MRP 模拟,通常秒级甚至异步。 所以多数系统的做法是:下单时用 ATP 快速响应,遇到缺货再异步跑 CTP 给交期承诺。

2. 履约编排:一张订单变成几张发货单

点击播放,逐步查看
点击“播放流程”逐步查看
01
订单排队
定优先级
02
选仓
就近 / 成本
03
库存分配
占用
04
拆单
按仓 / 时效
05
合单
降运费
06
下发执行
出库单

拆单与合单的触发条件

动作触发条件目的风险
拆单① 单一仓库存不足,需多仓发货;② 商品时效不同(现货 + 预售);③ 大件与小件分开发提高履约速度、避免整单等待运费上升、客户收到多个包裹、客服解释成本高
合单同客户、同地址、相近时间的多张订单节省运费与包装可能延迟其中一单的时效,需客户同意或有明确规则

3. 缺货时该给谁:四种分配规则的结果差异

可用库存 100 件,三张订单共需 150 件,切换规则看结果

4. 占用与释放:最容易出错的时机设计

时机库存动作说明
订单审核通过占用最常见的设计;也可用"支付成功后占用"避免未付款订单锁库存
预占超时未支付自动释放如 30 分钟未支付自动释放,防止恶意占库存(秒杀场景必须做)
取消订单释放必须释放,否则形成僵尸占用
出库过账(发货)核销库存与占用同时减少,不能只减其一
退货入库库存增加若原单已关闭,不涉及占用;若是换货需重新占用
库存冻结(盘点/质检)可用量减少被冻结部分不能被新订单占用
两个高频 Bug

只减库存不减占用:发货后占用残留,可用量被永久吃掉,表现为"有货却不能卖"。
取消订单不释放:取消单越多,可用库存越少,最后只能靠人工清数据。
这两个问题的检测方法都一样:定期跑「库存 − 占用 − 在途」勾稽报表,对不上就报警。

软占用与硬占用

软占用(预告):库存仍可被更高优先级订单抢占,用于预售与占位; 硬占用(锁定):不可被抢,用于已付款订单。 混用两者能显著提升库存周转,但实现复杂度高,需要谨慎评估。

供应链管理系统演示原型 · 静态教学版 · 数据均为模拟演示数据