Skip to content

iDempiere 品目原価の使い方|会計 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 会計の全体像: 会計の全体図 も合わせてご覧ください。

品目原価は、品目ごとの原価を「会計スキーマ × 原価タイプ × 原価要素(× 属性セットインスタンス)」の組合せ単位で照会・管理するウィンドウです。現在原価・将来原価の確認、伝票処理に伴う原価変動履歴(原価詳細)の追跡、先入先出/後入先出の原価キューの確認までを 1 画面で行えます。

📌 ポイント: 原価は受入・請求・出荷などの伝票処理から自動的に更新されます(原価詳細 M_CostDetail 経由)。この画面は基本的に照会・確認用で、標準原価の設定など限られた用途でのみ手入力します。

  • 品目ごとの現在原価・将来原価の照会(会計スキーマ・原価タイプ・原価要素別)
  • 構成品目合計(Lower Level)原価の確認(製造品)
  • 原価変動履歴の追跡(Cost Movement タブ: 処理前後の原価・数量を表示)
  • 伝票別の原価詳細(発注・仕入請求・入荷・棚卸・生産等の明細単位)の確認
  • 先入先出/後入先出の原価キュー(層別の原価と数量)の確認
  • 標準原価の凍結(Cost Frozen)
タブ名テーブル項目数役割
品目選択M_Product約13項目対象品目の選択(照会用)
品目原価M_Cost約20項目原価レコード本体(現在/将来原価・累積数量金額)
Cost MovementM_CostMovement_v約28項目原価変動ビュー(処理前後の原価・数量、元伝票明細)
原価詳細M_CostDetail約31項目伝票処理が生成した原価詳細
原価キューM_CostQueue約9項目FiFo/LiFo の原価レイヤー

💡 ヒント: Cost Movement タブは品目原価タブの配下(階層2)にあり、選択中の原価レコードに対する変動だけを表示します。原価詳細・原価キュータブは品目直下(階層1)です。

graph TD
    A["🚀 メニューから開く<br/>会計管理 > 原価管理 > 品目原価"] --> B["🔍 品目選択タブで<br/>対象品目を検索"]
    B --> C["📊 品目原価タブで<br/>会計スキーマ・原価タイプ・<br/>原価要素ごとの原価を確認"]
    C --> D{さらに詳しく}
    D -->|変動履歴| E["📈 Cost Movement タブ<br/>処理前後の原価を比較"]
    D -->|元伝票の特定| F["🧾 原価詳細タブ<br/>入荷/請求/棚卸等の<br/>明細単位で確認"]
    D -->|FiFo/LiFo| G["📚 原価キュータブ<br/>レイヤー別の原価と数量"]

メニューから開く 会計管理 > 原価管理 > 品目原価 品目選択タブで 対象品目を検索 品目原価タブで 会計スキーマ・原価タイプ・ 原価要素ごとの原価を確認 Cost Movement タブ 処理前後の原価を比較 原価詳細タブ 入荷/請求/棚卸等の 明細単位で確認 原価キュータブ レイヤー別の原価と数量 さらに詳しく 変動履歴 元伝票の特定 FiFo/LiFo

アクセス方法(メニューパス)

Section titled “アクセス方法(メニューパス)”

メニューから「会計管理 ▸ 原価管理 ▸ 品目原価」を開きます。

  1. 品目選択タブで対象品目を検索(検索キー・名称・品目カテゴリで絞込み)
  2. 品目原価タブへ移動し、レコードごとに以下を確認:
    • 会計スキーマ / 原価タイプ / 原価要素: 原価の集計軸
    • 現在の原価: 会計転記に使用されている原価
    • 現在の原価(構成品目合計): 製造品の下位レベル原価合計
    • 将来の原価: 次期に適用予定の原価
    • 現在数量 / 蓄積金額 / 合計数量: 在庫数量と累積値
  3. 原価に疑問がある場合は Cost Movement / 原価詳細 タブで、どの伝票処理でいくら変動したかを追跡

項目リファレンス(品目原価タブ)

Section titled “項目リファレンス(品目原価タブ)”
項目名必須説明
品目必須検索対象品目
属性セットインスタンス必須属性ロット等の属性単位で原価管理する場合
会計スキーマ必須選択原価が属する会計スキーマ
原価タイプ必須選択原価の種別(現在・計画・将来等)
原価要素必須選択原価要素(材料費等)
在庫評価方法-リストこの原価の計算方法
現在の原価必須金額現在使用中の原価
現在の原価(構成品目合計)必須金額下位レベル(構成品)の原価合計
将来の原価必須金額将来適用する原価
現在数量必須数量現在数量
Cost Frozen-チェック標準原価の凍結
蓄積金額 / 合計数量-金額/数量累積金額・累積数量

