程式資訊
- 程式 ID:
Bankfcst - 所屬子系統:O.銀行票據
- 狀態:stable
預估資金表¶
功能簡介¶
「預估資金表」用來手動登錄一筆未來的銀行帳戶資金進出預估——指定某個日期、某個銀行帳戶,預計會有多少存入或提出。這些資料不是實際發生的交易,而是財務人員對未來現金流的人工預測,主要供銀行資金往來分析在統計未來資金時把這些預估金額一併納入,協助財務主管評估帳戶未來的餘額走勢。
每一張單據對應「一個日期+一個帳戶」的一筆預估金額;單號由系統用「日期+帳戶代號」自動組成。適合需要提前掌握資金缺口、規劃調度的財務人員使用。
前置需求¶
- 權限:O.票據/資金 →
O-050 預估資金表的新增/修改/刪除/瀏覽權限。 - 基礎資料:登錄前必須先維護下列主檔,否則無法選帳戶或匯率帶不出來——
| 資料 | 影響的結果 |
|---|---|
| 銀行帳戶基本資料 | 帳戶代號的搜尋來源;選帳戶後自動帶帳戶簡稱與該帳戶的幣別 |
| 匯率資料(幣別匯率檔) | 預估匯率的預設值(取預估日期當天的賣出匯率);外幣換算本幣金額用此匯率 |
| 系統環境設定(本位幣) | 新增時幣別預設帶入本位幣;本幣金額的小數位數依本位幣設定四捨五入 |
操作步驟¶
本表單為單筆主檔維護(無明細),標準的新增/修改/刪除/瀏覽流程:
新增一筆預估¶

