跳轉到

程式資訊

  • 程式 IDCHKRA
  • 所屬子系統:M.主管資訊
  • 狀態:stable

標準成本與進貨比較

功能簡介

「標準成本與進貨比較」把一段期間內每個品號的實際進貨單價(依進貨單明細彙總)和品號主檔登錄的標準成本擺在同一列比對,讓採購、成本或主管快速看出「最近進的料比標準成本貴還是便宜、期間內最高/最低/平均各買到多少」。

它是唯讀的查詢報表:以品號區間+進貨交易日期區間為條件,每個品號彙整成一列,不做任何單據維護。常見用途是月底覆核採購單價是否偏離標準成本、或抓出價差過大的料號做議價/改標準成本的依據。

資料來源

比對的是進貨單(暫收/驗收進貨,VFP trrama 主檔 + trrade 明細),單價一律換算成本幣(進貨單價 × 單據匯率)再和標準成本比較。標準成本取自品號主檔(invent.標準成本)。

前置需求

  • 權限:M.主管資訊 → M-100 標準成本與進貨比較 的瀏覽(及列印)權限。
  • 基礎資料:查詢結果的完整與正確度取決於下列資料——
資料 影響的結果
進貨單(暫收/驗收,含明細單價、數量、本幣未稅、匯率) 整份報表的資料來源;沒有進貨就查不到該品號
品號主檔的標準成本 標準成本欄與價差欄;未維護則顯示 0、價差等於負的最近單價
品號主檔的品名 品名
單據匯率 外幣進貨換算本幣單價(最近/最高/最低/平均皆受影響)

後台 SP 需先登錄

本查詢透過後端預存程序 TWORK_QRY_CHKRA 取數。若該 SP 尚未在資料庫建立、或未在 proc_param 登錄,查詢會靜默回空(查不到資料也不報錯)。第一次部署後查無資料時,請先確認 SP 與登錄都已完成。

操作步驟

本表單只有「設定條件 → 查詢」一條動線,沒有新增/修改/刪除。

  1. 從主選單開啟 M.主管資訊 → 標準成本與進貨比較
  2. 在左側條件面板填入查詢條件(各欄預設值見欄位說明):
    1. 起始品號/截止品號:預設 1zzzz(涵蓋全部品號),可用品號放大鏡挑選縮小範圍。
    2. 進貨日期(起~訖):預設「今天往前 30 天 ~ 今天」,比對的是進貨單的交易日期
  3. 按工具列的 查詢,結果顯示在右側格線,每個品號一列。
  4. 需要時可:
    • 在格線右鍵將結果匯出 Excel
    • 用工具列的列印功能輸出報表(報表名 CHKRA)。

小技巧

改了條件後再按一次 查詢 即可重查,不必關閉視窗。日期欄位接受 yyyy/MM/dd 格式輸入。

欄位說明

查詢條件

欄位 必填 說明/格式/預設
起始品號 品號區間下界,預設 1;可用放大鏡查詢品號
截止品號 品號區間上界,預設 zzzz(搭配 1 即全部品號)
進貨日期(起) 比對進貨單交易日期,格式 yyyy/MM/dd,預設今天 − 30 天
進貨日期(訖) 比對進貨單交易日期,格式 yyyy/MM/dd,預設今天

查詢結果(每品號一列)

欄位 說明
品號 進貨明細的品號
品名 取自品號主檔
標準成本 品號主檔登錄的標準成本(比較基準)
最近單價 期間內最後一筆進貨的本幣單價(進貨單價 × 匯率)
最近數量 該「最近一筆」進貨的數量
平均單價 期間內 Σ本幣未稅 ÷ Σ數量,四捨五入到小數 4 位
價差 標準成本 − 最近單價(正值表示比標準成本便宜,負值表示買貴)
最高單價 期間內本幣單價最高的一筆
最高價數量 該最高單價那筆的進貨數量
最低單價 期間內本幣單價最低的一筆
最低價數量 該最低單價那筆的進貨數量

單價皆為本幣

格線中所有「單價」欄都是換算後的本幣金額(原幣單價 × 該進貨單匯率),方便不同幣別的進貨直接比較。最近數量/最高價數量/最低價數量是那一筆進貨的數量,不是期間累計量。

欄位連動與附加功能

