SOY CMS / SOY Shop

ブログトップ

SOY Shopプラグインの解説 ポイント制2

2014年03月04日

前回はポイント制設定プラグインのsoyshop.point.phpを見ました。

今回は残りの処理を見ていきたいと思います。

SOY Shopプラグインの解説 ポイント制1





残りの拡張ポイントはsoyshop.order.complete.phpですが、

名前の通り、注文完了時に読み込まれるポイントになります。

SOY Shopプラグインの解説 拡張ポイントについて


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");

簡易ポイント支払モジュールで入れておいた値引き額をセッションから取り出して、

ポイント贈与の計算前に商品の合計を再計算する処理を行います。