iDempiere 取引先グループの使い方|取引先管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
取引先グループは、取引先を分類し、会計勘定科目・価格表・割引スキーマ・督促ルールの既定値をまとめて定義するマスタです。グループに属する取引先を新規登録すると、ここで設定した会計パラメータが自動的にコピーされます。
📌 ポイント: 取引先グループは「集計・レポートの分類軸」であると同時に「取引先マスタの初期値テンプレート」です。取引先を1件ずつ会計設定するのを避けるため、取引先を登録する前にグループ設計を済ませておくことが重要です。
取引先グループでできること
Section titled “取引先グループでできること”- 取引先の分類(レポート・集計の軸)
- 得意先債権・仕入先債務など会計勘定科目の既定値定義(会計スキーマごと)
- 販売用・購買用の価格表の既定値設定
- 販売用・購買用の割引スキーマの既定値設定
- 督促(Dunning)ルールの既定値設定
- 与信警戒%・照合時価格差異許容範囲%の設定
- リクエストの優先度ベース(
優先度)の設定 - 所属取引先への勘定科目の一括上書き反映
取引先グループは3タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 取引先グループ | C_BP_Group | 17項目 | グループ本体(既定値・分類) |
| 会計 | C_BP_Group_Acct | 15項目 | 会計スキーマごとの勘定科目既定値 |
| 所属取引先 | C_BPartner | 30項目 | このグループに属する取引先の一覧・編集 |
graph TD
T1["🏷 取引先グループ<br/>C_BP_Group<br/>17項目"]
T2["📒 会計<br/>C_BP_Group_Acct<br/>15項目"]
T3["👥 所属取引先<br/>C_BPartner<br/>30項目"]
T1 --> T2
T1 --> T3
💡 ヒント: 「所属取引先」タブは参照専用ではなく編集可能です。ただし取引先の全項目が並ぶわけではないため、詳細な設定は取引先マスタから行ってください。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>取引先管理 > 取引先管理セットアップ > 取引先グループ"] --> B["➕ 新規で基本情報を入力<br/>(検索キー・名称)"]
B --> C["💴 商流の既定値を設定<br/>価格表・購買用価格表<br/>割引スキーマ"]
C --> D["⚖️ 管理値を設定<br/>与信警戒%・督促<br/>照合時価格差異許容範囲%"]
D --> E["💾 保存<br/>(会計タブが自動生成される)"]
E --> F["📒 会計タブで<br/>勘定科目を確認・修正"]
F --> G{既存取引先へ<br/>反映するか}
G -->|する| H["🔁 所属取引先勘定科目上書き<br/>ボタンを実行"]
G -->|しない| I["🔗 取引先マスタで<br/>グループを選択して利用"]
H --> I
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「取引先管理 > 取引先管理セットアップ > 取引先グループ」を開きます。
新規登録(必須項目ベースの手順)
Section titled “新規登録(必須項目ベースの手順)”- ツールバーの「新規」ボタンをクリック
- 必須項目を入力:
- 検索キー: グループコード(40文字以内、一意)
- 名称: グループ名(60文字以内、例:
一般得意先、主要仕入先) - 有効 / デフォルト / 機密情報: 必要に応じて設定
- 既定値を必要に応じて設定:
- 価格表 / 購買用価格表: 所属取引先の既定価格表
- 割引スキーマ / 購買割引スキーマ: 取引割引の計算スキーマ
- 督促: 期日超過時の督促ルール
- 与信警戒%: 与信限度額に対する警戒ラインの割合
- 照合時価格差異許容範囲%: 発注と請求の価格照合の許容差
- 「保存」をクリック
- 「会計」タブに移動し、自動生成された会計スキーマ行の勘定科目を確認・修正
⚠️ 注意: 会計タブの行は新規保存時にのみ会計スキーマの既定値から自動生成されます。会計スキーマを後から追加した場合、既存グループには行が生成されないため手動追加が必要です。
所属取引先への勘定科目の一括反映
Section titled “所属取引先への勘定科目の一括反映”会計タブの「所属取引先勘定科目上書き」ボタン(Processing)を実行すると、グループの勘定科目設定がこのグループに属する取引先へコピー・上書きされます。
⚠️ 注意: このボタンは「上書き」です。取引先ごとに個別調整した勘定科目も、グループの値で塗りつぶされます。実行前に影響範囲を必ず確認してください。
項目リファレンス
Section titled “項目リファレンス”取引先グループタブ(主要項目)
Section titled “取引先グループタブ(主要項目)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 検索キー | 必須 | 文字列(40) | グループコード(一意) |
| 名称 | 必須 | 文字列(60) | グループ名 |
| 説明 | - | 文字列(255) | 補足説明 |
| 有効 | 必須 | チェック | レコードが有効か(既定 Y) |
| デフォルト | 必須 | チェック | 既定グループとして使用 |
| カラー | - | 選択 | 印刷・表示に使う色 |
| 優先度 | - | リスト | リクエスト優先度のベース |
| 機密情報 | 必須 | チェック | 機密情報の入力を許可(既定 N) |
| 価格表 | - | 選択 | 販売用の既定価格表 |
| 購買用価格表 | - | 選択 | 購買用の既定価格表 |
| 割引スキーマ | - | 選択 | 販売用の割引計算スキーマ |
| 購買割引スキーマ | - | 選択 | 購買用の割引計算スキーマ |
| 与信警戒% | - | 数値 | 与信限度額に対する警戒ライン(未設定時は 90 とみなす) |
| 照合時価格差異許容範囲% | - | 数値 | 発注・請求の価格照合許容差 |
| 督促 | - | 選択 | 期日超過時の督促ルール |
会計タブ(主要項目)
Section titled “会計タブ(主要項目)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 会計スキーマ | 必須 | 選択 | 対象の会計スキーマ |
| 得意先債権勘定 | 必須 | 勘定 | 売掛金 |
| 仕入先債務勘定 | 必須 | 勘定 | 買掛金 |
| 得意先前受勘定 | 必須 | 勘定 | 得意先からの前受金 |
| 仕入先前払勘定 | 必須 | 勘定 | 仕入先への前払金 |
| 未請求債務勘定 | 必須 | 勘定 | 入荷済み未請求分 |
| 売上割引勘定 | 必須 | 勘定 | 支払割引(費用側) |
| 仕入割引勘定 | 必須 | 勘定 | 支払割引(収益側) |
| 貸倒損失勘定 | 必須 | 勘定 | 債権の貸倒 |
| 前受収益勘定 | - | 勘定 | 未実現収益 |
| 所属取引先勘定科目上書き | - | ボタン | グループの勘定を所属取引先へコピー |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 取引先グループは取引先マスタで必須ですか?
Section titled “Q. 取引先グループは取引先マスタで必須ですか?”はい。取引先マスタは取引先グループへの参照を持ち、会計設定の初期値をグループから取得します。取引先を作る前に、最低1つのグループ(デフォルト チェック付き)を用意してください。MBPGroup.getDefault(ctx) が既定グループを取得します。
Q. 「与信警戒%」を空欄にするとどうなりますか?
Section titled “Q. 「与信警戒%」を空欄にするとどうなりますか?”MBPGroup.getCreditWatchPercent() は値が未設定(null)の場合に 90 を返します。また getCreditWatchRatio() は 0 以外の値なら 100 で割った比率を、そうでなければ 0.90 を返します。つまり空欄運用でも「与信限度額の 90%」が警戒ラインとして機能します。
Q. グループの勘定科目を変えたら、既存取引先にも反映されますか?
Section titled “Q. グループの勘定科目を変えたら、既存取引先にも反映されますか?”自動では反映されません。既存取引先へ反映するには、会計タブの「所属取引先勘定科目上書き」ボタンを明示的に実行する必要があります。実行すると取引先側の個別設定も上書きされる点に注意してください。
Q. グループを削除できますか?
Section titled “Q. グループを削除できますか?”C_BP_Group は削除可(IsDeleteable=Y)ですが、取引先から参照されているグループは外部キー制約で削除できません。使わなくなったグループは「有効」のチェックを外して無効化するのが安全です。
Q. 「優先度」は何に使われますか?
Section titled “Q. 「優先度」は何に使われますか?”PriorityBase はリクエストの優先度計算に使われます。MRequest.setPriority() が取引先のグループを参照し、PRIORITYBASE_Lower なら優先度を2段階下げ、それ以外(同一以外)なら2段階上げた値を計算します。VIP 顧客のリクエストを自動的に高優先度にする、といった運用が可能です。
🛠 技術仕様(開発者向け)
取引先グループは C_BP_Group テーブル(アクセスレベル 3 = クライアント/組織、削除可)に格納されます。モデルクラスは MBPGroup(329行)で、ImmutablePOSupport を実装しキャッシュ経由の高速参照に対応します。子テーブル C_BP_Group_Acct には専用 M クラスがなく、生成クラス X_C_BP_Group_Acct のみが存在します。Document 型ではありません。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MBPGroup {
+get(ctx, C_BP_Group_ID) MBPGroup
+getDefault(ctx) MBPGroup
+getOfBPartner(ctx, C_BPartner_ID) MBPGroup
+getCopy(ctx, id, trxName) MBPGroup
+getCreditWatchPercent() BigDecimal
+getCreditWatchRatio() BigDecimal
+afterSave(boolean, boolean) boolean
+markImmutable() MBPGroup
}
class X_C_BP_Group {
<<generated>>
}
class X_C_BP_Group_Acct {
<<generated>>
}
class ImmutablePOSupport {
<<interface>>
}
class PO {
<<abstract>>
}
MBPGroup --|> X_C_BP_Group
X_C_BP_Group --|> PO
MBPGroup ..|> ImmutablePOSupport
MBPGroup --> X_C_BP_Group_Acct : insert_Accounting
MBPGroup --> MBPartner : defaults for
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MBPGroup.java
関連DBテーブル
Section titled “関連DBテーブル”C_BP_Group(取引先グループ)
Section titled “C_BP_Group(取引先グループ)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_BP_Group_ID | ID | PK | 取引先グループID | 主キー |
| C_BP_Group_UU | UUID(36) | N | UUID | |
| AD_Client_ID | Table Direct | Y | クライアント | 既定 @#AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | 既定 @#AD_Org_ID@ |
| Value | String(40) | Y | 検索キー | 一意 |
| Name | String(60) | Y | 名称 | |
| Description | String(255) | N | 説明 | |
| IsActive | Yes-No | Y | 有効 | 既定 Y |
| IsDefault | Yes-No | Y | デフォルト | |
| IsConfidentialInfo | Yes-No | Y | 機密情報 | 既定 N |
| PriorityBase | List(1) | N | 優先度 | リクエスト優先度の基準 |
| AD_PrintColor_ID | Table Direct | N | カラー | |
| M_PriceList_ID | Table Direct | N | 価格表 | 販売用 |
| PO_PriceList_ID | Table | N | 購買用価格表 | |
| M_DiscountSchema_ID | Table | N | 割引スキーマ | 販売用 |
| PO_DiscountSchema_ID | Table | N | 購買割引スキーマ | |
| CreditWatchPercent | Number | N | 与信警戒% | 未設定時は 90 扱い |
| PriceMatchTolerance | Number | N | 照合時価格差異許容範囲% | |
| C_Dunning_ID | Table Direct | N | 督促 |
C_BP_Group_Acct(取引先グループ会計)
Section titled “C_BP_Group_Acct(取引先グループ会計)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| C_BP_Group_ID | Table Direct | PK | グループFK |
| C_AcctSchema_ID | Table Direct | PK | 会計スキーマFK |
| C_Receivable_Acct | Account | Y | 得意先債権勘定 |
| V_Liability_Acct | Account | Y | 仕入先債務勘定 |
| C_Prepayment_Acct | Account | Y | 得意先前受勘定 |
| V_Prepayment_Acct | Account | Y | 仕入先前払勘定 |
| NotInvoicedReceipts_Acct | Account | Y | 未請求債務勘定 |
| PayDiscount_Exp_Acct | Account | Y | 売上割引勘定 |
| PayDiscount_Rev_Acct | Account | Y | 仕入割引勘定 |
| WriteOff_Acct | Account | Y | 貸倒損失勘定 |
| UnEarnedRevenue_Acct | Account | N | 前受収益勘定 |
| Processing | Button | N | 所属取引先勘定科目上書き |
erDiagram
C_BP_Group ||--o{ C_BP_Group_Acct : "accounting per schema"
C_BP_Group ||--o{ C_BPartner : "members"
C_BP_Group }o--o| M_PriceList : "default price list"
C_BP_Group }o--o| C_Dunning : "dunning rule"
C_BP_Group_Acct }o--|| C_AcctSchema : "schema"
C_BPartner ||--o{ C_BPartner_Acct : "copied defaults"
ビジネスロジック
Section titled “ビジネスロジック”afterSave() — 会計レコードの自動生成
Section titled “afterSave() — 会計レコードの自動生成”protected boolean afterSave (boolean newRecord, boolean success){ // Create accounting records (C_BP_Group_Acct) if (newRecord && success) return insert_Accounting("C_BP_Group_Acct", "C_AcctSchema_Default", null); return success;}- 新規レコードかつ保存成功時のみ、
C_AcctSchema_DefaultからC_BP_Group_Acctを生成します - 戻り値が
insert_Accounting()の結果である点がMWithholdingと異なります。会計レコードの生成に失敗すると保存自体が失敗します
与信警戒値のフォールバック
Section titled “与信警戒値のフォールバック”public BigDecimal getCreditWatchPercent(){ BigDecimal bd = super.getCreditWatchPercent(); if (bd != null) return bd; return new BigDecimal(90);}
public BigDecimal getCreditWatchRatio(){ BigDecimal bd = super.getCreditWatchPercent(); if (bd.compareTo(Env.ZERO) != 0) return bd.divide(Env.ONEHUNDRED, 2, RoundingMode.HALF_UP); return BigDecimal.valueOf(0.90);}未設定時に 90%(比率 0.90)へフォールバックするため、DB 値が NULL でも与信ステータス判定は動作します。
取得系ユーティリティ
Section titled “取得系ユーティリティ”| メソッド | 用途 |
|---|---|
get(Properties, int) / get(int) | ID 指定のキャッシュ付き取得 |
getDefault(Properties) | IsDefault=Y のグループを取得 |
getOfBPartner(Properties, int) | 取引先が属するグループを取得 |
getCopy(Properties, int, String) | 変更可能なコピーを取得(Immutable 対策) |
markImmutable() | キャッシュ格納用に不変化 |
⚠️ 注意:
MBPGroup.get()が返すインスタンスは**イミュータブル(変更不可)**の場合があります。値を更新する処理では必ずgetCopy()を使ってください。markImmutable()済みのオブジェクトに setter を呼ぶと例外になります。
リクエスト優先度への波及
Section titled “リクエスト優先度への波及”MRequest.setPriority() は取引先のグループ(MBPGroup.get(ctx, bp.getC_BP_Group_ID()))の PriorityBase を参照し、PRIORITYBASE_Lower なら優先度コードを +2(低くする)、それ以外なら -2(高くする)した値を上限 High・下限 Low でクランプして適用します。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”Callout
Section titled “Callout”C_BP_Group / C_BP_Group_Acct のカラムには Callout の登録がありません(AD_Column.Callout はすべて未設定)。
OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”public class CustomBPGroupValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof MBPGroup && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { MBPGroup group = (MBPGroup) po; // 例: 得意先グループには必ず価格表を要求する if (group.getValue().startsWith("CUST") && group.getM_PriceList_ID() == 0) { throw new AdempiereException("得意先グループには価格表の設定が必要です"); } } return null; }}取引先作成時の既定値拡張
Section titled “取引先作成時の既定値拡張”グループから取引先へ会計設定をコピーする処理を独自ルールで拡張する場合は、C_BPartner の TYPE_AFTER_NEW で C_BPartner_Acct を書き換えます。グループ側の「所属取引先勘定科目上書き」と役割が重複するため、どちらを正とするか運用ルールを決めてから実装してください。
関連プロセス
Section titled “関連プロセス”| プロセス名 | 説明 |
|---|---|
| 所属取引先勘定科目上書き | 会計タブの Processing ボタン。グループの勘定科目を所属取引先へコピー・上書き |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”取引先グループは会計・与信・価格の既定値が集約される要のマスタです。グループ設計を誤ると後からの是正コストが大きくなるため、導入初期の設計支援からご相談いただけます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。