Apakah ada acara atau tempat saya dapat plugin ketika aturan harga keranjang belanja tidak lagi berlaku (seperti ketika itu berakhir atau jika Anda mengubah jumlah produk lain di mana tidak berlaku lagi)? Saya tahu bahwa secara otomatis dihapus dari keranjang, tetapi saya tidak dapat menemukan tempat ini terjadi dalam kode.
Saya menulis modul yang menambahkan produk gratis ke troli untuk kupon di mana subtotal lebih dari jumlah X. Semuanya berfungsi kecuali saat mengurangi jumlah item di troli tempat subtotalnya di bawah X. Kuponnya dihapus, tetapi produk saya tetap berada di gerobak.
Sejauh ini saya telah memanfaatkan acara-acara berikut untuk melakukan apa yang saya butuhkan sejauh ini ...
salesrule_validator_process
checkout_cart_update_items_after
sales_quote_collect_totals_before
Saya memang menemukan Magento\Quote\Model\CouponManagement
yang tampaknya menjanjikan karena memiliki set()
dan remove()
metode, tetapi mereka tampaknya tidak dipanggil ketika keranjang diperbarui.
Di checkout_cart_update_items_after
dalamnya juga tampak seperti tempat logis yang bisa saya periksa, tetapi tampaknya aturannya masih diatur menurut$cart->getQuote()->getAppliedRuleIds()
UPDATE: Saya akhirnya menambahkan pengamat untuk checkout_cart_save_after
acara yang berjalan setelah collectTotals()
jadi tahu apakah aturannya masih ada di kereta atau tidak. Maka pada dasarnya saya membandingkan $quote->getAppliedRuleIds()
dengan $quote->getOrigData('applied_rule_ids')
untuk melihat apakah aturan tersebut telah dihapus. Saya merasa ada cara yang lebih baik untuk melakukan ini, tetapi itu berhasil untuk saat ini. Saya masih memiliki masalah dengan kupon yang kedaluwarsa ...