Skip to main content
Промокоды и скидки позволяют снижать цену продуктов для учеников — по коду или автоматически. Скидки привязаны к продукту (курсу) и настраиваются в разделе скидок продукта. Точки входа:
  • Управление → Курс → Скидки (/manage/course/:courseId/discounts);
  • Управление → Продукт → Скидки (/manage/product/:productId/discounts).
Обе страницы работают с одной и той же сущностью скидки (DiscountEntity).

Типы скидок

У скидки есть тип (DiscountType), определяющий, как считается величина скидки: Величина задаётся в поле value: для Amount — это сумма в валюте школы, для Percent — процент. Форма создания промокода с выбором типа скидки и величины

Создание промокода

1

Откройте скидки продукта

Перейдите в раздел скидок нужного курса или продукта и создайте новую скидку.
2

Выберите тип и величину

Укажите тип (Amount или Percent) и значение скидки. Для Amount рядом показывается валюта школы, для Percent — знак «%».
3

Задайте код

Введите код промокода (до 12 символов, без пробелов) или сгенерируйте случайный кнопкой «Сгенерировать». Код должен быть уникальным — при дублировании форма покажет ошибку.
4

Настройте ограничения

При необходимости укажите лимит применений и период действия (см. ниже).
5

Активируйте и сохраните

Включите переключатель активности и сохраните. Неактивный промокод не применяется при оплате.

Ограничения и настройки

Дополнительно платформа хранит вычисляемые признаки активности:
  • isActive — итоговая активность промокода;
  • isActiveByDate — активен ли по периоду действия;
  • isActiveByCountApplies — не исчерпан ли лимит применений;
  • countApplies — сколько раз уже применён;
  • isScheduled — запланирован ли на будущее.
Скидка изначально создаётся в контексте одного продукта, но через поле «дополнительные продукты» её можно распространить и на другие курсы — тогда один промокод будет действовать сразу на несколько продуктов.

Применение при оплате

При расчёте корзины промокоды проверяются на сервере. В итоге расчёта (invoiceCalculateCartTotal) видно:
  • appliedDiscounts — какие скидки применились;
  • unAppliedDiscounts — какие не применились и почему.
Причины неприменения скидки (DiscountUnAppliedReason): Проверить код отдельно (например, для подсказки ученику) можно запросом discountCheckCode, который вернёт тип, величину и код скидки, если он валиден.

Архивирование

Ненужный промокод можно архивировать (archivedAt) вместо удаления. По умолчанию список скидок скрывает архивные (фильтр archived: false).
Заархивированный промокод нельзя активировать, пока он не разархивирован — переключатель активности в форме будет заблокирован с соответствующей подсказкой.