程式資訊
- 程式 ID:
BCURREN - 所屬子系統:B.基本資料
- 狀態:stable
幣別表¶
功能簡介¶
「幣別表」(選單名稱 幣別表,B-030)維護系統會用到的所有交易幣別,包含本位幣(公司記帳幣)與各種外幣。每一筆幣別資料定義了該幣別的代號、排序序號、金額小數位數與中/英文名稱。建檔人員(通常是財會或基礎資料維護人員)要先在這裡把幣別建好,後續的匯率表、客戶/廠商主檔、各類交易單據(訂單、進貨、AR/AP、傳票)才有幣別可選。
這是一份典型的設定主檔,操作單純,但它是整個外幣交易與多幣別記帳的源頭。幣別代號一旦被單據引用就不應再更名或刪除,否則歷史單據會找不到對應幣別。
本位幣的設定位置
哪一個幣別是本位幣不在本表單設定,而是由系統參數(_prgpar 第 6 項,取前 3 碼)決定,對應程式內的 Context.Env.LocalCurrency。本表單只負責「建立幣別清單」,不負責指定哪一個是本位幣。
前置需求¶
- 權限:B.基礎資料 →
B-030 幣別表,依操作需要具備瀏覽/新增/修改/刪除/列印權限。 - 基礎資料:本表單是源頭主檔,本身不依賴其他主檔即可建檔。但建好之後,下列功能才能正常引用幣別:
| 資料 | 影響的結果 |
|---|---|
| 幣別清單(本表單) | 匯率表 才能逐筆輸入各幣別的買/賣/中價 |
| 幣別清單(本表單) | 客戶/廠商主檔、報價單可指定交易幣別 |
| 幣別清單(本表單) | 各類單據(訂單、進貨、AR/AP、傳票)的幣別欄位下拉來源 |
| 小數位數 設定 | 引用該幣別的單據金額會以此小數位數進位/顯示(例如日圓 0 位、美元 2 位) |
操作步驟¶
本表單是單檔(Master Only)維護畫面,搭配畫面上方的標準工具列操作。
新增幣別¶
- 按工具列
新增,畫面清空成一筆空白資料。 - 在 幣別 欄輸入幣別代號(紅色標示為必填主鍵,最多 3 碼,例如
USD、TWD、JPY、RMB)。 - 輸入 序號(最多 2 位數,用來控制下拉清單與報表的排列順序)。
- 輸入 幣別說明(中文簡稱,最多 20 字,例如「美金」「新台幣」「日圓」)。
- 視需要輸入 英文名稱(最多 50 字,例如
US Dollar)。 - 輸入 小數位數(1 位數字,代表此幣別金額的小數位,例如美元填
2、日圓填0)。 - 是否停用 維持空白(啟用中);若此幣別不再使用,選
Y。 - 按工具列
儲存寫回資料庫。
修改幣別¶
- 用工具列的瀏覽鈕或查詢功能定位到要修改的幣別。
- 直接在欄位上修改 序號、幣別說明、英文名稱、小數位數、是否停用。
- 按
儲存。
不要更改已被引用的幣別代號
幣別 是主鍵。若該幣別已被匯率表或任何交易單據引用,更改代號或刪除會造成歷史資料找不到對應幣別。要停用某幣別時,請改用 是否停用 = Y,而不是刪除。
刪除幣別¶
- 定位到要刪除的幣別。
- 按工具列
刪除,確認後存檔。僅在該幣別完全沒有被任何單據引用時才適合刪除。
列印幣別表¶
- 按工具列
列印/報表,系統提供B030-1 幣別表(A4、台灣區域)報表,列出目前所有幣別資料。
欄位說明¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 幣別 | ✔ | 主鍵,紅色標示。最多 3 碼字串(TsStringLength(3)),通常為 ISO 代碼如 USD、TWD、JPY。新增後不應更名。 |
| 序號 | — | 整數,輸入框最多 2 位數(MaxLength=2),控制排序。空白時以 0 處理(PlaceEnum="Zero")。 |
| 幣別說明 | — | 中文簡稱,最多 20 字(TsStringLength(20))。 |
| 英文名稱 | — | 幣別英文全名,最多 50 字(TsStringLength(50))。對應 Source 屬性與 DB 欄位名皆為 英文名稱。 |
| 小數位數 | — | 整數,輸入框最多 1 位(MaxLength=1),代表金額小數位。空白以 0 處理。 |
| 是否停用 | — | YesNoComboBox,可選 空白/Y/N。DB 欄位名為 停用,最多 1 碼。預設空白=啟用中;Y=停用。 |
資料來源是 View
本表單繫結的 Source 為 Twork_bas_vw_bcurrenSource(對應資料庫 View),因此除上述可編輯欄位外,另含 建檔日期、工作流程、審核人員、審核日期、已審核 等審核相關欄位,但在本畫面上不顯示也不需填寫,由系統於存檔時自動帶入。
欄位連動與附加功能¶
本表單刻意保持單純,沒有自訂的 SetNewData、欄位重算(Calculate*)或 ExtensionFunction。它走的是平台共用的 ItemsBindingManager + DataManager 標準維護流程,因此「連動」主要來自欄位本身的控件行為與外部功能對本表單資料的引用。
- 當你按
新增,系統建立一筆空白幣別資料,並把游標自動聚焦到 幣別 欄(XAML 透過FocusExtension.IsFocused綁到 VM 的IsFocused,VM 基底以SetFocus()觸發),讓你直接開始輸入代號。 - 當你在
序號/小數位數留白存檔,因控件設定PlaceEnum="Zero",系統會以數值 0 寫入,不會變成空字串或報錯。 - 當你輸入
是否停用,下拉只提供 空白/Y/N三個選項(來源YesNo.GetList())。選Y表示停用該幣別;其他模組挑幣別時應依此欄位過濾掉停用者。 - 當你設定
小數位數,這個值會被引用此幣別的單據用來決定金額的進位與顯示位數(例如日圓設 0、美元設 2)。改了小數位數不會回頭改寫已開立的歷史單據,只影響之後的計算與顯示。 - 當你按
列印,VM 實作IPrintSource.GetReports()回傳一張報表設定B030-1 幣別表(報表抬頭「幣別表」、SQLite 來源rpt_b030_bcurren_report1、A4、TW),由報表引擎輸出目前畫面的幣別清單。 - 本表單與匯率表的關係:匯率表(BCURRENM)是「按日期、按幣別」維護買/賣/中價的另一支程式。你在這裡建立的每一個幣別,才會成為匯率表中可輸入匯率的對象;兩者是「幣別主檔 → 匯率明細」的上下游關係。
無欄位即時檢核/帶值邏輯
舊版 VFP 並沒有獨立的 bcurren 維護程式原始碼,現行 C# 版也未在 ViewModel 加入欄位 valid/gotfocus 之類的即時檢核或自動帶值。長度限制(幣別 3 碼、說明 20 字、英文 50 字)由 Source 的 TsStringLength 屬性把關,存檔時才驗證。
常見問題¶
新增幣別存檔時說幣別重複或主鍵衝突?
幣別 是主鍵,每個代號只能存在一筆。請確認要新增的代號尚未建立;若該代號已停用,應找到既有那筆把 是否停用 改回空白,而不是再新增一筆同代號。
某張單據或匯率表選不到我要的幣別?
請回本表單確認:(1) 該幣別已建立;(2) 是否停用 不是 Y。停用的幣別會被排除在挑選清單之外。新建幣別後,需到匯率表補上對應日期的匯率,外幣金額才換算得出來。
金額小數位數顯示不對(例如日圓出現小數)?
金額的小數位數取自本表單該幣別的 小數位數 欄位。日圓這類無小數的幣別應設 0、美元設 2。修改後只影響之後的單據,不會回改歷史單據。
哪一個幣別是本位幣?在這裡改嗎?
不是。本表單只建立幣別清單,本位幣由系統參數(_prgpar 第 6 項)決定,對應 Context.Env.LocalCurrency,需請系統管理員調整,不能在本表單切換。
可以刪除一個用過的幣別嗎?
不建議。幣別一旦被匯率表或任何交易單據引用,刪除會讓那些歷史資料找不到對應幣別。要讓它不再被使用,請把 是否停用 設為 Y 即可。
相關功能¶
- 匯率表 — 按日期維護各幣別買/賣/中價
- 匯率表報表 — 匯率表列印
- 基礎資料模組總覽
- AR/AP 應收應付 — 外幣帳款引用幣別與匯率
- 總帳傳票 — 多幣別記帳
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/B-BasicData/images/):
bcurren-step1.png— 幣別表維護主畫面(含工具列與所有欄位)bcurren-step2.png— 新增一筆幣別、幣別欄聚焦輸入代號的狀態bcurren-step3.png— 是否停用下拉(空白/Y/N)展開狀態