Skip to content

iDempiere GL配分の使い方|会計 操作マニュアル・技術仕様

This content is not available in your language yet.

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

GL配分は、転記時に条件(勘定科目の組み合わせ)に一致した仕訳を、明細行で定義した比率で別の勘定・組織・ディメンションに振り替えるルールを定義するウィンドウです。本社共通費の部門按分、特定科目の組織別配賦などを転記エンジンに自動で行わせることができます。

📌 ポイント: 配分は転記のタイミングで自動適用されます。明細のパーセント合計が 100% でないとルールは「有効」になりません。ヘッダの「検査」ボタンで必ず検証してから運用してください。

  • 会計スキーマ・転記タイプ・伝票タイプを指定した適用範囲の限定
  • 勘定科目・組織・取引先・品目・プロジェクト等のセグメント条件による一致判定(「任意◯◯」フラグで柔軟に指定)
  • 明細行ごとのパーセント配分と、勘定・組織など各セグメントの上書き
  • 逆仕訳作成(Create Reversal)による元仕訳の相殺 or 元仕訳の置き換えの選択
  • 有効期間(有効開始日・終了日)による期間限定の配分ルール
  • 「検査」ボタンによる配分定義の妥当性検証
タブ名テーブル項目数役割
GL配分GL_Distribution約60項目適用条件(一致させるセグメントの組み合わせ)と検証
詳細GL_DistributionLine約44項目配分先(パーセント + 上書きするセグメント)
graph TD
    A["🚀 メニューから開く<br/>会計管理 > 会計設定 > GL配分"] --> B["➕ ヘッダで名称・会計スキーマを入力"]
    B --> C["🎯 一致条件を設定<br/>(勘定科目は指定・他は任意◯◯で緩く)"]
    C --> D["📝 詳細タブで配分行を登録<br/>(パーセント + 上書き先の組織/科目)"]
    D --> E["💯 パーセント合計を100に"]
    E --> F["🔍 ヘッダの検査ボタンで検証"]
    F --> G{有効フラグ}
    G -->|Y| H["✅ 以後の転記で自動適用"]
    G -->|N| I["⚠️ エラー内容を修正して再検証"]
    I --> F

メニューから開く 会計管理 > 会計設定 > GL配分 ヘッダで名称・会計スキーマを入力 一致条件を設定 (勘定科目は指定・他は任意◯◯で緩く) 詳細タブで配分行を登録 (パーセント + 上書き先の組織/科目) パーセント合計を100に ヘッダの検査ボタンで検証 以後の転記で自動適用 エラー内容を修正して再検証 有効フラグ

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

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

メニューから「会計管理 > 会計設定 > GL配分」を開きます。

  1. 新規」ボタンをクリックし、GL配分タブで入力:
    • 名称: 配分ルール名
    • 会計スキーマ: 適用対象の会計スキーマ(必須)
    • 転記タイプ / 伝票タイプ / 有効開始日・終了日: 適用範囲を絞る場合に指定
    • 逆仕訳作成(Create Reversal): チェック時は元仕訳を相殺する逆仕訳を作成、外すと元仕訳を置き換え
  2. 一致条件を設定:
    • 判定に使わないセグメントは「任意◯◯」(任意組織・任意勘定科目など)をオンのまま
    • 判定に使うセグメントは「任意◯◯」をオフにして値を指定(例: 任意勘定科目=オフ + 勘定科目=福利厚生費)
  3. 詳細タブで配分行を登録:
    • パーセント: 当該行の配分割合
    • ◯◯上書き: 置き換えたいセグメントの上書きフラグをオンにして値を指定(例: 組織上書き=オン + 組織=営業部)
    • 上書きフラグがオフのセグメントは元仕訳の値がそのまま維持されます
  4. ヘッダに戻り「検査」ボタンをクリックして検証
  5. 有効(IsValid)が Y になれば、以後の転記で自動適用されます

⚠️ 注意: 「科目上書き」をオンにした行は勘定科目の指定が必須、「組織上書き」をオンにした行は組織の指定が必須です(未指定は保存エラー)。また、パーセント 0 の行は「残余(端数)受け行」として 1 行だけ許可されます。

