跳轉到

程式資訊

  • 程式 IDTICKA_REJ
  • 所屬子系統:P.發票管理
  • 狀態:stable

存證退回發票

功能簡介

「存證退回發票」用來登錄買方(本公司)退回賣方所開立發票的存證紀錄。每筆紀錄記下被退回的那張發票(發票號碼發票日期)、開票的賣方退回日期退回原因,作為向電子發票存證平台回報的依據。

這份資料不會自己上傳存證平台——它與作廢、折讓等其他存證單據一起,由存證發票匯出(TICKA_EXPORT) 在指定日期區間內彙整成 CSV 檔,再由人工上傳至存證平台。換句話說,本表單負責「把退回事實記下來」,匯出表單負責「把記下來的事實打包送出去」。

使用對象多為負責電子發票、進銷項稅務的會計或帳務人員。在流程上,它通常出現在銷貨發票(TICKA) 之後——當對方(賣方)開來的發票因故被退回時,於此補登一筆退回存證。

「賣方/買方」的視角

本表單站在買受人(本公司)的角度:買方=本公司(系統於新增時自動帶入),賣方=開立那張被退回發票的對象(廠商)。被退回的就是賣方開給本公司的那一張發票。

前置需求

  • 權限:P.發票 → P-090 存證退回發票 的新增/修改/刪除/瀏覽權限。
  • 基礎資料:下列主檔會影響自動帶入的內容——
資料 影響的結果
公司基本資料(環境設定 CompanyInfo 第一筆) 新增時自動帶入的 公司代碼/買方統編/買方名稱/買方地址/買方電話;匯出檔表頭列
廠商(賣方)主檔,含發票抬頭/發票地址/統一編號 輸入賣方代號後自動帶出的 賣方統編/賣方名稱/賣方地址

買方地址取用順序

買方地址優先取公司資料的發票地點;若發票地點空白,才退而取公司地點。請確認公司基本資料中「發票地點」已正確維護,否則匯出存證平台的買方地址可能不符。

操作步驟

本表單為單一主檔資料(無明細),操作以「新增一筆退回紀錄 → 儲存」為主軸。

新增一筆退回存證

  1. 按工具列的 新增。系統會自動帶入下列預設值(詳見欄位連動與附加功能):
    • 公司代碼1買方統編/買方名稱/買方地址/買方電話自動帶本公司資料。
    • 發票作業別REJ(畫面未顯示此欄,於背景設定)。
    • 退回日期=今天。
  2. 賣方代號輸入廠商代號(可用放大鏡查詢),離開欄位後系統自動帶出賣方統編/賣方名稱/賣方地址
  3. 輸入被退回那張發票的資訊:發票號碼(字軌+號碼,格式 XX99999999)、發票日期
  4. 填寫退回原因(最長 20 字)。
  5. 視需要調整退回日期(預設今天)。
  6. 按工具列的 儲存。系統會逐項檢核必填欄位(見欄位連動與附加功能),通過後寫入並由系統自動產生單號

單號自動編號

單號為唯讀,由系統於存檔時自動取號,無法手動輸入。

修改 / 刪除

  1. 用工具列的查詢、上一筆/下一筆(本表單支援 IMoveRecord 換筆瀏覽)移動到要處理的單據。
  2. 修改 後調整欄位,再 儲存;或按 刪除 移除該筆退回存證。

目前沒有列印功能

VFP 原程式工具列保留了列印鈕,但新版 C# 的 Ticka_rejViewModel 並未實作報表(無 GetReportsIPrintSource)。本表單目前不提供單張列印;要產出回報資料請走匯出流程。

匯出到存證平台

退回存證本身不在本表單匯出。請至存證發票匯出(TICKA_EXPORT),輸入日期起訖區間後執行匯出;系統會把區間內的退回發票一併產生為 存證退回發票_<起>_<迄>.csv(UTF-8)。詳見欄位連動與附加功能的「匯出格式」說明。

欄位說明

