跳轉到

程式資訊

  • 程式 IDGINVBOOK
  • 所屬子系統:C.總務管理
  • 狀態:stable

庫存帳冊

功能簡介

「庫存帳冊」是一支純查詢程式,把同一個品號在一段期間內的期初存量 → 每一筆進出異動 → 結餘完整攤開,讓倉管、成本與稽核人員能逐筆核對庫存的來龍去脈。它提供兩種看資料的角度,放在兩個頁籤:

  1. 分類進出帳(上半主表+下半明細):以「倉庫/倉儲/品號/工程/批號」為一條帳,先彙總出每條帳的期初、入庫、出庫、盤差、期末數量與金額,再展開該條帳區間內的逐筆異動與逐筆結餘
  2. 日記帳:以單據為單位,把區間內每一張進出單據(含幣別、匯率、交易對象、金額)平鋪列出,並可只篩「進貨」相關單據。

它在流程中的位置是「庫存異動之後的檢視端」——所有入庫(如暫收單 等)、出庫、調撥、盤點異動寫進庫存後,這支報表把它們按品號彙整核帳。資料來源是後端 SP DARB_GINVBOOK(分類進出帳)與 DARB_GINVBOOK1(日記帳),期初、結餘、盤差的計算則在前端依舊版 VFP 邏輯重算。

本程式只查不改

庫存帳冊不會新增、修改或刪除任何庫存資料,兩個頁籤都是唯讀。要更正帳務需回到原始異動單據處理。

前置需求

  • 權限:C.總務 → C-100 庫存帳冊 的瀏覽(查詢)權限;列印需要列印權限。
  • 基礎資料:查詢結果的完整度取決於下列資料的維護狀況——
資料 影響的結果
倉庫主檔(隸屬倉庫 / 倉儲代號) 條件面板的起迄倉庫預設值、主表的倉庫歸屬;查無倉庫資料無法查詢
品號主檔(品名、單位、群組代號、分類) 主表/明細的品名、單位;以群組代號查詢時的範圍
月成本結帳資料(gcostm / gcostd) 每條帳的期初數量/期初金額(取最近一次成本月份)
庫存異動單據(trgama / trgade) 期前異動、明細的入出庫、日記帳的每一筆
幣別/匯率 日記帳的幣別、匯率、金額(金額取本幣未稅)

尚未提供的兩項功能(規劃中)

舊版 VFP 的報表格式選擇(明細 / 彙總 / 模具表三種 .frx)與樞紐分析(匯出本機 Excel 樞紐檔)在新版尚未移植。新版改以共用框架提供列印與 Excel 匯出,模具/尺寸分析所需的分類欄位資料雖已備齊(隨 Excel 一併匯出),但專屬報表版型仍規劃中。

操作步驟

庫存帳冊的兩個頁籤共用上方同一組查詢條件,但由不同按鈕觸發查詢:分類進出帳用工具列的 查詢,日記帳用條件區右側的 日記帳查詢 按鈕。

一、設定查詢條件(兩頁籤共用)

  1. 設定起迄倉庫:開窗時系統自動帶入倉庫主檔的第一個隸屬倉庫到起、迄兩格。

    起迄倉庫的連動

    起始倉庫輸入一個非空白的倉庫後,系統會自動把同一個值帶到截止倉庫,方便只查單一倉庫。要查多倉再手動把截止倉庫改大即可。詳見欄位連動與附加功能

  2. 視需要縮小範圍,填起迄倉儲(儲位代號)、起迄品號、起迄群組、起迄儲位、起迄日期。截止類欄位預設帶哨兵值 zzzzzz(代表「到最大」、不設上限),日期預設為今天。

  3. 用三個核取方塊控制彙整顆粒度:
    • 不分儲位:勾選後同一倉庫下不同儲位合併成一條帳。
    • 不分工程:勾選後忽略途程序號/工程代號的差異。
    • 不分批號:勾選後忽略批號別/批號的差異。
  4. 勾選 期末不為0 可只保留期末數量不為零的帳(過濾掉已出清的品項)。
  5. 條件別:以 品號群組代號 作為品項範圍的篩選依據(決定上面起迄品號/起迄群組哪一組生效)。
  6. (僅日記帳用)選單據別ALL 查全部,進貨 只查單號開頭為 RCRDMG 的進貨/退貨/雜收單據。

