在erp系统中,一个完整的库存信息应该能提供给用户什么样的信息呢?我想一共有以下几点:
1,查看当前即时库存的库存信息,包括每个仓库每种物料的数量分别是多少(当然有可能物料还有区别状态批号等)。
2,每种物料在每个仓库中现在被预用了多少,还有多少可用(预用就是锁库,预用的部分是不能被新的单据所引用)。
3,能够快速的查询到每种物料的每个时段的库存数量,也就是历史库存
4,每种物料的进出情况,就是该物料是什么时候入库的,入库的源单与数量是多少。什么时候出库的,出库的源单与数量又是多少?
5,如果物料被预用了,那么该物料又是被那些单据预用了呢?
针对上面五个问题,我共创建了三个表来完成它们。
1,库存信息表
2,库存出入明细表
3,库存预用明细表
一,库存信息表库存信息表包含以下字段:
字段名 |
功能说明 |
仓位 |
|
物料 |
|
库存数量 |
|
预用数量 |
|
可用数量 |
该字段可以为计算字段,它的值=库存数量-预用数量 |
这个表中存储的是每个物料在每个仓库当前的库存信息,有了它,我们就可以实现上面问题1和2功能了。
为什么需要"可用数量"这个字段呢?因为库存信息表一般信息量是很大的,我们可以冗余该字段,以在读取库存可用数量时加快数据的读取时间。
二,库存出入明细表库存出入明细表包含以下字段:
字段名 |
功能说明 |
仓位 |
|
物料 |
|
出入标识 |
1代表入库,-1代表出库 |
起始数量 |
该数量为当前出入明细表操作库存前的库存数量,它可以用来计算结存数量 |
出入数量 |
|
结存数量 |
该字段可以为计算字段,它的值=起始数量+出入标识*出入数量 |
出入源单号 |
|
出入时间 |
|
这个表中存储的是每个物料在仓库中的出入明细,有了这个表,我们就可以实现上面问题3与4的功能了。
为什么需要"结存数量"这个字段呢?因为有了这个字段,再加上"出入时间"这个字段的信息,我们就可以快速的查询出历史的库存信息了。比如,我要知道历史时间2012-1-10,物料"A"在仓库"AC"中的库存数量,我们就可以在该表中检索时间<="2012-1-10" and 物料="A" and 仓库="AC"中最后一笔数据的结存数量就是了。
三,库存预用明细表库存预用明细表包含以下字段
字段名 |
功能说明 |
仓位 |
|
物料 |
|
出入数量 |
|
出入源单号 |
|
出入时间 |
|
这个表存储的是每个物料在仓库中被预用的单据明细,有了这个表,我们可以实现上面问题5的功能。
那么,这些表有什么的规则与联系呢?首先,我们要控制到系统中所有表单都不能直接操作"库存信息表",因为该表的值应该是由"库存出入明细表"与"库存预用明细表"中的结果反馈来的。
比如:
1,当"库存出入明细表"中新增一笔数据时,我们就要判断新增的这笔数据的"物料+仓库"信息有没有在"库存信息表"存在了,如果已经存在,就根据出入标识来增加或减少"库存信息表"中对应物料信息的库存数量,如果没有存在,就在"库存信息表"中新增一笔对应的数据。
2,当"库存预用明细表"中新增一笔数据的时候,我们就根据"库存预用明细表"中"物料+仓库"的信息来增加"库存信息表"中预用数量字段的值。当"库存预用明细表"中的数据被删除时(也可以在该表中增加一个字段来识标完成时),根据"库存预用明细表"中"物料+仓库"的信息来减少"库存信息表"中预用数量字段的值。
那么,什么时候往"库存出入明细表"中增加数据,什么时候往"库存预用明细表"增加数据呢?当有需要操作库存信息表的单据在新增时,往"库存预用明细表"中增加数据,当有需要操作库存信息表的单据在审核时,往"库存出入明细表"中增加数据,同时更新"库存预用明细表"中数据。
好了,以上只是本人对erp系统中库存表结构的个人看法,仅供参考。