税

🌐 言語: 🇻🇳 Tiếng Việt · 🇬🇧 English · 🇯🇵 日本語(現在)

GP247 の税金(Tax)

はじめに

このドキュメントでは、GP247(バージョン 2 以降)の 税金 機能の仕組みを説明し、ストアオーナーが自分のショップの税金を 設定する方法を案内します。技術に詳しくない方 向けです。読み終えると、税金の計算方法、税率を作成する場所、商品への 税金の割り当て方、そして税金がどのページに表示されるかがわかります。


1. GP247 の税金はどう動きますか?

押さえておきたい重要な点が 4 つあります。

  1. 税金は商品ごとに割り当てます。 商品ごとに別々の税率(例:8%、10%)を設定できます。先に「税率」を作成しておき、 商品に割り当てます。
  2. 表示価格は税抜き価格です(exclusive、外税)。税金は会計時に 上乗せ され、販売価格には含まれていません。 例:価格 100,000 の商品で税率 8% → お客様の支払いは 108,000 です。
  3. ショップ全体でオン/オフできます。 税金を完全にオフにすることも、全体に適用する 既定の 税率を設定することも できます。
  4. 1 つの商品に使える税率は 1 つだけです(複数の税金を重ねません)。GP247(v2)は商品ごとに税金を計算し、国/地域/ 配送先住所では計算 しません。

用語: 税率 は、名前(例:「VAT 8%」)と 値(パーセントの数値、例:8)からなる 1 行です。税率は 1 回作成 すれば、多くの商品に割り当てられます。

各商品には、税金の選択肢が 3 つあります。

選択肢 意味
税金を使用しない(None) この商品には税金がかかりません。
自動(Auto) ショップの 既定の税率 をそのまま使います(下のステップ 2 で設定します)。
特定の税率 この商品専用に選んだ税率を常に使います。

2. 税金の設定手順(順番に進めてください)

ステップ 1 — 税率を作成する

  1. ショップの 管理画面(admin) にログインします。

  2. 管理画面のメニューで 税金(Tax) を開きます。

  3. 新規追加を押し、次を入力します。

    • 名前(Name): わかりやすい名前。例:VAT 8% または 標準税率。
    • 値(Value): パーセントの数値を入力します。例:8(8% という意味)。8.5 のような小数も入力できます。
  4. 保存します。

    成功すると、新しい税率が税金の画面の右側の一覧に表示されます。

複数の税率(例:5%、8%、10%)を作成し、商品のグループごとに割り当てることができます。

ステップ 2 — ショップの既定の税率を設定する

  1. 管理画面のメニューで ショップ設定(Shop Configuration)を開きます。
  2. 税金の項目を探します(設定キーは product_tax です)。
  3. 次のどれかを選びます。
    • 特定の税率(例:「VAT 8%」)→ 自動(Auto) に設定した商品に適用される既定の税率になります。
    • 使用しない(None) → ショップ全体で税金をオフ にします(Auto に設定した商品も含め、すべての商品が非課税になります)。
  4. 保存します。

これがいちばん重要なスイッチです:使用しない にすると、商品にどの税率を割り当てていても、ショップ全体で税金が かかりません。

ステップ 3 — 商品に税金を割り当てる

  1. 商品(Product) を開き、変更したい商品を開きます。
  2. 商品フォームの 税金(Tax) の選択欄を探し、次のどれかを選びます。
    • 自動(Auto) — ステップ 2 の既定の税率を使います(ほとんどの商品におすすめです)。
    • 使用しない(None) — この商品を非課税にします。
    • 特定の税率 — この商品にはその税率を必ず使います。
  3. 商品を保存します。

ステップ 4 — ストアで確認する

  1. 変更した商品のページを お客様向けの画面(ストアフロント) で開きます。

  2. カートに追加し、カート / 決済 ページに進みます。

  3. 合計金額の表にある 税金(Tax) の行を確認します。

    正しければ、合計金額は 小計 + 税金 + 送料 − 割引 になります。


3. 税金はどこに表示されますか?

  • 商品ページ(ストアフロント): 表示価格には税金が含まれています(税金が有効な場合)。
  • カートと決済ページ: 合計金額の表に、独立した 税金 の行があります。
  • お客様の注文(アカウント): 注文の合計部分に税金の行があります。
  • 管理画面 — 注文詳細と請求書(invoice): 合計の表に税金の行があります。

4. 大切な注意点

  • 税率を変えても、過去の注文は変わりません。 すでに確定した注文は記録された税額をそのまま保持します。変更が影響する のは 新しい 注文だけです。
  • ショップ全体で税金をオフ にするいちばん早い方法は、product_tax を 使用しない にすることです(ステップ 2)。商品を 1 つずつ直す必要はありません。
  • 税額は商品の行ごとに小数点以下 2 桁に丸められます。 そのため、注文の税金合計は各行の合計と常に一致します。

5. 処理ロジックと税金の関数(開発者向け)

このセクションは 開発者 向けです。一般のユーザーは読み飛ばしてかまいません。

処理の流れ:作成 → 決定 → 計算 → 保存

税率の作成(管理画面)        TaxManager → ShopTax (name + value%)
        │
商品の税金を決定              config product_tax → ShopTax::checkStatus() (オン/オフ + 既定の税率)
        │                     product.tax_id (none|auto|<id>) → getTaxId() → getTaxValue() = %
        ▼
