BankCore記賬流程以及記賬核心調用方法

一、系統中的帳務組織如下所述:
1、分戶帳類(即各種主文件,包括儲蓄活期主文件、儲蓄定期主文件、對公活期主文件、對公定期主文件、貸款主文件、內部長主文件等)
2、登記簿類(如現金登記簿、同城票交登記簿、開銷戶登記簿等)
3、明細帳類(對應每一種主文件有相應的明細帳、明細帳歷史)
4、總帳類文件
5、傳票類(傳票、歷史)
6、參數表、系統控制類(包括櫃員表、機構表、會計分錄表、交易日期表、假日表等)
其中前三類爲明細覈算使用,總帳類爲綜合覈算使用,其餘爲計算機帳務處理所使用。二、系統中的帳務處理按照時間分爲兩大類,一類是日間的帳務處理,另一類是日終的帳務批處理。
從帳務的角度來說,日間的帳務處理完成以下工作:
1、根據系統的輸入信息系統和參數表(如會計分錄表)自動產生該筆業務的傳票,登記傳票流水文件和日誌文件;
2、根據帳號自動更新相應分戶帳主文件的餘額、積數(系統中採用動戶累積數的方式計算積數)、上次交易日期等;
3、根據具體的業務登記相應的登記簿(如果是開戶/銷戶交易則登記開銷戶登記簿、如果是同城票據交換交易則登記同城票交登記簿、如果是現金交易則登記現金登記簿、如果是無折交易則更改未登折文件等);
4、登記相應的分戶帳主文件的明細文件;
5、上述各步驟都可能會用到參數表、系統控制類表;
日終批處理完成如下工作:
1、各類覈算報表的生成,包括餘額表、科目日結單、會計日報等;
2、各種自動業務的處理,包括貸款自動轉逾期,定期存款的自動續存,協定戶的轉存,凍結到期自動解凍,掛失到期自動解掛,按揭自動扣帳等;
3、批量入帳,包括各種批量代理業務的自動入帳;
4、更新總帳,根據當天的傳票文件生成科目日結單,根據科目日結單更新當日的總帳;
5、批量結息,包括季末的對公結息,每年度的儲蓄結息,及外幣結息等;
6、初始化相關數據庫表,將相應的數據庫表中的內容移入歷史表中,每天將傳票文件的內容轉入傳票歷史文件等;
7、損益結轉、利潤分配、不動戶處理,即年終決算的帳務處理;
8、總分覈對,根據各種分戶帳主文件計算科目餘額,與總帳文件中對應的科目進行覈對,並生成相應的總分覈對報告單;
9、計提,各種利息、費用的計提等;
對於對帳單的打印、當日抹帳的處理,系統採用如下方式:
1、各種明細帳分爲兩部分,即當日明細帳和歷史明細帳,他們的表結構相同;
2、日間處理時,系統自動記錄相應的當日明細帳,在日終處理時,將當日抹帳交易有關的明細文件的餘額進行整理後記入歷史明細帳,同時清空當日明細帳。
3、歷史查詢交易和對帳單的打印要對當日明細的餘額進行整理,並把當日明細和歷史明細拼接。
4、抹帳在傳票文件中反映。在歷史明細帳中不再反映。
5、生成的對帳單不反映相應的抹帳交易。
三、帳號參數化
一般來說帳號由機構號、幣別代號、業務代號、帳號序號、校驗位等組成。系統通過截取帳號的內容來得到這些信息。在系統中,帳號被視爲無意義的字符串,可以由任何可視的字符組成。帳號僅作爲帳戶的索引存在。在系統中,帳號成爲一個對象,系統設置帳號解析表,儲存帳號對象的各種屬性。所有針對帳戶的處理皆通過帳號核心獲得帳號的各種屬性。通過帳號核心,系統實現了賬號無關性。即在新系統中,仍可沿用原舊系統的帳號而無任何隱患。
記帳核心是系統進行帳務覈算的核心。通過設立記賬核心的大大方便了交易的編寫。編程人員基本不需要了解系統帳務文件的設置,不需要因爲交易可能會產生的多組會計分錄而編寫大量代碼,減少對交易編寫人員在會計知識方面的要求,減少了程序出錯的機會。同時也大大減少維護的工作量,交易可能會產生的會計分錄清晰明瞭,交易程序更易讀懂,能簡單的通過修改會計分錄表來改變系統的記帳形式和記帳方法。
記帳核心提供兩種方式的記帳功能:手工方式和智能方式。手工方式指傳統的記帳方式。記帳核心按照交易傳入的參數讀取會計分錄表,按照指定的方式記錄會計分錄。智能方式指記帳核心在處理組合交易時,能按照一定的邏輯自動組織一部分分錄。記帳核心能保證會計分錄的正確性。確保現轉相符、借貸相等,避免出現多借多貸,科目虛發生等情況發生。

以下爲記賬核心藉口:

typedef struct {
char sbno[SBNO_LEN+1]; //機構號
char utno[UTNO_LEN+1]; //
char cyno[CYNO_LEN+1]; //貨幣代碼
char itcd[ITCD_LEN+1];//業務代碼
char acsq[ACSQ_LEN+1 ];//
} STRU_ACST;
typedef struct {
char acno[ACNO_LEN+1];//賬號
STRU_ACST acst;
} STRU_ACIF;
typedef struct
{
/*=============================
= 輸入接口 =
=============================*/
STRU_ACIF acif;
STRU_ACIF taif;
STRU_ACST acs1;
STRU_ACST acs2;
char mnsc[MNSC_LEN+1]; //資金來源
char mndn[MNDN_LEN+1]; //資金去向
char trkd[TRKD_LEN+1]; //交易種類
char smcd[SMCD_LEN+1]; //摘要代碼
char acoc[ACOC_LEN+1];
char cuac[CUAC_LEN+1];
char caty[CATY_LEN+1];
char sbsq[SBSQ_LEN+1];
char ccno[CCNO_LEN+1];
char acoc1[ACOC_LEN+1];
char cuac1[CUAC_LEN+1];
char caty1[CATY_LEN+1];
char sbsq1[SBSQ_LEN+1]; //
char ccno1[CCNO_LEN+1];
char evno[EVNO_LEN+1];//借據號
char cicd[CICD_LEN+1];//
double dpcs;
double wdcs;
double exrt[10];
double tram[10];
/*=============================
= 輸出接口 =
=============================*/
char acno[30][ACNO_LEN+1];//賬號
char acnm[30][ACNM_LEN+1];//
char catr[30][CATR_LEN+1]; //現轉標誌
char item[30][ITEM_LEN+1];
char blde[30][BLDE_LEN+1];
char sbno[30][SBNO_LEN+1];//機構號
char utno[30][UTNO_LEN+1];
char cyno[30][CYNO_LEN+1];//貨幣代碼
char itcd[30][ITCD_LEN+1];//業務代碼
char acsq[30][ACSQ_LEN+1];//
double tram_o[30];
double acbl[30];
/*=============================
= 輸入/輸出接口 =
=============================*/
char dasq[DASQ_LEN+1];
} STRU_SCHMAIN;

三、會計分錄的編寫

一、編寫人員確定自己的交易所要實現的會計記帳覈算辦法;
二、編寫會計分錄表GDACA
會計分錄表是記帳核心的調度參數表,它直接控制了記帳核心如何從記帳程序接口中得到所需的記帳帳號、此帳號的借貸方向、記帳金額等信息。每一條會計分錄都相應的對應了一條將被產生的傳票。
在會計分錄表中有三個關鍵字段:交易類型TRKD、資金來源MNSC、資金去向MNDN。這三個字段的填寫完全取決於交易的記帳方式和交易類型。他們的關係如下:
記帳方式      應填寫字段
===================
手工記帳方式   交易類型
智能方式交易   資金去向/資金來源
交易類型TRKD、資金來源MNSC、資金去向MNDN三個字段爲非空字段,無需填寫時填上” ”。交易類型TRKD填寫時,均爲手工記帳處理,不會進行自動記帳方式所進行的特殊處理,比如自動清算等等。
資金來源MNSC一般在存款類交易使用;
資金去向MNDN一般在取款類交易使用;
資金來源MNSC/資金去向MNDN一般在下面取值時有意義,否則作爲確定一筆智能分錄用:
0 現金
其它帳號
待銷帳帳
9 組合交易
在每一條會計分錄中都需要通過某種方式告訴記帳核心當前這筆會計分錄應該如何得一個帳號。爲此,我們在會計分錄表中設立了幾個字段:帳號來源、機構號來源、幣種來源、業務代號來源、帳號序號來源。通過這些字段我們就可以指定如何得到一個帳號。
帳號來源ACSC參數值含義列表如下: (p acsc)
參數值 帳號來源
========================
‘A’ ACIF(可以只填寫其中的ACNO)
‘B’ TAIF(可一隻填寫其中的ACNO)
‘C’ ##DASQ(待銷帳對應的帳號無需填寫)
‘D’ 拼帳號
當帳號來源爲’D’時,機構號來源SBSC、幣種來源CYSC、業務代號IFSC來源、帳號序號SQSC來源纔有效,而且必須填值。
機構號來源SBSC參數值含義列表如下: (p sbsc)
參數值 機構號來源
========================
‘A’ SAACIF
‘B’ SATAIF
‘C’ SAACS1
‘D’ SAACS2
‘E’ ##SBNO , ##UTNO