二、查詢「分類進出帳」

  1. 條件設好後,按工具列的 查詢
  2. 上半部主表列出每條帳的彙總(期初 / 入庫 / 出庫 / 盤差 / 期末 的數量與金額)。
  3. 點選主表任一列,下半部明細即顯示該條帳的逐筆異動,第一列固定是標記為「期初」的起始結餘,其後每列帶逐筆結餘數量與金額。
  4. 用主表上方的 索引別 切換排序:倉庫排序(預設,倉庫→倉儲→品號)或 品號排序(品號→倉庫→倉儲)。切換後主表立即重排,不需重新查詢。

三、查詢「日記帳」

  1. 切到 日記帳 頁籤(條件沿用同一組)。
  2. 按條件區右側的 日記帳查詢 按鈕。
  3. 系統以單據為單位列出區間內每一筆進出,含倉單號、交易日期、幣別、匯率、交易對象、數量、單價、金額等。退貨單(單號 RD 開頭)的數量與金額會自動以負值顯示。

四、列印與匯出

  1. 列印:當分類進出帳已有資料時,可用工具列列印功能輸出報表。
  2. 匯出 Excel:工具列的 Excel 匯出會一次匯出三個工作表——分類進出帳(主表)、進出明細(所有明細)、日記帳——檔名 ginvbook

查詢前的兩道檢核

無論按哪個查詢,系統都會先檢查:(1) 起、迄倉庫不可同時為空,否則提示「請先輸入起迄倉庫代號 !!!」;(2) 起迄倉庫範圍內必須有倉庫資料,否則提示「查無隸屬倉庫資料 !!!」。

欄位說明

查詢條件

欄位 必填 說明 / 格式 / 預設
起始倉庫 / 截止倉庫 隸屬倉庫範圍。預設帶入倉庫主檔第一筆;起始倉庫輸入後自動帶到截止倉庫
起始倉儲 / 截止倉儲 儲位(倉儲)代號範圍。截止預設 zzzzzz(不設上限)
起始品號 / 截止品號 品號範圍(條件別=品號時生效)。截止預設 zzzzzz
起始群組 / 截止群組 群組代號範圍(條件別=群組代號時生效)。截止預設 zzzzzz
起始儲位 / 截止儲位 儲位文字範圍。截止預設 zzzzzz
起始日期 / 截止日期 異動查詢區間,格式 yyyy/MM/dd,預設皆為今天
不分儲位 勾選=同倉庫合併不同儲位(預設不勾)
不分工程 勾選=忽略途程序號/工程代號(預設不勾)
不分批號 勾選=忽略批號別/批號(預設不勾)
期末不為0 勾選=只留期末數量≠0 的帳(預設不勾)
條件別 品號群組代號,決定品項範圍依據。預設 品號
單據別 ALL / 進貨,僅日記帳生效。預設 進貨
索引別 倉庫排序 / 品號排序,僅分類進出帳主表。預設 倉庫排序

分類進出帳—主表欄位

欄位 說明
隸屬倉庫 / 倉儲代號 / 品號 帳的歸屬鍵;勾「不分儲位」時倉儲代號=隸屬倉庫
途程序號 / 工程代號 / 批號別 / 批號 帳的細分鍵;勾對應「不分」核取方塊時清空或歸 0
品名 / 單位 取自品號主檔
期初數量 / 期初金額 期初基準(最近成本月份 + 成本截止日至起始日的期前異動加總)
入庫 / 出庫數量、金額 區間內非盤點單(單號非 AA 開頭)異動的入、出庫合計
盤差數量 / 盤差金額 區間內盤點單(單號 AA 開頭)的入庫減出庫淨額
期末數量 / 期末金額 =期初+入庫-出庫+盤差(自動計算)
品號結尾 同一品號群組的最後一列為 .T.(報表分組用)
其他鍵 途程序號+工程代號+批號別+批號 組成的細分鍵

