1. 背景
沈陽XX商場推行O2O營銷模式,資訊化系統包括:線下零售系統、線上電商系統、網上支付系統,财務核算系統,為了實作線上線下系統互動、财務核算一體化,需要對各系統進行資料內建、系統對接。由于涉及的內建業務點較多、而且相對複雜,同時為了滿足後續業務方面靈活多變銷售政策,引入統一內建平台AEAI ESB來做為企業資訊化內建的“龍骨”,實作各系統的業務串聯。
本文主要對線下零售系統(長益商友)跟财務财務系統(金蝶K3)的憑證對接技術實作進行介紹,這個內建點的主要内容是通過AEAI ESB将長益的商友系統中業務單據以憑證方式導入金蝶K3财務軟體。
2. 名詞解釋
憑證:财務系統中财務核算單據。憑證包括憑證頭、憑證分錄、輔助核算。憑證頭跟憑證分錄是一對多的關系,憑證分錄跟輔助核算也是一對多的關系。憑證分錄關聯會計科目,會計科目是樹形結構的,憑證分錄關聯的會計科目是科目體系中葉子節點。會計科目對應不同的核算項目類型,憑證分錄中具體有哪些輔助核算是由憑證分錄關聯的會計科目決定的。通常核算項目類型包括客戶、供應商、部門、人員、商品/産品、其他收入項目等。
憑證頭:憑證主表,一般有憑證号、記賬人、制單人、審批人、單據類型、等、業務日期、是否過賬、貸方金額總計、借方金額總計等字段。
憑證分錄:憑證從表,一般有摘要、科目内碼、原币金額、匯率、現金流量、餘額方向等字段。
會計科目:按照不同經濟業務的經濟特征分門别類定義的樹形結構。
輔助核算:是針對會計科目對憑證分錄的财務處理方式,一般通過核算項目實作。
核算項目:财務系統涉及的基礎資料專有名詞,一般包括客戶、部門、供應商、品牌、其他收入項目等。
3. 業務分析
3.1. 目标系統
對接過程中金蝶K3财務系統涉及到以下内容,對應表資料字典參見附件中的“憑證表資料字典.xls”。對憑證涉及的基礎資料(核算項目),金蝶K3财務供應提供中間表和存儲過程,通過AEAI ESB把憑證涉及的基礎資料導入至中間件表,然後再調用對應的存儲過程把中間表中的資料轉存至實際核算項目資料表中,相關的存儲過程和中間件表參見附件。
憑證表(t_Voucher):憑證頭,記錄不同類型憑證,通過主鍵關聯分錄表
分錄表(t_VoucherEntry):記錄每個類型憑證下借貸資料,通過FDetailID(核算項目編碼)關聯輔助核算橫表
輔助核算橫表(t_ItemDetail):記錄每條分錄下挂的輔助核算個數和挂哪些輔助核算
輔助核算縱表(t_ItemDetailV):可以認為跟t_itemDtail是同構的。
核算項目類别表(t_itemClass):核算項目類别定義,沒有直接用到,編碼定義(沒有直接用到)。
核算項目表(t_item):核算項目定義表,核算項目均導入此表(沒有直接用到)。
3.2. 來源系統
商友系統按照不同類型憑證提供相對應的視圖,每類視圖包括以下基本屬性:日期、金額、核算項目編碼、核算項目名稱。
4. 實作思路
1. ESB每天(24:00)定時讀取ERP提供的視圖,查詢财務憑證相關資料。
2. 分析查詢資料,抽取财務分錄相關聯的核算項目。
3. 将憑證頭資訊、分錄、關聯表資訊同步至K3資料庫。
4. ESB每天(03:00)定時讀取ERP提供視圖,部門與供應商導入K3資料庫
5. 內建設計
5.1. 內建架構
內建架構圖如下:

