跳轉到

程式資訊

  • 程式 IDGSPLACE
  • 所屬子系統:C.總務管理
  • 狀態:stable

倉庫資料維護(Warehouse / Bin)

功能簡介

「倉庫資料維護」用來建立與維護倉庫主檔,以及每座倉庫底下的倉儲(Bin,又稱倉位/儲位)明細。它是庫存體系的最底層主檔——後續所有採購暫收(暫收單)、入出庫申請(入出庫申請單)、領退料、生產領料與盤點,都必須指到一個既存的「倉庫+倉儲」位置,因此倉管或總務人員在啟用庫存流程前,要先在這裡把倉庫與倉儲建好。

本表單包含三個區塊:

  1. 倉庫主檔(上方):一座倉庫一筆,主鍵為隸屬倉庫代號。
  2. 倉儲(Bin)明細(左下表格):該倉庫底下的儲位清單。
  3. 現有數量查詢(右下表格):唯讀,按 Quantity Query 後列出該倉庫各儲位目前的庫存批號與數量。

倉庫 vs 倉儲

「倉庫」是上層位置(例如「成品倉」),「倉儲(Bin)」是倉庫內再細分的儲位(例如「A 區第 1 排」)。若倉庫不需要再細分,可開啟倉同儲讓系統自動建立一筆與倉庫同代號的倉儲(見欄位連動與附加功能)。

前置需求

  • 權限:C.總務 → C-110 倉庫資料維護 的新增/修改/刪除/瀏覽權限。
  • 基礎資料/參數:本表單是基礎主檔,依賴項目不多,但下列資料會影響欄位的查詢、存檔與後續流程——
