程式資訊
- 程式 ID:
GSPPDT - 所屬子系統:C.總務管理
- 狀態:stable
廠商報價單(Vendor Quotation)¶
功能簡介¶
「廠商報價單」用來記錄某一家廠商針對若干品號所提出的報價,內容含材料價、代工價、最低採購量、幣別/匯率與活動有效期間。一張報價單=一個 Master(廠商+報價條件)+多筆 Detail(逐一品號的單價)。
這份資料是後續採購流程的單價來源:在暫收(進貨)單、請購單以及本頁自己的 Price Query(查價)功能裡,系統都會回頭查這裡建立的廠商報價,把最新單價帶到單據上。維護人員通常是採購或總務人員。
資料表與舊版對應
本頁對應 VFP 舊版的 gsppdt(G廠商報價)。新版 Master/Detail 分別走 Twork_gen_vw_gsppdtm 與 Twork_gen_vw_gsppdtd 兩個 view。儲存規則(必填欄位、幣別/匯率補值、空白明細自動刪除)皆按 VFP gsppdt.allowsave 還原。
前置需求¶
- 權限:C.總務 →
C-020 廠商報價單的新增/修改/刪除/瀏覽權限。其中單價欄位是否顯示另外受「查看單價」權限(AllowViewPrice)控制——沒有此權限時,下方Bid比價清單與右側歷史報價清單的單價欄會被隱藏、且自動帶價也不會作用。 - 基礎資料:報價單能否正確帶值,取決於下列主檔是否已維護——
| 資料 | 影響什麼 |
|---|---|
| 廠商主檔(含預設收付條件、幣別) | 輸入廠商代號後自動帶出廠商簡稱、收付條件號、幣別 |
| 收付條件主檔 | 收付條件號旁的說明文字 |
| 品號主檔 | Detail 輸入品號後帶出品名、單位等 |
| 幣別匯率(賣出匯率) | 匯率預設(TsCurrency 控件依報價日期帶當日賣出匯率) |
| 工程代號(製程)主檔 | Detail 的工程代號搜尋與帶值 |
系統參數 6006/6010 |
自動挑價的「依採購或依報價」與「報價有效天數」門檻(見 欄位連動與附加功能) |
操作步驟¶
新增報價單¶
- 按工具列
新增,系統建立一張空白 Master,並自動帶入預設值(見 新增時的預設值):報價日期=今天、活動起始日=報價日期、報價人員=登入者帳號、幣別=本位幣、匯率=1。 - 輸入 廠商代號(可用放大鏡搜尋)。選定後系統自動帶出廠商簡稱、該廠商的收付條件號(含旁邊說明)與幣別。
- 視需要調整 報價日期、報價人員、聯絡人、報價備註、簽決單號。
- 設定 活動起始日:輸入後系統會自動把活動截止日帶為起始日 +30 天;兩者皆有值時自動算出有效天數。
- 確認 收付條件號、幣別、匯率。改幣別時
TsCurrency控件會依報價日期重新帶當日賣出匯率。 - 在下方明細格逐列加入品項:
- 輸入 品號(
TsGSKUSearchColumn可搜尋),系統帶出品名、單位等資料;此時若在編輯狀態,系統會自動觸發一次比價(見下節)。 - 輸入 廠商品號、單位、最低採購量、工程代號。
- 輸入 材料價 與 代工價,系統自動把 單價 算成「材料價+代工價」(單價欄唯讀,不能直接打)。
- 視需要填 內箱包裝數、關稅稅率、備註、特別要求。
- 輸入 品號(
- 按
儲存。儲存前的檢核與自動處理見 儲存前檢核與自動處理。
修改 / 刪除¶
- 用工具列的瀏覽/查詢功能切換到要處理的報價單。
- 按
修改進入編輯狀態後調整 Master 或 Detail 欄位,再儲存。 - 要刪除整張單按
刪除;要刪掉某一筆明細,把該列的品號與工程代號都清空,儲存時系統會自動把這種空白列標記刪除(見下節)。
小技巧
明細的 Price Query 欄有一顆查價按鈕,按下去可叫出該品號在同一廠商的歷史報價(切到右側特殊查詢頁)並同步更新下方 不同廠商最新報價 清單,方便縱向與橫向比價,還能一鍵把選定的價格帶回代工價。詳見 欄位連動與附加功能。
欄位說明¶
Master(報價單表頭)¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 報價單號 | 系統 | 主鍵,唯讀,由系統配號 |
| 報價日期 | ✔ | 新增時預設今天;同時是匯率與比價取值的基準日 |
| 報價人員 | — | 新增時預設登入者帳號,可改(使用者搜尋) |
| 廠商代號 | ✔ | 報價廠商;輸入後帶出簡稱/收付條件/幣別 |
| 廠商簡稱 | 自動 | 唯讀,依廠商代號帶出 |
| 聯絡人 | — | 自由輸入(≤30 字) |
| 有效天數 | — | 由活動起訖日自動算出,也可手動覆蓋 |
| 簽決單號 | — | 自由輸入(簽核單號參照,≤20 字) |
| 收付條件號 | ✔ | 預設帶廠商主檔的收付條件;旁邊顯示說明 |
| 幣別 | — | 新增預設本位幣;輸入廠商後改帶廠商幣別;空白儲存時補本位幣 |
| 匯率 | — | 新增預設 1;改幣別時依報價日期帶賣出匯率;≤0 儲存時補 1 |
| 活動起始日 | ✔ | 新增時預設=報價日期;輸入後自動帶截止日 |
| 活動截止日 | — | 預設=起始日 +30 天,可改 |
| 報價備註 | — | 最長 60 字 |
隱藏欄位
XAML 中公司代碼、COMEX / LME / RMB 等欄位目前以註解隱藏,畫面上不會出現(新增時公司代碼仍會被設為 1),本頁不再說明。Source 另有最低毛利率、頁首備註、聯絡單id、工作流程、已審核、審核日期、審核人員 等欄位,但畫面上未開放輸入或屬尚未啟用的審核流程(見未提供的功能)。
Detail(報價明細,逐一品號)¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 序號 | 系統 | 明細列序號,唯讀 |
| 品號 | ✔(與工程代號擇一) | 可搜尋;輸入後帶出品名、單位等 |
| 品名 | 自動 | 依品號帶出 |
| 廠商品號 | — | 廠商端對應的料號 |
| 單位 | — | 下拉選單(UOM 清單) |
| 最低採購量 | — | 整數;比價挑價時的數量門檻 |
| 工程代號 | ✔(與品號擇一) | 製程/工程代號,可搜尋 |
| Price Query | — | 查價按鈕欄,叫出比價清單(見下節) |
| 材料價 | — | 材料單價,會觸發單價重算 |
| 代工價 | — | 代工單價,會觸發單價重算 |
| 單價 | 自動 | 唯讀,=材料價+代工價 |
| 內箱包裝數 | — | 數量格式 |
| 關稅稅率 | — | 進口關稅率 |
| 備註 / 特別要求 | — | 自由輸入(各 ≤60 字) |
欄位連動與附加功能¶
這一節把「輸入某欄位/按某按鈕後系統會做什麼」逐條列出,全部來自實際程式碼。
新增時的預設值(AfterAddNew)¶
當你按 新增,系統自動帶入:
- 報價日期 = 今天。
- 活動起始日 = 報價日期(兩者一致;經
活動起始日Binding設定,連帶會把活動截止日帶為 +30 天)。 - 報價人員 = 登入者帳號(
Context.User.UserId)。 - 匯率 = 1、幣別 = 本位幣(
Context.Env.LocalCurrency)。 - 公司代碼 = 1(隱藏欄位)。
輸入廠商代號(Master)¶
當你在 廠商代號 填入或選定一家廠商(廠商代號Binding),系統會:
- 從廠商主檔讀回該廠商,帶出 收付條件號,並把對應的說明填到收付條件旁。
- 若廠商主檔有設幣別,把 Master 的 幣別 改成廠商幣別(匯率隨後由
TsCurrency控件依報價日期自動帶當日賣出匯率)。對應 VFPsqlnm_sp1.代號.LostFocus。 - 若查無此廠商,收付條件號 與 說明 會被清空。
活動起始日 → 活動截止日 → 有效天數(Master)¶
- 輸入 活動起始日(
活動起始日Binding)後,若可解析為日期,系統自動把 活動截止日 設為起始日 +30 天。 - 活動截止日 變動(不論自動帶或手動改,
活動截止日Binding)且起訖日皆可解析時,系統用「截止日 − 起始日」自動算出 有效天數。 - 因此一般操作只要填起始日,截止日與有效天數會接力算好;要不同期間時再手動覆蓋截止日即可。
材料價 / 代工價 → 單價(Detail)¶
- 單價 欄唯讀,由系統計算:單價 = 材料價 + 代工價(
SetUnitPrice)。 - 你修改 材料價(
材料單價Binding)或 代工價(代工單價Binding)任一欄,系統都會立即重算單價。直接編輯單價沒有意義(會被覆蓋)。
輸入品號(Detail)¶
- 輸入 品號(
品號Binding)後,系統透過品號主檔帶出品名、單位等資料(DescriptionHelper.SetISKU)。 - 同時,只要目前在編輯狀態,輸入品號會自動觸發一次比價查詢(等同按了該列的
Price Query):切到右側歷史報價頁、並更新下方Bid清單成「其他廠商對此品號的最新報價」。
VFP 的 MISC 特殊品號未沿用
VFP 舊版針對品號 MISC(雜項)有特例:品名/單位改為可手動輸入。新版沒有這個分支——品號帶出的品名與單位一律取自品號主檔。若要做雜項報價,請先在品號主檔建好對應品號。
Price Query 查價按鈕(Detail)¶
每列的 Price Query 按鈕(QueryCommand)會以目前 Master 的報價日期與廠商代號為條件查兩種比價:
- 歷史報價(同一廠商):切到右側「Historical Unit Price」特殊查詢頁,列出該品號在同一廠商的歷史報價(
GetHistoryUnitPrice,查詢別2.Quotation)。系統並會依最低採購量規則自動挑一個價格帶回(見下方自動挑價規則)。 - 不同廠商最新報價:更新畫面下方的
Bid清單(GetDifferentVendorLatestUnitPrice,查詢別1.Purchasing),列出各家廠商對此品號的最新報價,方便橫向比價。
資料來源
比價資料由 GppurchBll.GetUnitPrice(後端走 BIZ_GSPPDT / SP TWORK_BIZ_GSPPDT,VFP 對應 DARB_BIZ_SPUPXG)回傳,分別撈採購單(1.Purchasing)與報價單(2.Quotation)兩類。沒有選定明細列、或該列品號為空時不查(清單清空)。
切換/翻頁時清空比價清單¶
- 選定明細列改變時(
DetailSelectedItem):系統以新選列的品號+Master 報價日期重新查「不同廠商最新報價」更新Bid清單;若沒有選列則把Bid清單清空。 - 整張單翻頁(換報價單)時(
AfterMoverRecord):右側歷史報價與下方Bid清單都會被清空,避免顯示上一張單的比價結果。
Bid 清單的「Return」按鈕——把價格帶回¶
下方 Bid(與右側歷史報價)清單每列都有 Return 按鈕(ReturnCommand):
- 按下後,若目前在編輯狀態且有選定明細列,系統會把該筆比價的單價帶回。
- 重點:因為報價明細屬於
ISppdtUnitPrice,帶回的價格寫進的是 代工價(代工單價),而非直接寫單價;接著觸發「材料價+代工價」重算單價。也就是說,比價帶回的是代工部分,材料價維持你手動填的值。
自動挑價規則(同廠商歷史報價)¶
切到歷史報價時(SetUnitPriceByMinimum)系統會嘗試自動帶一個合適單價,規則為:
- 先依參數
6006(依採購或依報價)篩出對應來源,並用參數6010(有效天數)檢查報價是否仍在有效期內(生效日 + 有效天數 ≥ 基準日,CheckDateIsValid)。 - 在有效報價中,挑「最低採購量 ≤ 本列數量」的報價;其中取最低採購量最大的那筆(量越大通常單價越便宜)帶回代工價。
- 若沒有符合數量門檻的,就帶清單第一筆(最新)的價格。
- 此自動挑價只在編輯狀態下作用;非編輯狀態僅顯示清單供人工參考。
本列數量=最低採購量
程式裡明細的「數量」取自最低採購量欄(數量 => 最低採購量)。挑價時用這個值跟比價清單的最低採購量做門檻比較。
儲存前檢核與自動處理(GsppdtSave)¶
按 儲存 時,系統依 VFP gsppdt.allowsave 規則做:
- 必填檢核:廠商代號、報價日期、收付條件號、活動起始日 任一空白就擋下並提示。
- 幣別/匯率補值(
HandleDataBeforeEndEdit):幣別空白補本位幣;匯率 ≤ 0 補 1。 - 空白明細自動刪除:品號與工程代號都空白的明細列,儲存時自動標記刪除(增刪修=D),不會寫入。
未提供的功能(規劃中)
VFP 舊版本支表單在工具列另有 工作流程(送審 G報價單送審)、快速審核、列印(報表 GSPPDT_P)、附件 與已審核/審核日期/審核人員 等審核欄位。新版 GsppdtViewModel 目前沒有實作專屬列印報表(無 IPrintSource / GetReports)、工作流程送審、快速審核或附件功能。Master 雖保留「簽決單號」「工作流程」「已審核」等欄位,但完整審核工作流在本頁尚未開放操作。若日後需要,再行補強。
常見問題¶
單價欄不能輸入、改了沒反應?
單價是唯讀計算欄,等於「材料價 + 代工價」。請改去填 材料價 或 代工價,單價會自動重算。
輸入廠商後幣別 / 收付條件沒帶出來?
這兩個值來自廠商主檔。若廠商主檔沒設幣別,幣別會維持原值(新增時為本位幣);查無廠商時收付條件號與說明會被清空。請先確認廠商主檔資料完整。
明細品名 / 單位想自己打,但被帶值蓋掉?
新版品名與單位一律取自品號主檔(不像 VFP 的 MISC 雜項可手填)。若要做不在品號主檔內的雜項報價,請先在品號主檔建好對應品號再回來報價。
下方 Bid 比價清單是空的,或單價欄看不到?
兩個原因:(1)需先選定一筆有品號的明細列才會去查比價;沒品號、沒選列都不查。(2)單價欄的顯示受「查看單價」權限(AllowViewPrice)控制,沒有此權限時清單仍會列出但單價欄被隱藏、自動帶價也停用。
按 Price Query 沒有自動帶價?
自動挑價只在編輯狀態下作用,而且報價必須仍在有效期內(生效日 + 有效天數 ≥ 基準日,有效天數取自參數 6010),並符合參數 6006(依採購或依報價)的來源篩選。過期或來源不符的報價不會被自動帶回,但仍會顯示在清單供人工參考。
儲存時被擋住,說某欄位要輸入?
儲存必填四欄:廠商代號、報價日期、收付條件號、活動起始日。任一空白都會被擋。另外,品號與工程代號都空白的明細列會在儲存時被自動刪除,不算錯誤。
活動截止日 / 有效天數我不想用自動帶的值?
可以。系統只是在你輸入活動起始日時自動把截止日帶為 +30 天、並由起訖日算有效天數。帶值後你仍可手動改截止日或有效天數覆蓋。
相關功能¶
- 暫收(進貨)單——進貨時會回頭引用本頁建立的廠商報價單價
- 請購單——請購比價同樣參考本頁報價
- 採購單
- G出貨單
- 請購需求單
- 採購模組
- 基本資料(廠商 / 品號 / 收付條件 / 幣別匯率主檔)
- 回總務模組首頁
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/C-GeneralAffair/images/):
gsppdt-step1.png— 報價單表頭(廠商/日期/幣別/活動期間)全貌gsppdt-step2.png— 明細格輸入材料價/代工價後單價自動算出gsppdt-step3.png— Price Query 查價:右側歷史報價頁與下方 Bid 比價清單,含 Return 帶價