コンテンツにスキップ

iDempiere 源泉徴収(1099)の使い方|取引先管理 操作マニュアル・技術仕様

📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。

源泉徴収(1099)は、支払時に差し引く源泉徴収額の計算ルールを定義するマスタです。パーセント計算か固定金額か、適用する金額の下限・上限、支払先が取引先本人か第三者かといった条件を1レコードとして登録します。

📌 ポイント: iDempiere 13 標準では、このウィンドウは無効化されており標準メニューに登録されていません(旧バージョンからの互換用)。新規の業務設計では利用が推奨されません。日本の源泉徴収実務は、通常この画面ではなく請求書明細・仕訳側の設計で対応します。

  • 源泉徴収ルールの登録(名称・説明・有効フラグ)
  • パーセント計算(パーセント)と固定金額(固定金額)の使い分け
  • 徴収額の下限・上限の設定(最小金額 / 最大金額
  • 適用対象とする総額のしきい値設定(最小総額 / 最大総額、最大総額 0 = 上限なし)
  • 第三者への支払指定と、その受取人・支払条件の指定
  • 税関連の源泉徴収かどうかの区別(源泉徴収税)と割当税金(割当税金)の指定
  • 会計スキーマごとの源泉徴収勘定の設定

源泉徴収(1099)はシンプルな2タブ構成です。

タブ名テーブル項目数役割
源泉徴収C_Withholding17項目徴収ルール本体(計算方法・金額・しきい値)
会計C_Withholding_Acct6項目会計スキーマごとの源泉徴収勘定

💡 ヒント: 会計タブのレコードは手動で作成する必要がありません。源泉徴収レコードを新規保存した時点で、会計スキーマのデフォルトから自動生成されます(詳細は技術仕様を参照)。

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 “新規登録(必須項目ベースの手順)”
  1. ツールバーの「新規」ボタンをクリック
  2. 必須項目を入力:
    • 名称: 源泉徴収ルールの名称(60文字以内)
    • 受取人: 支払先となる取引先
    • 支払条件: 適用する支払条件
    • 第三者への支払 / 源泉徴収税 / 割当税金 / パーセント計算: それぞれ該当有無をチェック
  3. 計算パラメータを入力:
    • パーセント: パーセント計算を使う場合の率
    • 固定金額: 定額で徴収する場合の金額
  4. 適用範囲を入力:
    • 最小総額 / 最大総額: 源泉徴収の計算対象とする総額の範囲
    • 最小金額 / 最大金額: 徴収額そのものの下限・上限
  5. 保存」をクリック
  6. 会計」タブで、自動生成された会計スキーマ行の源泉徴収税勘定を確認・必要に応じて修正
項目名必須説明
名称必須文字列(60)源泉徴収ルールの名称
説明-文字列(255)補足説明
有効必須チェックレコードが有効か(既定 Y)
第三者への支払必須チェック取引先以外に支払う場合にチェック
受取人必須検索支払先の取引先
支払条件必須選択適用する支払条件
源泉徴収税必須チェック税に関連する源泉徴収か
割当税金必須チェック税額を按分するか
パーセント計算必須チェック請求金額に対する率で計算するか
固定金額-金額定額で徴収する金額
パーセント-数値徴収率(%)
最小金額-金額徴収額の下限(請求通貨)
最大金額-金額徴収額の上限(請求通貨)
最小総額-金額計算対象とする総額の下限
最大総額-金額計算対象とする総額の上限(0 = 上限なし)
項目名必須説明
源泉徴収必須選択親の源泉徴収ルール
会計スキーマ必須選択対象の会計スキーマ
源泉徴収税必須勘定源泉徴収額を計上する勘定
有効必須チェックレコードが有効か

全項目一覧はリファレンス参照

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 カラムなし)。

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

+afterSave(boolean, boolean) boolean <> <> > X_C_Withholding X_C_Withholding --

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

カラム名必須説明備考
C_Withholding_IDIDPK源泉徴収ID主キー
AD_Client_IDTable DirectYクライアント既定 @#AD_Client_ID@
AD_Org_IDTable DirectY組織既定 @#AD_Org_ID@
NameString(60)Y名称識別子
DescriptionString(255)N説明
IsActiveYes-NoY有効既定 Y
IsPaidTo3PartyYes-NoY第三者への支払
BeneficiarySearchY受取人C_BPartner 参照
C_PaymentTerm_IDTable DirectY支払条件
IsTaxWithholdingYes-NoY源泉徴収税
IsTaxProratedYes-NoY割当税金
IsPercentWithholdingYes-NoYパーセント計算計算方法の切替
FixAmtAmountN固定金額
PercentNumberNパーセント
MinAmtAmountN最小金額請求通貨
MaxAmtAmountN最大金額請求通貨
ThresholdminAmountN最小総額計算対象の下限
ThresholdMaxAmountN最大総額0 = 上限なし

C_Withholding_Acct(源泉徴収会計)

Section titled “C_Withholding_Acct(源泉徴収会計)”
カラム名必須説明
C_Withholding_IDTable DirectPK源泉徴収FK
C_AcctSchema_IDTable DirectPK会計スキーマFK
Withholding_AcctAccountY源泉徴収税勘定
IsActiveYes-NoY有効
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"

accounting per schema payment term

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 をそのまま返すため、会計レコード生成に失敗しても保存自体は成功します

MWithholding には beforeSave()validate()・金額計算メソッドが実装されていません。パーセント最小総額 といったカラムはデータとして保持されるだけで、コア標準の請求・支払処理から自動的に参照されることはありません。実運用で源泉徴収額を自動計算するには、Model Validator またはカスタムプロセスの実装が必要です。

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

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

C_Withholding / C_Withholding_Acct のカラムには Callout の登録がありませんAD_Column.Callout はすべて未設定)。入力時の相互連動が必要な場合は独自 Callout を登録します。

計算ロジックがコアに存在しないため、源泉徴収を実運用する場合は 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;
}
}

insert_Accounting()C_AcctSchema_Default の既定勘定をコピーします。テナント固有の勘定体系を反映したい場合は、C_AcctSchema_Default 側を整備してから源泉徴収レコードを新規作成するのが最も手間がかかりません。


源泉徴収はコアに計算ロジックが無いため、日本の源泉所得税の税率・端数処理に合わせた実装が必要になる領域です。Model Validator による請求書完了時の自動計算など、コア改変なしでの実装をご相談いただけます。

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

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