加算ポイントを商品ごとではなく、購入商品の小計に対して行う処理
2020/02/18
いま作っているショッピングサイトは
3000円購入ごとに1Pつくようにしているのだが(やり方はいづれ・・・)
ECcubeの標準仕様だと、2000円の商品が2個でもポイントがつかない。
(商品A×ポイント率)+(商品B×ポイント率)+(商品C×ポイント率)=商品付与ポイント
ってな計算になっているそうだ。
これだと、3000円未満の商品をいくつ買って合計額を上げてもポイントが”0”になってしまうので
購入商品の合計額に対して、ポイントの計算をするようにしてみた。
(商品A+商品B+商品C)×ポイント率
という感じに。
これで、1500円の商品2個買ってもらえれば1Pつくことになる。
以下その手順
該当ファイル ECcubeインストールフォルダ/data/class/SC_CartSession.php
$results[‘add_point’] = SC_Helper_DB_Ex::sfGetAddPoint($total_point,$use_point);
を
$results[‘add_point’] = (int)( ( $results[‘subtotal’] -= $discount ) / 100 );
dtb_products_classのpoint_rateの設定ができて無いと反応しない模様。
参考にしたサイト
http://ameblo.jp/webmage/theme3-10033783238.html
2020年2月18日追加
↑のやり方だと、注文確認画面、注文確認メールに記載される取得ポイント数と
発送完了メールに記載される取得ポイント数及び、会員マイページ内で表示される
ポイント数がちょっとだけ誤差が出ることが判明。
理由は税込後のポイント率計算か、税計算前の合計額でのポイント率計算か、ということだった。
なので追加で以下のファイルを変更
/web/hoge●hoge●.com/shop/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php 内
726行目
// 加算ポイント
//● $arrValues[‘add_point’] = SC_Helper_DB_Ex::sfGetAddPoint($totalpoint, $arrValues[‘use_point’]) + $arrValues[‘birth_point’];
を↓に
$results[‘add_point’] = (int)( ( $results[‘payment_total’] -= $discount )*0.0003336) + $arrValues[‘birth_point’];
※赤字部分の数字は3000円/1Pの計算なので任意で変更必須!
**************************************************************************
[EC-CUBE] 2.13.2
[レンタルサーバ] heteml
[PHP] PHP 5.3.28
[データベース] MySQL 5.6.13-log
関連ページ
加算ポイントの計算を値引き後の金額からにしたい場合:
http://arxtage.com/blog/?p=25