程式資訊
- 程式 ID:
TICKA_REJ - 所屬子系統:P.發票管理
- 狀態:stable
存證退回發票¶
功能簡介¶
「存證退回發票」用來登錄買方(本公司)退回賣方所開立發票的存證紀錄。每筆紀錄記下被退回的那張發票(發票號碼、發票日期)、開票的賣方、退回日期與退回原因,作為向電子發票存證平台回報的依據。
這份資料不會自己上傳存證平台——它與作廢、折讓等其他存證單據一起,由存證發票匯出(TICKA_EXPORT) 在指定日期區間內彙整成 CSV 檔,再由人工上傳至存證平台。換句話說,本表單負責「把退回事實記下來」,匯出表單負責「把記下來的事實打包送出去」。
使用對象多為負責電子發票、進銷項稅務的會計或帳務人員。在流程上,它通常出現在銷貨發票(TICKA) 之後——當對方(賣方)開來的發票因故被退回時,於此補登一筆退回存證。
「賣方/買方」的視角
本表單站在買受人(本公司)的角度:買方=本公司(系統於新增時自動帶入),賣方=開立那張被退回發票的對象(廠商)。被退回的就是賣方開給本公司的那一張發票。
前置需求¶
- 權限:P.發票 →
P-090 存證退回發票的新增/修改/刪除/瀏覽權限。 - 基礎資料:下列主檔會影響自動帶入的內容——
| 資料 | 影響的結果 |
|---|---|
| 公司基本資料(環境設定 CompanyInfo 第一筆) | 新增時自動帶入的 公司代碼/買方統編/買方名稱/買方地址/買方電話;匯出檔表頭列 |
| 廠商(賣方)主檔,含發票抬頭/發票地址/統一編號 | 輸入賣方代號後自動帶出的 賣方統編/賣方名稱/賣方地址 |
買方地址取用順序
買方地址優先取公司資料的發票地點;若發票地點空白,才退而取公司地點。請確認公司基本資料中「發票地點」已正確維護,否則匯出存證平台的買方地址可能不符。
操作步驟¶
本表單為單一主檔資料(無明細),操作以「新增一筆退回紀錄 → 儲存」為主軸。
新增一筆退回存證¶
- 按工具列的
新增。系統會自動帶入下列預設值(詳見欄位連動與附加功能):- 公司代碼=
1、買方統編/買方名稱/買方地址/買方電話自動帶本公司資料。 - 發票作業別=
REJ(畫面未顯示此欄,於背景設定)。 - 退回日期=今天。
- 公司代碼=
- 在賣方代號輸入廠商代號(可用放大鏡查詢),離開欄位後系統自動帶出賣方統編/賣方名稱/賣方地址。
- 輸入被退回那張發票的資訊:發票號碼(字軌+號碼,格式
XX99999999)、發票日期。 - 填寫退回原因(最長 20 字)。
- 視需要調整退回日期(預設今天)。
- 按工具列的
儲存。系統會逐項檢核必填欄位(見欄位連動與附加功能),通過後寫入並由系統自動產生單號。
單號自動編號
單號為唯讀,由系統於存檔時自動取號,無法手動輸入。
修改 / 刪除¶
- 用工具列的查詢、上一筆/下一筆(本表單支援
IMoveRecord換筆瀏覽)移動到要處理的單據。 - 按
修改後調整欄位,再儲存;或按刪除移除該筆退回存證。
目前沒有列印功能
VFP 原程式工具列保留了列印鈕,但新版 C# 的 Ticka_rejViewModel 並未實作報表(無 GetReports/IPrintSource)。本表單目前不提供單張列印;要產出回報資料請走匯出流程。
匯出到存證平台¶
退回存證本身不在本表單匯出。請至存證發票匯出(TICKA_EXPORT),輸入日期起訖區間後執行匯出;系統會把區間內的退回發票一併產生為 存證退回發票_<起>_<迄>.csv(UTF-8)。詳見欄位連動與附加功能的「匯出格式」說明。
欄位說明¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 單號 | — | 唯讀,存檔時系統自動取號 |
| 賣方代號 | ✔ | 開立被退回發票的廠商代號(可放大鏡查詢);輸入後自動帶出賣方統編/名稱/地址 |
| 賣方統編 | ✔ | 8 碼數字,輸入賣方代號後自動帶入,可手改 |
| 賣方名稱 | — | 自動帶廠商「發票抬頭」(無則帶廠商名稱),可手改 |
| 賣方地址 | — | 自動帶廠商發票地址,可手改 |
| 退回日期 | ✔ | 日期,新增預設今天 |
| 原因 | ✔ | 退回原因,最長 20 字 |
| 發票日期 | ✔ | 被退回那張發票的開立日期 |
| 發票號碼 | ✔ | 被退回的發票字軌+號碼,格式 XX99999999 |
| 發票作業別 | — | 新增固定帶 REJ(程式背景設定,畫面未顯示輸入欄) |
| 公司代碼 | — | 新增固定帶 1(畫面未顯示輸入欄) |
| 買方統編 | ✔ | 本公司統編,新增自動帶入 |
| 買方名稱 / 買方地址 / 買方電話 | — | 本公司資料,新增自動帶入,可手改 |
必填以存檔檢核為準
上表「必填」欄綜合了新版 C# 存檔檢核與 VFP 原程式。新版 C# 存檔實際擋下的欄位為:原因、退回日期、買方統編、賣方統編、發票號碼、發票日期(任一空白即不可儲存)。VFP 原程式則改擋 退回日期、公司代碼、賣方代號、原因;兩版重疊處為退回日期與原因。
欄位連動與附加功能¶
這一節把「輸入某欄位/做某動作後系統會怎麼反應」整理出來,全部來自實際程式行為(Ticka_rejViewModel.AfterAddNew、Twork_inv_vw_ticka_rejSource.賣方代號Binding、Ticka_rejSave.AllowSave、Ticka_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 在通過基底檢核後,依序檢核下列欄位,任一為空白即跳出提示並中止存檔(先擋到的先提示,提示文字為「請輸入<欄位名>」):
- 原因為空白 → 提示輸入原因。
- 退回日期為空白 → 提示輸入退回日期。
- 買方統編為空白 → 提示輸入買方統編。
- 賣方統編為空白 → 提示輸入賣方統編。
- 發票號碼為空白 → 提示輸入發票號碼。
- 發票日期為空白 → 提示輸入發票日期。
賣方代號不在 C# 檢核之列
新版只檢核賣方統編(不直接檢核賣方代號)。正常情況下輸入賣方代號就會自動帶出統編;但若你跳過賣方代號、直接手填統編也能存檔。VFP 原版則是直接檢核「賣方代號是否為空」。
匯出格式(由存證發票匯出處理)¶
退回發票在存證發票匯出 被歸到「退回發票」一類(匯出 SP 回傳的第 5 個結果集),輸出成兩種列:
- 表頭列(H):由
GetHeaderExportText()產生,內容為H,買方統編,買方名稱,買方地址,買方電話,發票作業別。整批共用一行,發票作業別即REJ。 - 明細列(M):每筆退回一行,由
GetMasterExportText()產生,內容為M,發票號碼,發票日期,賣方統編,賣方名稱,賣方地址,退回日期,原因。
匯出檔名為 存證退回發票_<起日>_<迄日>.csv,編碼 UTF-8,固定落在 C:\轉EDI資料(由 Ticka_exportBll.GetPath → Context.ERPIO.匯出發票資料夾 決定,路徑為程式內硬寫,畫面上無法選擇;資料夾不存在時系統會自動建立)。
匯出區間由匯出表單的日期決定
匯出時是否包含某筆退回,取決於匯出 SP(TWORK_QRY_TICKA_OUTPUT)以匯出表單輸入的起訖日期所篩出的結果集,而非本表單的退回日期欄位。若該筆退回沒有落在你於匯出表單輸入的日期區間,就不會被匯出。需要回報時請確認匯出區間涵蓋到對應的發票。
常見問題¶
按了「儲存」卻一直被擋,提示要輸入某欄位?
存檔會逐項檢核 原因、退回日期、買方統編、賣方統編、發票號碼、發票日期 六個欄位,任一空白都會中止。系統一次只提示第一個空白欄位,補完再存可能又提示下一個,請把這六欄都填齊。其中買方統編多由 新增 自動帶入;若為空白,通常代表公司基本資料缺統一編號。
輸入賣方代號後,賣方統編/名稱/地址沒有帶出來?
自動帶值來自客廠部(廠商)主檔(GetCusp)。請確認該賣方代號在主檔存在;若帶出的名稱不如預期,是因為系統優先取廠商的發票抬頭,發票抬頭空白時才用客廠部名稱,地址同理取發票地址。可在帶入後手動覆寫再儲存。
買方資料(統編/名稱/地址)帶錯或空白?
買方資料在 新增 時取自環境設定的公司基本資料(CompanyInfo 第一筆)。地址會先取發票地點、空白時才取公司地點。若帶錯,請更正公司基本資料後重新 新增,或直接在欄位手改後儲存。
登錄完成後,存證平台還是沒有這筆退回?
本表單只負責登錄,不會自動上傳。要送出存證平台,必須到存證發票匯出 依日期區間匯出 CSV,再人工上傳。請確認匯出區間有涵蓋到這筆退回對應的發票。
找不到列印按鈕,怎麼把這張退回單印出來?
新版本表單目前未實作列印報表。回報資料一律走匯出流程(CSV),不是逐張列印。若有單張列印需求請回報需求方評估。
單號欄位不能輸入?
單號為系統自動編號欄位(唯讀),於存檔當下取號,無法也不需要手動填寫。
相關功能¶
- 銷貨發票(TICKA)
- 存證發票匯出(TICKA_EXPORT)
- 存證作廢發票(TICKA_VOID)
- 存證作廢折讓(TICKA_VOIDRP)
- 存證折讓發票(TICKA_DISC)
- P.發票模組首頁
- G.採購模組首頁
- B.基本資料模組首頁
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/P-Invoice/images/):
ticka_rej-step1.png— 新增後自動帶入買方資料、發票作業別=REJ、退回日期=今天的畫面ticka_rej-step2.png— 輸入賣方代號後自動帶出賣方統編/名稱/地址ticka_rej-step3.png— 完整填妥一筆退回存證(含發票號碼、發票日期、退回原因)準備儲存