主要項目のみ掲載します。全項目一覧はリファレンス参照

GL配分タブ(ヘッダ = 一致条件)

Section titled “GL配分タブ(ヘッダ = 一致条件)”
項目名必須説明
名称必須文字列配分ルール名
会計スキーマ必須選択適用対象の会計スキーマ
逆仕訳作成必須チェック逆仕訳で相殺するか、元仕訳を置き換えるか(既定 Y)
転記タイプ / 伝票タイプ-リスト/選択適用範囲の限定
有効開始日 / 有効終了日-日付期間限定ルール
任意勘定科目 + 勘定科目必須/-チェック+検索一致条件: 勘定科目
任意組織 + 組織必須/-チェック+選択一致条件: 組織
任意取引先・任意品目・任意プロジェクト 等必須チェック+選択各セグメントの一致条件(計20種)
総パーセント必須数値明細のパーセント合計(自動集計)
有効(IsValid)必須チェック検証結果(自動設定)
検査-ボタン配分定義の検証
項目名必須説明
明細番号必須整数自動採番(+10刻み)
パーセント必須数値配分割合(0 = 残余受け行)
科目上書き + 勘定科目必須/-チェック+検索オン時は勘定科目の指定必須
組織上書き + 組織必須/-チェック+選択オン時は組織の指定必須
取引先上書き・品目上書き・プロジェクト上書き 等必須チェック+選択上書きするセグメントの指定(計20種)

Q. 「有効」フラグが N のままで配分が効きません。

Section titled “Q. 「有効」フラグが N のままで配分が効きません。”

検証(validate())が次のいずれかで失敗しています。(1) 明細行が 0 件、(2) パーセント合計が 100 でない、(3) パーセント 0 の行が 2 行以上ある。詳細タブを修正し、ヘッダの「検査」ボタンで再検証してください。なお明細行を保存すると親の検証が自動で再実行されます。

Q. 端数(丸め誤差)はどの行に乗りますか?

Section titled “Q. 端数(丸め誤差)はどの行に乗りますか?”

配分実行時の差額は、パーセント 0 の行があればその行に、無ければ配分金額が最大の行に加算されます(金額・数量とも同じルール)。端数の行き先を固定したい場合はパーセント 0 の残余行を 1 行用意してください。

Q. 一致条件に値を入れたのに保存後に消えます。

Section titled “Q. 一致条件に値を入れたのに保存後に消えます。”

「任意◯◯」フラグがオンのセグメントは、保存時に対応する値が自動的にクリアされます(beforeSave() の仕様)。値で判定したいセグメントは、先に「任意◯◯」をオフにしてから値を指定してください。詳細タブも同様に、上書きフラグがオフのセグメント値は保存時にクリアされます。

Q. 「逆仕訳作成」の違いは何ですか?

Section titled “Q. 「逆仕訳作成」の違いは何ですか?”

チェック時(既定)は元の仕訳を残したまま相殺の逆仕訳 + 配分先仕訳を追加生成します。オフの場合は元の仕訳自体が配分後の仕訳に置き換えられます(元の勘定への計上は残りません)。監査証跡を残す観点では既定のオンを推奨します。

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

GL配分は GL_Distribution(ヘッダ = 一致条件)+ GL_DistributionLine(明細 = 配分先) の 2 テーブル構成(アクセスレベル 2 = Organization、削除可)です。MDistribution クラス(593行)が一致ルールの検索・検証・配分計算を、MDistributionLine クラス(338行)が行単位の上書き整合性を担います。転記エンジンが MDistribution.get(...) で一致ルールを検索し、distribute() で仕訳を按分します。

classDiagram
    class MDistribution {
        +get(MAccount, ...)$ MDistribution[]
        +getAll(Properties)$ MDistribution[]
        +getLines(boolean) MDistributionLine[]
        +validate() String
        +distribute(MAccount, BigDecimal, BigDecimal, int) void
        #beforeSave(boolean) boolean
    }
    class MDistributionLine {
        +setAccount(MAccount) void
        +calculateAmt(BigDecimal, int) void
        +calculateQty(BigDecimal) void
        #beforeSave(boolean) boolean
        #afterSave(boolean, boolean) boolean
    }
    class X_GL_Distribution {
        <<generated>>
    }
    class X_GL_DistributionLine {
        <<generated>>
    }
    MDistribution --|> X_GL_Distribution
    MDistributionLine --|> X_GL_DistributionLine
    MDistribution --> MDistributionLine : has many

