实时进销存
如何统计出任意时刻的期初,期间,期末的进销存?
因为库存每天,每时每刻都在变化,而许多医院的药品都需要统计任意两个时点之间的进销存情况,例如2015-05-05 10:03:20至2015-09-05 10:03:20的期初、期间增加 、期间减少、期末的库存,该如何统计呢?
因为库存实时的都在变化,每天都在出库,入库,就连2015-05-05 10:03:20和2015-09-05 10:03:20两个时刻的库存数都测不准,更不要谈期间数据了,当然可以用最笨的办法,从最初的库存开始,一直推算到这两个时刻,但是如果软件开始使用的时间离2015年5月很远,例如2010年,五年的数据,一个个从2010年加减到2015年,将会耗费很长时间计算,甚至死机,这当然是不可行的。
目前我看到的可行的方法是,定义一个计划任务,每天将库存存放到一个表中,可以称为库存快照表,有了这个表再来计算期初和期末和期间数据就简单得多了。
一、 期初或期末数的计算
以上面为例,假设每天晚上23:00:00存放库存快照,存入yp_plan,那么如何计算药品A在2015-05-05 10:03:20和2015-09-05 10:03:20两个时刻的库存数,下面我给出具体步骤:
- 首先取出2015-05-04 23:00:00计划任务执行的库存信息表中A的
库存数,记为S_A
- 然后将2015-05-04 23:00:00至2015-05-05 10:03:20之间所有的出
库、入库的库存数S_ADD,S_REDUCE
- 最后得出2015-05-05 10:03:20的期末数S_B=S_A+S_ADD-S_REDUCE,
记2015-05-05 10:03:20时刻库存为S_START,同样可以求得2015-09-05 10:03:20的库存数,记2015-09-05 10:03:20时刻库存为S_END
这样就只需要计算几个小时的出入库数据就能算得各时刻的库存数。
二、 期间(期间增加和期间减少)数的计算
- 以上面为例,将2015-05-05 10:03:20年到2015-05-05 10:03:20的增加数算出,包括入库,退库,转入,盘盈等,只要是库存增加都可以计算在内,算得期间增加S_ADD_TOTAL
- 将2015-05-05 10:03:20年到2015-05-05 10:03:20的减少数算出,包括出库,调拨,转出,盘亏等,只要是库存减少都可以计算在内,算得期间减少S_REDUCE_TOTAL
三、 检查数据的正确性
可以用S_END=S_START+S_ADD_TOTAL-S_REDUCE_TOTAL来查看进销存的准确性,如果不准确说明系统有漏洞或者有出入库没有记账等问题。
董继超
2016年3月11日