Skip to content

iDempiere 督促状の使い方|債権債務・資金管理 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 債権債務・資金管理の全体像: 債権債務・資金管理の全体図 も合わせてご覧ください。

督促状(Dunning Run)は、支払期日を過ぎた売掛債権に対する督促処理を実行するウィンドウです。督促ルール(Dunning)と督促レベルの条件に基づき、督促対象の請求書・支払を自動抽出し、取引先ごとに督促金額を集計します。

📌 ポイント: 督促対象の抽出は「支払督促状作成」ボタン(Processing)で自動実行されます。処理確定時には、督促レベルの設定に応じて取引先の与信停止や支払条件の変更まで自動で連動します。

  • 督促ルール・督促レベルの条件に基づく督促対象(延滞請求書等)の自動抽出
  • 取引先・通貨・担当者ごとの督促エントリ(督促書 1 通分)の自動作成
  • 明細単位での残高金額・換算金額・延滞日数・督促回数の管理
  • 督促手数料(料金)・利息金額の加算と合計金額の自動計算
  • 処理確定時の請求書への督促レベル・回収タイプの反映
  • 督促レベル設定に応じた取引先の与信停止・支払条件変更の自動適用

3 階層のタブ構成です。ヘッダー(督促実行)→ 入力(取引先別の督促書)→ 詳細(対象の請求書・支払明細)の親子関係になっています。

タブ名テーブル項目数役割
支払督促状C_DunningRun9項目督促実行の単位(督促日付・督促ルール・レベル)
入力C_DunningRunEntry14項目取引先ごとの督促エントリ(宛先・通貨・合計金額)
詳細C_DunningRunLine17項目督促対象の請求書・支払の明細(残高・延滞日数・手数料)
graph TD
    A["🚀 メニューから開く<br/>債権債務管理&資金管理 > 督促状"] --> B["➕ 新規で督促日付と<br/>督促ルールを選択"]
    B --> C["⚙️ 支払督促状作成ボタン<br/>(督促レベル条件で対象を抽出)"]
    C --> D["📋 入力タブで<br/>取引先別エントリを確認"]
    D --> E["🔍 詳細タブで<br/>対象請求書・金額を確認"]
    E --> F{修正が必要?}
    F -->|Yes| G["✏️ 不要な明細の削除や<br/>手数料・メモの調整"]
    F -->|No| H["✅ 処理確定<br/>(請求書へ督促レベル反映)"]
    G --> H
    H --> I["📨 督促レベル設定により<br/>与信停止・支払条件変更が連動"]

メニューから開く 債権債務管理&資金管理 > 督促状 新規で督促日付と 督促ルールを選択 支払督促状作成ボタン (督促レベル条件で対象を抽出) 入力タブで 取引先別エントリを確認 詳細タブで 対象請求書・金額を確認 不要な明細の削除や 手数料・メモの調整 処理確定 (請求書へ督促レベル反映) 督促レベル設定により 与信停止・支払条件変更が連動 修正が必要?

⚠️ 注意: 処理確定(Processed)にすると、明細に紐づく請求書へ督促レベルが書き込まれ、督促レベルの設定によっては取引先の与信状態が「与信停止」に変更されます。確定前に入力・詳細タブの内容を必ず確認してください。

メニューから「債権債務管理&資金管理 > 督促状」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • 督促日付: 督促の基準日(デフォルトは当日)
    • 督促: 適用する督促ルール(必須)
    • 支払督促レベル: 特定レベルのみ実行する場合に選択
  3. 保存」をクリック
  4. 支払督促状作成」ボタンをクリックすると、督促レベルの条件(延滞日数等)に該当する請求書が抽出され、入力・詳細タブに自動展開されます
  1. 入力」タブで取引先ごとの督促エントリ(宛先住所・担当者・合計金額)を確認
  2. 詳細」タブで対象の請求書・残高金額・延滞日数・督促回数を確認
  3. 必要に応じて手数料・利息・メモを調整
  4. 処理を確定すると各明細の請求書に督促レベルが反映されます
項目名カラム必須説明
督促日付DunningDate必須日付督促の基準日(デフォルト当日)
督促C_Dunning_ID必須選択延滞請求書に適用する督促ルール
支払督促レベルC_DunningLevel_ID-選択対象を特定レベルに絞る場合に指定
支払督促状作成Processing-ボタン督促レベル条件で督促エントリを作成
処理済みProcessed必須チェック処理確定フラグ
項目名カラム必須説明
売上請求伝票C_Invoice_ID-選択督促対象の請求書
残高金額OpenAmt必須金額未消込の残高
換算金額ConvertedAmt必須金額エントリ通貨への換算後金額
支払期日日数DaysDue必須整数延滞日数(負数は期日前)
支払督促回数TimesDunned必須整数過去に督促した回数
料金FeeAmt必須金額督促手数料(請求書通貨)
利息金額InterestAmt必須金額延滞利息
合計TotalAmt必須金額換算金額+手数料+利息(自動計算)

