Esiste un evento o un luogo per cui posso effettuare il plug-in quando una regola del prezzo del carrello non è più valida (ad esempio quando scade o se si modifica la quantità di altri prodotti dove non è più applicabile)? So che viene rimosso automaticamente dal carrello, ma non riesco a trovare il posto in cui questo sta accadendo nel codice.
Sto scrivendo un modulo che aggiunge un prodotto gratuito al carrello per un coupon in cui il totale parziale è superiore a X. Funziona tutto tranne quando si riduce la quantità di articoli nel carrello in cui il totale parziale scende al di sotto di X. Il coupon viene rimosso, ma il mio prodotto rimane nel carrello.
Finora ho sfruttato i seguenti eventi per fare ciò di cui ho bisogno finora ...
salesrule_validator_process
checkout_cart_update_items_after
sales_quote_collect_totals_before
Ho trovato ciò Magento\Quote\Model\CouponManagement
che sembrava promettente dal momento che ha set()
e remove()
metodi, ma non sembrano essere chiamati quando il carrello viene aggiornato.
Nella checkout_cart_update_items_after
sembra anche come un luogo logico posso controllare, ma sembra la regola è ancora impostato in base al$cart->getQuote()->getAppliedRuleIds()
AGGIORNAMENTO: Ho finito per aggiungere un osservatore per l' checkout_cart_save_after
evento che viene eseguito dopo, collectTotals()
quindi so se la regola è ancora nel carrello o meno. Quindi fondamentalmente confronto $quote->getAppliedRuleIds()
con $quote->getOrigData('applied_rule_ids')
per vedere se la regola è stata rimossa. Sento che esiste un modo migliore per farlo, ma per il momento funziona. Ho ancora il problema con i coupon che scadono però ...