跳轉到

程式資訊

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

銀行往來日報

功能簡介

「銀行往來日報」用來建立某一天所有銀行帳戶的餘額快照,把每個帳戶當日的前日餘額、存入金額、提領金額、本日餘額整理成一張以「日期」為主鍵的日報單據,外幣帳戶另附原幣餘額匯率。每天只會有一張,由出納/財務人員建立,是查核當日資金部位、產出 銀行往來日報列印頁 的資料來源。

本表單的特色是不用逐欄手 key:選好日期後按 新增查詢,系統會去呼叫後端 SP,把當日各銀行帳戶從總帳算出來的進出與餘額一次帶進明細,使用者只需確認、存檔即可。

這支不是「匯率設定」

模組功能清單與部分舊文件把 Bankfxr 標成「匯率設定」,實際程式(VFP bankfxr class、DARB_QRY_BANKFXR)做的是銀行日報表(銀行日報主檔/明細)。表單上的「匯率」只是外幣帳戶餘額換算出來的顯示欄,本表單不維護匯率主檔。維護各幣別匯率請改用 B 基本資料 的幣別/匯率主檔。

前置需求

  • 權限:O.銀行票據 → O-140 銀行往來日報。本表單在系統設定中標記為不可修改ProgramAllowEdit = false),因此只開放新增、刪除、查詢、列印,沒有「修改」動作。
  • 基礎資料:明細是由後端 SP 從下列資料算出來的,這些資料不齊全時,日報的金額會缺漏或為 0——
資料 影響的結果
銀行帳戶主檔(銀行帳戶,含「日報表=Y」「科目代號」「帳戶簡稱」「幣別」) 哪些帳戶會被列入日報、明細的帳戶代號/帳戶簡稱/幣別
總帳當日傳票(DARB_QRY_ABOOK1 的科目期初/借方/貸方) 各帳戶的前日餘額/存入金額/提領金額/本日餘額與外幣的原幣餘額
本位幣設定(系統環境 LocalCurrency) 本位幣帳戶在算不出匯率時自動補 匯率=1

操作步驟

新增一張日報(最常用)

  1. 按工具列的 新增。系統建立一張空白日報,日期自動帶今天,建檔日期也填今天。
  2. 確認或修改日期(每天一張,重複日期會被擋下,詳見 欄位連動與附加功能)。
  3. 新增查詢 按鈕。系統會清掉明細後,依該日期向後端取出所有銀行帳戶的當日餘額,逐列填入下方明細格線:
    • 帳戶代號/帳戶簡稱/幣別 由帳戶主檔帶出。
    • 前日餘額/存入金額/提領金額 由當日總帳算出,本日餘額=前日餘額+存入金額-提領金額
    • 外幣帳戶另算 原幣餘額匯率
  4. 核對明細無誤後按 儲存。存檔前系統會做兩道檢核(日期必填、本日餘額與原幣餘額不可一邊為 0 一邊非 0),詳見 欄位連動與附加功能

小技巧

新增查詢 只在新增狀態下可按。在瀏覽既有單據時按鈕會是停用狀態——這是刻意設計,避免覆蓋已存的歷史日報。

查詢/瀏覽既有日報

  1. 用工具列的查詢(依日期)或上一筆/下一筆瀏覽既有日報。
  2. 既有日報以唯讀方式顯示明細,無法修改內容(本程式不提供修改)。

刪除日報

  1. 瀏覽到要刪除的日報。
  2. 按工具列的 刪除,整張日報(主檔+明細)一併刪除。

空白明細列會自動清掉

存檔時系統會把帳戶代號為空的明細列自動標記為刪除(不會存進資料庫),所以不必手動刪空列。

列印

  1. 按工具列的列印,開啟 銀行往來日報列印頁
  2. 系統自動把起始日期/截止日期都帶為目前日報的日期。
  3. 報表 O140-1 銀行往來日報(A4)會列出各帳戶餘額,並在最後附一列合計(前日/存入/提領/本日餘額加總)。

欄位說明

主檔(單頭)

欄位 必填 說明/格式/預設
單號 系統流水號,唯讀,存檔時產生
日期 日報所屬日期,新增時預設今天(yyyy/MM/dd);每天只能一張,重複會被擋
建檔日期 新增時自動帶今天,唯讀

明細(銀行帳戶餘額)

欄位 必填 說明/格式/預設
帳戶代號 銀行帳戶代號,由 新增查詢 帶入
帳戶簡稱 帳戶名稱,由 DB view JOIN 自動帶出(不必手 key)
幣別 帳戶幣別,由帳戶主檔帶入
前日餘額 當日總帳科目的期初餘額
存入金額 當日借方金額
提領金額 當日貸方金額
本日餘額 =前日餘額+存入金額-提領金額(系統算)
原幣餘額 外幣帳戶的原幣別餘額(本位幣帳戶通常為 0)
匯率 =本日餘額 ÷ 原幣餘額(四捨五入 4 位);原幣餘額為 0 時為 0,本位幣帳戶算不出時補 1

本幣餘額欄位已隱藏

XAML 中保留了「本幣餘額」欄但目前註解未啟用,畫面上看不到;日報實際呈現的是上表九欄。

欄位連動與附加功能

這一節把「輸入某欄位/按某按鈕後系統會做什麼」整理出來,都是程式碼/VFP 真有的行為。

輸入「日期」→ 即時擋重複

  • 日期欄輸入後,畫面綁的是 日期Binding,它會立刻呼叫 Darb_chkdblBll.CheckPrimaryKey 去 DB 比對 bankfxrm 是否已有同一天的日報。
  • 該日期已經存在日報,欄位會標紅顯示錯誤、擋住存檔;改成尚未建立的日期後紅字自動清除。
  • 對應 VFP 日期.ValidU_CHKDBL(...)=「資料不得重複」檢核。換句話說,一天就是一張日報,不能建第二張。

