程式資訊
- 程式 ID:
TICKA_M - 所屬子系統:P.發票管理
- 狀態:stable
輸入發票號碼(批量配號)¶
功能簡介¶
「輸入發票號碼」是一個彈出式小視窗(模態對話框,視窗標題即為「輸入發票號碼」),它的唯一工作是:把一段連續的統一發票字軌號碼一次批量建檔成空白發票。
它不是一張可以瀏覽、查詢的主檔,而是 銷貨發票(TICKA,H-100)按工具列 新增 時跳出來的配號視窗。你在這裡輸入字軌、年月與起訖號碼,按 儲存 後,系統會把起始~截止之間的每一個號碼各建成一張空白發票(課稅別 5.空白),並自動算好每張的檢查號碼;完成後視窗關閉,主檔自動定位到剛建立的第一張發票,接著就回到 銷貨發票 逐張帶入客戶與品項。
開立統一發票的會計人員會用到這支視窗——通常是領到一段新的發票字軌配號後,先用它把整段號碼登錄成空白發票備用。
本頁是配號視窗,不是發票主檔
本視窗只負責「建立空白號碼」。配號完成後,逐張帶入客戶/品項/金額、作廢、折讓、轉開立、電子發票匯出等完整操作,全部在 銷貨發票 主檔進行。本頁與該主檔是兩支程式(本視窗 ProgramClass 為 TICKA_M),但永遠搭配使用。
前置需求¶
- 權限:本視窗由 銷貨發票(
H-100)的新增動作觸發,因此需具備銷貨發票的新增權限。 - 配號資料:你必須先向稅捐機關取得(或已確認)這段要登錄的發票字軌與起訖號碼,且該段號碼符合統一發票配賦規定——
| 資料 | 影響什麼 |
|---|---|
| 統一發票配號(字軌 + 起訖號碼) | 決定要批量建立哪些空白發票號碼 |
| 憑證類別代碼(C2142) | 憑證類別下拉清單與其說明文字;預設帶 35 |
| 公司/發票年月 | 寫入每張空白發票的所屬期別(公司代碼固定帶 1) |
操作步驟¶
本視窗只有「填欄位 → 儲存」一個動作,沒有查詢、修改、刪除。
- 在 銷貨發票 主檔按工具列
新增,跳出「輸入發票號碼」視窗。 - 選擇 憑證類別(下拉,代碼來源 C2142;預設
35)。右側唯讀欄位會顯示該類別的說明文字。 -
輸入 發票年度(4 位西元年,預設今年)與 發票月份(預設當月)。
偶數月會自動退回前一個奇數月
統一發票以單月+雙月為「一期」。若你在發票月份輸入偶數月(如 8 月),系統會自動改成前一個奇數月(7 月),讓配號落在正確的期別開頭。
-
輸入 發票字軌(最多 2 碼,自動轉大寫)。游標預設停在此區,方便連續配號。
- 輸入 起始號碼 與 截止號碼(各最多 8 位數字,水印提示「輸入發票號碼8位」/「輸入8位數字」)。
- 按
儲存。系統做兩項檢核(見欄位連動與附加功能)後,把起始~截止之間每一個號碼各建一張空白發票,並算好檢查號碼。 - 建檔成功後視窗自動關閉,主檔定位到剛建立的第一張發票;若要放棄,按
取消直接關閉視窗、不建任何資料。
小技巧
一段字軌一次配滿即可(例如 00000050~00000099)。號碼會原樣產生成 字軌 + 8 碼 的發票號碼,後續逐張開立時不需再改號碼。
欄位說明¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 憑證類別 | ✔ | 下拉,代碼來源 C2142;預設 35。右側唯讀框顯示該類別說明 |
| 發票年度 | ✔ | 4 位西元年;預設今年(DateTime.Now.Year)。寫入時補成 4 碼 |
| 發票月份 | ✔ | 1~12;預設當月。輸入偶數月自動退回前一奇數月。寫入時補成 2 碼 |
| 發票字軌 | ✔ | 最多 2 碼,自動轉大寫;空值視為空字串 |
| 起始號碼 | ✔ | 最多 8 位數字;預設 0。末兩碼須為 00 或 50 |
| 截止號碼 | ✔ | 最多 8 位數字;預設 0。必須大於起始號碼 |
公司代碼與課稅別是系統固定值
批量產生的每張空白發票,公司代碼固定為 1、課稅別固定為 5.空白(空白發票),不在本視窗提供輸入;後續在 銷貨發票 帶入客戶與品項時再改成應稅/零稅/免稅。
欄位連動與附加功能¶
本節彙整「輸入某欄位/按某按鈕後系統會做什麼」,全部來自實際程式碼(Ticka_mViewModel)。
發票字軌 → 自動轉大寫¶
當你在 發票字軌 欄輸入內容,系統會即時把它轉成大寫(例如輸入 ab 會變 AB);若清空,內部以空字串處理。產生的發票號碼會以這個大寫字軌當前綴。
發票月份 → 偶數月自動退回奇數月¶
當你在 發票月份 欄輸入偶數(月份 ÷ 2 沒有餘數)時,系統會自動把它減 1,改成前一個奇數月。這是為了讓配號落在統一發票「單月+雙月」期別的開頭月份。輸入奇數月則維持原值。
憑證類別 → 顯示說明文字¶
憑證類別 是以 C2142 代碼為來源的下拉清單;選定後右側唯讀文字框會帶出該類別的說明(SelectedItem.Description)。預設值為 35。
按 儲存 → 配號檢核與批量建檔(SaveExecute)¶
按 儲存 後,系統依序執行:
-
起始號碼末兩碼檢核:把起始號碼補成 8 碼後取末兩碼,若不是
00也不是50,跳出「起始號碼 末兩碼 需為00或50 !!!」提示。此提示目前不會中止建檔
程式碼裡這項檢核只顯示提示訊息,並未中止後續流程——按掉提示後仍會照常批量建檔。也就是說,末兩碼不是
00/50時雖然會跳警告,發票還是會被建出來。請依提示自行確認起始號碼正確後再儲存。 -
起訖大小檢核:若截止號碼 ≤ 起始號碼,跳出「截止號碼 不得小於或等於 起始號碼 !!!」並中止(這項才真的會擋下建檔)。
- 逐號產生空白發票:從起始號碼跑到截止號碼,每一個號碼產生一筆主檔資料,欄位帶入——
- 公司代碼 =
1 - 發票年度 = 年度補 4 碼、發票月份 = 月份補 2 碼
- 憑證類別 = 你選的類別
- 發票號碼 =
字軌 + 號碼後 8 碼 - 課稅別 =
5.空白 - 檢查號碼 = 依該號碼即時計算(見下)
- 公司代碼 =
- 計算檢查號碼:把 8 位號碼逐位(第 1~8 位)乘上其位置權重(1~8),各取個位數(mod 10)後加總,補成 2 碼當作該張發票的檢查號碼。
- 批量上傳:呼叫上傳服務(以
TICKA主檔的資料表為目標),把整批空白發票以「新增」模式寫入資料庫。 - 回傳並導向:上傳成功後,從回傳訊息解析出新建第一張發票的 Pkid,關閉視窗並回傳成功;銷貨發票 主檔收到後自動
Navigate定位到該 Pkid。上傳失敗則顯示錯誤訊息、不關閉視窗。
按 取消 → 放棄配號¶
按 取消 會把視窗結果設為「否」並直接關閉,不建立任何發票。
本視窗沒有列印/匯出/轉傳票等功能
配號視窗只做批量建檔。列印統一發票、電子發票 CSV 匯出、應收/出貨轉發票、作廢、折讓等延伸功能,全部在 銷貨發票 主檔提供,本視窗不重複。
常見問題¶
按儲存時提示「起始號碼 末兩碼 需為00或50」?
統一發票配賦規定,一段配號的起始號碼末兩碼只能是 00 或 50。請把起始號碼調整成符合配號段開頭的號碼(例如 00000000、00000050、00000100…)。
Warning
目前版本這項提示不會中止建檔——按掉提示後號碼仍會照樣建出來。看到此提示請先取消、把起始號碼改成 00/50 結尾再重存,不要直接放任它建檔。
按儲存時提示「截止號碼 不得小於或等於 起始號碼」?
本視窗是「批量配一段連續號碼」,所以截止號碼必須大於起始號碼。若只想建一張,請把截止號碼設成比起始號碼大的下一個號碼。
發票月份輸入 8(八月),存檔後卻變成 7(七月)?
這是設計行為,不是錯誤。統一發票以單月+雙月為一期,系統會把輸入的偶數月自動退回前一個奇數月(8→7),讓配號落在該期別的開頭。若確實要配 7-8 月期,輸入 7 或 8 結果都會是 7。
字軌打小寫,建出來變大寫?
發票字軌會自動轉大寫,這是統一發票字軌的標準格式,屬正常行為。
配完號要去哪裡帶客戶和品項?
配號完成後視窗會關閉並把主檔定位到第一張新建發票。請回到 銷貨發票 主檔,逐張用上下筆移動、輸入客戶代號與明細品項後存檔開立。
新建出來的發票課稅別怎麼是「空白」?
批量配出來的是空白發票(課稅別固定 5.空白)作為號碼備用。等你在 銷貨發票 帶入客戶與品項、存檔時,再依稅別改成應稅/零稅/免稅;未使用的號碼則維持空白。
相關功能¶
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/P-Invoice/images/):
ticka_m-step1.png— 「輸入發票號碼」配號視窗整體(憑證類別/年月/字軌/起訖號碼)ticka_m-step2.png— 配號完成後回到銷貨發票主檔、定位到第一張新建發票