Java生鲜电商平台-深刻理解电商的库存架构与解决方案

说明:一般电商的库存都是跟SKU相关联的,那么怎么样才能进行SKU的库存管理呢?有以下几种方式与方法:

一、七大库存分类

首先得学习什么是库存,库存的分类吧,OK,Let'go。

库存,从字面上的理解,是指库房中的存货,也就是库房中的货品总和。

但库房中的库存却不能一概而论。即便是一个SKU,也会分属不同的状态。举一个简单的例子,在实物的流转过程中,难免会发生磕碰、损伤,这些发生损伤的产品也就不能正常销售了,在系统管理时,也必须加以区分。电子商务操作中,由于购买和发货在时间、空间上都是异步进行的,客户下订单到发货的过程中,也存在着时间间隔,也因此必须将库存结构区分开来。

为了适应这种异步销售过程,电子商务企业的库存,在系统结构中,一般会分为如下几个部分:

1、可销售库存(S)

可销售库存(sellable inventory)是即网站前台显示的库存,也是库存的最大组成部分。

当“可销售库存>0”时,这一商品可供购买,前台网站则会显示产品可销售;而一旦“可销售库存<0”时,前台网站则会显示商品缺货。一般所说的缺货并不等于库房中没有库存了,而只是没有可销售库存(例如存在订单占用库存)。

大部分的公司只会在前台显示是否有库存,但这实际上可以做到更细致。

在卓越亚马逊的系统中,当可用库存数量很少时,会在前台提示客户数量很少,请客户加紧购买,提高转化率。

顾客选购完商品,确认订单时,前台网站会首先向后台系统发出要求,检查订单产品数量与当前可销售库存数量。若可销售库存数量>订单产品数量,则通知前台网站成功,否则会通知前台库存不足,提醒客户。

生成一张新的订单后,该客户购买的库存则会被预留下来,用于后续的发货,系统中可用库存数量减少,而减少的可用库存到哪里去了呢?这就变成了下一部分。

2、订单占用库存(O)

当生成订单时,可用库存数量减少,订单占用库存(Order Occupied Inventory)数量增多,变化的数量即订单中的产品数量,这个很容易理解。

设立订单占用库存的原因在于:订单的生成和库房的发货在时间上是异步的。这样做的优点在于:保证已经生成订单的库存,这部分客户可以顺利收货;而且客户在下订单时,能够保证有产品发货。若不设立订单占用库存,则会产生客户下订单后,库存发现无货可发的尴尬情况。

而处理订单时,针对的只是已经被订单所占用的库存,与前台的销售无关。订单出库后,系统中扣减的也只是订单所占用库存。

3、不可销售库存(U)

前面举的例子当中,产品由于破损无法销售,在系统中也必须有相应的状态。实际操作中,无法作正常销售的原因很多,例如包装破损、性能故障、型号标错等等。为了理论符合实际,在系统中也会定义出这一部分的库存为不可销售状态(Unsellable Inventory)。

不可销售库存在系统中的标注方法有两类。一类是使用不同的SKU代号来区别,例如某一正常商品的SKU编码是351038,它所对应的不可销售库存的SKU编码则是351038U;另外一种方式是使用同一种SKU,但是专门开辟一个不可销售库存区,所有不可销售的库存统一管理。

4、锁定库存(L)

电商经常要降价促销参加平台方举行的活动,在一些情况下,销售方并不希望这么快就将所有的库存都售出。有的时候是因为所有库存全部作降价促销的成本很高,有的时候是防止竞争对手的恶意采购,更多的情况下,则是希望将这一产品的降价作为引子,带动网站的流量和整体销售,这就需要将促销分批次进行。(并不想真的降价卖,只是想以这个为噱头吸引用户)

为达到以上的目的,会采用锁定库存(Locked Inventory)的方式。库存被锁定后,无法直接销售。促销进行一段时间后,可用库存为0,无法继续销售,必须在解除锁定后才能转化为可销售库存,继续进行销售。

