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. SpringBoot+MyBatisPlus+ElementUI一步一步搭建前后端分离的项目(附代码下载)

    场景 一步一步教你在IEDA中快速搭建SpringBoot项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/87688277 ...

  2. MySql Navicat可视化工具

    下载链接 链接:https://pan.baidu.com/s/1ca5KbpCFc4UbcYkXZDu6aA 提取码:8nku 安装比较简单,选完安装路径,下一步即可 Navicat for MyS ...

  3. Vue.js+vue-element搭建属于自己的后台管理模板:创建一个项目(四)

    Vue.js+vue-element搭建属于自己的后台管理模板:创建一个项目(四) 前言 本章主要讲解通过Vue CLI 脚手架构建工具创建一个项目,在学习Vue CLI之前我们需要先了解下webpa ...

  4. 从0系统学Android-2.4 Activity 的生命周期

    本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 本系列持续更新中.... 2.4 Activity 的生命周期 掌握 Activity 的生命周期对于开发者来说是 ...

  5. Android项目实战(五十八):Android 保存图片文件到本地,相册/图库查看不到的处理

    将一个图片文件写入到本地目录,然后去相册查看,会查找不到这个图片文件,但是去文件目录下查找,确确实实有该图片文件. 问题在于相册是一个独立的app,它并不会去刷新本地图片,所以需要在写图片文件成功之后 ...

  6. 【JDBC】JDBC入门

    JDBC的入门 搭建开发环境 编写程序,在程序中加载数据库驱动 建立连接 创建用于向数据库发送SQL的Statement对象 从代表结果集的ResultSet中取出数据 断开与数据库的连接,并释放相关 ...

  7. Error 1327 Invalid Drive 的解决办法

    出现场景:     当我在安装STM32公司的 STM32 ST-LINK Utility v4.5.0 软件时,弹出了这个错误.弹框的内容大体是说找不到D盘,这里忘记截图了. 我的电脑的硬盘是我另一 ...

  8. python的路径问题

    ## 文件路径出错问题 """ 如何获取与当前文件相关的地址 """ import os # 当前文件的完整路径 print(__file_ ...

  9. oracle xmltype + blob + clob

    oracle varchar2最大存储长度为4000,所以当字段长度超限时可尝试存储为blob或xmltype格式 xmltype --1.创建xml表 Create TABLE testxml( i ...

  10. day91_11_13Local与偏函数

    一.local 在线程的处理中,常常遇到这样的问题.当一系列线程遇到io操作的时候,就会执行其他线程,这时候就会出现数据冲突,发生数据方面的问题: from threading import Thre ...