库存三层模型概述

库存三层模型概述_第1张图片

库存分层

(1)电商库存体系分为三层:销售层、调度层、仓库层。
库存三层模型:销售库存,调度层属于订单领域-履约。实物库存属于库存领域
WMS的库存跟调度层是一致的。 但是销售库存跟调度层可能不一致,因为存在虚拟库存的场景。

  • 销售层
    下单时涉及的库存动作只在销售层,买家支付后,再推送至调度层。

  • 调度层调度层相当于订单的分配中心,将订单转化为发货单,按照调度规则决定哪些SKU由哪个仓库发货。

  • 仓库层的库存对应的是实物库存,出库入库盘点都会引起仓库库存的变动。

(2)库存的变动又分为自上而下、自下而上两种。
(3)每一层库存数量的变化可总结为增加、锁定、解锁、扣减、返还等。库存数据的变动都需要有相关单据依据,例如销售订单、发货单、采购入库单等。

销售层

1.销售层这一层主要面对前端用户。一般情况下,前端库存要和实物库存保持一致,即不能超卖。但是做预售时,就是虚拟库存,下单时涉及的库存动作只在销售层,待到备货之后,再推送至调度层。销售层的库存决定是否可售卖,下单是否能成功。在秒杀时,活动库存决定了是否可以秒杀成功;在预售时,预售库存决定是否可下定金预定。
(1)可销售库存:网站前台显示的库存,也就是可以对外售卖的库存。当“可销售库存>0”时,前台网站则会显示商品可销售;而当“可销售库存=0”时,前台网站则会显示商品缺货。 如果预售跟正常销售混在一起,初始可销售库存 = 虚拟库存可销售库存+物理库存的累加。锁定库存 = 虚拟库存锁定库存+其他锁定库存

(2)锁定库存:用户下单锁定库存,支付后扣减库存。锁定库存指的下单时占用库存,保证客户下单后支付的订单都是有货可发,而不会相互冲突。
(3)已销售库存:统计商品已售数量。当支付成功,商品就算作已销售库存。如果取消订单或售后就需要走相应的库存变动流程变动。(4)活动库存:主要是做促销活动(例如秒杀)时,分配固定数量的商品给相应的活动,这时候就需要从可销售库存中占用相应数量给活动库存。这部分库存也是走相应的锁定、扣减逻辑。
(5)预售库存:这部分是虚拟库存,主要是拉动需求,例如B端订货、双11定金预售等。预售同样走相应的锁定、扣减逻辑。不同的是,预售的订单需要备货之后,再推送至调度层。

调度层

调度层相当于订单的分配中心,将订单转化为发货单,按照调度规则决定哪些SKU由哪个仓库发货。调度层的库存分为单仓、区域、总库存三个维度,区域库存指的是这些仓库只发某一区域的,例如华中地区的仓库只配送华中地区,北京就无法从华中地区的仓库发货。总库存即所有仓库的SKU库存总计。
(1)账面库存:仓库中的实物库存,只要是未出库的都算在账面库存中。
(2)可用库存:仓库中可供发货的库存。这部分库存是可供调度的库存。
(3)在途库存:下了采购单但是尚未入库的库存,在途库存理论上部分是可供销售的,例如“T+1”的在途库存,就是指1日之后就可以入库的SKU。
(4)不可销售库存:仓库盘损的库存,通常是仓库中的不良品,是无法售卖的库存。这部分库存需要通过特定途径处理。
(5)已用库存:在调度层已分配的库存。

总体库存,区域库存,单仓库存。每层都有 可用,账目,在途,锁定库存。 区域库存不是单仓的汇总,当实物入库时,同时更新单仓库存和区域库存(保证数据的一致性)。

仓库层

仓库层仓库层的库存对应的是实物库存,出库入库盘点都会引起仓库库存的变动。
(1)可用库存:发货单推至仓库后,仓库可以用于发货的库存,不包括锁定的库存。
(2)锁定库存:发货单推送至仓库后锁定库存,锁定时同时去锁定库位库存。
(3)已出库库存:已经确认出库的实物库存。
(4)不可用库存:盘点时发现的不良品,需要报损,从可用库存转化为不可用库存。库位的概念。仓库中的库存是由库位库存组成的,库位上分为可用库存、锁定库存两种。由于WMS中的库存逻辑较为复杂,这里不做详细论述。

库存系统的操作主要包含库存的增加、锁定、解锁、扣减、返还、异常处理,
(1)增加:自有仓库通过采购入库,协同仓库通过代销采购协议入库;
(2)锁定:下单之后锁定库存。
(3)解锁:订单取消之后释放锁定库存。
(4)扣减:订单支付成功之后扣减库存,扣减锁定库存。
(5)返还:退货、换货后返还库存,相当于增加库存。
(6)异常处理:库存数据在定期校验时,如果出现异常数据,就需要进行异常处理(自动或人工处理)

库存同步

由于触发库存发生变动的点不一样,库存的变动有两种流向。第一种是自上而下(从销售层到调度层,再到仓库层);第二种是自下而上(从仓库层到调度层,再到销售层)两种。

(1)自上而下:用户下单后,首先会生成订单,扣减销售层的库存;然后流转到调度层进行调度,生成发货通知单,调整调度层的库存;最后推送至仓库,WMS系统同步响应,扣减库存并进行出库。

(2)自下而上:仓库的实物入库可以算是从下到上引起的库存变动。主要有三种单据:采购入库单、退货入库单、调拨入库单。
实物入库,会连锁引起仓库层、调度层、销售层的可用库存逐步增加。

FAQ

  1. 销售层有可用库存,调度层也有可用库存,不会重复设计吗?
    1.1 为了支持活动预售。用户下单可以锁销售库存。这个时候调度层是没有库存的。
    1.2 为了性能考虑。假设JD有总仓,区域仓,单仓。优先从单仓发货,无货再通过区域仓,区域仓无货再通过总仓。如果没有销售库存,锁定逻辑就很复杂,性能很差。

  2. 如果有些sku限制区域配送,销售库存怎么设计?
    如果库存不做区域限制,销售库存模型:sku,可用库存等。 如果做了区域限制,销售库存需要做分开设计。不做区域库存限制的按sku,可用库存。 做区域库存设计的,sku,区域id,可用库存。

参考资料

https://coffee.pmcaff.com/article/2930432769964160/pmcaff?utm_source=forum&newwindow=1

https://processon.com/outline/view/link/5a9d9179e4b0415c56b565e7?pw=null

https://www.niaogebiji.com/article-65929-1.html

你可能感兴趣的:(电商系统架构,系统架构)