程式資訊
- 程式 ID:
Pay_qry0 - 所屬子系統:I.帳款管理
- 狀態:stable
廠商應付帳款查詢¶
功能簡介¶
「廠商應付帳款查詢」把每一家廠商的應付帳款一次彙整成五張表:彙總(廠商別+立帳明細+產品+沖帳傳票四層連動)、明細、產品明細、以及兩張年度(12 個月)統計表。它讓會計、採購主管在一個畫面裡回答:
- 每家廠商目前欠多少?拆成前期、本期、最新各多少?(應付帳款彙總表)
- 每一筆應付是哪張單、哪張發票、沖了多少、還欠多少?(應付帳款明細表)
- 這些應付對應到哪些進貨品號、數量、單價?(產品明細表)
- 以結帳月份為起點,往後 12 個月每月的應付金額/未付金額分布如何?(年度應付帳款統計表、年度應付未付統計表)
資料來源是後端的 DARB_QRY_PAY_QRY0 Stored Procedure(對應 VFP 的 LOG_SYS_EXEC('PAY_QRY0', ...)),本表單只負責查詢與彙整,不會新增或修改任何帳款,因此沒有存檔、刪除動作。
與收款查詢是同一套
本表單與廠商應收帳款查詢結構幾乎對稱:一個算「應付」、一個算「應收」。操作邏輯共通,只是條件面板的廠商/客戶與金額方向相反。
前置需求¶
- 權限:I.應收應付 →
I-150 廠商應付帳款查詢的瀏覽權限;列印需另有列印權限。 - 基礎資料:查詢結果取自應付帳款異動,下列資料的維護狀況直接決定畫面完整度——
| 資料 | 影響的結果 |
|---|---|
| 廠商基本資料(代號/簡稱) | 條件面板的廠商起訖、彙總表的廠商代號/名稱 |
| 進貨/暫估/應付異動單據 | 彙總表、明細表的每一筆應付金額、稅額、發票 |
| 付款單沖帳(付款作業) | 本期沖帳、沖帳本幣、未付帳款的扣抵 |
| 帳款期別(結帳年月) | 前期/本期/最新三段的切分、年度統計表的月份歸位 |
| 倉庫設定 | 彙總明細的倉庫欄(由單號反查倉儲) |
_prgpar 小數位數參數 |
各金額欄的顯示小數位(VFP U_PRGPAR(2018)) |
操作步驟¶
本表單是「先設條件 → 按查詢 → 看五個頁籤」的查詢報表,沒有逐筆新增。
步驟① 設定查詢條件¶
條件面板(Pay_qry0Condition)欄位如下:
- 選擇查詢別(單選):
現有餘額:以「今天」為基準計算現有未付餘額(預設)。選此項時截止日期欄停用。截止日期:計算到指定日期為止的未付狀況。選此項才會啟用右側的截止日期輸入框。
- 輸入廠商代號起訖:用廠商查詢控件帶代號。起始預設空字串、截止預設
zzzzzz(代表全部廠商)。 - 輸入結帳年度/結帳月份:決定前期/本期/最新的切分點與年度統計表的起算月。預設帶上個月(系統日期往前一個月)的年、月。
- 視需要勾選應付彙總明細只含本期(預設勾選):勾選時彙總表第二層的立帳明細只列出帳款期別等於結帳年月的資料。
- 視需要勾選已沖帳不顯示:勾選時彙總表會移除「五個金額欄全為 0」的廠商(前期未結款/本期應付款/前期本期小計/最新未結款/總未付帳款皆為 0 者)。
步驟② 執行查詢¶
按工具列的 查詢,系統呼叫 DARB_QRY_PAY_QRY0,把回傳的三個資料表(應付異動、產品明細、沖帳傳票)整理進五個頁籤,畫面底部同時顯示五個總金額。
步驟③ 在彙總表逐層展開¶
「應付帳款彙總表」頁籤是四層連動(見欄位連動與附加功能):點上方廠商列 → 中間出現該廠商的立帳明細 → 點某一筆立帳 → 下方左右兩格分別出現該財務單號的產品明細與沖帳傳票。

欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 查詢別 | ✔ | 現有餘額(值=CurrentAmount,預設)或 截止日期(值=EndingDate) |
| 截止日期 | — | 僅查詢別=截止日期 時啟用;預設系統當日(yyyy/MM/dd) |
| 廠商代號(起始) | — | 預設空字串=不限下界 |
| 廠商代號(截止) | — | 預設 zzzzzz=不限上界(涵蓋全部廠商) |
| 結帳年度 | ✔ | 4 位數年,預設上個月的年 |
| 結帳月份 | ✔ | 2 位數月,預設上個月的月 |
| 應付彙總明細只含本期 | — | 預設勾選;只影響彙總表第二層立帳明細 |
| 已沖帳不顯示 | — | 預設不勾;勾選時隱藏金額全 0 的廠商 |
頁籤一覽¶
| 頁籤 | 內容 | 連動 |
|---|---|---|
| 應付帳款彙總表 | 廠商別彙總(上)+立帳明細(中)+產品明細/沖帳傳票(下左/下右)+底部五個總金額 | 四層由上往下連動 |
| 應付帳款明細表 | 每一筆應付的完整明細(含發票、原幣/本幣、沖帳、到期日) | 平鋪,不連動 |
| 產品明細表 | 應付對應的進貨產品逐項(品號、數量、單價、未稅/含稅) | 平鋪,不連動 |
| 年度應付帳款統計表 | 廠商 × 12 個月的應付金額矩陣+總計列 | 月份欄標頭隨結帳月動態 |
| 年度應付未付統計表 | 廠商 × 12 個月的未付金額矩陣+總計列 | 同上 |
彙總表(廠商別)金額欄¶
以結帳年月(結帳年度/結帳月份)為界,比對每筆的帳款期別:
| 欄位 | 算法 |
|---|---|
| 前期未結款 | Σ(帳款期別 < 結帳年月 時的 本幣應收付 − 沖帳本幣) |
| 本期沖帳 | Σ(帳款期別 = 結帳年月 時的 沖帳本幣) |
| 本期應付款 | Σ(帳款期別 = 結帳年月 時的 本幣應收付 − 沖帳本幣) |
| 前期本期小計 | Σ(帳款期別 ≤ 結帳年月 時的 本幣應收付 − 沖帳本幣) |
| 最新未結款 | 總未付帳款 − 前期未結款 − 本期應付款(即帳款期別 > 結帳年月 的未付) |
| 總未付帳款 | Σ(全部 本幣應收付 − 沖帳本幣) |
底部五個唯讀總金額(前期未結款/本期應付款/前期本期小計/最新未結款/總未付帳款)=上表各欄對全部廠商加總。
欄位連動與附加功能¶
這一節把「輸入某欄位/按某動作後系統會做什麼」依實際程式碼整理出來。
查詢別 ↔ 截止日期 連動¶
- 當你把查詢別切到
截止日期,系統會啟用右側的截止日期輸入框(截止日期IsEnabled = true);切回現有餘額則停用該框。 - 送查詢時,查詢別會以整數(
現有餘額=1、截止日期=2)當作 SP 的第一個參數LP_P1,截止日期當作LP_P2,廠商起訖當作LP_P3 / LP_P4。
現有餘額仍會帶截止日期
即使選 現有餘額,系統仍把當日日期一併送進 SP;查詢別 1/2 的差異在 SP 端決定「算到今天」或「算到指定日」。
結帳年度/月份 → 三段切分與年度標頭¶
- 結帳年月是前期/本期/最新三段的分界(見上方算法表),改了它再查詢,彙總表三段金額會重新歸位。
- 結帳月份同時決定年度統計表的月份標頭起點。兩張年度表都從「結帳月份」當第 1 欄往後排 12 個月:例如結帳月份為
04,欄標頭依序顯示04月、05月 … 12月、01月 … 03月(YearViewModel.UpdateColumnHeaders由起始月份循環推算,對應 VFP 的改抬頭)。
彙總表四層連動(廠商 → 立帳 → 產品/傳票)¶
- 點選上方廠商列(Group1):系統用該廠商代號到
lookupGroup2取出該廠商的立帳明細(Group2),填入中間格,並自動選中第一筆。 - 點選中間立帳明細(Group2,鍵為財務單號):系統用該財務單號分別到
lookupGroup3、lookupGroup4取出產品明細(Group3,左下)與沖帳傳票(Group4,右下)。 - 沒有選取時對應的下層格會清空,不會殘留上一筆資料。
合併單號(COMBINE)回填¶
- 立帳明細若單號以「合併」開頭(VFP 的
COMBINE),系統會到該財務單號的產品明細裡把所有實際單號用逗號串起來,回填到該列的單號欄,方便看出這筆合併立帳實際涵蓋哪幾張進貨單(GroupCombineHandle,對應 VFPPAY_QRY0_P12的單號回填段)。
立帳明細的衍生欄位¶
每一筆立帳明細(Group2)的部分欄位由程式即時算出,而非直接取自 SP:
- 倉庫:用單號透過
GetWarehouseByTransactionNo反查倉儲(對應 VFPLEFT(單號,6)取交易主體再查倉)。 - 貨款:本幣應收付 − 稅額。
- 未付帳款:本幣應收付 − 沖帳本幣。
- 立帳明細預設依交易日期排序。
明細表的未付欄位¶
「應付帳款明細表」每一列的未付欄位由 BLL 即時計算:
- 未付原幣 = 原幣應收付 − 沖帳原幣
- 未付本幣 = 本幣應收付 − 沖帳本幣
- 年度月份 = 交易日期前 7 碼(
yyyy/MM)
兩張年度統計表的歸位邏輯¶
- 年度表把每筆明細依帳款期別的月份對位到 12 欄之一:若該月 ≥ 結帳月份放
C01…,否則跨年放後段欄位(對應 VFPREPLACEFIELD='C'+...的環狀月份計算)。 - 「年度應付帳款統計表」累加的是本幣應收付;「年度應付未付統計表」累加的是未付本幣。
- 兩張表都會在最後補一列 總計(代號=Total、名稱=總計),把各月加總。
匯出 Excel(產生Excel)¶
- 一次輸出六張工作表,檔名
Payqry:- 應付帳款彙總表-彙總(Group1 廠商別)
- 應付帳款彙總表-明細(全部廠商的立帳明細,由
GetFullDetail把各廠商的明細攤平輸出,不受畫面上「選了哪家廠商」影響;但仍受「應付彙總明細只含本期」勾選影響——勾選時這張表也只含本期立帳) - 應付帳款明細
- 產品明細表
- 年度應付帳款統計表
- 年度應付未付款統計表
列印(GetReports + IPrintSource)¶
- 工具列列印提供兩張報表(皆走 SQLite
rpt_i150_payqry_report1):- I150-1 年度應付帳款統計表(報表名
Payqry1) - I150-2 年度應付未付款統計表(報表名
Payqry2)
- I150-1 年度應付帳款統計表(報表名
- 列印時系統會把 12 個月標頭(
H1…H12)依結帳月份重新產生再帶入報表(GenerateMonthlyHeaders),與畫面年度表的欄標頭一致。
彙總表/明細表沒有獨立報表
新版列印只提供兩張年度統計報表。VFP 原版的「彙總表/明細表」列印(PAYQRY11 / PAYQRY14)在新版改以 Excel 匯出取代,畫面上不再提供對應的列印鈕。
常見問題¶
查詢別選「現有餘額」時,截止日期欄是灰的改不了?
這是正常的。截止日期只在查詢別=截止日期 時才會啟用;現有餘額 一律以系統當天為基準,所以該欄會被停用。把查詢別切到 截止日期 就能輸入。
某家有交易的廠商沒出現在彙總表?
請檢查是否勾了已沖帳不顯示。勾選時,凡是前期未結款/本期應付款/前期本期小計/最新未結款/總未付帳款五欄全為 0 的廠商都會被隱藏(代表已全部付清)。取消勾選即可看到。
彙總表中間的立帳明細只剩幾筆?
這是應付彙總明細只含本期勾選的效果(預設就勾)。勾選時中間的立帳明細只列出帳款期別等於結帳年月的資料;想看全部立帳明細,取消這個勾選再查詢一次,或直接看「應付帳款明細表」頁籤(該頁不受此勾選影響)。注意:Excel 匯出的「彙總表-明細」雖然會列出全部廠商,但一樣會受此勾選影響——勾選時只含本期。
年度統計表的月份欄標頭順序很奇怪,不是 1 月開頭?
年度表刻意以結帳月份當第 1 欄往後排 12 個月。例如結帳月份 04,欄就從 04月 開始繞一圈到 03月。改結帳月份再查詢,標頭會跟著重排,這是設計而非錯誤。
點了廠商,下面的產品明細/沖帳傳票還是空白?
彙總表是四層連動:要先點上方廠商列帶出中間立帳明細,再點某一筆立帳明細,才會用其財務單號帶出下方的產品明細與沖帳傳票。若該財務單號本身沒有對應的產品或傳票資料,下層就會是空的。
我想印彙總表或明細表,列印只出年度統計表?
目前工具列列印只提供兩張年度統計報表(I150-1/I150-2)。彙總表、明細表、產品明細請用 Excel 匯出(一次六張工作表),不再提供畫面列印。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/I-ARAP/images/):
pay_qry0-step1.png— 條件面板(查詢別/廠商起訖/結帳年月/兩個勾選)+應付帳款彙總表四層連動全貌pay_qry0-step2.png— 應付帳款明細表頁籤(含發票、原幣/本幣、未付欄)pay_qry0-step3.png— 年度應付帳款統計表(含動態月份標頭與總計列)