https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构)

  https://www.cnblogs.com/smh188/p/11534451.html(我是如何一步步编码完成万仓网ERP系统的(二)前端框架)

  https://www.cnblogs.com/smh188/p/11535449.html(我是如何一步步编码完成万仓网ERP系统的(三)登录)

  https://www.cnblogs.com/smh188/p/11541033.html(我是如何一步步编码完成万仓网ERP系统的(四)登录的具体实现)

  https://www.cnblogs.com/smh188/p/11542310.html(我是如何一步步编码完成万仓网ERP系统的(五)产品库设计 1.产品类别)

  https://www.cnblogs.com/smh188/p/11546917.html(我是如何一步步编码完成万仓网ERP系统的(六)产品库设计 2.百度Ueditor编辑器)

  https://www.cnblogs.com/smh188/p/11572668.html(我是如何一步步编码完成万仓网ERP系统的(七)产品库设计 3.品牌图片跨域上传)

  https://www.cnblogs.com/smh188/p/11576543.html(我是如何一步步编码完成万仓网ERP系统的(八)产品库设计 4.品牌类别)

  https://www.cnblogs.com/smh188/p/11578185.html(我是如何一步步编码完成万仓网ERP系统的(九)产品库设计 5.产品属性项)

  https://www.cnblogs.com/smh188/p/11589264.html(我是如何一步步编码完成万仓网ERP系统的(十)产品库设计 6.属性项和类别关联)

  https://www.cnblogs.com/smh188/p/11596459.html(我是如何一步步编码完成万仓网ERP系统的(十一)产品库设计 7.发布商品)

  https://www.cnblogs.com/smh188/p/11610960.html(我是如何一步步编码完成万仓网ERP系统的(十二)库存 1.概述)

  https://www.cnblogs.com/smh188/p/11669871.html(我是如何一步步编码完成万仓网ERP系统的(十三)库存 2.加权平均价)

  https://www.cnblogs.com/smh188/p/11763319.html(我是如何一步步编码完成万仓网ERP系统的(十四)库存 3.库存日志)

  万仓网ERP系统不开源,准备做一个系列,讲一讲主要的技术点,这些技术点会有源代码。如果想看所有源代码,可以打道回府了,没必要再阅读下去了,浪费您宝贵的时间。

  接下来的几篇开始说说库存,如何设计一个高效NB的电商库存系统呢?好的电商库存系统有哪些要点呢?

  对于用户来说,当然是操作方便;库存账目清晰准确;双11、618大促时能够减少超卖;能够根据现有库存销售数据,预测将来的销售,掌控供应链,提高库存周转率和资金的使用率等。

  对于开发设计来说,怎么做才能满足用户的要求?当然是直接借鉴一个成熟的大流量的电商库存系统,那就是亚马逊的Bin系统,网上有很多亚马逊bin系统的介绍,可以搜索关键字进行查询,这里就不过多的介绍了,直接上正文吧。

  1. 采用双重的库存架构,第一层是以仓库和SKU为维度的库存结构,主要字段有仓库编码,SKU编码,可订量和库存量等(可以在此基础上进行扩展比如残品可订量,残品库存,锁定可订量(大促前锁定的库存),这里不过多介绍扩展字段,只介绍正品可订量和正品库存)。

  

  可订量就是可供订单(包括调拨单、领用单和采购退货单等)下单的数量,订单进入到ERP系统确认审核后,根据订单明细扣减可订量,这时库存量不变。这样设计能保证大促销时,减少超卖现象,系统可以根据可订量来判断能不能下单,盘亏时可订量可能为负。

   库存量就是仓库内实际的商品库存,库存量不能为负。

  2. 第二层以货位和SKU为维度的Bin货位库存结构,库房有货架,货架上每个货格称为 “Bin” 货位,这就对库房的工作人员多了一些工作量,需要事先设定好货位,更细致的可以设定货位的长宽高,商品入库时可以根据商品的体积来推荐上架货位。

  

  货位号需要保持全系统唯一,这样能够方便定位检索。

   货位类型可以根据存货商品类型和使用方式分为三种:正品货位(细分为正品存货位和正品拣货位)、残品货位和移动货位。正品货位只能存储正品库存,残品货位只能存储残品库存。移动货位作为一种特殊的货位,比如当采购单入库后,采购的货品按照库房的作业应该是先放到托盘上,这时这个托盘就是移动货位,库管拉着托盘去正品货位或残品货位进行上架,这样货位就和SKU进行绑定,接下来就引申出来BinItem(货位库存)。

  

  可以看一下BinItem的表架构,一个货位可以放置多种SKU,这样设计就避免一种SKU占用一个货位,当SKU种类过多时,货位就不够用了,能够合理的使用货位。

   可用量就是可以分拣的数量,拿订单来说,订单在占用Storage表可订量时,就需要分拣具体的货位了,根据单据的正残,来分拣正品货位或残品货位。分拣货位时,BinItem表ForUsage就直接扣减(需要记录日志,拣货时按照指定货位拣货),但是货位库存量不变。

   拿采购单来说,单据从源头上就要区分是正品还是残品,当然采购单肯定是正品了(一些二手商家会采购一些残品),采购单入库时,Storage库存表可订量和库存量要一同增加,用户在购物网站就可以下单了。同时移动货位的BinItem货位库存表货位库存量要增加,移动货位的可用量不用增加,WHY?因为系统设定,单据拣货时不能分拣到移动货位(单据拣货时从正品货位下架到移动货位,这时单据又分拣到移动货位,造成死循环),那可用量在什么时候增加呢?在库存上架的时候,货位库存从移动货位移动到正品(残品)货位时,正品(残品)货位可用量和货位库存量同时增加,扣减移动货位的库存量,Storage表不进行任何操作。

  可以看出Storage库存表的可订量和BinItem货位库存表的可用量并不是实时一致的,订单占用可订量,还没分拣时可用量并没占用。但库存表和货位库存表的库存量是一致的。

  两者的库存量在入库或者出库时必须同时增减,对系统的一致性要求极高,可以合理的使用事务来确保两表操作的一致性。

  这样设计出来的库存系统可以实现精细化管理,某个商品在哪个货位,库存量、可订量和货位可用量可以方便的查询,由于BinItem表结构设计,当SKU或者货位比较多时,一个SKU可以放置在多个货位,有很频繁的货位移动,数据量会比较大,需要合理的设置索引键,同时对数据库的读写压力也比较大。当然好处也非常多,库房可以上一些现代化的PDA,实现无纸化操作,库房拣货、上架和盘点都可以同时操作。

  唠唠叨叨,先说这么多。

  