這支表單是純查詢,畫面上沒有逐欄即時連動的輸入控制;真正的「連動」發生在按下 查詢 之後,由後端 SP TWORK_QRY_CHKRA 依條件彙算每一欄。以下說明每欄怎麼被算出來,對應 VFP chkra查詢鈕.Click 與新版 SP 邏輯:

  • 當你開啟視窗,系統會帶入預設條件:日期帶「今天 − 30 天 ~ 今天」、品號帶 1 ~ zzzz(對應 VFP InitDATE()-30DATE()'1''zzzz')。可直接按查詢,或先改條件。

  • 當你按 查詢,系統會撈這段資料:以「進貨主檔 trrama ⨝ 進貨明細 trrade ⨝ 品號主檔 invent」為來源,篩出品號介於起訖品號交易日期介於起訖日期的所有進貨明細,再依品號分組彙算。

  • 每筆進貨的本幣單價 = 進貨單價 × 該單匯率。後續最近/最高/最低/平均都以這個本幣單價為基礎,所以外幣進貨會自動換算成本幣再比較。

  • 最近單價/最近數量怎麼決定:取該品號期間內最後一筆進貨。新版 SP 明確以「交易日期 DESC、pkid DESC」取最近一筆(語意=時間最近的進貨);VFP 原版是掃描到品號群組最後一列(只 ORDER BY 品號,等於實體序)後 SKIP -1 取倒數,兩者語意一致。

  • 最高單價/最低單價怎麼決定:在該品號的所有本幣單價中取極值。最高價數量/最低價數量是落在該極值那一筆進貨的數量(不是把所有同價的數量加總)。平手時取較早的一筆。

  • 平均單價 = Σ本幣未稅 ÷ Σ數量,四捨五入到 4 位。若期間內該品號總數量為 0,分母改用 1(沿用 VFP IIF(數量=0,1,數量) 防除零)。注意平均用的是本幣未稅金額,和「最近/最高/最低單價」用的「單價×匯率」是兩條不同的計算路線。

  • 價差 = 標準成本 − 最近單價。正值代表最近進的料比標準成本便宜,負值代表買貴了。價差只跟「最近單價」比,不是跟平均單價比。

  • 格線結果可匯出 Excel:在結果格線上右鍵即可匯出(對應 VFP 條件面板的 Excel 按鈕,匯出檔名為「標準成本與進貨單價比較」)。

  • 列印:本程式登錄的報表名為 CHKRA

VFP 有、但新版未呈現的欄位

VFP 查詢有撈出進貨單號a.單號),但它在 VFP 裡從頭到尾沒被使用(dead column),新版 SP 與格線都不回傳單號,這是刻意的,不是漏掉。

無逐欄即時運算

本表單沒有 SetNewDataCalculate*HandleDataBeforeEndEdit 之類的即時連動,也沒有 ExtensionFunction 擴充按鈕——所有計算都集中在後端 SP,前端只負責顯示。若需重算,改條件後再按一次 查詢 即可。

常見問題

查詢後完全沒有資料?

先確認三件事:(1) 起訖品號與起訖日期區間內確實有進貨單(暫收/驗收);(2) 進貨單的交易日期落在你輸入的日期區間內;(3) 後端 SP TWORK_QRY_CHKRA 已建立並在 proc_param 登錄——未登錄時查詢會靜默回空,不會跳錯誤訊息。

標準成本顯示 0,價差變成一個很大的負數?

標準成本取自品號主檔。若該品號主檔沒有維護標準成本(為 0),價差就會是「0 − 最近單價」=負的最近單價。請到品號主檔補上標準成本後再查。

平均單價跟最近單價差很多,哪個才對?

兩者算法不同,都對:最近單價只看期間內最後一筆進貨的本幣單價;平均單價是整段期間 Σ本幣未稅 ÷ Σ數量。期間內單價波動大、或最後一筆量很小時,兩者就會差很多。判斷是否偏離標準成本時,價差是用「最近單價」算的

外幣進貨的單價看起來和進貨單上的不一樣?

格線顯示的是本幣單價(原幣單價 × 該進貨單匯率),不是原幣單價,方便不同幣別一起比較。若要核對原幣,請回該張進貨單查看。

為什麼最高價數量/最低價數量只是某一筆的量,不是加總?

這三個數量欄位記的是「達到該最近/最高/最低單價的那一筆進貨數量」,用來看極值是發生在大單還是小單。若要看期間總進貨量,請以平均單價的分母(Σ數量)為準,或匯出 Excel 自行加總。

相關功能


需補截圖清單

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

  1. chkra-step1.png — 條件面板(起訖品號、進貨日期起訖)
  2. chkra-step2.png — 查詢結果格線(含標準成本、最近/最高/最低/平均單價與價差各欄)