把國稅不服審判所的「處理狀況等管理系統」掰碎講清楚

| Work Notes | 2 Reads

ACCESS/VBA 業務逆向工程 · CKEditor 可直接使用版

把國稅不服審判所的「處理狀況等管理系統」掰碎講清楚

從一張審查請求書進來,到補正、答辯、爭點整理、調查、合議、法規審查、裁決、発送與送達:這套 VBA 到底在替誰管什麼?

分析對象:処理状況等管理システム.accdb(主畫面標示「2025版」)|分析基準日:2026-09-02

閱讀標記:先把「確定」和「推定」分開

【官方】 可在國税不服審判所、國税庁或 e-Gov 的現行公開資料中核對。
【程式】 直接來自本資料庫的欄位說明、查詢條件、表單事件或 VBA 實作。
【推定】 依欄位名稱、前後流程與報表用途推斷;若要重建系統,必須找業務人員或內部《提要》確認。

一分鐘結論:這套系統其實是什麼?

它不是「自動判案系統」,而是「案件台帳+進度控制表+統計報表工廠」。

它把一件審查請求拆成很多可管理的數字與日期:誰提出、針對什麼處分、由哪個支部與合議體處理、答辯書何時要、證據何時收到、爭點何時確認、何時調查與合議、法規審查走到哪裡、何時裁決與寄出,以及這件在統計上到底算幾個「實件」和幾個「延件」。

  1. 一個現實中的申訴,不一定只對應一筆資料。一份請求書可能包含多個稅目、年度或原處分,所以系統會生成一組互相關聯的受付番号。
  2. 同一個受付番号,又被橫向切成三張一對一資料表。基本資訊、審理活動日期、進行管理/備忘各放一張表。
  3. 核心不是「狀態」而是大量里程碑日期。系統用「答求、答受、初合、議決、法了、裁決、発送……」判斷進度與產生報表。
  4. 大量報表是它真正的產出。它按支部、稅目、事件種、結果、處理期間、未結階段、延誤原因等輸出管理資料。
  5. 很多規則只是表單層警告,不是不可突破的資料約束。日期矛盾可以按「是」繼續保存;部分原本設計的檢查與彙總更新已被註解停用。

我到底拆了多少東西?

【程式】資料庫以停用巨集與啟動程式碼的方式唯讀開啟,沒有執行 AutoExec,也沒有修改原檔。盤點結果如下:

資料表 查詢 表單 報表 巨集 VBA 模組
82 727 6 694 3 6

694 張報表不代表 694 套不同業務;其中大量是同一統計按支部、稅目、事件種、實件/延件、明細/合計、橫式/縱式等變體展開。

先不看程式:一件國稅審查請求正常會怎麼走?

先把角色記住,後面所有欄位就不會再像天書:

角色 白話意思 在系統中留下什麼
審査請求人 覺得稅務處分不對,來請求取消或變更的人。 姓名、共同請求人、代表人、地址、電話、代理人、反論書、意見書、口頭意見、閱覽/謄寫等。
原処分庁 做出原來稅務處分的稅務署長、國稅局長等。 答弁書、意見書、回答書、資料提出、閱覽/謄寫等。
国税不服審判所 站在雙方之間,以第三者立場調查、審理並作成裁決的機關。 形式審查、合議體、爭點、調查、審理計畫、議決、法規審查、裁決與送達。

【官方】國税不服審判所公開的流程可以壓成下面十步。官方完整說明見「審理と裁決」

  1. 提出請求:原則上可直接向國税不服審判所提出,也可能在再調查請求後提出。一般期限是知道處分之翌日起 3 個月內;若經再調查決定,通常為送達翌日起 1 個月內。精確例外須以現行法與官方說明為準。
  2. 收件與形式審查:先看請求書是否具備必要記載、是否在期限內、代理權文件是否齊全;能補的就要求「補正」。明顯不適法且不能補正的,可不進實體審理而「却下」。
  3. 向原處分機關要答弁書:原処分庁說明它要維持什麼處分、事實與法律理由是什麼;副本送給請求人。
  4. 指定合議體:指定 1 名担当審判官及至少 2 名参加審判官。担当審判官成為雙方提交主張、證據、程序申請的主要窗口。
  5. 整理爭點與排計畫:把雙方真正爭什麼、已交什麼、還缺什麼、下一步何時做整理清楚,必要時交付「審理の状況・予定表」與「争点の確認表」。
  6. 雙方攻防與證據:請求人可交反論書與證據;原処分庁及參加人可交意見書;審判所也可要求回答、文件或補充說明。
  7. 程序權利:請求人或參加人可申請口頭意見陳述;雙方可在法定範圍內請求閱覽或取得資料副本。口頭意見陳述時,請求人可經担当審判官許可向原処分庁提問。
  8. 職權調查:担当審判官等可詢問、檢查、要求帳簿文件、留置物件或委託鑑定,用來釐清事實。
  9. 審理終結、合議與議決:調查完畢後終結審理;合議體以過半數形成「議決」。議決是合議體的結論,裁決則是審判所長依議決作成的正式行政判斷,兩者不是同一個日期。
  10. 裁決、寄送與可能訴訟:裁決書謄本通知請求人與原処分庁。請求人仍不服時可依法提起訴訟;原処分庁受裁決拘束,不能因不服而起訴。

