ポイントの共有(続き・覚書)

2系統は、dtb_Customerに、保有ポイントを記録する形だけど、

3系統は、現在ポイント、追加ポイントと仕様ポイントを
ログ形式で管理するオリジナル。
※一番新しいデータを拾う。

2系統はゴリゴリしやすいし、3系統は触りたくないので、
迷わず、2系統でいじっていきます。

 

/class_ex/helper_ex/SC_Purchase_Ex.php

function sfUpdateOrderStatus

ここで、ポイントの加減などをしているのだが、
ややこしいのが、
/shopping/load_payment_module.php から
/shopping/confirm.php に戻ると、
このイベントが発生してしまうこと。

現在値と、仮保存値で、
isUsePoint =  null or 3 (Cancel) / isAddPoint = 6 (出荷完了) 時、

  • $payment_total = 今回の購入額
  • $point_use = 使用ポイント
  • $point_add =  追加ポイント
  • $addCustomerPoint  = 保有ポイントから、足し引きするポイント数

を、計算。

// ▼使用ポイント
            // 変更前の対応状況が利用対象の場合、変更前の使用ポイント分を戻す
            if ($this->isUsePoint($arrOrderOld['status'])) { // null or 3 = cancel
                $addCustomerPoint	+= $arrOrderOld['use_point'];
				// 2021-12-18
				$newAddPoint		= - $newAddPoint;
				$newUsePoint		= - $newUsePoint;
				$payment_total		= 0;
            }
var_dump3(array('status'	=> $arrOrderOld['status'],
				'$addCustomerPoint' => $addCustomerPoint, 
				'$payment_total' => $payment_total, 
				'$newUsePoint' => $newUsePoint,
				'$newAddPoint' => $newAddPoint), __FILE__, __LINE__);

            // 変更後の対応状況が利用対象の場合、変更後の使用ポイント分を引く
            if ($this->isUsePoint($newStatus)) {
                $addCustomerPoint	-= $newUsePoint;
            }
// ▲使用ポイント
var_dump3(array('status'	=> newStatus,
				'$addCustomerPoint' => $addCustomerPoint, 
				'$payment_total' => $payment_total, 
				'$newUsePoint' => $newUsePoint,
				'$newAddPoint' => $newAddPoint), __FILE__, __LINE__);


// ▼加算ポイント
            // 変更前の対応状況が加算対象の場合、変更前の加算ポイント分を戻す
            if ($this->isAddPoint($arrOrderOld['status'])) { // 6 = 出荷済み
                $addCustomerPoint	-= $arrOrderOld['add_point'];
				// 2021-12-18
				$newAddPoint		= - $newAddPoint;
				$newUsePoint		= - $newUsePoint;
				$payment_total		= - 0;
            }
var_dump3(array('status'	=> $arrOrderOld['status'],
				'$addCustomerPoint' => $addCustomerPoint, 
				'$payment_total' => $payment_total, 
				'$newUsePoint' => $newUsePoint,
				'$newAddPoint' => $newAddPoint), __FILE__, __LINE__);

            // 変更後の対応状況が加算対象の場合、変更後の加算ポイント分を足す
            if ($this->isAddPoint($newStatus)) {
                $addCustomerPoint += $newAddPoint;
           }
// ▲加算ポイント
if ($newStatus == $arrOrderOld['status'])
	$payment_total	= 0;

な感じで、変更される箇所に、デバッグの残骸がある通り、
いろいろなところで呼ばれているので、不可欠でした。

 

続いて、ポイントを保存する処理。

/class_ex/helper_ex/SC_Customer_Ex.php

	$objQuery = SC_Query_Ex::getSingletonInstance();

	// 
	$_['order_id']		= $order_id;
	$_['customer_id']	= $cust_id;
	$_['point_use']		= $point_use;
	$_['point_add']		= $point_add;
	$_['point_current']	= getCustomerPointValue($cust_id) + $addCustomerPoint;
	$_['note']			= $_SERVER['HTTP_HOST']. ' : '. $order_id;
	$_['season_buy_total']	= getCustomer_SeasonBuyTotal($cust_id) + $payment_total;


	// 会員ランク判定
	global $customer_rank_minorder;
	$_['rank']				= 1;
	for ($i = count($customer_rank_minorder); $i > 0;  $i--) {
#var_dump2($customer_rank_minorder[$i], __FILE__, __LINE__);
		if ($customer_rank_minorder[$i] < $_['season_buy_total']) { $_['rank'] = $i; #var_dump2($_['rank'], __FILE__, __LINE__); break; } } $objQuery->insert(extrenal_db. 'plg_point_order_point ', $_);
var_dump2($_, __FILE__, __LINE__);

 

ポイントの共有(続き・覚書)