複数商品での業務パック割引の適用

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

タグ: 

  • このトピックには1件の返信、1人の参加者があり、最後にpppbbbにより3年、 9ヶ月前に更新されました。
2件の投稿を表示中 - 1 - 2件目 (全2件中)
  • 投稿者
    投稿
  • #92396
    pppbbb
    参加者

    usces_filter_get_gp_priceフックを利用して、複数商品の組み合わせでも業務パック割引を適用させています。
    (ここでいう複数商品は同じ価格、同じ業務パック割引設定にしています。)

    上記カスタマイズですとinCart()のタイミングでは既にカートに入っている商品に業務パック割引が適用できません。
    今のところ、数量更新ボタンでupCart()することでカート内の複数商品に業務パック割引を適用させています。

    なので、usces_action_after_inCartフックのタイミングでupCart()できないかと試しているところですが、正しく処理できません。
    カートに入れた後のタイミングで数量更新をかける方法はないでしょうか?

    ——————————————-
    WordPress のバージョン:5.6.1
    Welcart のバージョン:2.1.1
    PHP のバージョン:7.4.5
    ご利用のテーマ:Welcart VOLLをベースにカスタマイズ
    ——————————————–

    #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()だとアンシリアライズされているため、使用しませんでした。
    ※もし解釈が間違っていたら申し訳ありません。

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

2件の投稿を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。