孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

实时进销存

如何统计出任意时刻的期初,期间,期末的进销存?

因为库存每天,每时每刻都在变化,而许多医院的药品都需要统计任意两个时点之间的进销存情况,例如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两个时刻的库存数,下面我给出具体步骤:

  1. 首先取出2015-05-04 23:00:00计划任务执行的库存信息表中A的

库存数,记为S_A

  1. 然后将2015-05-04 23:00:00至2015-05-05 10:03:20之间所有的出

库、入库的库存数S_ADD,S_REDUCE

  1. 最后得出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

这样就只需要计算几个小时的出入库数据就能算得各时刻的库存数。

二、       期间(期间增加和期间减少)数的计算

  1. 以上面为例,将2015-05-05 10:03:20年到2015-05-05 10:03:20的增加数算出,包括入库,退库,转入,盘盈等,只要是库存增加都可以计算在内,算得期间增加S_ADD_TOTAL
  2. 将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日

 

posted on 2016-03-11 10:47  孤独的猫  阅读(1706)  评论(0编辑  收藏  举报