程式資訊
- 程式 ID:
SPLACE - 所屬子系統:H.庫存管理
- 狀態:stable
倉庫倉儲資料維護¶
功能簡介¶
「倉庫倉儲資料維護」用來建立與維護倉庫(隸屬倉庫)及其底下的倉儲(Bin,儲位)主檔,是庫存模組的基礎主檔之一。倉管/資材人員在這裡設定每一個倉庫的基本屬性(成本計算順序、是否管制負庫存、倉同儲與否等),並在右側維護該倉庫下的多個倉儲(儲位)明細。
一筆完整的資料分成兩層:
- 倉庫(master):以隸屬倉庫為主鍵,記錄倉庫說明、成本順序、管制負數、倉同儲、開帳月份/關帳日期等。
- 倉儲(detail):同一倉庫下可建立多個倉儲(Bin),每個倉儲有自己的倉儲代號、說明與備註,是 入庫、領料、庫存查詢 等單據選取儲位的來源。
此外本頁還提供兩個查詢/作業入口:右側可即時帶出該倉庫的現有數量/現有金額(依品號、途程、批號彙總),工具列的延伸功能可開啟倉庫關帳視窗,對選定倉庫執行月結關帳。
前置需求¶
- 權限:H.庫存 →
H-090 倉庫倉儲資料維護的瀏覽與修改權限。 - 基礎資料:
| 資料 | 影響的結果 |
|---|---|
| 倉庫主檔(隸屬倉庫不可重複) | 新增時隸屬倉庫做唯一性檢核,重複會擋存 |
| 庫存交易(入庫/領料/調撥…) | 右側 Quantity Query(現有數查詢)才會有現有數量/金額 |
| 成本計算相關設定(K 成本模組) | 倉庫關帳前的稽核條件(K-020 系列)會檢查成本是否可結算 |
倉同儲的意義
倉同儲=Y 表示「倉庫即儲位」——此倉庫不再細分多個 Bin,系統會自動建立一個與隸屬倉庫同代號的倉儲。詳見欄位連動與附加功能。
操作步驟¶
新增倉庫與倉儲¶
- 從主選單開啟 H.庫存 → 倉庫倉儲資料維護。
- 點選工具列
新增。系統會帶入下列預設值(見欄位說明):可用=1、管制負數=Y、倉庫分類碼=0、倉同儲=N。 - 在上方輸入隸屬倉庫(主鍵,必填)、倉庫說明等欄位。
- 設定倉同儲:
- 選
Y(倉同儲):系統自動在右側倉儲明細建立一筆與隸屬倉庫同代號的倉儲(見欄位連動),不需再手動建 Bin。 - 選
N:請在右側倉儲(Bin)格線逐筆輸入該倉庫下的儲位,至少要有一筆倉儲代號才能存檔。
- 選
-
點選
儲存。小技巧
可用 Ctrl+S 快速儲存。
修改與刪除¶
- 用工具列的瀏覽/
Seek找到要維護的倉庫,按修改。 -
調整欄位或在右側增刪倉儲明細。
刪除倉儲的規則
倉儲明細列若把倉儲代號清空,存檔時該列會被標記刪除;倉庫本身的刪除受系統一致性限制,已有庫存或交易的倉庫無法直接刪除。
-
按
儲存寫回。
現有數查詢(Quantity Query)¶
- 先在上方選定(或定位到)某個倉庫。
- 按右側的
Quantity Query(現有數)按鈕。 - 系統依該倉庫查出右下角格線:倉儲代號、品號、途程序號、工程代號、批號別、批號、現有數量、現有金額、設立說明。
- 此查詢為唯讀,僅供現場核對,不影響存檔。
倉庫關帳(延伸功能)¶
倉庫關帳由工具列的延伸功能按鈕開啟獨立的 Warehouse Closing Book(倉庫關帳) 視窗:
- 在主畫面按工具列的延伸功能鈕開啟關帳視窗(需具「分批盤存(關帳)」授權)。
- 輸入關帳日期(Closing Date),按
查詢。系統先跑成本稽核(K-020 系列檢查項目),把結果列在左側Check Item清單。 - 右側
Master列出可關帳的倉庫,逐列勾選Select(或用全選/全不選)。 - 若有其他使用者正在編輯,會列在
Locked Source頁籤並顯示鎖定筆數。 -
確認後執行關帳(轉檔)。關帳完成後回到主畫面,倉庫的開帳月份與關帳日期會被更新。
稽核未過無法關帳
成本稽核(K-020-003/004/005)若未通過,系統會顯示資料不正確並中止查詢,無法進行關帳。請先到 成本管理 確認該月成本可結算。
欄位說明¶
倉庫(上方主檔)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 隸屬倉庫 | 是 | 倉庫主鍵,最長 10 碼。新增時做唯一性檢核,不可重複、不可空白 |
| 倉庫說明 | — | 倉庫名稱,最長 40 字 |
| 倉同儲 | 是 | Y/N;預設 N。Y=倉庫即儲位,存檔前不可空白 |
| 倉庫分類碼 | — | 數字,預設 0 |
| 成本順序 | — | 成本計算順序,最長 2 碼 |
| 顯示順序 | — | 倉庫在清單的排序,最長 2 碼 |
| 可用 | — | 1=可用、0=停用;新增預設 1 |
| 管制負數 | 是 | Y/N;新增預設 Y。Y=不允許庫存變負數 |
| 送貨地點 | — | 最長 80 字 |
| 備註 | — | 最長 80 字 |
| 開帳月份 | — | 系統產生,唯讀,格式 yyyy/MM |
| 關帳日期 | — | 系統產生,唯讀,由倉庫關帳更新 |
倉儲明細(左下格線)¶
| 欄位 | 必填 | 說明 |
|---|---|---|
| 倉儲代號 | 是* | 該倉庫下的 Bin 代號,最長 10 碼。*倉同儲=N 時至少要有一筆;清空表示刪除該列 |
| 倉儲說明 | — | Bin 名稱,最長 40 字 |
| 備註 | — | 最長 80 字 |
現有數明細(右下格線,唯讀)¶
| 欄位 | 說明 |
|---|---|
| 倉儲代號/品號 | 庫存所在的 Bin 與品號 |
| 途程序號/工程代號 | 製程途程相關欄位 |
| 批號別/批號 | 批號管制欄位 |
| 現有數量/現有金額 | 該品號在此倉儲的結存量與金額 |
| 設立說明 | 來源說明 |
欄位連動與附加功能¶
這一節把「輸入某欄位/按某按鈕後,系統會做什麼」逐條列出,全部依實際程式碼整理。
新增時的預設值¶
當你按 新增,系統會自動帶入:
- 可用=1
- 管制負數=
Y - 倉庫分類碼=0
- 倉同儲=
N
(對應 SplaceViewModel.AfterAddNew/VFP 新增預設。)
倉同儲=Y → 自動建立同代號倉儲¶
當你把倉同儲設成 Y(欄位失焦時):
- 若右側倉儲明細還沒有與此倉庫同代號的倉儲,系統會:
- 明細是空的:新增一筆倉儲,倉儲代號=隸屬倉庫、倉儲說明=倉庫說明、備註=倉庫的備註。
- 明細已有一筆:把該筆的倉儲代號改成隸屬倉庫;若倉儲說明原本空白,補上倉庫說明;並依該列是否已有 pkid,標記為修改(E)或新增(A)。
這對應 VFP 倉同儲.LostFocus 的行為:倉同儲為 Y 的倉庫不需要人工建 Bin,系統替你補一筆。
只在編輯狀態才會觸發
此連動只在新增/修改狀態下生效;瀏覽(唯讀)狀態調整倉同儲不會動到明細。
Quantity Query(現有數查詢)按鈕¶
按右側 Quantity Query 時(對應 QuantityQueryCommand → SplaceBll.GetQuantity):
- 以目前倉庫的隸屬倉庫為條件,呼叫 SP
DARB_TUR_SPLACE(查詢別=2)取回該倉庫所有品號/途程/批號的現有數量與金額。 - 結果塞進右下角的虛擬化格線顯示,純查詢、不寫回任何資料。
- 切換/移動到別筆倉庫時(
AfterMoverRecord),現有數結果會清空,避免顯示到上一個倉庫的資料。
舊資料表已不適用
早期版本走 TWORK_QRY_SPLACE,中文 schema 遷移後該物件已不存在;現行版本一律走 DARB_TUR_SPLACE。若查不到資料,多半是該倉庫本來就沒有庫存,而非 SP 問題。
倉庫關帳(延伸功能)按鈕¶
工具列的延伸功能(ExtendedFunction1)會開啟 Warehouse Closing Book(倉庫關帳) 視窗(WindowName.Stkbas_1):
- 視窗關閉後(
OpenWindow回傳成功),主畫面會自動Renew重新整理,讓開帳月份/關帳日期反映最新關帳結果。 - 關帳視窗本身先跑成本稽核(
Stkbas_1ViewModel僅取 K-020-003/004/005 三項檢查),未過的列會以紅底標示並擋下關帳。 - 提供
全選/全不選(BtnSelectAll/BtnUnselectAll)快速勾選欲關帳的倉庫,並在Locked Source頁籤顯示被他人編輯鎖定中的倉庫與鎖定筆數。
此功能對應 VFP else1click(先檢查「分批盤存(關帳)」授權,再開 STKBAS_1 表單並重整);新版的授權檢查由開窗框架處理,ExtendedFunction1 只負責開窗與重整。
存檔前檢核與整理(SplaceSave)¶
按 儲存 時系統會做下列驗證(對應 SplaceSave.AllowSave,涵蓋 VFP allowsave 全部條件):
- 隸屬倉庫不可空白。
- 倉同儲不可空白(必須是
Y或N)。 - 當倉同儲=
N:倉儲明細至少要有一筆未被刪除的倉儲代號,否則擋存並提示輸入倉儲代號。 - 當倉同儲=
Y:倉儲明細中至少要有一筆倉儲代號=隸屬倉庫(即同代號倉儲),否則一樣擋存。
驗證通過後,存檔前還會自動整理明細(對應 SplaceSave.HandleDataBeforeEndEdit):
- 倉儲明細逐列回填隸屬倉庫,確保 Bin 掛在正確倉庫下;倉儲代號為空的列會被標記為刪除(與 Source 的
NeedDeleteFunction一致)。 -
當倉同儲≠
Y時,系統會自動補上兩筆虛擬倉儲(若尚不存在):- 收貨虛擬倉:代號=
<收貨虛擬倉參數>-<隸屬倉庫>、備註=Virtual。 - 出貨虛擬倉:代號=
<出貨虛擬倉參數>-<隸屬倉庫>、備註=Virtual。
兩個虛擬倉的前綴取自系統參數(
_prgpar的 3023/3026),供入庫/出貨流程暫存使用,新增倉庫時會自動產生、不需人工建立。 - 收貨虛擬倉:代號=
常見問題¶
存檔時提示「請至少輸入一個倉儲代號」?
當倉同儲=N 時,倉庫底下必須至少有一個倉儲(Bin)。請在右側倉儲格線輸入一筆倉儲代號,或把倉同儲改成 Y 讓系統自動建立同代號倉儲。
把倉同儲改成 Y,右邊倉儲沒有自動帶出來?
自動帶倉儲只在新增/修改狀態且失焦時觸發;若停在瀏覽(唯讀)狀態不會動作。請先按 修改,再重新選一次倉同儲=Y。另外若該倉庫已存在同代號的倉儲,系統判斷已有就不會重複建立。
按 Quantity Query 查不到任何現有數?
現有數來自 SP DARB_TUR_SPLACE(查詢別 2),只會列出該倉庫實際有庫存的品號。若倉庫剛建立、尚無任何入庫/交易,查詢自然為空。請先確認該倉庫有 入庫 或其他庫存異動。
倉庫關帳查詢按下去就跳「資料不正確」?
這是成本稽核(K-020-003/004/005)未通過所致——表示該關帳月份的成本還不能結算。請先到 成本管理 完成成本計算與檢查,稽核全部通過後再回來關帳。
為什麼某些倉庫不能刪除?
已有庫存或交易歷史的倉庫不可刪除,以免破壞庫存與成本資料的一致性。若只是要停用,請把可用改成 0。
存檔後倉儲明細多了兩筆備註為 Virtual 的列?
當倉同儲≠Y 時,系統會在存檔時自動補上兩筆虛擬倉儲(收貨/出貨),代號為 <虛擬倉參數>-<隸屬倉庫>、備註標為 Virtual,供入庫與出貨流程暫存使用。這是正常設計,請勿手動刪除。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/H-Inventory/images/):
splace-step1.png— 倉庫主檔上半部欄位與工具列splace-step2.png— 左下倉儲(Bin)明細格線splace-step3.png— 按 Quantity Query 後的現有數結果格線splace-step4.png— 倉庫關帳(Warehouse Closing Book)視窗