EC-CUBE3では、もともと備わっている会員機能について、購入時に会員に付与するポイント機能というものが存在しない。
別途以下のリンクから、無料のプラグインをダウンロードすることができるのだが、このプラグインについてある問題がある。
ポイントプラグインの問題とは
EC-CUBE3は、クーポン機能を追加するプラグインも無料でダウンロードできるのだが、クーポンを利用した購入の場合に問題が発生する。
例えば以下の例を見てみよう。
購入金額 | 15,000円 |
クーポン値引き | -1,000円 |
ポイント倍率 | 1% |
この条件の時、本来であればクーポン値引き後の金額「14,000円」に対し、1%である140ポイントを付与したい。
しかしEC-CUBE3のポイントプラグインでは、クーポン値引きを加味せず、元の購入金額に対しポイントが付与されてしまう。
値引き後の金額を元に付与ポイントを計算する
この問題を解決するには、ポイントプラグインのカスタマイズが必要だ。
編集するファイルは次の1ファイルのみ。
/app/Plugin/Point/Helper/PointCalculateHelper/PointCalculateHelper.php
// 加算ポイント - ポイント値引き額 * 基本ポイント付与率 = 減算後加算ポイント
$addPoint = $this->addPoint - $pointDiscount * $basicRate;
// ↓ 以下に変更
// 加算ポイント - ポイント・クーポン値引き額 * 基本ポイント付与率 = 減算後加算ポイント
$addPoint = $this->addPoint - ($this->entities['Order']->getDiscount() * $basicRate);
$addPoint
を計算する部分について、Orderエンティティから値引き金額を取得してきて加算ポイントを計算するように変更している。
修正後のカート合計金額を見てみると、値引き後の合計金額18,214円の1%のポイントである182ptが付与されていることが分かる。