新零售多平台库存共享模式下中央库存系统设计思路
远古的南海龙王老来得子,所以对小龙王宠爱有加,但小龙王淘气任性,到处惹祸。直到有一天,他真的闯出了大祸,失手烧掉了天庭神龛,慌乱中的小龙王回到家里,天庭自然不会放过他,南海龙王为了救儿子,他冒替小龙王,趴在盘龙山下,接受雷电的击打。眼看父亲被烧的遍体鳞伤,奄奄一息,小龙王悔恨愧疚,他一下冲出来,要承担这个惩罚,龙王为了阻止儿子,便一头撞向身旁的金刚壁,当场死去。“养不教,父之过“,南海龙王认为自己死得其所,死后,他的尸体便化作龙背山,经过这场灾难之后,小龙王幡然醒悟,终生恪守本分,与人为善。后人将龙背山改称为龙背墙,是因为这面墙,挡住了小龙王所有的罪行,故此,后人称为龙背墙。
这是电影《全民目击》的片尾点题故事,将跌宕起伏的情节推向高潮。周末看完此片以后,小Q陷入了深深的沉思,大爱无言,想想从毕业以后就漂泊在外,每年也就春节那几天能和父母见上几面,紧接着就是各种走亲访友,能和父亲说上话的次数更是屈指可数。但即便如此,父亲对自己的影响却是深入骨子里的,自己的为人处世、行事作风、举止谈吐无不散发着很浓厚的父亲的气息,传说中的血浓于水吧!
想起幼时跟屁虫似的拽着父亲衣角,狐假虎威的对着满世界耀武扬威,一副顶天立地的派头。每逢胆小的时候,只要目光所及之处有父亲的身影,耳力所及之处有父亲的声音,便会充满无穷力量,仿佛利剑在手,魑魅魍魉再也无惧。
01 中央库存概述
今天开始,小Q和浩子开始梳理中央库存系统需求,开始设计之前,必须先了解一下公司现状:
(1)多个销售平台和渠道同时销售,库存共享。
(2)多个仓库和门店同时为销售平台提供货源;门店有自营方式,还有合作代发货方式。
(3)仓库只做大批量进出,只支持配送,不支持自提业务;有些门店只做自提,不做配送;有些门店自提和配送同时支持。
(4)有些地区的门店配送若在闪送范围内,可以支持闪送(例如用美团、饿了么、京东到家配送),不支持闪送的,走常规物流配送。
(5)门店商品要同时支持线上销售和线下售卖,库存共享。
(6)某些商品因涉及商业串货,只允许在部分地区销售。
这么多的业务场景,用传统单一的简单ERP库存处理方式很明显无法满足需求,所以注定了中央库存不是一个简单的系统。小Q给出的解决思路是将所有门店和仓库的库存均集中到中央库存中,再根据比例为各销售平台分配库存,将销售库存同步至销售平台。
▲中央库存设计思路
为了让开发能更好的理解需求,小Q先对中央库存的定位和意义进行了整理:
中央库存,是将各地的仓库、门店库存进行集中监控和管理,集中调度的库存系统。库存是供应链之魂,在新零售模式下,仓库和门店遍布全国甚至全球,如果库存管理的很分散、不准确,就没法给企业赋能,无法给客户带来极致购物体验。试想一下,客户付款下单以后,不能按时履约,或者超卖、缺货,在当今以客户体验为中心的互联网时代,对企业形象是致命的。
传统模式下,各地库房分散管理,互不透明,总部无法集中把控和调度,导致库存分布不平均,库存成本积压严重。通过中央库存的建设,可以有效规避这些问题:
(1)各地库存实时同步,总部统一监控统一调度,防止各地库房/门店各自为阵;
(2)总部可以根据全国总库存按需采购,而不再只考虑单仓库存,如此可以有效防止有些库房库存过高滞销而另一些库房库存不足缺货;
(3)中央库存的搭建可以有效汇总全国库存给销售平台,供用户下单,智能分仓、就近发货;
(4)当某些商品需要考虑串货、某些仓库/门店需要单独或者同时支持自提和配送业务,且需要线上线下同步售卖的场景模式下,单仓管理和传统ERP库存模型均不能有效支撑业务发展,必须有个中央大脑对库存进行灵活调度,此大脑就是中央库存;
(5)集中的库存管理对于财务核算、审计、数据汇总分析、采销日常作业均能提供更加透明和有利的依据。
经过梳理,中央库存核心系统功能如下:
▲中央库存系统功能
02 中央库存实物库存和销售库存
既然是承上启下,中央库存模型分为与库房实物相关的实物库存层,以及和销售平台库存相关的销售库存层。
1.实物库存层:
实物库存按照仓库/门店汇总所有库存状态的库存数量,但不同于仓库库存的是中央库存实物库存层无需管理批号和货位,只需要管理每个库存状态下的实物库存总数即可。
(一般系统设计的定位是中央库存管实物总库存,库房管理实际批号。若需在中央库存中看到每个库房/门店的批号,可在实物库存层另加一张批号库存表用以记录库房进销存流水变化,但不作为实物库存计算和分仓的主要逻辑处理。)
实物库存层库存维度:SKU、仓库/门店、库存状态、实物库存、出库预占库存、锁定库存、在途库存、库存成本价、是否锁定。
仓库/门店:仓库和门店同属于管理库房的载体,处理逻辑相同;
库存状态:合格/不合格/停售/待验(药品里有停售业务,故将停售设计为一种库存状态);
实物库存:仓库/门店存放的实际库存按照SKU、库房、库存状态汇总的数量;
出库预占库存:分仓以后,发货之前对库存预占,防止超卖。分为销售出库预占、退供预占等;
锁定库存:商品尚在库房,需临时锁定的库存。如:盘点临时锁定/临期锁定/盘点差异/其它原因;
在途库存:即将入库的库存,含调拨未入库库存、采购未到货库存;待实物上架以后,清除在途库存;
库存成本价:根据采购、调拨入库、库存状态变化等业务明细计算的成本价,以仓库+库存状态为单位核算;
是否锁定:某些业务场景下,需要对整条库存明细进行冻结,不允许在线售卖。已锁定的库存明细,不作为可用库存。例如:需要将某门店的A商品临时冻结线上销售,处理方式便是在中央库存中将此条明细的“是否锁定”变更为“是”。
可用库存:可用库存根据实物库存、预占库存和锁定库存计算而来,是分仓和销售库存计算的依据。可用库存=实物库存-预占库存-锁定库存(注:若库存明细被锁定,则此条明细不用作可用库存计算)
为方便监控和排查问题,以上库存维度中,出库预占库存、锁定库存、在途库存均需要记录明细,如:某商品A出库预占库存为20,中央库存需另有一张出库预占库存明细表记录此20个库存被哪些业务明细单据所预占:
出库预占库存明细:SKU、仓库/门店、库存状态、预占类型(销售出库预占、退供预占等)、业务单号、预占数量;
锁定库存明细:SKU、仓库/门店、库存状态、锁定类型(盘点临时锁定/临期锁定/盘点差异/其它原因 等)、业务单号、锁定数量;
在途库存明细:SKU、仓库/门店、库存状态、在途类型(采购入库/调拨入库 等)、业务单号、锁定数量;
2.销售库存层:
销售库存层是将实物库存的合格品库存数量,根据仓库/门店的地理属性、配送属性,以及多个销售平台的库存共享比例进行综合计算后,计算出的按销售店铺维度的可销售实物库存数量,该层的库存数量与销售平台的实物库存保持同步。
销售库存层库存维度:SKU、销售店铺、可配送区域、可配送库存、自提门店、可自提库存。
销售店铺:与多渠道多平台的售卖店铺保持一致,每个店铺按照比例分配一定的库存;
可配送区域:由于全国各仓和门店的覆盖的配送区域不一定相同,故每个SKU支持的配送区域不同;例如A门店配送广东省,B门店配送广西省;
可配送库存:分别汇总每个SKU在不同的区域可配送的库存数量,根据实物可用总库存按店铺库存占比分配。例如:SKU A可配送广东省50个;可配送广西省80个;
自提门店:展示SKU可进行自提的门店;
可自提库存:在允许自提的门店中,该SKU的库存。根据实物总库存按店铺库存占比分配。例如:SKU A 广州天河1店可自提库存100个;广州天河2店可自提库存150个;
若某门店既支持配送又支持自提,则配送库存和自提库存是重合的,例如广州某门店中SKU A有50个,则说明该门店中A商品既支持配送50个,也支持自提50个,两种业务并存,将50个库存用完为止,这也是库存共享的概念。
03 中央库存实物库存与销售库存计算
1.实物库存同步逻辑
中央库存中的实物库存来源于各库房和门店的库存,考虑到有些自营门店(自主研发的系统),有些合作门店(使用他们自己的ERP),故小Q将实物库存同步设计为两种方式:
方式1:流水加减模式。适用于自营的库房和门店,所有的库存变化均通过业务流水回传中央库存,按照入库加库存,出库减库存的方式变更实物库存。库存的加减对应着库存成本的变化。
方式2: 设置库存模式。适用于和外部合作的门店,无法通过流水变更库存时,直接通过商家端或系统对接的方式同步库存,更新实物库存数量。
▲实物库存同步
使用流水加减模式进行实物库存同步时,特别要注意控制多条业务流水对同一条库存记录的处理,避免出现并发而导致加减出错的情况。因此,系统设计的时候,需要有一张很清晰的实物库存流水变更记录表,能够按顺序追查到每一条明细的变化情况:
实物库存流水变更记录表:作业时间、SKU、仓库/门店、库存状态、业务类型、业务单号、变化数量(加库存为正数,减库存为负数)、原库存、结转库存。
2.销售库存计算逻辑
新零售模式下,每个仓库和门店都有自己的覆盖配送范围,且每个门店的品项数较少,并且履约能力有限,所以门店一般重点发力自提业务,同事自提的覆盖半径也是有限的,多维属性结合到一起,将实物库存从系统层面分开为很多堆,构成了不同维度的销售库存。
▲销售库存计算因素
每个库房/门店可以自由配置支持配送,或者支持自提(可都支持),配送的范围和自提的范围是不同的,故从配送方式来看,配送库存和自提库存是需要分开管理的。例如:某门店有一款商品可以支持配送全国,但仅支持门店周围5公里自提,则全国的用户均能下配送订单,仅门店周围5公里的用户能下自提订单。
从店铺库存分布上,有两种处理思路:共享和独占。
共享库存:各个销售平台店铺共享库存,按照比例进行分配。任一店铺有订单产生,导致实物总可用库存变少,均会导致其它店铺的库存同步减少;
独占库存: 某一个或者多个销售平台店铺按照比例分配的库存属于独占模式,即库存分配以后,仅属于此店铺使用,其它店铺产生订单不能占用独占店铺的库存。
(独占库存模式下销售库存计算方式更为复杂,不在此文中深入展开,感兴趣的朋友可以按照共享库存的思路进行独占库存设计的推演)
计算销售库存之前,先对销售店铺进行库存设置,以共享库存为例,并非每个平台都支持自提(例如天猫、京东均不支持),所以配送库存和自提库存分开设置比较合理。
为了防止超卖,配送库存和自提库存原则上不超过100%比较合适,但根据实际业务需要,可以灵活调整,例如采购能力足够,则各销售店铺可以互抢库存,保证销量最大化,那么每个店铺的库存均可以设置为100%,甚至大于100%。
▲销售库存配置
根据配置,将实物库存重组后再根据配送库存和自提库存进行分堆计算,逻辑为:
①支持相同配送区域的多个仓库门店的库存汇总后,根据配送库存分配比例计算可得到店铺可配送库存:
可配送库存=∑各仓库/门店实物可用库存 * 店铺配送库存分配比例,向下取整
②因为自提订单不适宜分店铺(如果让某一个用户下个订单,需要从多个门店提货,这种体验太差),故自提库存以门店为单位,每个支持自提的门店库存按照自提库存比例计算可得到店铺的可自提库存:
可自提库存=每个可自提门店的实物可用库存 * 店铺自提库存分配比例,向下取整
举例说明:
门店1、门店2、门店3三个门店均有 SKU A商品,配送范围一致,均无预占,共设两个销售店铺(店铺1、店铺2),配置如下:
根据销售库存计算公式分别算得店铺1和店铺2的配送库存和自提库存如下:
3.销售库存同步
中央库存中将销售库存计算完以后,需向销售平台同步,只有同步到销售平台的库存,才是直面用户的。小Q结合公司现状,针对自营平台和三方平台,分为两种处理方式;
①自营电商销售平台,销售平台库存没有必要设计的过于复杂,仅管理虚拟库存、活动库存等,实物库存相关逻辑可直接从中央库存读取,以服务的形式进行系统交互。
例如 I.商品列表和详情页判断商品是否有库存时,若开启了虚拟库存则读取虚拟库存,若未开启则直接读取中央库存中的销售库存(根据库存比例分配计算的配送库存与自提库存,二者取其大、或者求和);
II.下订单提交时若选物流配送,可直接根据用户收货地址读取中央库存中当前地址区域下可配送的库存数量是否满足订单;若选择了自提门店,可直接读取中央库存中当前门店下的可自提库存是否满足订单(前提条件是用户地址和门店的自提范围一致)。
②其它三方平台(例:京东、天猫),销售平台逻辑不为自己所控,也无法支持客户自提,可只同步配送库存。若平台支持分区域库存,可根据平台规则将中央库存中的销售库存按区域分组同步至销售平台,若不支持分区库存,可将可配送库存之和同步至平台。(不过有超卖的风险)
共享库存模式下,无论针对自营平台还是针对三方平台,为了保证库存的尽量准确性,在订单生成以后,均需要尽快到中央库存系统中分仓并进行库存预占,然后根据可用库存重算销售库存并同步。
向销售平台同步库存,有4种方式可选,可在系统中针对每个销售平台进行配置,根据实际情况进行调整:
A.每当库存变动时同步:任何一个销售平台有订单下发至中央库存导致库存预占,或者库房/门店的可用库存发生变化时,重新根据实物可用库存计算销售库存,并同步至销售平台;
B.定期同步:设定时间间隔,定期计算销售库存并同步,比如每10分钟一次;
C.低于阀值下限时同步:当某一商品在此销售平台的库存比例低于此平台设定的阀值时,触发销售平台库存计算并同步至销售平台;
D.暂停同步:以最后一次同步的数量为准,再次开启同步之前不再同步库存,例如双11前夕暂停对天猫店铺同步。
以上A、B、C、D 4种方式各有优劣,同步频次越高,库存自然越准确,超卖风险降低,但刷新频率过快对系统性能损耗较大;同步频次较低,系统压力会小,但库存同步会不及时,超卖风险增加。
04 分仓及库存预占服务
实物库存层除做实物的管理外,还为订单系统提供分仓服务,为每张订单分配最优的发货库房,库房分配成功后,为了防止此库存再被其它订单所占用,故需要对库存进行预占,预占库存记录到实物库存明细行。
为什么一定要做库存预占,而不是直接扣减库存?因为中央库存是实时库存的监控和体现,如果没有预占,无法得知当前订单对应的商品当前在库房内,还是已经发货出库房了,也就不能很好的体现商品的实时动向。
▲中央库存分仓及预占逻辑
本着用户体验为先的原则,小Q给出的分仓规则为:
Ⅰ.已经指定了仓库/门店的订单,直接进行库存预占,否则转Ⅱ;
Ⅱ.未指定门店的订单,需要分仓后再预占库存,分仓优先级如下:
①最少包裹原则(能单仓发货的,尽量不拆包裹;若不能单仓发货,找拆包裹最少的仓库组合);
②距离最近原则(发货库房离收货地址距离最近,若多个库房拆单发货,选择到达用户的总时长;
③成本最优原则(先从采购成本最低的库房发货,再考虑从物流费用最低的库房发货)。
05 库存成本价计算
中央库存的另一个功能,是管理全公司自营库房和门店的存货成本,故在进行实物库存流水加减的时候,需要同步进行库存成本计算。成本价的计算方法有很多,例如:先进先出法、 后进先出法、加权平均法、移动加权平均法、个别计价法、计划成本法、毛利率法、零售价法等。
重点说明一下常用的先进先出法、加权平均法、移动加权平均法:
先进先出法:商品最新发出(领用)以该物料(或该类物料)各批次入库的时间先后决定其存货发出计价基础,越先入库的越先发出。 采用先进先出法时,期末结存存货成本接近现行的市场价值;
加权平均法:称全月一次加权平均法,是指以当月全部进货数量加上月初存货数量作为权数,去除当月全部进货成本加上月初存货成本,计算出存货的加权平均单位成本,以此为基础计算当月发出存货的成本和期末存货的成本的一种方法。
加权单价=(月初结存货成本+本月购入存货成本)/(月初结存存货数量+本月购入存货数量)
移动加权平均法:指以每次进货的成本加上原有库存存货的成本,除以每次进货数量与原有库存存货的数量之和,据以计算加权平均单位成本,以此为基础计算当月发出存货的成本和期末存货的成本
移动加权平均单价= (本次收入前结存商品金额+本次收入商品金额)/(本次收入前结存商品数量+本次收入商品数量 )
举例: 某公司 经营某SKU A,采销过程如下:
10日,购入此SKU 100个,单价5元;
13日,购入此SKU 200个,单价6元;
18日,发出此SKU 100个 ;
20日,购入此SKU 700个,单价4元 ;
28日,发出此SKU 500个 ,还剩400个。
提问:分别用先进先出法、加权平均法、移动平均法计算发出存货的成本及期末库存存货的成本。
(1) 先进先出法:
发出存货的成本=100*5+(200*6+300*4)=2900元
说明:28日发出的500个,其中200个的单价为6元,300个的单价为4元;单价为4元的还剩400个,故期末成本取4元
期末库存成本=400*4=1600元
(2) 加权平均法:
加权平均单价=(100*5+200*6+700*4)/(100+200+700)=4.5元
发出存货的成本:(100+500)*4.5=2700元
期末库存成本:400*4.5=1800元
(3) 移动加权平均法:
13日购入后的单位库存成本:(100*5+200*6)/300=5.67元
18日发出存货成本:5.67*100=567元
20日购入后的单位库存成本: (200*5.67+700*4)/ (200+700)= 4.37元
28日发出存货成本:4.37*500=2185元
期末库存成本: 400*4.37=1748元
以上三种计算方式中,移动加权平均法可以实时获取最新库存成本,比较符合公司现状,故小Q和财务同事商讨下来以此方式作为中央库存的成本计算策略,按照不同仓库和库存状态成本独立计算的原则,采购入库、调拨入库、退货入库、库存状态变化会对库存成本产生影响,其它业务不会导致库存成本变化。
①采购/调拨入库业务成本计算:
新库存成本=(本次入库数量 * 本次入库单价 + 当前实物库存数量 * 库存成本) / (本次入库数量+当前实物库存数量)
② 退货入库业务成本计算:
新库存成本=(本次退货入库数量 * 原出库单出库时成本单价 + 当前实物库存数量 * 库存成本) / (本次入库数量+当前实物库存数量)
③库存状态变化业务成本计算:
新库存成本=(原状态变化数量 * 原状态成本单价 + 新状态实物库存数量 * 新状态库存成本) / (状态变化数量+当前实物库存数量)(JitLogistics)