程式資訊
- 程式 ID:
PROJECTCOST - 所屬子系統:K.成本管理
- 狀態:stable
專案成本查詢¶
功能簡介¶
「專案成本查詢」把同一個專案(依「專案代號+收貨地址」配對)底下的收入、成本與其他費用從相關單據彙總起來,算出每個專案的毛利,並可往下展開到單據層級的明細。適合成本會計、財務人員或專案負責人回答:
- 這個專案總共出了多少貨(收入)?
- 為這個專案進了多少料、成本是多少(成本,含製成品的報價成本)?
- 還掛了哪些其他費用(其他成本)?
- 結算下來這個專案賺不賺錢(毛利)?
查詢來源是 SP TWORK_QRY_PROJECTCOST,它一次回傳四份資料:出貨明細(收入)、進貨明細(成本)、費用申請明細(其他成本),以及製成品的報價單價(用來補算報價成本)。畫面上半部是專案彙總,下半部是選定專案的單據明細,最後一列自動加上合計。
「專案」的識別方式
本查詢以「專案代號 + 收貨地址(ShipToAddress)」當作一個專案的識別鍵。也就是說,同一個專案代號若對應到不同收貨地址,會被視為不同的彙總列分開計算。
前置需求¶
- 權限:K.成本管理 →
專案成本查詢的瀏覽權限(列印需另有列印權限)。 - 基礎資料:查詢結果的完整度取決於下列單據是否已正確填上專案代號——沒有填專案代號的單據不會被歸入任何專案。
| 資料 | 影響的結果 |
|---|---|
| 出貨/銷貨單據(TRSAMA,需有專案代號) | 收入(Revenue) 與明細的出貨列 |
| 進貨單據(TRRAMA,需有專案代號) | 成本(Costs) 與明細的進貨列 |
| 費用申請單據(PAYAPPLY,需有專案代號) | 其他成本(OtherCosts) 與明細的費用列 |
| 製成品報價(SPPDT,依品號帶單價) | 製成品(製成品類別=10)的報價成本列 |
| 專案主檔(A 系統/基本資料的專案維護) | 條件面板專案搜尋的名稱、可挑選的專案範圍 |
操作步驟¶
本表單為查詢報表,主要動作是「設條件 → 查詢 → 看彙總與明細 →(選用)列印/樞紐分析」,不提供新增、修改、刪除。
步驟① 設定查詢條件¶
- 輸入年度月份起訖(格式
YYYY/MM)。預設為當年度當年/01 ~ 當年/12。系統實際比對的期間會把起日補成該月 1 號、訖日補成該月 31 號(例如2026/01 ~ 2026/12等同2026/01/01 ~ 2026/12/31)。 - 輸入專案起訖代號(可用右側搜尋鈕挑選,挑到後右邊欄會顯示專案名稱)。
- 起始專案預設空白、截止專案預設
zzz,等於涵蓋全部專案。 - 若起始專案填
ALL、或起訖任一欄留空,系統會自動視為全部專案(起=空、訖=zzzzzz)。
- 起始專案預設空白、截止專案預設
步驟② 執行查詢¶
- 按工具列的
查詢。 - 上半部專案彙總格線列出每個「專案代號+收貨地址」的收入、成本、其他成本與毛利,並依專案代號、收貨地址排序。
- 最後自動附一列 合計,把所有專案的各金額加總。
步驟③ 檢視單據明細¶
- 在上半部點選任一專案列。
- 下半部明細格線會同步顯示該專案底下的所有來源單據(出貨、進貨、費用、以及製成品的報價成本列)。
- 點選合計列時,下半部會顯示所有專案的全部明細。
步驟④(選用)列印 / 樞紐分析 / 匯出¶
- 工具列的
列印可把查詢結果送進報表列印流程。 - 工具列的樞紐分析會把明細資料丟進樞紐(PivotSource)讓你自由拖拉維度做交叉分析。
- 格線本身(上半部彙總、下半部明細)皆可在格線右鍵選單匯出 Excel。
小技巧
改了條件(年度月份或專案範圍)後,直接再按一次 查詢 即可重算;切換上半部不同專案列只會換下半部明細,不需重查。
欄位說明¶
查詢條件¶
| 欄位 | 必填 | 說明 / 格式 / 預設 |
|---|---|---|
| 年度月份(起) | ✔ | 格式 YYYY/MM;預設 當年/01,查詢時補成該月 1 號 |
| 年度月份(訖) | ✔ | 格式 YYYY/MM;預設 當年/12,查詢時補成該月 31 號 |
| 專案(起) | — | 預設空白;填 ALL 或留空=全部專案 |
| 專案(訖) | — | 預設 zzz;留空時系統改用 zzzzzz(全部) |
專案彙總格線(上半部)¶
| 欄位 | 說明 |
|---|---|
| 專案代號(Project Code) | 專案的識別碼;合計列顯示「合計」 |
| 收貨地址(Ship To Address) | 與專案代號合併成彙總鍵 |
| 收入(Revenue) | 該專案所有出貨單據小計(AmountSubtotal)加總,本幣 |
| 成本(Costs) | 該專案所有進貨單據小計加總 + 製成品報價成本,本幣 |
| 其他成本(Other Costs) | 該專案所有費用申請單據小計加總,本幣 |
| 毛利(Gross Profit) | = 收入 + 成本 + 其他成本(成本/其他成本在內部已轉為負值,故實際等同「收入 − 成本 − 其他費用」) |
單據明細格線(下半部)¶
| 欄位 | 說明 |
|---|---|
| 單據類別(Document Type) | 來源別;製成品自動補算的列為「成本」 |
| 單號(Document No) | 來源單號;報價成本列顯示報價單號 |
| 單據日期(Document Date) | 來源單據日期;報價成本列顯示報價日期 |
| 專案代號 / 收貨地址 | 與上半部彙總鍵對應 |
| 品號(SKU)/ 品名(SKUDescription) | 該明細的品號與品名 |
| 數量(Quantity) | 該明細數量(兩位小數) |
| 單價(Unit Price) | 該明細單價;報價成本列為製成品報價單價(兩位小數) |
| 未稅金額(Amount Without Tax) | 未稅金額;進貨與費用列已轉為負值 |
| 其他金額(Other Amount) | 明細的其他金額 |
| 調整未稅金額(Adjust Amount Without Tax) | 調整未稅金額;進貨與費用列已轉為負值 |
| 金額小計(Amount Subtotal) | = 未稅金額 + 調整未稅金額(彙總列的收入/成本/其他成本即由此加總) |
| 說明(Description) | 明細說明;報價成本列固定為「報價成本」 |
| SKU 1 / 起點 / 終點 / 日期1 / 數量1 / 數量2 | SP 回傳的附帶欄位(依單據來源填入,部分明細可能為空) |
金額正負與「成本」的呈現
為了讓「收入 + 成本 + 其他成本」一條公式就能得到毛利,系統在彙總時把進貨與費用的金額轉成負數再加總。因此明細裡這些列的金額會顯示為負值,這是設計上的正負約定,不是資料錯誤。
欄位連動與附加功能¶
這是本頁最關鍵的一節,說明「輸入某欄位後系統會做什麼」「按某按鈕會發生什麼」,全部來自實際程式碼。
條件預設值(開窗即帶)¶
- 開啟表單時,年度月份自動帶入
當年/01 ~ 當年/12(取系統當年)。 - 截止專案預設帶
zzz,起始專案預設空白,等於「不限專案、全部查」。
專案範圍的「全部」判定¶
當你按 查詢 時,系統會先判斷專案範圍:
- 若起始專案輸入
ALL(不分大小寫),或起訖任一欄留空 → 系統自動把範圍改成「空 ~zzzzzz」,等於查全部專案。 - 否則就照你輸入的起訖代號區間查。
年度月份的自動補日¶
- 查詢時系統把起月補成「該月
/01」、訖月補成「該月/31」再送進 SP。所以你只需填到月份,不需填日。
按 查詢 後系統做的彙總運算¶
按 查詢 後,系統呼叫 SP TWORK_QRY_PROJECTCOST 取回四份資料,再依「專案代號+收貨地址」逐一彙整:
- 收入:把該鍵的所有出貨明細金額小計加總。
- 成本:把該鍵的所有進貨明細金額小計加總(進貨金額已轉負),再加上製成品的報價成本。
- 其他成本:把該鍵的所有費用申請金額小計加總(費用金額已轉負)。
- 毛利:= 收入 + 成本 + 其他成本(內部負值約定使其等同收入扣成本扣費用)。
- 彙總列依專案代號、收貨地址排序,最後再追加一列合計。
製成品的「報價成本」自動補列¶
- 對於出貨明細中製成品類別(SKUCategory)=10 的品號,系統會去查該品號的報價單價(SPPDT)。
- 找得到報價時,系統用「出貨數量 × 報價單價(四捨五入至整數)」算出一筆報價成本,加進該專案的成本,並在下半部明細補一列「單據類別=成本、說明=報價成本」的列,方便你看到成本是怎麼來的。
- 找不到該品號報價時,就不會有報價成本列,該製成品的成本不計報價成本。
上下格線連動¶
- 上半部專案彙總與下半部單據明細是主從連動:下半部
DataContext綁定上半部選取列的Details,點哪個專案就看哪個專案的明細。 - 點選合計列時,下半部顯示的是所有專案明細的彙整(合計列的 Details 收納了全部明細)。
工具列附加功能¶
- 查詢:執行上述彙總,結果灌進上下兩個格線。
- 列印:本表單實作列印介面(
IUpdatePrint),可把查詢結果送入報表列印。 - 樞紐分析:本表單實作樞紐來源(
IPivotSource);按樞紐時會把所有明細(PivotSource)寫進暫存 SQLite 再丟進樞紐工具,讓你自訂列/欄/值做交叉分析。 - 工作流程紀錄:基底提供的查詢工作流程紀錄功能;無資料時會提示「無資料」。
- 匯出 Excel:兩個格線皆可由右鍵選單匯出。
報表版型尚未提供
目前程式碼僅實作通用列印介面,未內建專屬的報表版型(.frx)。實際列印效果以系統內建通用報表為準;若需專屬版型請另行需求。
常見問題¶
為什麼某張單據沒被歸到任何專案?
本查詢以單據上的專案代號配對。出貨、進貨、費用申請單據若沒有填專案代號,就不會出現在任何專案的彙總與明細裡。請回到原單據補上專案代號後重查。
同一個專案怎麼出現了好幾列?
彙總鍵是「專案代號+收貨地址」。同一專案代號若對應多個收貨地址,會被拆成多列分別計算。若要看整個專案的合計,請參考最後一列合計,或自行用樞紐分析以專案代號彙總。
為什麼成本/其他成本是負數?
這是設計上的正負約定:為了用「收入 + 成本 + 其他成本」一條式子算出毛利,系統把進貨與費用金額轉成負值。明細看到負數屬正常,毛利數字才是最終要看的結果。詳見欄位連動與附加功能。
某個製成品沒有出現「報價成本」列?
報價成本只對製成品類別=10 的出貨品號補算,而且該品號要在報價(SPPDT)中查得到單價。若該品號不是製成品、或沒有維護報價,就不會產生報價成本列,成本也不含這筆。
查不到任何資料?
請依序確認:(1) 年度月份起訖區間內確實有出貨/進貨/費用單據;(2) 專案範圍沒有把目標專案排除(不確定時把起始專案填 ALL 查全部);(3) 單據確實有填專案代號。
改了年度月份卻沒變化?
年度月份與專案範圍屬於查詢條件,改完要再按一次 查詢 才會重新取數。切換上半部專案列只是換下半部明細,不會重查。
相關功能¶
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/K-Cost/images/):
projectcost-step1.png— 條件面板(年度月份起訖、專案起訖搜尋)projectcost-step2.png— 上半部專案彙總格線(含收入/成本/其他成本/毛利與合計列)projectcost-step3.png— 下半部單據明細格線(含製成品「報價成本」列)