カートルールが無効になった場合のイベントまたはプラグインスポットはありますか?


13

ショッピングカートの価格ルールが有効でなくなったとき(有効期限が切れたとき、または適用されなくなった他の製品の数量を変更したときなど)にプラグインできるイベントまたは場所はありますか?カートから自動的に削除されることはわかっていますが、コードでこれが発生している場所を見つけることができません。

小計が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')て、ルールが削除されているかどうかを確認します。これを行うにはもっと良い方法があるように感じますが、今のところうまくいきます。クーポンの有効期限が切れてもまだ問題があります...


簡単に説明してください。非常に複雑です
Anas

回答:


0

私は周りのプラグインでそれをやります

\ Magento \ SalesRule \ Model \ RulesApplier :: applyRules

そこでは、適用された古いルールIDを含む配列となる$ rulesパラメータがあり、$ proceed()呼び出しの結果は、適用されたIDの配列になります。あなたがそれで何をするつもりなのかを明らかにすれば、たぶんより良い場所が見つかるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.