Skip to content

iDempiere 銀行振替の使い方|債権債務・資金管理 操作マニュアル・技術仕様

This content is not available in your language yet.

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

銀行振替(Bank Transfer / Bank/Cash Transfer)は、自社の銀行口座から別の自社口座への資金移動を 1 伝票で処理するウィンドウです。伝票を完了すると、出金側(From 口座)と入金側(To 口座)の支払伝票(C_Payment)が 2 件自動生成・自動完了され、各口座の銀行明細照合に使用できます。

📌 ポイント: 振替の実体は「支払伝票 2 件の自動生成」です。出金・入金それぞれの支払伝票が各銀行口座に紐づくため、通常の入出金と同じ流れで銀行明細(Bank Statement)との照合ができます。

  • 自社の銀行口座間の資金移動を 1 伝票で登録・処理
  • 通貨が異なる口座間の振替(換算レートの自動計算・手動上書き)
  • 組織をまたぐ資金移動(From 組織 / To 組織を個別指定)
  • 完了時に出金・入金の支払伝票 2 件を自動生成・自動完了
  • 生成された支払伝票の「Payments」タブでの一覧確認
  • 無効化(Void)による生成済み支払伝票の一括取消

2 タブ構成のシンプルな伝票ウィンドウです。

タブ名テーブル項目数役割
Bank TransferC_BankTransfer約26項目振替伝票本体(From/To 口座・金額・レート・伝票処理)
PaymentsC_Payment約24項目完了時に自動生成された支払伝票の参照(子タブ)

💡 ヒント: Payments タブは手入力するタブではなく、完了処理で自動生成された支払伝票を確認するための参照タブです。

graph TD
    A["🚀 メニューから開く<br/>債権債務管理&資金管理 > Bank Transfer"] --> B["➕ 新規で基本情報を入力<br/>(支払日付・転記日付・説明)"]
    B --> C["🏦 From側を入力<br/>(From口座・From金額・料金・提出タイプ)"]
    C --> D["🏦 To側を入力<br/>(To口座・To金額)"]
    D --> E{From と To の<br/>通貨が異なる?}
    E -->|同一通貨| F["💾 保存"]
    E -->|異なる通貨| G["💱 レートを指定 or<br/>From/To金額から自動計算"]
    G --> F
    F --> H["✅ 伝票処理 → 完了"]
    H --> I["📄 支払伝票2件を自動生成<br/>(出金=From口座 / 入金=To口座)"]
    I --> J["🔗 各口座の銀行明細で照合"]

メニューから開く 債権債務管理&資金管理 > Bank Transfer 新規で基本情報を入力 (支払日付・転記日付・説明) From側を入力 (From口座・From金額・料金・提出タイプ) To側を入力 (To口座・To金額) 保存 レートを指定 or From/To金額から自動計算 伝票処理 → 完了 支払伝票2件を自動生成 (出金=From口座 / 入金=To口座) 各口座の銀行明細で照合 From と To の 通貨が異なる? 同一通貨 異なる通貨

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

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • 伝票番号: 自動採番(変更可)
    • 支払日付 / 転記日付: 既定はログイン日付
  3. **From 側(出金元)**を入力:
    • From Bank Account: 出金元の銀行口座
    • From Amount: 出金額
    • From Charge: 振替に使用する料金(勘定)。生成される支払伝票の勘定として使用されます
    • From Tender Type: 提出タイプ(既定: Direct Deposit)
  4. **To 側(入金先)**を入力:
    • To Bank Account: 入金先の銀行口座(From と同一口座は指定不可)
    • To Amount: 入金額
    • To Tender Type: 提出タイプ(既定: Direct Debit)
  5. 保存」をクリック

💡 ヒント: From/To の通貨・組織・取引先は、保存時に銀行口座マスタから自動補完されます(未入力の場合のみ)。To Charge を空欄にすると From Charge が自動コピーされます。

