程式資訊
- 程式 ID:
INVSTK - 所屬子系統: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」群組選一種查詢別,選定後右側對應的輸入欄位才會啟用(其餘自動反白停用):
SKU(預設):依品號查。可勾選 Is Single(預設勾選)只查單一品號;取消勾選後才會啟用結束品號,改查一段品號區間。SKU Description:依品名模糊查(內含比對)。可同時輸入兩個關鍵字,兩者都要符合。SalesOrder:依銷售訂單查。可輸入訂單號,或留空訂單號改用 <= ETA(預訂交期) 撈出所有未交、未結案的訂單品號。Inventory < 0:撈出現有數量為負(缺貨)的品號,並可指定「隸屬倉庫」區間。Shipping Notice(出貨通知):此查詢別在目前版本隱藏未啟用,畫面上看不到。
步驟② 設定共用條件¶
不論哪一種查詢別,下列條件都會作用:
- Warehouse(只看某倉):填倉別代號只顯示該倉的庫存,預設
PR;填ALL或留空表示全倉。 - Group by Lot Num(依批號彙總):預設勾選。勾選時倉別明細表會把同一倉同途程的批號加總成一列;取消勾選則逐批號(含批號、製通單號)展開。
- Not Include DI Order(排除 DI 倉):預設勾選,過濾掉倉別為
DI的資料。
步驟③ 執行查詢並查看聯動明細¶
- 按工具列
查詢。主表(上方)列出符合條件的品號彙總。 - 在主表點選任一品號列,下方三張表自動帶出該品號的明細(透過品號當 Key 聯動):
- 左下:倉別庫存彙總(含在途 In-Transit 列)。
- 右下:倉別/批號/途程現有數量明細。
- 最下:進出異動明細(採購進貨、訂單出貨等,含逐筆小計餘量)。
小技巧
四張表都是 RadGridView,可在格線標頭排序、用欄位選單調整顯示欄位,並可由格線右鍵匯出 Excel。改了條件後再按一次 查詢 即重撈。
欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明 / 預設 |
|---|---|---|
| Query Type(查詢別) | ✔ | SKU / SKU Description / SalesOrder / Inventory < 0;預設 SKU(Shipping Notice 隱藏未啟用) |
| Is Single(單一品號) | — | 僅 SKU 別有效;勾選只查單一品號,取消才啟用結束品號。預設勾選 |
| SKU(起/迄品號) | △ | 查詢別=SKU 時填;起始預設空、結束預設 zzzzz |
| SKU Description(品名 1/2) | △ | 查詢別=SKU Description 時至少填一個,否則擋查詢;兩格皆填時兩關鍵字都要符合 |
| Sales Order No(訂單號)/ <= ETA | — | 查詢別=SalesOrder 時填;留空訂單號則改抓「預訂交期 ≤ ETA 且未交、未結案」的品號。ETA 預設今天 +60 天 |
| Warehouse(只看某倉) | — | 只顯示該倉,預設 PR;ALL/空=全倉 |
| 起/迄 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):
- 只看某倉(Warehouse):非
ALL/非空時,只保留該倉的列。 - 排除 DI 倉:勾選時剔除倉別為
DI的列。 - 缺貨過濾:查詢別為
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/):
invstk-step1.png— 主畫面全貌(左側條件面板 + 右側主表與三張明細表)invstk-step2.png—(可選)切換查詢別時欄位啟用/停用的對照,與點選主表品號後下方三表聯動的畫面