如何理解电商系统库存分层体系?
关于电商系统库存,笔者在之前的一篇文章中从电商平台及前端销售的角度上进行了一次解析。此次再次从商家发货及实物库存管理的角度描述电商系统库存分层的体系,以便于大家先从宏观的角度了解整个库存管理的体系。
一、库存分层体系概念
1.1 库存的概念
关于库存管理,主要集中在两个层面进行:
1)交易库存:交易库存用于展示给用户,前端展示时商品可售状态,剩余可售数量,下单库存处理,支付库存处理,取消订单库存处理;通过对销售库存库存的管理,能够提供给用户提供更好的下单体验并支撑运营活动的开展。
2)实物库存与各个仓库或门店,包括三方代发货仓库库存的实物相对应;在入库是增加实物库存,出库时减少实物库存,并通过盘点、调拨、移位、报损等操作对实物进行协同管理。
1.2 库存管理的背景
设计库存体系时可适当借助已有的先进理念,同时也需要结合每个公司特殊的业务场景,不能为了套用其他公司的经验或行业先进理念而忽视了需要解决的实际问题,因此先汇总笔者所在公司库存相关的实际业务场景。
1.2.1 公司业务现状
目前存在的销售渠道可以分为三类:
- 三方渠道:主要为天猫,京东等三方平台,在相关三方渠道上开设店铺,并使用自营仓库进行电商订单的配送,使用自营门店进行自提业务;
- 自营渠道:自营渠道是指自营的商城,以直接提供商品购买服务为主;相关的订单主要由自营仓库进行配送,同时在签有代发货协议的前提下,部分商品可由代发货商家进行配送;
- 移动医疗:移动医疗属于公司的自营业务,以提供咨询服务为准,但同时客户可以选择相关商家购买货品,各个商家以入驻或代发货的方式接入,部分区域或部分货品由自营仓库配送或自营门店自提,其他的区域或货品则分别由商家提供配送或自提服务。
1.2.2 库存体系相关业务背景
- 销售渠道方面按照批发和零售的性质可以分为B2B和B2C,分别由批发公司和零售公司进行销售;
- 为了提升供应链议价能力,因此需要集中采购,所以统一需要先由批发分公司进行采购,然后通过批发分公司统一出售药品给各个零售分公司;
- 实物库存层面,各个子公司对应的仓库均使用WMS系统进行进销存的管理,而各个连锁及单体药店均部署一套药店系统进行POS收银和进销存的管理,此外还存在三方代发货仓库自用的ERP系统(配送或自提);
- 仓库仅支持配送,连锁门店仅支持自提;单体药店具备独立仓库及冷藏药品的条件,可以支持针对电商订单进行独立配送;通过单体药店的配送可以减少物流配送时间,提升客户满意度。
1.2.3 库存体系需解决的问题
- 对于不同的销售渠道,会涉及到多个渠道同时争抢库存的情况,这时需要将部分资源倾斜给部分特殊渠道,因此需要设计相关铺货规则;
- 部分商品限制只销售某个渠道或不能销售某些渠道,需要把控相关商品在各个渠道的可销售库存;
- 销售渠道需要针对每个区域划分发货仓库,针对部分特殊的商品指定发货仓库,因此需要精准地控制相关库存及订单分配的仓库;
- 对于部分残次品及近效期的商品,需要和普通货品分开,并支持通过内购或促销的方式进行出售;
- 不同的仓库之间的库存难以统筹,部分仓库常常爆仓而部分仓库则库存滞销,因此自营仓库的库存需要合并管理。
二、库存体系规划
基于以上,笔者根据公司实际业务场景,针对库存管理体系进行整体调整,将库存划分为三层结构:销售层、调度层、实物层。
相关逻辑如下图:
2.1 实物层
实物层定义为分别针对各个仓库及门店实物进行管理,通过仓库WMS系统,门店系统及三方代发货ERP系统管理实物进销存;在货品入库时增加实物库存,并在货品出库时扣减实物库存。
(由于不同的ERP系统,门店系统,WMS系统针对实物库存处理的逻辑会有一些差异,仅针对WMS系统的库存管理进行说明;另外,库存管理的最小粒度可以分为按产品的批次管理库存和按库位管理库存,这里仅针对基于库位的库存管理进行说明)
2.1.1 实物库存的维度包括:货主、虚拟仓、sku、批次、库存状态、库位
1)货主:货品实际归属的公司;
2)虚拟仓:同一个货主可能存在多个仓库或门店,该虚拟仓库的定义需要与实体的仓库区分开来,有可能同一个实体仓包含多个虚拟仓;
3)sku:仓库基于sku进行货物的进销存;
4)批次:同一个sku可能存在多个批次,不同的批次需要分开存储,这样在分配拣货库位的时候可以优先对生产日期比较远的货品进行优先发货;
5)库存状态:依据货品能否销售和销售限制可将库存状态划分为:合格品,不合格品,一残,二残,三残;其中一残,二残,三残可以根据用途进行自定义,如可打折出售的货品定义为二残,可内购出售的货品定义为三残,无法销售的产品定义为不合格品;
6)库位:库存的最小粒度,同一个sku,对应每一个批次的每一个库存状态占用一个库位。
2.1.2 库位及库存的其他属性
1)库存数量:特定的库位上,实物商品的数量。
2)库位类型:根据货品的实际位置可以划分为存储区,拣货区,到货区,质检区,发货区,在途区;对于到货区,质检区,发货区,在途区可以设定一个公共库位。
(商品是否在途根据是否存在来货单即ASN单来判断,来货单中包含的商品数量即在途库存,在途库存可能在运输途中也可能已到达仓库。严格来说,未上架的货品都可以定义为在途库存,包括到货区,质检区和在途区。)
3)作业状态:拣货作业分配库位后,中间存在等待拣货的时间,因此需要预先占用库存。另外由于盘点的原因,对应的货架位不能进行上下架作业。因此库位的作业状态可分为正常、待拣、待盘。
(分配拣货库位时,只根据正常作业状态的库存进行判断,上架作业时,因为货品还在质检区,上架分配时通过判断空库位是否存在上架作业单来判断即可。)
4)是否停售:特殊情况下,指定产品或批号的产品禁止出库,则对应库位的库存需标记为停售。
(停售商品批次对应的库位不能被分配拣货任务,同时也需要在复核的时候针对商品和批次进行再次判断以阻止出库)
2.2 调度层
调度层由于仓库实物汇总调度及多平台铺货的需要分为实物中央库存和分渠道销售库存,其中实物中央库存由于操作系统不一致,仓库类型不一致,自营与商家的区别等原因又可以分为三个模块:
- 自营仓库库存交易;
- 自营门店库存交易;
- 商家库存交易。
2.2.1 实物中央库存
实物中央库存主要是分别汇总各个仓库的sku库存,对于仓库销售和发货业务做统一的调度。
汇总后实物中央库存分为几个维度:仓库(或虚拟仓)、sku、库存状态,其他库存属性包括:
1)总实物库存:即对应仓库中的实物按照sku及库存状态的维度进行聚合,计算库位类型为存储区,拣货区,发货区的货品数量。
2)在途库存:在途库存定义为已确定供应商发货但尚未上架的货品,在途库存同理按照sku进行聚合(默认库存状态为合格且未停售),计算库位类型为到货区,质检区,在途区的货品数量。
(发货区的货品对应的订单还没有完成,因此还算库内实物库存;到货区,质检区及在途区的货品由于无法正式出售所以只能算入在途库存。)
3)停售实物库存:即对应仓库中的实物按照sku及库存状态的维度进行聚合,计算已停售且库位类型为存储区,拣货区,发货区的货品数量。
4)可用实物库存:可用实物库存=总实物库存-停售实物库存。
5)成本价:按照移动加权平均的方法,计算总实物库存对应的成本价(盘点,报损出入库时,成本价不变)。
6)销售预占库存:订单提交成功且订单分仓完毕,则增加对应仓库的销售预占库存,取消订单或订单发运时扣减销售预占。
7)发货预占库存:订单同步至WMS成功后,则增加对应仓库发货预占库存,在订单发运或未发货(已同步)取消订单时扣减发货预占。
8)销售可用库存:销售可用库存=可用实物库存-销售预占库存(在计算分渠道库存时需要先算出仓库销售可用库存,销售可用库存发生变化时触发对分渠道销售可用库存的重新计算)。
在其他的文章及博客中也有作者的做法是不设销售预占库存,而是直接在分仓后进行发货库存预占。考虑到订单分仓之后,并不代表仓库一定要发货,中间存在订单履行的相关流程,存在时间差且订单可能取消。另外,分开两个字段也能更好的区分不同订单处理阶段情况,同时也给后面系统的拓展预留一定空间。
对于总实物库存,需要依据业务单据进行更新,通过入库单来增加库存,通过出库单减少库存。这样便于财务统一做账,让仓库的每一次实物变化都有理有据。相关业务操作包括采购入库,销退入库,销售出库,采退出库,盘点出/入库,报损出库,调拨出/入库等。
由于自营门店和商家都有自己独立的库存管理系统,对于停售实物库存,成本价,发货预占库存等都进行独立的管理,所以关于仓库的实物中央库存数据只包含可用实物库存,销售预占库存,销售可用库存。(不需要做发货预占,因为我们无法把控商家ERP和门店系统的发货情况。)
2.2.2 分渠道销售库存
分渠道销售库存主要作用为计算每个仓库针对各个渠道的销售可用库存,基本维度包括:销售渠道、送货方式、sku、库存状态。
- 销售渠道:销售渠道分别包括自营,天猫,京东,移动医疗,电销及其他三方平台等
- 送货方式:由于仓库只能自提或配送,因此送货方式保持和仓库属性一致即可(单体药店可能同时支持配送和自提业务,相关业务可以拆成一个自提仓和一个配送仓处理)
- 库存状态:包括合格,一残,二残;对于不同库存状态的库存需要分开处理
- 销售可用库存:根据仓库发货渠道类型及赋予相关渠道的流量比例,按照一定的规则汇总计算可供该渠道下单的数量
在配置多平台分货相关规则时,赋予所有销售渠道的流量比例不能超过100%,否则有可能超卖,造成订单下单成功但无法发货的情况。(非自营配送仓如无必要的话,可以默认共享库存)
销售可用库存更新的及时性对提升多平台分货的精准性及防止前台超卖影响较大,在实物中央库存的销售可用库存发生变动时需即时更新分渠道销售库存并触发对销售层销售可用库存的重新计算。
2.3 销售层
销售层汇总三个服务模块(自营门店,自营仓库,商家仓库/门店)的分渠道销售库存,并对前台提供服务,校验前台下单数量,保证可销售数量和实物一致,防止前台超卖。
2.3.1 销售层库存维度包括:销售渠道,送货方式,库存状态,发货区域,sku。
相关属性包括:
- 销售渠道:销售渠道分别包括自营,天猫,京东,移动医疗,电销及其他三方平台等。
- 送货方式:包括配送和自提,分别汇总配送仓和自提仓相关数据。
- 库存状态:包括合格,一残,二残,对于不同库存状态的库存需要分开处理。
- 发货区域:可以按照区域维度分别汇总库(不需要分区域区分库存的情况下,可以默认全国)。
- 销售可用库存:按照以上维度根据销售渠道,仓库,库存状态,sku对所有分渠道销售库存数据进行筛选汇总;前台提交订单成功且订单分仓完毕则扣销售可用库存,发货前取消订单或订单同步到wms系统则增加。(注意:在调度层的分渠道销售可用库存更新的时候,需要同时触发销售层对相关销售渠道销售的sku重新计算销售可用库存)。
- 销售预占库存:销售下单所占用的库存,在取消订单的时候释放销售预占库存,且在订单发运时扣减销售预占库存。(注意:销售下单成功时,需要从该渠道销售可用库存中扣除数量并增加到销售预占库存中)
- 活动库存:关于特价及秒杀活动,常常需要设置活动库存,可从常规库存中分离出来一部分作为活动库存,在活动期间订单中商品有参加活动则扣减活动库存,未参加活动则扣减普通库存,最终在活动结束的时候将剩余的活动库存及产生的活动销售预占库存还回去。(如无特殊必要则没必要单独把活动库存单独分出来,通过记录参加活动商品数量控制下单即可;分离活动库存的情况下,由于销售层的销售可用库存数量是需要根据调度层情况来变化的,相关逻辑设计起来比较复杂)
对于三方平台而且,他们会基于三方平台再搭建一层库存体系,因此这种情况下,同步销售可用库存和销售预占库存之和过去即可。
2.3.2 销售可用库存相关计算规则
1)发货区域配置:这里的发货区域指在对应的销售渠道中,该仓库负责发货的区域,而不是仓库本身的发货能力(销售渠道基于时效,成本等因素直接给仓库的发货区域做出安排),因此需要针对每个渠道设置其合作发货的仓库及对应的发货区域,计算区域库存时,只汇总相关发货区域仓库的库存。
2)自营仓库之间的订单由于可以在内部重新进行分仓,所以自营仓库发货区域范围可以重叠(整体的自营仓库可以当做一个大仓库处理),其他的仓库或门店之间的发货区域不允许重叠。
3)SKU发货仓库配置:出于成本优化或资源独特性等原因,对于部分产品需要指定仓库发货,因此相关产品只汇总对应仓库的销售可用库存。
4)搭配商品库存:搭配商品由于本质上还是多个商品,所以取 (可用库存数量/搭配内商品数) 最小的数量作为可用库存即可。
本文由 @不桡 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议
多渠道共享,又需要考虑仓库的区域属性,但是仓库发货区域范围又有交叉,还不能超卖,应当如何实现呢?
销售可用库存:按照以上维度根据销售渠道,仓库,库存状态,sku对所有分渠道销售库存数据进行筛选汇总;前台提交订单成功且订单分仓完毕则扣销售可用库存,发货前取消订单或订单同步到wms系统则增加。 订单同步到wms系统时为何要增加,这样不是超卖了吗?
这个之前有了解,但了解的比较浅。生产制造类企业,和电商比,上游多了生产环节(零件组装、原材料加工之类的),下游多了to B的销售渠道。
作者对多渠道库存共享怎么看呢。应该如何实现?
多渠道库存共享的情况下,直接同步中央库存数量即可,不需要分渠道了
回复有点晚,见谅