1.客戶提供測試帳套、憑證導入模闆,在功能聯測過程中協作配合聯調
2.K3提供資料庫的資料字典,存儲過程
3.長益提供ERP财務憑證相關資料(視圖)
4.ESB負責查詢視圖進行資料封裝導入至K3财務系統
5.2. 轉換分析
在ESB封裝資料前,需要通過K3資料字典詳細了解涉及到的表的每一個字段意義,這個字段是需要從商友提供的視圖擷取,或者需要查詢K3資料庫或得字段值,還是需要ESB根據财務提供的模闆進行封裝處理等。例如:憑證表的憑證内碼、會計年度,分錄表的分錄号,輔助核算橫表的核算項目内碼等都需要通過查詢K3資料庫某個表擷取值。這一個階段的需求了解對後續的開發以及憑證能否在K3系統正确顯示将起到重要作用。
5.3. 功能設計
下面介紹主要的功能設計流程:
5.3.1. 定時流程
5.3.1.1. 流程圖
元件說明
u TimerRequest:設定定時,設定每天00:05
u 封裝入參:封裝查詢流程入參資料
u 調用主流程:調用主流程,傳入資料參數
5.3.2. 查詢子流程
流程圖
元件說明
u 線上線下分支:判斷查詢資料來源,線上/線上
u 查詢線下視圖:查詢線下資料
u 查詢線上視圖:查詢線上資料
u 合并路由:配合分支路由
u 查詢收款方式編碼表:由于不同的收款方式要對應不同的科目,通過此編碼表确認收款方式對應哪個科目
u 資料轉換:将從長益擷取的資料進行封裝處理,提取輔助核算
u 封裝日志:封裝執行日志資訊
u 更新日志:更新執行日志資訊
注意:K3财務分錄表存在科目代碼、對方科目代碼屬性,若憑證一借一貸,借方的對方科目代碼就是貸方的科目代碼;若多借多貸會存在對方科目代碼具體指代哪一個不确定。
由于分錄表中還有一個借貸屬性,區分此分錄是借還是貸,針對以上多借多貸對方科目指代問題,隻需要辨別清楚此分錄是借還是貸,入借方的對方科目代碼可以随意指代一個貸方科目代碼即可。
5.3.3. 基礎資料同步流程
流程圖
元件說明
u 判斷資料是否為空:判斷輔助核算資料是否為空
u 分支路由:判斷資料是否為空
u 周遊輔助核算:周遊資料,按照不同的核算項目進行分類
u 部門同步子流程:調用同步部門基礎資料子流程
u 客戶同步子流程:調用同步客戶基礎資料子流程
u 品牌同步子流程:調用同步品牌基礎資料子流程
u 供應商同步子流程:調用同步供應商基礎資料子流程
u 其他業務收入同步子流程:調用同步其他業務收入基礎資料子流程
u 合并路由:配合分支路由使用
5.3.4. 基礎資料同步子流程
流程圖
元件說明
u 接收資料:判斷核算項目是否為空
u 分支判斷:判斷資料是否為空
u 循環合并:配合循環分支路由使用
u 循環内容:資料處理,或得核算項目
u 線上線下分支路由:判斷是線上資料還是線下資料
u 調用判斷存儲過程:判斷該核算項目在K3庫中是否存在,通過核算項目編碼、名稱、核算項目類型判斷,分三種情況:
該核算項目編碼不存在,對應資料存儲過程做插入操作
該核算項目編碼存在,名稱不同,對應資料存儲過程做更新操作
該核算項目編碼存在,名稱相同,不需要做基礎資料同步操作
u 分支判斷:判斷判斷存儲過程傳回值
u 插入臨時表:将核算項目基礎資料插入臨時表
u 調用存儲過程:基礎資料同步存儲過程查詢臨時表将資料導入K3庫
u 線上線下合并路由:配合分支路由使用
u 循環分支:循環或得的基礎資料
u 分支合并配合分支路由使用
5.3.5. 部門定時同步子流程
流程圖
元件說明
u 查詢部門視圖:查詢部門基礎資料,包括部門代碼、部門名稱
u 查詢臨時表:查詢部門臨時表,此表為了判斷資料源發生更改或新增的資料
u 資料轉換:視圖查詢出的資料與臨時表查詢出來的資料進行比對,或得做修改和新增的資料,去除沒有變化資料
u 調用基礎資料同步流程:調用基礎資料同步流程
u 更新臨時表:更新部門臨時表
部門在商友系統錄入後,由于仍未産生資料部門未導入财務系統,而此部門又到财務交錢會查詢不到此部門,此流程的目的便是為了解決以上狀況的發生。
供應商與部門一樣都需要定時傳送至K3财務,與部門流程一緻,這裡就不做具體說明,參考部門定時同步子流程即可。
5.3.6. 憑證資料轉換流程
流程圖
元件說明
u 判斷查詢資料是否為空:判斷是否查詢到資料
u 分支路由:判斷資料是否為空
u 資料轉換:判斷輔助核算資料是否為空
u 封裝擷取主鍵SQL:封裝擷取表主鍵最大值SQL
u 封裝查詢K3t_item表查詢參數:封裝擷取核算項目FItemID
u 查詢K3t_item表:查詢核算項目FItemID
u 擷取表主鍵最大值:調用擷取擷取表主鍵最大值流程
u 封裝成輔助核算橫表:将資料封裝成K3财務輔助核算橫表格式
u 封裝成輔助核算縱表:将資料封裝成K3财務輔助核算縱表格式
u 封裝成K3分錄表:将資料封裝成K3财務分錄表格式
u 封裝成K3憑證表:将資料封裝成K3财務憑證表格式
u 封裝日志:封裝日志出參
u 更新日志:更新執行日志資訊
u 導入K3庫:調用導入K3庫流程
u 合并路由:配合分支路由使用
在财務對接中,此流程起到至關重要的作用,将從視圖查詢的資料封裝成K3資料庫表的格式導入K3資料庫。前期的了解表結構以及每一個字段的含義在此起到了重要性,每一個字段設定哪些預設值、或者從視圖擷取、查詢K3庫等。
5.3.7. 導入K3庫
流程圖
元件說明
u 線上線下;判斷資料來源線上線下
u 插入輔助核算橫表:插入K3輔助核算橫表
u 插入輔助核算縱表:插入K3輔助核算縱表
u 插入分錄表:插入K3分錄表
u 插入憑證表:插入K3憑證表
u 封裝日志:設定日志資訊
u 更新日志:更新資料庫log日志