整个系统分为四部分:基础数据、进货管理、出货管理、统计报表。其中商品的进出库采用先进先出的方法,出库价及成本价采用移动加权平均算法。
一、系统框架
二、各模块功能说明
基础数据
基础数据的录入步骤:『仓库信息』→『仓库初始化』→『库存情况』→『商品表』,最后是『客户信息』和『供货商信息』。
进行仓库初始化时,只需新建一张『仓库初始化』表单,不需要手工录入任何数据,系统自动把当前的库存信息提取过来,直接保存即可。注意,仓库初始化表单只能填写一张,在保存第二张时,系统会给出相应提示。
仓库初始化后的各仓库库存情况,明细部分为空,因为明细部分不是手动输入的,而是通过填写『商品表』、『入库单』、『出库单』时补充进来或者删除的。
『商品表』中的"当前库存数量"和"当前库存金额"不需手工录入或计算。当前库存数量等于该产品在各个仓库总的数量和。填写一种产品的『商品表』,该商品的信息在保存的时候同时插入一条记录到相应的仓库的『库存情况』表中,同时也插入入库ID,入库ID使用当前系统日期时间。
进货管理
『入库单』操作要点:
- 收入仓库和供货商通过下拉方式选择;
- 选择商品编码后,系统会自动查询出商品名称、规格、单位、单价;
- 数量必须大于零,否则系统会给予相应提示;
- 如果一行明细也没有输,不能保存;
- 保存后,系统会自动更新商品的当前库存量、当前库存金额、及发出仓库的库存量;
- 保存后,向对应仓库的"库存情况"里插入一条入库明细以及入库ID。
『退货出库单』:通过下拉菜单选择供货商和出货仓库后,可以直接通过列表选择要退货的货品;若是整单退货,在"整单退货"后选"是",再选择退货单号,退货商品明细将自动被提取出来。保存退货单后,相应仓库的对应商品数量就会减少。
出货管理
『出库单』操作要点:
- 收入仓库和客户名称通过下拉方式选择;
- 选择商品编码后,自动查询商品名称、规格、单位、单价(即移动平均价)、当前库存量;
- 数量必须大于零,且小于或等于当前库存量,否则系统会给予提示;
- 如果一行明细也没有输,不能保存;
- 保存后,系统会自动更新商品的当前库存量、当前库存金额、及发出仓库的库存量;
- 保存后,如果某种商品的出库后库存为0,则删除对应仓库"库存情况"中该入库ID的信息。
『客户退货单』的操作方法与『退货出库单』类似,有两种选择方式:直接通过列表方式选择,或整单退货。
库存管理
『货品捆绑』与『货品拆分』是一组相反的过程,也是按照商品先进先出的原则处理的。填写一张『货品捆绑』单,主表上的信息,除了"捆绑数量"是需要手工录入的外,其他信息都是通过列表选择和表间公式提取过来的。
保存该表单时,要完成的任务很多,主要是更新『商品表』和『库存情况』中相应商品的库存和总金额。详细的表间公式如下图所示:




统计报表
在统计报表模块可以进行『货品采购查询』、『货品出货排行』、『库存变动情况』和『营业分析』。
三、先进先出实现原理
商品的进出库采用先进先出的方法,大致解决思路如下:
- 建立"库存情况"模板,保存商品的入库明细;
- 整理好仓库信息后,进行仓库初始化——有几个仓库,就建立几张"库存情况"报表,一个仓库对应一个"库存情况"表。此时各仓库的库存情况明细表为空,明细信息不是靠手工录入的,而是通过填写"商品表"和"入库单"时插入进来的;
- 录入商品信息,插入明细信息到对应仓库的"库存情况"里;
- 录入入库单和出库单时,选择商品编号后,系统自动提取商品明细。入库单是从"商品表"里提数据的,而出库单是从"库存情况"里提数据的;
- 入库ID填充的是当前的系统日期时间。