มีเหตุการณ์หรือจุดปลั๊กอินเมื่อกฎรถเข็นไม่ถูกต้องอีกต่อไปหรือไม่


13

มีเหตุการณ์หรือสถานที่ที่ฉันสามารถเสริมได้หรือไม่เมื่อกฎราคาตะกร้าสินค้าไม่ถูกต้องอีกต่อไป (เช่นเมื่อหมดอายุหรือหากคุณเปลี่ยนปริมาณของผลิตภัณฑ์อื่นที่ไม่ใช้แล้ว) ฉันรู้ว่ามันถูกลบออกจากรถเข็นโดยอัตโนมัติ แต่ฉันไม่สามารถหาสถานที่ที่เกิดขึ้นในรหัสได้

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


คุณช่วยอธิบายสั้น ๆ มันซับซ้อนมากได้ไหม
Anas Mansuri

คำตอบ:


0

ฉันจะทำกับปลั๊กอินรอบ ๆ สำหรับ

\ วีโอไอพี \ SalesRule \ รุ่น \ RulesApplier :: applyRules

ที่นั่นคุณมีพารามิเตอร์ $ rules ซึ่งจะเป็นอาร์เรย์ที่มีรหัสกฎเก่าที่ใช้และผลลัพธ์ของการเรียก $ ดำเนินการ () จะเป็นอาร์เรย์ของรหัสที่ใช้ อาจเป็นสถานที่ที่ดีกว่าหากคุณเปิดเผยสิ่งที่คุณตั้งใจจะทำ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.