ショッピングカートの価格ルールが有効でなくなったとき(有効期限が切れたとき、または適用されなくなった他の製品の数量を変更したときなど)にプラグインできるイベントまたは場所はありますか?カートから自動的に削除されることはわかっていますが、コードでこれが発生している場所を見つけることができません。
小計がXの金額を超えるクーポンのカートに無料の製品を追加するモジュールを書いています。カート内のアイテム数を減らして小計がXを下回る場合を除いて、すべて正常に機能しています。クーポンは削除されますが、商品はカート内に残ります。
これまでのところ、私はこれまでに必要なことをするために次のイベントを利用しました...
salesrule_validator_process
checkout_cart_update_items_after
sales_quote_collect_totals_before
とメソッドMagento\Quote\Model\CouponManagement
があるのでどちらが有望に思えるかはわかりましたが、カートが更新されたときに呼び出されていないようです。set()
remove()
でcheckout_cart_update_items_after
、それはまた、私は確認することができます論理的な場所のように思えるが、それはまだに応じて設定されたルールを表示されます$cart->getQuote()->getAppliedRuleIds()
更新:ルールがまだカートにあるかどうかを知っているcheckout_cart_save_after
後に実行されるイベントのオブザーバーを追加することcollectTotals()
になりました。次に、と比較$quote->getAppliedRuleIds()
し$quote->getOrigData('applied_rule_ids')
て、ルールが削除されているかどうかを確認します。これを行うにはもっと良い方法があるように感じますが、今のところうまくいきます。クーポンの有効期限が切れてもまだ問題があります...