資料 影響什麼
倉庫分類設定 倉庫分類碼所對應的分類意義(用於成本歸屬與報表分群)
系統參數 _prgpar 3023/3026 存檔時自動建立的虛擬倉(進料/出貨)代號來源(見欄位連動與附加功能
成本/盤點作業設定 開帳月份關帳日期由關帳流程寫入,非手動維護
既有庫存交易 Quantity Query 的現有數量來源(無交易則查不到數量)

操作步驟

倉庫主檔屬於標準「主檔+明細」維護表單,沿用系統共用工具列的新增修改刪除存檔查詢/前後筆移動按鈕。

新增倉庫

  1. 按工具列新增,系統自動帶入預設值:可用倉庫分類碼0
  2. 隸屬倉庫輸入倉庫代號(主鍵,最長 10 碼,不可重複)。
  3. 填寫倉庫說明
  4. 設定倉同儲(必填,),並視需要調整可用倉庫分類碼成本順序顯示順序送貨地點備註
  5. 在左下倉儲(Bin)明細表格按 Enter 或新增列,逐筆輸入倉儲代號倉儲說明備註
  6. 按工具列存檔。存檔時系統會檢核必填欄位,並視倉同儲設定自動補上虛擬倉或同代號倉儲(見欄位連動與附加功能)。

用倉同儲省去建倉儲

若這座倉庫不需要再細分儲位,把倉同儲設為,系統會自動在明細補一筆與倉庫同代號的倉儲,不必手動敲。詳見欄位連動與附加功能

修改 / 刪除

  1. 用工具列的查詢或前後筆移動找到要維護的倉庫。
  2. 修改後調整欄位或增刪倉儲明細,再存檔
  3. 要刪除整筆倉庫時按刪除

刪除倉儲明細的限制

倉儲明細列在倉儲代號為空白時才會被視為「待刪除/空列」,存檔時自動標記刪除(程式 NeedDeleteFunctionHandleDataBeforeEndEdit)。已有庫存或已被單據引用的倉庫/倉儲,建議改用可用停用,而非直接刪除,以免影響歷史單據。

查詢現有數量

  1. 把游標停在要查的倉庫主檔上(須先有一筆有效倉庫)。
  2. 按主檔區右側的 Quantity Query 按鈕。
  3. 右下表格列出該倉庫各儲位目前的倉儲代號/品號/途程序號/工程代號/批號別/批號/現有數量/現有金額/設立說明

現有數量查詢為唯讀

這區只是把該倉庫的即時庫存攤開檢視,無法在此編輯或調整數量;數量調整請走盤點或入出庫流程。Quantity Query 在表單處於唯讀(瀏覽)狀態時才可用;切換到其他倉庫(移動記錄)時,查詢結果會自動清空,需重新按一次 Quantity Query

倉庫關帳(其他功能)

工具列的其他功能1會開啟倉庫關帳(Warehouse Closing Book)視窗,供批次執行月關帳。關帳完成後會回寫倉庫主檔的關帳日期並重新整理本表單資料。詳見欄位連動與附加功能

欄位說明

倉庫主檔

欄位 必填 說明/格式/預設
隸屬倉庫 主鍵,倉庫代號,最長 10 碼,不可重複
倉庫說明 倉庫名稱/描述,最長 40 字
可用 下拉;新增時預設(值 1)。停用後仍保留歷史單據關聯
倉同儲 下拉;必填。設為時自動建立同代號倉儲、設為時存檔自動補虛擬倉(見下節)
倉庫分類碼 數值(byte),新增時預設 0;用於分類分群
成本順序 最長 2 碼(補零顯示);成本計算排序
顯示順序 最長 2 碼(補零顯示);清單顯示排序
送貨地點 倉庫對應的送貨地址,最長 80 字
備註 最長 80 字
開帳月份 系統 唯讀,由關帳/開帳流程寫入(格式 YYYY/MM)
關帳日期 系統 唯讀,由倉庫關帳流程寫入

可用欄位的顯示注意

可用在資料庫是 0/1(byte),畫面用是/否下拉呈現。若舊資料的值不是 0 或 1,下拉可能顯示空白——這是已知的型別對應限制,新增資料一律會正確帶入。

倉儲(Bin)明細

欄位 必填 說明
倉儲代號 儲位代號,最長 10 碼;空白列會被當成空列略過不存(存檔時標記刪除)
倉儲說明 儲位名稱,最長 40 字
備註 最長 40 字;系統自動建立的虛擬倉此欄會填 Virtual

隸屬倉庫由系統回填

倉儲明細的隸屬倉庫不需手動填——存檔前系統(HandleDataBeforeEndEdit)會把目前主檔的隸屬倉庫代號統一寫到每一筆明細上。

現有數量查詢(唯讀)

欄位 說明
倉儲代號 庫存所在儲位
品號 庫存品號
途程序號/工程代號 製程在製品的途程與工程定位
批號別/批號 庫存批號分類與批號
現有數量/現有金額 該批目前在庫的數量與金額
設立說明 該庫存批的設立/來源說明

欄位連動與附加功能

這一節整理「輸入某欄位/按某按鈕後系統會做什麼」,全部來自實際程式碼。

新增時的預設值

當你按新增,系統(AfterAddNew)會自動:

  • 可用設為 1(即)。
  • 倉庫分類碼設為 0

其餘欄位皆為空白,需自行填寫。

倉同儲=是 → 自動建立同代號倉儲

當你把主檔的倉同儲改為(值 Y),系統(ReceiveWeakEvent 監聽倉同儲變更)會即時處理倉儲明細:

  • 若明細中還沒有與倉庫同代號的倉儲:
    • 明細為空時,新增一筆倉儲代號=隸屬倉庫的倉儲。
    • 明細已有第一筆時,把第一筆的倉儲代號改成倉庫代號,並依其狀態標記為新增(A)或修改(E)。
  • 若明細中已存在同代號倉儲,則不重複建立。

這讓「不細分儲位」的倉庫不必手動敲一筆倉儲。此連動只在編輯狀態(新增/修改)下作用,純瀏覽時不會觸發。

倉同儲改回否不會自動刪倉儲

把倉同儲設為會即時補一筆同代號倉儲,但再改回不會自動把那筆倉儲刪掉;如不需要,請在明細手動移除(清空倉儲代號該列即視為空列略過)。

倉同儲=否 → 存檔時自動補進料/出貨虛擬倉

倉同儲(非 Y)並按下存檔時,系統(GsplaceSave.HandleDataBeforeEndEdit)會自動為這座倉庫補上兩筆虛擬倉,供入庫與出貨流程使用:

  • 進料虛擬倉:若明細中沒有任何倉儲代號含 _prgpar 3023(暫收/閃電倉代號)者,新增一筆,代號=3023值-隸屬倉庫,備註填 Virtual
  • 出貨虛擬倉:若明細中沒有任何倉儲代號含 _prgpar 3026(出貨倉代號)者,新增一筆,代號=3026值-隸屬倉庫,備註填 Virtual

同時,存檔前系統會把主檔的隸屬倉庫寫進每一筆明細,並把倉儲代號空白的列標記為刪除(D)。

為什麼存完倉儲多了兩筆 Virtual?

這兩筆 Virtual 倉儲是採購暫收與出貨流程必備的落點,由系統依參數自動補齊,不需手動建立,也請勿任意刪除。倉同儲=的倉庫因為已有同代號倉儲承接,不會再補虛擬倉。

存檔檢核(AllowSave)

存檔時,系統(GsplaceSave.AllowSave)依序檢核,任何一項不過就擋下並提示:

  1. 隸屬倉庫不可空白。
  2. 倉同儲不可空白(必須選)。
  3. 倉同儲=時:扣除已標記刪除的列後,至少要有一筆填了倉儲代號的明細。
  4. 倉同儲=時:明細中必須有一筆倉儲代號等於隸屬倉庫(即同代號倉儲),否則不允許存檔。

Quantity Query(現有數量查詢)

Quantity Query 按鈕(QuantityQueryCommandQuantityQueryExecute)時,系統會:

  1. 取目前主檔的隸屬倉庫代號。
  2. 呼叫 GsplaceBll.GetQuantity,以查詢別=2 執行 SP DARB_TUR_GSPLACE,條件為「隸屬倉庫=該倉庫」。
  3. 把回傳結果灌進右下的虛擬化表格(TsVirtualGridViewModel)顯示。

此查詢欄位(品號、批號、現有數量等)皆對應 SP 回傳的中文欄名,唯讀檢視用。移動到其他倉庫(AfterMoverRecord)時,查詢結果會被清空,需重新查詢。

為什麼有時查不到數量

Quantity Query 只反映實際庫存交易累積出的在庫量。剛建好、還沒有任何進出料的倉庫不會有任何資料列,屬正常現象。

其他功能1 → 倉庫關帳

工具列的其他功能1ExtendedFunction1)會:

  1. 開啟 Gstkbas_1倉庫關帳)視窗,供批次執行倉庫月關帳。
  2. 視窗關閉後若有變更,重新整理(Renew)本表單資料,使主檔的關帳日期等系統欄位反映最新狀態。

