iDempiere 関連取引先の使い方|取引先管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
関連取引先は、2 つの取引先の間の「第三者関係ルール」を定義するマスタです。「出荷は A 社へ、請求書は親会社の B 社へ」「B 社の請求を A 社が支払う」といった、伝票の宛先・支払関係を取引先マスタとは別のレコードとして管理します。
📌 ポイント: 取引先住所を指定しない場合、そのルールは対象取引先のすべての住所に適用されます。特定の出荷先住所だけに適用したい場合のみ住所を指定してください。
関連取引先でできること
Section titled “関連取引先でできること”- 出荷先と請求先を別の取引先に分離(子会社へ納品・親会社へ請求など)
- 関係取引先による請求書の支払(入金先: Pay-From ルール)
- 支払先住所(Remit-To)の指定
- 取引先住所単位でのルール適用(住所未指定なら全住所に適用)
- グループ企業・代理店経由取引の宛先ルールの一元管理
関連取引先は 1 タブのみのシンプルな構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 関連取引先 | C_BP_Relation | 約13項目 | 取引先と関係取引先のペア + 4つの関係フラグ |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>取引先管理 > 取引先管理セットアップ > 関連取引先"] --> B["➕ 新規で名称を入力"]
B --> C["👥 取引先を選択<br/>(ルールの起点となる取引先)"]
C --> D["🔗 関係取引先と<br/>関係取引先住所を選択"]
D --> E{適用する関係}
E -->|納品の宛先| F["📦 出荷納品先にチェック"]
E -->|請求書の宛先| G["🧾 請求先にチェック"]
E -->|請求を支払える| H["💰 入金先にチェック"]
E -->|支払の宛先| I["🏦 支払先にチェック"]
F --> J["💾 保存"]
G --> J
H --> J
I --> J
アクセス方法
Section titled “アクセス方法”メニューから「取引先管理 > 取引先管理セットアップ > 関連取引先」を開きます。
- ツールバーの「新規」ボタンをクリック
- 必須項目を入力:
- 名称: ルールの名前(例:
A社出荷→B社請求) - 取引先: ルールの起点となる取引先
- 関係取引先: 関係先となる取引先
- 関係取引先住所: 関係取引先側の適用住所(必須)
- 名称: ルールの名前(例:
- 関係の種類をチェック(出荷納品先 / 請求先 / 入金先 / 支払先)
- 必要に応じて 取引先住所 を指定(未指定なら全住所に適用)
- 「保存」をクリック
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列(60) | ルールの識別名 |
| 説明 | - | 文字列(255) | 補足説明 |
| 取引先 | 必須 | 検索 | ルールの起点となる取引先 |
| 取引先住所 | - | 選択 | 起点側の適用住所(未指定=全住所) |
| 関係取引先 | 必須 | 検索 | 関係先の取引先 |
| 関係取引先住所 | 必須 | 選択 | 関係先側の住所 |
| 出荷納品先 | - | チェック | 関係先を出荷の宛先とする |
| 請求先 | - | チェック | 関係先を請求書の宛先とする |
| 入金先 | - | チェック | 関係先が取引先の請求書を支払える |
| 支払先 | - | チェック | 関係先を支払の宛先とする |
| 有効 | 必須 | チェック | レコードの有効/無効 |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 取引先住所を空欄にするとどうなりますか?
Section titled “Q. 取引先住所を空欄にするとどうなりますか?”そのルールは対象取引先のすべての住所に適用されます(アプリケーション辞書のタブ説明に明記された標準動作です)。特定の出荷先住所だけを親会社請求にしたい場合は、取引先住所を明示的に指定してください。
Q. 「入金先(Pay-From)」は何に使われますか?
Section titled “Q. 「入金先(Pay-From)」は何に使われますか?”支払選択などで「別の取引先がこの取引先の請求書を支払ってよいか」の判定に使われます。ソースコード上は MBPRelation.canPay() が IsPayFrom='Y' かつ 取引先/関係取引先 のペアが一致する有効なルールの存在を確認します。親会社による子会社請求の一括支払(サードパーティ支払)に利用できます。
Q. 取引先マスタの「請求先」住所との違いは?
Section titled “Q. 取引先マスタの「請求先」住所との違いは?”取引先マスタの住所フラグは同一取引先内の住所の使い分けです。関連取引先は別の取引先へ宛先を振り替えるためのルールで、取引先をまたぐ関係(親会社・代理店等)を表現する場合に使用します。
🛠 技術仕様(開発者向け)
関連取引先は C_BP_Relation テーブル(削除可、アクセスレベル 2)に格納されるマスタです。モデルクラスは MBPRelation(96行)で、コンストラクタ群のほかに静的判定メソッド canPay() のみを持つ薄いクラスです。Document 型ではありません。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MBPRelation {
+canPay(ctx, bpProxyId, bpDocId, trxName)$ boolean
}
class X_C_BP_Relation {
<<generated>>
}
class PO {
<<abstract>>
}
MBPRelation --|> X_C_BP_Relation
X_C_BP_Relation --|> PO
MBPRelation --> MBPartner : relates two partners
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MBPRelation.java
関連DBテーブル
Section titled “関連DBテーブル”C_BP_Relation(関連取引先)
Section titled “C_BP_Relation(関連取引先)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_BP_Relation_ID | ID | PK | 関連取引先ID | 主キー |
| AD_Client_ID | TableDirect | Y | クライアント | default @#AD_Client_ID@ |
| AD_Org_ID | TableDirect | Y | 組織 | default @#AD_Org_ID@ |
| Name | String(60) | Y | 名称 | 識別子(Identifier) |
| Description | String(255) | N | 説明 | |
| C_BPartner_ID | Search | Y | 取引先 | ルールの起点 |
| C_BPartner_Location_ID | TableDirect | N | 取引先住所 | NULL=全住所に適用 |
| C_BPartnerRelation_ID | Search | Y | 関係取引先 | |
| C_BPartnerRelation_Location_ID | Table | Y | 関係取引先住所 | |
| IsShipTo | YesNo | Y | 出荷納品先 | default N |
| IsBillTo | YesNo | Y | 請求先 | |
| IsPayFrom | YesNo | Y | 入金先 | canPay() の判定対象 |
| IsRemitTo | YesNo | Y | 支払先 | |
| IsActive | YesNo | Y | 有効 | default Y |
ビジネスロジック
Section titled “ビジネスロジック”MBPRelation に beforeSave/afterSave のオーバーライドはありません。唯一のロジックは静的メソッド canPay() です:
public static boolean canPay(Properties ctx, int bpProxyId, int bpDocId, String trxName) { int cnt = new Query(ctx, Table_Name, "IsPayFrom='Y' AND C_BPartner_ID=? AND C_BPartnerRelation_ID=?", trxName) .setParameters(bpDocId, bpProxyId) .setOnlyActiveRecords(true) .count(); return cnt > 0;}伝票の取引先(bpDocId)に対して、支払を代行する取引先(bpProxyId)が IsPayFrom='Y' の有効なルールを持つかを件数で判定します。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”C_BP_Relation に標準の Callout は定義されていません。関係フラグの排他制御や重複ルールの禁止など独自制約を追加する場合は、OSGi Model Validator の modelChange()(TYPE_BEFORE_NEW / TYPE_BEFORE_CHANGE)で MBPRelation を検証する方式を推奨します。コア改変は不要です。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”出荷先・請求先の振替ルールは、グループ企業取引や代理店ビジネスの伝票フローに直結します。標準の関連取引先で足りない判定ロジックも Model Validator で安全に拡張できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。