分類進出帳—明細欄位

欄位 說明
倉單號 / 單號 該筆異動的倉庫單號與來源單號
交易日期 異動日期;期初列固定顯示「期初」標記
交易部門 / 交易簡稱 / 交易別碼 異動對象與交易類別
入庫 / 出庫數量、金額 該筆異動的進出量與金額
結餘數量 / 結餘金額 逐筆累計:期初起,每列=前一列結餘+入庫-出庫
單位成本 該筆異動的單位成本
備註 異動備註

日記帳欄位

欄位 說明
倉單號 / 單號 單據編號
交易日期 單據日期
幣別 / 匯率 原幣別與匯率
隸屬倉庫 / 轉入倉儲 / 轉出倉儲 倉庫與調撥方向
交易部門 / 交易簡稱 / 需求部門 / 部門簡稱 交易與需求單位
品號 / 品名 / 途程序號 / 工程代號 / 批號別 / 批號 品項與細分鍵
數量 / 單位 / 單價 異動數量與單價(RD 退貨列為負)
其他金額 / 金額 金額取本幣未稅;RD 退貨列為負
採購單pkid 來源採購單關聯鍵

欄位連動與附加功能

這一節把「輸入某欄位 / 按某按鈕後系統實際會做什麼」逐條列出,全部來自程式碼。

開窗時的初始化

  • 起迄倉庫自動帶入:開啟視窗時,系統讀倉庫主檔(gstkbas)所有隸屬倉庫,取排序後第一個同時填入起始倉庫與截止倉庫。若倉庫主檔為空,兩格留白。
  • 截止欄位帶哨兵值:起迄倉儲/品號/群組/儲位的「截止」欄一律預設 zzzzzz,日期欄預設今天。這是為了在你不設上限時,範圍查詢自然「查到最大」。

起始倉庫 → 截止倉庫(LostFocus 連動)

  • 當你在起始倉庫輸入一個非空白的倉庫後,系統會自動把同一個值複製到截止倉庫。用意是「預設只查單一倉庫」;要跨多倉時,輸入起始倉庫後再手動把截止倉庫改大。

索引別 → 主表即時重排

  • 在分類進出帳頁切換 索引別(倉庫排序/品號排序)時,只要主表已有資料,系統會立即就地重排主表,不會清掉結果、也不需要再按查詢。
    • 倉庫排序:隸屬倉庫 → 倉儲代號 → 品號 → 其他鍵。
    • 品號排序:品號 → 隸屬倉庫 → 倉儲代號 → 其他鍵。

選主表列 → 帶出對應明細

  • 點選主表任一列時,系統用該列的帳鍵(倉庫+倉儲+品號+工程+批號)到明細字典取出對應該條帳的逐筆異動填入下方明細格。沒有選取或查無對應時明細清空。

按「查詢」(分類進出帳)會做的事

  1. 先做兩道檢核(起迄倉庫不可全空、範圍內須有倉庫)。
  2. 對範圍內每一個隸屬倉庫各呼叫一次 DARB_GINVBOOK,帶入品號(或群組)+儲位範圍條件、起迄倉儲、起迄日期;每次回傳 5 個結果集(期初成本、期前異動、區間交易、倉儲組合、品號分類)。
  3. 在前端重算:
    • 期初=最近成本月份的期初 +(成本截止日~起始日)期前異動的入庫減出庫。
    • 明細逐筆結餘=沿異動順序累加(期初列在最前)。
    • 盤差:單號 AA 開頭的異動歸入盤差數量/金額(入庫減出庫),其餘歸入庫/出庫。
    • 不分儲位/工程/批號 勾選時,在組鍵階段就把對應欄位清空或歸 0,使多列合併成一條帳。
  4. 過濾主表:勾「期末不為0」時刪除期末數量=0 的列;未勾時刪除「所有數量皆 0 且只有一筆期初明細」的列(保留有實際異動的帳)。
  5. 回填品名/單位/分類,標記每個品號群組的「品號結尾」,最後依索引別排序。

