iDempiere カウンター伝票タイプの使い方|会計 操作マニュアル・技術仕様
📖 会計の全体像: 会計の全体図 も合わせてご覧ください。
カウンター伝票タイプは、組織間取引(取引先と組織をリンクした社内取引)で相手側伝票(カウンター伝票)を自動生成する際に、どの伝票タイプで作るかの対応付けを定義するウィンドウです。例えば「標準受注」から相手組織に「標準発注」を作る、といったマッピングを明示できます。
📌 ポイント: ここで定義しなければ、伝票タイプ定義の既定カウンター伝票タイプ、それも無ければ同じ基本タイプの最初の伝票タイプが自動選択されます。特定の伝票タイプ同士を厳密に対応付けたい場合にのみ登録が必要です。
カウンター伝票タイプでできること
Section titled “カウンター伝票タイプでできること”- 元伝票タイプ → カウンター伝票タイプの明示的なマッピング定義
- カウンター伝票生成の有効/無効の切り替え(IsCreateCounter)
- 生成したカウンター伝票に対する自動アクション(完成まで進める等)の指定
- 「ドキュメントタイプバリデート」ボタンによる対応付けの妥当性検証
シンプルな 1 タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| カウンター伝票タイプ | C_DocTypeCounter | 約11項目 | 伝票タイプの対応付けと自動アクション |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 メニューから開く<br/>会計管理 > 会計設定 > カウンター伝票タイプ"] --> B["➕ 新規で名称を入力"]
B --> C["📄 伝票タイプ(元)を選択<br/>例: 標準受注"]
C --> D["📄 カウンター伝票タイプ(先)を選択<br/>例: 標準発注"]
D --> E["⚙️ 伝票ステータス更新を指定<br/>(生成後に完成まで進める等)"]
E --> F["🔍 ドキュメントタイプバリデートで検証"]
F --> G{有効フラグ}
G -->|Y| H["✅ 組織間取引で自動適用"]
G -->|N| I["⚠️ 基本タイプの組み合わせを見直し"]
I --> C
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”メニューから「会計管理 > 会計設定 > カウンター伝票タイプ」を開きます。
- 「新規」ボタンをクリック
- 基本情報を入力:
- 名称: マッピング名(例:
標準受注→標準発注) - 伝票タイプ: 元取引の伝票タイプ
- カウンター伝票作成: 生成する場合はチェック(既定オン。特定タイプで生成を止めたい場合はオフ)
- カウンター伝票タイプ: 生成する相手側の伝票タイプ
- 伝票ステータス更新(DocAction): 生成後にカウンター伝票へ適用するアクション
- 名称: マッピング名(例:
- 「ドキュメントタイプバリデート」ボタンで対応付けを検証
- 「保存」をクリック
⚠️ 注意: 対応付けできる基本タイプの組み合わせは決まっています(下表)。組み合わせが不正な場合、検証で「有効」が N になり適用されません。
| 元伝票の基本タイプ | カウンター側の基本タイプ |
|---|---|
| 受注(Sales Order) | 発注(Purchase Order) |
| 仕入請求書(AP Invoice) | 売上請求書(AR Invoice) |
| 出荷(Material Delivery) | 入荷(Material Receipt) |
| 仕入クレジットメモ(AP Credit Memo) | 売上クレジットメモ(AR Credit Memo) |
| 入金(AR Receipt) | 支払(AP Payment) |
(逆方向の組み合わせも可)
項目リファレンス
Section titled “項目リファレンス”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列 | マッピング名 |
| 伝票タイプ | 必須 | 選択 | 元取引の伝票タイプ |
| カウンター伝票作成 | 必須 | チェック | カウンター伝票を生成するか(既定 Y) |
| カウンター伝票タイプ | 必須 | 選択 | 生成する伝票タイプ |
| 伝票ステータス更新 | - | リスト | 生成後の自動アクション(既定 -- = 何もしない) |
| 有効(IsValid) | 必須 | チェック | 検証結果(自動設定) |
| ドキュメントタイプバリデート | - | ボタン | 対応付けの検証 |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. カウンター伝票が生成されません。
Section titled “Q. カウンター伝票が生成されません。”前提として、取引先が組織にリンク(取引先マスタの組織リンク)されている必要があります。その上で、(1) 該当マッピングの「カウンター伝票作成」がオンか、(2) 検証で「有効」が Y になっているか、(3) カウンター伝票タイプ側が自動採番(DocNo 管理)になっているか、を確認してください。
Q. 「有効」が N になるのはなぜですか?
Section titled “Q. 「有効」が N になるのはなぜですか?”検証(validate())が失敗しています。原因は (1) 伝票タイプまたはカウンター伝票タイプが未設定/取得不可、(2) 基本タイプの組み合わせが上表のペアに該当しない、のいずれかです。また伝票タイプを変更すると有効フラグは自動的にリセットされ、保存時に再検証されます。
Q. 生成されたカウンター伝票を自動で「完成」まで進められますか?
Section titled “Q. 生成されたカウンター伝票を自動で「完成」まで進められますか?”「伝票ステータス更新」に完成(Complete)を指定すると、カウンター伝票生成後にそのアクションが適用されます。既定は --(ドラフトのまま)です。運用開始直後はドラフト生成で内容確認を挟み、安定後に自動完成へ切り替えるのが安全です。
Q. マッピングを定義しない場合はどう動きますか?
Section titled “Q. マッピングを定義しない場合はどう動きますか?”伝票タイプ定義側の既定カウンター伝票タイプが使われ、それも無ければ同じ基本タイプの最初の伝票タイプが自動選択されます(例: AR Invoice → 最初の AP Invoice タイプ)。明示制御したい組み合わせだけ登録すれば十分です。
🛠 技術仕様(開発者向け)
カウンター伝票タイプは C_DocTypeCounter テーブル(アクセスレベル 2 = Organization、削除可)に格納され、MDocTypeCounter クラス(472行)がマッピング解決と検証を担います。キャッシュ対応(markImmutable() / static get())で、伝票完成時の組織間取引処理から高速参照されます。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MDocTypeCounter {
+getCounterDocType_ID(Properties, int)$ int
+getCounterDocType(int)$ MDocTypeCounter
+getCounterDocBaseType(String)$ String
+get(int)$ MDocTypeCounter
+validate() String
+getDocType() MDocType
+getCounterDocType() MDocType
#beforeSave(boolean) boolean
+markImmutable() MDocTypeCounter
}
class X_C_DocTypeCounter {
<<generated>>
}
class PO {
<<abstract>>
}
MDocTypeCounter --|> X_C_DocTypeCounter
X_C_DocTypeCounter --|> PO
MDocTypeCounter --> MDocType : maps from/to
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MDocTypeCounter.java
関連DBテーブル
Section titled “関連DBテーブル”C_DocTypeCounter(カウンター伝票タイプ)
Section titled “C_DocTypeCounter(カウンター伝票タイプ)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_DocTypeCounter_ID | ID | PK | カウンター伝票タイプID | 主キー |
| Name | String(60) | Y | 名称 | |
| C_DocType_ID | TableDirect | Y | 元伝票タイプ | |
| Counter_C_DocType_ID | Table | Y | カウンター伝票タイプ | |
| IsCreateCounter | YesNo | Y | カウンター伝票作成 | default Y |
| DocAction | List(2) | N | 伝票ステータス更新 | default -- |
| IsValid | YesNo | Y | 有効 | validate() が設定 |
| Processing | Button | N | ドキュメントタイプバリデート |
ビジネスロジック
Section titled “ビジネスロジック”validate()(MDocTypeCounter 377行〜)
Section titled “validate()(MDocTypeCounter 377行〜)”- 元伝票タイプ / カウンター伝票タイプが取得できなければ IsValid=N でエラー返却
- 基本タイプ(DocBaseType)のペアを検査。SO↔PO / APInvoice↔ARInvoice / MaterialDelivery↔MaterialReceipt / APCreditMemo↔ARCreditMemo / ARReceipt↔APPayment の双方向ペアのみ IsValid=Y
- カウンター伝票タイプが自動採番(DocNo controlled)でない場合は警告メッセージを返却
beforeSave()
Section titled “beforeSave()”AD_Org_ID != 0は 0(組織 *)に強制リセット(クライアント共通マスタ)- 既存レコードで
C_DocType_IDまたはCounter_C_DocType_IDが変更されたら IsValid を N にリセット - IsValid=N の場合は保存時に
validate()を自動実行
静的解決メソッド
Section titled “静的解決メソッド”getCounterDocType_ID(ctx, C_DocType_ID): 元伝票タイプからカウンター伝票タイプ ID を解決(明示マッピング優先)getCounterDocBaseType(DocBaseType): 基本タイプレベルの対応(SOO→POO 等)を返すユーティリティ
拡張ポイント
Section titled “拡張ポイント”- Callout: 標準 Callout の定義はありません(gw_column 上 callout なし)
- Model Validator: 組織間取引の統制(特定組織ペアのみ許可等)は、カウンター伝票を生成する元伝票(C_Order / C_Invoice 等)の
TIMING_AFTER_COMPLETEで検証を追加します - キャッシュされるマスタのため、外部から直接 UPDATE した場合はキャッシュリセットが必要です
関連プロセス
Section titled “関連プロセス”| プロセス名 | 説明 |
|---|---|
| ドキュメントタイプバリデート | Processing ボタン。validate() を実行し IsValid を更新 |
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”グループ会社間・組織間の社内取引は、カウンター伝票の設計次第で二重入力をゼロにできます。組織間取引フローの設計をご支援します。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。