全項目一覧はリファレンス参照

Q. 原価はどうやって更新されますか?手入力できますか?

Section titled “Q. 原価はどうやって更新されますか?手入力できますか?”

原価は伝票処理時に MCostDetail.createInvoice() / createShipment() / createInventory() / createMovement() / createProduction() / createMatchInvoice() 等が原価詳細レコードを生成し、その処理を通じて自動更新されます。手入力は標準原価の初期設定などに限定するのが安全です。

標準原価が凍結されていることを示すフラグです。凍結中は標準原価が伝票処理によって変動しません。

Q. 原価キューの内容が実際の物理的な入出庫順と一致しません

Section titled “Q. 原価キューの内容が実際の物理的な入出庫順と一致しません”

仕様上あり得ます。リファレンスに明記されているとおり、原価計算レベル(コスティングレベル)と倉庫の優先順位の違いにより、原価キューは物理的な移動順のキューと一致しない場合があります。

Q. Cost Movement タブには何が表示されますか?

Section titled “Q. Cost Movement タブには何が表示されますか?”

原価詳細(M_CostDetail)処理前後のスナップショットを比較するビュー(M_CostMovement_v)です。処理前の原価・数量(Old Current Cost Price / Old Current Quantity)と処理後(New …)、および変動の原因となった伝票明細(入荷明細・仕入請求伝票明細・棚卸伝票明細等)を確認できます。

🛠 技術仕様(開発者向け)

品目原価は M_Cost(原価本体・削除不可)、M_CostDetail(原価詳細)、M_CostQueue(FiFo/LiFo キュー)、およびビュー M_CostMovement_v で構成されます。MCost クラス(1,945行)が原価取得・各種評価方法の計算を、MCostDetail クラス(2,123行)が伝票からの原価詳細生成を、MCostQueue クラス(402行)がキュー操作を担います。いずれもアクセスレベルは Client+Org です。

classDiagram
    class MCost {
        +getCurrentCost(product, ASI, trxName) BigDecimal$
        +getSeedCosts(product, ASI, ...) BigDecimal$
        +getLastInvoicePrice(product, ...) BigDecimal$
        +getLastPOPrice(product, ...) BigDecimal$
        +calculateAverageInv(product, ...) BigDecimal$
        +calculateAveragePO(product, ...) BigDecimal$
        +calculateFiFo(product, ...) BigDecimal$
        +calculateLiFo(product, ...) BigDecimal$
        +create(client)$
        +get(product, ASI, ...) MCost$
    }
    class MCostDetail {
        +createOrder(as, org, ...) boolean$
        +createInvoice(as, org, ...) boolean$
        +createShipment(as, org, ...) boolean$
        +createInventory(as, org, ...) boolean$
        +createMovement(as, org, ...) boolean$
        +createProduction(as, org, ...) boolean$
        +createMatchInvoice(as, org, ...) boolean$
        +createProjectIssue(as, org, ...) boolean$
    }
    class MCostQueue
    class X_M_Cost {
        <<generated>>
    }
    class X_M_CostDetail {
        <<generated>>
    }
    MCost --|> X_M_Cost
    MCostDetail --|> X_M_CostDetail
    MCostDetail --> MCost : 更新
    MCost --> MCostQueue : FiFo/LiFo

+getCurrentCost(product, ASI, trxName) BigDecimal$ +getSeedCosts(product, ASI, ...) BigDecimal$ +getLastInvoicePrice(product, ...) BigDecimal$ +getLastPOPrice(product, ...) BigDecimal$ +calculateAverageInv(product, ...) BigDecimal$ +calculateAveragePO(product, ...) BigDecimal$ +calculateFiFo(product, ...) BigDecimal$ +calculateLiFo(product, ...) BigDecimal$ +create(client)$ +get(product, ASI, ...) MCost$ +createOrder(as, org, ...) boolean$ +createInvoice(as, org, ...) boolean$ +createShipment(as, org, ...) boolean$ +createInventory(as, org, ...) boolean$ +createMovement(as, org, ...) boolean$ +createProduction(as, org, ...) boolean$ +createMatchInvoice(as, org, ...) boolean$ +createProjectIssue(as, org, ...) boolean$ <> > X_M_Cost MCostDetail --

パッケージ: org.compiere.model ソースファイル:

  • org.adempiere.base/src/org/compiere/model/MCost.java
  • org.adempiere.base/src/org/compiere/model/MCostDetail.java
  • org.adempiere.base/src/org/compiere/model/MCostQueue.java

