Skip to content

iDempiere 督促レベルの使い方|取引先管理 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。

督促レベルは、支払期日を過ぎた請求書に対して督促状(Dunning Letter)を生成する際のルールを定義するマスタです。「期日後何日で督促するか」「何日間隔で再督促するか」「督促時に手数料を課すか・与信を止めるか」を段階(レベル)ごとに設定し、顧客ごとに督促コードとして関連付けます。

📌 ポイント: 1 つの督促ルール(支払督促タブ)に複数のレベル(レベルタブ)をぶら下げる 2 階層構造です。「1回目: 期日7日後にリマインダ」「2回目: 30日後に手数料付き督促+与信停止」のような段階的な回収フローを 1 レコードで表現できます。

  • 期日超過日数に応じた段階的な督促レベルの定義(リマインダ → 督促 → 法的措置前通告など)
  • 督促の間隔制御(前回督促から次回督促までの日数)
  • 督促時の手数料(固定額)の加算設定
  • 督促レベル到達時の与信停止・支払条件の強制変更
  • 請求書の回収ステータス(督促中 / 回収代行 / 法的手続き / 回収不能)の設定
  • 督促状の印刷書式(プリントフォーマット)の指定と多言語の印刷テキスト管理
タブ名テーブル項目数役割
支払督促C_Dunning7項目督促ルールのヘッダー(名称・レベル逐次生成フラグ)
レベルC_DunningLevel19項目各段階の条件(期日残日数・間隔・手数料・与信停止等)
翻訳C_DunningLevel_Trl8項目印刷テキスト・メモの多言語翻訳
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/>督促コードとして設定"]

メニューから開く 取引先管理 > 取引先管理セットアップ > 督促レベル 支払督促タブで新規 (名称・連続レベル作成の要否) レベルタブへ移動 ⏱ レベル1を登録 期日残日数・支払督促残日数・印刷テキスト レベル2以降を登録 手数料発生・与信-拒否設定 回収ステータス等を追加 必要なら翻訳タブで 印刷テキストを多言語化 保存 取引先マスタ(顧客)に 督促コードとして設定 さらに厳しい段階が必要?

メニューから「取引先管理 > 取引先管理セットアップ > 督促レベル」を開きます。

新規登録(督促ルール+レベル)

