跳轉到

程式資訊

  • 程式 IDINVSTK
  • 所屬子系統:H.庫存管理
  • 狀態:stable

庫存明細表

功能簡介

「庫存明細表」(庫存現況查詢)把一個品號(或一段品號/一張訂單)的庫存狀況,從總量到細節一次攤開:上方主表是品號別的庫存彙總(庫存量、可用量、採購未入、訂單未交、在途量、小計),點選某一個品號後,下方三張明細表會聯動顯示該品號的倉別庫存倉別/批號/途程的現有數量,以及進出異動明細

適合倉管、生管、業務在接單、排產、回交期前快速判斷「這個品號現在還有多少能用、各倉各批散在哪裡、最近進出狀況如何」。本頁是唯讀的查詢報表,不會異動任何庫存資料;要實際調整庫存請使用對應的進出庫或盤點單據。

資料來源

查詢由 Stored Procedure DARB_QRY_INVSTK(VFP 原版庫存現況查詢,2 參數多結果集)一次撈回,前端再依條件分組、過濾、串接成四張表顯示。

前置需求

  • 權限:H.庫存 → H-120 庫存明細表 的瀏覽權限。
  • 基礎資料:查詢結果是否完整、可用量是否正確,取決於下列主檔/異動資料的維護狀況——