裁決結果:代碼 0~6 到底在說什麼?

代碼 系統名稱 白話判斷
0 未済 尚未結案。
1 全部取消し 請求人要求取消的部分全部被接受。
2 一部取消し 只有一部分主張被接受。
3 棄却 程序可以審,但實體審理後不採納請求人的主張。
4 却下 因逾期、沒有可爭執的處分、無資格、未依補正要求處理等程序問題,不進入或不能維持實體審理。
5 取下げ 請求人撤回請求。
6 変更他 原處分被變更,或被系統歸到「其他」的內部分類。

【官方】裁決不得把請求人處境改得比原處分更不利;裁決對有關行政機關有拘束力。完整定義可核對國税不服審判所的裁決態樣與拘束力說明

【程式】若態樣為全部取消或一部取消,系統會要求選「取消事由」;若為却下或取下げ,會要求對應理由。取消案件且稅目代碼小於 90 時,還要求輸入本稅與加算稅的取消金額。這些條件是本程式的統計口徑,不應倒推成法律本身的分類。

全系統最難的一關:實件、延件、総延、総総到底是什麼?

先用一句人話:同一個人遞交的一份請求書,可能同時挑戰好幾個稅目、年度或處分;管理上想把它看成一組,但統計上又必須分別計件。所以系統同時保存三層數量。

層級 對應欄位 白話
請求書/整組 請求書関連受付番号総総実総総延 一份請求書或同一請求人下的一組事件。首筆資料的 請求書=1,而且其関連受付番号必須等於自己的受付番号。
實件 実=1総延 一個管理上算作「一件」的實質事件。其代表行放 実=1,並以 総延記錄這個實件下面一共有幾個延件。
延件/最小計數行 延=1 每一個要獨立計數的處分/事案資料行。自動複寫出的從屬行會設 実=0総延=0延=1

用一個完全虛構的例子

假設甲公司用同一份請求,爭執「法人稅兩個年度」和「消費稅一個處分」。管理上是 2 個實件,統計最小單位是 3 個延件:

受付番号(虛構) 関連受付番号 請求書 総延 意思
1234-56-0001 1234-56-0001 1 1 2 1 整組首行,也是法人稅實件的第一個延件;首行另存 総総実=2総総延=3
1234-56-0002 1234-56-0001 0 0 0 1 法人稅實件的第二個延件,由程式複寫生成。
1234-57-0001 1234-56-0001 0 1 1 1 另一個消費稅實件,仍掛在同一份請求書的首行。

上表是依欄位說明與複寫演算法製作的教學例,並非資料庫中的真實案件。

【官方】國税庁歷史統計資料說明,件數原則上按處分或事案分別計 1 件;本稅與特定加算稅同時爭執時,可能合併按 1 件計。這就是為什麼畫面上人的直覺「我只申訴一次」與統計數量可以不同。可參考國税庁統計編的計件註記

同一受付番号,為什麼要住在三張表?

【程式】三張核心表目前都各有 2,107 筆,以 受付番号一對一連結。關聯同時啟用唯一性、更新串聯與刪除串聯。把它想成一張太寬的案件卡被剪成三頁:

資料表 欄位數 負責的業務
事績処理テーブル(情報) 150 人、組織、稅目、原處分、分類、件數、處理結果、取消金額、代理與程序申請、承辦人、公表與重要案件等。
事績処理テーブル(日付(情報)) 117 面談、資料要求、答弁/反論/意見/回答、爭點表、審理狀況予定表、本部照會、閱覽、口頭意見、調查計畫與實施等活動日期。
事績処理テーブル(日付(進行管理)・メモ) 142 從請求到送達的主時間軸、當初/修正計畫、進度、延誤原因、今後方針、事案概要,以及每個日期是否禁止從關聯首行同步的 F 旗標。
畫面上的一件資料
受付番号
↓ 同一鍵值
資訊 150 欄 審理活動 117 欄 進度/備忘 142 欄

刪除為什麼危險?因為首表是父表:刪除資訊表的一個受付番号,另外兩表同號資料會被串聯刪除;若刪的是關聯組首行,刪除表單還可能先刪整組資訊資料。

還有一條「暫定版」支線:事績処理3有 51 個欄位,搭配 暫定版補完入力表單及報告資料建立查詢,追蹤國税通則法第 96/97 條相關資料提出節點;但本快照為 0 筆,名稱也明示「暫定版」。因此它不是目前 2,107 筆核心資料的第四頁,應視為尚待確認是否啟用的試行/補充模型。

主輸入畫面的三個頁籤,各自在問什麼?

【程式】主表單 事績処理入力有三頁,名稱正好對應三張核心表。它不是要操作員一次填完 409 個欄位,而是在案件生命週期中不斷補日期、結果與備忘。

