コンテンツにスキップ

iDempiere パフォーマンスゴールの使い方|会計 操作マニュアル・技術仕様

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

パフォーマンスゴールは、KPI(売上高・受注件数など)の目標値を定義し、実績との達成率をダッシュボードに表示するためのウィンドウです。目標値とパフォーマンス測定(実績の取得方法)を組み合わせ、全社・ロール別・ユーザー別のゴールを設定できます。

📌 ポイント: ゴールは「誰の目標か(ロール/ユーザー)」「何を測るか(測定)」「いくつを目指すか(目標値)」の 3 点で構成されます。達成率(0〜1)は測定の実行時に自動計算され、ログイン ユーザーのダッシュボードにグラフ表示されます。

パフォーマンスゴールでできること

Section titled “パフォーマンスゴールでできること”
  • KPI 目標値(測定目標)の設定と達成率の自動計算
  • 全社共通/ロール別/ユーザー別のゴール割り当て
  • 測定スコープ(年・四半期・月・週・日)と表示単位の指定
  • サマリゴール(子ゴールの加重集計)による階層管理
  • 制限タブによる対象の絞り込み(組織・取引先・品目等)
  • ダッシュボードのグラフ種類(Chart Type)とカラースキーマの指定
タブ名テーブル項目数役割
ゴールPA_Goal約22項目目標値・対象者・スコープ・表示設定
制限PA_GoalRestriction約11項目測定対象の絞り込み(組織・取引先・品目)
graph TD
    A["🚀 メニューから開く<br/>会計管理 > パフォーマンス測定 > パフォーマンスゴール"] --> B["➕ 新規でゴールを定義<br/>(名称・シーケンスNo)"]
    B --> C["🎯 測定と測定目標を設定<br/>(例: 月次売上 1,000万円)"]
    C --> D{対象者}
    D -->|全社共通| E["ロール・ユーザーを空のまま"]
    D -->|ロール別| F["ロールを指定"]
    D -->|個人別| G["ユーザーを指定"]
    E --> H["📅 測定スコープを選択<br/>(年/四半期/月/週/日)"]
    F --> H
    G --> H
    H --> I["💾 保存"]
    I --> J["🔍 制限タブで対象を絞り込み<br/>(任意: 組織・取引先・品目)"]
    J --> K["📊 ダッシュボードで<br/>達成率グラフを確認"]

メニューから開く 会計管理 > パフォーマンス測定 > パフォーマンスゴール 新規でゴールを定義 (名称・シーケンスNo) 測定と測定目標を設定 (例: 月次売上 1,000万円) ロール・ユーザーを空のまま ロールを指定 ユーザーを指定 測定スコープを選択 (年/四半期/月/週/日) 保存 制限タブで対象を絞り込み (任意: 組織・取引先・品目) ダッシュボードで 達成率グラフを確認 対象者 全社共通 ロール別 個人別

