Чи є подія чи плагін, коли правило кошика більше не діє?


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()


ОНОВЛЕННЯ: Я в кінцевому підсумку додав спостерігача за checkout_cart_save_afterподією, яка запускається після collectTotals()цього, знає, чи все ще правило знаходиться у кошику чи ні. Тоді я в основному порівняти $quote->getAppliedRuleIds()з , $quote->getOrigData('applied_rule_ids')щоб побачити , якщо правило було видалено. Я відчуваю, що є кращий спосіб зробити це, але це працює на даний момент. У мене все ще є проблема з купонами, які закінчуються, хоча ...


Ви можете пояснити, коротко, його дуже складний
Анас Мансурі

Відповіді:


0

Я б зробив це з плагіном для

\ Magento \ SalesRule \ Model \ RulesApplier :: applyRules

Там у вас є параметр $ rules, який би являв собою масив, що містить старі ідентифікатори застосованих правил, а результатом виклику $ proced () буде масив застосованих ідентифікаторів. Можливо, краще знайти місце, якщо ви розкриєте, що ви маєте намір з цим зробити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.