跳轉到

程式資訊

  • 程式 IDBCURREN
  • 所屬子系統:B.基本資料
  • 狀態:stable

幣別表

功能簡介

「幣別表」(選單名稱 幣別表,B-030)維護系統會用到的所有交易幣別,包含本位幣(公司記帳幣)與各種外幣。每一筆幣別資料定義了該幣別的代號排序序號金額小數位數中/英文名稱。建檔人員(通常是財會或基礎資料維護人員)要先在這裡把幣別建好,後續的匯率表、客戶/廠商主檔、各類交易單據(訂單、進貨、AR/AP、傳票)才有幣別可選。

這是一份典型的設定主檔,操作單純,但它是整個外幣交易與多幣別記帳的源頭。幣別代號一旦被單據引用就不應再更名或刪除,否則歷史單據會找不到對應幣別。

本位幣的設定位置

哪一個幣別是本位幣不在本表單設定,而是由系統參數(_prgpar 第 6 項,取前 3 碼)決定,對應程式內的 Context.Env.LocalCurrency。本表單只負責「建立幣別清單」,不負責指定哪一個是本位幣。

前置需求

  • 權限:B.基礎資料 → B-030 幣別表,依操作需要具備瀏覽/新增/修改/刪除/列印權限。
  • 基礎資料:本表單是源頭主檔,本身不依賴其他主檔即可建檔。但建好之後,下列功能才能正常引用幣別:
資料 影響的結果
幣別清單(本表單) 匯率表 才能逐筆輸入各幣別的買/賣/中價
幣別清單(本表單) 客戶/廠商主檔、報價單可指定交易幣別
幣別清單(本表單) 各類單據(訂單、進貨、AR/AP、傳票)的幣別欄位下拉來源
小數位數 設定 引用該幣別的單據金額會以此小數位數進位/顯示(例如日圓 0 位、美元 2 位)

操作步驟

本表單是單檔(Master Only)維護畫面,搭配畫面上方的標準工具列操作。

新增幣別

  1. 按工具列 新增,畫面清空成一筆空白資料。
  2. 幣別 欄輸入幣別代號(紅色標示為必填主鍵,最多 3 碼,例如 USDTWDJPYRMB)。
  3. 輸入 序號(最多 2 位數,用來控制下拉清單與報表的排列順序)。
  4. 輸入 幣別說明(中文簡稱,最多 20 字,例如「美金」「新台幣」「日圓」)。
  5. 視需要輸入 英文名稱(最多 50 字,例如 US Dollar)。
  6. 輸入 小數位數(1 位數字,代表此幣別金額的小數位,例如美元填 2、日圓填 0)。
  7. 是否停用 維持空白(啟用中);若此幣別不再使用,選 Y
  8. 按工具列 儲存 寫回資料庫。

修改幣別

  1. 用工具列的瀏覽鈕或查詢功能定位到要修改的幣別。
  2. 直接在欄位上修改 序號幣別說明英文名稱小數位數是否停用
  3. 儲存

不要更改已被引用的幣別代號

幣別 是主鍵。若該幣別已被匯率表或任何交易單據引用,更改代號或刪除會造成歷史資料找不到對應幣別。要停用某幣別時,請改用 是否停用 = Y,而不是刪除。

刪除幣別

  1. 定位到要刪除的幣別。
  2. 按工具列 刪除,確認後存檔。僅在該幣別完全沒有被任何單據引用時才適合刪除。

列印幣別表

  1. 按工具列 列印報表,系統提供 B030-1 幣別表(A4、台灣區域)報表,列出目前所有幣別資料。

欄位說明

欄位 必填 說明/格式/預設
幣別 主鍵,紅色標示。最多 3 碼字串(TsStringLength(3)),通常為 ISO 代碼如 USDTWDJPY。新增後不應更名。
序號 整數,輸入框最多 2 位數(MaxLength=2),控制排序。空白時以 0 處理(PlaceEnum="Zero")。
幣別說明 中文簡稱,最多 20 字(TsStringLength(20))。
英文名稱 幣別英文全名,最多 50 字(TsStringLength(50))。對應 Source 屬性與 DB 欄位名皆為 英文名稱
小數位數 整數,輸入框最多 1 位(MaxLength=1),代表金額小數位。空白以 0 處理。
是否停用 YesNoComboBox,可選 空白/YN。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 寫入,不會變成空字串或報錯。
  • 當你輸入 是否停用,下拉只提供 空白/YN 三個選項(來源 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 即可。

相關功能


需補截圖清單

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

  1. bcurren-step1.png — 幣別表維護主畫面(含工具列與所有欄位)
  2. bcurren-step2.png — 新增一筆幣別、幣別欄聚焦輸入代號的狀態
  3. bcurren-step3.png — 是否停用下拉(空白/Y/N)展開狀態