为达到以上的目的,会采用锁定库存(Locked Inventory)的方式。库存被锁定后,无法直接销售。促销进行一段时间后,可用库存为0,无法继续销售,必须在解除锁定后才能转化为可销售库存,继续进行销售。

计算公式

5、虚库存(V)

以上所说的,都是指在实物在库房中的库存。但库房的总容积量是一定的,不可能无限制的扩展。而依据长尾理论,电子商务的最大优势则是几乎无限的商品展示和销售能力。如何将有限的库房处理能力和无限的可销售商品联系赶来呢?方法早就有了,虚库存(Virtual Inventory)。

有一些产品,虽然库房中并没有,或者并没有很多,但是供应渠道非常通畅,可以在很短的时间内送到库房中,变为库存;另外一些产品,销售量少,库存的管理难度大,只有当产生订单后,才向供应商采购。这部分不在实际的库存中,但是可以很快采购到的货品就叫做虚库存。

虚库存的存在,是为了使前台网站的可销售数量大于实际可销售数量。当存在虚库存时,电商库存公式会变成:

S=I-O-U-L+V

(S-可销售库存 I-总库存 O-订单占用库存 U-不可销售库存 L-锁定库存 V-虚库存)

6、调拨占用库存(T)

很多B2C企业有着超过一个以上的库房。多个库房的设置,各个库房之间,必然存在着库存的分派和调拨(帮助非洲黑人兄弟)。当产生调拨计划后,调出地库房的某一部分库存就会被占用,这部分库存被称为调拨占用库存(Transport Inventory)。调拨占用库存和订单占用库存的性质相似。当存在调拨占用库存后,电商库存公式变成:

S=I-O-U-L+V-T

(S-可销售库存 I-总库存 O-订单占用库存 U-不可销售库存 L-锁定库存 V-虚库存 T-调拨占用库存)

7、调拨中用库存(A)

库存的调拨,必然会存在一段时间,库存既不存在于调拨出库房,也不存在于调拨入库房,这一部分库存就像漂在空中一样,称为调拨中库存(Air Inventory)。

假设1号库房为调拨出库房,2号库房为调拨出库房,在调拨发货前,这两个库房的库存结构为:

I1=S1+O1+U1+L1-V1+T1

I2=S2+O2+U2+L2-V2+T2

I=S+O+U+L-V+T

(S-可销售库存 I-总库存 O-订单占用库存 U-不可销售库存 L-锁定库存 V-虚库存 T-调拨占用库存)

若从1号库房调拨出量为A的库存到B库房,在1号库房调拨发出后,2号库房收到调拨前,两库房的库存结构为:

I1=S1+O1+U1+L1-V1+T1-A

I2=S2+O2+U2+L2-V2+T2

I=S+O+U+L-V+T-A

(S-可销售库存 I-总库存 O-订单占用库存 U-不可销售库存 L-锁定库存 V-虚库存 T-调拨占用库存 A-调拨中库存)

可以看到,两个库房的总库存减少了,调拨中库存在路上,只能计在财务库存中,而并不能计入实物库存。只有当调拨完成后,库存进入2号库房,总库存才会恢复。

I1=S1+O1+U1+L1-V1+T1-A

I2=S2+O2+U2+L2-V2+T2+A

I=S+O+U+L-V+T

(S-可销售库存 I-总库存 O-订单占用库存 U-不可销售库存 L-锁定库存 V-虚库存 T-调拨占用库存 A-调拨中库存)

只要记住调拨中的库存,不计入实物库存,即不属于A也不属于B,只计入财务库存,像没爹的孩子一样。

