程式資訊
- 程式 ID:
Purama - 所屬子系統:J.品質管理
- 狀態:stable
進貨暫收驗收單¶
功能簡介¶
「進貨暫收驗收單」是 IQC(進料品檢)的主要作業表單。採購單到貨後,品保人員在此登錄一張暫收單,逐項記錄檢驗數量、NG 數量、特採(允收)數量、抽檢數量與檢驗結果,作為後續入庫與退貨處理的依據。
一張暫收單包含一段主檔(暫收單號、暫收日期、收貨倉庫、供應廠商、幣別)與多筆明細(每個 SKU 一列)。明細可以手動逐筆輸入,也可以透過「其他1(採購單轉暫收)」直接從未結案的採購單批次帶入,省去重複 key 品號與數量。
在流程中的位置:採購單 → 進貨暫收驗收(本單) → 入庫 / NG 退貨。
表單名稱說明
本表單的程式代號為 PURAMA(暫收 Purchasing Receiving Amount),主檔資料表為 Twork_jqc_vw_purama、明細為 Twork_jqc_vw_purade。它同時承擔「暫收」與「進料檢驗」兩件事,因此選單上可能看到「進貨暫收」「暫收驗收」或「進料檢驗」等不同稱呼,指的都是同一支程式。
前置需求¶
- 權限:J.品保 →
J-010 進貨暫收驗收單的新增/修改/刪除/瀏覽/列印權限。 - 基礎資料:暫收單能否順利建立,取決於下列資料的維護狀況——
| 資料 | 影響什麼 |
|---|---|
| 倉庫主檔 | 主檔倉儲代號搜尋與帶出倉庫簡稱;新增時的預設倉庫取自參數 6008 |
| 廠商主檔 | 主檔生產部門(供應廠商)搜尋與帶出廠商簡稱 |
| 品號主檔 | 明細輸入 SKU 時自動帶出品名與單位 |
| 幣別/匯率 | 主檔幣別預設帶本位幣,明細金額以此幣別計價 |
| 採購單(未結案) | 「其他1(採購單轉暫收)」可帶入的來源;採購單轉入的列會被鎖定 |
系統參數 6008 |
暫收單新增時的預設收貨倉庫 |
系統參數 3017 |
採購單轉暫收視窗的預設倉庫 |
操作步驟¶
新增暫收單¶
- 進入「進貨暫收驗收單」,按工具列
新增。系統自動帶出:- 幣別=本位幣
- 倉儲代號=系統參數
6008的預設倉庫(同時帶出倉庫簡稱) - 暫收日期=今天
- 公司代碼、建檔日期由系統填入。
- 在倉儲代號欄輸入或搜尋收貨倉庫。
- 在生產部門欄輸入或搜尋供應廠商,系統會帶出廠商簡稱。
- 視需要修改幣別與暫收備註。
- 建立明細,二擇一:
- 手動輸入:在明細格線逐列輸入 SKU、Quantity(數量)、Unit Price(單價) 等,詳見 欄位連動與附加功能。
- 採購單轉入:按
其他1開啟「採購單轉暫收」視窗批次帶入,見下節。
- 逐筆登錄檢驗結果:NGQuantity(NG 數量)、Accept On Division Quantity(特採/允收數量)、Sample Quantity(抽檢數量)、InspectionResult(檢驗結果)。
- 全部品檢完成後,把主檔的 檢驗完畢 設為
是。 - 按
儲存。
暫收日期必填
儲存時若暫收日期為空白,系統會擋下並提示輸入。其餘主檔欄位(倉儲、廠商)雖以紅字標示為重點欄位,但實際擋存檔的硬性條件是暫收日期。
用「其他1」從採購單批次轉入(採購單轉暫收)¶
- 在暫收單畫面按
其他1,開啟「Purchase Order To Temp Receiving(採購單轉暫收)」視窗。視窗預設帶入:- Warehouse(倉庫)=系統參數
3017 - TempReceivingDate(暫收日期)=今天
- ETA=今天 +30 天
- Warehouse(倉庫)=系統參數
- 輸入 VendorCode(廠商)(必填)、調整 ETA(必填)與 Warehouse,按
查詢。 - 系統列出該廠商、該倉庫、預訂交期在 ETA(含)以前、且未結案、剩餘可收量大於已暫收量的採購單明細:
- 正常可轉入的列顯示在主頁籤。
- 已被別人鎖定(其他使用者編輯中)的列,會列在 Locked Source 頁籤,頁籤標題顯示鎖定筆數。
- 在要轉入的列輸入 In Transit Quantity(本次暫收量),或直接按該列的
Select按鈕,一鍵帶入「數量 − 已交量」的剩餘可收量;再按一次Select則歸零。 - 視窗下方的 Subtotal 會即時加總所有列的暫收量。
- 按存檔。系統把暫收量大於 0 的列轉成一張新的暫收單,並把畫面導回該筆暫收單(自動帶廠商、倉庫、暫收日期、採購別、幣別=本位幣,序號前置碼由系統依程式代號自動取得)。
超量檢核
轉入時若任一列的暫收量超過「(數量 − 已交量) ×(1 + 允收上限%)」,存檔會被擋下並提示「暫收量超過剩餘量」。允收上限取自品號設定的 ReceivingLimits。至少要有一列暫收量大於 0 才能存檔。
修改與刪除¶
- 用工具列的上一筆/下一筆或查詢功能切換到目標暫收單(切換後系統會重新帶出倉庫簡稱)。
- 按
修改進入編輯狀態。- 採購單轉入的明細列會被鎖定無法編輯(SKU 等欄位唯讀),只有手動輸入(無採購單來源)的列可改。詳見 欄位連動與附加功能。
- 要刪除整列明細,將該列品號清空後存檔,系統會把空品號的列視為待刪除。
- 按
刪除可刪除整張暫收單(受權限與後端結案/入庫狀態限制)。
列印¶
- 按
列印,開啟「進貨暫收列印」條件頁。系統會把目前暫收單的廠商與暫收日期帶成起訖預設值。 - 設定 Vendor(廠商起訖) 與 Date(日期起訖)。
- 選擇日期比對基準(單選):
On Board Date/ETD/ETA In Warehouse。 - 執行列印。
列印資料來源尚未提供
目前 PuramaPrintViewModel 的取數與報表載入程式(GetData / GetCrystalPrintSettings)整段被註解,列印條件頁可開啟、廠商起訖也會檢核,但實際報表內容的資料來源在新版尚未接上,屬規劃中功能。需要正式列印暫收清單時請先與系統管理員確認。
欄位說明¶
主檔欄位¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 暫收單號 | 系統產生 | 唯讀,由系統依序號前置碼 TP 編號 |
| 暫收日期 | ✔ | 預設今天;儲存時不可空白 |
| 倉儲代號 | ✔(重點) | 收貨倉庫;新增時預設參數 6008,搜尋後帶出倉庫簡稱 |
| 生產部門 | ✔(重點) | 供應廠商;搜尋後帶出廠商簡稱(客廠部簡稱) |
| 幣別 | — | 預設本位幣 |
| 暫收備註 | — | 最長 80 字 |
| 檢驗完畢 | — | 是/否;全部品檢完成後設為「是」 |
明細欄位¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| Line No(序號) | 系統產生 | 唯讀流水序號 |
| SKU(品號) | ✔ | 輸入後自動帶出品名與單位;轉入列唯讀 |
| SKUDescription(品名) | 自動 | 由 SKU 帶出,唯讀 |
| Quantity(數量) | ✔ | 檢驗/暫收數量;異動時重算金額 |
| Inspection Date(檢驗日期) | — | 唯讀顯示 |
| NGQuantity(NG 數量) | — | 不良數量;存檔時負數自動歸 0 |
| Accept On Division Quantity(特採/允收數量) | — | 特採放行數量 |
| Sample Quantity(抽檢數量) | — | 抽檢樣本數 |
| UOM(單位) | — | 下拉選單;由 SKU 帶出可改 |
| Unit Price(單價) | — | 異動時重算金額 |
| Currency Amount Without Tax(未稅金額) | 自動 | =四捨五入(數量 × 單價, 2),唯讀 |
| Remark(備註) | — | 最長 60 字 |
| ETA(預訂交期) | — | 唯讀顯示 |
| InspectionResult(檢驗結果) | — | 下拉:1.特採 / 2.允收 / 3.退貨 / 4.其他 |
| Warehouse In Quantity(入庫數量) | 系統 | 後段入庫回填,唯讀 |
| Warehouse In Date(入庫日期) | 系統 | 後段入庫回填,唯讀 |
| Closed(是否結案) | 自動/可勾 | 存檔時依「數量 − 入庫 − NG ≤ 0」自動結案 |
| Purchase Order Line Pkid / Purchase Order No | 系統 | 轉入列的來源採購單,唯讀 |
欄位連動與附加功能¶
這一節彙整「輸入某欄位後系統會做什麼」「按某按鈕會發生什麼」,全部來自實際程式碼。
主檔連動¶
- 按
新增時,系統自動帶入:幣別=本位幣、倉儲代號=參數6008(並查出倉庫簡稱)、公司代碼=1、建檔日期=現在、暫收日期=今天。 - 輸入/搜尋倉儲代號,系統用
WarehouseSearch帶出倉庫簡稱顯示於旁。 - 輸入/搜尋生產部門(供應廠商),系統用
VendorSearch帶出廠商簡稱(客廠部簡稱)。 - 切換到上一筆/下一筆暫收單後,系統會依當筆倉儲代號重新查出倉庫簡稱(
AfterMoverRecord),避免簡稱顯示舊值。
明細欄位連動¶
- 輸入 SKU(品號):離開欄位(LostFocus)時,系統呼叫
DescriptionHelper.SetISKU,自動帶出品名與單位。 - 輸入 Quantity(數量)或 Unit Price(單價):離開欄位時自動重算 未稅金額=四捨五入(數量 × 單價, 2)。金額欄唯讀,不能直接改。
- 明細列可否編輯:只有「採購單 Pkid ≤ 0」(即手動新增、沒有採購單來源)的列才允許編輯。從採購單轉入的列會整列鎖定(SKU、數量等唯讀),確保暫收量與採購來源一致。
- 刪除明細列:把該列品號清空即視為待刪除(
NeedDeleteFunction),存檔時移除。
存檔前自動處理(PuramaSave.HandleDataBeforeEndEdit)¶
按 儲存 時,系統在寫入前會自動做下列調整:
- 主檔序號前置碼強制設為
TP;新增或複製時把建檔日期設為現在。 - 每筆明細呼叫
SetIsClosed():當「數量 − 入庫數量 − NG 數量 ≤ 0」時自動把 是否結案 設為Y,否則清空。 - 合格判定:當該列品質管制日與檢驗日期都有值時——
- 若 NG 數量 > 0 且 特採數量 > 0 → 合格欄清空(視為不完全合格)。
- 否則 → 合格欄設為
Y。
- NG 數量為負數時自動歸 0,避免錯誤的負量。
存檔擋關(PuramaSave.AllowSave)¶
- 主檔暫收日期空白時擋存並提示輸入暫收日期。
其他1:採購單轉暫收(ExtendedFunction1 → Purama_E)¶
- 按
其他1開啟採購單轉暫收視窗(WindowName.Purama_E)。 - 視窗以廠商 + 倉庫 + ETA(預訂交期上限)為條件,查出未結案、剩餘可收量 > 已暫收量的採購單明細。
- 列上的
Select按鈕:一鍵把該列暫收量設為「數量 − 已交量」;再按一次歸零(SetTempReceivedQuantity)。 - 任一列暫收量變動時,Subtotal 即時重算(所有列暫收量加總)。
- 存檔時檢核:至少一列暫收量 > 0;且每列暫收量不可超過「(數量 − 已交量) ×(1 + 允收上限%)」。
- 存檔成功後關閉視窗,主畫面用回傳的 Pkid 自動導航到剛產生的暫收單。
列印(GetPrintViewModel → PuramaPrintViewModel)¶
- 按
列印時,系統把目前暫收單的廠商與暫收日期帶成列印條件的起訖預設值。 - 列印條件頁可選日期基準
On Board Date/ETD/ETA In Warehouse,並設定廠商與日期起訖。
常見問題¶
為什麼採購單轉入的明細列無法編輯?
這是設計上的鎖定。只有手動新增、沒有採購單來源(採購單 Pkid ≤ 0)的明細列才能編輯;從採購單轉入的列會整列唯讀,以確保暫收量與來源採購單一致。若要修改數量,請在「採購單轉暫收」視窗調整暫收量後重新轉入。
明細的「未稅金額」一直是 0?
金額是由數量 × 單價自動算出且唯讀。請確認該列已輸入單價與數量;改完數量或單價後移開該欄位(LostFocus)才會觸發重算。
輸入 SKU 後品名/單位沒帶出來?
品名與單位是離開 SKU 欄位時由品號主檔帶出。請確認該品號存在於品號主檔;若品號正確仍沒帶值,多半是該品號主檔尚未維護品名/單位。
存檔時被擋,提示要輸入暫收日期?
暫收日期是硬性必填欄位。新增時雖預設帶今天,但若被清空就會擋存。請補上暫收日期再存。
「其他1」查不到任何採購單?
採購單轉暫收只會帶出符合所有條件的列:指定廠商、指定倉庫、預訂交期 ≤ ETA、採購單與明細皆未結案、且「(數量 − 已交量) > (暫收量 − NG 量)」、採購單需設為可暫收。任一條件不符就不會出現。也請確認該列沒有被其他使用者鎖定(會改列在 Locked Source 頁籤)。
轉入時存檔被擋,說暫收量超過剩餘量?
每列暫收量不能超過「(數量 − 已交量) ×(1 + 允收上限%)」。允收上限來自品號設定,若需要超收請調整品號的允收上限百分比,或降低本次暫收量。
為什麼某列自動被打勾結案了?
存檔時系統會對每列做結案判定:當「數量 − 入庫數量 − NG 數量 ≤ 0」即自動結案。代表該列已無剩餘可入庫量。
相關功能¶
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/J-Quality/images/):
purama-step1.png— 暫收單主畫面(主檔+明細格線全貌)purama-step2.png— 明細列檢驗欄位(NG/特採/抽檢/檢驗結果下拉)purama-step3.png— 「其他1」採購單轉暫收視窗(含 Select 按鈕與 Subtotal)purama-step4.png— Locked Source 頁籤(被鎖定的採購單列)purama-step5.png— 列印條件頁(廠商/日期起訖+日期基準單選)