天天看點

實時進銷存實時進銷存

如何統計出任意時刻的期初,期間,期末的進銷存?

因為庫存每天,每時每刻都在變化,而許多醫院的藥品都需要統計任意兩個時點之間的進銷存情況,例如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日

繼續閱讀