我們的軟件采用先出先出算法,但在實(shí)際應(yīng)用中,碰到下面一個(gè)問題。入庫(kù)時(shí),客戶的入庫(kù)金額是按實(shí)際支付金額入庫(kù)的(這種情況很常見,付供應(yīng)商一筆整數(shù))比如:
某日購(gòu)進(jìn)一批礦泉水,數(shù)量9600瓶,采購(gòu)單價(jià)0.65元,共支付金額 6200元(實(shí)際支付金額),在我們的系統(tǒng)中,此筆業(yè)務(wù)會(huì)重算單價(jià),6200/9600=0.6458(4位小數(shù)),系統(tǒng)按9600、0.6458記錄入批次庫(kù)存。這樣就造成了實(shí)際支付金額與成本金額的差異:實(shí)際成本6200,批次成本金額9600*0.6458=6199.68,雖然只差幾角錢,但如果一張單采購(gòu)數(shù)量比較大的情況下,差別還是蠻大的,我們碰到過客戶最大一張單差別近千元的情況,月累計(jì)誤差可上萬元。現(xiàn)客戶要求一分錢都不能差,我們?cè)撊绾谓鉀Q這個(gè)問題。
因?yàn)閱蝺r(jià)的原因,這筆業(yè)務(wù)在出庫(kù)時(shí),最終的出庫(kù)成本也只有6199.68元,這樣就與入庫(kù)不平衡,客戶不允許這種情況的發(fā)生。
我的想法,批次庫(kù)存中除保留單價(jià)、數(shù)量外,還保存金額。系統(tǒng)建立一個(gè)批次庫(kù)存表,記錄每筆業(yè)務(wù)的入庫(kù)數(shù)量、入庫(kù)金額、入庫(kù)成本價(jià)、已出數(shù)量、已出金額,在商品出庫(kù)時(shí),如果出庫(kù)數(shù)量小于批次庫(kù)存結(jié)余數(shù)量,則按入庫(kù)成本價(jià)出庫(kù),如果此次出庫(kù)會(huì)將結(jié)余數(shù)量出完,則要考慮加上調(diào)整金額,保證這個(gè)批次的出庫(kù)總金額與入庫(kù)金額一致。例:
對(duì)應(yīng)剛才業(yè)務(wù),批次庫(kù)存為:結(jié)余數(shù)量9600 成本價(jià)0.6458 入庫(kù)金額6200 批次號(hào)1111
第一次出庫(kù):數(shù)量4800 出庫(kù)成本價(jià)0.6458 出庫(kù)金額 3099.84,此筆業(yè)務(wù)完成后,1111批次庫(kù)存為:結(jié)余數(shù)量4800 成本價(jià)0.6458 入庫(kù)金額6200 結(jié)余金額 6200-3099.84=3100.16
第二次出庫(kù):數(shù)量4800 出庫(kù)成本價(jià)0.6459 出庫(kù)金額3100.16(注意此處,因?yàn)榇斯P業(yè)務(wù)發(fā)生后,1111批次的庫(kù)存將出完,所以不能使用0.6458出庫(kù),否則會(huì)造成差異0.6458*4800+0.6458*4800=6199.68,而實(shí)際入庫(kù)金額為6200,所以此筆出庫(kù)金額應(yīng)為6200-0.6458*4800=3100.16)
我認(rèn)為采用這樣的解決方法,能保證數(shù)據(jù)的平衡,不知道在具體業(yè)務(wù)中是否可行,向各位請(qǐng)教,謝謝。
解決這個(gè)問題應(yīng)該沒有那么復(fù)雜吧?!
導(dǎo)致你這個(gè)成本問題的原因有兩個(gè):1、0.65*9600=6240,但是實(shí)際結(jié)算金額卻是6200,其中的40元被你的批量采購(gòu)給折掉了;2、就算是折后結(jié)算金額為6200,成本為0.64583333333,而你系統(tǒng)的精度為萬分位級(jí)(小數(shù)點(diǎn)后4為)成了0.6458,使得差額較大。
所以,就有了2個(gè)解決辦法:1、采購(gòu)數(shù)據(jù)分解:按照0.65*9600=6240的6240元作為入庫(kù)金額,而折下的40元作為業(yè)外收入劃入收入,這樣成本比較工整;2、加大成本的核算精度,當(dāng)然這樣會(huì)使帶給服務(wù)器更多的負(fù)擔(dān)。
個(gè)人見解,請(qǐng)前輩們指正!