履约编排与库存分配 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
① 只减库存不减占用:发货后占用残留,可用量被永久吃掉,表现为"有货却不能卖"。
② 取消订单不释放:取消单越多,可用库存越少,最后只能靠人工清数据。
这两个问题的检测方法都一样:定期跑「库存 − 占用 − 在途」勾稽报表,对不上就报警。
软占用与硬占用
软占用(预告):库存仍可被更高优先级订单抢占,用于预售与占位; 硬占用(锁定):不可被抢,用于已付款订单。 混用两者能显著提升库存周转,但实现复杂度高,需要谨慎评估。
供应链管理系统演示原型 · 静态教学版 · 数据均为模拟演示数据