欄位 必填 說明 / 格式 / 預設
單號 唯讀,存檔時系統自動取號
賣方代號 開立被退回發票的廠商代號(可放大鏡查詢);輸入後自動帶出賣方統編/名稱/地址
賣方統編 8 碼數字,輸入賣方代號後自動帶入,可手改
賣方名稱 自動帶廠商「發票抬頭」(無則帶廠商名稱),可手改
賣方地址 自動帶廠商發票地址,可手改
退回日期 日期,新增預設今天
原因 退回原因,最長 20 字
發票日期 被退回那張發票的開立日期
發票號碼 被退回的發票字軌+號碼,格式 XX99999999
發票作業別 新增固定帶 REJ(程式背景設定,畫面未顯示輸入欄)
公司代碼 新增固定帶 1(畫面未顯示輸入欄)
買方統編 本公司統編,新增自動帶入
買方名稱 / 買方地址 / 買方電話 本公司資料,新增自動帶入,可手改

必填以存檔檢核為準

上表「必填」欄綜合了新版 C# 存檔檢核與 VFP 原程式。新版 C# 存檔實際擋下的欄位為:原因、退回日期、買方統編、賣方統編、發票號碼、發票日期(任一空白即不可儲存)。VFP 原程式則改擋 退回日期、公司代碼、賣方代號、原因;兩版重疊處為退回日期與原因。

欄位連動與附加功能

這一節把「輸入某欄位/做某動作後系統會怎麼反應」整理出來,全部來自實際程式行為(Ticka_rejViewModel.AfterAddNewTwork_inv_vw_ticka_rejSource.賣方代號BindingTicka_rejSave.AllowSaveTicka_exportBll 與 VFP ticka_rej)。

新增時的自動帶值(新增後立即發生)

當你按 新增AfterAddNew 會把本公司資料填進買方相關欄位,省去手動輸入。取的是環境設定 CompanyInfo第一筆公司資料:

  • 公司代碼自動帶 1
  • 買方名稱=公司名稱;買方電話=公司電話;買方統編=公司統一編號。
  • 買方地址=公司資料的發票地點;若發票地點空白,改帶公司地點
  • 發票作業別自動帶 REJ(退回,Reject)。
  • 退回日期自動帶今天
  • 買方代號清為空字串(本表單不使用買方代號欄位)。

小技巧

若本公司有多個營業據點而帶錯地址,請改維護公司基本資料的「發票地點」欄位,再重新 新增,比每次手改更可靠。

輸入賣方代號後自動帶賣方資料

賣方代號欄位綁定的是 賣方代號Binding。當你輸入廠商代號並離開欄位(觸發 setter),系統會以該代號去客廠部主檔查詢(GetSqlData.GetCusp,條件 客廠部代號='<你輸入的代號>'),取第一筆帶出:

  • 賣方統編=該廠商的統一編號
  • 賣方名稱=該廠商的發票抬頭;若發票抬頭空白,改帶客廠部名稱
  • 賣方地址=該廠商的發票地址GetInvoiceAddress())。

帶入後三個欄位仍可手動覆寫,存檔與匯出都以你最後留下的值為準。

對應 VFP 行為

VFP 原程式 ticka_rej 另有兩段欄位事件:「公司代碼 COMBO1.LostFocus 以 codata 重新帶買方資料」與「賣方代號 LostFocus 以 spdata 帶賣方資料」。新版做法不同——買方資料在 新增 當下一次帶齊(公司代碼固定 1,畫面不再顯示公司代碼下拉);賣方資料則維持「輸入賣方代號即帶」。功能等效,差別僅在帶入時機與資料來源(新版走 GetCusp 客廠部主檔)。

儲存時的必填檢核(儲存時發生)

儲存 時,Ticka_rejSave.AllowSave 在通過基底檢核後,依序檢核下列欄位,任一為空白即跳出提示並中止存檔(先擋到的先提示,提示文字為「請輸入<欄位名>」):

  1. 原因為空白 → 提示輸入原因。
  2. 退回日期為空白 → 提示輸入退回日期。
  3. 買方統編為空白 → 提示輸入買方統編。
  4. 賣方統編為空白 → 提示輸入賣方統編。
  5. 發票號碼為空白 → 提示輸入發票號碼。
  6. 發票日期為空白 → 提示輸入發票日期。

賣方代號不在 C# 檢核之列

新版只檢核賣方統編(不直接檢核賣方代號)。正常情況下輸入賣方代號就會自動帶出統編;但若你跳過賣方代號、直接手填統編也能存檔。VFP 原版則是直接檢核「賣方代號是否為空」。

匯出格式(由存證發票匯出處理)

退回發票在存證發票匯出 被歸到「退回發票」一類(匯出 SP 回傳的第 5 個結果集),輸出成兩種列:

  • 表頭列(H):由 GetHeaderExportText() 產生,內容為 H,買方統編,買方名稱,買方地址,買方電話,發票作業別。整批共用一行,發票作業別即 REJ
  • 明細列(M):每筆退回一行,由 GetMasterExportText() 產生,內容為 M,發票號碼,發票日期,賣方統編,賣方名稱,賣方地址,退回日期,原因

匯出檔名為 存證退回發票_<起日>_<迄日>.csv,編碼 UTF-8,固定落在 C:\轉EDI資料(由 Ticka_exportBll.GetPathContext.ERPIO.匯出發票資料夾 決定,路徑為程式內硬寫,畫面上無法選擇;資料夾不存在時系統會自動建立)。

匯出區間由匯出表單的日期決定

匯出時是否包含某筆退回,取決於匯出 SP(TWORK_QRY_TICKA_OUTPUT)以匯出表單輸入的起訖日期所篩出的結果集,而非本表單的退回日期欄位。若該筆退回沒有落在你於匯出表單輸入的日期區間,就不會被匯出。需要回報時請確認匯出區間涵蓋到對應的發票。

常見問題

按了「儲存」卻一直被擋,提示要輸入某欄位?

存檔會逐項檢核 原因、退回日期、買方統編、賣方統編、發票號碼、發票日期 六個欄位,任一空白都會中止。系統一次只提示第一個空白欄位,補完再存可能又提示下一個,請把這六欄都填齊。其中買方統編多由 新增 自動帶入;若為空白,通常代表公司基本資料缺統一編號。

輸入賣方代號後,賣方統編/名稱/地址沒有帶出來?

自動帶值來自客廠部(廠商)主檔(GetCusp)。請確認該賣方代號在主檔存在;若帶出的名稱不如預期,是因為系統優先取廠商的發票抬頭,發票抬頭空白時才用客廠部名稱,地址同理取發票地址。可在帶入後手動覆寫再儲存。

買方資料(統編/名稱/地址)帶錯或空白?

買方資料在 新增 時取自環境設定的公司基本資料(CompanyInfo 第一筆)。地址會先取發票地點、空白時才取公司地點。若帶錯,請更正公司基本資料後重新 新增,或直接在欄位手改後儲存。

登錄完成後,存證平台還是沒有這筆退回?

本表單只負責登錄,不會自動上傳。要送出存證平台,必須到存證發票匯出 依日期區間匯出 CSV,再人工上傳。請確認匯出區間有涵蓋到這筆退回對應的發票。

找不到列印按鈕,怎麼把這張退回單印出來?

新版本表單目前未實作列印報表。回報資料一律走匯出流程(CSV),不是逐張列印。若有單張列印需求請回報需求方評估。

單號欄位不能輸入?

單號為系統自動編號欄位(唯讀),於存檔當下取號,無法也不需要手動填寫。

相關功能


需補截圖清單

以下截圖待功能 runtime 驗收後補拍(放 docs/P-Invoice/images/):

  1. ticka_rej-step1.png — 新增後自動帶入買方資料、發票作業別=REJ、退回日期=今天的畫面
  2. ticka_rej-step2.png — 輸入賣方代號後自動帶出賣方統編/名稱/地址
  3. ticka_rej-step3.png — 完整填妥一筆退回存證(含發票號碼、發票日期、退回原因)準備儲存