コンテンツにスキップ

iDempiere 消込伝票の使い方|債権債務・資金管理 操作マニュアル・技術仕様

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

消込伝票は、入金支払伝票と請求書の消込(Allocation)を参照し、必要に応じて取り消すためのウィンドウです。消込レコードは通常、入金支払伝票の処理過程などで自動生成され、このウィンドウでは「どの支払がどの請求書に充当されたか」を明細単位で確認できます。

📌 ポイント: このウィンドウの主用途は消込の参照と取消です。誤った消込は「配分プロセス」の逆仕訳、または「Reset Allocation Direct」ボタンで解除できます。取消すると対象請求書の未消込残高が復活します。

  • 支払・入金と請求書の消込結果の参照(取引先・金額・日付)
  • 消込明細ごとの割引金額・回収不能額・過不足金額の確認
  • 誤った消込の取消(逆仕訳・逆仕訳(未払計上))
  • 「Reset Allocation Direct」ボタンによる消込の直接リセット(削除)
  • 消込伝票の会計転記状態の確認
  • 手動消込(マニュアルフラグ)と自動生成消込の区別

消込伝票はヘッダー+明細の 2 タブ構成です。

タブ名テーブル項目数役割
消込伝票C_AllocationHdr約17項目消込ヘッダー(日付・通貨・伝票処理・リセット)
消込伝票明細C_AllocationLine約13項目消込の内訳(取引先・請求書・支払・金額)

消込伝票は新規入力よりも「参照して、必要なら取り消す」流れが基本です。

graph TD
    A["🚀 メニューから開く<br/>債権債務管理&資金管理 > 消込伝票"] --> B["🔍 伝票番号・取引日付等で<br/>対象の消込を検索"]
    B --> C["📋 消込伝票明細タブで内訳を確認<br/>(取引先・請求書・支払・金額)"]
    C --> D{消込は正しい?}
    D -->|正しい| E["✅ そのまま(転記状態を確認)"]
    D -->|誤り| F{取消方法}
    F -->|会計履歴を残す| G["↩️ 配分プロセスで<br/>逆仕訳を実行"]
    F -->|直接リセット| H["🗑 Reset Allocation Direct<br/>ボタンで消込を削除"]
    G --> I["💡 請求書の未消込残高が復活<br/>→ 正しい消込をやり直し"]
    H --> I

メニューから開く 債権債務管理&資金管理 > 消込伝票 伝票番号・取引日付等で 対象の消込を検索 消込伝票明細タブで内訳を確認 (取引先・請求書・支払・金額) そのまま(転記状態を確認) ↩ 配分プロセスで 逆仕訳を実行 Reset Allocation Direct ボタンで消込を削除 請求書の未消込残高が復活 → 正しい消込をやり直し 消込は正しい? 取消方法 正しい 誤り 会計履歴を残す 直接リセット

メニューから「債権債務管理&資金管理 > 消込伝票」を開きます。

  1. ヘッダー(消込伝票タブ)で対象レコードを検索:
    • 伝票番号 / 取引日付 / 転記日付 / 通貨
    • マニュアル: 手動消込かどうか
    • 承認金額: 明細の回収不能額+割引金額の合計(完了時に自動計算)
  2. 消込伝票明細」タブで内訳を確認:
    • 取引先 / 売上請求伝票 / 入金支払伝票 / 金額
    • 割引金額 / 回収不能額 / 過不足金額

ヘッダーの「配分プロセス」ボタン(DocAction)で伝票を処理します。

stateDiagram-v2
    [*] --> ドラフト : 作成(DocStatus=DR)
    ドラフト --> 進行中 : 準備(prepareIt)
    進行中 --> 完了 : 完了(completeIt)
    完了 --> 無効 : 無効化(voidIt)
    完了 --> 取消 : 逆仕訳(reverseCorrectIt/<br/>reverseAccrualIt)
    完了 --> クローズ : クローズ(closeIt)
    完了 --> 進行中 : 再有効化(reActivateIt)

*

  • 逆仕訳: 消込を反対仕訳で取り消します。監査証跡が残るため通常はこちらを推奨します
  • Reset Allocation Direct(Processing ボタン): 請求書と支払の消込を削除(リセット)します
  • 完了時の検証内容は下記 FAQ・技術仕様を参照してください

主要項目のみ抜粋します。全項目一覧はリファレンス参照

