跳轉到

程式資訊

  • 程式 IDBankday
  • 所屬子系統:O.銀行票據
  • 狀態:stable

資金日報表

功能簡介

「資金日報表」是一份以「截止日期」為基準、列出各銀行帳戶當日資金結存的查詢報表,供財務/出納人員掌握每天的銀行存款部位與票據在途金額。它把所有銀行帳戶(含外幣帳戶)截至指定日期的昨日結存、本日收入、本日支出、本日結存彙整成一張清單,並同時呈現本幣原幣兩種金額。除了一般銀行帳戶,報表還會把應收票據#R-)與應付票據#P-)以獨立類別列出,方便對照當日的票據在途金額。

這支表單沒有新增/修改/刪除等異動動作,純粹是查詢+列印+匯出用途。在資金調度流程中,它通常是每天早上第一個被打開的畫面:先看資金日報表掌握各帳戶餘額,再決定當日的付款與轉帳安排。

前置需求

  • 權限:O.出納票據 → O-070 資金日報表 的瀏覽與列印權限。
  • 基礎資料:報表內容完全由銀行帳戶與其交易紀錄推算,下列資料的維護狀況會直接影響結果——
資料 影響的結果
銀行帳戶主檔(帳戶代號/簡稱/幣別) 帳戶代號帳戶簡稱幣別 三欄,以及類別 1.帳戶代號 的分群
立帳日期 ≤ 截止日期的銀行收付交易 昨日結存(截止日之前的累計)與 本日收入/本日支出/本日結存(截止日當天的異動)
應收票據(品號前綴 #R-)資料 類別 2.應收票據
應付票據(品號前綴 #P-)資料 類別 3.應付票據
外幣帳戶的原幣金額 昨日結存_原幣/本日收入_原幣/本日支出_原幣/本日結存_原幣 四欄

備註

本報表的所有數字都由後端 SP DARB_QRY_BANKDAY 依「立帳日期」與截止日期比對後算出,畫面本身不做加總或換算,因此資料是否正確取決於各帳戶的立帳日期是否正確登錄

操作步驟

資金日報表只有一個查詢條件(截止日期),操作非常單純:

條件面板與查詢結果

查詢當日資金部位

  1. 在條件面板的 日期 欄輸入要查詢的截止日期(格式 yyyy/MM/dd)。
    • 開窗時系統會自動帶入今天的日期當預設值。
  2. 按工具列的 查詢
  3. 結果顯示在主格線中,依「類別」與「帳戶代號+幣別+品號」排序:
    • 先列出各銀行帳戶(類別 1.帳戶代號),
    • 再列出 2.應收票據3.應付票據 兩個票據彙總類別。

小技巧

要查「某一天結束時的資金部位」,把 日期 設成那一天即可——系統會把該日(含當天)的收支都算進「本日」欄,把該日之前的累計算進「昨日結存」。改完日期後再按一次 查詢 就會重算。

列印報表

  1. 先完成一次查詢、確認格線有資料。
  2. 按工具列的 列印預覽,在報表選單中挑選版型:
    • 本幣Bankday1,報表抬頭「本幣」):只印本幣金額欄。
    • 原幣及本幣Bankday2,報表抬頭「原幣及本幣」):本幣與原幣金額並列,適合有外幣帳戶時使用。

匯出 Excel

在主格線上按右鍵即可將目前查詢結果匯出成 Excel,欄位與畫面一致。

注意

若查詢後格線沒有任何資料,列印時系統會提示「無資料可列印」而不產生報表。請先確認截止日期當天(或之前)確實有銀行帳戶交易。

欄位說明

查詢條件

欄位 必填 說明/格式/預設
日期(截止日期) 報表的截止基準日,格式 yyyy/MM/dd;預設帶入今天DateTime.Now)。立帳日期 < 此日的交易計入「昨日結存」,立帳日期 = 此日的交易計入「本日」欄

結果格線欄位

