程式資訊
- 程式 ID:
CHANGENO - 所屬子系統:Other
- 狀態:stable
單號變更(改號工具)¶
功能簡介¶
「單號變更」是一支共用的改號小工具彈窗:它不是主選單上獨立的程式,而是由其他單據(傳票、財產、暫收款、發票)在編輯時呼叫出來,用來把既有單據上的某個關鍵欄位(單號/編號/客戶)換成新值。
整支表單分成四個頁籤,但一次只會啟用其中一個——由開啟它的母程式決定:
| 頁籤 | 由誰開啟 | 改什麼 |
|---|---|---|
| 傳票改號 | 總帳傳票(傳票輸入)的 改傳票號 功能 |
把目前傳票的傳票號碼換成新號 |
| 財產編號改號 | 財產(VFP ASSET) |
把財產的財產編號換成新號 |
| 更改暫收客戶 | 暫收款(應收/應付) | 把暫收單的收款客戶換成另一個客戶 |
| 確認發票資料 | 進出貨發票(VFP TICKA / RP) |
檢視/確認發票的稅額、含未稅金額 |
它源自 VFP 舊版的共用表單 _CHANGENO——舊版各模組都用 DO FORM _CHANGENO WITH '<模式>' 把模式字串(SLIY/ASSET/SUSPENSE/更新進出貨發票、進項發票核對)帶進來決定要顯示哪一段。新版改用 TabControlSelectedIndex(0~3)達到同樣效果。
目前實際接上的只有「傳票改號」
在新版 C# 中,真正會把這支彈窗叫出來的只有傳票改號(由 SliyViewModel.ExtendedFunction3/改傳票號 觸發)。其餘三個頁籤的畫面雖然已建好,但:
- 更改暫收客戶:彈窗內已有寫回邏輯,但目前沒有任何母程式呼叫它(規劃中)。
- 財產編號改號、確認發票資料:按
儲存不會做任何寫回動作(尚未提供)。
以下文件以傳票改號為主軸說明;其他頁籤僅描述規劃用途,請勿當成可用功能。
前置需求¶
- 權限:本彈窗本身沒有獨立的選單權限(
ProgramClass.CHANGENO為內部共用程式,不在主選單)。能不能改號取決於母程式的修改權限——例如要改傳票號,必須有總帳傳票的修改權限,且該傳票目前可進入編輯狀態。 - 必須先有一張單據:改號是針對「目前畫面上這一張單」動作,不是新增資料。開啟前一定要先在母程式上定位到要改的那張單據。
| 資料 | 影響什麼 |
|---|---|
| 目前定位的傳票(總帳傳票主檔 sliym) | 「傳票改號」頁籤的舊傳票號碼來源、改號的目標 |
| 客戶主檔 | 「更改暫收客戶」頁籤的客戶代號查詢與名稱帶出 |
| 傳票是否在可編輯狀態 | 母程式 改傳票號 會先嘗試進入編輯(Edit()),失敗則不開窗 |
操作步驟¶
傳票改號(主要功能)¶
- 在總帳傳票畫面上,先用導覽列定位到要改號的那張傳票。
- 按工具列的
改傳票號(母程式的 ExtensionFunction)。系統會先把該傳票帶入編輯狀態;若無法進入編輯(例如已關帳、權限不足),彈窗不會出現。 - 彈窗開啟後,上方舊傳票號碼已自動填入目前傳票的號碼,且為唯讀、不可改。
- 在新傳票號碼輸入想要改成的號碼。
- 按
儲存。系統把新號寫回目前傳票,並關閉彈窗(回到母程式)。 - 回到傳票畫面後,依母程式的存檔流程完成存檔,改號才會真正寫進資料庫。
改號不會自己進資料庫
彈窗的 儲存 只是把新號填回畫面上的傳票物件;真正落地是靠母程式(傳票)後續的存檔動作。換句話說,改完號若在傳票畫面取消/不存檔,號碼不會變動。
取消改號
按 取消(離開)即關閉彈窗、不做任何寫回,舊號維持不變。
更改暫收客戶(規劃中)¶
尚未由任何母程式啟用
此頁籤的設計用途是:把一張暫收款單據的收款對象,從舊客戶改成新客戶。畫面上:
- 舊客戶資料:自動帶入暫收單目前的客戶代號與名稱(唯讀)。
- 新客戶資料:用客戶查詢框(放大鏡)挑選新客戶,代號輸入後自動帶出名稱。
- 按
儲存會把暫收主檔的客廠部代號與收付客廠號一起改成新客戶。
程式內已具備上述寫回邏輯,但目前沒有母程式呼叫此頁籤,畫面上不會出現屬正常。
財產編號改號 / 確認發票資料(尚未提供)¶
畫面已建、功能未接
這兩個頁籤目前只有版面:
- 財產編號改號:可輸入舊/新財產編號,但
儲存在程式中是空動作,不會寫回。 - 確認發票資料:以唯讀方式顯示發票號碼、日期、稅別、未稅/稅額/含稅金額,純檢視;
儲存同樣不做任何寫回。
這兩段是 VFP _CHANGENO 中 ASSET、發票 模式的版面移植,後續才會接上寫回邏輯。
欄位說明¶
傳票改號頁籤¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 舊傳票號碼 | — | 唯讀。開窗時自動帶入目前傳票的傳票號碼 |
| 新傳票號碼 | ✔ | 要改成的傳票號碼;按 儲存 後寫回畫面上的傳票 |
更改暫收客戶頁籤(規劃中)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 舊客戶代號/名稱 | — | 唯讀。開窗時帶入暫收單目前客戶,名稱由系統依代號查出 |
| 新客戶代號 | ✔ | 以客戶查詢框挑選,輸入後自動帶出名稱 |
| 新客戶名稱 | — | 唯讀,依新客戶代號自動帶出 |
確認發票資料頁籤(檢視用)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 發票號碼/發票日期 | — | 唯讀,顯示發票基本資料 |
| 稅別 | — | 唯讀,稅別代號 |
| 發票金額(未稅)/稅額/發票金額(含稅) | — | 唯讀,金額欄位 |
欄位連動與附加功能¶
這是本頁最關鍵的一節——把「輸入或按下什麼,系統會做什麼」逐條列出,全部依實際程式碼。
- 開窗時自動帶入舊值(傳票改號):彈窗建立時,會從母程式(傳票)取得目前定位那一筆傳票主檔,把它的傳票號碼填進
舊傳票號碼。此欄唯讀,使用者不能改。 - 開窗時自動帶入舊客戶(更改暫收客戶):建立時取得暫收主檔,把客廠部代號填進
舊客戶代號,並用系統的客戶/廠商/部門名稱查詢,自動補上舊客戶名稱。 - 新客戶代號輸入後帶名稱(更改暫收客戶):新客戶欄位是客戶查詢框;選定或輸入客戶代號後,系統會帶出對應的新客戶名稱到右側唯讀欄。
- 只啟用一個頁籤:四個頁籤的
IsEnabled預設全為false,彈窗依母程式指定的頁籤索引(0~3)只把其中一個設為可用,其餘維持停用、不能切換。這是用來把一支共用表單依呼叫情境「鎖」在正確的頁籤。 儲存的行為依頁籤而異:- 傳票改號:把
新傳票號碼寫回母程式畫面上的傳票主檔(傳票號碼),並把彈窗結果設為成功後關閉。 - 更改暫收客戶:把
新客戶代號同時寫回暫收主檔的客廠部代號與收付客廠號兩個欄位(規劃中,目前無人呼叫)。 - 財產編號改號 / 確認發票資料:
儲存為空動作,不寫回任何欄位。
- 傳票改號:把
取消(離開):把彈窗結果設為失敗並關閉,不做任何寫回;母程式的單據維持原樣。- 改號真正落地靠母程式:彈窗只改畫面上的物件,不直接打資料庫。以傳票改號為例,母程式
改傳票號會先讓傳票進入編輯狀態才開窗;彈窗關閉回去後,要靠母程式的存檔流程把新號寫入資料庫。
沒有的功能不要找
這支彈窗沒有新增、刪除、查詢清單、列印、轉傳票、簽核、附件、Excel 匯入匯出等功能。它就是一個「填新值 → 寫回 → 關閉」的小工具,所有列印/簽核/轉傳票請回到對應的母程式操作。
常見問題¶
按了母程式的「改傳票號」卻沒有跳出視窗?
母程式會先嘗試把傳票帶入編輯狀態,只有成功進入編輯才會開窗。若傳票已關帳、被鎖定、或目前帳號沒有修改權限,就不會開窗。請先確認該傳票可以編輯。
在彈窗改了新傳票號碼,回到傳票畫面卻發現沒變?
彈窗的 儲存 只是把新號填回畫面上的傳票,真正寫入資料庫要靠傳票畫面後續的存檔。若改完號在傳票畫面按了取消或沒有存檔,號碼就不會變。請改完號後務必在傳票完成存檔。
「新傳票號碼」可以隨便輸入嗎?會不會撞號?
彈窗本身只負責把值填回去,不在此處檢核是否重號(畫面上原本的重號檢核規則目前為註解保留狀態)。是否撞到既有傳票號,會在母程式存檔時依資料庫主鍵規則把關,請避免輸入已存在的號碼。
「財產編號改號」「確認發票資料」按儲存沒有反應?
這兩個頁籤在新版尚未接上寫回邏輯(儲存 為空動作),目前只有版面。詳見欄位連動與附加功能。財產與發票的改號/確認請暫以對應母程式提供的方式處理。
找不到「更改暫收客戶」這個畫面?
此頁籤目前沒有任何母程式會呼叫,屬規劃中功能,因此在系統中不會出現。等暫收款模組接上後才會由該模組叫出。
相關功能¶
- 傳票輸入(總帳) — 唯一會叫出本彈窗的程式(
改傳票號) - 應收/應付(暫收款) — 「更改暫收客戶」頁籤的規劃來源
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/Other/images/):
changeno-step1.png— 傳票改號頁籤(含舊/新傳票號碼欄位)changeno-step2.png— 從總帳傳票按改傳票號叫出彈窗的情境changeno-step3.png—(規劃中)更改暫收客戶頁籤版面