iDempiere GL配分の使い方|会計 操作マニュアル・技術仕様
📖 会計の全体像: 会計の全体図 も合わせてご覧ください。
GL配分は、転記時に条件(勘定科目の組み合わせ)に一致した仕訳を、明細行で定義した比率で別の勘定・組織・ディメンションに振り替えるルールを定義するウィンドウです。本社共通費の部門按分、特定科目の組織別配賦などを転記エンジンに自動で行わせることができます。
📌 ポイント: 配分は転記のタイミングで自動適用されます。明細のパーセント合計が 100% でないとルールは「有効」になりません。ヘッダの「検査」ボタンで必ず検証してから運用してください。
GL配分でできること
Section titled “GL配分でできること”- 会計スキーマ・転記タイプ・伝票タイプを指定した適用範囲の限定
- 勘定科目・組織・取引先・品目・プロジェクト等のセグメント条件による一致判定(「任意◯◯」フラグで柔軟に指定)
- 明細行ごとのパーセント配分と、勘定・組織など各セグメントの上書き
- 逆仕訳作成(Create Reversal)による元仕訳の相殺 or 元仕訳の置き換えの選択
- 有効期間(有効開始日・終了日)による期間限定の配分ルール
- 「検査」ボタンによる配分定義の妥当性検証
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| GL配分 | GL_Distribution | 約60項目 | 適用条件(一致させるセグメントの組み合わせ)と検証 |
| 詳細 | GL_DistributionLine | 約44項目 | 配分先(パーセント + 上書きするセグメント) |
基本操作手順
Section titled “基本操作手順”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
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「会計管理 > 会計設定 > GL配分」を開きます。
- 「新規」ボタンをクリックし、GL配分タブで入力:
- 名称: 配分ルール名
- 会計スキーマ: 適用対象の会計スキーマ(必須)
- 転記タイプ / 伝票タイプ / 有効開始日・終了日: 適用範囲を絞る場合に指定
- 逆仕訳作成(Create Reversal): チェック時は元仕訳を相殺する逆仕訳を作成、外すと元仕訳を置き換え
- 一致条件を設定:
- 判定に使わないセグメントは「任意◯◯」(任意組織・任意勘定科目など)をオンのまま
- 判定に使うセグメントは「任意◯◯」をオフにして値を指定(例: 任意勘定科目=オフ + 勘定科目=福利厚生費)
- 詳細タブで配分行を登録:
- パーセント: 当該行の配分割合
- ◯◯上書き: 置き換えたいセグメントの上書きフラグをオンにして値を指定(例: 組織上書き=オン + 組織=営業部)
- 上書きフラグがオフのセグメントは元仕訳の値がそのまま維持されます
- ヘッダに戻り「検査」ボタンをクリックして検証
- 有効(IsValid)が Y になれば、以後の転記で自動適用されます
⚠️ 注意: 「科目上書き」をオンにした行は勘定科目の指定が必須、「組織上書き」をオンにした行は組織の指定が必須です(未指定は保存エラー)。また、パーセント 0 の行は「残余(端数)受け行」として 1 行だけ許可されます。
項目リファレンス
Section titled “項目リファレンス”主要項目のみ掲載します。全項目一覧はリファレンス参照。
GL配分タブ(ヘッダ = 一致条件)
Section titled “GL配分タブ(ヘッダ = 一致条件)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列 | 配分ルール名 |
| 会計スキーマ | 必須 | 選択 | 適用対象の会計スキーマ |
| 逆仕訳作成 | 必須 | チェック | 逆仕訳で相殺するか、元仕訳を置き換えるか(既定 Y) |
| 転記タイプ / 伝票タイプ | - | リスト/選択 | 適用範囲の限定 |
| 有効開始日 / 有効終了日 | - | 日付 | 期間限定ルール |
| 任意勘定科目 + 勘定科目 | 必須/- | チェック+検索 | 一致条件: 勘定科目 |
| 任意組織 + 組織 | 必須/- | チェック+選択 | 一致条件: 組織 |
| 任意取引先・任意品目・任意プロジェクト 等 | 必須 | チェック+選択 | 各セグメントの一致条件(計20種) |
| 総パーセント | 必須 | 数値 | 明細のパーセント合計(自動集計) |
| 有効(IsValid) | 必須 | チェック | 検証結果(自動設定) |
| 検査 | - | ボタン | 配分定義の検証 |
詳細タブ(配分行)
Section titled “詳細タブ(配分行)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 明細番号 | 必須 | 整数 | 自動採番(+10刻み) |
| パーセント | 必須 | 数値 | 配分割合(0 = 残余受け行) |
| 科目上書き + 勘定科目 | 必須/- | チェック+検索 | オン時は勘定科目の指定必須 |
| 組織上書き + 組織 | 必須/- | チェック+選択 | オン時は組織の指定必須 |
| 取引先上書き・品目上書き・プロジェクト上書き 等 | 必須 | チェック+選択 | 上書きするセグメントの指定(計20種) |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”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() で仕訳を按分します。
アーキテクチャ概要
Section titled “アーキテクチャ概要”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
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MDistribution.java / MDistributionLine.java
関連DBテーブル
Section titled “関連DBテーブル”GL_Distribution(GL配分ヘッダ)
Section titled “GL_Distribution(GL配分ヘッダ)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| GL_Distribution_ID | ID | PK | GL配分ID | 主キー |
| Name | String(60) | Y | 名称 | |
| C_AcctSchema_ID | TableDirect | Y | 会計スキーマ | |
| IsCreateReversal | YesNo | Y | 逆仕訳作成 | default Y |
| PostingType | List(1) | N | 転記タイプ | 適用範囲 |
| C_DocType_ID | TableDirect | N | 伝票タイプ | 適用範囲 |
| ValidFrom / ValidTo | Date | N | 有効期間 | |
| AnyAcct 〜 AnyWarehouse(全20種) | YesNo | Y | 任意◯◯フラグ | default Y |
| Account_ID / Org_ID / C_BPartner_ID 等 | Search/Table | N | 一致条件の値 | Any◯◯=Y なら保存時クリア |
| PercentTotal | Number | Y | 総パーセント | 明細合計 |
| IsValid | YesNo | Y | 有効 | default N・validate() が設定 |
| Processing | Button | N | 検査 | Verify GL Distribution |
| SeqNo | Integer | Y | シーケンスNo | default 0・適用順 |
GL_DistributionLine(GL配分明細)
Section titled “GL_DistributionLine(GL配分明細)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| GL_DistributionLine_ID | ID | PK | 明細ID | 主キー |
| GL_Distribution_ID | TableDirect | Y | 親配分 | |
| Line | Integer | Y | 明細番号 | default @SQL=SELECT NVL(MAX(Line),0)+10 ... |
| Percent | Number | Y | パーセント | 0 = 残余受け行 |
| OverwriteAcct 〜 OverwriteWarehouse(全20種) | YesNo | Y | 上書きフラグ | |
| Account_ID / Org_ID / C_BPartner_ID 等 | Search/Table | N | 上書き値 | Overwrite=N なら保存時クリア |
ビジネスロジック
Section titled “ビジネスロジック”validate()(MDistribution 433行〜)
Section titled “validate()(MDistribution 433行〜)”- 明細行 0 件 →
@NoLines@エラー PercentTotal != 100→@PercentTotal@ <> 100エラー- パーセント 0 の行が 2 行以上 → エラー(残余受け行は最大 1 行)
- エラーが無ければ
IsValid=Yをセット
distribute()(配分計算・端数処理)
Section titled “distribute()(配分計算・端数処理)”各有効行について calculateAmt() / calculateQty()(金額 × Percent / 100、通貨精度で丸め)を実行後、合計と元金額の差額を調整します:
- パーセント 0 の行があればその行に差額全額をセット
- 無ければ配分金額が最大の行に差額を加算
- 数量(Qty)も同じロジックで調整
beforeSave()(ヘッダ)
Section titled “beforeSave()(ヘッダ)”Any◯◯=Y のセグメントは対応する値カラムを 0 にリセットします(20 セグメントすべて同じパターン)。
明細の beforeSave() / afterSave()
Section titled “明細の beforeSave() / afterSave()”Line=0ならMAX(Line)+10で自動採番Overwrite◯◯=Nのセグメント値を 0 にリセットOverwriteAcct=Yなのに勘定科目未指定、OverwriteOrg=Yなのに組織未指定は保存エラーafterSave()で親MDistribution.validate()を再実行し、IsValid を常に最新化
拡張ポイント
Section titled “拡張ポイント”- Callout: 標準 Callout の定義はありません(gw_column 上 callout なし。明細番号は SQL デフォルトで採番)
- Model Validator: 配分ルールの作成権限や、特定科目への配分禁止などの統制は
GL_Distribution/GL_DistributionLineの保存時検証として追加できます - 配分ロジック自体(distribute の按分方法)はコア側処理のため、要件が合わない場合は転記後のデータを対象とするカスタムプロセスでの対応を推奨します
関連プロセス
Section titled “関連プロセス”| プロセス名 | 説明 |
|---|---|
| 検査(Verify GL Distribution) | ヘッダの Processing ボタン。validate() を実行し IsValid を更新 |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”共通費の部門按分・組織別配賦は GL 配分の設計次第で締め作業を大幅に自動化できます。配賦ポリシーの ERP への落とし込みをご支援します。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。