程式資訊
- 程式 ID:
GPUTORA - 所屬子系統:C.總務管理
- 狀態:stable
採購轉進貨¶
功能簡介¶
「採購轉進貨」(GPUTORA)是一支批次轉單工具:依「廠商+倉庫+幣別」條件,把該廠商尚未進貨完成的採購單明細一次撈出來,讓使用者填上本次進貨量與目的儲位後,直接產生一張雜項進貨入庫單(雜項進貨入庫(Gtrrama)),省去逐筆手動輸入進貨明細的工。
它不是獨立的主選單表單,而是從 雜項進貨入庫(Gtrrama) 工具列的延伸功能(其他功能)按鈕開啟的彈出視窗(視窗標題 General Purchasing to Receiving)。轉檔成功後,系統會自動把 Gtrrama 主畫面移到剛產生的那張進貨單,接著就能在 Gtrrama 補表頭(發票、報關、付款條件)與進口費用、再正式存檔。
主要使用者是總務/倉管人員。在流程中的位置:採購下單(採購單(Gpurch))→ 收貨時用本工具批次帶料 → 在 Gtrrama 完成進貨入庫與成本分攤。
與雜項進貨入庫是同一張單的兩段
本工具產生的就是一張 Gtrrama 進貨單(共用 GTRRAMA 的上傳資料表 Twork_gen_vw_gtrrama/Twork_gen_vw_gtrrade/Twork_gen_vw_gtrrafee)。轉檔只負責「把採購明細變成進貨明細的草稿」,表頭與費用分攤、最終存檔、列印、轉傳票都在 雜項進貨入庫(Gtrrama) 完成。本頁只說明轉單這一段;進貨單本身的完整操作請見 雜項進貨入庫(Gtrrama)。
前置需求¶
- 權限:本工具產生的是進貨單,須具備 C.總務管理 →
C-070 雜項進貨入庫(GTRRAMA)的新增權限。 - 基礎資料:能撈到並正確轉檔的前提是下列資料已維護——
| 資料 | 影響的結果 |
|---|---|
| 採購單(採購單(Gpurch),未結案、未交清) | 查詢結果列表的唯一來源;只撈採購單與明細皆未結案且 數量 > 已交數量 者 |
| 廠商主檔 | Vendor Code 帶出簡稱,並自動帶入該廠商的稅別(Tax Code)與幣別(Currency) |
| 倉庫主檔 | Warehouse 帶出「倉同儲」設定,決定是否強制輸入儲位 |
| 儲位主檔(儲位主檔(Gsplace)) | Destination Bin 下拉與檢核;只列出本單倉庫下的儲位 |
| 幣別與匯率資料 | Currency/FX Rate 換算進貨金額;幣別需與採購單一致才撈得到 |
| 稅別主檔 | Tax Code 決定稅率(TaxRate),連動進貨單的稅額計算 |
系統參數 4001 |
開窗時 Warehouse 的預設倉庫 |
轉檔 SP 需為對應的資料庫版本
本工具透過預存程序 DARB_TUR_GPUTORA 撈料與轉檔。若資料庫端尚未部署此 SP(或部署版本與目前欄名版本不符),查詢會直接失敗。撈不到料時請先確認 DB 端已部署對應版本的轉檔 SP。
操作步驟¶
開啟工具¶
- 進入 雜項進貨入庫(Gtrrama)。
- 按工具列的延伸功能(其他功能)按鈕,開啟「Purchasing To Receiving」視窗。
本工具是 Gtrrama 的子視窗
本工具沒有自己的主選單入口,一律從 Gtrrama 開啟。關閉視窗後若已轉檔成功,Gtrrama 會自動導航到剛產生的進貨單。
步驟① 設定查詢條件(上方條件區)¶
- 輸入 Vendor Code(廠商代號)。輸入後右側自動帶出廠商簡稱,並依廠商主檔自動帶入 Tax Code 與 Currency。
- 輸入 Warehouse(入庫倉庫)。預設帶入系統參數
4001設定的預設倉庫。 - 確認 Receiving Date(進貨日期)。預設為今天(短日期格式)。
- 確認 Currency(幣別)與 FX Rate(匯率)。幣別預設本位幣、匯率預設
1;輸入廠商後 Currency 會被廠商幣別覆蓋。匯率須大於 0。 - 確認 Tax Code(稅別)。
- 按
Query(查詢)。系統撈出該廠商、此倉庫、此幣別下所有未交清的採購明細,列在中間格線。
查詢條件四項皆為必填
Warehouse、Receiving Date、Currency、FX Rate 任一缺漏或匯率 ≤ 0,查詢會被擋下並提示。Vendor Code 可空白,但通常會指定廠商以縮小範圍。
步驟② 勾選與調整進貨明細¶
查詢後,系統預設把每一列的 Receiving Quantity(本次進貨量)帶為「採購數量 − 已進貨數量」(即整批全收)。逐列依實收狀況調整:
- 修改 Receiving Quantity(本次進貨量)。填
0代表本列不轉。 - 確認或修改 Destination Bin(目的儲位)。倉庫設定為「倉同儲」時自動帶入=倉庫代號;否則須自行從下拉選擇本倉庫下的儲位。
- 點該列的
Select按鈕,可在「整列全收」與「歸零不收」之間快速切換。 - 想一次處理整批時,用底部的
All(全選=每列帶整批量)或None(全部歸零)。
步驟③ 轉檔產生進貨單¶
- 按右下的
SqlEditTurn儲存(轉檔)按鈕。 - 系統檢核通過後,把所有 Receiving Quantity > 0 的明細依廠商分組,每組產生一張進貨單主檔與其明細,寫入進貨單資料表。
- 視窗關閉後回到 雜項進貨入庫(Gtrrama),主畫面自動移動到剛產生的進貨單。接著在 Gtrrama 補表頭資訊、進口費用,再正式存檔。
Locked Source 頁籤
視窗第二個頁籤「Locked Source」列出已被其他使用者鎖定(編輯中)而本次無法轉入的採購明細,並顯示佔用者(Editing User)。頁籤標題會顯示被鎖筆數。若某些料沒被撈進來,先到這裡確認是不是被別人鎖住。
欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| Vendor Code(廠商代號) | — | 輸入後帶出簡稱,並自動帶入廠商的稅別、幣別 |
| Warehouse(倉庫) | ✔ | 入庫倉庫;預設取系統參數 4001 |
| Receiving Date(進貨日期) | ✔ | 短日期格式;預設今天 |
| Currency(幣別) | ✔ | 預設本位幣,輸入廠商後改帶廠商幣別;須與採購單幣別一致才撈得到料 |
| FX Rate(匯率) | ✔ | 預設 1;須 > 0 |
| Tax Code(稅別) | — | 預設空白,輸入廠商後帶入廠商稅別 |
明細格線(撈出的採購明細)¶
| 欄位 | 可編輯 | 說明/格式/預設 |
|---|---|---|
| Purchase Order No(採購單號) | — | 來源採購單號 |
| Line No(項次) | — | 採購明細項次 |
| SKU/SKUDescription(品號/品名) | — | 來源品號與品名 |
| Quantity(採購數量) | — | 採購單上的數量 |
| Select | (按鈕) | 切換本列整批全收/歸零 |
| Receiving Quantity(本次進貨量) | ✔ | 預設=採購數量 − 已進貨數量;填 0 不轉 |
| Remark(備註) | — | 採購明細備註 |
| Destination Bin(目的儲位) | ✔ | 倉同儲時預設=倉庫代號,否則須選;下拉只列本倉庫儲位 |
| Vendor Item(廠商料號) | — | 廠商端料號 |
| UOM(單位) | — | 進貨單位 |
| Unit Price(單價) | — | 採購單價,轉入進貨明細 |
| ETA(預訂交期) | — | 採購預訂交期,轉入進貨明細的預訂交期 |
| Purchase Pkid(採購明細 pkid) | — | 來源採購明細主鍵,轉檔時寫入進貨明細的「採購單 pkid」串接來源 |
| Company Code(公司代碼) | — | 來源公司別 |
| Sales Order No(訂單號碼) | — | 對應訂單號(若採購掛訂單) |
Locked Source 頁籤¶
| 欄位 | 說明 |
|---|---|
| Editing User(佔用者) | 正在編輯/鎖定該採購明細的使用者 |
| 其餘欄位 | 該被鎖住而無法轉入之採購明細的內容(SKU、品名、數量、採購單號、已進貨量、單價、ETA 等),全部唯讀 |
欄位連動與附加功能¶
這一節把「輸入某欄位/按某按鈕後系統會做什麼」逐條列出,全部來自實際程式碼。
條件區連動¶
- 輸入 Vendor Code 後:系統用廠商主檔(
DescriptionHelper.GetVendor)查該廠商,若查到,自動把 Tax Code 設為廠商的稅別、Currency 設為廠商的幣別。所以一般先輸廠商,稅別與幣別會自動帶好,再視需要手調。 - 輸入 Warehouse 後:系統查倉庫主檔的「倉同儲」設定。若倉庫設為「倉同儲=Y」,本工具進入「倉同儲模式」(
UsedAsBin = true),撈出來的每一列 Destination Bin 自動帶為倉庫代號、且不強制另外指定儲位;倉庫查不到時也預設視為倉同儲。非倉同儲的倉庫,Destination Bin 預設留空、存檔前必須逐列填入有效儲位。 - Currency/FX Rate 預設:開窗時 Currency 預設為本位幣、FX Rate 預設
1(由 BLL 建構時設定)。輸入廠商會以廠商幣別覆蓋 Currency。 - Receiving Date 預設:開窗時預設為今天。
查詢(Query)做了什麼¶
- 先檢核 Warehouse、Receiving Date、Currency 不可空白、FX Rate 須 > 0,任一不符即提示並中止。
- 透過
DARB_TUR_GPUTORA預存程序撈料,過濾條件為:該廠商 + 此倉庫 + 此幣別,且採購單未結案、明細未結案、數量 > 已交數量(已交清的不撈)。 - 撈回後對每一列做初始化:
- 幣別空白者補為本位幣、匯率補
1。 - 倉庫代號統一設為條件區的 Warehouse。
- Destination Bin 依倉同儲模式決定(倉同儲=倉庫代號,否則空白)。
- Receiving Quantity 預設帶為「採購數量 − 已進貨數量」(呼叫
SetReceivingQuantity()),即預設整批全收。
- 幣別空白者補為本位幣、匯率補
- 被其他人鎖定中的明細不會進入可編輯清單,改列入 Locked Source 頁籤並顯示佔用者;頁籤標題顯示被鎖筆數。
Receiving Quantity 與選取連動¶
- 改 Receiving Quantity 時(
ReceivingQuantityBinding):系統同步把該列的「是否選取」設為「進貨量 > 0」,並重算「是否超量」旗標——只要進貨量 > 0 該列就算被選中、會被轉檔。 Select按鈕(每列):呼叫ReceivingExecute(),在「整批全收(採購數量 − 已進貨數量)」與「歸零」之間切換——目前不為 0 就歸零,為 0 就帶整批量。All按鈕:把所有列的 Receiving Quantity 帶為各自「採購數量 − 已進貨數量」(整批全收)。None按鈕:把所有列的 Receiving Quantity 歸 0(全部不轉)。
存檔(轉檔)做了什麼¶
按 SqlEditTurn 儲存時:
- 倉庫/儲位檢核:非倉同儲模式下,凡進貨量 > 0 的列,Destination Bin 不可空白、且必須是有效儲位(比對儲位主檔),否則提示並擋存。
- 進貨量檢核:至少要有一列進貨量 > 0;且任一列不得超過容許上限——上限=(採購數量 − 已進貨數量)×(1 + 進貨容許比例
ReceivingLimits%)。超過會提示「進貨數量超過剩餘數量」並擋存。 - 產生進貨單:把進貨量 > 0 的列依廠商分組,每一組產生一張進貨單主檔(序號前置碼
RC、單據別A、交易部門=廠商代號、交易日期=Receiving Date、隸屬倉庫、帶入幣別/匯率/稅別/稅率),組內每列產生一筆進貨明細(交易別碼RA、串接來源採購明細 pkid、帶入轉入倉儲、品號、品名、預訂交期、單位、數量=進貨量、單價、含稅單價),逐列以幣別/匯率算金額(CalculateAllAmount),最後由TaxCalculator統一算稅額與含稅金額。 - 轉入備註自動寫入
Gputora,操作者,日期以標示來源。 - 存檔成功後把新進貨單的 pkid 回傳給 Gtrrama(
AfterSave→Pkid),Gtrrama 自動導航到該單。
退出¶
- 第一個頁籤的
SqlEditTurn內含結束(Exit)動作、第二個頁籤有獨立ExitButton,皆關閉本視窗回到 Gtrrama。轉檔進行中(SetControl觸發時)Exit 會暫時停用以避免中斷。
本工具不負責的部分
本工具只做查詢與轉檔,不提供進貨單的表頭輸入、進口費用分攤、列印、轉傳票或刪除。這些都在 雜項進貨入庫(Gtrrama) 完成。轉檔後請務必回 Gtrrama 補齊表頭並正式存檔。詳見欄位連動與附加功能。
常見問題¶
按 Query 撈不到任何採購明細?
本工具只撈未交清的採購明細,過濾條件是「廠商 + 倉庫 + 幣別」三者都要對得上,且採購單與明細皆未結案、且 數量 > 已交數量。請確認:(1) 條件區的倉庫、幣別與採購單上的一致;(2) 採購單尚未結案、也還沒收滿;(3) 該料是否被別人鎖定(看 Locked Source 頁籤)。另外若資料庫端尚未部署對應版本的 DARB_TUR_GPUTORA,查詢會直接失敗,見前置需求的注意框。
輸入廠商後稅別/幣別自己變了?
這是正常連動。輸入 Vendor Code 後系統會用廠商主檔自動帶入該廠商的稅別與幣別。若要用不同幣別,請在帶值後再手動改 Currency(但幣別須與採購單一致才撈得到對應的料)。
存檔時提示要輸入儲位(Destination Bin)?
當倉庫不是「倉同儲」時,每一列要轉的明細都必須指定有效儲位。請逐列從 Destination Bin 下拉選擇本倉庫下的儲位;若倉庫本身設為倉同儲,系統會自動帶入=倉庫代號、不需手填。
存檔時提示「進貨數量超過剩餘數量」?
某列的 Receiving Quantity 超過了容許上限(剩餘量 ×(1+進貨容許比例%))。請把該列進貨量改到上限以內;若確實要超收,需調整該採購明細的進貨容許比例設定。
Receiving Quantity 預設帶的數字是怎麼來的?
查詢後系統預設把每列帶為「採購數量 − 已進貨數量」,也就是預設整批全收。可逐列改數量、按 Select 切換整列收/不收,或用 All/None 一次套用全部。
轉檔後資料在哪裡?要去哪裡補表頭與費用?
轉檔產生的是一張 雜項進貨入庫(Gtrrama) 進貨單,依廠商分組、每廠商一張。視窗關閉後 Gtrrama 會自動移到該單,請在 Gtrrama 補發票/報關/付款條件等表頭與進口費用,再正式存檔、列印或轉傳票。
相關功能¶
- 雜項進貨入庫(Gtrrama) — 本工具的母表單與轉檔目的單據
- 採購單(Gpurch) — 轉進貨的來源單據
- 採購暫收單(Gpurama) — 另一種採購收貨流程
- 儲位主檔(Gsplace) — Destination Bin 下拉與檢核來源
- 總務管理功能總覽
- G 採購付款 — 生產用採購進貨
- H 庫存管理 — 入庫後的庫存影響
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/C-GeneralAffair/images/):
gputora-step1.png— 從 Gtrrama 延伸功能按鈕開啟本工具的入口gputora-step2.png— 條件區(Vendor/Warehouse/Receiving Date/Currency/FX Rate/Tax Code)+ Querygputora-step3.png— 明細格線(含 Receiving Quantity、Select、Destination Bin 與底部 All/None、SqlEditTurn)gputora-step4.png— Locked Source 頁籤(被鎖定明細與佔用者)