資料來源:
http://www.study-area.org/phorum/index.php/topic,65429.0/prev_next,next.html#new
打算換ERP廠商了
有個程式上bug(系統本身問題),廠商不願意解決,兩手一攤說,
目前沒有人力進行此bug修改,真的是很無奈.(有簽維護合約)
大概說一下bug.
產品本身單價有金額,某些產品單價金額有小數點,價格計算方式有兩種,
一種是全部小數計算,總金額也會是有小數,另一種是全部整數計算.
第一種會讓總金額也是小數,但是台幣沒有小數,
會造成會計作帳和金額計算等出問題,必須人工校正.
第二種全部整數,但是他整數的計算方式,
是單一產品單價(可以有小數)X數量後四捨五入再進行加總,
而不是全部加總完後總價再進行四捨五入,
結果就是造成總金額有可能會有一兩塊錢的誤差...
軟體用好幾年,以前沒這問題是因為產品單價都用整數計算,
現在有需要用到小數的產品才發現此問題.
你少了一種 ::
第三種總計整數計算方式,
是單一產品單價(可以有小數)X數量 = 有小數金額
全部加總完後總價再進行四捨五入
import org.compiere.model.MOrder ;
import org.compiere.model.MOrderLine;
MOrder order = new MOrder(A_Ctx, A_PO.getC_Order_ID(),A_TrxName);
MOrderLine[] lines = order.getLines(true);
BigDecimal amount = Env.ZERO;
for (int i = 0; i < lines .length; i++)
{
MOrderLine line = lines [i];
amount = amount.add(line.getQty().multiply(line.getPrice()));
}
amount.divide(Env.ONE, BigDecimal.HALF_UP);
order.setAmount(amount);
order.save();
return "@OK@";
ERP 要有 Rule Engine
Oracle 買 PeopleSoft 花了好幾百億就是為了有 Rule Engine 的 ERP
Skype: ADempiere/Compiere
ERP Rule Engine 技術轉移顧問
Albert 大師
這是兩個層面的問題:
設計不良: 我設計是用全捕捉的方式: 有金額, 就有小數, 有小數, 就有進位問題, 不論是round off, round up, 或 round down, 也有運算問題, 先運算, 後進位, 先進位, 後運算, 這些都可以不需要rule engine來捕捉, 設計上就可以全捕捉了, 也沒那麼難.
Rule Engine: rule engine其實就是script, ERP有沒有rule engine只是設計上有沒有加入script, 除了技術上的考量, 還有商業的考量, 就商業考量來看, 一是設計成本, 二是服務收入. 再者, 從資安的觀點, rule engine的管控要很嚴謹. 因為rule engine幾乎不在sandbox之內.
jboss有一個很好的rule engine: http://www.jboss.org/drools.
高手
難怪鼎新都酥給你
大師你全會
大師也全寫
但是不讓客戶可以完全自行調配
真是高手
一是設計成本 :: 敢賣 300 萬 不捨 3萬設計費
二是服務收入 :: 小小 規則 不寫 想賺客戶 30 萬客製化收入
首先, Rule Engine很重要, 也很好, 我將要用drools.
Adempiere有自己的script來當rule engine, 是很好的作法. 但是, 像金額的四捨五入的處理不該用到rule engine的, 如您說的, 很不道德, 因此, 不該有客製化的收入.
大師
[像金額的四捨五入的處理不該用到rule engine的] 大師說的很對
但是如果有未考慮到的時候
有 rule engine 也是一種解決方法
大師期待你的 drools
Skype: ADempiere/Compiere
技術轉移顧問
Albert
Rule Engine 技術轉移
bizpro提到:
金額的四捨五入的處理
這只要小三來處理就就行了....
simon 大師
蒞臨指教
四捨五入的處理
這只要小三來處理就就行了....
這樣小三會被捨掉.....
cdfu 大師
蒞臨指導
cdfu提到:
這樣小三會被捨掉.....
小七還在就好...