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. three.js实现世界地图城市迁徙图

    概况如下: 1.THREE.CylinderGeometry,THREE.SphereGeometry绘制地图上的标记: 2.THREE.CanvasTexture用于加载canvas绘制的字体: 3 ...

  2. SpringCloud的入门学习之概念理解、Config配置中心

    1.SpringCloud Config分布式配置中心.分布式系统面临的配置问题. 答:微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务.由于每个 ...

  3. Web前端基础(15):jQuery基础(二)

    1. jQuery选择器 jQuery选择器是jQuery强大的体现,它提供了一组方法,让我们更加方便的获取到页面中的元素. 1.1 基本选择器 例子如下: <!DOCTYPE html> ...

  4. 松软科技web课堂:SQLServer之LAST() 函数

    LAST() 函数 LAST() 函数返回指定的字段中最后一个记录的值. 提示:可使用 ORDER BY 语句对记录进行排序. SQL LAST() 语法 SELECT LAST(column_nam ...

  5. iOS---------查看界面的流畅度

    iOS查看屏幕帧数工具--YYFPSLabel iOS 保持界面流畅的技巧 iOS 优化界面流畅度的探讨 先研究一下     改天自己出一篇文章

  6. EM13C添加agent记录两个报错

    错误一:ADF_FACES-60097:For more information, please see the server's error log for an entry beginning w ...

  7. coredump配置、产生、分析以及分析示例

    关键词:coredump.core_pattern.coredump_filter等等. 应用程序在运行过程中由于各种异常或者bug导致退出,在满足一定条件下产生一个core文件. 通常core文件包 ...

  8. Educational Codeforces Round 74 (Rated for Div. 2)

    传送门 A. Prime Subtraction 判断一下是否相差为\(1\)即可. B. Kill 'Em All 随便搞搞. C. Standard Free2play 题意: 现在有一个高度为\ ...

  9. [JavaScript]父子窗口间参数传递

    概述 当页面嵌入一个iframe,或者打开一个子窗口.这个时候如果父窗口需要与子窗口之间通讯,如果直接用DOM访问对方窗口window,会受到跨于安全机制影响. javascript提供一个方法,可以 ...

  10. vscode 问题。。。。

    "program": "${workspaceFolder}/a.out", "preLaunchTask": "build&qu ...