全項目は 全項目一覧はリファレンス参照 をご覧ください。

Q. 督促を確定すると取引先に何が起きますか?

Section titled “Q. 督促を確定すると取引先に何が起きますか?”

督促レベルに「与信停止を設定」「支払条件を設定」が有効な場合、エントリの処理確定時(MDunningRunEntry.beforeSave)に取引先マスタの与信状態が「与信停止(CreditStop)」に変更され、支払条件も督促レベルに定義されたものへ自動的に書き換えられます。

Q. 入力タブの金額・数量は手入力できますか?

Section titled “Q. 入力タブの金額・数量は手入力できますか?”

エントリの金額(Amt)と数量(Qty)は明細から自動集計されます。明細の保存・削除のたびに「換算金額+手数料+利息の合計」と「請求書または支払が紐づく明細の件数」が SQL で再計算されるため、明細側を修正してください。

Q. 「取引先の住所がない」というエラーになります

Section titled “Q. 「取引先の住所がない」というエラーになります”

督促エントリ作成時、取引先に有効な住所が 1 件もない場合は例外(BPartnerNoAddressException)で停止します。宛先は「支払元(顧客向け)/送金先(仕入先向け)」→「請求先」→「最初の有効住所」の優先順で自動選定されるため、取引先マスタに有効住所を登録してください。

Q. 請求書側にはいつ督促情報が反映されますか?

Section titled “Q. 請求書側にはいつ督促情報が反映されますか?”

明細が処理済みで請求書に紐づいている場合、保存時に請求書の督促レベルが更新され、回収タイプ(InvoiceCollectionType)が「督促(Dunning)」にセットされます。ただし督促レベルが「ステートメント(明細書)」の場合、回収タイプは変更されません。

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

督促状は C_DunningRun(ヘッダー)、C_DunningRunEntry(取引先別エントリ)、C_DunningRunLine(明細)の 3 テーブルで構成されます。モデルクラスは MDunningRun(216行)、MDunningRunEntry(306行)、MDunningRunLine(346行)で、金額集計・通貨換算・取引先与信連動のロジックを持ちます。DocAction は実装されておらず、Processing ボタンと Processed フラグで処理を管理します。

classDiagram
    class MDunningRun {
        +getLevels() MDunningLevel[]
        +getEntries(requery, onlyInvoices) MDunningRunEntry[]
        +deleteEntries(force) boolean
        +getEntry(BPartner, Currency, SalesRep, Level) MDunningRunEntry
    }
    class MDunningRunEntry {
        +setBPartner(MBPartner, isSOTrx) void
        +getLines() MDunningRunLine[]
        +hasInvoices() boolean
        #beforeSave(newRecord) boolean
    }
    class MDunningRunLine {
        +setInvoice(...) void
        +setPayment(...) void
        +setFee(C_Currency_ID, FeeAmount) void
        #beforeSave(newRecord) boolean
        #afterSave(newRecord, success) boolean
        #afterDelete(success) boolean
        -updateEntry() void
    }
    class X_C_DunningRun {
        <<generated>>
    }
    MDunningRun --|> X_C_DunningRun
    MDunningRun --> MDunningRunEntry : has many
    MDunningRunEntry --> MDunningRunLine : has many
    MDunningRun ..> MDunningLevel : criteria
    MDunningRunLine ..> MInvoice : updates dunning level

+getLevels() MDunningLevel[] +getEntries(requery, onlyInvoices) MDunningRunEntry[] +deleteEntries(force) boolean +getEntry(BPartner, Currency, SalesRep, Level) MDunningRunEntry +setBPartner(MBPartner, isSOTrx) void +getLines() MDunningRunLine[] +hasInvoices() boolean #beforeSave(newRecord) boolean +setInvoice(...) void +setPayment(...) void +setFee(C_Currency_ID, FeeAmount) void #beforeSave(newRecord) boolean #afterSave(newRecord, success) boolean #afterDelete(success) boolean -updateEntry() void <>

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MDunningRun.java / MDunningRunEntry.java / MDunningRunLine.java

