跳轉到

程式資訊

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

出入庫申請單

功能簡介

「出入庫申請單」是總務/倉儲流程裡的領料與出入庫申請單:使用單位在這裡登錄「我要從哪個倉庫、領(或調撥/保留)哪些品項、各多少數量」,做為後續實際撥料的依據。它只負責「申請」,本身不直接異動庫存——填好並(視需要)送審後,由領料申請轉領料(Picking) 程式把申請單挑單、撿料,產生真正會扣帳的領料單 / 倉庫異動單

申請的用途分為三種(申請原因下拉):

  1. 樣品:領樣品出庫。
  2. 調撥申請:把料從一個倉庫調到另一個倉庫。
  3. 保留:把庫存先保留/預留下來。

適合領料人員、生管、倉管在實際撥料前先把需求建檔;金額相關欄位(單價/原幣未稅)僅供有檢視價格權限者參考,並不影響庫存。

與「序號前置碼」的關係

本表單的序號前置碼沿用 GTRLIMA(倉庫異動單)的單據別規則,因為申請單最終會轉成 GTRLIMA 單據,兩者共用同一套單據別與編號池。詳見欄位連動與附加功能

前置需求

  • 權限:C.總務 → C-140 出入庫申請單 的新增/修改/刪除/查詢/列印權限。價格欄位另受「可檢視價格」權限控制(見欄位說明)。
  • 基礎資料:下列主檔需先維護,否則欄位帶不出值或存檔被擋——
資料 影響什麼
倉庫主檔(總務倉) 隸屬倉庫、明細倉儲代號 的搜尋與檢核
倉儲(儲位)主檔 明細倉儲代號 下拉,依隸屬倉庫過濾
部門主檔 申請部門(帶部門簡稱,並回填為明細需求部門)
員工主檔 申請人員(帶姓名)
品號主檔(料件) 明細品名/規格/單位/參考單價 自動帶出
工程(製程)主檔 明細工程代號
單據別(GTRLIMA 規則) 序號前置碼 下拉與單號產生
廠商主檔 廠商代號(非必填,僅供查價對照)

操作步驟

新增申請單

  1. 按工具列 新增。系統自動帶入預設值(見欄位連動與附加功能):申請日期=今天、申請人員=登入者(帶姓名)、公司代碼=1、幣別=本位幣、匯率=1。
  2. 選擇序號前置碼(單據別)。申請單號 由系統依此規則於存檔時自動產生,毋須手動輸入。
  3. 選擇申請原因(樣品/調撥申請/保留)。
  4. 輸入或搜尋隸屬倉庫(要從哪個倉領料)、申請部門(帶部門簡稱)。
  5. 視需要輸入廠商代號(僅供查價參考,可留空)。
  6. 在下方明細逐列輸入:
    1. 品號(可用搜尋按鈕):輸入後自動帶品名/參考單價
    2. 申請量:要領用的數量。
    3. 倉儲代號:撥出的儲位(依隸屬倉庫過濾)。
    4. 視需要填工程代號/批號別/批號/備註/用途/預訂交期
  7. 按工具列 儲存。系統檢核必填欄位(申請日期、序號前置碼、申請人員、隸屬倉庫、申請部門),並把空品號的明細列自動刪除(VFP 原版另有「申請人員空白時自動補登入者」的處理,存檔即帶值)。

修改 / 刪除

  1. 用工具列翻頁鈕或 查詢 移到要處理的單據。
  2. 修改 後調整欄位,再 儲存
  3. 刪除 可刪除整張單據。

已轉單不可修改

VFP 原版規定:申請單一旦被轉成領料單(轉出備註 已有值),即不允許再修改。轉出/轉入備註皆由系統於轉單時回填,畫面上唯讀。

查詢明細的庫存與轉單情形

  • 本表單實作 庫存查詢(IStockQuery):選取一筆明細列後,可查該品號目前各倉/儲位的現有數量,協助判斷申請量是否足夠。
  • 本表單另實作 申請單查詢(特殊查詢):選取明細列時,系統自動以該列查出此申請項目的領料/轉單歷程,供追蹤這筆申請後續被撿料、出貨的狀況。

列印

按工具列 列印 產生出入庫申請單報表(VFP 對應報表 GTRINOUT_P)。

送審與快速審核(規劃中)

VFP 原版工具列另有「工作流程(送審)」與「快速審核」兩顆按鈕,把申請單送進 申請出入單送審 工作流程。新版 C# 的主檔保留了工作流程/審核人員/審核日期/已審核 欄位,但目前 ViewModel 尚未掛上送審與快速審核動作,請以實際畫面上是否出現該按鈕為準。

欄位說明

主檔