項目名必須説明
伝票タイプ-選択伝票タイプ(支払消込)
伝票番号必須文字列消込伝票の伝票番号
取引日付必須日付消込の取引日
転記日付必須日付会計転記日(明細の伝票日付以降であること)
マニュアル必須チェック手動消込かどうか
通貨必須選択消込通貨
承認金額必須金額回収不能額+割引金額の合計(自動計算)
伝票状態必須リストDocStatus(デフォルト: ドラフト)
配分プロセス必須ボタンDocAction(デフォルト: 完了)
転記必須ボタン会計転記状態
Reset Allocation Direct-ボタン消込の削除(リセット)
項目名必須説明
取引先-検索消込対象の取引先(完了時に必須チェックあり)
受注伝票-検索関連する受注伝票
売上請求伝票-検索消込対象の請求書
入金支払伝票-検索充当する支払・入金
料金-選択差額を費目処理する場合の料金
金額必須金額消込金額
割引金額必須金額早期支払割引として処理する金額
回収不能額必須金額貸倒として処理する金額
過不足金額-金額過払い(未消込)・不足(一部支払)金額

Q. 消込伝票はどこで作成されますか?

Section titled “Q. 消込伝票はどこで作成されますか?”

通常は入金支払伝票の処理過程などで自動生成されます(このウィンドウは参照・取消用です)。手動で作成された消込は「マニュアル」フラグで区別できます。MAllocationHdr には支払・請求書・現金出納帳それぞれから消込を逆引きする API(getOfPayment / getOfInvoice / getOfCash)が用意されています。

Q. 誤った消込を取り消すには?

Section titled “Q. 誤った消込を取り消すには?”

2 つの方法があります。(1) 「配分プロセス」から逆仕訳を実行する(反対仕訳が残り監査証跡として追跡可能)、(2) 「Reset Allocation Direct」ボタンで消込を削除する。いずれも対象請求書の未消込残高が復活し、消込をやり直せます。

Q. 完了時に「Wrong allocation date」エラーになります

Section titled “Q. 完了時に「Wrong allocation date」エラーになります”

prepareIt() が明細に紐づく請求書・支払の転記日付を検証しており、それらが消込ヘッダーの転記日付よりの場合はエラーになります。消込の転記日付を、対象伝票の転記日付以降に設定してください。

Q. 完了時に「No Business Partner」や「@IsPaid@」エラーになります

Section titled “Q. 完了時に「No Business Partner」や「@IsPaid@」エラーになります”
  • No Business Partner: 明細に取引先が設定されていません。全明細に取引先が必須です
  • @ValidationError@ @C_Invoice_ID@ @IsPaid@: 対象請求書が既に支払済み(IsPaid=Y)の状態で、さらに正の金額を消込しようとしています。請求書の消込状況を確認してください

Q. 会計期間が閉じているのに消込を完了しようとするとどうなりますか?

Section titled “Q. 会計期間が閉じているのに消込を完了しようとするとどうなりますか?”

prepareIt() の冒頭で伝票基本タイプ「支払消込(Payment Allocation)」の会計期間オープンチェックが実行され、対象期間が閉じている場合は完了できません。

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

消込伝票は伝票型(DocAction 実装)ウィンドウで、ヘッダー C_AllocationHdr と明細 C_AllocationLine で構成されます。MAllocationHdr クラス(1,097行)が伝票処理と検証を、MAllocationLine クラス(376行)が明細と関連伝票(請求書・支払・現金明細・銀行振替)への紐付けを担います。アクセスレベルは 1(組織)、レコード削除は不可(IsDeleteable=N)です。会計転記は org.compiere.acct.Doc_AllocationHdr が処理します。