第一頁:情報——「這是誰的什麼案件?」

  • 識別與聯絡:支部、受付番号、関連受付番号、請求人、共同請求人、法人代表者、郵遞區號、地址、電話、代理人、補佐人。
  • 案件性質:稅目、事件種、初始/變更/再次變更的事件處理區分、變更日期與理由、爭點番号、國際交易與國際爭點、評價代碼。
  • 原處分來源:局部課、本支所、原処分庁、受理態樣、收件路徑、併合/分離態樣、青色/白色申告、年分、原處分種類。
  • 計件與關聯:請求書、実、総延、延、総総実、総総延、継続管理。
  • 特殊管理:情報共有事件、本部報告日期、調整、審理留保、再開、重要案件、公表適否。
  • 處理結果:裁決番号、處理態樣、取消/却下/取下理由、本稅與加算稅取消金額。
  • 程序權利:口頭意見陳述、閱覽/謄寫、徵收猶予、差押解除、發問權、出席、審理程序意見聽取。
  • 承辦與審查:部、部門、担当審判官、参加審判官 1/2、分担者、法審部門、法規審查、形式審查、事件主任。
  • 本人確認:法人番号確認、個人番号確認、個人身元確認。官方也說明,含 My Number 的請求書須附相應確認資料。
  • 副本交付:最多五輪謄寫/交付,逐輪保存對象特定書收件、請求書收件、頁數、費用、納付、交付與排除天數。

第二頁:日付(情報)——「雙方與審判所做過哪些程序活動?」

  • 面談種類、預定日、實施日、出席者,以及文件/物件的預り與返却。
  • 三輪要求書類:要求什麼、何時要求、期限、何時收到。
  • 「審理の状況・予定表」最多三輪,分別記錄交付給請求人與原処分庁的日期。
  • 「争点の確認表」最多三輪,分別追蹤雙方的交付日期。
  • 本部照會與回答、一般文件要求/收件/寄送。
  • 反論書、請求人意見書(多輪)、原処分庁意見書(多輪)、雙方回答書:各有要請日、提交期限、收件日。
  • 参加人意見、釈明陳述録取書、面談、口頭意見陳述、閱覽/副本交付、審理程序意見聽取。
  • 最多五輪調查的計畫日、實施日與內容;另有遮蔽處理、數位相機等實務欄位。

第三頁:日付(進行管理)・メモ——「現在走到哪裡,接下來怎麼辦?」

  • 完整主時間軸:請求、收件、補正、答辯、分案、指定、着手、合議、審理終結、議決、法審、返戻、再開、決裁、裁決、発送、送達。
  • 七個核心節點的當初計畫修正計畫:答弁書要求、答弁書收受、當初合議、議決、法審了、裁決、発送。
  • 文字備忘:進捗狀況、第 96 條資料未提出理由、特記事項、遲延理由、今後處理方針、各種備考、事案概要。
  • 大量以 F結尾的旗標,用來決定關聯首行更新時,此欄是否要同步到從屬行。

「答求、初合、法了」是什麼?主時間軸全翻譯

下面先給能從官方流程或程式前後文確定的白話意思;帶「推定」者是內部縮寫,程式沒有正式字典,重建前必須請業務確認。

階段 欄位 白話解釋
提出與收件 請求 審查請求日。
収受 審判所收件日,通常是處理期間的起點。
収調 【程式】調整後收件日;報表一律優先用它,空白才用収受。它會改變經過期間計算。
補求 要求補正/補充欠缺。
補完 補正完成。
答弁 答求 向原処分庁要求答弁書。
答限 答弁書提出期限。
答受 收到答弁書。
答弁書送付 把答弁書副本送給請求人。
內部分案與開始 事件回付 事件在內部回付/移交。
形回 【推定】形式審查相關的回付節點。
予担回 【推定】預定担当/預備分派相關回付節點。
配付 分配至承辦部門或人員。
指定 担当審判官與参加審判官的正式指定。
着手 承辦開始實質處理。
調查、合議與終結 初合 初次合議/當初合議。
中間合議 調查途中由合議體檢視爭點與方向。
調査終了 調查活動完成。
議決予定 預計形成合議結論的日期。
終合 【推定】最終合議節點。
審理終結/終結通知 審理程序終結及通知。官方說明:終結後,原則上不能再做反論書/證據提出、口頭意見申請、閱覽或副本交付請求等程序行為。
議決 合議體以過半數形成的結論,是裁決的基礎。
文合 【推定】裁決文書/文案的合議或確認節點。
法審、返工與再開 一次担当/二次担当 法規審查中的一次、二次承辦節點。
法審チェック 法規審查檢查。
三次受理 第三階段受理/確認節點。
法回 【推定】送交或回付法規審查。
法了予定 預計法規審查完成日。
返戻 審查後退回修正。
審理再開/再開通知 先前終結的審理重新打開並通知。
再終合/再終結/再終結通知 重新合議、再次終結及再次通知。
再議/再法 再次議決/再次送法規審查。
法了 【程式前後文】法規審查完成。
成文、決裁與對外 浄書回付/浄書終了 正式文書清稿流程的回付與完成。
次席回付/次席決裁 送次席審核與完成決裁。
所長回付/所長決裁 送所長審核與完成決裁。
裁決 審判所長作成正式裁決。
発送 裁決書謄本等寄出。若干未結/處理期間查詢以此而非裁決日當作操作上的完成點。
送達日(請求人/原処分庁) 雙方實際被送達的日期。
訴訟提起日/判決日 裁決後進入司法程序時的追蹤日期。

操作員怎麼用:搜尋、新增、更新、複寫、刪除

1.先搜尋,不允許「什麼都不填」