欄位 必填 說明/格式/預設
申請單號 系統產生,唯讀。依序號前置碼 規則於存檔時編號
申請日期 新增時預設今天(YYYY/MM/DD
序號前置碼 單據別下拉,使用 GTRLIMA 規則。新增可選、修改時鎖定
申請原因 下拉:樣品(1)/調撥申請(2)/保留(3)
申請人員 新增時預設登入者,搜尋帶姓名
隸屬倉庫 要領料/調撥的來源倉,總務倉搜尋
申請部門 部門搜尋,帶部門簡稱;存檔時回填為明細需求部門
廠商代號 廠商搜尋,僅供查價對照,存檔不擋
轉出備註 / 轉入備註 唯讀,轉單時由系統回填(內含關聯申請單號)
幣別 / 匯率 畫面隱藏;新增預設本位幣、匯率 1,存檔時固定為本位幣+1
原幣金額 / 本幣金額 由明細原幣未稅合計,存檔時自動加總
公司代碼 預設 1

明細

欄位 必填 說明/格式/預設
序號 列序號
品號 搜尋欄;輸入後自動帶品名/參考單價(CheckValidate=False,可輸入非主檔品號但建議用搜尋)
品名 唯讀,由品號帶出
規格 唯讀,隨載入的明細顯示(新版輸入品號時不自動覆寫)
交易別碼 出入庫交易別代碼,手動輸入
單位 下拉(單位清單),手動選擇(新版輸入品號時不自動帶單位)
申請量 申請數量;變動時重算金額並更新總申請量
核發量 唯讀,由後續撿料/撥料流程回填
單價 僅「可檢視價格」時顯示;變動時重算金額
其他金額 僅「可檢視價格」時顯示
原幣未稅 唯讀=單價×申請量+其他金額(四捨五入 2 位)
參考單價 唯讀,品號標準成本
倉儲代號 儲位搜尋,依隸屬倉庫 過濾
工程代號 製程/工程搜尋
批號別 / 批號 批號管理用
備註 / 用途 / 預訂交期 文字/日期,可自由輸入
是否結案 唯讀,撥料完成後狀態

欄位連動與附加功能

這一節把「輸入某欄位 / 按某按鈕後系統會做什麼」逐條列出,全部來源於實際程式碼(C# ViewModel/SaveBll 與 VFP gtrinout class)。

新增時的預設帶值(AfterAddNew)

當你按 新增,系統對主檔自動帶入:

  • 公司代碼 = 1。
  • 申請日期 = 今天(YYYY/MM/DD)。
  • 申請人員 = 登入者代號,並帶出姓名
  • 幣別 = 本位幣、匯率 = 1(畫面雖未顯示幣別,內部仍以本位幣記帳)。

VFP 與新版一致

VFP addagain 新增時帶的值(申請人員=登入者、公司代碼、幣別=指定幣別、匯率=1)與新版相同。隸屬倉庫/序號前置碼 兩版皆未自動帶,需手動選擇。

序號前置碼 → 鎖定與單據別

  • 修改 模式下,序號前置碼 會被鎖定(PrefixIsEnabled 隨編輯狀態切換),避免改動已決定的單據別;新增時可自由選。
  • VFP 原版切換序號前置碼時,僅刷新唯讀的表單名稱(依「交易事項表」帶出該前置碼的交易單事項);原本「自動帶預設交易別碼、刷新明細交易別碼」的程式碼在 VFP 已被註解、實際不執行。新版未顯示表單名稱欄,交易別碼一律手填。

幣別 / 匯率 → 連動明細

主檔的幣別/匯率 透過弱事件監聽連動到每一筆明細:

  • 當你改主檔幣別,系統把每一列明細的內部幣別(CurrencyBinding)一起更新。
  • 當你改主檔匯率,系統把每一列明細的內部匯率(ForeignExchangeRateBinding)一起更新,連帶影響本幣未稅換算。
  • 新增明細列時,該列會自動承接主檔目前的幣別與匯率。

明細品號 → 自動帶品名 / 參考單價

當你在某列輸入或選取品號,系統立即以該品號查詢品號主檔:

  • 帶出品名
  • 帶出參考單價(品號標準成本)。

找不到品名?

若品名/參考單價空白,多半是該品號不在品號主檔。本欄允許輸入非主檔品號(CheckValidate=False),但這樣就帶不出品名,建議用搜尋按鈕挑選既有品號。

申請量 / 單價 / 其他金額 → 自動算金額與合計

  • 申請量單價:系統即時重算該列原幣未稅四捨五入(單價 × 申請量 + 其他金額, 2),再以匯率換算本幣未稅
  • 申請量:更新整張單的總申請量(TotalQuantity)。
  • 原幣未稅變動:更新整張單的總金額(TotalAmount)。

倉儲代號 → 依隸屬倉庫過濾

明細倉儲代號 的可選清單會依主檔隸屬倉庫 過濾,只列出該倉底下的儲位,避免挑到別倉的儲位。

價格欄位的權限控制

明細的單價/其他金額/原幣未稅/參考單價 等價格欄位,只有具「可檢視價格」權限(AdeViewModel.AllowViewPrice)的使用者才會顯示,否則整欄隱藏。

庫存查詢(IStockQuery)

選取一筆明細列後,本表單會把該列當作庫存查詢的鍵,讓你查該品號在各倉/儲位的現有數量。對應 VFP 的「庫存查詢」頁與品號 LostFocus 時呼叫 DARB_QUERY_STK1 查庫存的行為。

申請單查詢 / 轉單歷程(特殊查詢)

本表單內嵌一個申請單查詢(Gtrapply_q) 特殊查詢面板。每當你切換選取的明細列,系統自動以該列的 pkid 呼叫 TWORK_QRY_GTRAPPLY,列出此申請項目的領料/轉單歷程——也就是它後續被哪幾張領料單撿走、撥了多少。可用來追蹤一筆申請的執行狀況。

存檔時的整理與檢核(AllowSave / HandleDataBeforeEndEdit)

儲存 時,系統依序:

  1. 必填檢核申請日期、序號前置碼、申請人員、隸屬倉庫、申請部門 任一空白即擋存並提示。
  2. 清空列刪除:明細中品號 為空的列,自動標記為刪除(不會存進去)。
  3. 需求部門回填:把主檔申請部門 寫進每一列明細的需求部門。
  4. 幣別歸位:主檔幣別 固定為本位幣、匯率 固定為 1。
  5. 金額加總:主檔原幣金額/本幣金額 = 有效明細(未刪除且有品號)的原幣未稅合計。

VFP 有、新版未實作的存檔檢核

VFP allowsave 還會依倉同儲設定檢核明細倉儲代號(需求倉時不得空白、且必須隸屬於正確倉庫),並依交易別/倉同儲設定自動推算每列的轉入倉儲/轉出倉儲。新版 C# 的 SaveBll 目前未移植這段(相關程式碼以註解保留),實際撥倉的轉入/轉出倉儲是在轉領料 撿料階段才決定。

後續:轉成領料單

存好的申請單不會自己扣庫存。要實際撥料,須到領料申請轉領料(Picking)

  • 它查出申請量 ≠ 核發量(還沒撥完)的申請單。
  • 申請原因 走不同撥料邏輯——樣品走出庫、調撥申請走倉對倉、保留走保留撥法。
  • 撿料後產生領料單 / 倉庫異動單(GTRLIMA),並把核發量回填到本申請單。

常見問題

存檔時一直跳「請先輸入…」?

出入庫申請單的必填欄位是申請日期、序號前置碼、申請人員、隸屬倉庫、申請部門,缺一不可。其中申請人員在新增時已自動帶登入者,通常是序號前置碼申請部門 忘了選。提示訊息會指出缺的是哪一欄。

明細打了品號卻沒帶出品名 / 參考單價?

品名與參考單價來自品號主檔。本欄允許輸入不存在於主檔的品號(不會即時擋),但這樣就查不到品名。請改用品號搜尋按鈕挑選既有品號;若確為新料件,需先在料件主檔建檔。

金額欄位(單價 / 原幣未稅)整欄看不到?

這些是受權限保護的價格欄位,只有具「可檢視價格」權限的帳號才會顯示。沒有該權限屬正常,不影響申請數量與後續撥料。

申請單存好了,倉庫庫存怎麼沒變?

出入庫申請單只是「申請」,本身不異動庫存。要實際扣/撥庫存,須到領料申請轉領料 把這張申請撿料,產生領料單 / 倉庫異動單 後才會動帳,並把核發量 回填到申請明細。

想改一張舊申請單卻被擋住,說已轉單?

一旦申請單被轉成領料單(轉出備註 已有值),即不允許再修改。若確需調整,請循領料單那端處理,或新開一張申請單。

申請原因下拉顯示的是英文(Sample / WarehouseTransfer / Reserve)?

這三個選項分別代表樣品/調撥申請/保留。若畫面顯示為英文鍵名而非中文,是多語對照尚未補齊所致——選項的代碼(1/2/3)與行為不受影響,依序就是樣品、調撥、保留。

相關功能


需補截圖清單

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

  1. gtrinout-step1.png — 新增單據、主檔欄位(申請日期/序號前置碼/申請原因/隸屬倉庫/申請部門)全貌
  2. gtrinout-step2.png — 明細輸入(品號帶出品名、申請量、倉儲代號)
  3. gtrinout-step3.png — 庫存查詢頁 / 申請單查詢(轉單歷程)面板
  4. gtrinout-step4.png — 出入庫申請單列印報表(GTRINOUT_P)