[摘 要]會計信息系統利用動態會計平臺來實現記賬憑證的自動生成,以實現財務業務一體化的目標。本文將ECA規則引入到動態會計平臺的構建中,探討了ECA規則在動態會計平臺中的應用,建立了基于ECA規則的動態會計平臺的模型;分析了ECA規則表示賬務處理規則的方法,并結合存貨入庫賬務處理的實例說明其實現的過程。
[關鍵詞]ECA規則;動態會計平臺;自動生成
[中圖分類號]F232
[文獻標識碼]A
[文章編號]1673-0194(2006)12-0026-03
O引言
主動數據庫中的ECA規則由于能靈活而有效地描述系統行為的一般規律。目前已廣泛地應用于基于規則的網絡管理(PBNM)、電子商務、股票交易、采購活動、工作流建模、分布式環境下的應用和模糊知識表示等眾多領域。
為了實現財務業務一體化的目標,提供實時信息,動態會計平臺已在會計信息系統的開發設計中逐步被使用。利用ECA規則的主動反應特性所構建的動態會計平臺,能夠對經濟業務事件進行主動識別,根據相關會計規則調用不同類型的記賬憑證模板,并將相關表單中的數據讀入該記賬憑證模板,完成記賬憑證的自動生成。
1 ECA規則
ECA規則是指當一個事件(Event)發生并且滿足一定的條件(Condition)時就執行一定的動作fAction),稱為“事件一條件一動作”(Event-Condition-Action)規則,簡稱ECA規則。其表示形式如下:
RULE<規則名>[(<參數>,…)]
WHEN<事件表達式>
IF<條件1>THEN<動作1>
IF<條件n>THEN<動作n>;(n≥1)
END RULE<規則名>
其中,<條件i>(i=1,2,…,n)是某種邏輯中任意的合法的邏輯表達式。在一般情況下,條件表達式可以是規則語言中的任何邏輯表達式,可以包含函數或過程調用,還可以是更復雜的表達式并且可以包括對數據庫的查詢,一般用來判斷輸入的數據值、對象的內部狀態或他們和其他對象的關系等。
<動作i>(i:1,2,…,n)可以是系統預先定義的一些標準動作,也可以是用戶定義的一個動作或動作序列。或是用某種語言編寫的一個過程,動作可以是引發任一事件(包括規則本身中所包含的事件1的一個命令,也可以是引發執行某一指定的規則的命令。規則名是全局名,使規則名在整個系統內是唯一的標識規則。
上述事件驅動的“事件一條件一動作”規則的語義是:“一旦<事件表達式>所表示的事件發生,計算機就主動觸發執行其后的IF-THEN規則。即如果<條件l>為真,則執行其后的<動作1>,并且接著逐個檢查下一個IF-THEN規則,直至執行完為止。”
在一個主動數據庫中,一方面包含了稱為“被動數據”的傳統數據庫,另一方面包含了稱為“規則庫”的一個能根據事件的發生主動激活執行的知識庫。這個規則庫受系統中一個“事件監視器”的監視控制。用戶可以通過設置(或編制)各種不同的事件驅動的規則庫,以一種統一的機制來實現多種主動處理功能,滿足各種客觀需求。
2動態會計平臺
動態會計平臺是根據事先定義好的會計描述,包括入賬科目、影響因素、科目分類對照表和憑證模板的定義,對各系統的原始單據與業務處理自動生成實時憑證,并按照用戶的設置將實時憑證生成記賬憑證,傳到總賬系統。動態會計平臺由事件接收器、各類會計憑證模板、憑證生成器和各類實時會計憑證組成。其結構如圖1所示。
事件接收器是動態會計平臺的開始部件,它嵌入在各子系統的業務模塊中,用于接收事件信息。當一項經濟業務(事件:event)發生時,事件接收器負責對信息進行識別并驅動會計動態平臺中的相應規則。
會計憑證模板是嚴格按照各種報告規則要求而設立的各經濟業務所對應的憑證結構的模板,可以依據使用者的不同要求而有多種設置方式,既可以是財務會計憑證模板。也可以是管理會計憑證模板。計算機將結果保存在動態會計平臺的會計憑證模板文件中,供生成實時會計憑證使用。憑證生成器是根據經濟業務事件的信息和會計憑證模板,自動生成實時憑證。所生成的實時憑證可以存放在臨時憑證文件中,以便于會計人員進行審核和記賬處理。
實時憑證是登記賬簿和生成報表的依據,它最突出的特點是實時性和強制性,即在一項經濟業務發生的當時就可產生正確的實時憑證;該實時憑證是由計算機自動生成的,整個過程中沒有任何人工干預。
3基于ECA規則的動態會計平臺
基于ECA規則的動態會計平臺是以ECA規則為基礎構建的能夠對業務事件進行主動反應并自動生成相應記賬憑證的會計平臺。該平臺可以監視、接受系統外部或內部傳遞來的業務信息,并由這些信息觸發執行生成記賬憑證的動作。該動作的執行是按照事先定義的ECA規則執行的。ECA規則描述了會計處理過程,并存儲在規則庫中。當經濟業務發生時,系統對接受到的事件信息進行識別,搜索相關規則,根據規則調用記賬憑證模板,讀取、添加數據到記賬憑證模板并輸出,實現由業務單據到記賬憑證的自動生成。其結構如圖2所示。
基于ECA規則的動態會計平臺中。事件是與會計記錄相關的經濟業務事件。這些事件部分來自于動態會計平臺與外部的接口(如人機交互接口);部分來自于會計信息系統中的其他模塊(如工資、固定資產模塊)。當發生與會計記錄相關的數據錄入時,系統將以事件的形式通知動態會計平臺,所有進入動態會計平臺的事件都是由事件接收器接受、甄別的。
ECA規則中的條件是指由經濟業務事件的原始數據記錄(主要是各類原始憑證)向記賬憑證轉換的會計處理規則的邏輯表達式。例如采購發票所記錄的物資采購方式、結算方式。將這些業務信息加以歸類、總結并用邏輯表達式予以表示,作為對經濟業務事件屬性判定的條件。
ECA規則中的動作是指根據事件和條件,從記賬憑證模板庫中調用與之對應的憑證模板,對其添加數據,生成正確的記賬憑證同時將其輸出的過程。
動態會計平臺中的事件監視器在發現某一業務事件信息時,觸發規則處理機,對比事件數據庫中的事件,并從規則庫中提取相應規則,根據該規則調用事件處理程序進行即時處理,從而自動生成記賬憑證。在動態會計平臺的構建中,最關鍵的是規則庫的建立,即如何利用ECA規則表示出業務事件的會計處理流程,這是實現記賬憑證自動生成的基礎。
4實例
以工業企業的存貨(設為原材料)入庫的賬務處理為例來說明基于ECA規則的動態會計平臺的實現過程。設所有分錄均已按相應憑證格式存儲于記賬憑證模板庫中。
設倉庫的收貨記錄數目為S0采購發票列示的存貨采購數目為S0,存貨的計劃價格為P0,實際價格為P1,增稅率為T,1211為原材料科目代碼,1202為物資采購科目代碼。
存貨入庫時的入庫事件可分為短缺和非短缺兩類子事件,將其作為ECA規則的事件,并編碼:110—無短缺(S0=S1)、111——短缺(S0>S1);將P0與P1間的差異作為ECA規則的條件,并編碼:00—P0=P1、01——P0
1(超支)、02—P0>P1(節約)。
存貨入庫時,按入庫單上的實收存貨數量和計劃成本確認存貨成本,對于超支或節約的部分同時結轉差異。針對不同的情況編制的分錄也不同。主要有:
正常入庫,即S0=S1且P0=P1,會計分錄如下(編碼為11000):
借:原材料——XX材料P0×S1
貸:物資采購——XX材料P0×S1
成本超支時,即S0=S1且P1>P0,分錄如下(編碼為11001):
借:材料成本差異——XX材料 (P1-P0)×S,
貸:物資采購——XX材料
(P1-P0)×S,
成本節約時,即S0=S1且P1
0,分錄如下(編碼為11002):
借:物資采購——XX材料
(P0-P1)×S,
貸:材料成本差異——XX材料
(P0-P1)×S,
發生合理損耗以外的短缺時,即S0S1且P0=P1,分錄如下(編碼為11100):
借:待處理財產損益——待處理流動資產損益P0x(S1-S0)
貸:應交稅金——應交增值稅(進項稅額轉出)P0×(S1-S0)×T
物資采購——XX材料P0×(S1-S0)×(1+T)
由上述分析可以得出存貨入庫記賬憑證的事件(Event)、條件(Condition)和動作(Action)之間的對應關系如下表所示:
Event一無短缺和短缺子事件;Condition——計劃價格與實際價格間的關系;Action——選擇相應記賬模板。將數據讀入記賬憑證模板,并輸出該記賬憑證。
存貨入庫記賬憑證自動生成的ECA規則可以表示為:
ON S0=S0IF P0=P1 THEN從記賬憑證模板庫中調用11000模板,將入庫單中的金額數(S1×P1)分別讀入借方和貸方
IF P0
1THEN從記賬憑證模板庫中調用11001模板,從入庫單中取P0、P1和S0,計算出(P1-P0)×S0,并將結果讀入借方和貸方
ELSE THEN從記賬憑證模板庫中調用11002模板,從入庫單中取P0、P1和S0,計算出(P0-P1)×S0,并將結果讀入借方和貸方
ON S0S1THEN將入庫單中的計劃單價與溢缺數的乘積,即P
ECA規則程序如下:
1.相關類
Ilnv=class(Obiect)
Update fDebId:int;CreId:int;DebSum:float;CreSum:float);
…
end;
2.創建事件UpdateIInvEvent
Create Event UpdatelnvVouEvent After Ilnv,Update
3.創建規則UpdatelnvVouRule
CreateRuleUpdateInvVouRule (Sender:ResourcePointer;DebId:int;CreId:int;DebSum:string;CreSum:string)
On UpdateInvVouEvent
Mode:Immediate
Condition:
function idno_condition fSender:ResourcePointer;DebId:int;CreId:int;DebSum:string;CreSum:string)
Begin
…
result:=(SO=S1)and(PO=P1)
end;
Act'procedureidno_action(Sender:ResourcePointer;Debld:int;Creld:int;DebSum:string;CreSum:strin曲
Begin
Sender,Update(121 1;1202;P0xSl;POxSl);
end;
Modify:Always
系統執行過程:當用戶執行Update方法后,產生UpdateIInvEvent事件,接著觸發規則UpdateInvVou—Rule,對條件進行判斷,若條件為真,則執行活動部分,更新記賬憑證的內容。
5結束語
ECA規則的應用使得動態會計平臺的各程序間可以沒有直接相互作用,所有的相互作用由規則的激活產生;對會計處理應用程序行為的修改,可以修改會計處理規則而不必修改程序:應用程序成為非常簡單的服務,高層邏輯被編碼在規則中而不是在應用程序中,這使得應用程序更加模塊化,更易改寫。因而提高了動態會計平臺的靈活性和即時響應能力。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。