搜尋表單可按支部、受付番号、請求人、稅目、請求/収受/裁決日期區間、関連受付番号篩選。三組日期都檢查「自 ≤ 至」。受付番号與請求人使用 Access 的 Like,程式本身沒有自動在前後加萬用字元,所以一般輸入等同精確比對;使用者自己輸入萬用字元時才可能模糊搜尋。

結果列顯示支部、受付番号、請求人、稅目、請求日、収受日、裁決日、実、総総延與関連受付番号。從這裡進入更新、新增、關聯複寫或刪除。

2.新增:先建三張表,再依総延製造延件

  1. 使用者確認新增。
  2. 跑一般必填、條件必填與日期檢查。
  3. 檢查受付番号未重複。
  4. 若填関連受付番号,確認首行存在、請求書=1,而且請求人相同。
  5. 依序向三張核心表插入同一受付番号。
  6. 総延 > 1,自動再建立 総延-1個延件行。新號碼固定用「原受付番号前 8 字元+四位流水號」。

複寫出的延件會承接支部、請求人、稅目、案件分類、承辦與多數共通日期,但個別處分專屬欄位不全都複寫;它們設為 実=0、総延=0、延=1

3.更新:先改本行,再把共通欄位灑到整組

  1. 確認、必填與日期檢查。
  2. 若受付番号有改,檢查新號碼唯一性;資料庫關聯會串聯更新兩張子表的鍵。
  3. 依序更新三張核心表。
  4. 若目前是關聯首行,呼叫 UpdKanren1,把姓名、分類、承辦、共通程序日期、計畫與進度等同步至同一関連受付番号的從屬行。
  5. 若重新指定首行,程式會把舊首行的 請求書改為 0。

4.「複寫」不是另存新案件,而是補齊缺少的延件

只有 総延 ≥ 2且存在関連受付番号時才能用。進入複寫模式後,大部分欄位被鎖住;程式先數同一受付番号前 8 字元、且同一関連受付番号的現有行,再只補造不足的流水號。因此按鈕名稱很容易誤導:它的業務目的是依総延補足計數行,不是讓使用者自由複製一件案件。

5.刪除:看你刪的是首行還是從屬行

  • 沒有関連受付番号:只刪目前資訊行,兩張日期表由關聯串聯刪除。
  • 有関連受付番号且 請求書=1:刪除所有同一関連受付番号的資訊行,也就帶走每行的兩張日期資料。
  • 從屬行:只刪目前受付番号。

注意:刪除後重新計算 総総実/総総延的呼叫已被註解,所以剩餘首行的總數可能變舊。

關聯同步的 F 旗標:為什麼每個日期後面又有一個 F?

【程式】資料表說明寫得很明確:0 或 Null=同步更新-1=不更新。例如 裁決F法了F発送F

首行的 F 從屬行的 F 結果
0/Null 0/Null 首行值覆蓋到從屬行。
-1 任何值 本欄不向外同步。
0/Null -1 保留該從屬行自己的值。

這是在「整組通常共用日期,但少數延件例外」之間做折衷。新系統若要重建,最好把它表達為明確的「繼承/覆寫」模型,而不是讓每個日期旁都長一個難懂的 Boolean。

哪些是真必填?哪些只是警告?

無條件必填

【程式】主流程會要求:支部、受付番号、請求人、地址、稅目、事件種、局部課、本支所、原処分庁、受理態樣、収受態樣、青白區分、年分、原處分、実、総延、延、請求日、収受日、處理態樣,以及法人番号/個人番号/個人身元確認三個確認欄位。注意:是否真的該三者同時要求,是程式現況,不代表所有案件法律上都必然同時適用。

條件必填

條件 必須補什麼
代理代碼 > 0 代理人姓名。
請求書=1 総総実、総総延;若有関連受付番号,必須等於自己的受付番号。
非首行且有関連受付番号 不可指向自己;目標必須存在、為首行且請求人相同。
海外取引有り 國際爭點分類。
審理留保中/審理再開 留保開始日/再開日。
全部/一部取消 取消事由;部分稅目另要本稅、加算稅取消金額。
却下/取下げ 却下事由/取下事由。
総総延 > 9 継続管理。欄位說明指示一名請求人延件達 10 件以上時輸入「2」。
併合/分離類審理態樣 併合分離年月日。
事件區分發生變更 設定日與變更理由。
審理狀況予定表輪次有值 對應輪次日期。
担当者介紹「無」 無法介紹的理由。
審理程序意見聽取 > 0 實施日。
一年內判定除外=Yes 除外期間(自)。「至」的必填檢查在程式中已被註解。

日期檢查不是硬擋

程式檢查大量先後順序,例如:

  • 収受/収調 → 補求 → 補完;答求 → 答限 → 答受。
  • 初合 → 終合 → 議決;法回 → 返戻/法了 → 裁決 → 発送。
  • 浄書回付 → 浄書終了;次席回付 → 次席決裁;所長回付 → 所長決裁。
  • 面談通知 → 面談實施;書類提出要求 → 提出;閱覽請求 → 實施;口頭意見申立 → 實施。
  • 當初計畫及修正計畫的七個節點順序、三輪予定表/爭點確認表順序、各種要請日 ≤ 提出期限。

關鍵:發現矛盾後,DateCheck把全部訊息串起來,最後問「処理を続行しますか?」;按「是」就回傳成功並繼續保存。因此這是可覆寫的警告。若業務需要例外,理想設計應要求記錄覆寫理由與操作者,而不是只有 Yes/No。

