WooCommerce は WordPress で EC サイトを構築する際の定番プラグインです。
多くの基本機能を備えていますが、クーポンやポイントなど、割引に関しては、とくに日本の事業者にとって見過ごせない金額計算の矛盾があります。
それは──
100 円引きを指定しても、なぜか 110 円引きになるという現象です。
WooCommerce 割引計算の罠
下の画像は WooCommerce で100 円引きクーポンを適用したときの注文画面です。クーポン指定額は 100 円なのに、実際の割引額は 110 円になっています。
1,100 円(商品価格 1,000 円+消費税)と表示される商品で 100 円の割引なら 1,000 円じゃないの???
ところが、 WooCommerce ではそうではないのです。
クーポン割引で起きる金額のズレ
商品価格:税込 1,100 円(税抜 1,000 円)
クーポン:100 円割引
このケースでの WooCommerce の計算手順は下記です。
- 税抜価格にクーポンを適用(1,000 円 − 100 円 = 900 円)
- 税額を再計算(900 円 × 10% = 90 円)
- 合計を算出(900 円 + 90 円 = 990 円)
※「クーポン割引:-110 円」という明細表示になる。
項目 | 税抜価格 | 消費税(10%) | 税込価格 |
---|---|---|---|
割引前 | 1,000 円 | 100 円 | 1,100 円 |
クーポン適用後 | 900 円 | 90 円 | 990 円 |
仕様上の欠陥と回避不可の理由
WooCommerce は割引を必ず税抜価格に適用し、その後に税額を再計算する仕様になっています。このこと自体は欧州などでの基本的な商慣習です。
ただし、この形で計算してしまうと、これまで示したように、適用した割引額よりも実際の差引額が大きくなってしまいます。
さらに、この計算順序は固定されており、標準設定で「税計算後に割引」を選ぶ方法は存在しません。
つまり、 WooCommerce 本体の設定だけでこの問題を解決することはできません。
ポイント割引の場合も同じ
この現象はクーポンに限らず、ポイント割引でも同様に発生します。 100 ポイント(1 ポイント=1 円)を使った場合でも、指定 100 円分が 110 円引きになるというズレが起きます。
WooCommerce はこの現象をどう認識している?
海外フォーラムや GitHub では断片的に議論がありますが、 WooCommerce 側(Automattic 社)はこの挙動を「税計算方式の違いによって一部地域でのみ発生する表示の問題」、つまりローカライズ上の問題として捉えているようです。
例えば、このように税抜き表示するとどうでしょう?
ぱっと見の違和感は薄れますよね。
このため、 WooCommerce が「税込表示義務がある一部地域でのみ顕在化する特殊なケース」として切り捨ててしまってるようです。
しかし、わたしは表示方式や税制の違い以前に割引額を 100 円と指定しても実際の差額が 100 円にならない時点で金額整合性が破綻している仕様上の欠陥と考えます。
さらに日本では消費税法により税込表示(総額表示)が義務付けられているため、この問題は顕著に表面化します。
まとめ
WooCommerce における「 100 円引きが 110 円引きになる」現象は税抜価格への割引適用とその後の税額再計算という仕様に起因します。このため、クーポンでもポイントでも同じ現象が発生します。
これは日本特有の商習慣で片づけられる問題ではありません。
この問題については、日本語で技術的に詳しく解説している文献やブログ記事はほぼ存在せず、「金額整合性の絶対的矛盾」として体系的に整理された日本語記事は皆無に近いのが現状です。
現状の WooCommerce では、標準設定だけでこの挙動を変更することはできません。
解消するためには、税込価格ベースでの割引計算や税計算後にまとめて割引を適用する仕組みが必要なのです。
参考:日本環境に対応した WooCommerce 用ポイント管理プラグイン
この記事が役に立ったら「いいね」!