跳轉到

程式資訊

  • 程式 IDCHANGENO
  • 所屬子系統:Other
  • 狀態:stable

單號變更(改號工具)

功能簡介

「單號變更」是一支共用的改號小工具彈窗:它不是主選單上獨立的程式,而是由其他單據(傳票、財產、暫收款、發票)在編輯時呼叫出來,用來把既有單據上的某個關鍵欄位(單號/編號/客戶)換成新值

整支表單分成四個頁籤,但一次只會啟用其中一個——由開啟它的母程式決定:

頁籤 由誰開啟 改什麼
傳票改號 總帳傳票(傳票輸入)的 改傳票號 功能 把目前傳票的傳票號碼換成新號
財產編號改號 財產(VFP ASSET 把財產的財產編號換成新號
更改暫收客戶 暫收款(應收/應付 把暫收單的收款客戶換成另一個客戶
確認發票資料 進出貨發票(VFP TICKA / RP 檢視/確認發票的稅額、含未稅金額

它源自 VFP 舊版的共用表單 _CHANGENO——舊版各模組都用 DO FORM _CHANGENO WITH '<模式>' 把模式字串(SLIYASSETSUSPENSE更新進出貨發票進項發票核對)帶進來決定要顯示哪一段。新版改用 TabControlSelectedIndex(0~3)達到同樣效果。

目前實際接上的只有「傳票改號」

在新版 C# 中,真正會把這支彈窗叫出來的只有傳票改號(由 SliyViewModel.ExtendedFunction3改傳票號 觸發)。其餘三個頁籤的畫面雖然已建好,但:

  • 更改暫收客戶:彈窗內已有寫回邏輯,但目前沒有任何母程式呼叫它(規劃中)。
  • 財產編號改號確認發票資料:按 儲存 不會做任何寫回動作(尚未提供)。

以下文件以傳票改號為主軸說明;其他頁籤僅描述規劃用途,請勿當成可用功能。

前置需求

  • 權限:本彈窗本身沒有獨立的選單權限(ProgramClass.CHANGENO 為內部共用程式,不在主選單)。能不能改號取決於母程式的修改權限——例如要改傳票號,必須有總帳傳票的修改權限,且該傳票目前可進入編輯狀態。
  • 必須先有一張單據:改號是針對「目前畫面上這一張單」動作,不是新增資料。開啟前一定要先在母程式上定位到要改的那張單據
資料 影響什麼
目前定位的傳票(總帳傳票主檔 sliym) 「傳票改號」頁籤的舊傳票號碼來源、改號的目標
客戶主檔 「更改暫收客戶」頁籤的客戶代號查詢與名稱帶出
傳票是否在可編輯狀態 母程式 改傳票號 會先嘗試進入編輯(Edit()),失敗則不開窗

操作步驟

傳票改號(主要功能)

  1. 總帳傳票畫面上,先用導覽列定位到要改號的那張傳票。
  2. 按工具列的 改傳票號(母程式的 ExtensionFunction)。系統會先把該傳票帶入編輯狀態;若無法進入編輯(例如已關帳、權限不足),彈窗不會出現。
  3. 彈窗開啟後,上方舊傳票號碼已自動填入目前傳票的號碼,且為唯讀、不可改。
  4. 新傳票號碼輸入想要改成的號碼。
  5. 儲存。系統把新號寫回目前傳票,並關閉彈窗(回到母程式)。
  6. 回到傳票畫面後,依母程式的存檔流程完成存檔,改號才會真正寫進資料庫。

改號不會自己進資料庫

彈窗的 儲存 只是把新號填回畫面上的傳票物件;真正落地是靠母程式(傳票)後續的存檔動作。換句話說,改完號若在傳票畫面取消/不存檔,號碼不會變動。

取消改號

取消(離開)即關閉彈窗、不做任何寫回,舊號維持不變。

更改暫收客戶(規劃中)

尚未由任何母程式啟用

此頁籤的設計用途是:把一張暫收款單據的收款對象,從舊客戶改成新客戶。畫面上:

  1. 舊客戶資料:自動帶入暫收單目前的客戶代號與名稱(唯讀)。
  2. 新客戶資料:用客戶查詢框(放大鏡)挑選新客戶,代號輸入後自動帶出名稱。
  3. 儲存 會把暫收主檔的客廠部代號收付客廠號一起改成新客戶。

程式內已具備上述寫回邏輯,但目前沒有母程式呼叫此頁籤,畫面上不會出現屬正常。

財產編號改號 / 確認發票資料(尚未提供)

畫面已建、功能未接

這兩個頁籤目前只有版面:

  • 財產編號改號:可輸入舊/新財產編號,但 儲存 在程式中是空動作,不會寫回。
  • 確認發票資料:以唯讀方式顯示發票號碼、日期、稅別、未稅/稅額/含稅金額,純檢視;儲存 同樣不做任何寫回。

這兩段是 VFP _CHANGENOASSET發票 模式的版面移植,後續才會接上寫回邏輯。

欄位說明

傳票改號頁籤

欄位 必填 說明/格式/預設
舊傳票號碼 唯讀。開窗時自動帶入目前傳票的傳票號碼
新傳票號碼 要改成的傳票號碼;按 儲存 後寫回畫面上的傳票

更改暫收客戶頁籤(規劃中)

欄位 必填 說明/格式/預設
舊客戶代號/名稱 唯讀。開窗時帶入暫收單目前客戶,名稱由系統依代號查出
新客戶代號 以客戶查詢框挑選,輸入後自動帶出名稱
新客戶名稱 唯讀,依新客戶代號自動帶出

確認發票資料頁籤(檢視用)

欄位 必填 說明/格式/預設
發票號碼/發票日期 唯讀,顯示發票基本資料
稅別 唯讀,稅別代號
發票金額(未稅)/稅額/發票金額(含稅) 唯讀,金額欄位

欄位連動與附加功能

這是本頁最關鍵的一節——把「輸入或按下什麼,系統會做什麼」逐條列出,全部依實際程式碼。

  • 開窗時自動帶入舊值(傳票改號):彈窗建立時,會從母程式(傳票)取得目前定位那一筆傳票主檔,把它的傳票號碼填進 舊傳票號碼。此欄唯讀,使用者不能改。
  • 開窗時自動帶入舊客戶(更改暫收客戶):建立時取得暫收主檔,把客廠部代號填進 舊客戶代號,並用系統的客戶/廠商/部門名稱查詢,自動補上 舊客戶名稱
  • 新客戶代號輸入後帶名稱(更改暫收客戶):新客戶欄位是客戶查詢框;選定或輸入客戶代號後,系統會帶出對應的新客戶名稱到右側唯讀欄。
  • 只啟用一個頁籤:四個頁籤的 IsEnabled 預設全為 false,彈窗依母程式指定的頁籤索引(0~3)只把其中一個設為可用,其餘維持停用、不能切換。這是用來把一支共用表單依呼叫情境「鎖」在正確的頁籤。
  • 儲存 的行為依頁籤而異
    • 傳票改號:把 新傳票號碼 寫回母程式畫面上的傳票主檔(傳票號碼),並把彈窗結果設為成功後關閉。
    • 更改暫收客戶:把 新客戶代號 同時寫回暫收主檔的 客廠部代號收付客廠號 兩個欄位(規劃中,目前無人呼叫)。
    • 財產編號改號 / 確認發票資料儲存 為空動作,不寫回任何欄位。
  • 取消(離開):把彈窗結果設為失敗並關閉,不做任何寫回;母程式的單據維持原樣。
  • 改號真正落地靠母程式:彈窗只改畫面上的物件,不直接打資料庫。以傳票改號為例,母程式 改傳票號先讓傳票進入編輯狀態才開窗;彈窗關閉回去後,要靠母程式的存檔流程把新號寫入資料庫。

沒有的功能不要找

這支彈窗沒有新增、刪除、查詢清單、列印、轉傳票、簽核、附件、Excel 匯入匯出等功能。它就是一個「填新值 → 寫回 → 關閉」的小工具,所有列印/簽核/轉傳票請回到對應的母程式操作。

常見問題

按了母程式的「改傳票號」卻沒有跳出視窗?

母程式會先嘗試把傳票帶入編輯狀態,只有成功進入編輯才會開窗。若傳票已關帳、被鎖定、或目前帳號沒有修改權限,就不會開窗。請先確認該傳票可以編輯。

在彈窗改了新傳票號碼,回到傳票畫面卻發現沒變?

彈窗的 儲存 只是把新號填回畫面上的傳票,真正寫入資料庫要靠傳票畫面後續的存檔。若改完號在傳票畫面按了取消或沒有存檔,號碼就不會變。請改完號後務必在傳票完成存檔。

「新傳票號碼」可以隨便輸入嗎?會不會撞號?

彈窗本身只負責把值填回去,不在此處檢核是否重號(畫面上原本的重號檢核規則目前為註解保留狀態)。是否撞到既有傳票號,會在母程式存檔時依資料庫主鍵規則把關,請避免輸入已存在的號碼。

「財產編號改號」「確認發票資料」按儲存沒有反應?

這兩個頁籤在新版尚未接上寫回邏輯(儲存 為空動作),目前只有版面。詳見欄位連動與附加功能。財產與發票的改號/確認請暫以對應母程式提供的方式處理。

找不到「更改暫收客戶」這個畫面?

此頁籤目前沒有任何母程式會呼叫,屬規劃中功能,因此在系統中不會出現。等暫收款模組接上後才會由該模組叫出。

相關功能


需補截圖清單

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

  1. changeno-step1.png — 傳票改號頁籤(含舊/新傳票號碼欄位)
  2. changeno-step2.png — 從總帳傳票按 改傳票號 叫出彈窗的情境
  3. changeno-step3.png —(規劃中)更改暫收客戶頁籤版面