M_Cost(品目原価)— 複合キー、削除不可

Section titled “M_Cost(品目原価)— 複合キー、削除不可”
カラム名必須説明備考
AD_Client_ID / AD_Org_IDTableDirectYクライアント/組織複合キーの一部
M_Product_IDSearchY品目複合キー
M_AttributeSetInstance_IDProductAttributeY属性セットインスタンス複合キー
C_AcctSchema_IDTableDirectY会計スキーマ複合キー
M_CostType_IDTableDirectY原価タイプ複合キー
M_CostElement_IDTableDirectY原価要素複合キー
CostingMethodListN在庫評価方法デフォルト ‘x’
CurrentCostPrice / CurrentCostPriceLLCosts+PricesY現在原価 / 構成品合計
FutureCostPrice / FutureCostPriceLLCosts+PricesY/N将来原価
CurrentQtyQuantityY現在数量
CumulatedAmt / CumulatedQtyAmount/QuantityN累積金額 / 累積数量
IsCostFrozenYesNoN標準原価凍結デフォルト N
ProcessedYesNoN処理済み
カラム名必須説明備考
M_CostDetail_IDIDPK原価詳細ID
C_AcctSchema_ID / M_Product_ID / M_AttributeSetInstance_ID-Y集計軸
M_CostElement_IDTableDirectN原価要素
Amt / Qty / PriceAmount/QuantityY/Y/N金額・数量・価格
DeltaAmt / DeltaQtyAmount/QuantityN差異金額・差異数量
C_OrderLine_ID / C_InvoiceLine_ID / M_InOutLine_ID / M_InventoryLine_ID / M_MovementLine_ID / M_ProductionLine_ID / C_ProjectIssue_ID / M_MatchInv_ID / PP_Cost_Collector_IDSearchN発生元伝票明細いずれか1つが設定される
DateAcctDateY転記日付
IsBackDate / BackDateProcessedOnYesNo/DateTimeY/Nバックデート処理
IsSOTrxYesNoY販売/購買区分
ProcessedYesNoY処理済み

M_CostQueue(原価キュー)/ M_CostMovement_v(ビュー)

Section titled “M_CostQueue(原価キュー)/ M_CostMovement_v(ビュー)”

M_CostQueue は品目 × 会計スキーマ × 原価タイプ × 原価要素 × 属性セットインスタンスの複合キーで、レイヤーごとの CurrentCostPrice / CurrentQty を保持します。M_CostMovement_v は原価詳細の処理前後(Old/New の原価・数量・累積値)を比較表示する読取専用ビューです。

各伝票の転記・処理時に MCostDetail の static ファクトリメソッドが呼ばれ、伝票明細単位の原価詳細が生成されます:

flowchart TD
    A["伝票処理<br/>(入荷/請求/棚卸/移動/生産/照合)"] --> B["MCostDetail.createXxx()"]
    B --> C["M_CostDetail レコード生成"]
    C --> D["原価詳細の process"]
    D --> E["M_Cost の現在原価・数量を更新"]
    D --> F["FiFo/LiFo の場合<br/>M_CostQueue のレイヤー操作"]
    E --> G["M_CostMovement_v で<br/>前後スナップショットを照会可能"]

伝票処理 (入荷/請求/棚卸/移動/生産/照合) MCostDetail.createXxx() M_CostDetail レコード生成 原価詳細の process M_Cost の現在原価・数量を更新 FiFo/LiFo の場合 M_CostQueue のレイヤー操作 M_CostMovement_v で 前後スナップショットを照会可能

評価方法別の計算メソッド(MCost)

Section titled “評価方法別の計算メソッド(MCost)”
メソッド評価方法
calculateAverageInv()移動平均(請求ベース)
calculateAveragePO()移動平均(発注ベース)
calculateFiFo()先入先出
calculateLiFo()後入先出
getLastInvoicePrice() / getLastPOPrice()最終請求価格 / 最終発注価格
getSeedCosts()初期原価(シード)の取得

MCost.getCurrentCost() が会計スキーマ・品目カテゴリの設定に従い適切な原価を返します。

  • Model Validator: M_CostDetail の生成・処理タイミングにフックして独自の原価チェック(原価ゼロ検知・急変検知等)を追加できます
  • Callout: 標準ではこれらのテーブルにカラム callout は定義されていません
  • 独自原価要素: 原価要素を追加すると、M_Cost に要素別の原価行を持たせられます

リファレンスページ・メニューに直接関連するプロセスは登録されていません(原価更新は各伝票の処理から連動)。


原価の異常値検知や独自の原価レポートは、Model Validator と標準の原価詳細データを活用してコア改変なしで実装できます。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら