程式資訊
- 程式 ID:
TICKA_VOIDRP - 所屬子系統:P.發票管理
- 狀態:stable
存證作廢折讓¶
功能簡介¶
「存證作廢折讓」(TICKA_VOIDRP,P-120)用來建立一筆作廢折讓的存證資料——也就是把一張先前已經開立的折讓單整張作廢的事實記錄下來,供日後與財政部電子發票整合服務平台(存證/媒體申報)勾稽。它會留下「哪一張折讓單(折讓單號 / 折讓日期)、由哪一方(賣方)對哪一方(買方)開立、為何作廢(作廢原因)、何時作廢(作廢日期)」這幾項要件。
本表單一次維護一張作廢折讓資料,是典型的單筆主檔維護畫面(無明細表),支援 新增/修改/刪除/查詢/列印。實際把這些資料上傳成電子發票平台所需的 CSV 媒體檔,是由另一支存證發票媒體匯出程式統一處理;本表單負責的是單張存證作廢折讓資料的維護。會用到這支表單的,通常是負責電子發票存證/申報的會計或開立人員。
本表單與「作廢發票」不同
本表單(存證作廢折讓,P-120)作廢的對象是折讓單,所以有 折讓單號/折讓日期 欄位。若要作廢的是整張發票而非折讓單,請改用存證作廢發票(P-100)。兩者單據結構不同(作廢發票帶發票號碼/核准文號,作廢折讓帶折讓單號),請勿混用。
前置需求¶
- 權限:P.進項/銷項發票 →
P-120 存證作廢折讓的新增/修改/刪除/瀏覽/列印權限。 - 基礎資料:以下資料的維護狀況會直接影響本表單欄位能否自動帶入——
| 資料 | 影響的結果 |
|---|---|
| 公司基本資料(公司名稱/電話/發票地點/公司地點/統一編號) | 新增時自動帶入買方(即自家公司)的名稱、電話、地址、統編 |
| 客廠部主檔(賣方對應的客戶/廠商),含發票抬頭、發票地點、統一編號 | 輸入賣方代號後自動帶入賣方統編/名稱/地址 |
| 原始折讓單 | 提供 折讓單號/折讓日期 等作廢標的的依據(人工輸入) |
買方=自家公司
這是一張「對外開立後再作廢」的存證資料,因此系統把買方預設成自己(公司基本資料第一筆),由你維護賣方這一側的資料。
操作步驟¶
新增一筆作廢折讓¶
- 按工具列的
新增。系統自動帶入下列預設值(詳見欄位連動與附加功能):- 買方資料(名稱、電話、地址、統編)取自公司基本資料第一筆。
- 作廢日期 預設為目前系統日期時間。
- 內部的發票作業別設為
CAN_ALW(作廢折讓作業碼)、內部公司代碼設為1。
- 在 賣方代號 欄輸入或以放大鏡(
CuspSearch)查詢賣方(原折讓單的開立方)。帶值後系統自動填入 賣方統編/賣方名稱/賣方地址。 - 填入 折讓單號、折讓日期(被作廢的那張折讓單)。
- 填入 作廢原因,並確認 作廢日期。
- 視需要調整 買方 各欄位(系統帶的是自家公司,可改)。
- 按
儲存。單號 於存檔後由系統自動編配。
查詢、修改與刪除¶
- 用工具列的
查詢/瀏覽功能(或上一筆/下一筆移動鈕)依 單號 等條件叫出既有資料。 - 按
修改調整內容後儲存;按刪除移除整筆。 - 賣方代號可在修改時重新輸入,重帶賣方統編/名稱/地址。
列印¶
- 叫出要列印的單據後,按工具列的
列印產生存證作廢折讓的報表。
小技巧
一次大量的存證作廢折讓不必逐張在這裡轉檔——維護好之後,由存證發票媒體匯出依發票日期區間一次把作廢折讓(連同正常/作廢/折讓/退回發票)整批匯出成電子發票平台的 CSV 媒體檔。
欄位說明¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 單號 | — | 唯讀,存檔後系統自動編配(最長 20 字) |
| 賣方代號 | — | 原折讓單開立方的客廠部代號;輸入後自動帶賣方統編/名稱/地址(最長 10 字) |
| 賣方統編 | — | 8 碼;由賣方代號帶入,可改 |
| 賣方名稱 | — | 由賣方代號帶入(優先取發票抬頭),最長 60 字 |
| 賣方地址 | — | 由賣方代號帶入的發票地址,最長 100 字 |
| 作廢日期 | — | 日期時間(yyyy/MM/dd HH:mm:ss,遮罩 ShortDateTime);新增時預設為目前系統時間 |
| 作廢原因 | — | 最長 20 字 |
| 折讓單號 | — | 被作廢的折讓單號,最長 16 字 |
| 折讓日期 | — | 被作廢折讓單的日期(yyyy/MM/dd,遮罩 ShortDate) |
| 買方統編 | — | 8 碼;新增時帶自家公司統編,可改 |
| 買方名稱 | — | 新增時帶自家公司名稱,最長 60 字 |
| 買方地址 | — | 新增時帶自家公司「發票地點」(無則取公司地點),最長 100 字 |
| 買方電話 | — | 新增時帶自家公司電話,最長 26 字 |
| 買方代號 | — | 內部欄位,新增時清空;買方來源以公司基本資料帶值為準 |
| 發票作業別 | — | 內部欄位,新增時固定為 CAN_ALW,畫面未顯示供輸入 |
| 公司代碼 | — | 內部欄位,新增時設為 1 |
日期欄位是字串格式
作廢日期/折讓日期 在資料層(Source)以字串保存(作廢日期含時間)。請依畫面遮罩完整輸入,避免送出電子發票媒體檔時格式不符。
新版 C# 沒有 VFP 舊版的存檔必填檢核
VFP 舊版(allowsave)在存檔時會逐項擋「作廢日期、公司代碼、買方代號、作廢原因」空白。目前新版 C# 的 Ticka_voidrpViewModel 未實作對應的存檔前檢核,畫面上各欄也未標記為必填。資料完整與否目前依賴操作者自行確認;上述欄位若空白,後續媒體匯出組出的 CSV 對應位置也會是空的,請務必填齊再存檔。
欄位連動與附加功能¶
這一節整理「輸入某欄位/按某動作後系統會做什麼」,全部依現行程式碼(Ticka_voidrpViewModel、Twork_inv_vw_ticka_voidrpSource、VFP ticka_voidrp)整理。
新增時的自動帶值(按 新增 → AfterAddNew)¶
按 新增 後,若公司基本資料(CompanyInfo)至少存在第一筆,系統會自動:
- 設定內部公司代碼 =
1。 - 把 買方 設成自家公司:買方名稱 = 公司名稱、買方電話 = 公司電話、買方統編 = 統一編號,並把內部的買方代號清空。
- 買方地址 取自家公司的「發票地點」;若發票地點空白,改取「公司地點」。
- 內部發票作業別 設為
CAN_ALW(作廢折讓作業碼,後續媒體匯出會用到)。 - 作廢日期 帶入目前系統日期時間(
DateTimeWrapper.Now())。
公司基本資料是自動帶值的前提
上述帶值整段包在「公司基本資料筆數 > 0」的條件內。若公司基本資料尚未維護,新增時買方欄位與作廢日期都會留空,需手動填寫。
輸入「賣方代號」後自動帶賣方資料(賣方代號Binding)¶
當你在 賣方代號 輸入代號並帶值(或用放大鏡選取)時,系統會以該代號去客廠部資料(GetCusp)查一筆。找到就帶入:
- 賣方統編 = 該客廠部的統一編號。
- 賣方名稱 = 優先取「發票抬頭」;若發票抬頭空白,改取客廠部名稱。
- 賣方地址 = 該客廠部的發票地址(
GetInvoiceAddress():依客/廠分類去 cudata/spdata 取「發票地點」,無則取「公司地點」)。
查不到(代號不存在於客廠部主檔)時,賣方統編/名稱/地址維持原值不變,不會清空。
對照 VFP 舊版的『公司代碼帶賣方』
VFP 舊版另有「公司代碼」下拉切換(公司代碼.COMBO1.LostFocus)時,連帶把該公司的統編/名稱/地點填進賣方欄的邏輯;買方則由「買方代號」LostFocus 帶值。新版改以 賣方代號 做為賣方資料的唯一來源(買方改由公司基本資料帶),公司代碼退為內部欄位(固定 1)。功能上以新版的 賣方代號 帶值為準。
移動/瀏覽資料(AfterMoverRecord)¶
切換到上一筆/下一筆或瀏覽選取既有單據時,系統只是把該筆載入畫面,不會重新帶任何預設值或重查賣方資料;畫面顯示的就是存檔當時的內容。若需要重新帶賣方資料,請在 賣方代號 欄重新觸發帶值。
媒體匯出時如何使用本資料(GetHeaderExportText / GetMasterExportText)¶
本表單存的每一筆作廢折讓,會在存證發票媒體匯出被組成電子發票平台的 CSV 兩種列:
- 表頭列(H):
H,買方統編,買方名稱,買方地址,買方電話,發票作業別(其中買方名稱/地址/電話會先Trim()去頭尾空白)。 - 資料列(M):
M,折讓單號,折讓日期,賣方統編,賣方名稱,賣方地址,作廢日期,作廢原因(其中賣方統編/名稱/地址、作廢日期、作廢原因會先Trim())。
匯出時這些作廢折讓會集中寫成「存證作廢折讓發票_起日_迄日.csv」,存到系統設定的匯出發票資料夾。所以本表單裡賣方/買方各欄與折讓單號/日期、作廢日期/原因的正確性,會直接決定送平台的媒體檔內容。
常見問題¶
輸入賣方代號後,賣方統編/名稱/地址沒有自動帶出來?
自動帶值是以 賣方代號 去客廠部資料(GetCusp)查一筆。若該代號在客廠部主檔不存在、或主檔沒維護統編/發票抬頭/發票地址(發票地點),就帶不出來。請先確認該賣方在客廠部主檔已建檔並維護好發票相關欄位;查無對應資料時舊值會保留不變,不會自動清空。
買方資料怎麼自動變成我們自己公司?可以改嗎?
這是設計——作廢折讓的買方就是自家公司,所以新增時系統用公司基本資料第一筆帶入買方名稱/電話/統編/地址(地址優先取「發票地點」,無則取「公司地點」)。各欄都可手動修改。
新增時沒有自動帶買方資料,作廢日期也是空的?
自動帶值整段的前提是公司基本資料至少有一筆。若公司基本資料尚未維護,新增時買方欄與作廢日期都會留空,需手動填寫。請先到系統設定維護公司基本資料。
存檔時沒有擋必填,可是匯出的媒體檔欄位是空的?
目前新版未實作 VFP 舊版的存檔必填檢核(見欄位說明下方提醒)。作廢日期、作廢原因、折讓單號、折讓日期、買方/賣方統編 若沒填,存檔仍會成功,但媒體匯出組出的 CSV 對應位置就會是空的。請在存檔前自行確認這些欄位都已填齊。
在這裡建好資料,平台媒體檔在哪裡產生?
本表單只負責維護單筆資料,不直接產生媒體檔。實際的 CSV 由存證發票媒體匯出依發票日期區間整批匯出,檔名為「存證作廢折讓發票_起日_迄日.csv」,放在系統設定的匯出發票資料夾。
單號要自己填嗎?
不用。單號 是唯讀欄位,存檔後由系統自動編配;新增畫面上會是空白。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/P-Invoice/images/):
ticka_voidrp-step1.png— 新增空白表單(買方自動帶自家公司、作廢日期帶系統時間)ticka_voidrp-step2.png— 輸入賣方代號後自動帶出賣方統編/名稱/地址ticka_voidrp-step3.png— 完整填妥準備存檔的畫面(含折讓單號/折讓日期/作廢原因)