iDempiere 支払条件の使い方|取引先管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
支払条件は、取引先との支払期日や割引条件を定義するマスタです。受注伝票・発注伝票・請求書に適用され、支払期日の自動計算や分割払いスケジュールの生成を行います。
📌 ポイント: 支払条件を取引先マスタに設定しておくと、伝票作成時に自動的にセットされます。月末締翌月払いなどの固定日払いも「固定月日締め」フラグで対応できます。
支払条件は取引先マスタにデフォルト値として設定でき、伝票作成時に自動的にセットされます。
支払条件でできること
Section titled “支払条件でできること”- 支払期日の自動計算(ネット日数ベース)
- 早期支払割引の設定(割引率・割引日数)
- 分割払いスケジュールの定義(複数回払い)
- 月末締め翌月払い等の固定日払い
- 納品後支払いの設定
- 受注伝票・請求書への自動適用
支払条件はシンプルな3タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 支払条件 | C_PaymentTerm | 約15項目 | 基本条件(日数・割引・固定月日等) |
| スケジュール | C_PaySchedule | 約6項目 | 分割払いの各回設定(割合・日数・割引率) |
| 翻訳 | C_PaymentTerm_Trl | 約4項目 | 多言語対応の翻訳 |
💡 ヒント: 分割払いを使用しない場合は「支払条件」タブだけで設定が完了します。スケジュールタブは分割払い(2回払い以上)の場合のみ使用してください。
支払条件の基本操作手順
Section titled “支払条件の基本操作手順”graph TD
A["🚀 メニューから開く<br/>取引先管理 > 取引先ルール > 支払条件"] --> B["➕ 新規で基本情報を入力<br/>(検索キー・名前・ネット日数)"]
B --> C{支払タイプ}
C -->|シンプルな期日払い| D["📅 ネット日数を設定<br/>(例: 30日後払い)"]
C -->|早期割引あり| E["💰 割引率・割引日数を設定<br/>(例: 10日以内2%割引)"]
C -->|固定月日払い| F["📆 固定月日締めにチェック<br/>固定月日・オフセット月数を設定"]
C -->|分割払い| G["📋 スケジュールタブへ移動<br/>各回の割合・日数を登録"]
D --> H["💾 保存"]
E --> H
F --> H
G --> I["✅ 検証ボタンで<br/>合計100%を確認"]
I --> H
H --> J["🔗 取引先マスタに<br/>デフォルト支払条件として設定"]
⚠️ 注意: スケジュールタブで設定した各回の割合の合計が100%でないと「有効」フラグがfalseになり、伝票への適用時にエラーとなります。
アクセス方法
Section titled “アクセス方法”メニューから「取引先管理 > 取引先ルール > 支払条件」を開きます。
新規登録(単純な支払条件)
Section titled “新規登録(単純な支払条件)”- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- 検索キー: 支払条件コード(例:
NET30) - 名前: 支払条件名(例:
30日後払い) - ネット日数: 支払期日までの日数(例:
30) - 割引率(%): 早期支払割引率(例:
2) - 割引日数: 割引が適用される日数(例:
10)
- 検索キー: 支払条件コード(例:
- 「保存」をクリック
分割払いの設定
Section titled “分割払いの設定”- 支払条件タブで基本情報を入力・保存
- 「スケジュール」タブに移動
- 各分割回を登録:
- 割合(%): 各回の支払割合(例: 1回目50%、2回目50%)
- ネット日数: 各回の支払期日日数
- 割引率(%): 各回の割引率
- 全回の割合合計が**100%**になるよう設定
- 支払条件タブに戻り「検証」ボタンで妥当性を確認
項目リファレンス
Section titled “項目リファレンス”支払条件タブ
Section titled “支払条件タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 検索キー | 必須 | 文字列 | 支払条件の一意コード |
| 名前 | 必須 | 文字列 | 支払条件の名称 |
| ネット日数 | 必須 | 整数 | 支払期日までの日数 |
| 割引率(%) | - | 数値 | 早期支払の割引率 |
| 割引日数 | - | 整数 | 割引が適用される日数 |
| 割引日数2 | - | 整数 | 第2割引の日数 |
| 割引率2(%) | - | 数値 | 第2割引の割引率 |
| 固定月日締め | - | チェック | 月末等の固定日で締める場合にチェック |
| 固定月日 | - | 整数 | 締め日(例: 末日=31、20日=20) |
| 固定月オフセット | - | 整数 | 締め日からの支払月数(例: 翌月=1) |
| 納品後 | - | チェック | 納品日を起算日とする場合にチェック |
| 有効 | 自動 | チェック | スケジュールの妥当性(合計100%チェック) |
| デフォルト | - | チェック | デフォルトの支払条件として使用 |
スケジュールタブ
Section titled “スケジュールタブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 割合(%) | 必須 | 数値 | 当該回の支払割合 |
| ネット日数 | 必須 | 整数 | 当該回の支払期日日数 |
| 割引率(%) | - | 数値 | 当該回の割引率 |
| 割引日数 | - | 整数 | 当該回の割引日数 |
| 有効 | 自動 | チェック | スケジュール全体の妥当性 |
支払条件の適用フロー
Section titled “支払条件の適用フロー”graph TD
A[支払条件マスタ] --> B{スケジュールあり?}
B -->|なし| C[単純な期日計算]
B -->|あり| D[分割払いスケジュール生成]
C --> E[請求書に期日セット]
D --> F[請求書に複数回の支払予定生成]
E --> G[入出金管理で消込]
F --> G
代表的な支払条件の設定例
Section titled “代表的な支払条件の設定例”| 支払条件名 | ネット日数 | 割引率 | 割引日数 | 固定月日 | 備考 |
|---|---|---|---|---|---|
| 即時払い | 0 | - | - | - | 現金取引 |
| 30日後払い | 30 | - | - | - | 基本的な掛売り |
| 2/10 Net 30 | 30 | 2% | 10 | - | 10日以内なら2%割引 |
| 月末締翌月末 | - | - | - | 31日、オフセット1 | 固定月日締めを使用 |
| 3回分割 | - | - | - | - | スケジュールタブで3回設定 |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 「有効」フラグがfalseになるのはなぜですか?
Section titled “Q. 「有効」フラグがfalseになるのはなぜですか?”スケジュールタブに登録した分割払いの割合合計が100%になっていません。各回の割合を見直し、合計が正確に100%になるよう調整してください。支払条件タブの「検証」ボタンで詳細を確認できます。
Q. 月末締め翌月末払いはどう設定しますか?
Section titled “Q. 月末締め翌月末払いはどう設定しますか?”- 「固定月日締め」にチェック
- 「固定月日」に
31(月末の意味) - 「固定月オフセット」に
1(翌月の意味) - ネット日数は
0に設定
Q. 支払条件を変更すると既存の伝票に影響しますか?
Section titled “Q. 支払条件を変更すると既存の伝票に影響しますか?”完了済みの伝票には影響しません。支払条件の変更は、変更後に新規作成または再適用される伝票にのみ反映されます。
Q. 納品後払いとは何ですか?
Section titled “Q. 納品後払いとは何ですか?”「納品後」フラグをチェックすると、支払期日の起算日が伝票日付ではなく納品日(出荷日)になります。納品が完了するまで支払期日が確定しません。
業務フロー上の位置づけ
Section titled “業務フロー上の位置づけ”graph TD
A[支払条件マスタ] --> B[取引先マスタ]
B --> C[受注伝票]
B --> D[発注伝票]
C --> E[売上請求書]
D --> F[仕入請求書]
E --> G[支払スケジュール]
F --> G
G --> H[入出金管理]
関連する仕様書
Section titled “関連する仕様書”OSS ERP導入についてのご相談
Section titled “OSS ERP導入についてのご相談”iDempiereの支払条件は、単純な期日設定から分割払い・早期割引まで柔軟に対応できます。 取引先ごとの支払条件管理をオープンソースERPで効率化しませんか?
As-Link株式会社では、iDempiereの導入支援・カスタマイズ開発を承っております。
🛠 技術仕様(開発者向け)
支払条件は請求書・受注伝票の支払期日と割引条件を定義するマスタで、C_PaymentTerm テーブルに格納されます。MPaymentTerm クラス(445行)が期日計算・割引計算・分割払いスケジュール生成のロジックを担います。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MPaymentTerm {
+validate() String
+apply(MInvoice) boolean
+applyOrder(MOrder) boolean
-applySchedule(MInvoice) boolean
-applyNoSchedule(MInvoice) boolean
-applyOrderSchedule(MOrder) boolean
+getSchedule(boolean) MPaySchedule[]
}
class X_C_PaymentTerm {
<<generated>>
}
class PO {
<<abstract>>
}
MPaymentTerm --|> X_C_PaymentTerm
X_C_PaymentTerm --|> PO
MPaymentTerm --> MPaySchedule : has many
MPaymentTerm --> MInvoicePaySchedule : generates
MPaymentTerm --> MOrderPaySchedule : generates
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MPaymentTerm.java
関連DBテーブル
Section titled “関連DBテーブル”C_PaymentTerm(支払条件)
Section titled “C_PaymentTerm(支払条件)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_PaymentTerm_ID | ID | PK | 支払条件ID | 主キー |
| AD_Client_ID | TableDirect | Y | クライアント | |
| AD_Org_ID | TableDirect | Y | 組織 | |
| Value | String | Y | 検索キー | |
| Name | String | Y | 名称 | |
| NetDays | Integer | Y | ネット日数 | デフォルト0 |
| Discount | Number | Y | 割引率(%) | デフォルト0 |
| DiscountDays | Integer | Y | 割引日数 | |
| Discount2 | Number | Y | 割引率2(%) | |
| DiscountDays2 | Integer | Y | 割引日数2 | |
| IsAfterDelivery | YesNo | Y | 納品後フラグ | デフォルトN |
| IsDueFixed | YesNo | Y | 固定月日締め | |
| FixMonthDay | Integer | N | 固定月日 | 31=月末 |
| FixMonthOffset | Integer | N | 固定月オフセット | |
| FixMonthCutoff | Integer | N | 締め日カットオフ | |
| GraceDays | Integer | Y | 猶予日数 | |
| IsValid | YesNo | Y | 有効フラグ | スケジュール妥当性 |
| IsDefault | YesNo | Y | デフォルト |
C_PaySchedule(支払スケジュール定義)
Section titled “C_PaySchedule(支払スケジュール定義)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| C_PaySchedule_ID | ID | PK | スケジュールID |
| C_PaymentTerm_ID | TableDirect | Y | 支払条件FK |
| Percentage | Number | Y | 割合(%) |
| NetDays | Integer | Y | ネット日数 |
| Discount | Number | Y | 割引率 |
| DiscountDays | Integer | Y | 割引日数 |
| IsValid | YesNo | Y | 有効フラグ |
erDiagram
C_PaymentTerm ||--o{ C_PaySchedule : "defines schedule"
C_PaymentTerm ||--o{ C_PaymentTerm_Trl : "translations"
C_PaymentTerm ||--o{ C_BPartner : "default for customer"
C_PaymentTerm ||--o{ C_Order : "applied to"
C_PaymentTerm ||--o{ C_Invoice : "applied to"
C_Invoice ||--o{ C_InvoicePaySchedule : "generated schedule"
C_Order ||--o{ C_OrderPaySchedule : "generated schedule"
ビジネスロジック
Section titled “ビジネスロジック”スケジュール検証(validate)
Section titled “スケジュール検証(validate)”validate() メソッドの処理:
- スケジュール(
C_PaySchedule)の取得 - スケジュールが0件の場合、
IsValid=trueで正常終了 - 全スケジュールの
Percentageを合算 - 合計が100% でない場合、
IsValid=falseにセットし差分を返却
請求書への適用フロー
Section titled “請求書への適用フロー”flowchart TD
A[apply MInvoice] --> B{支払方法チェック}
B -->|掛売/口座振替以外| C[適用なし return false]
B -->|掛売 or 口座振替| D{総合計 = 0?}
D -->|Yes| C
D -->|No| E{IsValid?}
E -->|No| F[applyNoSchedule]
E -->|Yes| G{スケジュール件数 > 0?}
G -->|No| F
G -->|Yes| H[applySchedule]
F --> I[既存スケジュール削除]
H --> J[既存スケジュール削除]
J --> K[各回のInvoicePaySchedule生成]
K --> L[端数を最終回に加算]
L --> M[invoice.validatePaySchedule]
apply(MInvoice): 支払方法が「掛売」または「口座振替」の場合のみ適用。C_InvoicePaySchedule レコードを生成し、各回の支払金額と期日を計算。
applyOrder(MOrder): 受注伝票にも同様のロジックで C_OrderPaySchedule を生成。
期日計算ロジック
Section titled “期日計算ロジック”期日計算は MPaySchedule の getNextDueDate() で実行されます:
- 基準日の決定: 納品後フラグ=Y の場合は出荷日、それ以外は伝票日付
- ネット日数の加算: 基準日 +
NetDays - 固定月日の適用:
IsDueFixed=Yの場合、FixMonthDayとFixMonthOffsetで月末締め等を計算 - 猶予日数の加算:
GraceDaysを加算
分割払いの場合、各回の金額は GrandTotal * Percentage / 100 で計算されます。丸め誤差は最終回に加算されます:
remainder = GrandTotal - sum(各回のDueAmt)最終回.DueAmt += remainder拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”支払条件に独自の制約を追加する方法:
public class CustomPaymentTermValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof MPaymentTerm) { MPaymentTerm pt = (MPaymentTerm) po; if (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE) { // 例: ネット日数の上限チェック if (pt.getNetDays() > 180) { throw new AdempiereException("支払条件のネット日数は180日以内にしてください"); } } } return null; }
@Override public String docValidate(PO po, int timing) { return null; // C_PaymentTermはDocument型ではないため不要 }}請求書完了時の支払スケジュール制御
Section titled “請求書完了時の支払スケジュール制御”請求書の completeIt() 実行時に支払条件が適用されます。カスタムの支払スケジュールロジックを追加する場合は、C_Invoice の TIMING_AFTER_COMPLETE で C_InvoicePaySchedule を操作します:
@Overridepublic String docValidate(PO po, int timing) { if (po instanceof MInvoice && timing == TIMING_AFTER_COMPLETE) { MInvoice invoice = (MInvoice) po; // 例: 特定の取引先は支払期日を強制的に延長 MBPartner bp = new MBPartner(invoice.getCtx(), invoice.getC_BPartner_ID(), invoice.get_TrxName()); if ("VIP".equals(bp.getC_BP_Group().getValue())) { // C_InvoicePayScheduleの期日を調整 } } return null;}関連プロセス
Section titled “関連プロセス”| プロセス名 | 説明 |
|---|---|
| 支払スケジュール検証 | 支払条件のスケジュール合計が100%かを検証 |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”iDempiereの支払条件は Model Validator で安全にカスタマイズできます。 独自の期日計算ルールや分割払いロジックなど、コア改変なしで業務要件に合わせた拡張が可能です。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。