已被註解、目前不生效的規則

  • 主要爭點番号的部分必填要求。
  • 総延 > 1時関連受付番号必填。
  • 若干要求書類期限、爭點/予定表交付日期的必填。
  • 除外期間(至)必填。
  • 多個「後日期存在時,前日期必須存在」的檢查;有些只剩「兩者都有值時比較大小」。

為什麼有這麼多「表、書、意見、閱覽、謄寫」?

東西 業務作用 系統怎麼追
答弁書 原処分庁對請求理由作正式回應。 要求日、期限、收件日、送付請求人日。
反論書/意見書/回答書 雙方針對對方主張與新資料繼續攻防;参加人也可提出意見。 按角色與輪次保存要請、期限、收受。
審理の状況・予定表 把已提交文件、當前爭點、調查/審理狀況與今後予定透明化。 最多三輪,分別記錄交付雙方日期。
争点の確認表 把原處分、爭點與雙方主張整理成同一張地圖,防止雞同鴨講。 最多三輪,分別記錄交付雙方日期;是否交付依個案。
口頭意見陳述 讓請求人或参加人口頭說明;依法與官方說明,請求人可經許可向原処分庁提問。 無、已申立、已實施、撤回、不認、未實施等狀態,加申立/實施日期與出席資訊。
閱覽/寫し交付/謄写 雙方在法定範圍內查看或取得對方及職權調查資料;交付可能收取實費,特殊情形可減免。 按請求人、原処分庁、参加人及多輪請求,追狀態、日期、頁數、費用、繳費、交付與排除日數。
第 96/97 條資料 第 96 條側重審理關係人提出證據書類等;第 97 條涉及審理所需的質問、檢査、物件提出要求等職權調查。 暫定表按申告書、通知書、帳簿寫、聽取書、金融機關/交易對手與其他資料,追各階段提出日及結束旗標;目前 0 筆。

【官方】這些程序不是 VBA 作者憑空想像。可核對國税不服審判所審理程序說明官方提出書類一覧現行國税通則法

內部分類代碼:它們是報表維度,不一定是法律分類

事件處理區分:A、B、C、D、E、A'

【程式】代碼表只保存這六個標籤,沒有說明 A 到 E 各代表何種難度或處理方式。報表會優先採「再變更區分」,其次「變更區分」,最後才是初始區分;並用它產生硬編碼模型日程。任何把 A 解釋成簡易、D 解釋成複雜的說法都只是猜測,本文不這樣做。

事件種

推計課税等、行政訴訟相關、査察相關、其他訴訟相關、調査課等、特調等、税関長等、其他一般。它決定統計分類與可能的處理特性。

當前審理區分

管理手持、議決未済、返戻未済、報告未済、法審未済、決裁未済、留保事件。這是管理者看「卡在哪個工作籃」的欄位,不是裁決結果。

案件怎麼進來

  • 受理態樣:持參、經原處分機關、郵送等、電子申請、其他——偏向物理/管道。
  • 収受態樣:始審、3 個月經過、みなす 89 条、みなす 90 条,以及再調查後的一取/棄却/却下/変更/其他——偏向前置程序與法定路徑。縮寫「一取」的正式全稱需向內部確認。
  • 審理態樣:無、併合、分離、併せ、併合併せ、分離併せ。
  • 調整:無、削番、稅目變更、事件種變更、本支所移送、他支部移送。許多正式統計查詢會排除 調整≠0的資料。

國際、重要與公表

  • 國際爭點:外國稅額控除、非居住者/外國法人納稅義務與源泉課稅、移轉訂價、國外關係人捐贈、過少資本、外國子公司合算稅制、其他、消費課稅、資產課稅。
  • 重要案件:重要先例見込、個別管理重要、本部協議、情報共有、本部照會、相互審查等;代碼文字引用內部《提要》章節。
  • 公表判定:未判定、公表適、公表否(可能識別請求人/洩漏營業秘密/其他)、公表留保。這是裁決公開前的隱私與機密判斷。

取消、却下、取下與長期化理由

  • 取消:法令或通達解釋適用錯誤、事實認定錯誤、新資料、重加算稅要件認定錯誤、計算錯誤、其他;推計課稅另分推計方法、基礎項目、同業者率、實額採用等。
  • 却下:逾期、原處分不存在、非不利益處分、已確定、非法律規定請求事項、再調查請求不適法、無決定、無資格、不補正、其他。代碼表另混有「原処分取消し」類歷史項目,不能直接當成現行法的纯粹却下理由字典。
  • 取下:原處分被取消、請求人接受原處分或放棄主張、無裁決利益、各類不適法原因等。
  • 長期化:請求人不合作、原処分庁、關係人、事實複雜、法律適用困難、案件激增、査察/訴訟、承辦人病假、其他、留保、已議決。

報表才是終點:管理層到底想看什麼?

