程式資訊
- 程式 ID:
Bankday - 所屬子系統:O.銀行票據
- 狀態:stable
資金日報表¶
功能簡介¶
「資金日報表」是一份以「截止日期」為基準、列出各銀行帳戶當日資金結存的查詢報表,供財務/出納人員掌握每天的銀行存款部位與票據在途金額。它把所有銀行帳戶(含外幣帳戶)截至指定日期的昨日結存、本日收入、本日支出、本日結存彙整成一張清單,並同時呈現本幣與原幣兩種金額。除了一般銀行帳戶,報表還會把應收票據(#R-)與應付票據(#P-)以獨立類別列出,方便對照當日的票據在途金額。
這支表單沒有新增/修改/刪除等異動動作,純粹是查詢+列印+匯出用途。在資金調度流程中,它通常是每天早上第一個被打開的畫面:先看資金日報表掌握各帳戶餘額,再決定當日的付款與轉帳安排。
前置需求¶
- 權限:O.出納票據 →
O-070 資金日報表的瀏覽與列印權限。 - 基礎資料:報表內容完全由銀行帳戶與其交易紀錄推算,下列資料的維護狀況會直接影響結果——
| 資料 | 影響的結果 |
|---|---|
| 銀行帳戶主檔(帳戶代號/簡稱/幣別) | 帳戶代號、帳戶簡稱、幣別 三欄,以及類別 1.帳戶代號 的分群 |
| 立帳日期 ≤ 截止日期的銀行收付交易 | 昨日結存(截止日之前的累計)與 本日收入/本日支出/本日結存(截止日當天的異動) |
應收票據(品號前綴 #R-)資料 |
類別 2.應收票據 列 |
應付票據(品號前綴 #P-)資料 |
類別 3.應付票據 列 |
| 外幣帳戶的原幣金額 | 昨日結存_原幣/本日收入_原幣/本日支出_原幣/本日結存_原幣 四欄 |
備註
本報表的所有數字都由後端 SP DARB_QRY_BANKDAY 依「立帳日期」與截止日期比對後算出,畫面本身不做加總或換算,因此資料是否正確取決於各帳戶的立帳日期是否正確登錄。
操作步驟¶
資金日報表只有一個查詢條件(截止日期),操作非常單純:

查詢當日資金部位¶
- 在條件面板的 日期 欄輸入要查詢的截止日期(格式
yyyy/MM/dd)。- 開窗時系統會自動帶入今天的日期當預設值。
- 按工具列的
查詢。 - 結果顯示在主格線中,依「類別」與「帳戶代號+幣別+品號」排序:
- 先列出各銀行帳戶(類別
1.帳戶代號), - 再列出
2.應收票據、3.應付票據兩個票據彙總類別。
- 先列出各銀行帳戶(類別
小技巧
要查「某一天結束時的資金部位」,把 日期 設成那一天即可——系統會把該日(含當天)的收支都算進「本日」欄,把該日之前的累計算進「昨日結存」。改完日期後再按一次 查詢 就會重算。
列印報表¶
- 先完成一次查詢、確認格線有資料。
- 按工具列的
列印/預覽,在報表選單中挑選版型:- 本幣(
Bankday1,報表抬頭「本幣」):只印本幣金額欄。 - 原幣及本幣(
Bankday2,報表抬頭「原幣及本幣」):本幣與原幣金額並列,適合有外幣帳戶時使用。
- 本幣(
匯出 Excel¶
在主格線上按右鍵即可將目前查詢結果匯出成 Excel,欄位與畫面一致。
注意
若查詢後格線沒有任何資料,列印時系統會提示「無資料可列印」而不產生報表。請先確認截止日期當天(或之前)確實有銀行帳戶交易。
欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 日期(截止日期) | ✔ | 報表的截止基準日,格式 yyyy/MM/dd;預設帶入今天(DateTime.Now)。立帳日期 < 此日的交易計入「昨日結存」,立帳日期 = 此日的交易計入「本日」欄 |
結果格線欄位¶
| 欄位 | 說明/格式 |
|---|---|
| 類別 | 1.帳戶代號(一般銀行帳戶)/2.應收票據/3.應付票據,由品號前綴判定(見欄位連動與附加功能) |
| 帳戶代號 | 銀行帳戶代號(後端的倉儲代號) |
| 帳戶簡稱 | 銀行帳戶簡稱 |
| 品號 | 一般帳戶為實際品號;票據列為 #R-/#P- 前綴 |
| 幣別 | 帳戶幣別 |
| 昨日結存 | 截止日「之前」的累計結存(本幣) |
| 本日收入 | 截止日當天的收入(本幣) |
| 本日支出 | 截止日當天的支出(本幣) |
| 本日結存 | 截止日當天結束時的結存(本幣) |
| 昨日結存_原幣 | 同上,以帳戶原幣表示 |
| 本日收入_原幣 | 截止日當天收入(原幣) |
| 本日支出_原幣 | 截止日當天支出(原幣) |
| 本日結存_原幣 | 截止日當天結存(原幣) |
本幣欄與原幣欄
本幣四欄(昨日結存/本日收入/本日支出/本日結存)以本位幣顯示;原幣四欄則保留帳戶自身幣別的金額。本幣帳戶兩組數字會相同;外幣帳戶才看得出差異。
欄位連動與附加功能¶
這支報表的「連動」主要發生在查詢的後處理階段——你輸入截止日期、按下查詢後,系統會做下列事情:
截止日期如何切割「昨日/本日」¶
- 當你在 日期 欄輸入截止日並查詢,系統會用兩段條件呼叫後端 SP
DARB_QRY_BANKDAY:- 昨日結存:取
立帳日期 < 截止日期的累計(程式中的condition)。 - 本日收入/支出/結存:取
立帳日期 = 截止日期當天的異動(程式中的condition1)。
- 昨日結存:取
- 也就是說,改一次日期就同時決定了「昨日」和「本日」的分界點,不需要分別輸入兩個日期。
類別(1/2/3)的自動判定¶
查詢結果回傳後,系統會逐列看品號前綴自動填入「類別」欄:
- 品號以
#R-開頭 → 類別標為2.應收票據(文字取自多語系設定的NR顯示名)。 - 品號以
#P-開頭 → 類別標為3.應付票據(文字取自多語系設定的NP顯示名)。 - 其餘(一般銀行帳戶)→ 類別標為
1.加上該列的帳戶代號。
這個編號前綴(1/2/3)就是排序的第一順位,所以畫面上一定是「先各銀行帳戶、再應收票據、最後應付票據」。
自動排序¶
- 查詢完成後,系統會先依 類別 排序,再依 帳戶代號+幣別+品號 組成的分群鍵排序,讓同一帳戶的同幣別資料相鄰、票據彙總列固定排在最後。
列印與報表選擇(IPrintSource)¶
- 本表單實作了報表來源介面,列印時提供兩張預先登錄的報表:
- 本幣(
Bankday1):只呈現本幣金額。 - 原幣及本幣(
Bankday2):本幣與原幣並陳。
- 本幣(
- 兩張報表都讀同一份 SQLite 資料來源(
rpt_o070_bankday_report1),列印前系統會把畫面上的每一列轉成報表用的中文 POCO 後輸出;沒有資料時不會產生報表(HaveReportData會擋下)。
VFP 對照
舊版 VFP 的「報表選擇」單選鈕(本國幣/原幣及本國幣)對應的就是新版的兩張報表(本幣/原幣及本幣);舊版印的 ACCBANKDAY/ACCBANKDAY1 報表,在新版改由報表選單的 Bankday1/Bankday2 取代。舊版另以 U_ToExcel 直接匯出「資金日報表」Excel,新版改用格線右鍵匯出。
欄位事件(VFP 原版行為)¶
對照 VFP 原始碼,這支表單的欄位事件相當單純,新版已對齊:
- 截止日期 開窗時自動帶今天(VFP
Init設DTOC(DATE());新版ResetToDefault帶DateTime.Now)。 - VFP 的截止日期
Valid事件原本就被註解停用(不做額外日期檢核),因此新版也沒有額外的合法性驗證。 - 整個格線在 VFP 中是唯讀的(
ReadOnly = .T.),新版主格線同樣IsReadOnly="True",所有金額欄都不可手動編輯。
常見問題¶
查詢後完全沒有資料?
請確認截止日期當天或之前確實有銀行帳戶的立帳交易。資金日報表完全依「立帳日期」比對;若該日期之前沒有任何已立帳的銀行交易,後端 SP 會回傳空集合,畫面就會是空的,列印時也會提示「無資料可列印」。
外幣帳戶的「原幣」欄有數字,但「本幣」欄是 0(或相反)?
本幣欄與原幣欄是各自獨立由後端算出的兩組金額。若某一組是 0,通常是該帳戶在後端缺少對應的本幣(或原幣)金額或匯率資料。請檢查該帳戶的幣別與匯率設定是否完整。
為什麼應收/應付票據是用 #R-、#P- 這種品號呈現?
這是系統用來標記票據彙總列的內部前綴:品號以 #R- 開頭的列代表應收票據、#P- 開頭代表應付票據,系統據此把「類別」自動標成 2.應收票據/3.應付票據。它們不是真正的存貨品號,只是讓票據在途金額能跟銀行帳戶並列在同一張報表上。
改了截止日期,金額卻沒變?
截止日期改完後要再按一次 查詢 才會重新向後端取數。畫面上的數字不會隨輸入即時更新。
「昨日結存」是不是真的昨天的結存?
不一定是「昨天」這一天,而是「截止日期之前所有交易的累計結存」。系統以 立帳日期 < 截止日期 計算昨日結存、以 立帳日期 = 截止日期 計算本日異動,所以即使中間有跳過的日期,昨日結存仍是截止日前的全部累計。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/O-Check/images/):
bankday-step1.png— 條件面板(日期欄)+查詢結果主格線全貌(建議含一筆外幣帳戶與應收/應付票據列,凸顯本幣與原幣欄差異)