- 按工具列的
新增,系統自動帶入預設值:單號顯示+++(暫存,存檔時自動換成正式單號)、幣別為本位幣、預估匯率為1。 - 輸入預估日期(必填,格式
yyyy/MM/dd)。 - 在帳戶代號欄輸入或以搜尋鈕挑選銀行帳戶(必填)。選定後系統自動填入右側的帳戶簡稱,並把該帳戶的幣別帶進來。
- 確認幣別與預估匯率。若帳戶為外幣帳戶,修改幣別後可調整匯率(匯率必須大於 0)。
- 在存入或提出欄輸入原幣金額;旁邊以系統色標示的本幣金額會即時換算顯示(唯讀)。
- 視需要填寫預估說明(最長 60 個字元)。
- 按
儲存。系統會把單號重新組成「預估日期+帳戶代號」後寫入。
單號是自動產生的
單號欄為唯讀,使用者不能直接打字。存檔當下系統一律用「日期+帳戶代號」覆寫單號(VFP 與新版行為一致)。因此同一天同一帳戶只會有一筆預估——再存一次相同日期+帳戶會是覆寫同一張單。
修改/刪除¶
- 用工具列的瀏覽或單號搜尋找到要處理的單據。
- 按
修改調整金額、匯率或說明後儲存;或按刪除移除整筆預估。 - 改了預估日期或帳戶代號後再存檔,單號會跟著重新組成。
查詢/瀏覽與列印¶
- 透過工具列的瀏覽功能可列出所有預估資金單據,雙擊帶回主畫面。
- 按
列印可輸出 預估資金表(報表編號 O050-1),A4 直式報表。
欄位說明¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 單號 | 系統 | 唯讀。新增時顯示 +++;存檔時自動組成「預估日期+帳戶代號」(最長 20 碼) |
| 預估日期 | ✔ | 日期型,格式 yyyy/MM/dd。未輸入無法儲存 |
| 帳戶代號 | ✔ | 銀行帳戶代號(最長 10 碼)。以搜尋鈕挑選,未輸入無法儲存 |
| 帳戶簡稱 | — | 唯讀,由帳戶代號自動帶出 |
| 幣別 | ✔ | 3 碼幣別代碼。新增預設本位幣;選帳戶後改為帳戶設定的幣別 |
| 預估匯率 | ✔ | 原幣換算本幣的匯率,預設 1,必須大於 0(≤0 會被擋下) |
| 存入 | — | 存入原幣金額(19,4)。右側即時顯示換算後的存入本幣金額(唯讀) |
| 提出 | — | 提出原幣金額(19,4)。右側即時顯示換算後的提出本幣金額(唯讀) |
| 預估說明 | — | 文字備註,最長 60 個字元 |
本幣金額是算出來的,不存欄位輸入值
畫面上「存入本幣」「提出本幣」兩個唯讀數字是即時計算的衍生欄位(原幣金額 × 預估匯率,依本位幣小數位四捨五入),使用者不能直接編輯,改原幣或匯率才會變動。
欄位連動與附加功能¶
這支表單的核心就是「選帳戶→帶幣別→帶匯率→算本幣」這條連動鏈,以下逐條說明輸入後系統的動作(來源為 BankfcstViewModel、Twork_chk_vw_bankfcstSource、BankfcstSave 與 VFP bankfcst.prg):
-
按
新增時帶入的預設值(SetNewData):- 幣別若為空 → 帶入系統本位幣(
Context.Env.LocalCurrency)。 - 單號若為空 → 暫存填
+++(存檔時會被正式單號覆寫)。 - 預估匯率若為 0 → 帶入
1。 這對應 VFPaddagain程序中「新增後把匯率重設為 1」的行為。
- 幣別若為空 → 帶入系統本位幣(
-
輸入/選擇「帳戶代號」後(
帳戶代號Bindingsetter):系統以DescriptionHelper.GetBankAccount查銀行帳戶主檔,找到後自動把該帳戶設定的幣別帶進「幣別」欄。換句話說,選了外幣帳戶,幣別就跟著變成該外幣。 -
「幣別 / 預估日期」與匯率的連動(
TsCurrency控件):幣別欄旁的幣別控件同時綁定幣別、預估日期與預估匯率三者。改變幣別或日期時,控件會依「該日期的賣出匯率」自動帶出對應的預估匯率(對應 VFP幣別.LostFocus中U_BLRATE(...,'賣',日期)取賣出匯率的邏輯)。 -
本幣金額即時重算:
- 修改存入金額 → 立即重算並更新「存入本幣金額」。
- 修改提出金額 → 立即重算並更新「提出本幣金額」。
- 修改預估匯率 → 同時重算存入本幣、提出本幣兩個欄位。
計算式為
本幣 = 原幣 × 匯率,並依本位幣小數位數四捨五入。這對應 VFP 裡存入金額.LostFocus/提出金額.LostFocus/匯率.LostFocus各自呼叫對應本幣欄位Refresh的重算行為。
-
匯率驗證:在預估匯率欄輸入時,若數值不為正數(≤0)會立即顯示輸入錯誤,無法存檔。對應 VFP
allowsave第一道檢核「請輸入正確匯率」。 -
儲存前的必填檢核與單號重組(
BankfcstSave):- 存檔前先檢查預估日期與帳戶代號是否有值,任一為空就跳出「請輸入…」訊息並中止存檔(對應 VFP
allowsave的兩道必填檢核)。 - 通過檢核後,系統把單號重新組成
預估日期 + 帳戶代號才寫入資料庫。所以單號永遠等於「當前日期+當前帳戶」,不會殘留舊值。
- 存檔前先檢查預估日期與帳戶代號是否有值,任一為空就跳出「請輸入…」訊息並中止存檔(對應 VFP
-
列印(
GetReports/IPrintSource):本表單提供一張報表 預估資金表(O050-1),A4、台灣區域,列印當前單據內容。 -
下游用途——餵給資金往來分析:本表登錄的預估資料會被銀行資金往來的「預估」資金來源讀取(
BankflowBll.GetForecast),條件是預估日期介於今天到分析截止日之間。讀進去後存入金額當作「存入原幣」、提出金額當作「提出原幣」,再依當天匯率換算本幣納入未來資金統計。也就是說,這裡填的每一筆預估,都會影響資金往來表對帳戶未來餘額的推估。
常見問題¶
為什麼「單號」欄打不了字、一直顯示 +++?
單號是系統自動產生的,欄位設為唯讀。新增時暫時顯示 +++,存檔當下系統會用「預估日期+帳戶代號」重新組成正式單號。要改單號,請改預估日期或帳戶代號後再存檔。
選了帳戶代號,幣別卻沒變/是空白?
幣別是從銀行帳戶基本資料帶出來的。若帶不出來,多半是該帳戶在帳戶主檔沒設定幣別,或帳戶代號打錯(找不到對應帳戶)。請先到銀行帳戶基本資料補齊該帳戶的幣別。
本幣金額一直是 0,明明有填存入/提出金額?
本幣金額 = 原幣金額 × 預估匯率。若預估匯率是 0(或還沒帶出來),算出來自然是 0。請確認匯率欄有正值;外幣帳戶可改一次幣別或日期讓系統重新帶出當日匯率。
存檔時跳出「請輸入日期/請輸入帳戶代號」?
預估日期與帳戶代號都是必填,缺任一都無法儲存。補齊後再按儲存即可。
為什麼存了同一天同一帳戶兩次,只看到一筆?
單號由「日期+帳戶代號」組成,同一天同一帳戶會得到相同單號,等於覆寫同一張單。若同一天同一帳戶有兩種不同的資金預估,請合併在同一筆的存入/提出金額,或改用不同日期登錄。
在預估資金表填的資料,會出現在哪裡?
會被銀行資金往來的未來資金統計讀取(條件為預估日期落在今天到分析截止日之間),把存入/提出金額換算本幣後納入帳戶未來餘額的推估。它本身只是預測,不會產生會計傳票或實際交易。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/O-Check/images/):
bankfcst-step1.png— 新增一筆預估的主畫面(含單號、預估日期、帳戶代號、幣別/匯率、存入/提出原幣與本幣欄位)