Skip to content

iDempiere 税カテゴリの使い方|会計 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 会計の全体像: 会計の全体図 も合わせてご覧ください。

税カテゴリは、品目や料金タイプに適用する税の分類を定義するマスタです。各品目は必ず 1 つの税カテゴリに紐づき、伝票作成時にはこのカテゴリ配下の税率(Tax Rate)から適用税率が自動決定されます。

📌 ポイント: 税率は品目に直接設定するのではなく「品目 → 税カテゴリ → 税率」の 2 段階で決まります。消費税率の改定時は税カテゴリ配下に新しい適用開始日の税率を追加するだけで、全品目に自動反映されます。

  • 税の分類(標準税率・軽減税率・非課税等)の定義
  • カテゴリ配下の税率(Tax Rate)の登録・適用開始日(Valid from)管理
  • デフォルト税率の指定(カテゴリ内で 1 件のみ)
  • 販売用・購買用・両用(SO/PO Type)の税率使い分け
  • 伝票単位課税/明細単位課税の切り替え(Document Level)
  • 複数税率を合算するサマリ税(親税率+子税率)の構成

税カテゴリはシンプルな 3 タブ構成です。

タブ名テーブル項目数役割
税金カテゴリC_TaxCategory約6項目税の分類(名称・デフォルトフラグ)
Tax RateC_Tax約25項目実際の税率(率・適用開始日・地域条件等)
翻訳C_TaxCategory_Trl約8項目多言語対応の翻訳

💡 ヒント: 国内取引のみの運用であれば、Tax Rate タブで使うのは「名称・税カテゴリ・適用開始日・税率・デフォルト」程度です。国・地域・国グループの項目は越境取引の税率判定に使用します。

graph TD
    A["🚀 メニューから開く<br/>会計管理 > 会計設定 > 税カテゴリ"] --> B["➕ 税カテゴリを新規作成<br/>(例: 標準税率 / 軽減税率)"]
    B --> C["📋 Tax Rate タブへ移動"]
    C --> D["💰 税率を登録<br/>(名称・税率・適用開始日)"]
    D --> E{デフォルト税率?}
    E -->|Yes| F["✅ デフォルトにチェック<br/>(カテゴリ内で1件のみ)"]
    E -->|No| G["💾 保存"]
    F --> G
    G --> H["🔗 品目マスタ・料金タイプに<br/>税カテゴリを設定"]

メニューから開く 会計管理 > 会計設定 > 税カテゴリ 税カテゴリを新規作成 (例: 標準税率 / 軽減税率) Tax Rate タブへ移動 税率を登録 (名称・税率・適用開始日) デフォルトにチェック (カテゴリ内で1件のみ) 保存 品目マスタ・料金タイプに 税カテゴリを設定 デフォルト税率?