按「日記帳查詢」會做的事

  1. 同樣先做兩道倉庫檢核。
  2. 呼叫 DARB_GINVBOOK1,帶入起迄倉庫、品號(或群組)+儲位範圍、起迄倉儲、起迄日期。
  3. 單據別=進貨,額外加上 LEFT(單號,2) IN ('RC','RD','MG') 只取進貨/退貨/雜收單據。
  4. 回傳後,把單號 RD 開頭(退貨)列的數量、其他金額、金額取負,最後依品號排序顯示。

Excel 匯出(IExcel)

  • 工具列的 Excel 匯出會把三份資料一次輸出到同一個活頁簿的三個工作表:分類進出帳(主表彙總)、進出明細(所有條帳的明細合併)、日記帳(日記帳結果),檔名 ginvbook。主表雖然畫面上不顯示分類 1~6/尺寸,但這些欄位有備齊並隨 Excel 匯出,供模具/尺寸分析使用。

列印與工作流程紀錄

  • 列印:本程式有報表資料時(主表有列)才允許列印;目前以新版共用列印框架輸出。
  • 工作流程紀錄:繼承自共用查詢框架,可把本次查詢登錄為一筆紀錄(需有資料才能登錄)。

規劃中:報表版型與樞紐分析

舊版可選「明細 / 彙總 / 模具表」三種報表格式,以及把結果丟進本機 Excel 樞紐檔做樞紐分析。新版尚未移植這兩項;模具表所需的分類資料已保留在匯出資料中,但專屬版型仍規劃中。

常見問題

按查詢出現「請先輸入起迄倉庫代號 !!!」?

起始倉庫與截止倉庫同時為空就會被擋。正常情況開窗會自動帶入第一個倉庫;若被清空,請至少在起始倉庫填一個倉庫(系統會自動帶到截止倉庫)。

按查詢出現「查無隸屬倉庫資料 !!!」?

代表你設定的起迄倉庫範圍內找不到任何倉庫。請確認倉庫代號拼字正確、起始倉庫不大於截止倉庫,且該倉庫存在於倉庫主檔。

查詢結果是空的,但庫存明明有東西?

依序確認:(1) 日期區間——預設起訖都是「今天」,要看歷史異動請把起始日期往前調;(2) 截止欄位——若手動清掉 zzzzzz 又留空,範圍上限會變成空字串而查不到資料,建議保留 zzzzzz;(3) 條件別——選「品號」卻填了群組範圍(或相反)不會生效;(4) 未勾「期末不為0」時,全程沒有異動且期初為 0 的帳會被自動濾掉。

期初數量/金額看起來不對,或是 0?

期初是用最近一次成本月份的期初,再加上「成本截止日到查詢起始日」之間的期前異動算出來的。若該品號尚未跑過月成本結帳,或成本月份與查詢起始日之間缺異動資料,期初就可能為 0 或與預期不符。

日記帳查不到某些單據?

單據別預設是「進貨」,只會撈單號開頭 RCRDMG 的單據。要看全部進出單據,請把單據別改成 ALL 再按一次 日記帳查詢

日記帳裡退貨單的數量/金額是負的,正常嗎?

正常。系統刻意把單號 RD 開頭(退貨)的數量、其他金額、金額以負值呈現,方便和正向進貨抵銷後得到淨額。

切換索引別後資料沒變?

索引別只重排已查出的分類進出帳主表。若主表還沒有資料(尚未按查詢),切換不會有任何效果;請先查詢再切排序。

相關功能


需補截圖清單

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

  1. ginvbook-step1.png — 條件面板全貌(起迄倉庫、不分儲位/工程/批號、條件別/單據別)
  2. ginvbook-step2.png — 分類進出帳頁籤:上方索引別+主表+下方明細(含期初列與逐筆結餘)
  3. ginvbook-step3.png — 日記帳頁籤查詢結果(含退貨列負值)