Section titled “新規登録(督促ルール+レベル)”
  1. 「支払督促」タブで「新規」をクリック:
    • 名称: 督促ルール名(例: 標準督促
    • 連続レベルを作成する: レベルを順番どおりに経由させたい場合にチェック
  2. 「レベル」タブに移動し、段階ごとにレコードを作成:
    • 名称 / 印刷テキスト: 督促状に印字される表題(例: お支払いのお願い(1回目)
    • 期日残日数: 支払期日から何日後に督促するか(マイナス値=期日前の事前通知)
    • 支払督促残日数: 前回の督促から次の督促までの間隔日数
    • 手数料発生 / 料金: 督促手数料を課す場合にチェックし金額を入力
    • 与信-拒否設定: このレベル到達時に取引先を与信停止にする場合にチェック
    • 支払条件設定 / 支払条件: このレベルで支払条件を強制変更する場合に設定
    • 回収ステータス: 督促中 / 回収代行 / 法的手続き / 回収不能
    • 督促印刷書式: 督促状のプリントフォーマット
  3. 保存」をクリック
  4. 取引先マスタ(顧客)に本督促ルールを関連付け

💡 ヒント: 「期限切れを表示しない(IsShowNotDue)」をチェックすると期日前の請求書も督促状に記載され、「Is Statement」を使うとレベルを督促ではなく「取引明細書(Statement)」の定義として扱えます。督促というより定期的な残高通知を送りたい場合に有効です。

項目リファレンス(レベルタブ)

Section titled “項目リファレンス(レベルタブ)”
項目名必須説明
督促必須選択親の督促ルール(C_Dunning)
名称必須文字列レベル名
期日残日数必須数値期日後の経過日数(負数=期日前)
支払督促残日数必須整数督促間の間隔日数
期限切れを表示しない必須チェック期日未到来の請求書も表示/印刷
期限切れをすべて表示する必須チェック期日到来済みの請求書をすべて表示/印刷
手数料発生必須チェック督促手数料を課すか
料金-金額手数料額(請求書通貨)
印刷テキスト必須文字列督促状に印字するラベル
督促印刷書式-選択督促状のプリントフォーマット
与信-拒否設定必須チェック取引先を与信停止に設定
支払条件設定 / 支払条件必須 / -チェック / 選択取引先の支払条件を変更
回収ステータス-リスト督促(D) / 回収代行(C) / 法的手続き(L) / 回収不能(U)
Is Statement必須チェック督促ではなく取引明細書の定義として扱う

全項目一覧はリファレンス参照

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)で言語ごとに「印刷テキスト」「メモ」を登録すると、取引先の言語設定に応じた文言で印字できます。

🛠 技術仕様(開発者向け)

督促レベルは C_Dunning(ヘッダー)と C_DunningLevel(明細)の 2 階層+翻訳テーブルで構成されます(いずれもアクセスレベル 3 = クライアント+組織)。モデルクラスは MDunning(90行)と MDunningLevel(127行)で、どちらも Document 型ではありません。実際の督促処理は MDunningRun(216行)/ MDunningRunEntry / MDunningRunLine が担い、本ウィンドウはそのパラメータ定義に徹しています。

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

+toString() String +getParent() MDunning +getPreviousLevels() MDunningLevel[] +getLevels() MDunningLevel[] +getEntries(requery) MDunningRunEntry[] +deleteEntries(force) boolean +getEntry(BPartner, Currency, SalesRep, Level) MDunningRunEntry <> <> > X_C_Dunning MDunningLevel -- > PO X_C_DunningLevel --

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MDunning.java, MDunningLevel.java

カラム名必須説明備考
C_Dunning_IDIDPK督促ID主キー
NameString(60)Y名称識別子
DescriptionString(255)N説明
IsDefaultYesNoYデフォルト
CreateLevelsSequentiallyYesNoY連続レベルを作成する
SendDunningLetterYesNoY督促状送付フラグDB カラムのみ(v13 標準画面には非表示)
IsActiveYesNoY有効default Y
カラム名必須説明備考
C_DunningLevel_IDIDPKレベルID主キー
C_Dunning_IDTableDirectY親督促ルールisparent=Y
NameString(60)Y名称識別子
DaysAfterDueNumberY期日残日数負数=期日前
DaysBetweenDunningIntegerY支払督促残日数
IsShowNotDue / IsShowAllDueYesNoY表示制御
ChargeFee / FeeAmtYesNo / AmountY / N手数料
ChargeInterest / InterestPercentYesNo / NumberY / N延滞利息DB カラムのみ(v13 標準画面には非表示)
PrintNameString(60)Y印刷テキスト翻訳対象
Dunning_PrintFormat_IDTableN督促印刷書式
IsSetCreditStopYesNoY与信-拒否設定
IsSetPaymentTerm / C_PaymentTerm_IDYesNo / TableDirectY / N支払条件変更
InvoiceCollectionTypeList(1)N回収ステータスC=回収代行 / D=督促 / L=法的手続き / U=回収不能
IsStatementYesNoY取引明細書定義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"

dunning code for customer referenced at run per partner per invoice forced term

「連続レベル作成」時の前段レベル取得ロジック:

  1. MDunningCreateLevelsSequentially が OFF なら null を返す(逐次制御なし)
  2. ON の場合、SELECT * FROM C_DunningLevel WHERE C_Dunning_ID=? AND DaysAfterDue+DaysBetweenDunning &lt; ?(? = 自レベルの合計日数)で前段レベルを取得

レベルの前後関係は DaysAfterDue + DaysBetweenDunning の合計値の大小 で決定されます。同一合計値のレベルを複数作ると順序が定まらないため避けてください。

督促状の生成実体は督促実行側にあります。MDunningRun.getLevels() が対象レベル群を取得し、取引先×通貨×営業担当×レベル単位で MDunningRunEntry を作成、請求書明細を MDunningRunLine として束ねます。C_Dunning / C_DunningLevel 自体には beforeSave/afterSave のカスタムロジックはありません。

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)」へのプリントフォーマット割当で対応するのが基本です。

プロセス/機能説明
督促実行(Dunning Run)督促レベル定義に基づき対象請求書を抽出し督促状データを生成(C_DunningRun 系テーブル)

督促状の文面・書式のローカライズや、日本の商習慣に合わせた督促フロー(内容証明前の段階設計など)は、プリントフォーマットと Model Validator でコア改変なしに実現できます。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら