Alışveriş sepeti kuralının artık geçerli olmadığı bir etkinlik veya eklenti noktası var mı?


13

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\CouponManagementOlan 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_afterkontrol 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_afterolay 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 ...


kısaca açıklayabilir misiniz, çok karmaşık
Anas Mansuri

Yanıtlar:


0

Bunu bir eklenti ile yapardım

\ Magento \ SalesRule \ Modeli \ RulesApplier :: applyRules

Burada, eski uygulanan kural kimlikleri içeren bir dizi olan $ rules parametreniz var ve $ progress () çağrısının sonucu, uygulanan kimliklerin bir dizisi olacak. Belki onunla ne yapmak istediğinizi açıklarsanız daha iyi bir yer bulunabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.