iDempiere 銀行振替の使い方|債権債務・資金管理 操作マニュアル・技術仕様
This content is not available in your language yet.
📖 債権債務・資金管理の全体像: 債権債務・資金管理の全体図 も合わせてご覧ください。
銀行振替(Bank Transfer / Bank/Cash Transfer)は、自社の銀行口座から別の自社口座への資金移動を 1 伝票で処理するウィンドウです。伝票を完了すると、出金側(From 口座)と入金側(To 口座)の支払伝票(C_Payment)が 2 件自動生成・自動完了され、各口座の銀行明細照合に使用できます。
📌 ポイント: 振替の実体は「支払伝票 2 件の自動生成」です。出金・入金それぞれの支払伝票が各銀行口座に紐づくため、通常の入出金と同じ流れで銀行明細(Bank Statement)との照合ができます。
銀行振替でできること
Section titled “銀行振替でできること”- 自社の銀行口座間の資金移動を 1 伝票で登録・処理
- 通貨が異なる口座間の振替(換算レートの自動計算・手動上書き)
- 組織をまたぐ資金移動(From 組織 / To 組織を個別指定)
- 完了時に出金・入金の支払伝票 2 件を自動生成・自動完了
- 生成された支払伝票の「Payments」タブでの一覧確認
- 無効化(Void)による生成済み支払伝票の一括取消
2 タブ構成のシンプルな伝票ウィンドウです。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| Bank Transfer | C_BankTransfer | 約26項目 | 振替伝票本体(From/To 口座・金額・レート・伝票処理) |
| Payments | C_Payment | 約24項目 | 完了時に自動生成された支払伝票の参照(子タブ) |
💡 ヒント: Payments タブは手入力するタブではなく、完了処理で自動生成された支払伝票を確認するための参照タブです。
基本操作手順
Section titled “基本操作手順”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["🔗 各口座の銀行明細で照合"]
アクセス方法
Section titled “アクセス方法”メニューから「債権債務管理&資金管理 > Bank Transfer」を開きます。
- ツールバーの「新規」ボタンをクリック
- 基本情報を入力:
- 伝票番号: 自動採番(変更可)
- 支払日付 / 転記日付: 既定はログイン日付
- **From 側(出金元)**を入力:
- From Bank Account: 出金元の銀行口座
- From Amount: 出金額
- From Charge: 振替に使用する料金(勘定)。生成される支払伝票の勘定として使用されます
- From Tender Type: 提出タイプ(既定: Direct Deposit)
- **To 側(入金先)**を入力:
- To Bank Account: 入金先の銀行口座(From と同一口座は指定不可)
- To Amount: 入金額
- To Tender Type: 提出タイプ(既定: Direct Debit)
- 「保存」をクリック
💡 ヒント: From/To の通貨・組織・取引先は、保存時に銀行口座マスタから自動補完されます(未入力の場合のみ)。To Charge を空欄にすると From Charge が自動コピーされます。
C_BankTransfer は DocStatus / DocAction を持つ伝票型テーブルです。
- 入力内容を確認し「Process Bank Transfer」(伝票処理ボタン)をクリック
- 「完了」を選択すると、以下が自動実行されます:
- 出金側の支払伝票(From 口座・支払)を生成し完了
- 入金側の支払伝票(To 口座・入金)を生成し完了
- 伝票状態が「完了」になり、次アクションは「クローズ」
- 取り消す場合は「無効化(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 | - | ボタン | 伝票処理(既定アクション: 完了) |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”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_Payment を C_BankTransfer_ID で絞り込んだ参照タブです。
アーキテクチャ概要
Section titled “アーキテクチャ概要”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 検証・補完
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MBankTransfer.java
関連DBテーブル
Section titled “関連DBテーブル”C_BankTransfer(銀行振替)
Section titled “C_BankTransfer(銀行振替)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_BankTransfer_ID | ID | PK | 銀行振替ID | 主キー |
| AD_Client_ID | TableDirect | Y | クライアント | default @#AD_Client_ID@ |
| AD_Org_ID | TableDirect | Y | 組織 | default @#AD_Org_ID@ |
| DocumentNo | String(30) | Y | 伝票番号 | 識別子 |
| Description | String(255) | N | 説明 | |
| PayDate | Date | Y | 支払日付 | default @#Date@ |
| DateAcct | Date | Y | 転記日付 | default @#Date@ |
| From_C_BankAccount_ID | Table | Y | 出金元口座 | To と同一不可 |
| From_AD_Org_ID | Table | Y | 出金側組織 | 口座の組織と一致必須 |
| From_C_BPartner_ID | Search | Y | 出金側取引先 | AD_OrgBP_ID 経由で自動補完 |
| From_C_Charge_ID | Table | Y | 出金側料金 | 生成 Payment の勘定 |
| From_C_Currency_ID | Table | Y | 出金側通貨 | 口座から自動補完 |
| From_Amt | Amount | Y | 出金額 | |
| From_TenderType | List | Y | 出金側提出タイプ | default A(Direct Deposit) |
| To_C_BankAccount_ID | Table | Y | 入金先口座 | |
| To_AD_Org_ID | Table | Y | 入金側組織 | 口座から自動補完 |
| To_C_BPartner_ID | Search | Y | 入金側取引先 | 自動補完 |
| To_C_Charge_ID | Table | Y | 入金側料金 | 未設定時 From からコピー |
| To_C_Currency_ID | Table | Y | 入金側通貨 | 口座から自動補完 |
| To_Amt | Amount | Y | 入金額 | レート指定時は再計算 |
| To_TenderType | List | Y | 入金側提出タイプ | default D(Direct Debit) |
| C_ConversionType_ID | TableDirect | N | 通貨レートタイプ | |
| IsOverrideCurrencyRate | YesNo | Y | 為替レート上書き | default N |
| Rate | Number | Y | 換算レート | 0 なら To÷From で自動計算 |
| DocStatus | List | Y | 伝票状態 | default DR |
| DocAction | Button | Y | 伝票アクション | default CO |
| Processed | YesNo | Y | 処理済み |
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 : "消込明細"
ビジネスロジック
Section titled “ビジネスロジック”beforeSave() の主要処理
Section titled “beforeSave() の主要処理”- 口座の同一チェック: From と To の銀行口座が同一ならエラー(
FromToBankAccountMustDifferent) - 組織整合性: From 口座の所属組織と
From_AD_Org_IDの不一致はエラー(FromOrgNotMatchBankAccount) - 自動補完: From/To 通貨・To 組織を各銀行口座マスタから、From/To 取引先を口座組織のリンク取引先(
C_BPartner.AD_OrgBP_ID)から補完 - レート計算:
Rate=0ならTo_Amt ÷ From_Amt(小数 12 桁・HALF_UP)でレートを算出。Rate指定時はRate × From_Amtを To 通貨の標準精度で丸めてTo_Amtにセット - 料金コピー:
To_C_Charge_ID未設定時にFrom_C_Charge_IDをコピー
completeIt() の処理フロー
Section titled “completeIt() の処理フロー”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 の取引先 = To 側取引先、入金 Payment の取引先 = From 側取引先)
- 会計スキーマ通貨と口座通貨が異なり「為替レート上書き」が有効な場合、出金側にはレートをそのまま、入金側には逆数(1 ÷ Rate)をセット
- 生成された Payment の完了処理が失敗すると例外で伝票全体が失敗します
その他の DocAction
Section titled “その他の DocAction”| アクション | 実装 |
|---|---|
| voidIt(無効化) | C_BankTransfer_ID で関連 Payment を全件検索し 1 件ずつ void。失敗時は例外。成功で DocAction=None |
| closeIt(クローズ) | Model Validator 呼出しのみで成功を返す |
| reverseCorrectIt / reverseAccrualIt | 関連 Payment の反転処理は行うが、メソッド自体は false を返す実装(伝票状態は反転完了にならない) |
| reActivateIt(再有効化) | 常に false(未サポート) |
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”prepareIt / completeIt / voidIt 等の各段階で ModelValidationEngine.fireDocValidate() が呼ばれるため、docValidate() の TIMING_BEFORE_COMPLETE 等で独自チェックを追加できます。
@Overridepublic 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;}Callout
Section titled “Callout”C_BankTransfer テーブルの標準カラムにコールアウト定義はありません(AD カラム定義で確認)。画面連動の自動計算はサーバー側 beforeSave() に集約されています。項目連動が必要な場合は IColumnCallout を OSGi サービスとして追加登録します。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”銀行振替の承認ルールや金額上限チェックは、Model Validator でコア改変なしに追加できます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。