+get(MAccount, ...)$ MDistribution[] +getAll(Properties)$ MDistribution[] +getLines(boolean) MDistributionLine[] +validate() String +distribute(MAccount, BigDecimal, BigDecimal, int) void #beforeSave(boolean) boolean +setAccount(MAccount) void +calculateAmt(BigDecimal, int) void +calculateQty(BigDecimal) void #beforeSave(boolean) boolean #afterSave(boolean, boolean) boolean <> > X_GL_Distribution MDistributionLine --

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

カラム名必須説明備考
GL_Distribution_IDIDPKGL配分ID主キー
NameString(60)Y名称
C_AcctSchema_IDTableDirectY会計スキーマ
IsCreateReversalYesNoY逆仕訳作成default Y
PostingTypeList(1)N転記タイプ適用範囲
C_DocType_IDTableDirectN伝票タイプ適用範囲
ValidFrom / ValidToDateN有効期間
AnyAcct 〜 AnyWarehouse(全20種)YesNoY任意◯◯フラグdefault Y
Account_ID / Org_ID / C_BPartner_ID 等Search/TableN一致条件の値Any◯◯=Y なら保存時クリア
PercentTotalNumberY総パーセント明細合計
IsValidYesNoY有効default N・validate() が設定
ProcessingButtonN検査Verify GL Distribution
SeqNoIntegerYシーケンスNodefault 0・適用順
カラム名必須説明備考
GL_DistributionLine_IDIDPK明細ID主キー
GL_Distribution_IDTableDirectY親配分
LineIntegerY明細番号default @SQL=SELECT NVL(MAX(Line),0)+10 ...
PercentNumberYパーセント0 = 残余受け行
OverwriteAcct 〜 OverwriteWarehouse(全20種)YesNoY上書きフラグ
Account_ID / Org_ID / C_BPartner_ID 等Search/TableN上書き値Overwrite=N なら保存時クリア
  1. 明細行 0 件 → @NoLines@ エラー
  2. PercentTotal != 100@PercentTotal@ &lt;&gt; 100 エラー
  3. パーセント 0 の行が 2 行以上 → エラー(残余受け行は最大 1 行)
  4. エラーが無ければ IsValid=Y をセット

distribute()(配分計算・端数処理)

Section titled “distribute()(配分計算・端数処理)”

各有効行について calculateAmt() / calculateQty()(金額 × Percent / 100、通貨精度で丸め)を実行後、合計と元金額の差額を調整します:

  • パーセント 0 の行があればその行に差額全額をセット
  • 無ければ配分金額が最大の行に差額を加算
  • 数量(Qty)も同じロジックで調整

Any◯◯=Y のセグメントは対応する値カラムを 0 にリセットします(20 セグメントすべて同じパターン)。

  • Line=0 なら MAX(Line)+10 で自動採番
  • Overwrite◯◯=N のセグメント値を 0 にリセット
  • OverwriteAcct=Y なのに勘定科目未指定、OverwriteOrg=Y なのに組織未指定は保存エラー
  • afterSave() で親 MDistribution.validate() を再実行し、IsValid を常に最新化
  • Callout: 標準 Callout の定義はありません(gw_column 上 callout なし。明細番号は SQL デフォルトで採番)
  • Model Validator: 配分ルールの作成権限や、特定科目への配分禁止などの統制は GL_Distribution / GL_DistributionLine の保存時検証として追加できます
  • 配分ロジック自体(distribute の按分方法)はコア側処理のため、要件が合わない場合は転記後のデータを対象とするカスタムプロセスでの対応を推奨します
プロセス名説明
検査(Verify GL Distribution)ヘッダの Processing ボタン。validate() を実行し IsValid を更新

共通費の部門按分・組織別配賦は GL 配分の設計次第で締め作業を大幅に自動化できます。配賦ポリシーの ERP への落とし込みをご支援します。

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

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