メニューから「会計管理 > パフォーマンス測定 > パフォーマンスゴール」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • 名称: ゴール名(例: 月次売上目標
    • シーケンスNo: ダッシュボードの表示順
    • 測定: 実績を取得するパフォーマンス測定を選択(サマリゴール以外は必須)
    • 測定目標: 目標値(例: 10000000
    • 測定スコープ: 集計期間の単位(年/四半期/月/週/日)
    • カラースキーマ: 達成率に応じた表示色
    • ロール/ユーザー: 対象者(空なら全体)
  3. 保存」をクリック
  4. 必要に応じて「制限」タブで対象組織・取引先・品目を絞り込み

⚠️ 注意: 制限タブの絞り込みは、測定側(測定計算の取引先カラム・品目カラム等)が該当データを持つ場合のみ有効です。測定がサポートしないディメンションの制限は無視されます。

項目名必須説明
名称必須文字列ゴール名
シーケンスNo必須整数表示順
サマリレベル必須チェック子ゴールを集計する親ゴール
親ゴール-選択サマリゴール配下に置く場合に指定
測定条件付必須選択実績の取得方法(サマリ以外は必須)
測定目標必須数値目標値
測定スコープ必須リスト集計期間単位(年/四半期/月/週/日)
測定表示-リスト初期表示する期間単位
ロール/ユーザー-選択ゴールの対象者
カラースキーマ必須選択達成率の色分け(パフォーマンスカラースキーマ)
Chart Type必須リストグラフ種類(初期値: 棒グラフ)
関連加重必須数値サマリ集計時の重み(0=集計対象外、初期値 1)
実績測定/パフォーマンスゴール自動数値実績値/達成率(0〜1)。測定実行時に自動更新
開始日付/終了日付-日付測定対象期間の制限

全項目の一覧は 画面リファレンス を参照してください。

Q. 「測定」を空にして保存するとエラーになります。

Section titled “Q. 「測定」を空にして保存するとエラーになります。”

サマリレベルでないゴールには測定が必須です(MGoal.beforeSave() の必須チェック)。逆にサマリレベルのゴールに測定を設定しても、保存時に自動でクリアされます。サマリゴールは子ゴールの加重平均で達成率が決まるため、自身の測定を持ちません。

Q. ユーザーを指定したのにロールが勝手に変わりました。

Section titled “Q. ユーザーを指定したのにロールが勝手に変わりました。”

仕様です。MGoal.beforeSave() はユーザー指定時にそのユーザーが対象組織で持つロールを検証し、ロール未設定または不整合の場合は自動補正します(ロールが 1 つならそれを設定、複数なら先頭のロール)。ユーザーの実ロールと矛盾したゴール割当を防ぐための動作です。

Q. 実績値・達成率はいつ更新されますか?

Section titled “Q. 実績値・達成率はいつ更新されますか?”

測定目標や測定スコープを変更して保存したとき(afterSave()updateGoal(true))と、ダッシュボード表示や測定側の更新処理が走ったときに再計算されます。最新実行日(DateLastRun)で最後の計算時刻を確認できます。

Q. 関連加重(Relative Weight)は何に使いますか?

Section titled “Q. 関連加重(Relative Weight)は何に使いますか?”

サマリゴールが子ゴールを集計する際の重み付けです。0 にするとそのゴールはサマリ集計から除外されます。

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

パフォーマンスゴールは PA_Goal テーブル(MGoal クラス・609行)と PA_GoalRestriction テーブル(MGoalRestriction クラス・78行)で構成されます。MGoal はダッシュボードのパフォーマンスウィジェットの中核で、達成率計算・対象ユーザー解決・グラフ表示用データの提供を担います。Document 型ではありません。

classDiagram
    class MGoal {
        +getUserGoals(ctx, AD_User_ID) MGoal[]
        +getGoals(ctx) MGoal[]
        +getMeasureGoals(ctx, PA_Measure_ID) MGoal[]
        +getMultiplier(goal) BigDecimal
        +getRestrictions(reload) MGoalRestriction[]
        +getMeasure() MMeasure
        +updateGoal(force) boolean
        +setMeasureActual(actual)
        +setGoalPerformance()
        +getPercent() int
        #beforeSave(newRecord) boolean
        #afterSave(newRecord, success) boolean
    }
    class MGoalRestriction {
        +制限タイプ別の対象ID保持
    }
    class MMeasure {
        +updateGoals() boolean
    }
    MGoal --|> X_PA_Goal : generated
    MGoalRestriction --|> X_PA_GoalRestriction : generated
    MGoal --> MGoalRestriction : has many
    MGoal --> MMeasure : measure
    MMeasure --> MGoal : 実績を反映

+getUserGoals(ctx, AD_User_ID) MGoal[] +getGoals(ctx) MGoal[] +getMeasureGoals(ctx, PA_Measure_ID) MGoal[] +getMultiplier(goal) BigDecimal +getRestrictions(reload) MGoalRestriction[] +getMeasure() MMeasure +updateGoal(force) boolean +setMeasureActual(actual) +setGoalPerformance() +getPercent() int #beforeSave(newRecord) boolean #afterSave(newRecord, success) boolean +制限タイプ別の対象ID保持 +updateGoals() boolean > X_PA_Goal : generated MGoalRestriction --

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MGoal.java / MGoalRestriction.java

カラム名必須説明備考
PA_Goal_IDIDPKゴールID主キー
NameString(60)Y名称
SeqNoIntegerY表示順
IsSummaryYesNoYサマリレベルY なら PA_Measure_ID を強制クリア
PA_GoalParent_IDTableN親ゴール階層構造
PA_Measure_IDTableDirect条件付測定FKサマリ以外は必須(beforeSave検証)
MeasureTargetNumberY測定目標
MeasureActualNumberY実績測定自動更新
GoalPerformanceNumberY達成率0〜1、自動計算
MeasureScopeList(1)Y測定スコープ年/四半期/月/週/日
MeasureDisplayList(1)N測定表示初期表示単位
AD_Role_ID / AD_User_IDTableDirect / SearchN対象ロール/ユーザーデフォルト -1、beforeSave で整合補正
PA_ColorSchema_IDTableDirectYカラースキーマ
ChartTypeList(2)Yグラフ種類デフォルト BC(棒グラフ)
RelativeWeightNumberY関連加重デフォルト 1、0=集計除外
DateFrom / DateToDate+TimeN対象期間
DateLastRunDate+TimeN最新実行日
カラム名必須説明
PA_Goal_IDTableDirectYゴールFK
GoalRestrictionTypeList(1)Y制限タイプ(組織/取引先/取引先G/品目/品目カテゴリ)
Org_ID / C_BPartner_ID / C_BP_Group_ID / M_Product_ID / M_Product_Category_IDTable 他N制限タイプに応じた対象

MGoal.beforeSave():

  1. 測定必須チェック: IsSummary=N かつ PA_Measure_ID=0 はエラー(FillMandatory)。IsSummary=Y なら PA_Measure_ID を 0 にリセット
  2. ユーザー/ロール整合: AD_User_ID 指定時、当該ユーザーが対象組織で持つロールと AD_Role_ID を突合し、不整合なら自動補正(ロール 0 件→クリア、1 件→そのロール、複数→一致確認のうえ先頭)

MGoal.afterSave():

  • 新規、または MeasureTarget / MeasureScope 変更時に updateGoal(true) を実行し、測定経由で実績・達成率を再計算

達成率の算出:

  • setMeasureActual()setGoalPerformance()GoalPerformance = MeasureActual / MeasureTarget(0〜1)を設定。getPercent() はパーセント整数を返し、カラースキーマの色判定に使われます
  • Model Validator: ゴール作成の権限制御や目標値の承認フローは PA_Goal へのバリデータで実装できます
  • 独自 KPI: 実績の取得ロジック自体を拡張する場合は、ゴールではなく測定側の計算クラス(CalculationClass)を実装します
  • このテーブルに標準の callout はありません

KPI ダッシュボードの拡張(独自指標の追加、達成率の通知連携等)をコア改変なしで実装できます。

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

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