返信先: 複数商品での業務パック割引の適用

フォーラム その他 複数商品での業務パック割引の適用 返信先: 複数商品での業務パック割引の適用

#92403
pppbbb
参加者

一応、自己解決できましたので共有させていただきます。

カートに入れたタイミングだけでなく、カート内商品を削除のタイミングでも単価の再計算の必要がありました。
ですので、usces_action_after_inCartusces_action_after_cart_del_rowフックを用いて、get_cart()を参考にセッションに保存されている単価を上書きできるようにしました。

以下がフックした処理です。

global $usces;
foreach( $_SESSION['usces_cart'] as $serial => $qua ) {
	$row = $usces->cart->key_unserialize( $serial );
	$post_id = $row['post_id'];
	$sku = $row['sku'];
	$price = $usces->cart->get_realprice( $post_id, $sku, $_SESSION['usces_cart'][$serial]['quant'] );
	$_SESSION['usces_cart'][$serial]['price'] = $price;
}

ポイントはシリアライズされた$serialを配列のキーとしてそのまま使用することです。
get_cart()だとアンシリアライズされているため、使用しませんでした。
※もし解釈が間違っていたら申し訳ありません。

ただ、カート内で試しただけですので、受注リスト等で上手く処理されるかはわかりません。ご注意ください。