欄位 說明/格式
類別 1.帳戶代號(一般銀行帳戶)/2.應收票據3.應付票據,由品號前綴判定(見欄位連動與附加功能
帳戶代號 銀行帳戶代號(後端的倉儲代號)
帳戶簡稱 銀行帳戶簡稱
品號 一般帳戶為實際品號;票據列為 #R-#P- 前綴
幣別 帳戶幣別
昨日結存 截止日「之前」的累計結存(本幣)
本日收入 截止日當天的收入(本幣)
本日支出 截止日當天的支出(本幣)
本日結存 截止日當天結束時的結存(本幣)
昨日結存_原幣 同上,以帳戶原幣表示
本日收入_原幣 截止日當天收入(原幣)
本日支出_原幣 截止日當天支出(原幣)
本日結存_原幣 截止日當天結存(原幣)

本幣欄與原幣欄

本幣四欄(昨日結存/本日收入/本日支出/本日結存)以本位幣顯示;原幣四欄則保留帳戶自身幣別的金額。本幣帳戶兩組數字會相同;外幣帳戶才看得出差異。

欄位連動與附加功能

這支報表的「連動」主要發生在查詢的後處理階段——你輸入截止日期、按下查詢後,系統會做下列事情:

截止日期如何切割「昨日/本日」

  • 當你在 日期 欄輸入截止日並查詢,系統會用兩段條件呼叫後端 SP DARB_QRY_BANKDAY
    • 昨日結存:取 立帳日期 < 截止日期 的累計(程式中的 condition)。
    • 本日收入/支出/結存:取 立帳日期 = 截止日期 當天的異動(程式中的 condition1)。
  • 也就是說,改一次日期就同時決定了「昨日」和「本日」的分界點,不需要分別輸入兩個日期。

類別(1/2/3)的自動判定

查詢結果回傳後,系統會逐列看品號前綴自動填入「類別」欄:

  1. 品號以 #R- 開頭 → 類別標為 2.應收票據(文字取自多語系設定的 NR 顯示名)。
  2. 品號以 #P- 開頭 → 類別標為 3.應付票據(文字取自多語系設定的 NP 顯示名)。
  3. 其餘(一般銀行帳戶)→ 類別標為 1. 加上該列的帳戶代號

這個編號前綴(1/2/3)就是排序的第一順位,所以畫面上一定是「先各銀行帳戶、再應收票據、最後應付票據」。

自動排序

  • 查詢完成後,系統會先依 類別 排序,再依 帳戶代號+幣別+品號 組成的分群鍵排序,讓同一帳戶的同幣別資料相鄰、票據彙總列固定排在最後。

列印與報表選擇(IPrintSource)

  • 本表單實作了報表來源介面,列印時提供兩張預先登錄的報表:
    • 本幣Bankday1):只呈現本幣金額。
    • 原幣及本幣Bankday2):本幣與原幣並陳。
  • 兩張報表都讀同一份 SQLite 資料來源(rpt_o070_bankday_report1),列印前系統會把畫面上的每一列轉成報表用的中文 POCO 後輸出;沒有資料時不會產生報表HaveReportData 會擋下)。

VFP 對照

舊版 VFP 的「報表選擇」單選鈕(本國幣原幣及本國幣)對應的就是新版的兩張報表(本幣原幣及本幣);舊版印的 ACCBANKDAYACCBANKDAY1 報表,在新版改由報表選單的 Bankday1Bankday2 取代。舊版另以 U_ToExcel 直接匯出「資金日報表」Excel,新版改用格線右鍵匯出。

欄位事件(VFP 原版行為)

對照 VFP 原始碼,這支表單的欄位事件相當單純,新版已對齊:

  • 截止日期 開窗時自動帶今天(VFP InitDTOC(DATE());新版 ResetToDefaultDateTime.Now)。
  • VFP 的截止日期 Valid 事件原本就被註解停用(不做額外日期檢核),因此新版也沒有額外的合法性驗證。
  • 整個格線在 VFP 中是唯讀的(ReadOnly = .T.),新版主格線同樣 IsReadOnly="True",所有金額欄都不可手動編輯。

常見問題

查詢後完全沒有資料?

請確認截止日期當天或之前確實有銀行帳戶的立帳交易。資金日報表完全依「立帳日期」比對;若該日期之前沒有任何已立帳的銀行交易,後端 SP 會回傳空集合,畫面就會是空的,列印時也會提示「無資料可列印」。

外幣帳戶的「原幣」欄有數字,但「本幣」欄是 0(或相反)?

本幣欄與原幣欄是各自獨立由後端算出的兩組金額。若某一組是 0,通常是該帳戶在後端缺少對應的本幣(或原幣)金額或匯率資料。請檢查該帳戶的幣別與匯率設定是否完整。

為什麼應收/應付票據是用 #R-#P- 這種品號呈現?

這是系統用來標記票據彙總列的內部前綴:品號以 #R- 開頭的列代表應收票據#P- 開頭代表應付票據,系統據此把「類別」自動標成 2.應收票據3.應付票據。它們不是真正的存貨品號,只是讓票據在途金額能跟銀行帳戶並列在同一張報表上。

改了截止日期,金額卻沒變?

截止日期改完後要再按一次 查詢 才會重新向後端取數。畫面上的數字不會隨輸入即時更新。

「昨日結存」是不是真的昨天的結存?

不一定是「昨天」這一天,而是「截止日期之前所有交易的累計結存」。系統以 立帳日期 < 截止日期 計算昨日結存、以 立帳日期 = 截止日期 計算本日異動,所以即使中間有跳過的日期,昨日結存仍是截止日前的全部累計。

相關功能


需補截圖清單

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

  1. bankday-step1.png — 條件面板(日期欄)+查詢結果主格線全貌(建議含一筆外幣帳戶與應收/應付票據列,凸顯本幣與原幣欄差異)