コンテンツにスキップ

iDempiere 請求スケジュールの使い方|取引先管理 操作マニュアル・技術仕様

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

請求スケジュールは、複数の出荷をまとめて 1 枚の請求書にする「一括請求(サマリー請求)」の生成頻度と締切日を定義するマスタです。月末締めの合算請求など、出荷の都度ではなく決まったサイクルで請求書を発行したい顧客に対して設定します。

📌 ポイント: 請求スケジュールは作成しただけでは機能しません。取引先マスタ(顧客)に関連付けることで、請求書の一括生成時に「今日がこの顧客の請求日か」「どの出荷までを含めるか」の判定に使われます。

請求スケジュールでできること

Section titled “請求スケジュールでできること”
  • 請求書生成の頻度定義(日次 / 週次 / 月次 / 月2回)
  • 週次請求の生成曜日と締切曜日の指定(偶数週のみの隔週請求も可)
  • 月次請求の生成日と締切日の指定(1〜31 日)
  • 最小請求金額の設定(下限金額に達するまで請求を保留)
  • 顧客ごとの請求サイクルの使い分け(取引先マスタに関連付け)

請求スケジュールは 1 タブのみのシンプルな構成です。

タブ名テーブル項目数役割
請求スケジュールC_InvoiceSchedule14項目請求頻度・締切日・最小金額の定義
graph TD
    A["🚀 メニューから開く<br/>取引先管理 > 取引先管理セットアップ > 請求スケジュール"] --> B["➕ 新規で名称を入力"]
    B --> C{請求頻度}
    C -->|日次| D["📅 追加設定不要<br/>(毎日が請求対象日)"]
    C -->|週次| E["🗓 請求曜日・請求締切曜日を設定<br/>(必要なら偶数週のみ)"]
    C -->|月次 / 月2回| F["📆 請求日付・請求締切日付を設定<br/>(1〜31)"]
    D --> G["💰 必要に応じて<br/>最小請求金額設定+金額"]
    E --> G
    F --> G
    G --> H["💾 保存"]
    H --> I["🔗 取引先マスタ(顧客)に<br/>請求スケジュールとして設定"]

メニューから開く 取引先管理 > 取引先管理セットアップ > 請求スケジュール 新規で名称を入力 追加設定不要 (毎日が請求対象日) 請求曜日・請求締切曜日を設定 (必要なら偶数週のみ) 請求日付・請求締切日付を設定 (1〜31) 必要に応じて 最小請求金額設定+金額 保存 取引先マスタ(顧客)に 請求スケジュールとして設定 請求頻度 日次 週次 月次 / 月2回