C_BankTransfer は DocStatus / DocAction を持つ伝票型テーブルです。

  1. 入力内容を確認し「Process Bank Transfer」(伝票処理ボタン)をクリック
  2. 完了」を選択すると、以下が自動実行されます:
    • 出金側の支払伝票(From 口座・支払)を生成し完了
    • 入金側の支払伝票(To 口座・入金)を生成し完了
    • 伝票状態が「完了」になり、次アクションは「クローズ」
  3. 取り消す場合は「無効化(Void)」を選択すると、生成済みの支払伝票がすべて無効化されます

⚠️ 注意: 完了後の「再有効化(Re-Activate)」はサポートされていません。誤登録の場合は無効化して新しい伝票を作成してください。

項目リファレンス(Bank Transfer タブ)

Section titled “項目リファレンス(Bank Transfer タブ)”

主要項目のみ抜粋します。全項目は 画面リファレンス を参照してください。

項目名必須説明
伝票番号必須文字列伝票の連番(自動採番)
支払日付必須日付資金移動日(既定: ログイン日付)
転記日付必須日付会計転記日(既定: ログイン日付)
From Bank Account必須選択出金元の銀行口座
From Organization必須選択出金側の組織(口座の組織と一致必須)
From Business Partner必須検索出金側取引先(口座の組織から自動補完)
From Charge必須選択振替用の料金(生成される支払伝票の勘定)
From Bank Currency必須選択出金側通貨(口座から自動補完)
From Amount必須金額出金額
From Tender Type必須リスト提出タイプ(既定: Direct Deposit)
To Bank Account必須選択入金先の銀行口座(From と別口座)
To Amount必須金額入金額(レート指定時は自動計算)
通貨レートタイプ-選択通貨換算レートタイプ
為替レート上書き必須チェック換算レートを手動指定する場合にチェック
レート必須数値換算レート(0 の場合 To÷From で自動計算)
伝票状態自動リスト既定: ドラフト(DR)
Process Bank Transfer-ボタン伝票処理(既定アクション: 完了)

Q. From と To に同じ銀行口座を指定できますか?

Section titled “Q. From と To に同じ銀行口座を指定できますか?”

できません。保存時に「From/To の銀行口座は異なる必要がある」というエラーになります(MBankTransfer.beforeSave() のチェック)。同様に、From 組織が From 口座の所属組織と一致しない場合も保存エラーになります。

Q. 通貨が異なる口座間で振替するとレートはどうなりますか?

Section titled “Q. 通貨が異なる口座間で振替するとレートはどうなりますか?”

2 通りの動作があります(beforeSave() で計算)。

  • レート = 0 のまま保存: To Amount ÷ From Amount でレートを自動計算(小数 12 桁)
  • レートを入力して保存: From Amount × レート で To Amount を再計算し、To 通貨の標準精度で丸め

会計スキーマ通貨と異なる通貨の場合、「為替レート上書き」をチェックすると指定レートが生成される支払伝票にも引き継がれます。

Q. 完了した銀行振替を取り消すには?

Section titled “Q. 完了した銀行振替を取り消すには?”

伝票処理から「無効化(Void)」を実行します。この伝票に紐づく支払伝票(C_Payment)がすべて検索され、1 件ずつ無効化されます。1 件でも無効化に失敗すると全体がロールバックされます。なお「再有効化(Re-Activate)」は実装上サポートされていません。

Q. From/To の取引先が勝手にセットされるのはなぜですか?

Section titled “Q. From/To の取引先が勝手にセットされるのはなぜですか?”

保存時に、各銀行口座の所属組織にリンクされた取引先(C_BPartner.AD_OrgBP_ID 経由)が自動補完されるためです。組織リンク取引先が見つからず From/To が同一組織の場合は、From 側の取引先が To 側にもコピーされます。組織間振替の内部取引を取引先として記録するための仕組みです。

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