PS:客官有时间光临我的小站 万仓网 。 

我是如何一步步编码完成万仓网ERP系统的(十二)库存 1.概述的更多相关文章

  1. 我是如何一步步编码完成万仓网ERP系统的(二)前端框架

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  2. 我是如何一步步编码完成万仓网ERP系统的(一)系统架构

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  3. 我是如何一步步编码完成万仓网ERP系统的(三)登录

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  4. 我是如何一步步编码完成万仓网ERP系统的(四)登录的具体实现

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  5. 我是如何一步步编码完成万仓网ERP系统的(五)产品库设计 1.产品类别

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  6. 我是如何一步步编码完成万仓网ERP系统的(六)产品库设计 2.百度Ueditor编辑器

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  7. 我是如何一步步编码完成万仓网ERP系统的(七)产品库设计 3.品牌图片跨域上传

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  8. 我是如何一步步编码完成万仓网ERP系统的(八)产品库设计 4.品牌类别

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  9. 我是如何一步步编码完成万仓网ERP系统的(九)产品库设计 5.产品属性项

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  10. 我是如何一步步编码完成万仓网ERP系统的(十)产品库设计 6.属性项和类别关联

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

随机推荐

  1. 7.InfluxDB-InfluxQL基础语法教程--INTO子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) 通过INTO子句,可 ...

  2. [PHP] 广度优先搜索匹配网站所有链接

    <?php define('PRE_DOMAIN','www'); define('DOMAIN','sina.com.cn'); define('PROTOCOL','https'); def ...

  3. modbus_tk模块

    modbus_tk模块 通过modbus-RTU 读取地址,调用后返回反馈数值和故障信息. modbus_tk模块安装 pip install pymodbus_tk 下面代码功能:读取地址为0x42 ...

  4. pdfium 保存pdf

    // // Created by svenj on 2019/2/3. // extern "C" { #include <unistd.h> #include < ...

  5. 维护带修改区间 K 小值

    就是在原来的主席树模板上加上一条将x上的值修改为k 待我们仔细想想之前静态的区间Kth怎么实现的... 我们仍然需要维护前缀和,而只是在以前的代码里面加上单点修改的操作,那么你要每次要修改的前缀和就有 ...

  6. pycharm 有汉字的地方就有阴影

    1.pycharm  有汉字的地方就有阴影 编码申明 阴影就会消失 # _*_ coding:UTF-8

  7. JDOJ 1162 是否闰年

    1162: 是否闰年 https://neooj.com:8082/oldoj/problem.php?id=1162 题目描述 输入一个年份year,求year是否是闰年,如果是闰年输出L,否则输出 ...

  8. PATA1075 PAT Judge (25 分)

    The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...

  9. 第02组 Beta冲刺(1/4)

    队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...

  10. DP问题(2) : hdu 1421

    题目转自hdu 1421,题目传送门 题目大意: 给你n个物品,你要搬走2*k个(也就是搬k次) 每次搬需要花费v,v=(ai-aj)2 (i表示左手拿的物品重量,j表示右手拿的物品的重量) 要求所有 ...