库存三层模型(中)

我们以几个典型的业务场景来说明三层库存运用。

库存模型自上而下变动场景:下单支付

销售库存 调度层 WMS 物流公司 (1)下单,锁定销售库存 (2)支付,销售库存锁定转扣减 抛单 (3) 3.1 生成履约单。 3.2 定时任务调度。 如果仓库有货,锁定调度层库存,生成发货通知单 给wms 发货指令 (4)出库。生成出库单 (5)发货,生成物流运单 (5)ack ack (6) 冻结库存转扣减 销售库存 调度层 WMS 物流公司

履约单:中央库存核心单据。买家支付后,订单模块派单给库存中心。 调度层先生成履约单。履约单的作用
1 一个订单可能分多次履约。每一次履约生成一次发货单。可能存在部分有货的场景,分批次发货
2 存在超卖的业务场景。买家支付后可能没有货发。先生成履约单,等有货后,再发货。
3 削峰。双十一买家支付的并发很高,履约的业务流程很长,扛不住双十一的业务高峰。 先建履约单,再异步生成发货通知单。

库存模型自下而上变动场景:调拨业务

库存调拨就是两个仓库之间的货物相互调配。对于存在多个仓库或分支机构的企业来说,将货品在不同仓库之间进行调拨。

  • 发起调拨申请的时候,可能调出的仓库没货,要过几天有货了才会执行调拨。
  • 调出方可能要分批次出库。
销售库存 调度层 WMS 物流公司 发起调拨申请单,并审批通过 (1) 锁定销售库存(?) 抛单 (2)3.1 生成履约单。 3.2 定时任务调度。 如果仓库有货,锁定调出方仓库库存, 生成调拨通知单 给wms 调拨指令 (3)出库。生成出库单 (4)发货,生成物流运单 ack ack (5)4.1 调出方仓库冻结的库存转扣减, 4.2 调入方仓库增加在途库存 销售库存 调度层 WMS 物流公司

(1)锁定销售库存(?)
是否要锁定销售库?取决于调拨是否对下单产生影响。取决于平台是否支持超卖(仓库没货也可以售卖),是否限定某区域买家只能从某个区域仓库发货,

不锁定销售库存场景
某平台全国有华南仓库和总仓。买家下单选择就近仓库发货,如果就近仓库无货从总仓发货。平台允许超卖。平台发起手机从总仓调出1000台到华南仓库。 在这种场景下,销售库存不需要锁定。

调拨不锁定销售库存,物品导出仓库出库后不需要扣减销售库存,调入仓库签收入库后,也不需要增加销售。

需要锁定销售库存场景
某平台限制书籍类目仅支持区域库存发货,而且不允许超卖。某平台有华南仓库和北方仓库。平台从华南仓库调拨1000本书到北方仓库。发起调拨业务,需要锁定华南仓库对应的销售库存,华南仓库出库需要扣减对应的销售库存。 北方仓库签收入库需要增加北方仓库对应的销售库存。

(2)履约
需要履约单的原因:
a 调拨单审批通过后仓库可能没货,需要等有货再给仓库发调拨指令。
b 仓库可能货没有那么充足,需要分多次履约(出库)。

(3-4). 【WMS】出库,生成出库单。发货生成物流运单。消息通知调度层:1 调出方仓库锁定的库存扣减出库的部分,增加调入方的在途库存。2 销售库存占用转扣减。
(5). 【WMS】调入库存签收。做入库操作,增加实物库存的库存数。通知调度层。调度层处理:1 调入仓库在途减少。2 调入仓库库存增加。 (销售库存是否变动参考(1))

统一语言

业务对象 英文 概念解释
销售库存 sales_inventory 销售库存层。
履约单 fullfillment_order 调度层
仓库库存 inventory 调度层
在途库存 调度层
发货通知单 delivery_order 调度层.
用来通知仓库执行出库操作的单据,是实物库存的单据。
调拨通知单 transfer_order 调度层
出库单 waybill WMS
运单 WMS

物理模型

inventory in-transit_inventory fullfillment_order delivery_order delivery_order_detail transfer_order transfer_order_detail waybill 包含 包含 包含 包含 包含 包含

1个履约单对应1到N个发货(通知)单
存在从多个仓库的发货的场景,所以1个履约单对应1,n发货通知单。

1个履约单对应1到N个调拨(通知)单
存在调拨业务的时候,可能调出的仓库货物不足,允许分多次调拨。

fullfillment_order (履约单)

属性名 数据类型 说明
id bigint 主键非空
code string 非空
source_order_id bigint 源订单号
type string 销售订单,
调拨单
status string 进行中,完成

delivery_order (发货单)

属性名 数据类型 说明
id bigint 主键非空
code string 非空
fullfillment_order_id bigint 履约单id
delivery_depot_id bigint 发货仓库id
delivery_address string 收货地址。实际项目中需要对收货地址单独建模,因为不是核心模型,这里有string代替
total_quantity int 总数量
outbound_quantity int 累计出货数量
delegate_type string 委托类型:0-普通,1-委托方,2-受托方。
订单委托发货场景使用。当为委托方,仓库做虚拟发货处理,不会真实发货。
status string 状态:待发货 发货中 已完成 已关闭

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