为什么系统显示有货 500 件,客服只敢卖 300?为什么大促一开,前台显示有货,仓库说没货,超卖罚单一张接一张?十个 OMS 项目里,九个的库存模型一开始都是错的。错不在系统,在你对"库存"这个词的理解太粗了——在 OMS 眼里,库存不是一个数,是四条水位线。

在手库存:账上有,不等于能卖

第一条水位线叫在手库存,就是 WMS 里这个 SKU 的总数。很多人把这个数直接推给前台当可售数,这是超卖的头号来源。在手库存里,混着好几种"不能卖"的货:待检区的、质检不合格待处理的、破损待报废的、被盘点锁定的,还有客户退回来还没判定能不能二次销售的。

正确的做法是,OMS 只认"可用在手":在手总数减去各种冻结、待检、残次,剩下的才是参与计算的基数。这一层的规则要在 WMS 和 OMS 的接口里写死,按库存状态过滤,而不是靠人工每天对账。我见过一个美妆电商,退货二次销售率 60%,退货在"待判定"状态平均躺 4 天,这 4 天的货如果算进可售,超卖是必然的。

预留库存:已经被订单"咬住"的那部分

第二条水位线是预留。订单一下来,OMS 就会把对应的库存"咬住",这部分货还在架子上,但在手库存里已经名花有主了。预留分两种:硬预留,指定了具体批次和库位,别人动不了;软预留,只占数量,拣选时再定具体从哪拿。

坑出在预留的释放上。订单取消、部分缺货、支付超时,预留要不要立刻释放?释放早了,同一个 SKU 的另一个订单可能抢走;释放晚了,库存被僵尸订单占着,前台无货可卖。我的建议:支付超时的预留,30 分钟自动释放;客服手动取消的,实时释放;部分缺货的订单,缺货行释放,已确认行继续占着。这些规则要在 OMS 里配成策略,别靠客服一个个去点。

在途和待检:还没进系统的"期货"

第三条水位线是在途库存:已经下单、还没到仓的货。做得好的 OMS,会把在途按"预计到货时间"分段:3 天内到的,可以按一定比例提前开放预售;15 天后才到的,老老实实显示无货。预售比例怎么定?看这家供应商的历史准时率。准时率 95% 以上的,放 80% 预售问题不大;经常迟到的,一件都别提前卖。

待检是另一块。货到了仓,进了待检区,WMS 还没上架,这段时间 OMS 应该显示"在途/待检中",而不是直接加到可售里。质检周期长的品类(食品、美妆、3C),待检短则两天、长则一周,这段时间的库存状态必须透明,不然客服和仓库天天吵架。

仓库员工用手持终端扫描托盘条码

安全库存:给自己留的缓冲垫

第四条水位线是安全库存,专门对付不确定性:供应商迟到、需求爆单、盘点差异。安全库存不是拍脑袋定的,算法不复杂:看这个 SKU 过去 90 天的日均销量和波动,再看补货周期的波动,两个波动越大,安全垫越厚。ABC 分类在这里派上用场:A 类 SKU 安全库存可以精细算到天,C 类 SKU 粗一点没关系,反正不值钱。

安全库存最大的敌人是"挪用"。大促来了,运营一看安全库存里有货,手一滑就卖掉了,结果日常订单断货。规矩要定死:安全库存的动用需要审批,动了就要触发补货。这条写进 SOP,比什么系统都管用。

多仓场景:水位线要按仓拆开看

上面说的都是单仓视角,多仓的公司,水位线必须按仓拆开算,再汇总。为什么?因为 A 仓有货、B 仓没货时,前台显示的"有货"可能是个陷阱——从 A 仓调货到 B 仓要三天,客户下单的地址在 B 仓覆盖区,承诺的时效就做不到。

多仓 OMS 的标准做法是"就近履约 + 按仓 ATP"。每个仓独立算四条水位线,订单路由时优先选离客户近且有可售库存的仓。只有当所有仓的可售都为零,才允许跨仓调拨履约,而且要把调拨在途时间算进承诺时效里。有些公司为了页面好看,把全网库存加总显示"有货",结果订单分到没货的仓,内部调拨一折腾,时效全崩。记住:汇总数是给老板看报表的,履约要用分仓数。

跨仓调拨本身也要进模型。调拨单一旦确认,调出仓的可售要立刻扣减,调入仓的在途要加上预计到达时间。很多公司的调拨是线下微信群喊一嗓子,系统里没单,账就永远对不上。调拨必须走系统单据,这是底线。

一个公式,串起四条线

可售库存 ATP = 可用在手 - 预留 - 安全库存 + 已确认到货时间的在途(按比例折算)。

公式不难,难的是每一项的数据质量。超卖了,别急着骂系统,顺着这条排查链走一遍:一、在手准不准?先盘点,账实不符一切白搭,重点查待检区和退货区,这两个地方最容易藏差异。二、预留释放及时吗?拉一张报表,看被取消订单占着不放的预留有多少,僵尸预留超过可售的 5%,规则就要改。三、在途时间靠谱吗?统计供应商过去半年的准时到货率,一直在画饼的供应商,预售比例降到零。四、安全库存被挪用了吗?查大促期间的动用记录,没有审批就动了,先补流程再补货。

这四步走完,九成的超卖都能找到根因。剩下的一成,往往是接口延迟:WMS 和 OMS 的库存同步如果是定时任务,高峰期 15 分钟同步一次,15 分钟里卖掉的和入库的都对不上。大促期间,把同步改成实时或 1 分钟一次,服务器多花点钱,比超卖罚单便宜多了。

最后说句 verdict:OMS 库存模型没有银弹,只有一条铁律——状态越细,超卖越少。舍不得把库存状态拆细的公司,超卖罚单会替你交学费。把四条水位线理清楚,客服敢卖的数和仓库实际有的数,才能对上。