程式資訊
- 程式 ID:
INVBK1 - 所屬子系統:H.庫存管理
- 狀態:stable
交易進出查詢¶
功能簡介¶
「交易進出查詢」是一張庫存帳冊,把指定倉庫、品號、日期區間內每一筆庫存異動(進貨、出貨、生產、委外、轉撥、盤點…)依「期初 → 入庫 → 出庫 → 盤差 → 期末」的順序串起來,算出每個品號(可再細分到儲位、工程、批號)在區間內的進出庫數量金額與結餘。倉管、生管、成本與稽核人員用它來:
- 對某個品號做庫存卡式的逐筆查核——這筆結餘怎麼來的?哪一張單造成的?
- 結算某倉某段期間的進出總量與庫存金額(分類進出帳)。
- 抓出轉撥進出數量對不起來的異常(轉出入不符)。
查詢結果分成兩個頁籤:Group(分類進出帳) 是「主檔彙總列 + 逐筆明細」的兩段式庫存卡;Journal(日記帳) 則以品號為單位,把含金額/幣別/單價的交易明細另外列出。
本頁名稱
程式 ID 為 INVBK1,主選單代號 H-060,VFP 原表單抬頭為「庫存帳冊查詢」、分頁名「分類進出帳/日記帳」。新版查詢資料由後端 SP DARB_INVBK1 提供(6 參數、9 個結果集)。
前置需求¶
- 權限:H.庫存管理 →
H-060 交易進出查詢的瀏覽(與列印)權限。 - 基礎資料:查詢結果的完整與正確度,取決於下列資料的維護狀況——
| 資料 | 影響的結果 |
|---|---|
倉庫主檔(SK_STKBAS,含隸屬倉庫、開帳月份) |
可查詢的倉庫範圍、期初數量金額的起算點 |
| 倉儲(Bin)主檔 | 起訖倉儲、Split Bin 拆倉顯示、轉入/轉出倉儲對應的隸屬倉庫 |
| 品號主檔(品名、單位、預設儲位、單重) | 主檔列的品名/單位/儲位/單重/總重量 |
| 各類交易單據(進貨 TRRAMA/出貨 TRSAMA/其他 TRLIMA/生產 TRLOST/委外 TRWKMA) | 明細逐筆進出資料、倉單號超連結的回溯目標 |
製造通知單(製通單,PDTINFMA) |
明細的篩選單號(製通單號)、實際完工日、出貨日期 |
| 客戶報價(最新報價) | Group 主檔列的客戶售價/期末總價 |
個人參數 U_Prgpar("3010") |
起訖倉庫的預設值(使用者預設倉庫) |
操作步驟¶
本表單是查詢報表,沒有新增/修改/刪除,只有查詢、列印與匯出。
- 從主選單開啟 H.庫存管理 → 交易進出查詢。
- 在左側條件面板輸入查詢範圍(詳見欄位說明):
- 起訖 Warehouse(隸屬倉庫):開窗時自動帶入個人參數
3010設定的預設倉庫。 - 起訖 Bin(倉儲)、SKU(品號)、Date(日期)。
- 視需要勾選四個拆分/過濾選項(Split Bin/Split Processing Code/Split Lot Num/Ending Quantity Not Equal Zero)。
- 起訖 Warehouse(隸屬倉庫):開窗時自動帶入個人參數
- 按工具列的
查詢。系統會逐倉呼叫 SP 取資料,下方狀態列會顯示處理進度(倉庫-- get data from server、Calulate--N)。 - 切換右側頁籤檢視結果:
- Group(分類進出帳):上方為品號/倉儲別的彙總主檔列,點選某一列,下方自動帶出該列的逐筆進出明細(含期初列、結餘數量/結餘金額)。
- Journal(日記帳):上方為品號別彙總,下方為含幣別、匯率、單價、金額的交易明細。
- 在明細的 WHTransaction No(倉單號) 欄位點一下超連結,可直接回溯開啟造成這筆異動的來源單據。
- 需要紙本或檔案時:
- 工具列
列印產生報表(彙總/明細兩種版型)。 - 在格線上按右鍵或工具列
匯出 Excel,把 Group 與 Detail 兩段資料一次匯出成多工作表的 Excel(檔名前綴invbk)。
- 工具列
小技巧
清空起始 SKU 或 Bin 時,系統會自動把對應的截止值補成 zzzzz,等於不限制上界;反之只要在起始格填入值,截止值就會被設成與起始相同(單一品號/單一倉儲查詢)。所以只想查單一品號時填起始格即可,想查某品號以上時把起始填好、再手動清掉截止格也行。
欄位說明¶
查詢條件面板¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| Warehouse(隸屬倉庫)起/訖 | ✔ | 倉庫範圍;開窗預設帶入個人參數 U_Prgpar("3010")。改起始倉庫時截止倉庫同步跟著變(方便單倉查詢) |
| Bin(倉儲)起/訖 | — | 倉儲(庫位)範圍;起始預設空字串、截止預設 zzzzz。清空起始會把截止補成 zzzzz |
| SKU(品號)起/訖 | — | 品號範圍;起始預設空、截止預設 zzzzz。清空起始會把截止補成 zzzzz |
| Date(日期)起/訖 | — | 交易日期區間;起始預設今天往前 60 天、截止預設今天(yyyy/MM/dd)。期初=起始日之前的累計結餘 |
| Split Bin(拆倉儲) | — | 預設勾選。勾選時依倉儲(Bin)細分主檔列;取消時同一隸屬倉庫合併、轉入/轉出顯示為倉庫而非細部倉儲 |
| Split Processing Code(拆工程) | — | 預設勾選。勾選時依途程序號+工程代號細分;取消時這兩個鍵以空白合併 |
| Split Lot Num(拆批號) | — | 預設勾選。勾選時依批號別+批號細分;取消時批號歸零、批號別以空白合併 |
| Ending Quantity Not Equal Zero(期末數量不為零) | — | 預設不勾。勾選時只保留期末數量≠0 的主檔列 |
群組查詢與 SKU Bin 為隱藏欄位
條件面板中的 Group Code(群組代號) 與 SKU Bin 兩組欄位在 XAML 中已 Collapsed(隱藏不顯示),目前固定以品號(QueryType=SKU)查詢。後端 BLL 仍保留群組查詢(QueryTypeEnum.GroupCode)的邏輯,但介面尚未提供切換入口。
Group(分類進出帳)頁籤¶
上半部主檔(彙總列)主要欄位:
| 欄位 | 說明 |
|---|---|
| Warehouse/Bin(隸屬倉庫/倉儲代號) | 庫存所在倉庫與倉儲 |
| SKU/SKUDescription(品號/品名) | 品號與品名(品名取自品號主檔) |
| Other Key(其他鍵) | 途程序號、工程代號、批號別、批號的合併鍵 |
| Group Code/Description(群組代號/說明) | 品號所屬群組 |
| Default Bin(儲位) | 品號主檔的預設儲位 |
| Unit Of Measurement(單位) | 計量單位 |
| BeginningQuantity/BeginningCost(期初數量/金額) | 起始日之前累計的結餘 |
| Warehouse In/Out Quantity・Cost(入庫/出庫 數量・金額) | 區間內進出加總(不含盤差) |
| Take Inventory Quantity/Cost(盤差數量/金額) | 單號以 AA 開頭的盤點調整另計一欄 |
| EndingQuantity/EndingCost(期末數量/金額) | =期初+入庫-出庫+盤差(唯讀計算欄) |
| Current Quantity/Cost(現有數量/金額) | 保留欄位;目前查詢流程未填值,一般顯示 0 |
| Unit Weight/Total Weight(單重/總重量) | 總重量=單重 × 期末數量(四捨五入 2 位) |
| Customer Price(客戶售價) | 取最新客戶報價單價 |
| Ending Total Amount(期末總價) | =期末數量 × 客戶售價(本幣小數位) |
下半部明細(逐筆進出)主要欄位:
| 欄位 | 說明 |
|---|---|
| WHTransaction No(倉單號) | 超連結欄,可回溯來源單據(見欄位連動與附加功能) |
| Transaction No(單號) | 交易單號;是否顯示依環境設定(ShowTransactionNo)決定 |
| Transaction Date(交易日期) | 期初列固定顯示為「期初」哨兵 |
| Transaction Department Code/Name(交易部門/簡稱) | 異動部門 |
| Transaction Code(交易別碼) | 交易別碼+交易別說明 |
| Warehouse In/Out Quantity(入庫/出庫數量) | 該筆異動的進出量 |
| Ending Quantity(結餘數量) | 逐筆累計後的結餘(庫存卡核心欄) |
| Shipping Date(出貨日期) | 製通單(MP 開頭)異動帶出的出貨日 |
| Notes(備註)/Original Document No(原始單號)/Prior Transaction No(轉入單號) | 來源追溯欄;領料異領單(PC 開頭)沒有轉入單 pkid,系統改從委外加工單(trwkma)的「轉入備註」中冒號後的申請單號補回 |
| Data Type(資料別) | 異動類別 |
| Warehouse In/Out Cost・Ending Cost(入庫/出庫成本・結餘金額) | 成本面逐筆累計 |
| Inventory Control Description(庫存管制) | 庫存管制說明 |
Journal(日記帳)頁籤¶
上半部主檔以「品號+途程序號+工程代號+批號別+批號」為單位彙總入庫/出庫數量(只列入庫或出庫不為 0 者)。下半部明細多為帶金額的交易資料:
| 欄位 | 說明 |
|---|---|
| WHTransaction No/Transaction No/Transaction Date | 倉單號、單號、交易日期 |
| Currency/Foreign Exchange Rate(幣別/匯率) | 原幣別與匯率 |
| Warehouse/Transaction Department(隸屬倉庫/交易部門) | 倉庫與部門 |
| Destination Bin/Source Bin(轉入倉儲/轉出倉儲) | 轉撥的去向與來源倉儲 |
| Quantity/Unit Of Measurement(數量/單位) | 異動數量與單位 |
| Unit Price/Other Amount/Currency Amount Without Tax(單價/其他金額/未稅金額) | 金額相關欄 |
| Purchase Order No/Purchase Order Line Pkid(採購單號/採購單列) | 來源採購單 |
| Notes(備註) | 備註 |
日記帳明細的價格欄會被歸零
BLL 在 SetDetail2Price() 會把日記帳明細的單價、其他金額、未稅金額、成本、單位成本統一設為 0(VFP 原版即如此,避免外洩成本/售價)。因此 Journal 頁的金額欄位顯示 0 屬正常設計,不是漏算。
欄位連動與附加功能¶
這一節說明「你做了什麼、系統會怎麼反應」。
開窗與條件欄連動¶
- 開窗自動帶預設倉庫:建構時讀個人參數
U_Prgpar("3010"),把起始與截止倉庫都設成這個值,等於預設只查使用者自己的倉。 - 改起始倉庫 → 截止倉庫跟著變:在
BeginningWarehouse的 setter 中會同步把EndingWarehouse設成相同值,方便快速做單倉查詢;要查跨倉再手動改截止。 - 清空起始品號 → 自動補截止為
zzzzz:BeginningSKU為空時EndingSKU補zzzzz,否則EndingSKU設成與起始相同(單一品號查詢)。 - 清空起始倉儲 → 自動補截止為
zzzzz:BeginningBin同上邏輯。 - 截止 SKU Bin 預設「龜鶴遐齡」:這是涵蓋中文倉儲的最大哨兵值;用
zzzzz會漏掉排序在z之後的中文倉儲,故刻意採用此值。 - 日期預設為今天往前 60 天 ~ 今天(注意:VFP 原版預設起算是倉庫「開帳日期」,新版改為近 60 天,查更早的庫存卡時請手動把起始日往前拉)。
按 查詢 時系統做的事¶
按下 查詢 後(Invbk1Bll.Query()),系統依序完成:
- 逐倉撈資料:以起訖倉庫範圍篩出
SK_STKBAS,每個隸屬倉庫各呼叫一次 SPDARB_INVBK1(參數:隸屬倉庫、品號+儲位條件、起訖倉儲、起訖日期),回傳 9 個結果集(成本、期初、暫存交易明細、倉儲、製通單、交易別說明、品號、委外加工單(trwkma,供 PC 異領單補轉入單號)、最新報價)。 - 拆分主檔鍵:依 Split Bin/Split Processing Code/Split Lot Num 的勾選狀態,決定主檔列是否細分到倉儲、工程、批號;未拆者以空白/0 合併。
- 逐筆串庫存卡(
HandleInvbkData):把每筆明細依OrderKey(期初優先、再依倉儲品號日期、入庫先於出庫)排序後累加結餘;單號AA開頭者計入盤差,其餘計入入庫/出庫;同步把製通單號(製通單/MP 異動)、實際完工日、出貨日期回填到明細。 - 刪空列:若勾「期末數量不為零」,移除期末數量=0 的主檔列;否則移除完全沒進出又沒結餘的列。
- 算轉出入不符(
Set轉出入不符):對有製通單號的明細,依倉儲品號批號+製通單分組,若入庫量≠出庫量則整組標記轉出入不符=true。 - 建日記帳(
SetMaster2/SetDetail2)+歸零價格(SetDetail2Price)。 - 帶客戶售價(
SetMasterPrice):用最新報價把主檔列的 Customer Price 補上,連動算出 Ending Total Amount(期末總價)。 - 排序輸出(
SetOrder):主檔與明細最後依OrderKey排序。
主明細連動(點主檔帶明細)¶
- Group 頁:選取上方主檔某一列(
SelectedMaster)會把該列的Key推到Key屬性,下方明細格立即過濾出同一 Key 的逐筆進出(用記憶體字典dic即時切換,不重新查 DB)。沒有對應明細時下方顯示空白。 - Journal 頁:同理,選取
SelectedMaster2切換下方Detail2。
倉單號超連結(回溯來源單據)¶
明細的 WHTransaction No 是 TsNavigateLabel 超連結(HyperLinkType="WHTransacionNo")。點它時,系統先扣掉倉單號前面的隸屬倉庫碼,取接下來 2 碼當單據前置碼,再到交易事項表(LclTritem)查出對應的 ProgramClass,開啟該表單並帶入對應單號。因此實際開啟的單據由交易事項表的前置碼設定決定,常見對應如下:
| 來源交易別(前置碼) | 開啟單據 |
|---|---|
| A.進貨 | 進貨單 TRRAMA |
| B.生產 | 生產/報廢 TRLOST |
| C.其他 | 其他庫存異動 TRLIMA |
| D.出貨 | 出貨單 TRSAMA |
| E.委外 | 委外加工 TRWKMA |
查無對應前置碼時不動作
若倉單號的前置碼在交易事項表查不到對應的 ProgramClass,超連結不會開啟任何表單。部分早期資料的「單號」其實存的是倉單號,也可能因此回溯不到對應單據。
列印¶
工具列 列印 提供兩種版型(對應 VFP 的「彙總/明細」報表選擇):
- 彙總(Group):以主檔彙總列出每個品號的期初/進出/期末。
- 明細(Detail):把主檔加上逐筆明細展開列印。
HaveReportData() 會在主檔沒有任何資料時回傳 false、擋下列印。
列印程式碼現況
新版 ViewModel 中 Crystal 報表的 GetCrystalPrintSettings/GetGroupData/GetDetailData 目前以註解保留(尚在接 FastReport 版型),列印鈕的最終輸出版型以實機為準。
匯出 Excel¶
ViewModel 實作 IExcel.GenerateExcel():把 Group(主檔) 與 Detail(全部明細) 兩段資料組成多工作表字典,呼叫 CopyToExcelBll.CopyToExcelMultiple,輸出檔名前綴 invbk 的 Excel。也可直接在格線右鍵走通用匯出。
VFP 有、新版尚未提供的功能¶
規劃中/尚未提供
下列 VFP 原版功能在新版 C# 介面目前未提供,請勿當成可用:
- 索引別切換(倉儲+品號+工程/倉儲+品號+批號/品號+工程+倉儲/品號+批號+倉儲/儲位+品號 五種排序)——新版固定以
OrderKey排序。 - 「只顯示入出庫數不符」過濾鈕——
轉出入不符旗標雖已在後端計算,但其欄位在 XAML 中已註解、也沒有對應的篩選 checkbox。 - 群組(Group Code)查詢切換與 SKU Bin 條件——欄位已隱藏(
Collapsed)。
常見問題¶
查詢結果是空的,怎麼回事?
先確認三件事:一、起訖倉庫有填且範圍正確(開窗預設只帶個人參數 3010 的單一倉,跨倉要自己改截止);二、日期區間涵蓋到實際有異動的時間(預設只查近 60 天,查更早要把起始日往前拉到開帳日附近);三、該倉該品號在區間內確實有庫存或異動。若整段沒進出又沒期初結餘,主檔列會被自動刪除。
Journal(日記帳)頁的單價、金額都是 0?
這是設計如此。系統在 SetDetail2Price() 會把日記帳明細的單價、其他金額、未稅金額、成本、單位成本一律歸零(沿用 VFP 行為,避免成本/售價外洩)。要看金額面請改用 Group 頁的金額欄。
Group 頁的「客戶售價/期末總價」是空白或 0?
客戶售價取自最新客戶報價。若該品號沒有報價資料,主檔列的 Customer Price 就會是 0,連帶期末總價(=期末數量 × 客戶售價)也是 0。請先在客戶報價維護該品號售價。
點倉單號超連結沒有反應、開不了單據?
系統是依倉單號的前置碼到交易事項表查對應表單。若該前置碼沒有在交易事項表登錄對應的 ProgramClass,超連結就不會開啟任何單據。另外早期資料常把「單號」存成倉單號,前置碼對不上現行單據時也會回溯不到。新資料一般可正常連結。
勾了「Split Bin/拆工程/拆批號」結果列數差很多?
這三個選項控制主檔列的細分顆粒度。全勾=最細(每個倉儲/工程/批號各一列);取消對應勾選會把該維度以空白合併、列數變少、數量金額被加總在一起。預設三項都勾。
盤差數量是什麼?為什麼有些進出沒算進入庫/出庫?
單號以 AA 開頭的異動是盤點調整,系統會把它另計到「盤差數量/盤差金額」欄,不混入一般的入庫/出庫加總;但期末數量=期初+入庫-出庫+盤差,仍會把盤差納入結餘。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/H-Inventory/images/):
invbk1-step2.png— 左側查詢條件面板(含起訖倉庫/品號/日期與四個拆分勾選)invbk1-step4.png— Group(分類進出帳)頁籤:上方主檔彙總列 + 下方逐筆明細庫存卡invbk1-step5.png— 明細倉單號超連結點選回溯來源單據的畫面invbk1-journal.png— Journal(日記帳)頁籤的品號彙總與交易明細