メニューから「取引先管理 > 取引先管理セットアップ > 請求スケジュール」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • 名称: スケジュール名(例: 月末締め一括請求
    • 請求頻度: 日次 / 週次 / 月次 / 月2回 から選択
  3. 頻度に応じた詳細を入力:
    • 週次の場合: 「請求曜日」(生成する曜日)と「請求締切曜日」(対象出荷の最終曜日)
    • 月次・月2回の場合: 「請求日付」(生成日、1〜31)と「請求締切日付」(対象出荷の最終日)
  4. 下限金額を設けたい場合は「最小請求金額設定」にチェックし「金額」を入力
  5. 保存」をクリック
  6. 取引先マスタ(顧客)の請求スケジュール欄に本レコードを設定

💡 ヒント: 「締切日付」と「請求日付」は役割が異なります。締切日付=「どの出荷までを今回の請求に含めるか」、請求日付=「いつ請求書を生成するか」です。例えば「20日締め・25日請求」なら締切日付=20、請求日付=25 とします。

項目名必須説明
名称必須文字列スケジュール名(一覧での識別子)
説明-文字列補足説明
有効必須チェックレコードの有効/無効
デフォルト必須チェックデフォルトのスケジュールとして使用
請求頻度必須リスト日次(D) / 週次(W) / 月次(M) / 月2回(T)
請求曜日必須リスト週次: 請求書を生成する曜日
請求締切曜日-リスト週次: 対象出荷を含める最終曜日
偶数週の請求書-チェック週次: 偶数週のみ請求(隔週請求)
請求日付必須整数月次: 請求書の生成日(1〜31、初期値1)
請求締切日付-整数月次: 対象出荷を含める最終日(1〜31)
最小請求金額設定必須チェック下限金額を超えた場合のみ請求
金額必須金額最小請求金額の下限値

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

Q. 請求スケジュールを設定したのに請求書がまとまりません

Section titled “Q. 請求スケジュールを設定したのに請求書がまとまりません”

請求スケジュールはマスタ単体では動作しません。取引先マスタ(顧客)に本スケジュールが関連付けられているか、また顧客の請求ルールが一括請求の対象になっているかを確認してください。設定は 取引先マスタ の「顧客」タブで行います。

Q. 「金額」はいつ使われますか?

Section titled “Q. 「金額」はいつ使われますか?”

「最小請求金額設定」にチェックした場合の下限金額です。未請求額がこの金額を超えるまで請求書の生成を保留する動きになります。なお金額判定付きの判定メソッド canInvoice(日付, 受注金額) は iDempiere 13 で非推奨(削除予定)となっており、「請求額は受注ではなく出荷実績から計算すべき」という理由がソースコードに明記されています。金額下限に依存した運用設計は避けることを推奨します。

Q. 「月2回」を選ぶと 15 日ずらした 2 回目が生成されますか?

Section titled “Q. 「月2回」を選ぶと 15 日ずらした 2 回目が生成されますか?”

iDempiere 13 のソースコード上、月2回(TwiceMonthly)は月次と同じ判定分岐で処理され、「請求日付+15日」を判定する後続ブロックには到達しない実装になっています(MInvoiceSchedule.canInvoice())。月2回の請求サイクルを厳密に運用したい場合は、テスト環境での動作確認を強く推奨します。

Q. 月末締めにしたい場合、請求締切日付はいくつにしますか?

Section titled “Q. 月末締めにしたい場合、請求締切日付はいくつにしますか?”

31 を設定します。判定はカレンダー日付ベースで行われるため、31 日が存在しない月でも月末側に寄せて扱われます。運用開始前に 2 月・30 日までの月で意図どおりに生成されるか確認してください。

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

請求スケジュールは C_InvoiceSchedule テーブル(アクセスレベル 3 = クライアント+組織)に格納されるマスタです。モデルクラスは MInvoiceSchedule(297行)で、ImmutablePOSupport を実装しておりキャッシュ経由の高速参照(MInvoiceSchedule.get())が可能です。Document 型ではないため伝票処理(DocAction)はありません。

classDiagram
    class MInvoiceSchedule {
        +get(C_InvoiceSchedule_ID) MInvoiceSchedule
        +canInvoice(Timestamp) boolean
        +canInvoice(Timestamp, BigDecimal) boolean
        -getCalendarDay(String) int
        +markImmutable() MInvoiceSchedule
    }
    class X_C_InvoiceSchedule {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class ImmutablePOSupport {
        <<interface>>
    }
    MInvoiceSchedule --|> X_C_InvoiceSchedule
    X_C_InvoiceSchedule --|> PO
    MInvoiceSchedule ..|> ImmutablePOSupport

+get(C_InvoiceSchedule_ID) MInvoiceSchedule +canInvoice(Timestamp) boolean +canInvoice(Timestamp, BigDecimal) boolean -getCalendarDay(String) int +markImmutable() MInvoiceSchedule <> <> <> > X_C_InvoiceSchedule X_C_InvoiceSchedule --

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

C_InvoiceSchedule(請求スケジュール)

Section titled “C_InvoiceSchedule(請求スケジュール)”
カラム名必須説明備考
C_InvoiceSchedule_IDIDPK請求スケジュールID主キー
AD_Client_IDTableDirectYクライアントdefault @#AD_Client_ID@
AD_Org_IDTableDirectY組織default @#AD_Org_ID@
NameString(60)Y名称識別子(Identifier)
DescriptionString(255)N説明
IsActiveYesNoY有効default Y
IsDefaultYesNoYデフォルト
InvoiceFrequencyList(1)Y請求頻度D=日次 / W=週次 / M=月次 / T=月2回
InvoiceWeekDayList(1)Y請求曜日1=月 〜 7=日
InvoiceWeekDayCutoffList(1)N請求締切曜日
EvenInvoiceWeekYesNoN偶数週の請求書
InvoiceDayIntegerY請求日付default 1、範囲 1〜31
InvoiceDayCutoffIntegerN請求締切日付default 1、範囲 1〜31
IsAmountYesNoY最小請求金額設定
AmtAmountY金額(下限)

コールアウトは設定されていません(callout 列はすべて未設定)。

canInvoice(Timestamp) — 請求可否判定

Section titled “canInvoice(Timestamp) — 請求可否判定”

指定日付の出荷が「今回の請求対象か」を判定します:

  1. 日次(D): 常に true
  2. 週次(W): 今日を基準に「請求締切曜日」「請求曜日」を直近の過去日に補正し、対象日付がその両方以前であれば true
  3. 月次(M)・月2回(T): InvoiceDayCutoff が設定されていれば締切日超過を先に判定し、次に InvoiceDay ベースで判定
  4. 注意: 月2回(T) は月次と同じ if 分岐(Monthly || TwiceMonthly)内で return するため、後続の「+15日」判定ブロック(Bi-Monthly)は到達不能コードになっています(13時点の実装)

canInvoice(Timestamp, BigDecimal) — 非推奨

Section titled “canInvoice(Timestamp, BigDecimal) — 非推奨”

@Deprecated(since="13", forRemoval=true)IsAmount=Y かつ受注金額が Amt 以上なら即 true を返す判定ですが、「請求額は出荷実績から計算すべきで、受注金額での判定は妥当でない」との理由で削除予定です。

MInvoiceSchedule.get(C_InvoiceSchedule_ID) はイミュータブルなキャッシュ済みインスタンスを返します。一括請求処理のように同一スケジュールを繰り返し参照する場面では、コンストラクタ生成ではなく get() を使用してください。

public class InvoiceScheduleValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if (po instanceof MInvoiceSchedule && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) {
MInvoiceSchedule sched = (MInvoiceSchedule) po;
// 例: 月次スケジュールでは締切日付の設定を必須にする
if (MInvoiceSchedule.INVOICEFREQUENCY_Monthly.equals(sched.getInvoiceFrequency())
&& sched.getInvoiceDayCutoff() <= 0) {
throw new AdempiereException("月次請求では請求締切日付を設定してください");
}
}
return null;
}
}

このテーブルに標準の Callout はないため、画面側の動的制御を追加する場合も IColumnCallout の新規実装で安全に拡張できます。

請求スケジュールは、顧客への請求書を一括生成する処理から canInvoice() 経由で参照されます(ウィンドウ定義の説明にある「summary invoices の生成」用途)。このウィンドウ自身にボタン起動のプロセスはありません。


請求スケジュールの判定ロジックは Model Validator や独自プロセスでコア改変なしに拡張できます。日本の商習慣(20日締め・月末締め等)に合わせた一括請求の設計もご相談ください。

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

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