高凡



摘 要:為響應國家稅務總局金三期中關于“三代”手續費的稅務系統的推廣實行,如何整理出準確的數據并利用整理出的數據完成整個“三代”手續費計算是廣大稅務工作者關心的問題。文章利用數據庫技術的多庫抽取數據、合并數據計算手續費比例等,準確完成了金三期中關于三代手續費的計算、核實與支付。
關鍵詞:稅收;審查;支付;數據庫
中圖分類號:TP311 文獻標識碼:A 文章編號:2095-1302(2017)06-00-04
0 引 言
伴隨著國家“金稅三期”稅收系統的正式上線運營,國家為調動相關稅種的扣繳義務人、代征單位和個人的積極性,每年在一定時間按其實際代扣代繳、代收代繳和代征稅款的一定比例返還給這些單位和人員費用,但由于錄入的個人或企業代扣代繳、代收代繳的稅額量不同,因此返還給個人或企業的手續費用也不相同。針對扣繳義務人的類型不同,結合稅務工作的實際情況,文章主要研究B/S模式下對于發起手續費申請的個人或企業進行審查和發放手續費的設計與實現。
1 三代手續費模塊的需求分析
三代手續費模塊設計基于國家統一推廣運營的“金稅三期”稅收管理系統。稅務人員對想獲得手續費的企業或個人從“金三”系統中提取征收代理方式為代扣代繳、代收代繳、委托代征相關數據至特色軟件三代手續費管理模塊,根據納稅人的申請,在特色軟件三代手續費管理模塊支付審核功能節點調取該納稅人三代稅款數據,按規定的三代手續費比例,計算應付三代手續費金額并推送至財務集中系統支付三代手續費,財務集中系統實時關聯反寫特色軟件三代手續費管理模塊決算功能節點,對已支付手續費的三代稅款進行標記,下一年度根據上一年度已支付的三代手續費情況從特色軟件三代手續費管理模塊決算節點中抽取數據至特色軟件三代手續費管理模塊預算節點中進行粗預算。通過以上各功能節點,實現三代手續費預算、支付、決算管理以及相關查詢功能。
2 三代手續費后臺模塊的設計
2.1 類圖用例圖的設計
類圖與用例圖的構建,要綜合稅務部門的實際需求,保證其準確性與可靠性。
根據主體稅務部門的需要,將需求中的業務表現關系通過用例圖的形式表現出來,如圖1所示。
通過圖中的關系來構建此次三代手續費項目的需求,同時對整個過程中的工作流起到了指導作用。
2.2 基表體系的設計
構建好用例圖后,根據用例圖的關系從稅務部門提供的 “金三”系統與生產環境相關的完稅證(ZS_WSZ)與繳款書(ZS_JKS)中抽取相關字段屬性,見表1所列。
除此之外,抽取的字段依據規定的法律政策依據,具有特定含義,對稅務系統中的數據做出相應篩選。在定義基表取數口徑時,根據SPUUID唯一主鍵做關聯,同時通過征收代理方式和稅收票款結報繳銷單編號信息。
指標取數口徑(表中ZS_WSZ_JKS_SDSXFC的SPUUID字段)定義為如下形式:
2.3 查詢手續費支付條件
在構建基表及取數口徑后,根據稅務部門的指示和法律政策依據,通過上一年度的繳稅明細以及手續費支付情況設計出查詢(ZS_WSZ_JKS_SDSXFC)中三代未付手續費的相關數據過程,PROCEDURE P_GETSDSKXX,并通過登記序號等查詢條件搜索出未支付手續的相關數據:
SELECT ckzhzhuuid, djxh, djzclx_dm,(select DJZCLXMC from DM_DJ_DJZCLX DJZCLX where A.djzclx_dm=DJZCLX.DJZCLX_DM) as DJZCLXMC, ||
‘to_char(dzsphm) dzsphm, hy_dm ,(select hymc from dm_gy_hy hy where A.hy_dm=hy.hy_dm) as hymc, hzspuuid, hzjksbz, kjdjxh, pzhm, ||
‘ pzzg_dm,(SELECT PZZG
FROM HX_CS_ZDY.CS_PZ_PZZGB@GZLT_SC_FF_01.GZDS.GOV.CN PZZG
其中,djxh、zhuuid是納稅人在稅務系統中的唯一編號, djzclx_dm為登記注冊類型,hy_dm為行業代碼,PZZG_DM則是票證字軌,再通過票證號碼的起止作為判斷條件,使其查詢出的數據更加準確,具體語句如下:
CHR(39) || V_DJXH || CHR(39);
IF V_PZHMQ <> ‘% THEN
V_SQL := V_SQL || ‘ AND PZHM >= TO_NUMBER(‘ || CHR(39) || V_PZHMQ ||
CHR(39) || ‘);
END IF;
IF V_PZHMZ <> ‘% THEN
V_SQL := V_SQL || ‘ AND PZHM <= TO_NUMBER(‘ || CHR(39) || V_PZHMZ ||
CHR(39) || ‘);
END IF;
最終查詢結果如圖2所示。
2.4 手續費的支付審核
根據之前的查詢結果判斷申請三代手續費的委托代征單位是否已按時進行票款結報,并推送至相關崗位審核,審核處理規則業務流轉到計財股主要領導崗進行初核,后流轉至分管領導崗進行審核,分管領導崗審核同意后流轉至計財股收入核算崗(每一環節審核未通過均能回退上一環節)。核對無誤后提交推送支付申請單到財務集中系統,財務集中系統未支付前發現錯誤則回退到上一環節。業務流程如圖3所示。
審核流程包含4步,每一流程中若發現錯誤都能返回到上一流程狀態,在此以主要領導崗審核為例,供大家理解其狀態扭轉的過程。
設計出PROCEDURE P_ZGLDSH(V_TY IN CHAR),以數字類型1、0來判斷主管領導是否審核通過:
SELECT COUNT(1)
INTO V_CNT
FROM TA_SD_SXFZFSQ_ZB
WHERE ID = V_ID
AND DQZTDM = ‘040001000002;
IF V_CNT >= 1 THEN
--找得到主表數據
IF V_TY = ‘1 THEN
-- --1.同意,推分管領導
SELECT LRR_DM
INTO V_LRR_DM
FROM TA_SD_SXFZFSQ_ZB
WHERE ID = V_ID
AND DQZTDM = ‘040001000002;
SELECT COUNT(1)
INTO V_CNT
FROM DM_GY_SWJG_LD
AND FGLDDM IS NOT NULL
AND FGLDBMBM IS NOT NULL;
其中XH作為扭轉狀態,表明當前操作所處的審核崗位,當主管領導審核通過時,更新主表、扭轉狀態,但可能出現意外情況,比如更新失敗或此納稅人申請三代手續費的稅務機關并無分管領導的狀態時,我們需要做出判斷,具體過程如下:
IF V_CNT >= 1 THEN
--取得到分管領導
SELECT FGLDDM, FGLDBMBM
INTO V_NEXTCZYBM, V_NEXTCZYBMBM
FROM DM_GY_SWJG_LD
SELECT DQZT, DQZTMC, SYZT, SYZTMC
INTO V_DQZTDM, V_DQZTMC, V_SYZTDM, V_SYZTMC
FROM DM_ZTLZB
WHERE XH = ‘142;
IF (V_RETURN = 1) THEN
UPDATE TA_SD_SXFZFSQ_ZB
SET ZYLD_DM = V_LDDM,
ZYLDMC = V_LDMC,
ZYLDGSHYJ = V_SHYJ,
ZYLDGSHSJ = SYSDATE,
DQZTDM = V_DQZTDM,
DQZTMC = V_DQZTMC,
SYZTDM = V_SYZTDM,
SYZTMC = V_SYZTMC
WHERE ID = V_ID
AND DQZTDM = ‘040001000002;
IF SQL%ROWCOUNT = 1 THEN
--更新成功
V_RESULT := ‘1;
ELSE
--失敗,提示
V_RESULT := ‘0;
V_SQLERROR := ‘將工作流推送至分管領導成功,但業務表更新失敗,流程ID為: || V_ID;
ROLLBACK;
END IF;
COMMIT;
ELSE
V_RESULT := ‘0;
V_SQLERROR := ‘將工作流推送至分管領導失敗,流程ID為: || V_ID;
END IF;
ELSE
--取不得到分管領導
V_RESULT := ‘0;
V_SQLERROR := ‘取不得到分管領導,無法將工作流推送至分管領導,流程ID為: || V_ID;
END IF;
若主管領導審核不通過,則退回收入核算崗:
ELSE
SELECT DJXH, LRR_DM, TEMP3, SQUUID
INTO V_DJXH, V_NEXTCZYBM, V_NEXTCZYBMBM, V_SQUUID
FROM TA_SD_SXFZFSQ_ZB
WHERE ID = V_ID
AND DQZTDM = ‘040001000002;
SELECT DQZT, DQZTMC, SYZT, SYZTMC
INTO V_DQZTDM, V_DQZTMC, V_SYZTDM, V_SYZTMC
FROM DM_ZTLZB
WHERE XH = ‘143;
同時更新主表及扭轉狀態,更新時出現的意外情況:
IF (V_RETURN = 1) THEN
UPDATE TA_SD_SXFZFSQ_ZB
SET ZYLD_DM = V_LDDM,
ZYLDMC = V_LDMC,
ZYLDGSHYJ = V_SHYJ,
ZYLDGSHSJ = SYSDATE,
DQZTDM = V_DQZTDM,
DQZTMC = V_DQZTMC,
SYZTDM = V_SYZTDM,
SYZTMC = V_SYZTMC
WHERE ID = V_ID
AND DQZTDM = ‘040001000002;
IF (SQL%ROWCOUNT = 1) THEN
--更新成功
V_RESULT := ‘1;
ELSE
--失敗,提示
V_RESULT := ‘0;
V_SQLERROR := ‘返回收入核算崗工作流成功,但業務表更新失敗,流程ID為: || V_ID;
ROLLBACK;
END IF;
COMMIT;
ELSE
--失敗,提示
V_RESULT := ‘0;
V_SQLERROR := ‘返回收入核算崗工作流失敗,流程ID為: || V_ID;
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
V_RESULT := ‘0;
V_SQLERROR := SUBSTR(SQLERRM, 1, 180) || V_ID;
INSERT INTO TA_HT_RUNLOG
(LOGID, RUNTIME, PROCNAME, LOGTEXT, RUNSTATES)
VALUES
(LPAD(TO_CHAR(SEQ_TA_HT_RUNLOG.NEXTVAL), 20, ‘0),
SYSDATE,
‘PKG_SDSXF.P_ZGLDSH,
‘審核保存異常: || V_SQLERROR || ‘ID: || V_ID,
‘異常);
COMMIT;
END P_ZGLDSH;
由于在崗位審核時需判斷的情況較多,容易出現錯誤,因此建立TA_HT_RUNLOG日志表。該表設計用于記錄在審核過程時的運行情況,可以方便的查看當前過程的運行階段及狀態,便于后期調試、維護,記錄信息。在審核過程P_ZGLDSH及其他審核過程中,由于定義的參數多,需要判斷的情況較復雜,所以對過程的編輯需要很強的邏輯性與嚴謹性,同時考驗掌握SQL語法的熟練程度。
3 三代手續費后臺的實現
三代手續費后臺根據稅務部門的需求考慮采用Oracle數據庫架構,其開發運行的環境為Oracle 11g R2,開發語言為SQL。為實現數據的定時抓取,設計采用Oracle定時計劃,建立Job,每天凌晨調度過程:
DECLARE
JOB NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT(job => JOB,
what => ‘PKG_SDSXF.P_ SDSXF _AUTORUN;,
NEXT_DATE => TRUNC(SYSDATE) + 1,
INTERVAL => ‘TRUNC(SYSDATE)+1);
COMMIT;
END;
當數據量達到一定數量級后,數據庫的查詢效率會變得很慢,為了提高查詢效率,通常我們會在相應的數據表上建立索引以提高效率,這里需要在ZS_WSZ_JKS_SDSXFC和TA_SD_SXFZFSQ_ZB都建立索引。
由于三代手續費采用獨立數據庫,在抽取相關數據時就需要對遠程數據庫進行數據抽取,可由Oracle數據庫中的DataBase Link來實現這一需要。DataBase Link定義一個數據庫訪問另一個數據庫的路徑,允許本地數據庫用戶訪問遠程數據庫下的數據并查詢或執行程序,但需要注意DataBase只是一種單向訪問,若想從遠程數據庫訪問本地數據庫則必須在遠程庫上定義訪問本地庫的DataBase Link。
4 結 語
本文主要探究了基于Oracle數據庫的三代手續費后臺的設計與實現,并希望對實際的稅務部門生產管理產生積極影響。隨著國家稅務部門需求自動化的逐步推進,“金稅三期”系統也將進一步完善。
參考文獻
[1]高允斌,吳明泉.手續費及傭金支出會計與稅務處理差異分析[J].財務與會計,2010(12):31-33.
[2]張基溫.計算機網絡原理[M].北京:高等教育出版社,2006.
[3]鄧睿.基于Web的稅收輔助管理服務系統設計與實現[D].廈門:廈門大學,2013.
[4]稅光澤.VPD技術在貴州地稅核心征管系統省級應用集中項目中的應用[D].武漢:湖北大學,2014.
[5]陳雙.稅收監控預警系統的設計與實現[J].物聯網技術,2016,6 (4):96-99.
[6]李鵬飛,徐俊剛,周紹君,等.物聯網技術在稅源信息管理中的應用[J].物聯網技術,2014,4(4):72-75.
[7]張瀟月.論如何規范“三代”稅款手續費收入的核算[J].普洱學院學報,2011(3):134-135.
[8]洪俊中.企業“三代”手續費收入的會計及稅務處理[J].財會月刊,2010(22):59.