当购物车价格规则不再有效时(例如,当它过期或您更改不再适用的其他产品的数量时),是否可以插入某个事件或地点?我知道它会自动从购物车中删除,但是我似乎无法在代码中找到发生这种情况的地方。
我正在编写一个模块,该模块将购物车中的免费产品添加到小计超过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')
进行比较,看看规则是否已删除。我觉得有一种更好的方法可以执行此操作,但是暂时可以。我仍然有优惠券过期的问题...