Czy istnieje wydarzenie lub miejsce, do którego mogę podłączyć wtyczkę, gdy reguła ceny koszyka nie jest już ważna (na przykład, kiedy wygasa lub jeśli zmienisz ilość innych produktów, w przypadku których przestała obowiązywać)? Wiem, że jest on automatycznie usuwany z koszyka, ale nie mogę znaleźć w kodzie tego miejsca.
Piszę moduł, który dodaje do koszyka darmowy produkt dla kuponu, w którym suma częściowa jest większa niż kwota X. Wszystko działa, z wyjątkiem zmniejszania ilości elementów w koszyku, w których suma cząstkowa spada poniżej X. Kupon jest usuwany, ale mój produkt pozostaje w koszyku.
Do tej pory brałem udział w następujących wydarzeniach, aby zrobić to, czego do tej pory potrzebowałem ...
salesrule_validator_process
checkout_cart_update_items_after
sales_quote_collect_totals_before
Znalazłem, Magento\Quote\Model\CouponManagement
co wydawało się obiecujące, ponieważ ma set()
i remove()
metody, ale wydaje się, że nie są wywoływane, gdy wózek jest aktualizowany.
W tym checkout_cart_update_items_after
wydaje się również logiczne miejsce, które mogę sprawdzić, ale wygląda na to, że reguła jest nadal ustawiona zgodnie z$cart->getQuote()->getAppliedRuleIds()
AKTUALIZACJA: Skończyło się na dodaniu obserwatora do checkout_cart_save_after
wydarzenia, które biegnie później, collectTotals()
więc wie, czy reguła jest nadal na wózku, czy nie. Następnie w zasadzie porównuję $quote->getAppliedRuleIds()
z, $quote->getOrigData('applied_rule_ids')
aby sprawdzić, czy reguła została usunięta. Wydaje mi się, że jest na to lepszy sposób, ale na razie działa. Nadal mam problem z kuponami, które wygasają ...