資料 影響的結果
品號主檔(INVENT 品號、品名、品別、ABC 分類、安全庫存、Leadtime、再採購點等主表欄位
倉儲主檔(splace 倉別說明、Inventory < 0(缺貨)查詢時的「隸屬倉庫」區間判斷
庫存/批號明細(invstk 庫存檔) 各倉、各批號、各途程的現有數量、保留量、領用量
銷售訂單(ORDETL / ORMAST 「訂單未交」量、依訂單號/預訂交期查詢的品號範圍
暫收單(trrama 暫收 / 待驗 「在途量(In-Transit)」彙總列與明細列

操作步驟

本表單只有一個動作:設定條件後按工具列的 查詢。畫面分左側查詢條件面板右側四張結果表

庫存現況查詢主畫面

步驟① 選擇查詢別

在左上「Query Type」群組選一種查詢別,選定後右側對應的輸入欄位才會啟用(其餘自動反白停用):

  1. SKU(預設):依品號查。可勾選 Is Single(預設勾選)只查單一品號;取消勾選後才會啟用結束品號,改查一段品號區間。
  2. SKU Description:依品名模糊查(內含比對)。可同時輸入兩個關鍵字,兩者都要符合。
  3. SalesOrder:依銷售訂單查。可輸入訂單號,或留空訂單號改用 <= ETA(預訂交期) 撈出所有未交、未結案的訂單品號。
  4. Inventory < 0:撈出現有數量為負(缺貨)的品號,並可指定「隸屬倉庫」區間。
  5. Shipping Notice(出貨通知):此查詢別在目前版本隱藏未啟用,畫面上看不到。

步驟② 設定共用條件

不論哪一種查詢別,下列條件都會作用:

  1. Warehouse(只看某倉):填倉別代號只顯示該倉的庫存,預設 PR;填 ALL 或留空表示全倉。
  2. Group by Lot Num(依批號彙總):預設勾選。勾選時倉別明細表會把同一倉同途程的批號加總成一列;取消勾選則逐批號(含批號、製通單號)展開。
  3. Not Include DI Order(排除 DI 倉):預設勾選,過濾掉倉別為 DI 的資料。

步驟③ 執行查詢並查看聯動明細

  1. 按工具列 查詢。主表(上方)列出符合條件的品號彙總
  2. 在主表點選任一品號列,下方三張表自動帶出該品號的明細(透過品號當 Key 聯動):
    • 左下:倉別庫存彙總(含在途 In-Transit 列)。
    • 右下:倉別/批號/途程現有數量明細。
    • 最下:進出異動明細(採購進貨、訂單出貨等,含逐筆小計餘量)。

小技巧

四張表都是 RadGridView,可在格線標頭排序、用欄位選單調整顯示欄位,並可由格線右鍵匯出 Excel。改了條件後再按一次 查詢 即重撈。

欄位說明

查詢條件

欄位 必填 說明 / 預設
Query Type(查詢別) SKU / SKU Description / SalesOrder / Inventory < 0;預設 SKUShipping Notice 隱藏未啟用)
Is Single(單一品號) SKU 別有效;勾選只查單一品號,取消才啟用結束品號。預設勾選
SKU(起/迄品號) 查詢別=SKU 時填;起始預設空、結束預設 zzzzz
SKU Description(品名 1/2) 查詢別=SKU Description至少填一個,否則擋查詢;兩格皆填時兩關鍵字都要符合
Sales Order No(訂單號)/ <= ETA 查詢別=SalesOrder 時填;留空訂單號則改抓「預訂交期 ≤ ETA 且未交、未結案」的品號。ETA 預設今天 +60 天
Warehouse(只看某倉) 只顯示該倉,預設 PRALL/空=全倉
起/迄 Warehouse(隸屬倉庫區間) 查詢別=Inventory < 0 時填,篩缺貨品號所在倉庫;起始預設空、結束預設 zzzzz
Group by Lot Num 倉別明細是否依批號彙總,預設勾選
Not Include DI Order 是否排除 DI 倉,預設勾選

主表:品號庫存彙總

欄位 說明
品號 / 品名 / 品別 來自品號主檔
ABC 分類 / 安全庫存 / Leadtime / 再採購點 品號主檔的庫存管理參數
庫存量(Inventory Quantity) 該品號各倉現有數量加總
保留量 / 領用量 已被保留/已領料未出的數量
訂單未交(Sales Order Not Shipping) 進出明細中尚未出貨的訂單數量加總
可用量(Available Quantity) =庫存量 − 保留量 − 領用量 − 訂單未交
採購未入(Purchase Order Not Receiving) 已下採購單但尚未入庫的數量
在途量(In-Transit Quantity) 暫收單尚待驗收入庫的數量
小計(Subtotal) =可用量 + 採購未入 + 在途量(代表「未來可期望的可用量」)
在製量(In Processing Quantity) 生產中數量;目前版本未帶入資料(對應的結果集尚未啟用),固定為 0

下方三張明細表

主要欄位 說明
倉別庫存彙總 隸屬倉庫 / 倉儲說明 / 庫存量 該品號各倉的現有量;含 In-Transit(暫收在途)列
倉別/批號明細 隸屬倉庫 / 倉儲代號 / 途程序號 / 工程代號 / 工程簡稱 / 批號 / 批號C / 製通單號 / 現有數量 取消「依批號彙總」時才會逐批號展開;勾選彙總時批號相關欄位為空
進出異動明細 訂單別 / 進出日期 / 客戶代號 / 顯示簡稱 / 進貨數量 / 出貨數量 / 小計數量 / 回覆日期 / 生產回覆者 / 分批交貨 / 製程別 / 備註 / 訂單分類 / 交期不同 / 單號 / 客戶訂單號 逐筆進出,小計數量為由庫存量起算的滾動餘量

欄位連動與附加功能

這一節把「選了什麼/按了什麼會發生什麼」逐條列出,全部對應實際程式行為。

查詢別切換時,輸入欄位自動啟用/停用

當你切換 Query Type 單選鈕,系統會依查詢別重設五組輸入欄位的可用狀態(SetTextBoxIsEnabled):

  • SKU → 啟用 SKU 起迄欄,其餘停用。
  • SKU Description → 啟用 品名 1/2 欄,其餘停用。
  • SalesOrder → 啟用 訂單號 / ETA 欄,其餘停用。
  • Inventory < 0 → 啟用 起迄 Warehouse(隸屬倉庫) 區間欄,其餘停用。

所以反白停用的欄位不是壞掉,是該查詢別用不到。

勾「Is Single」會鎖住結束品號

當你勾選 Is Single,系統會停用「結束品號」欄(EndingSKUIsEnabled = false),代表只查單一品號;取消勾選後才會放行結束品號、改成查一段區間。對應查詢條件也會從「品號 = 起始品號」切換成「品號 BETWEEN 起始 AND 結束」。

不同查詢別組出的查詢條件

查詢 時,系統依查詢別組出要丟給 SP 的子查詢(GetCondition):

  • SKU品號 = '起始'(單一)或 品號 BETWEEN '起始' AND '結束'
  • SKU Description:用 品名 LIKE '%關鍵字%' 做內含比對;兩個關鍵字都填時兩者皆須符合(AND)。
  • SalesOrder
    • 訂單號留空時 → 撈 預訂交期 <= ETA 且 數量 > 已交數量 且 未結案 的訂單品號。
    • 有填訂單號 → 撈該訂單(依訂單編號對到 ormast)底下所有明細的品號。
  • Inventory < 0:撈 現有數量 < 0 且其倉的「隸屬倉庫」落在起迄區間內的品號(會 JOIN 倉儲主檔 splace)。

共用篩選的套用順序

撈回資料後,前端再套三道過濾(SetFilter / primeFilterCombine):

  1. 只看某倉(Warehouse):非 ALL/非空時,只保留該倉的列。
  2. 排除 DI 倉:勾選時剔除倉別為 DI 的列。
  3. 缺貨過濾:查詢別為 Inventory < 0 時,只留現有數量為負、且倉庫在指定區間內的列。

點主表品號 → 三張明細聯動

主表(Invstk11)的 OrderKey 就是品號。當你在主表選取某一列(SelectedInvstk11),系統把該品號當 Key,從三本預先建好的字典(dic2/dic3/dic4)取出對應明細,瞬間刷新下方三張表:

  • 倉別庫存彙總(Invstk12)
  • 倉別/批號明細(Invstk13)
  • 進出異動明細(Invstk14)

換選另一個品號就換一組明細,不需要重新查詢

「依批號彙總」改變明細顆粒度

勾選 Group by Lot Num(預設)時,倉別明細會把同一品號/倉別/儲位/途程的資料加總成一列,批號、製通單號等欄位留空;取消勾選後,每一筆批號(含批號、批號別、製通單號)各自一列,顆粒度最細。

在途量(In-Transit)來自暫收單

查詢時系統會把暫收單(待驗收)資料併進結果(InTransit / Tmp3ToInvstk12 / Tmp4ToInvstk13):

  • 倉別庫存彙總會多出倉別標示為 In-Transit 的列,數量為該品號暫收待驗總量。
  • 倉別明細也會多出 In-Transit 列,帶暫收單號與待驗數量。
  • 主表的 在途量 欄即取自此暫收待驗總量。

自動計算欄位

下列欄位是程式即時算出來的,不是資料庫直接存的:

  • 可用量 = 庫存量 − 保留量 − 領用量 − 訂單未交。
  • 小計 = 可用量 + 採購未入 + 在途量。
  • 進出明細的 小計數量:依品號分組,由該品號庫存量起算,逐筆累加(進貨 +、出貨 −)成滾動餘量。
  • 交期不同:訂單分類為 A/B/C 類時,比較「進出日期」與「回覆日期」是否不同並標記;其餘類別固定為否。

倉別說明回填

查詢後系統會用倉儲主檔補上各明細列的 倉儲說明DescriptionHelper.GetWarehouseDescription),所以倉別代號旁會自動帶出倉庫名稱。

本頁沒有列印 / 簽核 / 轉傳票

本表單是純查詢報表,未實作報表列印(HaveReportData 為預設的否)、工作流程簽核、附件或轉單功能。要列印庫存報表請改用其他庫存報表程式。

常見問題

按了查詢卻說要輸入品名?

查詢別選 SKU Description 時,品名 1/2 至少要填一個,兩格都空會被擋下並提示輸入品名。改填關鍵字再查即可。

為什麼有些輸入欄位是灰的、打不了字?

輸入欄位會跟著 Query Type 自動啟用/停用——只有目前查詢別用得到的欄位才會亮。例如選 SKU 時品名、訂單號、隸屬倉庫區間都會反白。先把查詢別切到對的選項即可。

結束品號改不了?

SKU 查詢別預設勾選 Is Single(只查單一品號),此時結束品號被鎖住。取消勾選 Is Single 才能輸入結束品號、查一段區間。

查不到資料 / 少了某些倉?

請確認:Warehouse 是否被預設成 PR 而只看了單一倉(改成 ALL 看全倉);Not Include DI Order 是否勾選而排除了 DI 倉;以及查詢別與輸入條件是否相符(例如選了 SalesOrder 卻沒填訂單號又沒設 ETA)。

可用量或小計是負的,正常嗎?

可用量 = 庫存量 − 保留量 − 領用量 − 訂單未交,當保留/領用/未交大於現有庫存時可用量就會為負,代表帳上已被預訂掉、實際可動用不足,屬於正常的警示訊號。缺貨品號也可用 Inventory < 0 查詢別直接撈出。

點了品號,下面三張明細卻沒變?

下方明細靠點選主表的品號列聯動。請確認已在上方主表選取某一列;若該品號本來就沒有對應的倉別或進出明細,下方表會是空的。

相關功能


需補截圖清單

以下截圖待 runtime 驗收後補拍(放 docs/H-Inventory/images/):

  1. invstk-step1.png — 主畫面全貌(左側條件面板 + 右側主表與三張明細表)
  2. invstk-step2.png —(可選)切換查詢別時欄位啟用/停用的對照,與點選主表品號後下方三表聯動的畫面