Czy istnieje zdarzenie lub miejsce wtyczki, gdy reguła koszyka nie jest już ważna?

13

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\CouponManagementco 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_afterwydaje 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_afterwydarzenia, 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ą ...

Scruffy Paws
źródło
czy możesz wyjaśnić w skrócie, że jest bardzo złożony
Anas Mansuri

Odpowiedzi:

0

Zrobiłbym to za pomocą wtyczki wokół

\ Magento \ SalesRule \ Model \ RulesApplier :: applyRules

Tam masz parametr $ rules, który byłby tablicą zawierającą stare zastosowane identyfikatory reguł, a wynikiem wywołania $ progress () będzie tablica zastosowanych identyfikatorów. Być może można znaleźć lepsze miejsce, jeśli ujawnisz, co zamierzasz z tym zrobić.

Sinisa Colic
źródło