Скидка после активации
Результат: правило хранится включённым, но скидка применяется только после программной активации. Так подключаются промокоды и купоны из внешних модулей.
Шаги
- Откройте Компоненты → Скидки и нажмите Новая скидка.
- Заполните Название, например «Промокод на 15%».
- В поле Применяется к выберите область акции или оставьте «Все товары».
- В поле Скидка введите размер, например
15. - Раскройте Дополнительные условия и включите переключатель Только после активации.
- Нажмите Сохранить. Запомните ID правила из таблицы скидок.
Активация из кода
Внешний модуль активирует скидку через сервис ms3discounts_activator:
php
$activator = $modx->services->get('ms3discounts_activator');
$activator->activateDiscount(12, 'promocode');Список активированных ID хранится в сессии покупателя. После активации измените состав корзины для пересчёта. Подробности и отключение: Интеграция.
Как это работает
Без активации правило не участвует в расчёте ни в корзине, ни на витрине. В панели Проверить такое правило отклоняется с причиной «Нужна активация». После вызова activateDiscount правило работает как обычное: учитывает условия, расписание и политики.
Если не работает
- Скидка не применилась после активации: измените состав корзины или перейдите к оформлению для запуска пересчёта.
- Активация слетает: список хранится в сессии. У нового посетителя или после очистки сессии активировать нужно заново.
- Правило сработало без активации: проверьте, что переключатель Только после активации включён именно у этого правила.
