程式資訊
- 程式 ID:
GPPURCH - 所屬子系統:C.總務管理
- 狀態:stable
請購單(Purchase Request)¶
功能簡介¶
「請購單」是總務模組中提出採購需求的單據:使用單位把「要向哪家廠商、買什麼品號、買多少、預計什麼時候到」整理成一張單,作為後續開立採購單(PO)的依據。它對應舊版 VFP 的 PPURCH(採購別=1 的請購單),主檔記錄請購單號、請購日期、請購人員/部門、倉儲,明細逐列列出廠商、品號、數量、單價與預訂交期。
這支單據適合「廠商寫在每一筆明細列上」的請購情境(一張單可向多家廠商請購不同品項),與採購單(一張單一家廠商、一個幣別)分工不同。請購時可即時呼叫歷史報價/比價輔助填單價。
請購單 vs 其他總務單據
前置需求¶
- 權限:總務 →
C-040 請購單,依動作需要新增/修改/刪除/列印權限。檢視單價/比價另受AllowViewPrice權限控制(無此權限時所有單價與比價區一律不顯示)。 - 資料權限:若您的請購單號權限備註不含
ALL,瀏覽與查詢時只會看到自己部門(請購部門 = 登入者部門)的單據;含ALL才看得到全部。 - 基礎資料:填單前請先維護下列主檔,否則對應欄位會帶不出值——
| 資料 | 影響什麼 |
|---|---|
| 廠商主檔(SPDATA) | 明細廠商代號的搜尋與廠商簡稱帶值 |
| 品號主檔(SK_INVENT) | 明細品號搜尋、帶出品名/單位 |
| 廠商報價/採購歷史(GSPPDT 報價、採購單) | Price Query 比價清單與自動帶入的單價 |
| 部門 / 員工主檔 | 請購部門 / 請購人員的搜尋與簡稱 |
| 倉儲主檔 | 倉儲代號搜尋;新增時的預設值取自個人參數 3017 |
| 幣別主檔 | 明細幣別下拉與本位幣判定 |
操作步驟¶
新增請購單¶
- 按工具列
新增進入新單,系統自動帶入下列預設值(見欄位連動與附加功能):請購日期=今天、請購人員=登入者、請購部門=登入者部門、倉儲代號=個人參數3017、公司代碼=1、採購別=1。請購單號於存檔時由系統自動編號(唯讀)。 - 視需要修改請購日期、請購人員、請購部門、倉儲代號(這四欄各自獨立,改其中一欄不會連動其他欄)。
- 在明細區逐列輸入請購品項:
- 在廠商代號欄搜尋廠商,系統帶出廠商簡稱。
- 在品號欄搜尋品號,系統帶出品名與單位。
- 輸入請購數量。
- 需要參考行情時,按該列的
Price Query按鈕查歷史報價(見下節)。 - 確認或輸入單價;系統即時算出金額=單價 × 請購數量。
- 視需要填廠商品號、預訂交期、備註。
- 填寫主檔的請購備註(選填)。
- 按
儲存。存檔前系統會做必填檢核與明細整理(見欄位連動與附加功能)。
修改/刪除¶
- 用工具列翻頁鈕或
查詢定位到要處理的單據。 - 按
修改編輯。整張單已轉成採購單(主檔有轉出備註)時無法進入修改;單張可編輯但已轉成採購單的個別明細列無法編輯(該列已訂購數量 > 0時鎖定)。 - 不需要的明細列把品號或數量清空,存檔時會自動視為刪除(見下節)。
- 整張單作廢按
刪除。
列印¶
- 在要列印的單據上按
列印。 - 列印條件選
Print Collection,系統會自動帶入目前這張請購單號作為列印範圍。
報表樣式規劃中
程式內已預留中/英文請購單報表(Request_TW_ZH_A4、Request_US_EN_Letter)的掛載點,但目前在新版中尚未啟用(程式碼為註解狀態)。列印條件面板可正常設定,實際套版報表待後續補上。
查詢歷史報價(比價)¶
請購時要參考最近行情,有兩種方式,結果都顯示在畫面下方的 Bid 比價區:
- 切換明細列:點選任一明細列,系統自動載入「該品號、不同廠商的最新一筆報價」。
- 按
Price Query:以該列「品號+廠商」查「同一廠商的歷史報價與採購各最新 20 筆」,畫面自動切到比價頁籤並同步更新 Bid 區。
在 Bid 比價清單上按該列的「傳回」鈕,會把該筆報價的單價回填到目前明細列的單價。
欄位說明¶
主檔¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 請購單號 | 系統 | 唯讀,存檔時自動編號 |
| 公司代碼 | ✔ | 新增預設 1 |
| 請購日期 | ✔ | 格式 YYYY/MM/DD;新增預設今天;未填擋存檔 |
| 請購人員 | — | 員工搜尋;新增預設登入者 |
| 請購部門 | ✔ | 部門搜尋;新增預設登入者部門;未填擋存檔 |
| 倉儲代號 | ✔ | 倉儲搜尋;新增預設個人參數 3017;未填擋存檔 |
| 請購備註 | — | 自由文字 |
| 轉入備註 | 系統 | 唯讀,前手單據轉入時系統寫入(系統色顯示) |
| 轉出備註 | 系統 | 唯讀,轉成採購單後系統寫入(系統色顯示) |
| TotalQTY | 系統 | 唯讀,明細請購數量加總(即時) |
| Total Amount | 系統 | 唯讀,明細金額加總(即時,本幣顯示) |
明細¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 序號 | 系統 | 唯讀,存檔時依序重編 |
| 廠商代號 | ✔ | 廠商搜尋;帶出廠商簡稱 |
| 廠商簡稱 | 系統 | 唯讀,依廠商代號帶出 |
| 品號 | ✔ | 品號搜尋;帶出品名/單位 |
| 品名 | 系統 | 唯讀,依品號帶出 |
| 單位 | — | 下拉選擇(來源為單位清單) |
| 廠商品號 | — | 自由文字 |
| 請購數量 | ✔ | 數值;觸發金額重算與比價(離開欄位時生效) |
| Price Query | — | 按鈕,查該列品號的歷史報價/比價 |
| 單價 | — | 數值;可手填或由比價回填;觸發金額重算 |
| 幣別 | — | 唯讀文字顯示;新增時帶入本位幣 |
| 金額 | 系統 | 唯讀,=單價 × 請購數量(本位幣小數位四捨五入) |
| 預訂交期 | — | 日期;唯讀顯示;存檔時若空白自動帶今天 |
| 備註 | — | 自由文字 |
| 已訂購數量 | 系統 | 唯讀,已轉採購單的數量;>0 時該列鎖定不可編輯 |
欄位連動與附加功能¶
這一節把「輸入某欄位/按某按鈕後系統會做什麼」逐條列出,全部依實際程式行為整理。
新增時的預設值(AfterAddNew)¶
按 新增 後,系統會自動帶入:
- 請購日期 = 今天(
YYYY/MM/DD)。 - 採購別 = 1(請購單固定為此類別,影響存檔時的空列判定邏輯)。
- 請購人員 = 登入者代號。
- 請購部門 = 登入者部門。
- 倉儲代號 = 個人參數
3017設定的值。 - 公司代碼 = 1。
- 既有明細列的幣別全部帶為本位幣(
LocalCurrency)。
品號 → 品名 / 單位(品號Binding)¶
在明細品號欄選定品號後,系統透過品號描述服務(SetISKU)自動帶出該品號的品名與單位,不需手動輸入。
數量 / 單價 → 金額(SetAmount)¶
只要修改明細的請購數量或單價(離開欄位時生效),系統就會重算該列:
- 金額 = 單價 × 請購數量(依本位幣小數位四捨五入)。
- 同時連動內部的預估金額 = 預估單價 × 請購數量。
為什麼用「請購數量」算金額
新版 UI 把舊版 VFP 的「數量/需求數量」兩欄合併為單一可輸入的請購數量欄。金額一律跟著請購數量計算,因此只要請購數量為 0,金額就會是 0。
即時加總(TotalQTY / Total Amount)¶
- 改任一列的請購數量 → 主檔 TotalQTY 立即重算為所有明細請購數量總和,並順帶觸發該列的比價查詢。
- 任一列金額變動 → 主檔 Total Amount 立即重算為所有明細金額總和。
這兩個值唯讀、即時更新,不需手動按鈕。
Price Query 按鈕 / 切換明細列 → 歷史報價與比價¶
請購單的比價來源是廠商報價(GSPPDT)與歷史採購,透過後端 SP TWORK_BIZ_GSPPDT 取得,受 AllowViewPrice 權限控制:
- 點選明細列:系統以該品號查「不同廠商、單一品號的最新一筆報價」,結果顯示在下方 Bid 比價區(查詢類別 1)。切換到沒有品號的列時,比價區清空。
- 按
Price Query:以該列「品號+廠商代號」查「同一廠商、單一品號」的歷史資料,報價單與採購單各取最新 20 筆(查詢類別 2);畫面自動切到比價(特殊查詢)頁籤,並同步更新 Bid 區。 - 比價清單每筆會標示來源類別:
1.Purchasing(採購歷史)或2.Quotation(報價)。 - 查詢日期預設取主檔請購日期(沒有主檔時取今天)。
報價回填單價¶
- Bid 區「傳回」鈕:在比價清單按某筆的「傳回」,系統把該筆報價的單價回填到目前明細列的單價(僅在編輯模式有效)。
- 自動帶價(
Price Query同廠商查詢時):查同廠商歷史後,系統會依個人參數6006(採購/報價來源優先序)與6010(報價有效天數)篩出有效報價,預設帶入有效報價中最新一筆的單價;若該列另有內部「數量」門檻值,再從符合門檻的報價中找「最大最低採購量」的那筆(通常量大價低)帶入。
比價/單價需要權限
上述所有比價與自動帶價,都只在帳號具備 AllowViewPrice(檢視單價)權限時才會運作;無權限時 Bid 區與單價相關欄位不顯示資料。
切換單據時清空比價(AfterMoverRecord)¶
翻頁切換到另一張請購單時,系統會把特殊查詢區與 Bid 比價區清空,避免顯示到上一張單的比價資料。
存檔檢核與明細整理¶
按 儲存 時,系統依序執行(對應 VFP allowsave):
- 必填檢核(任一未填即擋存並提示):
- 請購日期 未輸入。
- 請購部門 未輸入。
- 倉儲代號 未輸入。
- 明細整理(
HandleDataBeforeEndEdit):- 重新計算每列金額(
SetAmount)。 - 需求部門空白的列,自動帶入主檔的請購部門。
- 採購別=1(請購單)時,請購數量為 0 或品號空白的列,自動標記為刪除。
- 預訂交期空白的列,自動帶為今天。
- 重新計算每列金額(
編輯/刪除限制¶
- 整張單已轉出時不可進入修改(
AllowEditHandle):主檔轉出備註有值(代表本單已轉成採購單)時,按修改會發出提示音並擋下,整張單不可編輯。 - 明細列的
已訂購數量 > 0(已轉成採購單)時該列鎖定,不可編輯(CanEdit)。 - 品號與品名皆空白、或廠商代號空白的明細列,視為需刪除(
NeedDeleteFunction)。
舊版功能對照(規劃中/未提供)¶
舊版 VFP PPURCH 有下列功能,新版目前的請購單畫面尚未提供,填單時請改用對應的獨立程式或暫以人工處理:
VFP 有、新版尚未提供
- 主檔層廠商/幣別/匯率/稅別、反推稅率、反推未稅價:本版採「廠商寫在明細列」模式,主檔不放廠商與稅率欄,故沒有反推稅/反推未稅按鈕。
- 期別(本期/下一期/下二期)、詢比議記錄、流程樣板:未移植。
取消採購/轉訂單(請購單轉採購單) /請購建議:舊版工具列按鈕在本版尚未提供。快速審核/工作流程按鈕、附件(需求聯絡單):請改走系統集中式的簽核與附件機制。- 主檔層的廠商比價表(grid2):本版以下方 Bid 比價區呈現明細層比價。
常見問題¶
存檔時一直被擋,說某欄位未輸入?
請購單存檔的三個必填欄是請購日期、請購部門、倉儲代號。新增時這三欄都有預設值(今天、登入者部門、個人參數 3017),若被清空就會擋存。把缺的欄位補回即可。
明細列的金額一直是 0?
金額=單價 × 請購數量。最常見原因是請購數量為 0(金額必為 0),或單價尚未填入。請確認該列同時有請購數量與單價,且輸入後有離開欄位(金額在離開數量/單價欄時才重算)。
看不到單價、也按不出比價(Bid 區空白)?
所有單價顯示與比價(Bid 區、Price Query、自動帶價)都受檢視單價權限(AllowViewPrice)控制。若您的帳號沒有這個權限,這些區塊不會出現資料;請洽系統管理員調整權限。
按 Price Query 查不到任何報價?
比價來源是廠商報價與歷史採購。請確認:該品號有對應廠商的報價或採購紀錄、報價日期在有效範圍內(受個人參數 6010 報價有效天數限制),且查詢日期(取自請購日期)落在報價生效區間。若都沒有歷史,清單就會是空的,需手動填單價。
某些明細列改不動、灰掉了?
明細列一旦已轉成採購單(已訂購數量 > 0)就會鎖定不可編輯,以維持與採購單的勾稽。若要調整,請從對應的採購單或退單流程處理,而非直接改請購單。
查詢只看得到自己部門的單,看不到別部門的?
這是資料權限設計:請購單號權限備註若不含 ALL,瀏覽與查詢時會自動加上「請購部門=登入者部門」的篩選。需要跨部門檢視請申請含 ALL 的權限。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/C-GeneralAffair/images/):
gppurch-step1.png— 新增請購單、主檔預設值帶入後的全貌gppurch-step2.png— 明細區輸入廠商/品號/數量/單價(含金額自動計算)gppurch-step3.png—Price Query比價結果與下方 Bid 區(含「傳回」回填單價)gppurch-step4.png— 列印條件Print Collection帶入請購單號的條件面板