計算(行単位、ヘルパー 1 つ)  gp247_line_tax(price+option, qty, rate) = round(...×rate/100, 2)
        │
   ├─ カート          ShopCurrency::sumCartCheckout() → subTotal, subTotalWithTax
   ├─ 注文の合計      ShopOrderTotal::processDataTotal() → 行 code='tax' = subTotalWithTax − subTotal
   ├─ 注文の保存 (SF) ShopOrder::createOrder() → shop_order_detail.tax per-line + shop_order.tax
   └─ 注文の編集 (管理画面) AdminOrder::updateSubTotal() → shop_order.tax = Σ detail.tax

税金を処理する関数 / メソッド

税率の作成と管理

  • TaxManager(Livewire)— 税率の CRUD 画面です。value: numeric|min:0 を検証し、ShopTax に書き込みます。
  • ShopTax — テーブル shop_tax のモデル(name、value は decimal(8,4) 型、cast は float):
    • getListAll() — none/auto を含む税率の一覧(ドロップダウン用)。
    • getArrayId() / getArrayValue() — すばやく参照するための id → value% のマップ。
    • checkStatus() — gp247_config('product_tax') を読み込み、オフ/none/不正な場合は 0 を、それ以外は既定の税率の id を返します。

商品の税金の決定(ShopProduct)

  • getTaxId() — 税率の id を選びます:オフ → 0、auto → checkStatus()、特定の id → そのまま返します。
  • getTaxValue() — getArrayValue()[$taxId] から % を返します。
  • getFinalPriceTax() — 税込みの 1 単位 の価格(表示用)。

丸めの計算式(共通ヘルパー) — Library/Helpers/cart_store.php

  • gp247_line_tax($unitPriceWithOption, $qty, $rate) — 行ごと(line-level)に丸めます。計算式の 唯一の標準の情報源 です。
  • gp247_tax_price($price, $tax) — 税込みの 1 単位の価格 = round(price×(100+tax)/100, 2)(表示専用)。

計算と集計

  • ShopCurrency::sumCartCheckout() — カートを走査し、subTotal(税抜き)と subTotalWithTax(各行の gp247_line_tax を加算済み)を返します。
  • ShopOrderTotal::processDataTotal() — 合計の行を組み立てます。tax = subTotalWithTax − subTotal。
  • ShopOrderTotal::sumValueTotal($code, $dataTotal) — 合計の 1 行の値を取得します(例:'tax')。

注文への書き込み

  • ShopOrder::createOrder() — gp247_line_tax を使い、shop_order_detail.tax を 行ごとに 書き込みます(ストアフロントを含む、すべての注文作成経路に適用されます)。
  • AdminOrder::updateSubTotal() — 管理画面で注文明細を追加/編集したとき、shop_order.tax = Σ detail.tax を再計算します。

設定

  • gp247_config('product_tax') — オン/オフのスイッチ + 既定の税率(グループ gp247_cart)。ショップ設定の画面で変更します。

不変条件(invariant)

新しい注文では、次が成り立ちます。

shop_order.tax  ==  Σ shop_order_detail.tax  ==  (subTotalWithTax − subTotal)

よくある質問(Q&A)

Q1: ショップ全体で税金をオフにしたい場合は?

→ ショップ設定で product_tax を 使用しない(None) にします。商品を 1 つずつ直さなくても、ショップ全体ですぐに 税金がかからなくなります。

Q2: 商品の税金欄の「自動(Auto)」とはどういう意味ですか?

→ その商品がショップの 既定の税率(ステップ 2 で選んだ税率)を使うという意味です。既定の税率を変えると、Auto に設定した すべての商品が自動でそれに従います。

Q3: 商品に入力する価格には、税金が含まれていますか?

→ 含まれていません。GP247 は 上乗せ(exclusive、外税)方式で税金を計算します。入力する価格は 税抜き 価格で、税金は 会計時に加算されます。

Q4: 税率が 8.5%(小数)の場合も入力できますか?

→ できます。値 の欄には小数も入力できます。8.5% なら 8.5 と入力します。

Q5: 1 つの商品に複数の税金を同時に割り当てられますか?

→ できません。1 つの商品に使える税率は 1 つ だけです。

Q6: GP247 は、お客様の国や地域によって税金を変えて計算しますか?

→ しません。v2 では、税金は 商品ごと に計算し、配送先住所や国では計算しません。

Q7: 税率を変えると、過去の注文は再計算されますか?

→ されません。過去の注文は注文時の税額をそのまま保持します。変更は新しい注文だけに適用されます。

Q8: 商品を「使用しない(None)」にしていて、ショップには既定の税率がある場合は?

→ None に設定した商品には、ショップに既定の税率があっても税金は かかりません。

Q9: 税率を作成したのに、どの商品にも適用されていません。

→ 新しく作成した税率は、商品に自動では 適用されません。既定の税率にする(ステップ 2)か、商品に直接割り当てる (ステップ 3)必要があります。

Q10: 注文の税金合計は、各商品の行と一致しますか?

→ 一致します。税金は 行ごと に計算して丸めるので、注文の税金合計は常に各行の税額の合計と等しくなります。


📅 最終更新: 2026-10-22 · ✍️ 作成者 (Author): GP247