程式資訊
- 程式 ID:
TICKA_EXPORT - 所屬子系統:P.發票管理
- 狀態:stable
發票批量匯出¶
功能簡介¶
「發票批量匯出」把指定發票日期區間內、由 發票存證資料維護 產生的存證電子發票,整批轉成 EDI 上傳用的 CSV 檔,固定輸出到本機 C:\轉EDI資料 資料夾,供後續匯入存證/EDI 平台。會計或帳務人員在每月(或每期)申報前,用這支表單把當期「開立/作廢/折讓/折讓作廢/退回」各類發票一次匯出,並把已匯出的發票回寫匯出人員/匯出時間做為已匯出註記。
本表單採分頁設計,共兩個頁籤:
- 發票匯出:查出區間內可匯出的存證發票,勾選後按存檔即同時產生 CSV 並回寫匯出註記;另提供「僅匯出作廢及折讓」純匯出鈕。
- 空白未使用字軌上傳:把區間內尚未使用的空白發票字軌(空號區段)匯出成空白發票 CSV,供存證平台登錄未使用字軌。
用途定位
本頁是 發票存證資料維護 的衍生匯出工具(同屬存證發票 TICKA 家族),本身不維護發票內容,只負責「批量查出 → 匯出 CSV → 回寫匯出註記」。發票的開立、作廢、折讓請回各自的維護表單處理。
前置需求¶
- 權限:P.發票 →
發票批量匯出的瀏覽權限。 - 匯出資料夾:系統固定把 CSV 寫到本機
C:\轉EDI資料。此資料夾由系統自動建立,請確認執行端對該路徑有寫入權限。 - 基礎資料:匯出內容取決於下列資料的維護狀況——
| 資料 | 影響的結果 |
|---|---|
| 存證發票(TICKA,含發票日期、客戶、金額) | 「發票匯出」頁可查出與匯出的發票來源 |
| 公司基本資料(統一編號、公司名稱、發票地點、公司電話) | 作廢/折讓 CSV 的表頭(H 列),以及空白發票的統一編號 |
| 客戶/買賣方資料(統一編號、名稱、地址、電話) | 退回/折讓作廢 CSV 表頭的買方資訊,以及各類 CSV 的客戶欄位 |
| 已使用/未使用的發票字軌 | 「空白未使用字軌上傳」頁查出的空號區段 |
操作步驟¶
頁籤一:發票匯出¶
- 在 起始發票日期 與 截止發票日期 欄位輸入要匯出的發票日期區間(預設皆為今天)。
- 按工具列的
查詢。系統以發票日期 between 起始 and 截止為條件,透過異動轉檔機制查出區間內的存證發票:- 查得的發票顯示在上方 發票匯出 格線,且查詢時系統會把每一筆預設標記為要匯出(
IsSelected = true)。 - 若有發票正被其他使用者鎖定(編輯中),會列在下方 Locked Source 格線,並在標題旁以紅字顯示鎖定筆數;被鎖定的發票無法匯出。
- 查得的發票顯示在上方 發票匯出 格線,且查詢時系統會把每一筆預設標記為要匯出(
-
確認上方格線中的發票即為本次要匯出的內容。
目前無逐筆勾選欄
本表單的發票匯出格線目前沒有提供勾選欄,查到的發票會整批視為要匯出(程式在查詢時把每筆標記為選取)。存檔時的「請先選擇一筆資料」檢核,實際上是用來擋「查詢結果為空」的情形。
- 確認下方 異動後 匯出人員(預設帶目前登入者)與 異動後 匯出時間(預設帶當下時間),需要時可修改。
- 按工具列的存檔,系統會:
- 產生各類發票的 CSV 檔到
C:\轉EDI資料(見下方欄位連動與附加功能)。 - 把上方格線中標記為選取的發票回寫 匯出人員/匯出時間(標記為已匯出)。
- 每寫出一個檔案,跳出「已匯出資料---<完整路徑>」訊息。
只想重出檔、不想改匯出註記
若只是要重新產生作廢及折讓的 CSV(不想動到資料庫的匯出註記),輸入日期區間後直接按右側的 僅匯出作廢及折讓 鈕——它只跑匯出、不回寫任何欄位。
存檔前一定要先查詢
存檔時若查詢結果為空(沒有任何標記為選取的發票),會擋下並提示「請先選擇一筆資料」;匯出人員 空白會提示「請先輸入匯出人員」、匯出時間 空白會提示「請先輸入匯出時間」,同樣擋存檔。
頁籤二:空白未使用字軌上傳¶
- 切到 空白未使用字軌上傳 頁。起始發票日期/截止發票日期 預設帶「當月 1 日~當月 31 日」。
- 視需要調整日期區間。
-
按
匯出。系統查出區間內未使用的發票字軌空號,依字軌分段(以號碼末兩位 49/99 為界切成兩段),輸出成空白發票_起始_截止.csv到C:\轉EDI資料,並跳出「已匯出資料---<路徑>」訊息。目前無手動輸入字軌的欄位
程式內部保留了「手動輸入字軌區段」與其去重併入的機制(並預備了 50 列空白序號),但目前的畫面沒有提供輸入這些字軌的格線,因此實際匯出的內容只有 SQL 查出的未使用空號。
課稅別固定 07
空白發票匯出時,每筆發票類別固定帶 07(一般稅額);所屬年月以截止日期換算成民國年月(YYYMM)。
欄位說明¶
發票匯出頁 — 查詢條件¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 起始發票日期 | ✔ | 短日格式;預設今天。查詢以發票日期比對 |
| 截止發票日期 | ✔ | 短日格式;預設今天 |
| 異動後 匯出人員 | ✔ | 存檔時回寫到發票的匯出人員;預設帶目前登入者代號 |
| 異動後 匯出時間 | ✔ | 短日期時間格式;存檔時回寫到發票的匯出時間;預設當下時間 |
發票匯出頁 — 結果格線¶
| 欄位 | 說明 |
|---|---|
| 發票年度/發票月份 | 發票所屬年月 |
| 憑證類別/發票別 | 發票分類 |
| 發票號碼/檢查號碼 | 發票字軌號碼與檢查碼 |
| 發票日期 | 比對查詢區間用 |
| 隸屬倉庫/倉單號/單號 | 來源單據資訊 |
| 客戶代號/客戶簡稱/客戶名稱/統一編號 | 買方資訊 |
Locked Source 格線(被鎖定無法匯出者)¶
| 欄位 | 說明 |
|---|---|
| 修改人員 | 目前正在編輯/鎖定該發票的使用者 |
| 發票年度/月份/憑證類別/發票別/發票號碼/檢查號碼/發票日期/隸屬倉庫/倉單號/客戶代號/客戶簡稱 | 被鎖定發票的識別資訊 |
空白未使用字軌上傳頁¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 起始發票日期 | ✔ | 預設當月 1 日 |
| 截止發票日期 | ✔ | 預設當月 31 日 |
欄位連動與附加功能¶
這一節把「按某鈕/改某欄位後,系統實際會做什麼」逐條列出,全部對應程式碼行為。
發票匯出頁的查詢(查詢 鈕)¶
當你按 查詢,系統會:
- 檢查 起始發票日期 與 截止發票日期 都不可空白(任一空白會分別提示「起始日期不得為空白」「截止日期不得為空白」)。
- 以
發票日期 between N'起始' and '截止'為條件,透過異動轉檔程序(TWORK_TUR_TICKA_EXPORT)查存證發票主檔。 - 把回傳的第一個資料表當作 Locked Source(被他人鎖定/編輯中的發票)填入下方格線,並更新紅字鎖定筆數。
- 把回傳的第二個資料表當作可匯出發票填入上方 發票匯出 格線,且每一筆預設標記為選取(
IsSelected = true)。畫面上沒有提供取消選取的勾選欄,因此查到的發票會整批匯出。
發票匯出頁的存檔(產生 CSV + 回寫匯出註記)¶
存檔時系統先做檢核:標記為選取的發票必須至少一筆(即查詢結果不可為空,否則提示「請先選擇一筆資料」)、匯出人員 不可空白(提示「請先輸入匯出人員」)、匯出時間 不可空白(提示「請先輸入匯出時間」),否則擋存檔。通過後依下表把不同類別的發票各寫成一個 CSV 到 C:\轉EDI資料(檔名中的日期取自查詢區間),並對每個產出的檔案跳出「已匯出資料」訊息:
| 類別 | 匯出檔名(區間日期以 YYYYMMDD 代入) |
內容/格式重點 |
|---|---|---|
| 正常開立發票 | 存證開立發票_起始_截止.csv |
逐筆輸出該發票的 outputcsv 字串 |
| 作廢發票 | 存證作廢發票_起始_截止.csv |
表頭 H,統編,公司名稱,發票地點,公司電話,CAN;明細 M,發票號碼,發票日期,…,作廢日期,作廢原因,核准文號 |
| 折讓發票 | 存證折讓發票_起始_截止.csv |
表頭 H,…,CRE_ALW;依折讓單號分組,每組先出 M(主檔,金額/稅額四捨五入至整數)再出多筆 D(明細,數量/單價/未稅/稅額取小數 4 位) |
| 折讓作廢發票 | 存證作廢折讓發票_起始_截止.csv |
由折讓作廢檢視(voidrp)輸出,先出一列 H 表頭(買方統編/名稱/地址/電話+作業別),再逐筆出 M 明細(折讓單號、折讓日期、賣方資訊、作廢日期、作廢原因) |
| 退回發票 | 存證退回發票_起始_截止.csv |
由退回檢視(rej)輸出,先出一列 H 表頭(買方統編/名稱/地址/電話+作業別),再逐筆出 M 明細(發票號碼、發票日期、賣方資訊、退回日期、原因) |
CSV 全部以 UTF-8 編碼寫出。哪一類有資料才會產生對應檔案;某類別查無資料就不會出檔。
回寫部分:存檔成功時,系統把上方格線中標記為選取的發票標記為異動(SysRowStatus = E),並把你在下方輸入的 匯出時間(格式化為 yyyy/MM/dd HH:mm:ss)與 匯出人員 寫回每一筆,再透過異動轉檔上傳回 TICKA 主檔(明細表 ticka_d 此處不帶異動列)。完成後本次的查詢結果與鎖定清單會被清空(避免重複匯出)。
匯出資料夾固定不可改
匯出路徑固定為 C:\轉EDI資料(程式內 匯出發票資料夾 屬性硬寫),目前不提供在畫面上選資料夾。資料夾不存在時系統會自動建立。
僅匯出作廢及折讓 鈕¶
按此鈕只跑匯出、不回寫任何欄位、也不做存檔檢核(不檢查是否有查詢結果、不檢查匯出人員/時間):
- 它以同一支
TWORK_QRY_TICKA_OUTPUT程序查資料,但略過正常開立發票,只輸出 作廢/折讓/折讓作廢/退回 四類 CSV。 - 適合「正常發票已匯出過、只需補出作廢及折讓檔」或「重出一次作廢/折讓檔」的情境。
空白未使用字軌上傳頁(匯出 鈕)¶
當你在第二個頁籤按 匯出,系統會:
- 以
TWORK_QRY_TICKA_BLANK程序查出區間內未使用的發票字軌(位置參數lp_p1=1、起始/截止日期)。 - 把每筆字軌依末兩位切段:末兩位 ≤49 者迄號補到
…49,否則補到…99;同一迄號的多段取最小起號合併成一筆。 - 程式另保留一份手動輸入字軌區段的併入邏輯(需字軌/發票起號/發票迄號三欄都有值,
IsValid()才成立,重疊於 SQL 查出的區段者不重複加入),但目前畫面未提供輸入欄位,這份清單實際為空、不影響輸出。 - 重新編流水序號,每筆帶 發票類別
07(一般稅額)與依截止日期換算的所屬年月(民國YYYMM)、公司統一編號(取公司基本資料第一筆)。 - 輸出
空白發票_起始_截止.csv(UTF-8)到C:\轉EDI資料,每列格式為序號,統一編號,所屬年月,字軌,發票起號,發票迄號,發票類別,並跳出匯出完成訊息。
常見問題¶
按查詢沒有任何發票被列出?
請確認:① 起始/截止發票日期區間內確實有存證發票(發票日期落在區間內);② 該批發票尚未被匯出鎖定。若發票正被其他人編輯,會被列到下方 Locked Source 而非可匯出清單,需待對方釋放後再查。
存檔時跳「請先選擇一筆資料」?
存檔會匯出查詢到的發票。查詢時每筆都會被標記為選取,但若查詢結果為空(區間內沒有可匯出的發票)就會被擋。請先按 查詢 取得資料再存檔。
存檔被擋,提示要輸入匯出人員或匯出時間?
下方 異動後 匯出人員/異動後 匯出時間 為必填,存檔時會回寫到發票做為已匯出註記。預設已帶登入者與當下時間,若被清空請重新填入。
C:\轉EDI資料 裡找不到某一類檔案(例如沒有作廢檔)?
匯出採「哪類有資料才出檔」。例如該區間沒有作廢發票,就不會產生 存證作廢發票_*.csv。請確認該區間內確實有對應類別的發票。另外 僅匯出作廢及折讓 鈕刻意不出正常開立發票檔,若需要正常發票檔請改走查詢後存檔流程。
只想重出作廢/折讓檔,不想動到已匯出的註記怎麼辦?
用 僅匯出作廢及折讓 鈕。它只產生作廢/折讓/折讓作廢/退回四類 CSV,不做存檔檢核、也不回寫匯出人員/匯出時間,因此不會改變資料庫狀態。
空白字軌匯出後內容不對/少了某段?
空白發票區段以號碼末兩位 49/99 為界切段;同一迄號的多段會取最小起號合併成一筆。目前畫面只匯出 SQL(TWORK_QRY_TICKA_BLANK)查出的未使用空號,沒有手動補字軌的輸入欄。若某段沒出現,請確認該字軌在區間內確實仍是未使用狀態。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/P-Invoice/images/):
ticka_export-step1.png— 「發票匯出」頁全貌(日期區間 + 查詢 + 結果格線 + 匯出人員/時間)ticka_export-step2.png— 查詢後上方可匯出格線與下方 Locked Source 鎖定清單ticka_export-step3.png— 「空白未使用字軌上傳」頁(日期區間 + 匯出鈕 + 匯出路徑提示)