程式資訊
- 程式 ID:
CostCalculate - 所屬子系統:K.成本管理
- 狀態:stable
成本計算作業¶
功能簡介¶
「成本計算作業」是月底結算的核心工具,依指定年月把當期的進貨、領退料、人工費用等異動展開成各品號的單位成本,並回寫到成本主檔(COST)。它不是一張可新增明細的單據,而是一個精靈式(wizard)作業視窗,從成本主檔的延伸功能開啟,使用者照頁籤由左到右依序執行:先檢核當期資料是否齊全、再算成本、最後檢核計算結果。成本會計、財務人員在每月結帳前使用。
整個視窗共有四個頁籤,後一頁要等前一頁通過才會解鎖:
- 計算前檢核(Check Before Calculate) —— 跑一系列系統檢核項目,確認當期單據都正確、可以結算。
- SKU 階別檢核(SKU Rank Check) —— 重算 BOM 低階碼並比對製令用料的階別關係(此頁目前在 XAML 中設為隱藏,見下方說明)。
- 計算成本(Calculate Cost) —— 按一鍵交給 SQL 結算引擎完整算完當期成本。
- 計算後檢核(Check After Calculate) —— 結算完再跑一輪檢核,確認金額、傳票都正確。
本作業沒有獨立選單
成本計算作業沒有自己的程式代碼(ProgramClass),它是成本主檔的延伸功能。請先進入成本主檔,再以延伸功能開啟本視窗。權限、選單位置都跟著成本主檔走。
前置需求¶
- 權限:本視窗權限掛在成本主檔(
COST)底下;能進入成本主檔並使用其延伸功能即可開啟。 - 基礎/當期資料:成本能否算對、能否算得出來,取決於下列資料的維護狀況——
| 資料 | 影響的結果 |
|---|---|
| 當期進貨、退貨單據 | 進貨成本計算、計算前檢核是否通過 |
| 領料/退料異動(TRLIMA 製令領退料) | 當期領用成本、計算前檢核明細(IT Document 區) |
| BOM 與低階碼 | SKU 階別檢核、成本由低階往高階逐層展開 |
| 人工/費用分攤資料 | 人工成本分攤(Labor Cost)結果 |
系統檢核項目設定(K-020* 檢核碼) |
計算前/後兩輪檢核要跑哪些項目 |
同一年月只能算一次
若指定年月已經算過成本(成本主檔已有該期資料),按 Calculate 會跳出「Already calculate cost」並中止。需要重算時,必須先清除該期既有成本資料。
操作步驟¶
步驟① 輸入年月¶
- 視窗最上方輸入 Year And Month(年月),格式
yyyy/MM,預設帶入今天所在的年月。 - 年月一旦通過計算前檢核就會鎖定唯讀,避免算到一半換期別。
步驟② 計算前檢核(Check Before Calculate)¶
- 按
Check,系統撈出該期所有「計算前」檢核項目(檢核碼K-020*、且設定為計算前檢核)逐項執行。 -
結果顯示在檢核清單格線:
欄 內容 Check Item 檢核項目代碼(SystemCheckItemNo) Description 檢核項目說明 Output 執行結果, OK才算通過 -
任一項不是
OK,該列會以紅底標示(NotOkHintRow樣式)。點選某一檢核列,下方格線會展開該項的異常明細,協助你找出哪幾筆單據有問題。 - 最下方「IT Document」區列出當期的領退料異動(WHTransaction No/SKU/數量/單位成本/倉庫/儲位/批號等)。其中 Unit Cost(單位成本) 欄可編輯,供人工補單價。
- 改完單位成本後按
Save,系統把這些異動以「使用者輸入」標記回寫(單據別 TRLIMA)。
全部 OK 才會解鎖下一步
當所有計算前檢核都 OK,系統會自動解鎖「SKU 階別檢核」與「計算成本」兩個頁籤,並把年月鎖成唯讀。有任何一項不過,後續頁籤維持鎖定。
步驟③ SKU 階別檢核(SKU Rank Check)¶
此頁目前隱藏
在現行 XAML 中,「SKU Rank Check」頁籤被設為 IsEnabled=False 且 Visibility=Collapsed,正常流程不會經過此頁,成本展開的低階碼由步驟④的 SQL 引擎內部處理。以下為此頁籤保留的功能,供日後啟用時參考。
此頁籤用三個依序按的按鈕重算並檢核 BOM 低階碼:
1.Calculate SKU Rank:重算各 SKU 的新低階碼,結果列在 SKU Rank 格線;找不到階別的 SKU 會列在「SKU Rank Is Empty」欄。2.Check SKU Rank:比對製令的生產品與用料品階別關係,異常列在 ChkTrwks 格線(含錯誤訊息 ErrorMessage)。3.Upload To Server:檢核通過後把新低階碼上傳回伺服器,並解鎖「計算成本」頁。
步驟④ 計算成本(Calculate Cost)¶
- 視需要勾選 Auto Closing Book(自動關帳),預設勾選。勾選時結算完成會一併執行自動關帳。
- 按
Calculate,系統交給 SQL 結算引擎(TWORK_LOG_COSTING)一次跑完整個成本計算流程,並把 Auto Closing Book 勾選狀態當參數傳入。 - 計算進度顯示在主視窗下方狀態列。
- 完成跳「Calculate Completed」;若引擎回
NG,跳出「Failed,<原因>」並中止,請依訊息排除後重算。
步驟⑤ 計算後檢核(Check After Calculate)¶
- 按
Check,系統撈出所有「計算後」檢核項目(檢核碼K-020*、設定為計算後檢核)逐項執行。 - 欄位與紅底邏輯同步驟②;點選某一列同樣可在下方看到該檢核項的異常明細。
- 全部
OK表示本期成本結算正確,可進入後續傳票成本計算與過帳。
欄位說明¶
主視窗¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| Year And Month(年月) | ✔ | 結算期別,格式 yyyy/MM,預設今天年月;通過計算前檢核後鎖定唯讀 |
計算前/後檢核清單¶
| 欄位 | 可編輯 | 說明 |
|---|---|---|
| Check Item | — | 檢核項目代碼(K-020* 系列) |
| Description | — | 檢核項目說明 |
| Output | — | 執行結果,OK=通過;非 OK 整列紅底 |
IT Document(計算前檢核下方領退料明細)¶
| 欄位 | 可編輯 | 說明 |
|---|---|---|
| WHTransaction No | — | 領退料單號 |
| Transaction Date | — | 異動日期 |
| SKU/Quantity | — | 品號與數量 |
| Unit Price | — | 單價(四位小數) |
| Unit Cost | ✔ | 單位成本,可人工補值;Save 後以「UserInput」回寫 |
| Warehouse/Source Bin/Destination Bin | — | 倉庫與來源/目的儲位 |
| Lot Code/Lot Num | — | 批號資料 |
| Cost | — | 該筆異動成本 |
計算成本頁¶
| 欄位 | 必填 | 說明/預設 |
|---|---|---|
| Auto Closing Book(自動關帳) | — | 勾選時計算完一併關帳,預設勾選 |
欄位連動與附加功能¶
這一節把「按某顆按鈕/輸入某欄位後系統實際會做什麼」逐條寫清楚,全部對應真實程式碼。
計算前檢核頁¶
- 按
Check(計算前檢核),系統會:- 依年月撈出所有計算前檢核項目(檢核碼
K-020*且CheckForCost='0'),逐項呼叫對應檢核 SP(TWORK_CHECK_<檢核碼>),把結果寫進每列的 Output。 - 撈出當期領退料暫存(
TWORK_ADT_COST1)填到下方「IT Document」格線。 - 只有當每一項檢核都回
OK,才會把「SKU 階別檢核」「計算成本」兩個頁籤的TabIsEnabled設為 true、並把年月設成唯讀;任一項不過則後續頁籤維持鎖定。
- 依年月撈出所有計算前檢核項目(檢核碼
- 某列檢核非 OK,該列以
NotOkHintRow樣式整列紅底;點選該列時,下方明細格線(自動產生欄位)會即時帶出該檢核項的異常明細 DataTable,讓你直接看到是哪幾筆資料卡關。 - 在 IT Document 修改 Unit Cost 後按
Save,系統會把每一筆領退料異動標記為「UserInput」、增刪修設為E,以單據別 TRLIMA 透過上傳機制回寫資料庫;成功跳「Save Completed」,失敗跳「Save Failed」。若清單為空則直接略過不動作。
計算成本頁¶
- 按
Calculate,系統會:- 先檢查該年月成本主檔是否已有資料;已算過會跳「Already calculate cost」並中止(同期不可重算)。
- 未算過則呼叫 SQL 結算引擎(
TWORK_LOG_COSTING),把 Auto Closing Book 勾選狀態當參數傳入(勾選=關帳旗標1)。 - 引擎回傳結果字串:開頭含
NG視為失敗,跳「Failed,<原因>」;否則跳「Calculate Completed」。 - 計算成功後解鎖「計算後檢核」頁。
- Auto Closing Book 連動:此勾選只在按
Calculate當下讀取,決定結算完是否自動關帳;計算前修改沒有即時效果,要在按下計算前設定好。
舊版逐步計算流程(已停用)
程式內保留一段舊版 OldCalculate,把成本拆成清資料→算進貨→撈當期→人工分攤→算本期→產生明細→SKU 轉檔七步、各步在狀態列顯示進度(如「2.Calculating receiving cost」),並有 Upload 按鈕分批上傳。現行版本已改走步驟④的單一 SQL 引擎一次算完,這段逐步流程與其上傳鈕不在現行畫面操作路徑上。
計算後檢核頁¶
- 按
Check(計算後檢核),系統撈出所有計算後檢核項目(K-020*且CheckForCost='1'),逐項呼叫TWORK_CHECK_<檢核碼>,把結果寫進 Output;紅底與點列看明細的行為同計算前檢核頁。
結束¶
- 按右上角的離開鈕(Exit),直接關閉本視窗回到成本主檔。
常見問題¶
按 Calculate 跳「Already calculate cost」算不下去?
表示該年月的成本主檔已經有資料、本期已經算過。系統不允許同一年月重複計算。若確實要重算,須先清除該期既有成本資料後再執行。
計算成本/SKU 階別檢核頁籤是灰的點不動?
這兩個頁籤要等計算前檢核全部 OK 才會解鎖。請先回「Check Before Calculate」頁按 Check,把所有紅底的檢核項排除到全部顯示 OK。
計算前檢核某項一直不是 OK,怎麼找出問題?
點選那一列紅底的檢核項,下方明細格線會帶出該檢核項抓到的異常資料(哪幾筆單據/品號)。依明細回頭修正對應單據後,再按一次 Check 重檢。
在 IT Document 改了 Unit Cost 沒有反映到成本?
修改單位成本後必須先按 Save 把異動回寫(標記為 UserInput),才會被後續的成本計算採用;只改格線不存檔不會生效。另外存檔只在清單有資料時才動作。
找不到「SKU Rank Check」頁籤?
該頁籤目前在程式中設為隱藏(Collapsed),正常結算流程不會用到,低階碼由計算引擎內部處理,屬於正常情形,不是缺漏。
相關功能¶
- 成本主檔(本作業由其延伸功能開啟)
- 移動平均成本
- 專案成本
- 成本差異分析
- BOM 工程資料(低階碼/用料展開來源)
- 生產管理(製令領退料來源)
- 總帳管理(成本傳票過帳)
- 本頁重點章節:欄位連動與附加功能
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/K-Cost/images/):
costcalculate-step1.png— 視窗頂部年月輸入與四頁籤全貌costcalculate-step2.png— 計算前檢核頁(含紅底未過項、明細展開、IT Document 區)costcalculate-step4.png— 計算成本頁(Auto Closing Book 勾選與 Calculate 鈕)costcalculate-step5.png— 計算後檢核頁