跳轉到

程式資訊

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

採購轉進貨

功能簡介

「採購轉進貨」(GPUTORA)是一支批次轉單工具:依「廠商+倉庫+幣別」條件,把該廠商尚未進貨完成的採購單明細一次撈出來,讓使用者填上本次進貨量與目的儲位後,直接產生一張雜項進貨入庫單(雜項進貨入庫(Gtrrama),省去逐筆手動輸入進貨明細的工。

它不是獨立的主選單表單,而是從 雜項進貨入庫(Gtrrama) 工具列的延伸功能(其他功能)按鈕開啟的彈出視窗(視窗標題 General Purchasing to Receiving)。轉檔成功後,系統會自動把 Gtrrama 主畫面移到剛產生的那張進貨單,接著就能在 Gtrrama 補表頭(發票、報關、付款條件)與進口費用、再正式存檔。

主要使用者是總務/倉管人員。在流程中的位置:採購下單(採購單(Gpurch))→ 收貨時用本工具批次帶料 → 在 Gtrrama 完成進貨入庫與成本分攤

與雜項進貨入庫是同一張單的兩段

本工具產生的就是一張 Gtrrama 進貨單(共用 GTRRAMA 的上傳資料表 Twork_gen_vw_gtrramaTwork_gen_vw_gtrradeTwork_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 CodeCurrency
  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(AfterSavePkid),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 切換整列收/不收,或用 AllNone 一次套用全部。

轉檔後資料在哪裡?要去哪裡補表頭與費用?

轉檔產生的是一張 雜項進貨入庫(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 頁籤(被鎖定明細與佔用者)