メニューから「会計管理 > 会計設定 > 税カテゴリ」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. 税金カテゴリタブで基本情報を入力:
    • 名称: カテゴリ名(例: 標準税率軽減税率
    • デフォルト: 品目登録時に初期値とする場合にチェック
  3. 保存」をクリック
  4. Tax Rate」タブに移動し、税率を登録:
    • 名称: 税率名(例: 消費税10%
    • 税率(Rate): 税率をパーセントで入力(例: 10
    • 適用開始日(Valid from): この税率が有効になる日付
    • SO/PO タイプ: 両方/販売のみ/購買のみ
    • デフォルト: カテゴリ内の標準税率とする場合にチェック
  5. 保存」をクリック

⚠️ 注意: 同じ税カテゴリ内でデフォルト税率にできるのは 1 件だけです。2 件目にデフォルトを付けて保存するとエラー(OnlyOneTaxPerCategoryMarkedDefault)になります。

項目名必須説明
名称必須文字列税率の名称
税カテゴリ必須選択所属する税カテゴリ
適用開始日必須日付この税率が有効になる日(税率改定対応)
税率(Rate)必須数値税率(%)
デフォルト必須チェックカテゴリ内の標準税率(1件のみ)
SO/PO タイプ必須リスト販売用/購買用/両用
伝票レベル必須チェック伝票合計で課税(オフなら明細ごと)
販売税必須チェック付加価値税ではなく売上税として扱う
サマリレベル必須チェック複数税率の合算用の親税率
親税率-選択サマリ税を構成する場合の親税率
税表示-文字列帳票に印字する短縮表記(例: 10%
SO 非課税必須チェック非課税取引用の税率
国/地域/国グループ-選択越境取引の税率判定条件

全項目の一覧は 画面リファレンス を参照してください。

Q. デフォルト税率を 2 つ設定するとどうなりますか?

Section titled “Q. デフォルト税率を 2 つ設定するとどうなりますか?”

保存時にエラーになります。MTax.beforeSave() が同一税カテゴリ内の他のアクティブな税率にデフォルトが付いていないかを検証しており、既にデフォルト税率が存在する場合は保存できません。デフォルトを移す場合は、先に既存税率のデフォルトを外してください。

Q. 消費税率の改定にはどう対応しますか?

Section titled “Q. 消費税率の改定にはどう対応しますか?”

既存税率を書き換えるのではなく、同じ税カテゴリに新しい適用開始日(Valid from)の税率を追加します。iDempiere は伝票日付時点で有効な税率を自動選択するため、過去伝票は旧税率のまま、改定日以降の伝票には新税率が適用されます。

Q. サマリ税(複合税)とは何ですか?

Section titled “Q. サマリ税(複合税)とは何ですか?”

「サマリレベル」をチェックした税率を親とし、子税率の「親税率」に指定することで複数の税を合算して適用できます(例: 国税+地方税)。なお、サマリレベルをチェックした税率自身に親税率を設定しても、保存時に自動でクリアされます(MTax.beforeSave() の制御)。

Q. 税率の会計設定(勘定科目)はどこで行いますか?

Section titled “Q. 税率の会計設定(勘定科目)はどこで行いますか?”

税率を新規保存すると、MTax.afterSave() が会計スキーマのデフォルトから税の会計レコード(C_Tax_Acct)を自動生成します。勘定科目の調整は税率レコードの会計タブ(Accounting)で行います。

🛠 技術仕様(開発者向け)

税カテゴリは C_TaxCategory テーブル(MTaxCategory クラス・115行)、税率は C_Tax テーブル(MTax クラス・432行)に格納されます。MTaxImmutablePOSupport パターンのキャッシュ参照(MTax.get())を提供し、税額計算(calculateTax())の中核を担います。どちらも Document 型ではありません。

classDiagram
    class MTaxCategory {
        +getDefaultTax() MTax
    }
    class MTax {
        +get(ctx, C_Tax_ID) MTax
        +getAll(ctx) MTax[]
        +getChildTaxes(requery) MTax[]
        +getPostals(requery) MTaxPostal[]
        +isPostal() boolean
        +isZeroTax() boolean
        +calculateTax(amount, taxIncluded, scale) BigDecimal
        #beforeSave(newRecord) boolean
        #afterSave(newRecord, success) boolean
    }
    class X_C_Tax {
        <<generated>>
    }
    class X_C_TaxCategory {
        <<generated>>
    }
    MTax --|> X_C_Tax
    MTaxCategory --|> X_C_TaxCategory
    MTaxCategory --> MTax : getDefaultTax
    MTax --> MTax : parent-child (summary)

+getDefaultTax() MTax +get(ctx, C_Tax_ID) MTax +getAll(ctx) MTax[] +getChildTaxes(requery) MTax[] +getPostals(requery) MTaxPostal[] +isPostal() boolean +isZeroTax() boolean +calculateTax(amount, taxIncluded, scale) BigDecimal #beforeSave(newRecord) boolean #afterSave(newRecord, success) boolean <> > X_C_Tax MTaxCategory --

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

カラム名必須説明備考
C_TaxCategory_IDIDPK税カテゴリID主キー
AD_Client_ID / AD_Org_IDTableDirectYクライアント/組織
NameString(60)Y名称
DescriptionString(255)N説明
IsDefaultYesNoYデフォルト品目登録時の初期値
CommodityCodeString(20)N商品コードウィンドウ非表示
カラム名必須説明備考
C_Tax_IDIDPK税率ID主キー
C_TaxCategory_IDTableDirectY税カテゴリFK
NameString(60)Y名称
RateNumberY税率(%)
ValidFromDateY適用開始日伝票日付で有効税率を判定
IsDefaultYesNoYデフォルトカテゴリ内1件のみ(beforeSave検証)
SOPOTypeList(1)YSO/POタイプデフォルト B(両方)
IsDocumentLevelYesNoY伝票レベル課税
IsSalesTaxYesNoY販売税デフォルト N
IsSummaryYesNoYサマリレベル複合税の親
Parent_Tax_IDTableN親税率サマリ税構成用
IsTaxExemptYesNoY非課税
RequiresTaxCertificateYesNoY非課税証明要求
TaxPostingIndicatorList(1)N転記インジケータデフォルト 0
C_Country_ID / C_Region_ID 他TableN国・地域条件越境取引の判定
C_TaxProvider_IDTableDirectN税プロバイダ外部税計算連携

MTax.beforeSave():

  1. デフォルト一意性: IsDefault=Y で保存する場合、同一税カテゴリ内の他のアクティブ税率に IsDefault='Y' が存在すればエラー(OnlyOneTaxPerCategoryMarkedDefault
  2. サマリ税の整合性: IsSummary=Y の場合、Parent_Tax_ID を強制的に 0 にリセット

MTax.afterSave():

  • 新規保存時、insert_Accounting("C_Tax_Acct", "C_AcctSchema_Default") で会計スキーマのデフォルトから税会計レコードを自動生成

MTax.calculateTax(amount, taxIncluded, scale):

  • 税抜/税込金額から税額を算出。isZeroTax()(税率 0)の場合は即座に 0 を返却。伝票の税額計算(MOrderTax / MInvoiceTax)から呼ばれます
  • Model Validator: C_Tax / C_TaxCategory への独自制約(例: 税率変更の承認制)は OSGi Model Validator の TYPE_BEFORE_CHANGE で追加します
  • 税プロバイダ: 外部税計算サービスとの連携は C_TaxProvider_ID と Tax Provider 拡張ポイントで実装できます(標準実装は MTaxProvider
  • このテーブルに標準の callout はありません(gw_column.tsv 上 callout 定義なし)

税率改定対応や独自の税判定ロジック(軽減税率の自動判定等)は、コア改変なしの Model Validator / Tax Provider 拡張で実現できます。

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

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