【程式】主選單把報表大致分成六組:

  1. 發生與處理實績:按稅目、事件種、支部/本所、原処分庁、處理態樣、取消稅額、取消/却下/取下理由、月份等統計,另有受付簿。
  2. 平均處理期間:每案、全體、實件/延件、支部、稅目、事件種、部門,以及圖表和期間異常檢查。
  3. 未済管理:各支部未結數、處理階段、逐案經過月數、全國/支部平均、留保案件、長期化理由及明細。
  4. 模型期間:把 A~D、A' 的內部模型日程與實際/計畫日期並排。
  5. 業務計畫與實績報告:計畫指標、處理實績、進度表。
  6. 輸入品質:入力状況確認、未済状況確認、汎用入力チェック、期間與日期矛盾清單。

報表的「今天」不是固定今天

函式 規則 用途
sDate() 主選單沒開時=當月 1 日;有開時=使用者輸入的基準日(自)。 報表起日。
eDate() 主選單沒開時=今天;有開時=基準日(至)。 報表截點;大量「截至某日未済」判斷都依它。
ksDate() 以 4 月 1 日為會計年度起點。 年度實績與跨年度比較。
jsDate() 以 7 月 1 日為另一統計年度起點。 部分進行管理/業務計畫口徑。

所以不能簡單說「本系統年度都是 4 月」或「都是 7 月」:兩套起點都存在,由不同報表使用。

四個會改變數字的隱藏口徑

  1. 有效收件日:IIf(収調 Is Null, 収受, 収調)。只要填了収調,經過期間就改從収調算。
  2. 未済的終點不統一:有的報表按裁決日統計處理,有的未済查詢要到 発送完成才排除。因此「已裁決但尚未寄出」可能法律判斷已完成,操作報表仍在待辦。
  3. 調整資料常被排除:調整=0才進正式統計,削番、稅目變更、移送等通常被濾掉。
  4. 代表行與計件權重:有的清單只取 請求書=1,有的統計加總 ;同一批資料若選錯口徑,件數會完全不同。

經過期間分桶

系統至少存在兩套分桶:

  • 細版:6 個月內、9 個月內、1 年內、1 年 6 個月內、2 年內、2 年 6 個月內、3 年內、3 年超。
  • 彙總版:6 個月內、1 年內、2 年內、3 年內、3 年超。

另有逐階段耗時:收件→答弁要求、答弁要求→答弁收受、答弁收受→指定、指定→着手、着手→議決、議決→法審了、法審了→裁決等。這使管理者不只知道「慢」,還能知道慢在答辯、調查、合議、法審或決裁。

A~D、A' 的硬編碼模型日程

【程式】進行管理一覧把一年分成每月上/中/下旬,用 ①~⑦標記模型、計畫與實績:

①答弁書要求 ②答弁書收受 ③當初合議 ④議決 ⑤法規審查了 ⑥裁決 ⑦謄本発送

區分 ④ 議決 ⑤ 法審了 ⑥ 裁決 ⑦ 発送
A +26 日 +34 +37 +40
B +9 +37 +67 +140 +170 +177 +180
C +9 +37 +67 +230 +270 +277 +280
D +9 +37 +67 +270 +317 +327 +330
A' +70 +90 +97 +100
E 未設定模型;模型議決日顯示「-」

千萬別把上表當法定期限。這些只是 VBA 中從「有效收件日」加固定天數的內部管理模型。官方公開的 1 年標準審理期間與這套 A~E 日程是不同層次的概念。

一年內處理:官方口徑和本程式的落差

【官方】國税不服審判所把「審查請求到達後至裁決通常所需的標準期間」設為 1 年。最新的令和 7 年度(2025-04-01~2026-03-31)公開資料顯示:發生 3,159 件、處理 3,128 件,其中全部/一部認容 226 件、認容率 7.2%,一年內處理比例 98.8%。官方註明,計算一年內比例會排除相互協議、公訴相關等留保期間,以及災害或請求人原因造成的中斷期間。見令和 7 年度審查請求概要

【程式】資料庫有 1年以内判定除外除外期間(自)除外期間(至)、留保與再開欄位;但全庫搜尋只發現這些欄位被輸入、驗證及輸出到參考清單,沒有發現自動把除外天數扣掉後重新判定一年內的公式。而且只設一組除外起訖,無法自然表示多次中斷。這表示最終一年內統計可能另靠人工計表、外部作業或尚未納入本檔的處理。

從開發者角度看:VBA 架構怎麼串起來?

メインスイッチボード
期間、功能、報表入口
検索/事績処理入力/削除
使用者互動與表單驗證
FormFunc+DBFunc
必填、日期、CRUD、關聯複寫、計件
三張核心表+代碼表
727 查詢+ReportFunc+694 報表
統計、未済、平均期間、進行管理、輸入檢查
模組 主要責任
DBFunc 載入一件資料、三表新增/更新、受付番号查重、前後筆、関連檢查、延件複寫、首行同步、総総彙總。
FormFunc 一般必填、條件必填、日期先後警告、數值轉換。
ReportFunc 爭點表/閱覽狀態文字、進行管理 ①~⑦、A~D/A'模型日期。
DateFunc 報表起訖日、4 月/7 月年度起點、基準日起訖檢查。
DBImport/DataConvert 資料庫匯入、表格轉換與管理者遷移功能。

開啟主輸入表單時,OpenArgs區分「新規、更新、複写」。SelData一次把三張表的大量欄位搬到表單;更新時又逐一搬回。這是典型 Access「巨型表單+程序式資料映射」架構,業務規則散落在表單事件、模組、欄位說明與查詢中,而不是集中在一個領域層。