開帳導入(規劃中,尚未提供)

VFP 舊版另有一支「開帳導入」功能(執行 DARB_LOG_GINVSTK_RECOUNT 重算庫存,含放行碼控管),用於期初庫存建立。新版 C# 尚未移植這支功能;目前其他功能1對應的是上述的批次「關帳」,而非「開帳導入」。需要期初開帳時請循其他作業處理。

常見問題

倉儲(Bin)明細輸了卻沒存進去?

倉儲明細列只有在倉儲代號有填值時才會被儲存;倉儲代號空白的列會被系統視為空列、存檔時自動標記刪除(NeedDeleteFunction / HandleDataBeforeEndEdit)。請確認每一筆要保留的倉儲都至少填了倉儲代號。

把倉同儲改成「是」後,倉儲清單多了一筆我沒建的資料?

這是正常的自動連動。倉同儲=時系統會即時補一筆與倉庫同代號的倉儲,讓不細分儲位的倉庫直接可用。若不需要這筆,把它的倉儲代號清空即可(清空後該列視為空列不會存檔)。詳見欄位連動與附加功能

倉同儲設「否」存檔後,倉儲多了兩筆 Virtual 的資料?

這是設計行為。倉同儲=的倉庫存檔時,系統會依參數 _prgpar 3023/3026 自動補一筆進料虛擬倉與一筆出貨虛擬倉(備註 Virtual),供採購暫收與出貨流程落點。請勿刪除,否則相關入出庫流程會找不到目的倉儲。詳見欄位連動與附加功能

按存檔被擋下來,提示要輸入欄位?

存檔有四道檢核:(1)隸屬倉庫必填;(2)倉同儲必填(要選是或否);(3)倉同儲=時至少要有一筆填了倉儲代號的明細;(4)倉同儲=時明細必須有一筆倉儲代號等於隸屬倉庫。依提示補齊缺的欄位即可。

可用欄位的下拉顯示空白?

可用在資料庫存的是 0/1 數值,畫面以是/否下拉呈現。極少數舊資料若值不是 0 或 1,下拉會顯示空白;重新選一次存檔即可校正。新增的資料一律會正確帶入。

按了 Quantity Query 卻沒有任何資料?

請先確認:(1) 游標停在一筆有效的倉庫主檔上;(2) 該倉庫確實已有庫存交易。新建、尚無任何進出料的倉庫沒有在庫批號,查詢結果為空屬正常。切到別的倉庫後也要重新按一次查詢。

開帳月份/關帳日期可以手動改嗎?

不行。這兩個欄位是唯讀的系統欄位,由關帳作業(其他功能1倉庫關帳)寫入,請勿在本表單手動填寫。

要刪除一座已經有庫存的倉庫,系統擋住了怎麼辦?

已被庫存或單據引用的倉庫不建議直接刪除。請改把可用設為停用,既能讓它不再被新單據選用,又保留歷史單據的關聯完整。

相關功能


需補截圖清單

以下截圖待功能 runtime 驗收後補拍(放 docs/C-GeneralAffair/images/):

  1. gsplace-step1.png — 倉庫主檔+倉儲明細整體畫面(建議含一筆已建好的倉庫與多筆倉儲)
  2. gsplace-step2.png — 倉同儲=是 觸發自動建立同代號倉儲的明細狀態
  3. gsplace-step3.png — 倉同儲=否 存檔後自動補進料/出貨兩筆 Virtual 虛擬倉
  4. gsplace-step4.png — 按下 Quantity Query 後右下現有數量查詢表格