按「新增查詢」→ 自動帶出當日全部帳戶餘額

這是本表單的核心動作(VFP 的 查詢鈕.Click)。按下後系統依序做:

  1. 僅限新增狀態:只有在新增(Add)狀態下按鈕才可按;瀏覽既有單據時停用。
  2. 清空明細:先把目前明細清掉,避免殘留舊資料。
  3. 撈當日各帳戶:呼叫 DARB_QRY_BANKFXR(條件 日報表='Y'),取得所有「列入日報」的銀行帳戶清單(含帳戶代號、帳戶簡稱、幣別、科目代號)。
  4. 撈當日總帳金額:以這批帳戶的科目代號範圍(最小~最大科目)+日報日期,呼叫 DARB_QRY_ABOOK1 取各科目的期初/借方/貸方(本幣與原幣)。
  5. 逐帳戶算餘額並填入明細:
    • 前日餘額=科目期初餘額;存入金額=借方;提領金額=貸方。
    • 本日餘額=前日餘額+存入金額-提領金額
    • 原幣餘額=原期初+原借方-原貸方。
    • 匯率:原幣餘額≠0 時=本日餘額 ÷ 原幣餘額(四捨五入 4 位);原幣餘額=0 時為 0。
    • 幣別=本位幣(系統 LocalCurrency)且算出來的匯率為 0,自動補匯率=1(對應 VFP 2012/12/10 新增的 m.幣別=m.指定幣別 AND m.匯率=0 → m.匯率=1;此處「指定幣別」即本位幣)。
  6. 找不到對應總帳科目的帳戶,餘額各欄維持 0,仍會列出該帳戶。

存檔前檢核(AllowSave)

儲存 時,存檔前會擋兩件事(VFP allowsave):

  1. 日期必填:日期空白時跳「請先輸入日期」並中止存檔。
  2. 餘額一致性:明細中只要有任一列「本日餘額=0 但原幣餘額≠0」或「本日餘額≠0 但原幣餘額=0」,就跳錯誤訊息中止存檔——避免外幣帳戶只填了本幣或只填了原幣的半套資料。

存檔前整理(HandleDataBeforeEndEdit)

  • 存檔前系統會掃描明細,把帳戶代號為空的列自動標記為 D(刪除),這些空列不會寫入資料庫(對應 VFP allowsaveIF EMPTY(帳戶代號) → REPLACE 增刪修 WITH 'D')。

新增另一張時的日期重設(AfterAddNew / addagain)

  • 連續新增時(按完存檔再新增),新單的日期會重新帶為今天(由主檔 Source 建構時自動帶入),AfterAddNew 再把建檔日期也帶今天,方便逐日建立日報(對應 VFP addagainREPLACE 日期 WITH DTOC(DATE()))。

帳戶簡稱由 view JOIN 帶出

  • 明細的帳戶簡稱不是手 key,也不是 BLL 另外拉的,而是 新增查詢 時隨帳戶清單(DB view JOIN 帳戶主檔)一起帶回來顯示。對應 VFP 用 U_SEEKNM('SK_BANK', 帳戶代號, '帳戶簡稱') 由帳戶代號反查名稱。

列印來源(IPrintSource / GetReports)

  • 列印頁帶報表 O140-1 銀行往來日報(抬頭「銀行往來日報」、A4、TW),資料來自 SQLite rpt_o140_bankfxr_report1
  • 報表會在明細末尾自動加一列合計(前日餘額/存入金額/提領金額/本日餘額加總;原幣餘額與匯率合計顯示為 0)。

常見問題

按了「新增查詢」沒反應,按鈕是灰的?

新增查詢 只在新增狀態下可用。請先按工具列 新增 建立一張新日報,按鈕才會啟用;瀏覽既有日報時刻意停用,避免覆蓋歷史資料。

明細的餘額全部是 0?

餘額是由當日總帳DARB_QRY_ABOOK1)算出來的。若該日期沒有過帳的傳票、或帳戶主檔的科目代號沒對到總帳科目,餘額就會是 0。請確認該日有當日傳票、且帳戶主檔科目代號正確。

為什麼某些銀行帳戶沒出現在日報?

新增查詢 只撈帳戶主檔中標記列入日報(日報表=Y)的帳戶。請到銀行帳戶主檔把要納入的帳戶設為列入日報。

存檔時跳「本日餘額/原幣餘額」一個為 0 一個不為 0?

這是餘額一致性檢核:外幣帳戶不能只填本幣餘額或只填原幣餘額。請補齊原幣餘額或匯率對應的資料,讓兩者同時為 0 或同時非 0 後再存檔。

同一天想再建一張日報,存不進去?

一天只能有一張日報——日期是主鍵,重複日期會被即時擋下(日期欄標紅)。若要重做當天日報,請先刪除原本那張再新增。

可以改既有日報的金額嗎?

不行。本表單設定為不可修改(VFP IS_可修改=.F.、新版 ProgramAllowEdit=false),只提供新增、刪除、查詢、列印。需要更正請刪除後重建。

相關功能


需補截圖清單

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

  1. bankfxr-step1.png — 主畫面:日期欄+新增查詢 按鈕與明細格線全貌
  2. bankfxr-step2.png — 按 新增查詢 後自動帶出各帳戶餘額的明細
  3. bankfxr-step3.png — 日期重複時欄位標紅的擋重提示