已確認的技術風險與疑似缺陷

以下不是對業務好壞的評價,而是「若你要維護或重建,最容易出事故的地方」。

優先度 問題 證據與後果
三表寫入沒有交易 新增/更新依序操作三張表與關聯行,未找到 BeginTrans/Commit/Rollback。中途錯誤可能只完成前半,形成三表不齊;SelCheck雖能偵測,不能自動復原。
総総自動重算被停用 負責加總同組 SUM(実)SUM(総延)UpdSousou仍存在,但新增、更新、刪除後的呼叫都被註解。總計需人工維護或可能陳舊。
11 碼受付番号與複寫算法衝突 驗證允許 11 碼(第 4、7 位為連字號)及 12 碼(第 5、8 位為連字號),但複寫永遠取前 8 字元再接 4 位號。11 碼格式的第 8 字元已是尾號首位,複寫會生成不同長度/錯誤前綴。
疑似複製貼上錯誤:次席決裁 UpdKanren1同步 次席決裁時,判斷的不是次席決裁F,而是表單與目標行的浄書終了F。高機率是 copy-paste 缺陷,會讓使用者設定的次席決裁例外旗標失效。
中高 新關聯組同步分支被停用 UpdKanren2完整存在,但更新按鈕中的呼叫被註解。改掛新首行後,哪些欄位應同步到新組可能與原設計不一致。
中高 日期矛盾可無理由覆寫 使用者按「是」即可保存,沒有要求例外原因、審批或審計記錄。
中高 一年內排除沒有自動公式 只有單一排除起訖與參考輸出;官方口徑可能有多段中斷。若人工計表遺漏,績效數字會受影響。
中高 隱藏的破壞性遷移功能 啟動巨集只呼叫 proctest()控制按鈕顯示;以 Access 命令參數 1 啟動時會顯示「テーブル移行」。其轉換程序確認後會刪除非系統表,再按已存匯入規格重建。這應只在可復原備份與受控作業下使用。
明文匯出到固定路徑 管理按鈕可把三張核心表輸出到 C:\temp文字檔。資料含姓名、地址、電話與敏感稅務內容,必須有權限、加密、留存與刪除政策。
SQL 字串拼接 多處直接把受付番号、請求人等拼進 SQL。即使是內部桌面程式,單引號、特殊字元與非預期輸入也可能造成查詢錯誤;應改參數化。
規則散落且硬編碼 A~D 模型天數、報表年度、完成條件、代碼含義分散在 VBA、查詢、表單與 694 張報表;改一個口徑很容易漏改。
直接表格入口可能繞過表單規則 主選單有直接打開核心表的管理入口。若操作員直接編輯表,VBA 必填、日期警告與關聯同步都不會執行。

如果你要重建:不要照抄 409 欄巨表,要還原成領域模型

目前設計把「一件案件的一切」橫向鋪成欄位。新系統更適合把可重複、可多輪、可追歷史的東西變成子實體:

建議實體 承接目前哪些概念
AppealRequest/審査請求 一份請求書、首行、関連受付番号、整組總計、提出與收件路徑。
Party 請求人、共同請求人、代表者、代理人、補佐人、参加人、原処分庁;角色與聯絡資訊分開。
Matter/實件 稅目、年分、事件種、爭點、原處分、事件處理區分歷史、実與総延。
ChallengedDisposition/延件 每個獨立計件的處分,代替自動複寫的寬資料行。
PanelAssignment 担当審判官、参加審判官、部門、分担者、指定與變更歷史。
MilestoneEvent 所有「答求、初合、議決、法了……」改成事件類型+實際日+來源+備註,不再一日期一欄。
PlanRevision 當初計畫、每次修正計畫、修正理由與版號,保留完整歷史而非只留「當初/最新修正」。
Submission/DocumentRequest 答弁、反論、意見、回答、要求書類、多輪期限與收受;用角色和文書類型區分。
InvestigationActivity 面談、質問、檢查、資料要求、留置/返却、本部照會、最多五輪調查。
AccessCopyRequest 閱覽、寫し交付、謄寫、頁數、費用、繳費、減免、交付;可有任意多輪。
HoldPeriod/ExclusionPeriod 留保、再開與一年內統計排除;允許多段、原因、核准與計算結果。
Decision 議決、裁決、結果、理由、取消金額、裁決番号、公表判定、発送與送達。
AuditTrail 誰在何時改了什麼、覆寫哪個警告、為何手動調整收件日或統計口徑。

新系統至少要守住的資料不變條件

  1. 受付番号對外唯一,但內部主鍵用不可變 UUID;改受付番号不等於改實體身份。
  2. 一份 AppealRequest 必有且只有一個首行概念;同組 Party/Matter/Disposition 都指向同一根。
  3. 総総実総総延不由人輸入,而由明細即時計算;必要時保存報表快照,但不可有兩個真相。
  4. 新增一件及所有子項必須在同一交易中成功或全部回滾。
  5. 日期順序分成「絕對禁止」與「允許例外」;例外需原因、權限、時間與審批記錄。
  6. 法定期限、官方標準期間、內部模型日程是三種不同規則,分開配置、分開顯示。
  7. 同一事件可有多次分類變更、多次計畫修正、多次留保、多輪文書與閱覽,不用固定 1/2/3/5 欄位。
  8. 報表明確標示計件口徑(請求書/實件/延件)、期間起點(収受/収調)、完成點(議決/裁決/発送/送達)與排除條件。
  9. 個資與稅務敏感資料採最小權限、加密、匯出審批、下載追蹤與保留期限。

