跳轉到

程式資訊

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

領料申請轉領料(Picking)

功能簡介

「領料申請轉領料」是一支轉單視窗:它把部門已提出、但還沒撿料出庫領料/出入庫申請單查出來,讓倉管人員逐筆挑單、在各儲位(Bin)指派要撿出的數量,最後回寫成一張領料/倉庫異動單

它不是一支獨立的主選單程式,而是從領料/倉庫異動單工具列的 其他功能 開啟的附屬視窗(程式碼上由 Gtrlima 的 ExtendedFunction1 / IOther1 介面驅動)。撿料存檔後,系統會把剛產生的領料單帶回領料/倉庫異動單畫面(依 Pkid 自動 Navigate),讓使用者接著檢視或列印。

在總務流程中的位置:

  1. 部門在領料/出入庫申請單登錄「我要領哪些料、多少量」。
  2. 倉管在本視窗依申請單實際撿料——決定從哪個儲位、撿多少、是否分倉。
  3. 系統按申請用途(領料出庫/倉庫調撥/預留)組出對應的領料/倉庫異動單明細並更新庫存。

本頁程式定位

本程式在程式碼中的 ProgramClass 欄位命名為 GtrapplyToGtrlimaViewModel(與其他模組多採全大寫的慣例不同),對應的 WindowName 也是 GtrapplyToGtrlima。它確實是一支獨立掛載、可由領料/倉庫異動單呼叫的轉單程式,並非別頁的變體。本手冊以代碼 GTRAPPLYTOGTRLIMA 標示,僅作辨識用途。

前置需求

  • 權限:本視窗由領料/倉庫異動單C-080)的 其他功能 開啟,因此需具備該單據的瀏覽權限;實際存檔產生的領料單同樣受 GTRLIMA 權限規範(轉單上傳的 UploadPrgClass 即為 GTRLIMA)。
  • 基礎資料:挑單與撿料能否成功,取決於下列資料的維護狀況——
