Bir alışveriş sepeti fiyat kuralı artık geçerli olmadığında (örneğin süresi dolduğunda veya artık geçerli olmadığı diğer ürünlerin miktarını değiştirdiğinizde) ekleyebileceğim bir etkinlik veya yer var mı? Ben otomatik olarak sepeti kaldırılır biliyorum, ama bu kodda oluyor yer bulmak gibi olamaz.
Alt toplamı X miktarından fazla olan bir kupon için arabaya ücretsiz ürün ekleyen bir modül yazıyorum. Ara toplamın X'in altına düştüğü alışveriş sepetindeki öğelerin miktarının azaltılması dışında hepsi işe yarıyor. Kupon kaldırılıyor, ancak ürünüm alışveriş sepetinde kalıyor.
Şimdiye kadar ihtiyacım olanı yapmak için aşağıdaki etkinliklere katıldım ...
salesrule_validator_process
checkout_cart_update_items_after
sales_quote_collect_totals_before
Magento\Quote\Model\CouponManagement
Olan set()
ve remove()
yöntemleri beri umut verici görünüyordu buldum , ama sepeti güncellendiğinde onlar çağrı görünmüyor.
İçinde checkout_cart_update_items_after
kontrol edebileceğim mantıklı bir yer gibi görünüyor, ancak kural hala göre ayarlanmış görünüyor$cart->getQuote()->getAppliedRuleIds()
GÜNCELLEME: Kuralın hala arabada olup olmadığını bilen checkout_cart_save_after
olay için bir gözlemci ekledim collectTotals()
. Sonra temelde karşılaştırmak $quote->getAppliedRuleIds()
ile $quote->getOrigData('applied_rule_ids')
kural kaldırıldı olmadığını görmek için. Bunu yapmanın daha iyi bir yolu olduğunu hissediyorum, ama şu an işe yarıyor. Yine de süresi dolan kuponlarla ilgili bir sorunum var ...