最安全的重建順序

  1. 先定義字典:把本文末的待確認問題逐一取得業務簽認。
  2. 做唯讀對帳層:先用視圖重現現有 727 查詢中真正被使用的口徑,不急著改 UI。
  3. 建立正規化領域模型:保留舊受付番号作外部識別,建立映射與資料品質報告。
  4. 先遷移計件與主時間軸:這兩塊是所有報表共同底座。
  5. 逐組替換文書/調查/閱覽:把固定輪次欄位改成可重複子表。
  6. 雙跑報表:新舊系統以同一基準日比較實件、延件、未済、平均期間及處理結果,差異必須能逐件解釋。
  7. 最後才關閉 Access 寫入:在交易、權限、審計、備份與回退全部驗證後切換。

重建前,一定要拿去問業務的 16 個問題

  1. A、B、C、D、E、A'的正式定義、選定條件與可變更權限是什麼?
  2. 請求書、実、延、総延、総総実、総総延的正式統計定義,是否與本文三層模型完全一致?哪些本稅/加算稅組合要合併計件?
  3. 収調在什麼情況可改、由誰核准、是否必須留原收件日與理由?
  4. 形回、予担回、文合、法回、再法、三次受理的正式全稱與完成條件是什麼?
  5. 每一張報表的「處理完成」到底用議決、裁決、発送還是送達?為何不同?
  6. 一年內比例的排除期間由誰認定?可否多段?起訖日是否含首尾?目前外部怎麼計算?
  7. 関連同步的 F 旗標由誰操作?-1 是永久例外、單次例外,還是只對首行同步有效?
  8. 次席決裁使用浄書終了F是否確為缺陷,或有極特殊業務意圖?
  9. UpdSousouUpdKanren2為何停用?是歷史事故、人工流程,還是已由外部作業取代?
  10. 11 碼受付番号目前還在使用嗎?若使用,自動複寫如何避免前綴錯誤?
  11. 日期警告允許覆寫是否有紙本/外部審批?哪些日期其實應該硬性禁止逆序?
  12. 事績処理3與「暫定版補完入力」是否仍屬正式業務?若是,0 筆是尚未上線還是資料在別處?
  13. 公表、重要案件、情報共有、本部照會與相互審查代碼的維護責任和生效日期如何管理?
  14. 刪除整組、直接編輯核心表、C:\temp匯出與「テーブル移行」的正式操作手冊、權限與備份程序在哪裡?
  15. 目前有沒有獨立的變更履歷、使用者權限與覆寫記錄?若沒有,稽核時如何還原誰改過資料?
  16. 694 張報表中,哪些仍在法定/管理作業使用,哪些只是歷史版?每張的業務 owner 是誰?

最後一張小抄:只記住這 12 句就夠了

  1. 這是案件管理與統計系統,不是自動法律判斷器。
  2. 一份請求書可以有多個實件;一個實件可以有多個延件。
  3. 関連受付番号把整組綁在首行;首行的請求書=1。
  4. 同一受付番号在三張核心表各有一行。
  5. 収調有值時,報表不用原収受日,而用収調算期間。
  6. 議決是合議體結論;裁決是正式行政判斷;発送與送達又是後續節點。
  7. 却下是程序不適法,棄却是實體理由不成立,取下げ是請求人撤回。
  8. 日期矛盾目前只是警告,使用者可以繼續。
  9. F=-1代表不要把首行值同步覆蓋到此欄。
  10. A~E是內部處理分類;固定加天數是管理模型,不是法定期限。
  11. 一年標準期間是官方目標;排除期間的完整計算不在這份 VBA 裡。
  12. 重建時先保計件、關聯、時間軸與報表口徑,再談漂亮畫面。

官方驗證來源

法令與運用會更新。本文核對時間為 2026-09-02;實際開發上線前,仍應重新確認當時生效版本及內部業務規程。

分析方法與可信度

原始 ACCDB 以 Access Automation Security 強制停用 VBA/巨集後唯讀盤點;匯出所有表、查詢、表單、報表、巨集、模組定義,再對核心 CRUD、驗證、關聯同步、日期函式、報表函式及關鍵查詢逐段追蹤。原檔未被修改,啟動巨集及匯入/轉換程序未執行。

最有把握的是:三表結構、關聯、欄位群、CRUD 順序、日期檢查可覆寫、関聯複寫、計件彙總函式、硬編碼模型日程與已註解呼叫。仍需內部確認的是:A~E與若干縮寫的正式業務定義、停用程式碼的決策背景、各報表 owner,以及一年內排除的實際外部作業。

一句收尾

讀懂這個系統的關鍵,不是背下 409 個欄位,而是抓住四條主線:誰在爭、爭幾個處分、程序走到哪裡、報表按什麼口徑計數。只要這四條在新系統中被建模正確,舊 VBA 再龐大也能逐層拆掉;若這四條沒定義清楚,換任何技術都只是在重做一個更漂亮的混亂。

This article was last edited at