iDempiere 源泉徴収(1099)の使い方|取引先管理 操作マニュアル・技術仕様
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
源泉徴収(1099)は、支払時に差し引く源泉徴収額の計算ルールを定義するマスタです。パーセント計算か固定金額か、適用する金額の下限・上限、支払先が取引先本人か第三者かといった条件を1レコードとして登録します。
📌 ポイント: iDempiere 13 標準では、このウィンドウは無効化されており標準メニューに登録されていません(旧バージョンからの互換用)。新規の業務設計では利用が推奨されません。日本の源泉徴収実務は、通常この画面ではなく請求書明細・仕訳側の設計で対応します。
源泉徴収(1099)でできること
Section titled “源泉徴収(1099)でできること”- 源泉徴収ルールの登録(名称・説明・有効フラグ)
- パーセント計算(
パーセント)と固定金額(固定金額)の使い分け - 徴収額の下限・上限の設定(
最小金額/最大金額) - 適用対象とする総額のしきい値設定(
最小総額/最大総額、最大総額 0 = 上限なし) - 第三者への支払指定と、その受取人・支払条件の指定
- 税関連の源泉徴収かどうかの区別(
源泉徴収税)と割当税金(割当税金)の指定 - 会計スキーマごとの源泉徴収勘定の設定
源泉徴収(1099)はシンプルな2タブ構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 源泉徴収 | C_Withholding | 17項目 | 徴収ルール本体(計算方法・金額・しきい値) |
| 会計 | C_Withholding_Acct | 6項目 | 会計スキーマごとの源泉徴収勘定 |
💡 ヒント: 会計タブのレコードは手動で作成する必要がありません。源泉徴収レコードを新規保存した時点で、会計スキーマのデフォルトから自動生成されます(詳細は技術仕様を参照)。
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 ウィンドウを開く<br/>(標準メニュー未登録のため<br/>ロール設定での追加が必要)"] --> B["➕ 新規で基本情報を入力<br/>(名称・説明)"]
B --> C{計算方法}
C -->|率で計算| D["📊 パーセント計算にチェック<br/>パーセントを入力"]
C -->|定額で計算| E["💴 固定金額を入力"]
D --> F["🎯 適用範囲を設定<br/>最小総額・最大総額"]
E --> F
F --> G["🔒 徴収額の下限上限を設定<br/>最小金額・最大金額"]
G --> H{支払先}
H -->|取引先本人| I["💾 保存"]
H -->|第三者| J["👤 第三者への支払にチェック<br/>受取人・支払条件を指定"]
J --> I
I --> K["📒 会計タブで<br/>源泉徴収税勘定を確認<br/>(自動生成レコード)"]
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”iDempiere 13 標準ではこのウィンドウはメニューに登録されていません。参照・編集する場合は、システム管理者がロールのウィンドウアクセス権とメニュー項目を追加する必要があります。
⚠️ 注意: 標準で無効化されている画面のため、業務要件で源泉徴収の自動計算が必要な場合は、この画面を有効化するより、請求書や支払側でのカスタマイズを検討することを推奨します。
新規登録(必須項目ベースの手順)
Section titled “新規登録(必須項目ベースの手順)”- ツールバーの「新規」ボタンをクリック
- 必須項目を入力:
- 名称: 源泉徴収ルールの名称(60文字以内)
- 受取人: 支払先となる取引先
- 支払条件: 適用する支払条件
- 第三者への支払 / 源泉徴収税 / 割当税金 / パーセント計算: それぞれ該当有無をチェック
- 計算パラメータを入力:
- パーセント: パーセント計算を使う場合の率
- 固定金額: 定額で徴収する場合の金額
- 適用範囲を入力:
- 最小総額 / 最大総額: 源泉徴収の計算対象とする総額の範囲
- 最小金額 / 最大金額: 徴収額そのものの下限・上限
- 「保存」をクリック
- 「会計」タブで、自動生成された会計スキーマ行の源泉徴収税勘定を確認・必要に応じて修正
項目リファレンス
Section titled “項目リファレンス”源泉徴収タブ
Section titled “源泉徴収タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列(60) | 源泉徴収ルールの名称 |
| 説明 | - | 文字列(255) | 補足説明 |
| 有効 | 必須 | チェック | レコードが有効か(既定 Y) |
| 第三者への支払 | 必須 | チェック | 取引先以外に支払う場合にチェック |
| 受取人 | 必須 | 検索 | 支払先の取引先 |
| 支払条件 | 必須 | 選択 | 適用する支払条件 |
| 源泉徴収税 | 必須 | チェック | 税に関連する源泉徴収か |
| 割当税金 | 必須 | チェック | 税額を按分するか |
| パーセント計算 | 必須 | チェック | 請求金額に対する率で計算するか |
| 固定金額 | - | 金額 | 定額で徴収する金額 |
| パーセント | - | 数値 | 徴収率(%) |
| 最小金額 | - | 金額 | 徴収額の下限(請求通貨) |
| 最大金額 | - | 金額 | 徴収額の上限(請求通貨) |
| 最小総額 | - | 金額 | 計算対象とする総額の下限 |
| 最大総額 | - | 金額 | 計算対象とする総額の上限(0 = 上限なし) |
| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 源泉徴収 | 必須 | 選択 | 親の源泉徴収ルール |
| 会計スキーマ | 必須 | 選択 | 対象の会計スキーマ |
| 源泉徴収税 | 必須 | 勘定 | 源泉徴収額を計上する勘定 |
| 有効 | 必須 | チェック | レコードが有効か |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 会計タブに行が1件もありません。手で作るべきですか?
Section titled “Q. 会計タブに行が1件もありません。手で作るべきですか?”いいえ。MWithholding.afterSave() が新規保存時のみ C_Withholding_Acct を会計スキーマのデフォルトから自動生成します。既存レコードを後から編集しても再生成はされないため、行が存在しない場合はレコードを作り直すか、会計タブで手動追加してください。
Q. パーセントと固定金額の両方を入力するとどうなりますか?
Section titled “Q. パーセントと固定金額の両方を入力するとどうなりますか?”パーセント計算 フラグがどちらを使うかの指定です。フラグがチェックされていれば パーセント、外れていれば 固定金額 が意図した設定になります。両方を入力してもエラーにはならないため、使わない側は空欄にしておくことを推奨します。
Q. 「最大総額」に 0 を入れるとどうなりますか?
Section titled “Q. 「最大総額」に 0 を入れるとどうなりますか?”AD の定義上、最大総額(ThresholdMax)は 0 = 上限なしを意味します。上限を設けたくない場合は 0 のままにしてください。
Q. なぜこの画面は非推奨なのですか?
Section titled “Q. なぜこの画面は非推奨なのですか?”iDempiere 13 標準ではこのウィンドウ自体が無効化されており、標準メニューにも登録されていません。米国 1099 帳票を起源とする旧機能で、コア側に自動計算処理が組み込まれていないためです。日本の源泉徴収は税率・端数処理が異なるため、独自のカスタマイズで対応するのが現実的です。
🛠 技術仕様(開発者向け)
源泉徴収ルールは C_Withholding テーブル(アクセスレベル 3 = クライアント/組織、削除可)に格納されます。モデルクラスは MWithholding(77行)で、実装されているのはコンストラクタ群と afterSave() のみの非常に薄いクラスです。計算ロジックはコアに実装されていません。子テーブル C_Withholding_Acct には専用の M クラスがなく、生成クラス X_C_Withholding_Acct のみが存在します。Document 型ではありません(DocStatus / DocAction カラムなし)。
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class MWithholding {
+afterSave(boolean, boolean) boolean
}
class X_C_Withholding {
<<generated>>
}
class X_C_Withholding_Acct {
<<generated>>
}
class PO {
<<abstract>>
}
MWithholding --|> X_C_Withholding
X_C_Withholding --|> PO
X_C_Withholding_Acct --|> PO
MWithholding --> X_C_Withholding_Acct : insert_Accounting
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/MWithholding.java
関連DBテーブル
Section titled “関連DBテーブル”C_Withholding(源泉徴収)
Section titled “C_Withholding(源泉徴収)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_Withholding_ID | ID | PK | 源泉徴収ID | 主キー |
| AD_Client_ID | Table Direct | Y | クライアント | 既定 @#AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | 既定 @#AD_Org_ID@ |
| Name | String(60) | Y | 名称 | 識別子 |
| Description | String(255) | N | 説明 | |
| IsActive | Yes-No | Y | 有効 | 既定 Y |
| IsPaidTo3Party | Yes-No | Y | 第三者への支払 | |
| Beneficiary | Search | Y | 受取人 | C_BPartner 参照 |
| C_PaymentTerm_ID | Table Direct | Y | 支払条件 | |
| IsTaxWithholding | Yes-No | Y | 源泉徴収税 | |
| IsTaxProrated | Yes-No | Y | 割当税金 | |
| IsPercentWithholding | Yes-No | Y | パーセント計算 | 計算方法の切替 |
| FixAmt | Amount | N | 固定金額 | |
| Percent | Number | N | パーセント | |
| MinAmt | Amount | N | 最小金額 | 請求通貨 |
| MaxAmt | Amount | N | 最大金額 | 請求通貨 |
| Thresholdmin | Amount | N | 最小総額 | 計算対象の下限 |
| ThresholdMax | Amount | N | 最大総額 | 0 = 上限なし |
C_Withholding_Acct(源泉徴収会計)
Section titled “C_Withholding_Acct(源泉徴収会計)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| C_Withholding_ID | Table Direct | PK | 源泉徴収FK |
| C_AcctSchema_ID | Table Direct | PK | 会計スキーマFK |
| Withholding_Acct | Account | Y | 源泉徴収税勘定 |
| IsActive | Yes-No | Y | 有効 |
erDiagram
C_Withholding ||--o{ C_Withholding_Acct : "accounting per schema"
C_Withholding }o--|| C_BPartner : "beneficiary"
C_Withholding }o--|| C_PaymentTerm : "payment term"
C_Withholding_Acct }o--|| C_AcctSchema : "schema"
ビジネスロジック
Section titled “ビジネスロジック”afterSave() — 会計レコードの自動生成
Section titled “afterSave() — 会計レコードの自動生成”MWithholding.afterSave() の実装は次の1点のみです。
protected boolean afterSave (boolean newRecord, boolean success){ // Create accounting record if (newRecord && success) insert_Accounting("C_Withholding_Acct", "C_AcctSchema_Default", null); return success;}- 新規レコードかつ保存成功時のみ、
C_AcctSchema_Defaultの既定値からC_Withholding_Acctを生成します - 更新時には再生成されません
MBPGroupなど他のマスタと異なり、戻り値はinsert_Accounting()の結果ではなくsuccessをそのまま返すため、会計レコード生成に失敗しても保存自体は成功します
計算ロジックの不在
Section titled “計算ロジックの不在”MWithholding には beforeSave()・validate()・金額計算メソッドが実装されていません。パーセント や 最小総額 といったカラムはデータとして保持されるだけで、コア標準の請求・支払処理から自動的に参照されることはありません。実運用で源泉徴収額を自動計算するには、Model Validator またはカスタムプロセスの実装が必要です。
拡張ポイント(カスタマイズ箇所)
Section titled “拡張ポイント(カスタマイズ箇所)”Callout
Section titled “Callout”C_Withholding / C_Withholding_Acct のカラムには Callout の登録がありません(AD_Column.Callout はすべて未設定)。入力時の相互連動が必要な場合は独自 Callout を登録します。
OSGi Model Validator(推奨)
Section titled “OSGi Model Validator(推奨)”計算ロジックがコアに存在しないため、源泉徴収を実運用する場合は Model Validator で請求書・支払の完了時に金額を算出するのが基本設計になります。
public class CustomWithholdingValidator implements ModelValidator { @Override public int modelChange(PO po, int type) throws Exception { if (po instanceof MWithholding && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { MWithholding wh = (MWithholding) po; // 例: パーセント計算なのに率が未入力なら弾く if (wh.isPercentWithholding() && wh.getPercent().signum() == 0) { throw new AdempiereException("パーセント計算の場合はパーセントを入力してください"); } } return null; }
@Override public String docValidate(PO po, int timing) { // 例: MInvoice の TIMING_AFTER_COMPLETE で源泉徴収額を算出・仕訳へ反映 return null; }}会計勘定の拡張
Section titled “会計勘定の拡張”insert_Accounting() は C_AcctSchema_Default の既定勘定をコピーします。テナント固有の勘定体系を反映したい場合は、C_AcctSchema_Default 側を整備してから源泉徴収レコードを新規作成するのが最も手間がかかりません。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”源泉徴収はコアに計算ロジックが無いため、日本の源泉所得税の税率・端数処理に合わせた実装が必要になる領域です。Model Validator による請求書完了時の自動計算など、コア改変なしでの実装をご相談いただけます。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。