カラム名必須説明備考
C_DunningRun_IDIDPK督促実行ID主キー
DunningDateDateY督促日付default @#Date@
C_Dunning_IDTableDirectY督促ルール
C_DunningLevel_IDTableDirectN督促レベル絞り込み用
DescriptionString(255)N説明
ProcessingButtonN支払督促状作成エントリ生成
SendItButtonN送信
ProcessedYesNoY処理済み
カラム名必須説明備考
C_DunningRunEntry_IDIDPKエントリID主キー
C_DunningRun_IDTableDirectY督促実行FK親リンク
C_DunningLevel_IDTableDirectY督促レベルdefault @C_DunningLevel_ID@
C_BPartner_IDSearchY取引先
C_BPartner_Location_IDTableDirectY取引先住所自動選定
AD_User_IDTableDirectN担当者(宛名)default -1
SalesRep_IDTableY社内担当者取引先マスタから引継ぎ
C_Currency_IDSearchY通貨換算先通貨
AmtAmountY金額明細から自動集計
QtyQuantityY数量対象明細件数(自動集計)
NoteText(2000)Nメモ督促書への追記
ProcessedYesNoY処理済み明細へ伝播
カラム名必須説明備考
C_DunningRunLine_IDIDPK明細ID主キー
C_DunningRunEntry_IDTableDirectYエントリFK親リンク
C_Invoice_IDSearchN請求書請求書または支払のどちらか
C_Payment_IDSearchN支払
C_InvoicePaySchedule_IDSearchN請求支払スケジュール分割払い対応
Amt / OpenAmtAmountY金額 / 残高金額
ConvertedAmtAmountY換算金額MConversionRate で換算
DaysDueIntegerY支払期日日数負数=期日前
TimesDunnedIntegerY支払督促回数
FeeAmt / InterestAmtAmountY手数料 / 利息
TotalAmtAmountY合計ConvertedAmt+FeeAmt+InterestAmt
IsInDisputeYesNoY検討中(係争中)
erDiagram
    C_Dunning ||--o{ C_DunningLevel : "levels"
    C_Dunning ||--o{ C_DunningRun : "executed as"
    C_DunningRun ||--o{ C_DunningRunEntry : "per partner"
    C_DunningRunEntry ||--o{ C_DunningRunLine : "lines"
    C_DunningRunEntry }o--|| C_BPartner : "addressed to"
    C_DunningRunLine }o--o| C_Invoice : "dunned invoice"
    C_DunningRunLine }o--o| C_Payment : "open payment"

executed as per partner addressed to dunned invoice open payment

MDunningRunEntry.setBPartner() — 宛先の自動選定

Section titled “MDunningRunEntry.setBPartner() — 宛先の自動選定”
  1. 取引先の住所が 1 件のみならそれを採用
  2. 複数ある場合、販売取引なら「支払元(IsPayFrom)」、購買取引なら「送金先(IsRemitTo)」の住所を優先
  3. 見つからなければ「請求先(IsBillTo)」→「最初の有効住所」の順にフォールバック
  4. 有効住所が 1 件もなければ BPartnerNoAddressException を送出
  5. 担当者(AD_User_ID)は選定した住所に紐づくユーザーを自動セット、社内担当者は取引先マスタの SalesRep_ID を引き継ぎ

MDunningRunEntry.beforeSave() — 処理確定時の連動

Section titled “MDunningRunEntry.beforeSave() — 処理確定時の連動”

Processed=true で保存すると次を実行します。

  1. 全明細(C_DunningRunLine)の Processed を true に伝播
  2. 督促レベルに「与信停止を設定(IsSetCreditStop)」があれば取引先の SOCreditStatus を「与信停止(CreditStop)」に変更
  3. 「支払条件を設定(IsSetPaymentTerm)」があれば取引先の C_PaymentTerm_ID を督促レベルの支払条件へ変更

MDunningRunLine — 金額計算とエントリ集計

Section titled “MDunningRunLine — 金額計算とエントリ集計”
  • beforeSave: 請求書・支払のどちらも未設定なら金額を 0 にリセット。換算金額が未計算なら MConversionRate.convert() で明細通貨→エントリ通貨に換算。TotalAmt = ConvertedAmt + FeeAmt + InterestAmt を自動計算。処理済みかつ請求書ありの場合、請求書の C_DunningLevel_IDInvoiceCollectionType(レベルがステートメント以外なら「Dunning」)を更新
  • afterSave / afterDelete: updateEntry() により親エントリを SQL で再集計 — Amt = SUM(ConvertedAmt)+SUM(FeeAmt)+SUM(InterestAmt)Qty = 請求書または支払が紐づく明細件数(手数料のみの明細は件数に含めない)

拡張ポイント(カスタマイズ箇所)

Section titled “拡張ポイント(カスタマイズ箇所)”
  • Model Validator: 確定時の連動(与信停止等)に追加条件を入れる場合は、C_DunningRunEntry / C_DunningRunLine への Model Validator で対応します(コア改変不要)
  • 督促レベル設計: 手数料・利息、与信停止、支払条件変更は督促レベル(C_DunningLevel)側の設定で制御するのが第一選択です
  • Callout: gw_column.tsv 上、これら 3 テーブルのカラムに標準 Callout の定義はありません
プロセス/ボタン説明
支払督促状作成(Processing)督促レベル条件に基づき督促エントリ・明細を生成
送信(SendIt)督促状の送信処理

督促状は督促レベルの設計次第で、段階的な督促文面・手数料・与信停止までを標準機能で自動化できます。国内商習慣に合わせた督促書フォーマットのカスタマイズもご相談ください。

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

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