跳轉到

程式資訊

  • 程式 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。

操作步驟

開啟工具

  1. 進入 雜項進貨入庫(Gtrrama)。
  2. 按工具列的延伸功能(其他功能)按鈕,開啟「Purchasing To Receiving」視窗。

本工具是 Gtrrama 的子視窗

本工具沒有自己的主選單入口,一律從 Gtrrama 開啟。關閉視窗後若已轉檔成功,Gtrrama 會自動導航到剛產生的進貨單。

步驟① 設定查詢條件(上方條件區)

  1. 輸入 Vendor Code(廠商代號)。輸入後右側自動帶出廠商簡稱,並依廠商主檔自動帶入 Tax Code 與 Currency。
  2. 輸入 Warehouse(入庫倉庫)。預設帶入系統參數 4001 設定的預設倉庫。
  3. 確認 Receiving Date(進貨日期)。預設為今天(短日期格式)。
  4. 確認 Currency(幣別)與 FX Rate(匯率)。幣別預設本位幣、匯率預設 1;輸入廠商後 Currency 會被廠商幣別覆蓋。匯率須大於 0。
  5. 確認 Tax Code(稅別)。
  6. 按 Query(查詢)。系統撈出該廠商、此倉庫、此幣別下所有未交清的採購明細,列在中間資料表格。

查詢條件四項皆為必填

Warehouse、Receiving Date、Currency、FX Rate 任一缺漏或匯率 ≤ 0,查詢會被擋下並提示。Vendor Code 可空白,但通常會指定廠商以縮小範圍。

步驟② 勾選與調整進貨明細

查詢後,系統預設把每一列的 Receiving Quantity(本次進貨量)帶為「採購數量 − 已進貨數量」(即整批全收)。逐列依實收狀況調整:

  1. 修改 Receiving Quantity(本次進貨量)。填 0 代表本列不轉。
  2. 確認或修改 Destination Bin(目的儲位)。倉庫設定為「倉同儲」時自動帶入=倉庫代號;否則須自行從下拉選擇本倉庫下的儲位。
  3. 點該列的 Select 按鈕,可在「整列全收」與「歸零不收」之間快速切換。
  4. 想一次處理整批時,用底部的 All(全選=每列帶整批量)或 None(全部歸零)。

步驟③ 轉檔產生進貨單

  1. 按右下的 SqlEditTurn 儲存(轉檔)按鈕。
  2. 系統檢核通過後,把所有 Receiving Quantity > 0 的明細依廠商分組,每組產生一張進貨單主檔與其明細,寫入進貨單資料表。
  3. 視窗關閉後回到 雜項進貨入庫(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 儲存時:

  1. 倉庫/儲位檢核:非倉同儲模式下,凡進貨量 > 0 的列,Destination Bin 不可空白、且必須是有效儲位(比對儲位主檔),否則提示並擋存。
  2. 進貨量檢核:至少要有一列進貨量 > 0;且任一列不得超過容許上限——上限=(採購數量 − 已進貨數量)×(1 + 進貨容許比例 ReceivingLimits%)。超過會提示「進貨數量超過剩餘數量」並擋存。
  3. 產生進貨單:把進貨量 > 0 的列依廠商分組,每一組產生一張進貨單主檔(序號前置碼 RC、單據別 A、交易部門=廠商代號、交易日期=Receiving Date、隸屬倉庫、帶入幣別/匯率/稅別/稅率),組內每列產生一筆進貨明細(交易別碼 RA、串接來源採購明細 pkid、帶入轉入倉儲、品號、品名、預訂交期、單位、數量=進貨量、單價、含稅單價),逐列以幣別/匯率算金額(CalculateAllAmount),最後由 TaxCalculator 統一算稅額與含稅金額。
  4. 轉入備註自動寫入 Gputora,操作者,日期 以標示來源。
  5. 存檔成功後把新進貨單的 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 補發票/報關/付款條件等表頭與進口費用,再正式存檔、列印或轉傳票。

相關功能


需補截圖清單

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

  1. gputora-step1.png — 從 Gtrrama 延伸功能按鈕開啟本工具的入口
  2. gputora-step2.png — 條件區(Vendor/Warehouse/Receiving Date/Currency/FX Rate/Tax Code)+ Query
  3. gputora-step3.png — 明細資料表格(含 Receiving Quantity、Select、Destination Bin 與底部 All/None、SqlEditTurn)
  4. gputora-step4.png — Locked Source 頁籤(被鎖定明細與佔用者)