iDempiere 督促レベルの使い方|取引先管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
督促レベルは、支払期日を過ぎた請求書に対して督促状(Dunning Letter)を生成する際のルールを定義するマスタです。「期日後何日で督促するか」「何日間隔で再督促するか」「督促時に手数料を課すか・与信を止めるか」を段階(レベル)ごとに設定し、顧客ごとに督促コードとして関連付けます。
📌 ポイント: 1 つの督促ルール(支払督促タブ)に複数のレベル(レベルタブ)をぶら下げる 2 階層構造です。「1回目: 期日7日後にリマインダ」「2回目: 30日後に手数料付き督促+与信停止」のような段階的な回収フローを 1 レコードで表現できます。
督促レベルでできること
Section titled “督促レベルでできること”- 期日超過日数に応じた段階的な督促レベルの定義(リマインダ → 督促 → 法的措置前通告など)
- 督促の間隔制御(前回督促から次回督促までの日数)
- 督促時の手数料(固定額)の加算設定
- 督促レベル到達時の与信停止・支払条件の強制変更
- 請求書の回収ステータス(督促中 / 回収代行 / 法的手続き / 回収不能)の設定
- 督促状の印刷書式(プリントフォーマット)の指定と多言語の印刷テキスト管理
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 支払督促 | C_Dunning | 7項目 | 督促ルールのヘッダー(名称・レベル逐次生成フラグ) |
| レベル | C_DunningLevel | 19項目 | 各段階の条件(期日残日数・間隔・手数料・与信停止等) |
| 翻訳 | C_DunningLevel_Trl | 8項目 | 印刷テキスト・メモの多言語翻訳 |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>取引先管理 > 取引先管理セットアップ > 督促レベル"] --> B["➕ 支払督促タブで新規<br/>(名称・連続レベル作成の要否)"]
B --> C["📋 レベルタブへ移動"]
C --> D["⏱ レベル1を登録<br/>期日残日数・支払督促残日数・印刷テキスト"]
D --> E{さらに厳しい段階が必要?}
E -->|Yes| F["⚠️ レベル2以降を登録<br/>手数料発生・与信-拒否設定<br/>回収ステータス等を追加"]
F --> E
E -->|No| G["🌐 必要なら翻訳タブで<br/>印刷テキストを多言語化"]
G --> H["💾 保存"]
H --> I["🔗 取引先マスタ(顧客)に<br/>督促コードとして設定"]
アクセス方法
Section titled “アクセス方法”メニューから「取引先管理 > 取引先管理セットアップ > 督促レベル」を開きます。
新規登録(督促ルール+レベル)
Section titled “新規登録(督促ルール+レベル)”- 「支払督促」タブで「新規」をクリック:
- 名称: 督促ルール名(例:
標準督促) - 連続レベルを作成する: レベルを順番どおりに経由させたい場合にチェック
- 名称: 督促ルール名(例:
- 「レベル」タブに移動し、段階ごとにレコードを作成:
- 名称 / 印刷テキスト: 督促状に印字される表題(例:
お支払いのお願い(1回目)) - 期日残日数: 支払期日から何日後に督促するか(マイナス値=期日前の事前通知)
- 支払督促残日数: 前回の督促から次の督促までの間隔日数
- 手数料発生 / 料金: 督促手数料を課す場合にチェックし金額を入力
- 与信-拒否設定: このレベル到達時に取引先を与信停止にする場合にチェック
- 支払条件設定 / 支払条件: このレベルで支払条件を強制変更する場合に設定
- 回収ステータス: 督促中 / 回収代行 / 法的手続き / 回収不能
- 督促印刷書式: 督促状のプリントフォーマット
- 名称 / 印刷テキスト: 督促状に印字される表題(例:
- 「保存」をクリック
- 取引先マスタ(顧客)に本督促ルールを関連付け
💡 ヒント: 「期限切れを表示しない(IsShowNotDue)」をチェックすると期日前の請求書も督促状に記載され、「Is Statement」を使うとレベルを督促ではなく「取引明細書(Statement)」の定義として扱えます。督促というより定期的な残高通知を送りたい場合に有効です。
項目リファレンス(レベルタブ)
Section titled “項目リファレンス(レベルタブ)”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 督促 | 必須 | 選択 | 親の督促ルール(C_Dunning) |
| 名称 | 必須 | 文字列 | レベル名 |
| 期日残日数 | 必須 | 数値 | 期日後の経過日数(負数=期日前) |
| 支払督促残日数 | 必須 | 整数 | 督促間の間隔日数 |
| 期限切れを表示しない | 必須 | チェック | 期日未到来の請求書も表示/印刷 |
| 期限切れをすべて表示する | 必須 | チェック | 期日到来済みの請求書をすべて表示/印刷 |
| 手数料発生 | 必須 | チェック | 督促手数料を課すか |
| 料金 | - | 金額 | 手数料額(請求書通貨) |
| 印刷テキスト | 必須 | 文字列 | 督促状に印字するラベル |
| 督促印刷書式 | - | 選択 | 督促状のプリントフォーマット |
| 与信-拒否設定 | 必須 | チェック | 取引先を与信停止に設定 |
| 支払条件設定 / 支払条件 | 必須 / - | チェック / 選択 | 取引先の支払条件を変更 |
| 回収ステータス | - | リスト | 督促(D) / 回収代行(C) / 法的手続き(L) / 回収不能(U) |
| Is Statement | 必須 | チェック | 督促ではなく取引明細書の定義として扱う |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 「連続レベルを作成する」は何が変わりますか?
Section titled “Q. 「連続レベルを作成する」は何が変わりますか?”チェックすると、督促レベルを順番に経由させる制御が有効になります。ソースコード上は MDunningLevel.getPreviousLevels() が「DaysAfterDue + DaysBetweenDunning の合計日数が自レベルより小さいレベル」を前段レベルとして取得する実装で、このフラグが OFF の場合は前段レベルの取得自体が行われません。つまりレベルの順序は名前ではなく 期日残日数+支払督促残日数の合計 で決まります。レベル設計時は合計日数が段階順に大きくなるよう設定してください。
Q. 期日残日数にマイナス値を設定できますか?
Section titled “Q. 期日残日数にマイナス値を設定できますか?”できます(型は Number)。フィールド定義に「if negative days until due(負数なら期日までの日数)」とあるとおり、期日前のリマインダ(事前通知)レベルとして機能させる用途です。「期限切れを表示しない」と組み合わせると、期日前の請求書一覧を含む通知が作成できます。
Q. 手数料や与信停止は設定しただけで自動適用されますか?
Section titled “Q. 手数料や与信停止は設定しただけで自動適用されますか?”督促レベルはあくまでルール定義であり、実際の督促状生成・手数料計上・与信停止は督促の実行処理(Dunning Run: C_DunningRun / C_DunningRunEntry / C_DunningRunLine)が行います。このウィンドウで設定した各フラグは、督促実行時に参照されるパラメータです。
Q. 督促状の文言を英語と日本語で出し分けられますか?
Section titled “Q. 督促状の文言を英語と日本語で出し分けられますか?”できます。「翻訳」タブ(C_DunningLevel_Trl)で言語ごとに「印刷テキスト」「メモ」を登録すると、取引先の言語設定に応じた文言で印字できます。
- 取引先マスタ(Business Partner)の使い方 — 顧客への督促ルール割当
- 支払条件(Payment Term)の使い方 — 督促レベル到達時の支払条件変更で参照
- 請求スケジュール(Invoice Schedule)の使い方
- 画面リファレンス: 督促レベル
🛠 技術仕様(開発者向け)
督促レベルは C_Dunning(ヘッダー)と C_DunningLevel(明細)の 2 階層+翻訳テーブルで構成されます(いずれもアクセスレベル 3 = クライアント+組織)。モデルクラスは MDunning(90行)と MDunningLevel(127行)で、どちらも Document 型ではありません。実際の督促処理は MDunningRun(216行)/ MDunningRunEntry / MDunningRunLine が担い、本ウィンドウはそのパラメータ定義に徹しています。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MDunning {
+toString() String
}
class MDunningLevel {
+getParent() MDunning
+getPreviousLevels() MDunningLevel[]
}
class MDunningRun {
+getLevels() MDunningLevel[]
+getEntries(requery) MDunningRunEntry[]
+deleteEntries(force) boolean
+getEntry(BPartner, Currency, SalesRep, Level) MDunningRunEntry
}
class X_C_Dunning {
<<generated>>
}
class X_C_DunningLevel {
<<generated>>
}
class PO {
<<abstract>>
}
MDunning --|> X_C_Dunning
MDunningLevel --|> X_C_DunningLevel
X_C_Dunning --|> PO
X_C_DunningLevel --|> PO
MDunningLevel --> MDunning : parent
MDunningRun --> MDunningLevel : uses
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MDunning.java, MDunningLevel.java
関連DBテーブル
Section titled “関連DBテーブル”C_Dunning(支払督促)
Section titled “C_Dunning(支払督促)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_Dunning_ID | ID | PK | 督促ID | 主キー |
| Name | String(60) | Y | 名称 | 識別子 |
| Description | String(255) | N | 説明 | |
| IsDefault | YesNo | Y | デフォルト | |
| CreateLevelsSequentially | YesNo | Y | 連続レベルを作成する | |
| SendDunningLetter | YesNo | Y | 督促状送付フラグ | DB カラムのみ(v13 標準画面には非表示) |
| IsActive | YesNo | Y | 有効 | default Y |
C_DunningLevel(督促レベル)
Section titled “C_DunningLevel(督促レベル)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_DunningLevel_ID | ID | PK | レベルID | 主キー |
| C_Dunning_ID | TableDirect | Y | 親督促ルール | isparent=Y |
| Name | String(60) | Y | 名称 | 識別子 |
| DaysAfterDue | Number | Y | 期日残日数 | 負数=期日前 |
| DaysBetweenDunning | Integer | Y | 支払督促残日数 | |
| IsShowNotDue / IsShowAllDue | YesNo | Y | 表示制御 | |
| ChargeFee / FeeAmt | YesNo / Amount | Y / N | 手数料 | |
| ChargeInterest / InterestPercent | YesNo / Number | Y / N | 延滞利息 | DB カラムのみ(v13 標準画面には非表示) |
| PrintName | String(60) | Y | 印刷テキスト | 翻訳対象 |
| Dunning_PrintFormat_ID | Table | N | 督促印刷書式 | |
| IsSetCreditStop | YesNo | Y | 与信-拒否設定 | |
| IsSetPaymentTerm / C_PaymentTerm_ID | YesNo / TableDirect | Y / N | 支払条件変更 | |
| InvoiceCollectionType | List(1) | N | 回収ステータス | C=回収代行 / D=督促 / L=法的手続き / U=回収不能 |
| IsStatement | YesNo | Y | 取引明細書定義 | default N |
erDiagram
C_Dunning ||--o{ C_DunningLevel : "levels"
C_DunningLevel ||--o{ C_DunningLevel_Trl : "translations"
C_Dunning ||--o{ C_BPartner : "dunning code for customer"
C_DunningLevel ||--o{ C_DunningRunLine : "referenced at run"
C_DunningRun ||--o{ C_DunningRunEntry : "per partner"
C_DunningRunEntry ||--o{ C_DunningRunLine : "per invoice"
C_DunningLevel }o--o| C_PaymentTerm : "forced term"
ビジネスロジック
Section titled “ビジネスロジック”MDunningLevel.getPreviousLevels()
Section titled “MDunningLevel.getPreviousLevels()”「連続レベル作成」時の前段レベル取得ロジック:
- 親
MDunningのCreateLevelsSequentiallyが OFF ならnullを返す(逐次制御なし) - ON の場合、
SELECT * FROM C_DunningLevel WHERE C_Dunning_ID=? AND DaysAfterDue+DaysBetweenDunning < ?(? = 自レベルの合計日数)で前段レベルを取得
レベルの前後関係は DaysAfterDue + DaysBetweenDunning の合計値の大小 で決定されます。同一合計値のレベルを複数作ると順序が定まらないため避けてください。
督促実行(MDunningRun)
Section titled “督促実行(MDunningRun)”督促状の生成実体は督促実行側にあります。MDunningRun.getLevels() が対象レベル群を取得し、取引先×通貨×営業担当×レベル単位で MDunningRunEntry を作成、請求書明細を MDunningRunLine として束ねます。C_Dunning / C_DunningLevel 自体には beforeSave/afterSave のカスタムロジックはありません。
拡張ポイント
Section titled “拡張ポイント”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”public class DunningLevelValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof MDunningLevel && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { MDunningLevel level = (MDunningLevel) po; // 例: 手数料発生時は金額必須にする if (level.isChargeFee() && (level.getFeeAmt() == null || level.getFeeAmt().signum() <= 0)) { throw new AdempiereException("手数料発生時は料金を入力してください"); } } return null; }}このテーブルに標準の Callout はありません(callout 列はすべて未設定)。督促状のレイアウト変更は Java 拡張ではなく「督促印刷書式(Dunning_PrintFormat_ID)」へのプリントフォーマット割当で対応するのが基本です。
関連プロセス
Section titled “関連プロセス”| プロセス/機能 | 説明 |
|---|---|
| 督促実行(Dunning Run) | 督促レベル定義に基づき対象請求書を抽出し督促状データを生成(C_DunningRun 系テーブル) |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”督促状の文面・書式のローカライズや、日本の商習慣に合わせた督促フロー(内容証明前の段階設計など)は、プリントフォーマットと Model Validator でコア改変なしに実現できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。