iDempiere 源泉徴収(取引先)の使い方|取引先管理 操作マニュアル・技術仕様
📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。
源泉徴収(取引先)は、取引先ごとにどの源泉徴収区分を適用するか、源泉徴収が義務付けられているか、一時的に免除されているかを登録するウィンドウです。C_BP_Withholding テーブルが取引先(C_BPartner)と源泉徴収マスタ(C_Withholding)を結ぶ中間テーブルとして機能します。
📌 ポイント: このウィンドウは iDempiere 13 標準では無効化されています(AD_Window_ID: 53104、標準メニュー未登録)。AD 上のタブ説明も「Define Withholding (Beta)」であり、
MWithholdingクラス(77行)はコンストラクタのみで計算ロジックを持ちません。日本の源泉徴収税の実務運用にそのまま使える機能ではない点にご注意ください。
源泉徴収(取引先)でできること
Section titled “源泉徴収(取引先)でできること”- 取引先と源泉徴収区分(
C_Withholding)の紐づけ登録 - 「義務付け源泉徴収」フラグによる源泉徴収必須の明示
- 「一時免除」フラグによる一時的な源泉徴収停止
- 「免税理由」(20文字)への免除根拠の記録
- 1取引先に対する複数の源泉徴収区分の登録
- 「有効」フラグによる設定の無効化
⚠️ 注意: このウィンドウは取引先ごとの設定を保持するだけです。源泉徴収額の計算・請求書や支払への自動反映は iDempiere 13 標準では実装されていません(後述の技術仕様を参照)。
源泉徴収(取引先)は単一タブの構成です。
| タブ名 | テーブル | 項目数 | 役割 |
|---|---|---|---|
| 源泉徴収 | C_BP_Withholding | 8項目 | 取引先と源泉徴収区分の紐づけ・義務/免除の設定 |
基本操作手順
Section titled “基本操作手順”graph TD
A["🚀 ウィンドウを開く<br/>(標準メニュー未登録のため<br/>メニュー追加が必要)"] --> B["🏢 対象の取引先を選択"]
B --> C["📑 源泉徴収区分を選択<br/>(C_Withholding マスタ)"]
C --> D{源泉徴収の要否}
D -->|義務あり| E["☑ 義務付け源泉徴収に<br/>チェック"]
D -->|一時的に免除| F["☑ 一時免除にチェック<br/>免税理由を入力"]
E --> G["💾 保存"]
F --> G
アクセス方法(メニューパス)
Section titled “アクセス方法(メニューパス)”iDempiere 13 標準ではメニューに登録されていません。利用する場合は、システム管理者が「システム管理 > 一般ルール > システムルール > メニュー」で AD_Window_ID 53104(Withholding)のメニュー項目を追加し、ロールにウィンドウアクセス権を付与します。
💡 ヒント: 事前に源泉徴収マスタ(
C_Withholding)へ区分を登録しておく必要があります。こちらも標準では別ウィンドウでの管理となります。
- ツールバーの「新規」ボタンをクリック
- 必須項目を入力:
- 取引先: 対象の 取引先
- 源泉徴収: 適用する源泉徴収区分(
C_Withholding) - 義務付け源泉徴収: 源泉徴収が必須の場合にチェック
- 一時免除: 一時的に源泉徴収を行わない場合にチェック
- 一時免除にチェックした場合は 免税理由(20文字まで)を入力
- 「保存」をクリック
📌 ポイント: 「義務付け源泉徴収」「一時免除」はどちらも必須(Yes-No)項目です。チェックを入れない場合は
Nとして保存されます。
項目リファレンス
Section titled “項目リファレンス”源泉徴収 タブ
Section titled “源泉徴収 タブ”| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| クライアント | 必須 | Table Direct | 対象クライアント(既定値 @AD_Client_ID@) |
| 組織 | 必須 | Table Direct | 対象組織(既定値 @AD_Org_ID@) |
| 取引先 | 必須 | Search | 対象の取引先(C_BPartner) |
| 源泉徴収 | 必須 | Table Direct | 源泉徴収区分(C_Withholding) |
| 義務付け源泉徴収 | 必須 | チェック | 源泉徴収が義務付けられている |
| 一時免除 | 必須 | チェック | 一時的に源泉徴収を行わない |
| 免税理由 | - | 文字列(20) | 源泉徴収を行わない理由 |
| 有効 | 必須 | チェック | レコードが有効かどうか(既定値 Y) |
参照先マスタ(C_Withholding)の主な項目
Section titled “参照先マスタ(C_Withholding)の主な項目”取引先設定から参照する源泉徴収マスタ側には、次のような条件項目が定義されています。
| 項目名 | 必須 | 型 | 説明 |
|---|---|---|---|
| 名称 | 必須 | 文字列(60) | 源泉徴収区分の名称 |
| 受取人 | 必須 | Search | 源泉徴収額の受取人(納付先) |
| 支払条件 | 必須 | Table Direct | 納付に用いる 支払条件 |
| 割合源泉徴収 | 必須 | チェック | 率で計算するか |
| パーセント | - | 数値 | 源泉徴収率 |
| 固定金額 | - | 金額 | 定額の源泉徴収額 |
| 最小金額 / 最大金額 | - | 金額 | 源泉徴収額の下限・上限 |
| しきい値(最小) / しきい値(最大) | - | 金額 | 源泉徴収を適用する対象金額の範囲 |
| 税源泉徴収 | 必須 | チェック | 税の源泉徴収かどうか |
| 税按分 | 必須 | チェック | 税を按分するか |
| 第三者支払 | 必須 | チェック | 第三者へ支払うか |
よくある質問(FAQ)
Section titled “よくある質問(FAQ)”Q. 設定しても請求書に源泉徴収が反映されません
Section titled “Q. 設定しても請求書に源泉徴収が反映されません”iDempiere 13 標準では、源泉徴収の計算・伝票反映ロジックが実装されていません。C_Withholding のモデルクラス MWithholding は77行でコンストラクタのみ、C_BP_Withholding に至っては M クラス自体が存在せず生成クラス X_C_BP_Withholding(257行)のみです。AD 上でも「Beta」と明記されています。設定値を実際の計算に使うにはカスタム実装が必要です。
Q. 日本の源泉徴収税(報酬・料金等)に使えますか?
Section titled “Q. 日本の源泉徴収税(報酬・料金等)に使えますか?”そのままでは使えません。上記のとおり計算ロジックが未実装であることに加え、C_Withholding の条件項目も日本の税制(税率区分・復興特別所得税・支払調書)を直接表現するものではありません。実務では OSGi プラグインによる計算ロジックの実装、または 仕入請求書 側での明細分割による運用が現実的です。
Q. 1つの取引先に複数の源泉徴収区分を登録できますか?
Section titled “Q. 1つの取引先に複数の源泉徴収区分を登録できますか?”できます。C_BP_Withholding は取引先と源泉徴収区分の組み合わせを1レコードとする中間テーブルのため、同じ取引先に対して複数区分を登録できます。ただし標準に「どれを優先するか」の判定ロジックはありません。
Q. 「義務付け源泉徴収」と「一時免除」を両方チェックしたらどうなりますか?
Section titled “Q. 「義務付け源泉徴収」と「一時免除」を両方チェックしたらどうなりますか?”標準ではバリデーションが無いため、両方 Y でもエラーなく保存されます(C_BP_Withholding には Callout もモデルクラスの beforeSave も定義されていません)。矛盾する組み合わせを防ぎたい場合は Model Validator での実装が必要です。
Q. レコードを削除できますか?
Section titled “Q. レコードを削除できますか?”C_BP_Withholding は削除可能テーブル(IsDeleteable=Y)です。ただし設定履歴を残したい場合は「有効」チェックを外す運用を推奨します。
- 取引先マスタ(Business Partner)の使い方
- 支払条件(Payment Term)の使い方
- 仕入請求書(Purchase Invoice)の使い方
- 支払(Payment)の使い方
- 画面リファレンス: 源泉徴収(取引先)
🛠 技術仕様(開発者向け)
源泉徴収(取引先)は C_BP_Withholding テーブルに格納される中間テーブルです。専用のビジネスロジッククラス(M クラス)は存在せず、生成クラス X_C_BP_Withholding(257行)のみが提供されます。参照先の源泉徴収マスタ C_Withholding には MWithholding(77行)がありますが、内容は UUID/ID/ResultSet の3コンストラクタのみで、計算・検証ロジックを一切持ちません。
| 項目 | 値 |
|---|---|
| テーブル | C_BP_Withholding |
| ウィンドウ | AD_Window_ID: 53104(Withholding、iDempiere 13 では無効化・Beta) |
| モデルクラス | X_C_BP_Withholding(生成クラスのみ・257行) |
| インターフェース | I_C_BP_Withholding |
| 参照先マスタ | C_Withholding(MWithholding 77行 / X_C_Withholding) |
| アクセスレベル | 3(クライアント+組織) |
| 削除可否 | 可(IsDeleteable=Y) |
| 大量データ | いいえ(IsHighVolume=N) |
アーキテクチャ概要
Section titled “アーキテクチャ概要”classDiagram
class X_C_BP_Withholding {
<<generated>>
+getC_BPartner_ID() int
+getC_Withholding_ID() int
+isMandatoryWithholding() boolean
+isTemporaryExempt() boolean
+getExemptReason() String
}
class MWithholding {
+MWithholding(Properties, int, String)
}
class X_C_Withholding {
<<generated>>
}
class PO {
<<abstract>>
}
X_C_BP_Withholding --|> PO
MWithholding --|> X_C_Withholding
X_C_Withholding --|> PO
X_C_BP_Withholding --> X_C_Withholding : C_Withholding_ID
X_C_BP_Withholding --> C_BPartner : C_BPartner_ID
パッケージ: org.compiere.model
ソースファイル: org.adempiere.base/src/org/compiere/model/X_C_BP_Withholding.java(参照先は MWithholding.java)
関連DBテーブル
Section titled “関連DBテーブル”C_BP_Withholding(取引先源泉徴収)
Section titled “C_BP_Withholding(取引先源泉徴収)”| カラム名 | 型 | 必須 | 説明 | 備考 |
|---|---|---|---|---|
| C_BP_Withholding_UU | UUID(36) | N | UUID | |
| AD_Client_ID | Table Direct | Y | クライアント | 既定値 @AD_Client_ID@ |
| AD_Org_ID | Table Direct | Y | 組織 | 既定値 @AD_Org_ID@ |
| C_BPartner_ID | Search | Y | 取引先 | C_BPartner 参照 |
| C_Withholding_ID | Table Direct | Y | 源泉徴収区分 | C_Withholding 参照 |
| IsMandatoryWithholding | Yes-No(1) | Y | 義務付け源泉徴収 | |
| IsTemporaryExempt | Yes-No(1) | Y | 一時免除 | |
| ExemptReason | String(20) | N | 免税理由 | |
| IsActive | Yes-No(1) | Y | 有効 | 既定値 Y |
| Created / CreatedBy | Date+Time / Search | Y | 作成日時・作成者 | 既定値 SYSDATE |
| Updated / UpdatedBy | Date+Time / Search | Y | 更新日時・更新者 | 既定値 SYSDATE |
C_Withholding(源泉徴収マスタ・主要カラム)
Section titled “C_Withholding(源泉徴収マスタ・主要カラム)”| カラム名 | 型 | 必須 | 説明 |
|---|---|---|---|
| C_Withholding_ID | ID | PK | 主キー |
| Name | String(60) | Y | 名称(識別子) |
| Beneficiary | Search | Y | 受取人 |
| C_PaymentTerm_ID | Table Direct | Y | 支払条件 |
| IsPercentWithholding | Yes-No | Y | 率による源泉徴収 |
| Percent | Number | N | 源泉徴収率 |
| FixAmt | Amount | N | 固定金額 |
| MinAmt / MaxAmt | Amount | N | 源泉徴収額の下限・上限 |
| Thresholdmin / ThresholdMax | Amount | N | 適用対象金額のしきい値 |
| IsTaxWithholding | Yes-No | Y | 税の源泉徴収 |
| IsTaxProrated | Yes-No | Y | 税の按分 |
| IsPaidTo3Party | Yes-No | Y | 第三者への支払 |
erDiagram
C_BPartner ||--o{ C_BP_Withholding : "withholding settings"
C_Withholding ||--o{ C_BP_Withholding : "withholding type"
C_Withholding ||--o| C_PaymentTerm : "payment term"
C_Withholding ||--o{ C_Withholding_Acct : "accounting"
ビジネスロジック
Section titled “ビジネスロジック”C_BP_Withholding には M クラスが存在せず、MWithholding(C_Withholding 用)にもコンストラクタ以外のメソッドがありません。したがって以下はすべて未実装です。
- 源泉徴収額の計算(率・固定額・しきい値の適用)
- 請求書・支払伝票への自動反映
- 「義務付け」「一時免除」の整合性チェック
C_Withholding_Acctを用いた会計仕訳の生成
保存時に働くのは基底クラス PO の標準処理(必須チェック・監査カラム更新)のみです。実務で使用する場合はロジック全体をプラグインで実装する前提になります。
拡張ポイント
Section titled “拡張ポイント”このテーブルにはカラム単位の Callout は定義されていません。整合性チェックと計算の双方を OSGi プラグインで補う構成が基本になります。
public class WithholdingValidator implements ModelValidator { @Override public String modelChange(PO po, int type) throws Exception { if (po instanceof X_C_BP_Withholding && (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) { X_C_BP_Withholding bpw = (X_C_BP_Withholding) po; // 例: 一時免除には理由を必須にする if (bpw.isTemporaryExempt() && (bpw.getExemptReason() == null || bpw.getExemptReason().isEmpty())) throw new AdempiereException("一時免除の場合は免税理由を入力してください"); } return null; }
@Override public String docValidate(PO po, int timing) { if (po instanceof MInvoice && timing == TIMING_BEFORE_COMPLETE) { // 例: 請求書完了前に取引先の源泉徴収設定を読み、源泉税明細を生成する } return null; }}計算を伝票へ反映させる場合は、C_Invoice の TIMING_BEFORE_COMPLETE で取引先の C_BP_Withholding を読み、C_Withholding の率・しきい値をもとに源泉税行を生成する構成が一般的です。
関連プロセス
Section titled “関連プロセス”このウィンドウに紐づく標準プロセス・レポートはありません(標準メニュー未登録)。
関連ドキュメント
Section titled “関連ドキュメント”iDempiereカスタマイズのご相談
Section titled “iDempiereカスタマイズのご相談”源泉徴収はテーブル定義だけが用意された Beta 機能であり、日本の税制に沿った計算・支払調書対応には実装が不可欠です。 As-Link株式会社では、報酬・料金等の源泉徴収を請求・支払フローに組み込む実装をご支援します。
As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。