क्या कोई ऐसी घटना या जगह है, जिसके लिए मैं प्लगइन कर सकता हूं जब कोई शॉपिंग कार्ट मूल्य नियम मान्य नहीं होता है (जैसे कि जब यह समाप्त हो जाता है या यदि आप अन्य उत्पादों की मात्रा को बदलते हैं जहां यह लागू नहीं होता है)? मुझे पता है कि यह स्वचालित रूप से कार्ट से निकाल दिया गया है, लेकिन मुझे पता नहीं लग सकता है कि यह कोड में क्या हो रहा है।
मैं एक मॉड्यूल लिख रहा हूं जो कूपन के लिए कार्ट में एक मुफ्त उत्पाद जोड़ता है जहां सबटोटल एक्स राशि से अधिक है। कार्ट में वस्तुओं की मात्रा को कम करने के अलावा यह सब काम कर रहा है, जहां सबटोटल एक्स के नीचे जाता है। कूपन हटाया जा रहा है, लेकिन मेरा उत्पाद कार्ट में रह रहा है।
अब तक मैंने निम्नलिखित घटनाओं में टैप किया है, जो मुझे अब तक की आवश्यकता है ...
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')
यह देखने के लिए तुलना करता हूं कि क्या नियम को हटा दिया गया है। मुझे ऐसा लगता है कि ऐसा करने का एक बेहतर तरीका है, लेकिन यह फिलहाल काम करता है। मेरे पास अभी भी कूपन के साथ समस्या है जो समाप्त हो रही है ...