幣種來源CYSC參數值含義列表如下: (p cysc)
參數值 幣種來源
========================
‘A’ SAACIF
‘B’ SATAIF
‘C’ SAACS1
‘D’ SAACS2
業務代號IFSC來源含義列表如下: (p ifsc)
參數值 業務代號來源
========================
‘A’ SAACIF
‘B’ SATAIF
‘C’ SAACS1
‘D’ SAACS2
‘E’ SAACS1 中的業務代號對應的收入業務代號
‘F’ SAACS1 中的業務代號對應的支出業務代號
帳號序號SQSC來源參數值含義列表如下: (p sqsc)
參數值 帳號序號來源
========================
‘A’ SAACIF
‘B’ SATAIF
‘C’ SAACS1
‘D’ SAACS2
‘E’ SAACS1 中的業務代號對應的收入帳號序號
‘F’ SAACS1 中的業務代號對應的支出帳號序號
‘G’ ##USID 對應的櫃員尾箱號作帳號序號後四位
‘H’ SACCNO 的前兩位 + ##USID 對應的尾箱號
‘I’ ##UTNO 作爲帳號序號的後三位,前三位爲零    ‘J’ SAACS1 中的帳務機構號作爲帳號序號的後三位,其餘零
————————————————————————————————————
GDACA TABLENAME 會計分錄表
TRCD 交易碼 N
TRKD 交易種類 N
MNSC 資金來源 N
MNDN 資金去向 N
VINO 傳票組內序號 N
ACSC 帳號來源 N
SBSC 機構號來源
CYSC 幣種來源
IFSC 業務代號來源
SQSC 序號來源
AISC 帳號相關信息來源
AMCD 借貸標記
AMFO 金額公式
FCFG 結售匯標誌
EXSC 牌價來源
WKRD 工作權重
BKFG 登記簿標誌
BPFG 入總帳標誌
CATR 現轉標誌
SMCD 摘要代碼
PMTX 參數
TMSP 時間戳 D 0
STCD 記錄狀態 N
四、填寫使用記帳核心程序接口
SAACIF,SATAIF,SAACS1,SAACS2:
在填寫記帳程序接口字段的過程中需要參照會計分錄表。尤其是字段:SAACIF, SATAIF, SAACS1, SAACS2這幾個帳號信息字段。比如說,我們在會計分錄中指定了某一帳號來自於SAACIF,那麼我們就一定要將所需的帳號賦給SAACNO;又比如說,我們在會計分錄表中指定了帳號的業務代號來自於SAACS1,那麼我們就一定要將所需的業務代號賦值給SAACS1種的業務代號。以此類推。
SAACOC,SATAOC:
當SAACIF,SATAIF中填寫的帳號涉及到開銷戶時,我們應該在相應的開銷戶字段(SAACOC, SATAOC)中告訴記帳核心有關開銷戶信息,否則可以不填寫開銷戶字段。SAACIF對應SAACOC,SATAIF對應SATAOC。’1’開戶,’2’銷戶。
SATRKD:
當使用記帳核心的手工方式時,應該在SATRKD中填寫交易類型值,值的含義完全取決於交易編寫者。比如當你在會計分錄表中規定某一組會計分錄的交易種類爲’2’,並且你在交易程序中決定使用此組會計分錄,那麼就應該在SATRKD中填寫’2’,切忌:此時資金來源和資金去向字段應該爲空。
SAMNSC,SAMNDN:
當使用記帳核心的智能方式時,交易編寫人員應該將交易接口中的資金來源和資金去向毫無改變地賦值給記帳核心接口中的資金來源和資金去向,並且保證SATRKD爲空。
SAWDCS:
在取款交易中,如果交易發生部分現金支取的情況,交易編寫人員應該將部分現金支取的金額賦值給SAWDCS字段。其它交易不需要填寫此字段。
SAEXRT:
在外匯買賣交易中,交易程序應該將當前的外匯牌價填寫到SAEXRT中。其它交易不需要填寫此字段。
SACCNO,SASMCD:
當交易中涉及到憑證號碼、摘要代碼時,交易程序應該填寫字段SACCNO、 SASMCD。其它交易不需要填寫。
SACUAC:
當交易使用到一本通或卡時,應在本字段中填寫相應卡號。
金額接口:
根據會計分錄中的金額公式填寫。例如,金額公式中填寫了:01+02+05-06,那麼應該TRAM(0),TRAM(1),TRAM(4),TRAM(5)中填寫相應的金額。

//填寫記賬核心接口
FKNInitMst(&stSchMain);
strcpy(stSchMain.mnsc,stIn.sMNSC);
strcpy(stSchMain.acif.acno,PSACA_MSAC);
stSchMain.tram[0] = stIn.dTRAM;
strcpy(stSchMain.caty,stIn.sCATY);
strcpy(stSchMain.cuac,stIn.sCUAC);
if(strncmp(stIn.sCATY,CATY_DDAC,CATY_LEN) == 0)
strcpy(stSchMain.ccno,stIn.sCCNO);
strcpy(stSchMain.sbsq,myord);
if (strncmp(stIn.sMNSC,"9",MNSC_LEN) == 0)
stSchMain.dpcs = stIn.dTCAM;
strcpy(stSchMain.smcd,stIn.sSMCD);
strcpy(stSchMain.cicd,"121150000");
if (BKNSchMain(&stSchMain) == FAIL)
return FAIL;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章