iT邦幫忙

0

ERP 為何沒有 Rule Engine

資料來源:
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 大師

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

6
bizpro
iT邦大師 1 級 ‧ 2011-04-21 10:15:17

這是兩個層面的問題:

  1. 設計不良: 我設計是用全捕捉的方式: 有金額, 就有小數, 有小數, 就有進位問題, 不論是round off, round up, 或 round down, 也有運算問題, 先運算, 後進位, 先進位, 後運算, 這些都可以不需要rule engine來捕捉, 設計上就可以全捕捉了, 也沒那麼難.

  2. Rule Engine: rule engine其實就是script, ERP有沒有rule engine只是設計上有沒有加入script, 除了技術上的考量, 還有商業的考量, 就商業考量來看, 一是設計成本, 二是服務收入. 再者, 從資安的觀點, rule engine的管控要很嚴謹. 因為rule engine幾乎不在sandbox之內.

jboss有一個很好的rule engine: http://www.jboss.org/drools.

看更多先前的回應...收起先前的回應...
Albert iT邦高手 1 級 ‧ 2011-04-21 11:02:35 檢舉

高手
難怪鼎新都酥給你
大師你全會
大師也全寫
但是不讓客戶可以完全自行調配
真是高手
一是設計成本 :: 敢賣 300 萬 不捨 3萬設計費
二是服務收入 :: 小小 規則 不寫 想賺客戶 30 萬客製化收入

bizpro iT邦大師 1 級 ‧ 2011-04-21 11:07:27 檢舉

首先, Rule Engine很重要, 也很好, 我將要用drools.
Adempiere有自己的script來當rule engine, 是很好的作法. 但是, 像金額的四捨五入的處理不該用到rule engine的, 如您說的, 很不道德, 因此, 不該有客製化的收入.

Albert iT邦高手 1 級 ‧ 2011-04-21 11:21:22 檢舉

大師
[像金額的四捨五入的處理不該用到rule engine的] 大師說的很對
但是如果有未考慮到的時候
有 rule engine 也是一種解決方法

大師期待你的 drools

Skype: ADempiere/Compiere
技術轉移顧問
Albert
Rule Engine 技術轉移

賽門 iT邦超人 1 級 ‧ 2011-04-21 11:34:16 檢舉

bizpro提到:
金額的四捨五入的處理

這只要小三來處理就就行了....

Albert iT邦高手 1 級 ‧ 2011-04-21 12:33:27 檢舉

simon 大師

蒞臨指教

總裁 iT邦好手 1 級 ‧ 2011-04-21 13:44:04 檢舉

四捨五入的處理

這只要小三來處理就就行了....

這樣小三會被捨掉.....掰掰

Albert iT邦高手 1 級 ‧ 2011-04-21 13:55:00 檢舉

cdfu 大師

蒞臨指導

鐵殼心 iT邦高手 1 級 ‧ 2011-04-21 15:08:19 檢舉

cdfu提到:
這樣小三會被捨掉.....

小七還在就好...開心

Albert iT邦高手 1 級 ‧ 2011-04-21 15:22:22 檢舉

tecksin 大師

蒞臨指導

bizpro iT邦大師 1 級 ‧ 2011-04-22 11:58:22 檢舉

albertachen提到:
大師期待你的 drools

我並非要用在ERP裏, 而是其他的關鍵系統. ERP已是過度成熟的市場, 定見成見已根深蒂固. 很難改變的. 系統難改, 人更難改, 要花了一堆銷售成本, 一堆溝通成本, 這些成本都很難轉換成附加價值.

Adempiere應該要使用drools的. 應該要有人去整合.

Albert iT邦高手 1 級 ‧ 2011-04-23 13:46:38 檢舉

我們就是 在 Adempiere 實做 drools
歡迎指教

我要發表回答

立即登入回答