classDiagram
    class MAllocationHdr {
        +getOfPayment(ctx, C_Payment_ID, trx) MAllocationHdr[]
        +getOfInvoice(ctx, C_Invoice_ID, trx) MAllocationHdr[]
        +getOfCash(ctx, C_Cash_ID, trx) MAllocationHdr[]
        +getLines(boolean) MAllocationLine[]
        +processIt(String) boolean
        +prepareIt() String
        +completeIt() String
        +voidIt() boolean
        +reverseCorrectIt() boolean
        +reverseAccrualIt() boolean
        +copyFrom(from, dateAcct, dateTrx, trx) MAllocationHdr
    }
    class MAllocationLine {
        +setDocInfo(C_BPartner_ID, C_Order_ID, C_Invoice_ID) void
        +setPaymentInfo(C_Payment_ID, C_CashLine_ID) void
        +getParent() MAllocationHdr
        +getInvoice() MInvoice
    }
    class X_C_AllocationHdr {
        <<generated>>
    }
    class X_C_AllocationLine {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    MAllocationHdr --|> X_C_AllocationHdr
    MAllocationLine --|> X_C_AllocationLine
    X_C_AllocationHdr --|> PO
    X_C_AllocationLine --|> PO
    MAllocationHdr --> MAllocationLine : has many
    MAllocationLine --> MInvoice : allocates
    MAllocationLine --> MPayment : from

+getOfPayment(ctx, C_Payment_ID, trx) MAllocationHdr[] +getOfInvoice(ctx, C_Invoice_ID, trx) MAllocationHdr[] +getOfCash(ctx, C_Cash_ID, trx) MAllocationHdr[] +getLines(boolean) MAllocationLine[] +processIt(String) boolean +prepareIt() String +completeIt() String +voidIt() boolean +reverseCorrectIt() boolean +reverseAccrualIt() boolean +copyFrom(from, dateAcct, dateTrx, trx) MAllocationHdr +setDocInfo(C_BPartner_ID, C_Order_ID, C_Invoice_ID) void +setPaymentInfo(C_Payment_ID, C_CashLine_ID) void +getParent() MAllocationHdr +getInvoice() MInvoice <> <> > X_C_AllocationHdr MAllocationLine -- > PO X_C_AllocationLine --

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

カラム名必須説明備考
C_AllocationHdr_IDIDPK消込ID主キー
C_DocType_IDTableDirectN伝票タイプ
DocumentNoString(30)Y伝票番号
DateTrxDateY取引日付
DateAcctDateY転記日付
IsManualYesNoY手動消込フラグ
C_Currency_IDTableDirectY通貨
ApprovalAmtAmountY承認金額prepareIt で自動計算
DocStatusList(2)Y伝票状態デフォルト DR
DocActionButtonY伝票アクションデフォルト CO
PostedButtonY転記状態
ProcessingButtonNReset Allocation Direct
Reversal_IDSearchN逆仕訳元の消込ID
カラム名必須説明備考
C_AllocationLine_IDIDPK明細ID主キー
C_AllocationHdr_IDSearchYヘッダーFK(親)
C_BPartner_IDSearchN取引先完了時に必須チェック
C_Order_IDSearchN受注伝票
C_Invoice_IDSearchN請求書
C_Payment_IDSearchN入金支払伝票
C_CashLine_IDSearchN現金明細
C_BankTransfer_IDSearchN銀行振替
C_Charge_IDTableDirectN料金
AmountAmountY消込金額
DiscountAmtAmountY割引金額
WriteOffAmtAmountY回収不能額
OverUnderAmtAmountN過不足金額
  1. 会計期間チェック: MPeriod.testPeriodOpen() を伝票基本タイプ「Payment Allocation」で実行
  2. 明細必須: 明細 0 件は @NoLines@ エラー
  3. 支払済み請求書ガード: 逆仕訳でない場合、対象請求書が IsPaid=Y(無効・取消を除く)かつ正の消込金額なら @ValidationError@ @C_Invoice_ID@ @IsPaid@ を throw
  4. 取引先必須: 明細に取引先がなければ「No Business Partner」
  5. 日付整合性: 明細の請求書・支払の転記日付がヘッダー転記日付より後なら「Wrong allocation date」(IDEMPIERE-1850)
  6. 承認金額計算: 全明細の 回収不能額+割引金額 を ApprovalAmt にセット
flowchart TD
    A[completeIt] --> B[prepareIt 再チェック]
    B --> C[Model Validator<br/>TIMING_BEFORE_COMPLETE]
    C --> D[未承認なら暗黙承認 approveIt]
    D --> E[updateBP<br/>取引先残高の更新]
    E -->|失敗| X[STATUS_Invalid]
    E -->|成功| F[各明細 line.processIt<br/>請求書・支払への反映]
    F --> G[Model Validator<br/>TIMING_AFTER_COMPLETE]
    G --> H[Processed=Y<br/>DocAction=Close<br/>STATUS_Completed]

失敗 成功 prepareIt 再チェック Model Validator TIMING_BEFORE_COMPLETE 未承認なら暗黙承認 approveIt updateBP 取引先残高の更新 各明細 line.processIt 請求書・支払への反映 Model Validator TIMING_AFTER_COMPLETE Processed=Y DocAction=Close STATUS_Completed

completeIt() は取引先残高の更新(updateBP)後、各明細の processIt() で請求書・支払側の消込状態を反映します。

  • Model Validator: 伝票型のため docValidate() の TIMING_BEFORE/AFTER_PREPARE・TIMING_BEFORE/AFTER_COMPLETE で独自検証・後続処理を追加できます(prepareIt/completeIt 内で fire されることをソースで確認済み)
  • Callout: C_AllocationHdr / C_AllocationLine の標準カラムに callout は設定されていません(gw_column.tsv 確認済み)
  • 会計カスタマイズ: 転記ロジックは org.compiere.acct.Doc_AllocationHdr / DocLine_Allocation が担当します

消込の自動マッチングルールや取消時の承認フローなど、債権債務運用に合わせた拡張は Model Validator で安全に実装できます。

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

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