มีเหตุการณ์หรือสถานที่ที่ฉันสามารถเสริมได้หรือไม่เมื่อกฎราคาตะกร้าสินค้าไม่ถูกต้องอีกต่อไป (เช่นเมื่อหมดอายุหรือหากคุณเปลี่ยนปริมาณของผลิตภัณฑ์อื่นที่ไม่ใช้แล้ว) ฉันรู้ว่ามันถูกลบออกจากรถเข็นโดยอัตโนมัติ แต่ฉันไม่สามารถหาสถานที่ที่เกิดขึ้นในรหัสได้
ฉันกำลังเขียนโมดูลที่เพิ่มผลิตภัณฑ์ฟรีลงในรถเข็นสำหรับคูปองที่ผลรวมย่อยมากกว่าจำนวน 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()
UPDATE: ฉันลงเอยด้วยการเพิ่มผู้สังเกตการณ์สำหรับcheckout_cart_save_after
เหตุการณ์ที่ทำงานหลังจากcollectTotals()
นั้นดังนั้นจึงรู้ว่ากฎยังคงอยู่ในรถเข็นหรือไม่ แล้วฉันเป็นพื้นเปรียบเทียบ$quote->getAppliedRuleIds()
กับ$quote->getOrigData('applied_rule_ids')
เพื่อดูว่ากฎได้ถูกลบออก ฉันรู้สึกว่ามีวิธีที่ดีกว่าในการทำเช่นนี้ แต่ใช้งานได้ในขณะนี้ ฉันยังมีปัญหากับคูปองที่หมดอายุแม้ว่า ...