銀行振替は C_BankTransfer テーブル(アクセスレベル: 組織、削除可、ビューではない)に格納される伝票型(DocAction 実装)ドキュメントです。MBankTransfer クラス(468 行)が保存時バリデーション・自動補完と、完了時の支払伝票 2 件生成を担います。子タブの Payments は C_PaymentC_BankTransfer_ID で絞り込んだ参照タブです。

classDiagram
    class MBankTransfer {
        +beforeSave(newRecord) boolean
        +processIt(action) boolean
        +prepareIt() String
        +completeIt() String
        +voidIt() boolean
        +closeIt() boolean
        +reverseCorrectIt() boolean
        +reverseAccrualIt() boolean
        +reActivateIt() boolean
        +getSummary() String
        +getApprovalAmt() BigDecimal
    }
    class X_C_BankTransfer {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    class DocAction {
        <<interface>>
    }
    MBankTransfer --|> X_C_BankTransfer
    X_C_BankTransfer --|> PO
    MBankTransfer ..|> DocAction
    MBankTransfer --> MPayment : completeIt で2件生成
    MBankTransfer --> MBankAccount : From/To 検証・補完

+beforeSave(newRecord) boolean +processIt(action) boolean +prepareIt() String +completeIt() String +voidIt() boolean +closeIt() boolean +reverseCorrectIt() boolean +reverseAccrualIt() boolean +reActivateIt() boolean +getSummary() String +getApprovalAmt() BigDecimal <> <> <> > X_C_BankTransfer X_C_BankTransfer --

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

カラム名必須説明備考
C_BankTransfer_IDIDPK銀行振替ID主キー
AD_Client_IDTableDirectYクライアントdefault @#AD_Client_ID@
AD_Org_IDTableDirectY組織default @#AD_Org_ID@
DocumentNoString(30)Y伝票番号識別子
DescriptionString(255)N説明
PayDateDateY支払日付default @#Date@
DateAcctDateY転記日付default @#Date@
From_C_BankAccount_IDTableY出金元口座To と同一不可
From_AD_Org_IDTableY出金側組織口座の組織と一致必須
From_C_BPartner_IDSearchY出金側取引先AD_OrgBP_ID 経由で自動補完
From_C_Charge_IDTableY出金側料金生成 Payment の勘定
From_C_Currency_IDTableY出金側通貨口座から自動補完
From_AmtAmountY出金額
From_TenderTypeListY出金側提出タイプdefault A(Direct Deposit)
To_C_BankAccount_IDTableY入金先口座
To_AD_Org_IDTableY入金側組織口座から自動補完
To_C_BPartner_IDSearchY入金側取引先自動補完
To_C_Charge_IDTableY入金側料金未設定時 From からコピー
To_C_Currency_IDTableY入金側通貨口座から自動補完
To_AmtAmountY入金額レート指定時は再計算
To_TenderTypeListY入金側提出タイプdefault D(Direct Debit)
C_ConversionType_IDTableDirectN通貨レートタイプ
IsOverrideCurrencyRateYesNoY為替レート上書きdefault N
RateNumberY換算レート0 なら To÷From で自動計算
DocStatusListY伝票状態default DR
DocActionButtonY伝票アクションdefault CO
ProcessedYesNoY処理済み
erDiagram
    C_BankTransfer ||--o{ C_Payment : "completeIt で2件生成"
    C_BankTransfer }o--|| C_BankAccount : "From口座"
    C_BankTransfer }o--|| C_BankAccount : "To口座"
    C_BankTransfer }o--|| C_Charge : "From/To 料金"
    C_BankTransfer }o--o| C_ConversionType : "レートタイプ"
    C_Payment }o--|| C_BankAccount : "口座別に消込"
    C_Payment ||--o{ C_AllocationLine : "消込明細"

completeIt で2件生成 From口座 To口座 From/To 料金 レートタイプ 口座別に消込 消込明細

  1. 口座の同一チェック: From と To の銀行口座が同一ならエラー(FromToBankAccountMustDifferent
  2. 組織整合性: From 口座の所属組織と From_AD_Org_ID の不一致はエラー(FromOrgNotMatchBankAccount
  3. 自動補完: From/To 通貨・To 組織を各銀行口座マスタから、From/To 取引先を口座組織のリンク取引先(C_BPartner.AD_OrgBP_ID)から補完
  4. レート計算: Rate=0 なら To_Amt ÷ From_Amt(小数 12 桁・HALF_UP)でレートを算出。Rate 指定時は Rate × From_Amt を To 通貨の標準精度で丸めて To_Amt にセット
  5. 料金コピー: To_C_Charge_ID 未設定時に From_C_Charge_ID をコピー
flowchart TD
    A[completeIt] --> B[TIMING_BEFORE_COMPLETE 検証]
    B --> C["出金 Payment 生成<br/>口座=From / 組織=From_AD_Org<br/>取引先=To_C_BPartner / 支払 (isReceipt=false)"]
    C --> D[出金 Payment を完了処理]
    D --> E["入金 Payment 生成<br/>口座=To / 組織=To_AD_Org<br/>取引先=From_C_BPartner / 入金 (isReceipt=true)"]
    E --> F[入金 Payment を完了処理]
    F --> G[Processed=Y / DocAction=Close / STATUS_Completed]
    D -->|失敗| H[IllegalStateException で全体ロールバック]
    F -->|失敗| H

出金 Payment 生成 口座=From / 組織=From_AD_Org 取引先=To_C_BPartner / 支払 (isReceipt=false) 入金 Payment 生成 口座=To / 組織=To_AD_Org 取引先=From_C_BPartner / 入金 (isReceipt=true) 失敗 TIMING_BEFORE_COMPLETE 検証 出金 Payment を完了処理 入金 Payment を完了処理 Processed=Y / DocAction=Close / STATUS_Completed IllegalStateException で全体ロールバック

  • 取引先は交差してセットされます(出金 Payment の取引先 = To 側取引先、入金 Payment の取引先 = From 側取引先)
  • 会計スキーマ通貨と口座通貨が異なり「為替レート上書き」が有効な場合、出金側にはレートをそのまま、入金側には逆数(1 ÷ Rate)をセット
  • 生成された Payment の完了処理が失敗すると例外で伝票全体が失敗します
アクション実装
voidIt(無効化)C_BankTransfer_ID で関連 Payment を全件検索し 1 件ずつ void。失敗時は例外。成功で DocAction=None
closeIt(クローズ)Model Validator 呼出しのみで成功を返す
reverseCorrectIt / reverseAccrualIt関連 Payment の反転処理は行うが、メソッド自体は false を返す実装(伝票状態は反転完了にならない)
reActivateIt(再有効化)常に false(未サポート)

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

Section titled “拡張ポイント(カスタマイズ箇所)”

prepareIt / completeIt / voidIt 等の各段階で ModelValidationEngine.fireDocValidate() が呼ばれるため、docValidate()TIMING_BEFORE_COMPLETE 等で独自チェックを追加できます。

@Override
public String docValidate(PO po, int timing) {
if (po instanceof MBankTransfer && timing == TIMING_BEFORE_COMPLETE) {
MBankTransfer bt = (MBankTransfer) po;
// 例: 高額振替の上限チェック
if (bt.getFrom_Amt().compareTo(new BigDecimal("10000000")) > 0)
return "1,000万円を超える銀行振替は承認が必要です";
}
return null;
}

C_BankTransfer テーブルの標準カラムにコールアウト定義はありません(AD カラム定義で確認)。画面連動の自動計算はサーバー側 beforeSave() に集約されています。項目連動が必要な場合は IColumnCallout を OSGi サービスとして追加登録します。


銀行振替の承認ルールや金額上限チェックは、Model Validator でコア改変なしに追加できます。

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

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