Java生鲜电商平台-深刻理解电商的库存架构与解决方案的更多相关文章

  1. Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构

    Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留 ...

  2. Java开源生鲜电商平台-财务系统模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-财务系统模块的设计与架构(源码可下载) 前言:任何一个平台也好,系统也好,挣钱养活团队这个是无可厚非的,那么对于一个生鲜B2B平台盈利模式( 查看:http://www.cn ...

  3. Java生鲜电商平台-高并发核心技术订单与库存实战

    Java生鲜电商平台-高并发核心技术订单与库存实战 一. 问题 一件商品只有100个库存,现在有1000或者更多的用户来购买,每个用户计划同时购买1个到几个不等商品. 如何保证库存在高并发的场景下是安 ...

  4. Java生鲜电商平台-会员积分系统的设计与架构

    Java生鲜电商平台-会员积分系统的设计与架构 说明:互联网平台积分体系主要用于激励和回馈用户在平台的消费行为和活动行为,一个良好的积分体系可以很好的提升用户的粘性及活跃度. 一.互联网平台积分体系设 ...

  5. Java生鲜电商平台-定时器,定时任务quartz的设计与架构

    Java生鲜电商平台-定时器,定时任务quartz的设计与架构 说明:任何业务有时候需要系统在某个定点的时刻执行某些任务,比如:凌晨2点统计昨天的报表,早上6点抽取用户下单的佣金. 对于Java开源生 ...

  6. Java生鲜电商平台-RBAC系统权限的设计与架构

    Java生鲜电商平台-RBAC系统权限的设计与架构 说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上 ...

  7. 33、生鲜电商平台-定时器,定时任务quartz的设计与架构

    说明:任何业务有时候需要系统在某个定点的时刻执行某些任务,比如:凌晨2点统计昨天的报表,早上6点抽取用户下单的佣金. 对于Java开源生鲜电商平台而言,有定时推送客户备货,定时计算卖家今日的收益,定时 ...

  8. 26、生鲜电商平台-RBAC系统权限的设计与架构

    说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想 ...

  9. 2017.12.25 Java中面向对象思想的深刻理解

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...

随机推荐

  1. go语言之切片即动态数组

    切片和数组的类型有什么不一样,我们可以打印一下,就可以知道两者的区别了,数组是容量的,所以中括号中有容量,切片的动态数组,是没有容量,这是数组和切片最大的区别 test8_4 := [20] int ...

  2. 超级简单的数组加单链表实现Map

    /** * 超级简单的数组加单链表实现Map * @author jlj * */ public class MyHashMap { public MyList[] lists; public int ...

  3. vue小案例--简易评论区

    一.小案例(评论区) 1.流程 (1)分析静态页面.(vue项目创建参考https://www.cnblogs.com/l-y-h/p/11241503.html)(2)拆分静态页面,变成一个个组件. ...

  4. react-native 键盘遮挡输入框

    Android上已经自动对键盘遮挡输入框做了处理,所以我们只需要关注ios. 1.首先引入 KeyboardAvoidingView import { KeyboardAvoidingView } f ...

  5. 一文解读HTTP2 (转)

    作为一个经常和web打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识,希望能给读者带来一些收获,如有不对之处 ...

  6. 用函数模拟简单的购物车(Python)

    """ 购物车功能: a.引导用户输入金额 b.给用户展示所有的商品 c.引导用户输入需要进行的操作[添加 删除 结算购物车 退出] d.引导用户选择商品 e.引导用户输 ...

  7. 读书笔记_python网络编程3_(1)

    0.前言 代码目录: https://github.com/brandon-rhodes/fopnp/tree/m/py3 0.1.网络实验环境:理解客户端与服务器是如何通过网络进行通信的 每台机器通 ...

  8. Linux—vi/vim命令详解

    如何在 vi 里搜索关键字 在命令模式下敲斜杆( / )这时在状态栏(也就是屏幕左下脚)就出现了 "/" 然后输入你要查找的关键字敲回车就行了. 如果你要继续查找此关键字,敲字符 ...

  9. python读写Excel方法(xlwt和xlrd)

    在我们做平常工作中都会遇到操作excel,那么今天写一篇,如何通过python操作excel,当然python操作excel的库有很多,比如pandas,xlwt/xlrd,openpyxl等,每个库 ...

  10. 《Web Development with Go》写一个简单的LoggingMiddleware

    main.go package main import ( "fmt" "log" "net/http" "time" ...