程式資訊
- 程式 ID:
INVPIVOT - 所屬子系統:M.主管資訊
- 狀態:stable
庫存樞紐分析¶
功能簡介¶
「庫存樞紐分析」把全公司的品號別/倉庫別庫存結存整理成一張可查可印、又能即時拖拉成 Excel 樞紐表的清單,供主管/生管/成本人員快速掌握「目前手上有多少貨、值多少錢、平均單位成本是多少」。
它提供兩種查詢口徑:
- Onhand(現有結存):直接抓系統目前的即時庫存結存。
- Monthly Cost(月結成本):抓某一個年月(月結)當下的庫存數量與成本。
查出的明細列在格線上,最右側的 樞紐分析按鈕可以把這份結果套到預設的樞紐範本,一鍵開成 Excel 樞紐表,自行依倉庫、舊群組碼等維度拖拉彙總。
前置需求¶
- 權限:M.主管資訊 →
庫存樞紐分析的瀏覽權限;要列印報表需有列印權限。 - 檢視單價權限:期末成本(Ending Cost)/單位成本(Unit Cost)等金額是否帶值,取決於使用者是否具備本程式的「檢視單價」權限。系統以
GetViewPricePermission("INVPIVOT")判斷,有權限時才把price = "Y"傳給後端 SP 計算成本;沒有此權限時金額欄位一律為空白/0。 - 基礎資料:查詢結果的完整度取決於下列資料的維護狀況——
| 資料 | 影響的結果 |
|---|---|
| 品號主檔(SKU、品名規格、舊群組碼) | SKU/SKUDescription/Old Group No 的顯示 |
| 倉庫主檔 | Warehouse(倉庫別)的分組 |
| 庫存異動與月結資料 | Ending Quantity(期末數量) 的正確性 |
| 庫存成本資料 | Ending Cost(期末成本)、進而影響 Unit Cost(單位成本) |
| 樞紐範本檔(_Common 設定的 Pivot 範本) | 右下角樞紐分析按鈕可選用的範本清單 |
後端由 SP 計算
結果由後端預存程序 PRIME_QRY_INVPIVOT 產生,C# 端只負責把資料寫入暫存 SQLite 後呈現。若格線完全沒有資料,多半是該 SP 在此資料庫尚未部署或無對應庫存資料。
操作步驟¶
本表單是純查詢報表,沒有新增/修改/刪除,主要操作是「選口徑 → 查詢 → (可選)轉樞紐/列印」。
- 選擇查詢口徑(兩個單選鈕擇一):
Onhand:以系統目前的即時庫存結存為準。Monthly Cost:以某個年月的月結庫存為準,需搭配下方的 Year Month。
- 若選
Monthly Cost,在 Year Month 欄輸入要查的年月(格式yyyy/MM,預設帶入本月)。 - 按工具列的
查詢,結果顯示在中央格線:每一列是一個 SKU × 倉庫 的庫存結存。 - (可選)若需要進一步彙總,到格線右下角的樞紐分析區,從下拉選單挑一個樞紐範本,按
樞紐分析按鈕,系統會把目前結果套範本開成 Excel 樞紐表。 - (可選)按工具列
列印產生報表。
小技巧
改了查詢口徑或年月後,直接再按一次 查詢 即可重新撈一份結果;格線本身也支援匯出 Excel(格線右鍵)。
欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明 |
|---|---|---|
| Onhand | ✔(與 Monthly Cost 擇一) | 以即時庫存結存查詢;後端參數送 1 |
| Monthly Cost | ✔(與 Onhand 擇一) | 以指定年月的月結庫存查詢;後端參數送 2 |
| Year Month | △ | 月結口徑要查的年月,格式 yyyy/MM,預設為本月(DateTime.Now);遮罩為 YearAndMonth(只輸入年月) |
Year Month 一律會送出
不論選 Onhand 或 Monthly Cost,Year Month 的值都會一併送給後端 SP;在 Onhand 口徑下後端是否採用該年月由 SP 決定。實務上選 Onhand 時直接查即可,選 Monthly Cost 時才需特別確認年月正確。
結果格線欄位¶
| 欄位 | 說明/格式 |
|---|---|
| SKU | 品號 |
| SKUDescription | 品名規格 |
| Old Group No | 舊群組碼,常用來做樞紐分組維度 |
| Warehouse | 倉庫別 |
| Ending Quantity | 期末數量;數量格式(PurchaseQuantity 小數位) |
| Ending Cost | 期末成本(總額);四位小數(FourPlace),需檢視單價權限才會帶值 |
| Unit Cost | 單位成本,唯讀、由前端即時計算(見欄位連動與附加功能);單價格式(UnitCost 小數位) |
欄位連動與附加功能¶
這一節把「選某個選項/按某個按鈕後系統會做什麼」逐條列出,全部來自實際程式碼。
查詢口徑切換(Onhand / Monthly Cost)¶
- 當你點選
Onhand,系統把後端參數lp_p1設為1,查即時結存。 - 當你點選
Monthly Cost,系統把lp_p1設為2,並以 Year Month 指定的年月查月結結存。 - 兩個選項是互斥單選鈕(透過
RadioConverter綁定同一個QueryType),同時只會有一個生效,預設為 Onhand。
按 查詢 時系統做的事¶
當你按下 查詢,系統會:
- 依目前口徑組出參數:
lp_p1(1/2)、YearAndMonth(年月)、price(有檢視單價權限時為Y,否則空字串)。 - 呼叫後端預存程序
PRIME_QRY_INVPIVOT,把回傳的每一列寫入暫存 SQLite 資料表invpivot。 - 以虛擬化格線(
TsVirtualGrid,啟用列虛擬化)載入該暫存表,因此即使資料量大也不會一次塞滿記憶體。
金額由權限決定
price 參數來自 GetViewPricePermission("INVPIVOT")。沒有檢視單價權限時 price 為空字串,後端不會回傳成本,Ending Cost/Unit Cost 因此為 0/空白;這是設計上的權限控管,不是資料遺失。
Unit Cost(單位成本)即時計算¶
-
Unit Cost 欄位不是後端算好的,而是前端依公式即時換算:
單位成本 = 期末成本 ÷ 期末數量(四捨五入到小數 4 位) -
當期末數量為 0 時,單位成本直接顯示 0(避免除以零)。
- 此欄為唯讀,會隨 Ending Quantity/Ending Cost 一起呈現,不能手動編輯。
樞紐分析(PivotSelector1,右下角)¶
格線右下角是共用的 PivotSelector1 樞紐選擇器,行為如下:
- 查詢後(格線有資料時),下拉選單會列出本程式可用的樞紐範本清單。範本來源是系統設定中
ProgramClass = INVPIVOT、Category = D的 Pivot 設定(GetLCLPivots());若沒有任何範本,整個樞紐區會自動隱藏。 - 從下拉選單選一個範本,按
樞紐分析按鈕後,系統會:- 先把目前查詢結果整理進樞紐用的 SQLite(資料表
invpivot00)。 - 取範本目錄下對應的
.xls/.xlsx樞紐範本檔,複製一份並開啟,把資料灌進去成為可拖拉的 Excel 樞紐表。
- 先把目前查詢結果整理進樞紐用的 SQLite(資料表
- 若按按鈕時沒有任何查詢結果,系統會跳出「無資料」提示而不會開檔。
樞紐維度怎麼拖
開出的 Excel 樞紐表可自由把 Warehouse(倉庫別)/Old Group No(舊群組碼) 拖到列/欄區,把 Ending Quantity/Ending Cost 拖到值區彙總,快速看出各倉、各群組的數量與金額分布。
列印¶
- 本程式繼承標準查詢報表框架(
ERPProgramWithQueryViewModel),工具列具備標準的列印能力;查得到資料才會有可列印內容(HaveData以格線筆數判斷)。
常見問題¶
Ending Cost / Unit Cost 一直是空白或 0?
金額欄位需要檢視單價權限。系統以 GetViewPricePermission("INVPIVOT") 判斷,沒有此權限時不會把成本參數送給後端,Ending Cost/Unit Cost 自然為 0/空白。請向系統管理員確認本程式的檢視單價權限。另外,若 Ending Quantity 為 0,Unit Cost 也會被刻意設為 0(避免除以零)。
選了 Monthly Cost 卻查不到資料?
Monthly Cost 是以 Year Month 指定的年月月結庫存為準。請確認:(1) 該年月已完成月結、有對應庫存結存資料;(2) Year Month 格式為 yyyy/MM 且填的是有資料的月份(預設帶本月,月結可能尚未結轉)。
格線完全沒有資料?
結果由後端預存程序 PRIME_QRY_INVPIVOT 產生。若完全查不到,先確認此資料庫已部署該 SP、且系統內確有庫存結存資料;再確認查詢口徑與年月設定無誤。
右下角的樞紐分析按鈕是灰的、或整個不見了?
樞紐區只有在查到資料且有設定樞紐範本時才會出現並啟用。若整個區塊隱藏,表示本程式(ProgramClass = INVPIVOT、Category = D)尚未設定任何 Pivot 範本;若按鈕可見但按了沒反應並跳「無資料」,表示目前格線沒有查詢結果,請先按 查詢。
Year Month 在 Onhand 口徑下要填嗎?
Onhand 是查即時結存,實務上直接按 查詢 即可。雖然 Year Month 的值一律會送給後端,但 Onhand 口徑由 SP 決定是否採用該年月,通常不影響即時結存結果。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/M-EIS/images/):
invpivot-step1.png— 條件面板(Onhand/Monthly Cost 單選鈕與 Year Month)invpivot-step2.png— 查詢結果格線(含 SKU/倉庫/期末數量/成本/單位成本欄位)invpivot-step3.png— 右下角樞紐分析選擇器與開出的 Excel 樞紐表