資料 影響的結果
領料/出入庫申請單(含申請量/核發量) 是否出現在挑單清單;只列「申請量 ≠ 核發量」的未領明細
倉庫/儲位主檔(Gsplace 儲位設定 撿料時可選的 Bin、隸屬倉庫對照、分倉排序
物料主檔(Gsppdt 物料設定 品號/品名/單位顯示
各儲位庫存(Gstkbas_1 期初/入庫 建立的現有量) 可撿數量上限;現有量為 0 的儲位不列入
部門/關係人主檔 申請部門簡稱(部門簡稱 / Cust Vend Dept Name

操作步驟

整個流程在視窗的三個頁籤之間進行:Warehouse Application Picking(挑單)、Pick Item From Warehouse(撿料)、Locked Source(鎖定來源)。

三頁籤總覽

步驟一 查詢未領的申請單

  1. Beginning Date(起始日期)/ Ending Date(截止日期)輸入申請日期區間。系統開窗時預設帶入:
    • Beginning Date:今天往前 2 個月(DateTime.Now.AddMonths(-2))。
    • Ending Date:今天。
  2. 查詢(Query)。系統依「申請日期 落在區間內」且「申請量 ≠ 核發量(尚有未領)」撈出申請單,依申請單號分組後列在中央格線。
  3. 清單每列顯示:Pick 按鈕、Application No(申請單號)、Apply DateApply Type(申請原因)、Cust Vend Code(申請部門)、Cust Vend Dept Name(部門簡稱)、Warehouse(隸屬倉庫)、pkid m(畫面分組用的合成主檔序號)。

備註

查詢結果若有正被他人編輯的鎖定資料,會列在 Locked Source 頁籤,頁籤標題並以紅色數字(ImportantColor)顯示鎖定筆數。鎖定的申請單無法被挑單,請待對方退出後再查。

步驟二 挑單並撿料

  1. 在挑單清單某列按 Pick,畫面自動切到 Pick Item From Warehouse 頁籤(TabSelectedIndex = 1PickTabIsEnabled = true)。
  2. 撿料畫面分四區:
    • 左上(撿料明細):本申請單要撿的明細,欄位 Line#(序號)/SKURemark(備註)/Quantity(申請量)/Picked Quantity(已核發量)/Total Picking Quantity(本次累計撿料量)。
    • 右上(撿料列):目前已指派的撿料列,欄位 SKUBinQuantity(本次撿出量)/Processing Code(工程代號)/Lot Code(批號別)/Lot Num(批號)/Transaction Date。可手動改數量或刪列。
    • 左下(品號摘要):選取明細的 Item Name(品名)/Move To Quantity(本次撿料總量)/Carton Quantity(箱數),均唯讀;撿料區的存檔控制列也在此。
    • 右下(各儲位庫存):該品號在各儲位的可用庫存,欄位 Pick 按鈕/WarehouseBinOn Hand(現有量)/Used(已用量)/Transaction Date/批號等。
  3. 系統在按下 Pick 的當下,已自動依先進先出把每筆明細的未領量分配到隸屬倉庫的可用儲位(見欄位連動與附加功能)。你可在右上撿料列直接調整 Quantity(失焦時回寫),或在右下庫存列再按一次 Pick 加撿其他儲位。
  4. 確認撿料數量無誤後,按撿料控制列的存檔流程完成轉單。
  5. 存檔成功後,畫面退回 Warehouse Application Picking 頁籤、清空清單,並把剛產生的領料單號帶回領料/倉庫異動單

撿料畫面

注意

本視窗第一頁工具列的 存檔 鈕被刻意隱藏(BtnSaveVisibility=Collapsed)——存檔動作由撿料控制列的轉單流程接手。若你只是查詢、沒有要產生領料單,按撿料區的 離開(Exit)即可關閉,不會留下任何單據。

步驟三 檢視鎖定來源(選用)

切到 Locked Source 頁籤可檢視被鎖定/正在編輯的申請來源明細,含 Editing User(修改人員)、Application NoSKUQuantityShipped Quantity 等完整欄位,用來排查「為什麼某張申請單挑不到」。

欄位說明

查詢條件

欄位 必填 說明/格式/預設
Beginning Date(起始日期) 申請日期區間起;預設=今天往前 2 個月。空白時按 查詢 會被擋下並提示輸入
Ending Date(截止日期) 申請日期區間迄;預設=今天。空白時按 查詢 會被擋下並提示輸入

挑單清單(Warehouse Application Picking)

欄位 必填 說明
Pick 按鈕;按下進入撿料頁籤
Application No 申請單號(唯讀)
Apply Date 申請日期(唯讀)
Apply Type 申請原因/用途,決定轉出的單據型態(唯讀)
Cust Vend Code 申請部門代號(唯讀)
Cust Vend Dept Name 申請部門簡稱(唯讀)
Warehouse 隸屬倉庫(綁定 DefaultWarehouse,唯讀)
pkid m 依申請單號合成的分組序號(畫面用,唯讀)

撿料明細(Pick Item From Warehouse)

欄位 可編輯 說明
SKU 品號
Quantity 申請量
Picked Quantity 已核發量(綁定 PickedQuantity
Total Picking Quantity 本次累計撿料量(綁定 PickingQuantityTotal
Bin 撿料儲位;可由搜尋欄選,受隸屬倉庫篩選(WarehouseFilter
撿料 Quantity 此儲位本次撿出量;UpdateSourceTrigger=LostFocus,失焦時回寫

鎖定來源(Locked Source,皆唯讀)

主要欄位:Editing User(修改人員)、Application No(申請單號)、Apply Date(申請日期)、Apply Key(申請單pkid)、Apply Type(申請原因)、Cust Vend Code(申請部門)、Cust Vend Dept Name(部門簡稱)、From Warehouse(轉出倉儲)、To Warehouse(轉入倉儲)、SKU(品號)、SKUDescription(品名)、Quantity(申請量)、Shipped Quantity(核發量)、UOM(單位)、Notes(備註)等。

箱數固定為 0

來源 SP 讀的 gtrinoutd 沒有「箱數(Quantity Per Carton)」欄位,因此撿料/轉出時箱數一律帶 0,屬正常現象,非資料漏填。

欄位連動與附加功能

本節說明「按某按鈕/挑某列後系統實際做了什麼」,全部來自程式碼行為(GtrapplyToGtrlimaBllGtrapplyToGtrlimaControlViewModel)。

查詢(Query)做了什麼

當你按 查詢QueryExecuteSpecialAdeQuery):

  1. 系統先檢核 Beginning DateEnding Date 是否皆已輸入(CanQuery),任一為空會擋下並以輸入提示訊息回報。
  2. 以條件「申請日期 BETWEEN 起訖」且「申請量 ≠ 核發量」呼叫 VFP 原版轉單 SP DARB_TUR_GTRINOUTE(讀 gtrinoutm/gtrinoutd 主子合併+鎖定表)。
  3. SP 回傳的明細沒有主檔 pkid,系統改用「同一申請單號合成一個 pkid_m」做分組(用 Dictionary 依出現順序給 1、2、3…),再把每組第一筆當主檔列出,其餘填進 Detail
  4. 鎖定中的資料填入 LockedSource,並更新 Locked Source 頁籤的紅色筆數徽章(LockedCount)。

SP 來源已改接原版

舊版曾規劃名為 TWORK_TUR_GTRAPPLYTOGTRLIMA 的專屬 SP,但該 SP 在資料庫不存在;現行版本改接 VFP 原版 DARB_TUR_GTRINOUTE,這是已裁定的設計,非缺漏。

按 Pick 挑單後,系統如何自動配撿

當你在某列按 PickPickExecuteBll.Pick):

  1. 取得該申請單的隸屬倉庫,蒐集該單所有非空品號(依 pkid_m 過濾、Distinct)。
  2. 以「現有數量 ≠ 0 且 品號 IN(這些品號)」呼叫 VFP 原版 DARB_TUR_GSPLACE @查詢別=2(gstkbas/gsplace/ginvstk 總務庫存),取得各儲位可撿庫存;再用 gsplace 對照補上每個 Bin 的隸屬倉庫(分倉排序與可挑判斷需要)。
  3. 把庫存先分「本倉(隸屬倉庫相同)排前、其他倉排後」,本倉內再依「現有量大→小、交易日期早→晚」排序(先進先出)。
  4. 逐筆明細以未領量=申請量-核發量為目標,從可用儲位依序扣撿,直到湊滿未領量為止:
    • 該儲位可用量(現有量-已用量小於未領量 → 全撿,剩餘量繼續找下一個儲位。
    • 該儲位可用量大於等於未領量 → 撿到剛好補滿,停止。
  5. 完成後切到撿料頁籤、PickTabIsEnabled 設為 true,並把預配結果(Tmpstkmove 撿料目標+Tmpwhse 庫存)顯示在撿料各區。

工程代號(保留)庫存目前一律不自動配撿

若某儲位庫存掛有工程代號(即被保留給特定客戶/工程),自動配撿時會略過該儲位。程式碼的判斷式雖保留「保留客戶代號(ForCustomerCode)等於本申請單申請部門時才撿入」的分支,但目前來源 SP DARB_TUR_GSPLACE 並未回傳保留客戶欄位(ForCustomerCode 恆為空字串),因此該分支實務上不會成立——只要儲位掛工程代號,自動配撿就會跳過。手動在右下加撿時若挑到掛工程代號的庫存,同樣因保留客戶為空而跳出 Item Reserved! 提示並拒絕。

手動加撿(右下庫存列再按 Pick)

在右下「各儲位庫存」格線按 PickGtrapplyToGtrlimaControlViewModel.PickExecute):

  1. 若該儲位倉庫與目前撿料明細(SelectedPickingTarget)的倉庫不同,略過(不可跨倉撿)。
  2. 若庫存剩餘量(RemainQuantity)≤ 0 且所在倉庫為 PR,略過。
  3. 若該庫存掛工程代號(被保留給特定客戶/工程)→ 跳 Item Reserved! 並拒絕。程式碼條件為「保留客戶(ForCustomerCode)為空,或保留客戶 ≠ 本申請單申請部門」,但因來源 SP 不回傳保留客戶欄位(恆為空字串),只要掛工程代號就必定被擋
  4. 若該儲位已在撿料列中,系統把撿料量補到「尚需撿的數量」;否則新增一筆撿料列(Bin=該儲位)。

存檔時的可出庫檢核(CheckQuantity)

按存檔前系統先做檢核(AllowSaveCheckQuantity):

  1. 每筆撿料目標的撿料總量必須與其各撿料列的數量加總一致,否則回系統錯誤訊息擋下。
  2. 任一撿料列的本次撿出量不可超過該儲位現有量,否則以 <Bin>\r\nPicking Quantity is greater than on-hand quantity! 擋下。
  3. 至少要有一筆可出庫(撿料總量與申請量同號且皆 > 0,或皆 < 0),否則以 None record to be shiped 擋下。
  4. PR 倉的配置量加總異常時,以 Allocate QTY transfering summation error ! 擋下。

存檔時的單據組裝(依申請用途分流)

通過檢核後,依申請單的 Apply Type(前置碼)組出不同型態的領料/倉庫異動單明細:

Apply Type(前置碼判斷) 序號前置碼 交易別碼 行為
倉庫調撥WarehouseTransferSetUpdateSource2 GD BT(儲位調撥) 每個撿料儲位產一列「由來源 Bin 轉到目的倉/目的 Bin」
預留ReserveSetUpdateSourceReserve GD BT 每筆撿料產「轉出列+轉入列」一對,轉入列序號加 A 後綴、途程序號標 RS(保留)、工程代號帶 ProcessingCode
其他(領料出庫,預設分支 SetUpdateSource1 OS OS(領料出庫) 每個撿料儲位產一列「自來源 Bin 出庫」

三種分支共通:主檔幣別固定帶本位幣Context.Env.LocalCurrency)、匯率固定 1、公司代碼 1,交易日期帶今天,並在轉入備註與明細備註寫入 TRAPPLY:<申請單號/pkid> 做追溯。撿料量為 0 的明細仍會產一筆空數量列以保留對應關係(出庫/調撥分支)。

為什麼匯率一律帶 1

領料/倉庫異動屬於內部庫存移動、沒有外幣金額,因此幣別固定本位幣、匯率 1 是設計,非漏算。

存檔成功後(AfterSave)的連動

存檔成功後系統會:

  1. 清空挑單清單(List 設新空集合)、停用撿料頁籤(PickTabIsEnabled = false)、切回第一頁。
  2. 記下新領料單的 Pkid(靜態欄位 GtrapplyToGtrlimaViewModel.Pkid),並把該挑單列標記 SaveCompleted,避免同一張重複轉(已轉過的列再按 Pick 會直接 return)。
  3. 控制權交回領料/倉庫異動單,由其 ExtendedFunction1 依 Pkid 自動 NavigateAsync 到剛產生的領料單,再把靜態 Pkid 還原為 -1。

取消(AfterCancel)的連動

若中途取消,系統清空清單、停用撿料頁籤、切回第一頁,不留下任何單據。

離開(Exit)的連動

按撿料區 離開ExitExecute)時,系統依靜態 Pkid 是否 > 0 決定回傳 DialogResult(有成功存檔回 true、否則 false),供母程式判斷是否要 Navigate。

自動化執行(AutoPilot)目前未啟用

BLL 內保留了 AutoExecute 方法(傳入 AutoCondition 後可不經畫面自動查詢、對第一筆申請單撿料並存檔,失敗則回滾)。但對應的排程任務 Gtrlima_FromGtrapply 在程式與 AutoPilotRegistry 中目前皆為註解狀態、尚未註冊,因此這條批次路徑目前未提供給使用者,僅屬規劃保留。一般操作請以畫面手動撿料為準。

常見問題

查不到任何申請單?

請確認三點:(1) Beginning/Ending Date 區間有涵蓋申請日期;(2) 區間內確實有領料/出入庫申請單存在;(3) 該申請單仍「未領完」——只有 申請量 ≠ 核發量 的明細才會被撈出,已全數核發的不再出現。

某張申請單在清單裡,但按 Pick 撿不到料、撿料列是空的?

撿料庫存來自各儲位的現有量。若該品號在隸屬倉庫的所有儲位現有量都為 0(或都掛工程代號而被自動跳過),就沒有可自動配撿的庫存。請先確認Gstkbas_1 期初/入庫 已建立庫存,或改到右下庫存列手動加撿(掛工程代號的儲位仍會被 Item Reserved! 擋下)。

手動加撿時跳出「Item Reserved!」?

你挑到的儲位庫存掛有工程代號(被保留給特定客戶/工程)。目前來源 SP 不回傳保留客戶欄位,因此只要儲位掛工程代號就會被擋下(自動配撿也會跳過這類儲位)。請改撿未掛工程代號的儲位。

存檔時被擋,提示「None record to be shiped」或數量錯誤?

代表沒有任何可出庫的撿料,或撿料總量與核發量對不上、或某撿料列撿出量超過儲位現有量。請回撿料頁籤檢查每筆 撿料 Quantity 是否合理:撿料總量需與各撿料列數量加總一致,且不得超過該儲位現有量。

找不到撿料區的「存檔」按鈕?

第一頁工具列刻意隱藏存檔鈕(BtnSaveVisibility=Collapsed),存檔由撿料控制列的轉單流程接手。撿完按撿料區的存檔流程即可,不需另尋按鈕;若只是查詢,按 離開 關閉即可。

為什麼箱數(Quantity Per Carton)都是 0?

來源資料表(gtrinoutd)本身沒有箱數欄位,因此轉單時一律帶 0,屬正常現象。

可以排程自動把申請單轉成領料單嗎?

目前不行。BLL 雖保留 AutoExecute 自動撿料邏輯,但對應的 AutoPilot 排程任務尚未註冊啟用(程式碼仍為註解狀態),詳見欄位連動與附加功能末段的說明。

相關功能


需補截圖清單

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

  1. gtrapplytogtrlima-step1.png — 三頁籤總覽,建議以 Warehouse Application Picking 挑單清單為主畫面
  2. gtrapplytogtrlima-step2.pngPick Item From Warehouse 撿料畫面(左上撿料明細/右上撿料列/左下品號摘要/右下儲位庫存四區)
  3. gtrapplytogtrlima-step3.png —(選用)Locked Source 頁籤與紅色鎖定筆數徽章