ブログトップ
SOY Shopプラグインの解説 ポイント制2
2014年03月04日
前回はポイント制設定プラグインのsoyshop.point.phpを見ました。
今回は残りの処理を見ていきたいと思います。
残りの拡張ポイントはsoyshop.order.complete.phpですが、
名前の通り、注文完了時に読み込まれるポイントになります。
soyshop.order.complete.phpを見ると、
function execute(SOYShop_Order $order){ $config = PointBaseUtil::getConfig(); $percentage = (int)$config["percentage"]; $cart = CartLogic::getCart(); $itemTotalPrice = (int)$cart->getItemPrice(); $logic = SOY2Logic::createInstance("module.plugins.common_point_base.logic.PointBaseLogic"); /** * pointによる支払があった場合は、ここで商品のトータルから引いておく */ $paymentPoint = $cart->getAttribute("point_payment"); if(isset($paymentPoint)){ $itemTotalPrice = $itemTotalPrice - (int)$paymentPoint; if($itemTotalPrice < 0){ $itemTotalPrice = 0; } $logic->insertPaymentPointHistory($order, $paymentPoint); } $point = floor($itemTotalPrice * $percentage / 100); $logic->insertPoint($order, (int)$point); }
execute関数は注文完了の際に読み込まれるので、
商品の合計金額やモジュール込みの合計金額等のデータはCartLogicから取得できます。
今回は、商品合計からポイントを計算するので、
$cart->getItemPrice()で商品合計金額を取得した後、
$point = floor($itemTotalPrice * $percentage / 100); $logic->insertPoint($order, (int)$point);
管理画面で設定したポイントの還元率から算出した値をデータベースに入れます。
後日の記事で紹介しますが、
ポイントを記録する直前に
$paymentPoint = $cart->getAttribute("point_payment");
簡易ポイント支払モジュールで入れておいた値引き額をセッションから取り出して、
ポイント贈与の計算前に商品の合計を再計算する処理を行います。