EC-CUBE 追記

ご無沙汰してます。EC-CUBEの関連プロジェクトで一息ついたかと思ったら過労が原因で帯状疱疹を発症してしまいました。
おかげで「夜眠れない程度の痛み」が後遺症として残り、睡眠不足の毎日を過ごしてます。まだ30代前半なのに帯状疱疹って(涙

前回のEC-CUBEについての批判、色々な場所からトラックバックを頂いています。
意外と反響が多かったようで戸惑いつつトラバ元を閲覧させて頂いています。

まず思ったのが、

  • 作る (オーダーに応える側) の思い込みって恐ろしいってことですね。

インディゴの研究 様の 消費税の計算方法と総額表示 記事で指摘されていますが、私が前回批判した消費税の端数計算の処理は EC-CUBE現在の仕様で正しいとのことです。

EC-CUBE では消費税の端数処理の方法として

  • 切捨て
  • 四捨五入
  • 切り上げ

の三通りの方法をサポートしています。
とある商品が複数個 購入された場合に端数の累積をどのように扱うかは店舗次第ですが、一般的には購入者側に負担が少なくなるように処理するのが普通かと思います。
ぶっちゃけ、購入者側の負担が少なくなるように処理しないと購入者側からクレームが入ります (クレームを送ってくれるお客様は特別に良いお客様です)。

  • 端数処理を 切捨て で行う仕様の場合は単価毎に消費税の端数処理を行い数量で掛けると金額が少なくて済むのでEC-CUBEの現行の仕様で問題ありません。
  • 端数処理が 四捨五入切り上げ の場合は単価毎に端数処理を行うと誤差が累積します。

今回私が携わったBtoBサイトでは「税抜き価格入力に対する四捨五入」が条件でしたのでお客様の負担を軽減するためには端数処理の計算方法の変更の必要が発生したというわけです。
(これを含めてパラメタで切り替えの行える方式が望ましいのでしょうが、そこらへんは価格演算部分を分離して整理すれば対応できる筈?ポイント消費時の演算も含めて分散しているソースを簡略化したいところですね。)

尚、EC-CUBEには4っつめの端数処理方法が存在します。大抵のBtoCサイトではこの方式を選択してカスタマイズするのが最も安定する方法かと思います。それは

  • 消費税を0%に指定して
  • 単価を税込価格で入力する。

画面表示時に税額を逆算する必要はありますが仕様として押し付けてしまえば一番無難かもしれません。

昔はカード決済時にオーソリデータに商品項目毎の税額を記載する必要がありましたがそれも「総額表示」に伴い不要となりました。それと比べれば便利になったものですね。