程式資訊
- 程式 ID:
CHKRA - 所屬子系統:M.主管資訊
- 狀態:stable
標準成本與進貨比較¶
功能簡介¶
「標準成本與進貨比較」把一段期間內每個品號的實際進貨單價(依進貨單明細彙總)和品號主檔登錄的標準成本擺在同一列比對,讓採購、成本或主管快速看出「最近進的料比標準成本貴還是便宜、期間內最高/最低/平均各買到多少」。
它是唯讀的查詢報表:以品號區間+進貨交易日期區間為條件,每個品號彙整成一列,不做任何單據維護。常見用途是月底覆核採購單價是否偏離標準成本、或抓出價差過大的料號做議價/改標準成本的依據。
資料來源
比對的是進貨單(暫收/驗收進貨,VFP trrama 主檔 + trrade 明細),單價一律換算成本幣(進貨單價 × 單據匯率)再和標準成本比較。標準成本取自品號主檔(invent.標準成本)。
前置需求¶
- 權限:M.主管資訊 →
M-100 標準成本與進貨比較的瀏覽(及列印)權限。 - 基礎資料:查詢結果的完整與正確度取決於下列資料——
| 資料 | 影響的結果 |
|---|---|
| 進貨單(暫收/驗收,含明細單價、數量、本幣未稅、匯率) | 整份報表的資料來源;沒有進貨就查不到該品號 |
| 品號主檔的標準成本 | 標準成本欄與價差欄;未維護則顯示 0、價差等於負的最近單價 |
| 品號主檔的品名 | 品名欄 |
| 單據匯率 | 外幣進貨換算本幣單價(最近/最高/最低/平均皆受影響) |
後台 SP 需先登錄
本查詢透過後端預存程序 TWORK_QRY_CHKRA 取數。若該 SP 尚未在資料庫建立、或未在 proc_param 登錄,查詢會靜默回空(查不到資料也不報錯)。第一次部署後查無資料時,請先確認 SP 與登錄都已完成。
操作步驟¶
本表單只有「設定條件 → 查詢」一條動線,沒有新增/修改/刪除。
- 從主選單開啟 M.主管資訊 → 標準成本與進貨比較。
- 在左側條件面板填入查詢條件(各欄預設值見欄位說明):
- 起始品號/截止品號:預設
1~zzzz(涵蓋全部品號),可用品號放大鏡挑選縮小範圍。 - 進貨日期(起~訖):預設「今天往前 30 天 ~ 今天」,比對的是進貨單的交易日期。
- 起始品號/截止品號:預設
- 按工具列的
查詢,結果顯示在右側格線,每個品號一列。 - 需要時可:
- 在格線右鍵將結果匯出 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(對應 VFPInit的DATE()-30/DATE()與'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 與格線都不回傳單號,這是刻意的,不是漏掉。
無逐欄即時運算
本表單沒有 SetNewData/Calculate*/HandleDataBeforeEndEdit 之類的即時連動,也沒有 ExtensionFunction 擴充按鈕——所有計算都集中在後端 SP,前端只負責顯示。若需重算,改條件後再按一次 查詢 即可。
常見問題¶
查詢後完全沒有資料?
先確認三件事:(1) 起訖品號與起訖日期區間內確實有進貨單(暫收/驗收);(2) 進貨單的交易日期落在你輸入的日期區間內;(3) 後端 SP TWORK_QRY_CHKRA 已建立並在 proc_param 登錄——未登錄時查詢會靜默回空,不會跳錯誤訊息。
標準成本顯示 0,價差變成一個很大的負數?
標準成本取自品號主檔。若該品號主檔沒有維護標準成本(為 0),價差就會是「0 − 最近單價」=負的最近單價。請到品號主檔補上標準成本後再查。
平均單價跟最近單價差很多,哪個才對?
兩者算法不同,都對:最近單價只看期間內最後一筆進貨的本幣單價;平均單價是整段期間 Σ本幣未稅 ÷ Σ數量。期間內單價波動大、或最後一筆量很小時,兩者就會差很多。判斷是否偏離標準成本時,價差是用「最近單價」算的。
外幣進貨的單價看起來和進貨單上的不一樣?
格線顯示的是本幣單價(原幣單價 × 該進貨單匯率),不是原幣單價,方便不同幣別一起比較。若要核對原幣,請回該張進貨單查看。
為什麼最高價數量/最低價數量只是某一筆的量,不是加總?
這三個數量欄位記的是「達到該最近/最高/最低單價的那一筆進貨數量」,用來看極值是發生在大單還是小單。若要看期間總進貨量,請以平均單價的分母(Σ數量)為準,或匯出 Excel 自行加總。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/M-EIS/images/):
chkra-step1.png— 條件面板(起訖品號、進貨日期起訖)chkra-step2.png— 查詢結果格線(含標準成本、最近/最高/最低/平均單價與價差各欄)