程式資訊
- 程式 ID:
Purama_E - 所屬子系統:J.品質管理
- 狀態:stable
採購單轉入暫收(Purchasing to Temp Receiving)¶
功能簡介¶
「採購單轉入暫收」是一個共用彈出視窗(視窗抬頭 Purchasing to Temp Receiving),介面為英文版。它不是獨立的主選單功能,而是由進貨暫收驗收單(Purama)、製程品質(Twrama)、工作品質(Wkrama)、客訴管理(Complain)、維修作業(Repair)這幾張單據透過工具列的 其他1 按鈕開啟。
它的作用是:依廠商 + 倉庫 + 預訂交期把尚未交清的採購單明細撈出來,讓使用者勾選並輸入「在途/暫收數量」,按下儲存後直接產生一張新的進貨暫收單,再把該暫收單的 Pkid 回傳給呼叫端,讓主畫面自動切換(navigate)到剛建立的那筆暫收單。
簡單說,它把「人工逐筆新增暫收單明細」的動作,換成「從採購單批次帶料、自動建單」,是進料暫收流程的快速入口。品管/倉管人員在收到一批採購到貨時,用它一次把整批採購明細轉成暫收單。
與 Purama 的關係
本視窗有自己的程式代號 PURAMA_E 與獨立的 ViewModel/BLL,但沒有獨立的主選單入口,必須從上述單據的 其他1 進入。產生的暫收單則歸屬於 PURAMA(進貨暫收單),儲存與上傳都走 Purama 的資料表。
前置需求¶
- 權限:開啟本視窗的來源單據(如
J-010 進貨暫收單)的瀏覽權限即可;本視窗本身無獨立選單權限。 - 基礎資料:能不能撈到可轉入的採購明細,取決於下列資料——
| 資料 | 影響的結果 |
|---|---|
| 採購單(含明細、預訂交期) | 可轉入的明細清單;只撈未結案、未交清的明細 |
| 廠商主檔(VendorCode) | 查詢的必要條件;對應採購單的廠商代號 |
| 倉儲主檔(Warehouse) | 查詢的必要條件;對應採購單表頭的倉儲代號 |
採購單表頭「是否暫收」設為 Y |
採購單須允許暫收,否則該採購單不會出現 |
系統參數 U_Prgpar 3017 |
進入視窗時帶入的預設倉庫 |
| 允收上限(ReceivingLimits) | 暫收數量可超收的百分比上限,超過會擋存檔 |
注意
查詢條件中廠商代號、暫收日期、ETA 三項皆為必填,缺一不可查詢。倉庫雖也是查詢條件之一,但程式未強制檢核(檢核碼已被註解保留)。
操作步驟¶
- 在主畫面(Purama/Twrama/Wkrama/Complain/Repair)按工具列的
其他1開啟本視窗。 - 設定查詢條件(位於畫面上方):
- VendorCode:輸入或搜尋廠商代號(必填)。
- ETA:預訂交期上限,預設為今天 +30 天;只撈預訂交期早於(含)此日的明細(必填)。
- Warehouse:倉庫代號,進入時預設帶入參數
3017的倉庫。 - TempReceivingDate:暫收日期,預設為今天(必填)。
- 按
查詢(Query)載入符合條件的採購明細,結果顯示在Purchase Order To Temp Receiving分頁的格線。 - 對要轉入的每一列,在 In Transit Quantity(暫收數量)欄輸入要暫收的數量;
- 或直接按該列的
Select按鈕,系統會自動把該列填成「可暫收的剩餘量」(再按一次則歸零)。
- 或直接按該列的
- 畫面右側的 Subtotal(合計)會隨輸入即時加總所有列的暫收數量。
- 確認無誤後按工具列的儲存(
SqlEditTurn的存檔),系統建立一張新的進貨暫收單;- 存檔成功後視窗回傳新暫收單的 Pkid,主畫面自動 navigate 到該筆暫收單。
- 按
Exit關閉視窗。
小技巧
Select 按鈕是一個切換鈕:第一次按填滿「剩餘可暫收量」,第二次按清為 0。適合要全量轉入時免去逐欄打字。只想部分轉入時,直接在 In Transit Quantity 欄輸入數量即可。
Locked Source 分頁¶
若查詢時發現有採購明細正被其他使用者鎖定編輯,這些明細會列在 Locked Source 分頁(分頁標題會顯示被鎖定的筆數)。此分頁僅供檢視,列出鎖定者(Editing User)與該明細資訊,無法在此分頁轉入。
欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| VendorCode | ✔ | 廠商代號,可用搜尋鈕帶出;對應採購單廠商代號 |
| ETA | ✔ | 預訂交期上限(短日期);預設今天 +30 天;只撈預訂交期 ≤ 此日的明細 |
| Warehouse | — | 倉庫代號(搜尋);預設取參數 U_Prgpar 3017;查詢條件之一但未強制檢核 |
| TempReceivingDate | ✔ | 暫收日期(短日期);預設今天;存檔時寫入暫收單表頭 |
| Subtotal | 唯讀 | 所有列暫收數量的即時加總;系統自動計算,不可輸入 |
採購明細格線(Purchase Order To Temp Receiving)¶
| 欄位 | 可編輯 | 說明 |
|---|---|---|
| Purchase Order No | — | 採購單號 |
| Vendor | — | 廠商代號 |
| ETA | — | 該明細的預訂交期 |
| Line No | — | 採購單明細序號 |
| SKU/SKUDescription | — | 品號/品名 |
| UOM | — | 單位 |
| Quantity | — | 採購數量 |
| Received Quantity | — | 已交數量 |
| Select | — | 按鈕欄;切換填滿/歸零暫收量(見欄位連動與附加功能) |
| In Transit Quantity | ✔ | 本次要暫收(在途)的數量,預設 0;轉入的主欄位 |
| Remark | ✔ | 備註,會帶入產生的暫收單明細 |
| Vendor SKU | — | 廠商品號 |
| Warehouse Code | — | 倉庫代號 |
Locked Source 格線¶
| 欄位 | 說明 |
|---|---|
| Editing User | 正在鎖定/編輯這筆採購明細的使用者 |
| Purchase Order No/Line No/SKU/… | 被鎖定明細的基本資料(唯讀檢視) |
欄位連動與附加功能¶
這一節說明「輸入或按下某欄位後系統會做什麼」,全部依實際程式碼整理。
-
進入視窗時帶預設值:開窗時
TempReceivingDate帶今天、ETA帶今天 +30 天、Warehouse帶系統參數U_Prgpar("3017")的倉庫。可在查詢前自行修改。 -
按
查詢(Query):- 先檢核 VendorCode、TempReceivingDate、ETA 三欄不可空白,任一為空會跳提示並中止。
- 通過後以「廠商代號 = VendorCode、倉儲代號 = Warehouse、預訂交期 ≤ ETA」為條件撈採購明細,並且只取未交清且超出已暫收量、採購單與明細皆未結案、且採購單表頭「是否暫收 = Y」的明細。
- 撈回的明細,每列的 In Transit Quantity 一律重設為 0(需自行填數量)。
- 同時把被他人鎖定的明細放到
Locked Source分頁,並更新分頁上的鎖定筆數。
-
按某列
Select按鈕:呼叫該列的「填滿/歸零」切換邏輯(SetTempReceivedQuantity)——- 若目前 In Transit Quantity 不等於「剩餘可暫收量(Quantity − Received Quantity)」,就把它一鍵填成剩餘可暫收量;
- 若已等於剩餘量(代表已全量),再按一次則歸零。
-
輸入 / 改變 In Transit Quantity 時的即時連動:
- 視窗監聽每一列的 TempReceivedQuantity(In Transit Quantity) 變化(透過
PropertyChangedEventManager弱事件),任一列改值就重新加總所有列,更新右上角 Subtotal。此重算僅在單據處於編輯(非 Normal)狀態時生效。 - 同一列只要暫收量 > 0,該列自動標記為「已選取」(
IsSelected)。 - 若暫收量超過「剩餘可暫收量 ×(1 + 允收上限 %)」,該列
NeedDelete會成立而被判定為超收,存檔時會擋下。
- 視窗監聽每一列的 TempReceivedQuantity(In Transit Quantity) 變化(透過
-
按儲存(建立暫收單):存檔前 BLL 會檢核——
- 至少要有一列 In Transit Quantity > 0,否則提示「請選擇一筆資料」並中止。
- 不可有任一列超收(超過允收上限),否則提示「暫收數量超過剩餘數量」並中止。
- 通過後,系統用查詢條件組出一張新的進貨暫收單:表頭帶公司別、倉庫(Warehouse)、暫收日期(TempReceivingDate)、生產部門=廠商代號、採購別=採購、幣別=本位幣、單號前置碼自動取號;明細逐列帶入品號、品名、廠商品號、單位、暫收數量、單價、金額(未稅)、幣別、預訂交期、來源採購單號與採購單明細 pkid 等。
- 沒有品檢日期的明細,其「暫收批數」會被設為 0。
-
存檔成功後回傳 Pkid 並切換畫面:存檔完成後,視窗把新建暫收單的 Pkid 記下並關閉;呼叫端(Purama/Twrama/Wkrama/Complain/Repair 的
其他1)偵測到 Pkid 後,自動 navigate 到該筆新暫收單,使用者回到主畫面時即停在剛轉入的單據上繼續作業。 -
Exit按鈕:直接關閉視窗,不做任何資料異動。
外幣與單價
產生的暫收單明細,單價、未稅金額、幣別都直接沿用採購明細上的值;表頭幣別則固定帶本位幣。本視窗不重算匯率或稅額。
常見問題¶
按了「其他1」但查不到任何採購明細?
請依序確認:(1) VendorCode、ETA、TempReceivingDate 三項必填都已輸入;(2) 該廠商在指定倉庫確有採購單;(3) 採購明細尚未交清(採購數量 − 已交數量 > 暫收數量 − NG 數量);(4) 採購單與明細都未結案;(5) 採購單表頭「是否暫收」設為 Y;(6) 明細的預訂交期早於或等於你輸入的 ETA。
Subtotal 一直是 0,或沒有隨輸入變動?
Subtotal 是所有列 In Transit Quantity 的即時加總。若維持 0,表示尚未在任何一列輸入暫收量。請在要轉入的列輸入數量,或按該列 Select 鈕一鍵帶入剩餘量。
按儲存卻擋下,說「暫收數量超過剩餘數量」?
代表有某列的 In Transit Quantity 超過了「剩餘可暫收量 ×(1 + 允收上限 %)」。允收上限取自品號/採購設定(ReceivingLimits)。請把該列的暫收量調回容許範圍內再存檔。
想轉入的採購明細出現在「Locked Source」分頁,不能勾?
該明細正被其他使用者鎖定編輯(分頁會顯示鎖定者帳號)。請待對方結束編輯後重新 查詢,明細才會回到可轉入的清單。
存檔後主畫面沒有跳到新暫收單?
本視窗存檔成功才會回傳 Pkid 讓主畫面切換。若沒有任何列暫收量 > 0、或被超收檢核擋下,就不會建立暫收單,也不會切換畫面。請確認存檔有實際成功。
相關功能¶
- 進貨暫收驗收單(Purama) — 本視窗最主要的呼叫端,產生的暫收單即歸屬於此
- 客訴管理(Complain) — 同樣以
其他1開啟本視窗 - 維修作業(Repair) — 同樣以
其他1開啟本視窗 - 品質管理模組總覽
- G 採購付款 — 採購單與廠商主檔來源
- H 庫存管理 — 倉儲主檔與後續入庫
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/J-Quality/images/):
purama_e-step1.png— 從主畫面其他1開啟視窗的入口purama_e-step2.png— 查詢條件面板(VendorCode/ETA/Warehouse/TempReceivingDate)purama_e-step3.png— 採購明細格線(含 Select 按鈕與 In Transit Quantity 欄、Subtotal 合計)purama_e-step4.png— Locked Source 分頁(被鎖定明細與鎖定者)