iDempiere 督促状の使い方|債権債務・資金管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 債権債務・資金管理の全体像: 債権債務・資金管理の全体図 も合わせてご覧ください。
督促状(Dunning Run)は、支払期日を過ぎた売掛債権に対する督促処理を実行するウィンドウです。督促ルール(Dunning)と督促レベルの条件に基づき、督促対象の請求書・支払を自動抽出し、取引先ごとに督促金額を集計します。
📌 ポイント: 督促対象の抽出は「支払督促状作成」ボタン(Processing)で自動実行されます。処理確定時には、督促レベルの設定に応じて取引先の与信停止や支払条件の変更まで自動で連動します。
督促状でできること
Section titled “督促状でできること”- 督促ルール・督促レベルの条件に基づく督促対象(延滞請求書等)の自動抽出
- 取引先・通貨・担当者ごとの督促エントリ(督促書 1 通分)の自動作成
- 明細単位での残高金額・換算金額・延滞日数・督促回数の管理
- 督促手数料(料金)・利息金額の加算と合計金額の自動計算
- 処理確定時の請求書への督促レベル・回収タイプの反映
- 督促レベル設定に応じた取引先の与信停止・支払条件変更の自動適用
3 階層のタブ構成です。ヘッダー(督促実行)→ 入力(取引先別の督促書)→ 詳細(対象の請求書・支払明細)の親子関係になっています。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 支払督促状 | C_DunningRun | 9項目 | 督促実行の単位(督促日付・督促ルール・レベル) |
| 入力 | C_DunningRunEntry | 14項目 | 取引先ごとの督促エントリ(宛先・通貨・合計金額) |
| 詳細 | C_DunningRunLine | 17項目 | 督促対象の請求書・支払の明細(残高・延滞日数・手数料) |
基本操作手順
Section titled “基本操作手順”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)にすると、明細に紐づく請求書へ督促レベルが書き込まれ、督促レベルの設定によっては取引先の与信状態が「与信停止」に変更されます。確定前に入力・詳細タブの内容を必ず確認してください。
アクセス方法
Section titled “アクセス方法”メニューから「債権債務管理&資金管理 > 督促状」を開きます。
新規登録と督促対象の抽出
Section titled “新規登録と督促対象の抽出”- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- 督促日付: 督促の基準日(デフォルトは当日)
- 督促: 適用する督促ルール(必須)
- 支払督促レベル: 特定レベルのみ実行する場合に選択
- 「保存」をクリック
- 「支払督促状作成」ボタンをクリックすると、督促レベルの条件(延滞日数等)に該当する請求書が抽出され、入力・詳細タブに自動展開されます
抽出結果の確認と処理
Section titled “抽出結果の確認と処理”- 「入力」タブで取引先ごとの督促エントリ(宛先住所・担当者・合計金額)を確認
- 「詳細」タブで対象の請求書・残高金額・延滞日数・督促回数を確認
- 必要に応じて手数料・利息・メモを調整
- 処理を確定すると各明細の請求書に督促レベルが反映されます
項目リファレンス
Section titled “項目リファレンス”支払督促状タブ(ヘッダー)
Section titled “支払督促状タブ(ヘッダー)”| 項目名 | カラム | 必須 | 型 | 説明 |
|---|---|---|---|---|
| 督促日付 | DunningDate | 必須 | 日付 | 督促の基準日(デフォルト当日) |
| 督促 | C_Dunning_ID | 必須 | 選択 | 延滞請求書に適用する督促ルール |
| 支払督促レベル | C_DunningLevel_ID | - | 選択 | 対象を特定レベルに絞る場合に指定 |
| 支払督促状作成 | Processing | - | ボタン | 督促レベル条件で督促エントリを作成 |
| 処理済み | Processed | 必須 | チェック | 処理確定フラグ |
詳細タブ(主要項目)
Section titled “詳細タブ(主要項目)”| 項目名 | カラム | 必須 | 型 | 説明 |
|---|---|---|---|---|
| 売上請求伝票 | C_Invoice_ID | - | 選択 | 督促対象の請求書 |
| 残高金額 | OpenAmt | 必須 | 金額 | 未消込の残高 |
| 換算金額 | ConvertedAmt | 必須 | 金額 | エントリ通貨への換算後金額 |
| 支払期日日数 | DaysDue | 必須 | 整数 | 延滞日数(負数は期日前) |
| 支払督促回数 | TimesDunned | 必須 | 整数 | 過去に督促した回数 |
| 料金 | FeeAmt | 必須 | 金額 | 督促手数料(請求書通貨) |
| 利息金額 | InterestAmt | 必須 | 金額 | 延滞利息 |
| 合計 | TotalAmt | 必須 | 金額 | 換算金額+手数料+利息(自動計算) |
全項目は 全項目一覧はリファレンス参照 をご覧ください。
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”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)」にセットされます。ただし督促レベルが「ステートメント(明細書)」の場合、回収タイプは変更されません。
- 入金支払伝票(Payment)の使い方
- 取引先マスタ(Business Partner)の使い方
- 支払条件(Payment Term)の使い方
- 売上請求伝票(Sales Invoice)の使い方
- 画面リファレンス: 督促状
🛠 技術仕様(開発者向け)
督促状は C_DunningRun(ヘッダー)、C_DunningRunEntry(取引先別エントリ)、C_DunningRunLine(明細)の 3 テーブルで構成されます。モデルクラスは MDunningRun(216行)、MDunningRunEntry(306行)、MDunningRunLine(346行)で、金額集計・通貨換算・取引先与信連動のロジックを持ちます。DocAction は実装されておらず、Processing ボタンと Processed フラグで処理を管理します。
アーキテクチャ概要
Section titled “アーキテクチャ概要”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
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MDunningRun.java / MDunningRunEntry.java / MDunningRunLine.java
関連DBテーブル
Section titled “関連DBテーブル”C_DunningRun(督促実行)
Section titled “C_DunningRun(督促実行)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_DunningRun_ID | ID | PK | 督促実行ID | 主キー |
| DunningDate | Date | Y | 督促日付 | default @#Date@ |
| C_Dunning_ID | TableDirect | Y | 督促ルール | |
| C_DunningLevel_ID | TableDirect | N | 督促レベル | 絞り込み用 |
| Description | String(255) | N | 説明 | |
| Processing | Button | N | 支払督促状作成 | エントリ生成 |
| SendIt | Button | N | 送信 | |
| Processed | YesNo | Y | 処理済み |
C_DunningRunEntry(督促エントリ)
Section titled “C_DunningRunEntry(督促エントリ)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_DunningRunEntry_ID | ID | PK | エントリID | 主キー |
| C_DunningRun_ID | TableDirect | Y | 督促実行FK | 親リンク |
| C_DunningLevel_ID | TableDirect | Y | 督促レベル | default @C_DunningLevel_ID@ |
| C_BPartner_ID | Search | Y | 取引先 | |
| C_BPartner_Location_ID | TableDirect | Y | 取引先住所 | 自動選定 |
| AD_User_ID | TableDirect | N | 担当者(宛名) | default -1 |
| SalesRep_ID | Table | Y | 社内担当者 | 取引先マスタから引継ぎ |
| C_Currency_ID | Search | Y | 通貨 | 換算先通貨 |
| Amt | Amount | Y | 金額 | 明細から自動集計 |
| Qty | Quantity | Y | 数量 | 対象明細件数(自動集計) |
| Note | Text(2000) | N | メモ | 督促書への追記 |
| Processed | YesNo | Y | 処理済み | 明細へ伝播 |
C_DunningRunLine(督促明細)
Section titled “C_DunningRunLine(督促明細)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_DunningRunLine_ID | ID | PK | 明細ID | 主キー |
| C_DunningRunEntry_ID | TableDirect | Y | エントリFK | 親リンク |
| C_Invoice_ID | Search | N | 請求書 | 請求書または支払のどちらか |
| C_Payment_ID | Search | N | 支払 | |
| C_InvoicePaySchedule_ID | Search | N | 請求支払スケジュール | 分割払い対応 |
| Amt / OpenAmt | Amount | Y | 金額 / 残高金額 | |
| ConvertedAmt | Amount | Y | 換算金額 | MConversionRate で換算 |
| DaysDue | Integer | Y | 支払期日日数 | 負数=期日前 |
| TimesDunned | Integer | Y | 支払督促回数 | |
| FeeAmt / InterestAmt | Amount | Y | 手数料 / 利息 | |
| TotalAmt | Amount | Y | 合計 | ConvertedAmt+FeeAmt+InterestAmt |
| IsInDispute | YesNo | Y | 検討中(係争中) |
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"
ビジネスロジック
Section titled “ビジネスロジック”MDunningRunEntry.setBPartner() — 宛先の自動選定
Section titled “MDunningRunEntry.setBPartner() — 宛先の自動選定”- 取引先の住所が 1 件のみならそれを採用
- 複数ある場合、販売取引なら「支払元(IsPayFrom)」、購買取引なら「送金先(IsRemitTo)」の住所を優先
- 見つからなければ「請求先(IsBillTo)」→「最初の有効住所」の順にフォールバック
- 有効住所が 1 件もなければ
BPartnerNoAddressExceptionを送出 - 担当者(AD_User_ID)は選定した住所に紐づくユーザーを自動セット、社内担当者は取引先マスタの
SalesRep_IDを引き継ぎ
MDunningRunEntry.beforeSave() — 処理確定時の連動
Section titled “MDunningRunEntry.beforeSave() — 処理確定時の連動”Processed=true で保存すると次を実行します。
- 全明細(C_DunningRunLine)の Processed を true に伝播
- 督促レベルに「与信停止を設定(IsSetCreditStop)」があれば取引先の
SOCreditStatusを「与信停止(CreditStop)」に変更 - 「支払条件を設定(IsSetPaymentTerm)」があれば取引先の
C_PaymentTerm_IDを督促レベルの支払条件へ変更
MDunningRunLine — 金額計算とエントリ集計
Section titled “MDunningRunLine — 金額計算とエントリ集計”- beforeSave: 請求書・支払のどちらも未設定なら金額を 0 にリセット。換算金額が未計算なら
MConversionRate.convert()で明細通貨→エントリ通貨に換算。TotalAmt = ConvertedAmt + FeeAmt + InterestAmtを自動計算。処理済みかつ請求書ありの場合、請求書のC_DunningLevel_IDとInvoiceCollectionType(レベルがステートメント以外なら「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 の定義はありません
関連プロセス
Section titled “関連プロセス”| プロセス/ボタン | 説明 |
|---|---|
| 支払督促状作成(Processing) | 督促レベル条件に基づき督促エントリ・明細を生成 |
| 送信(SendIt) | 督促状の送信処理 |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”督促状は督促レベルの設計次第で、段階的な督促文面・手数料・与信停止までを標準機能で自動化できます。国内商習慣に合わせた督促書フォーマットのカスタマイズもご相談ください。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。