Управление кодами
Список всех промо-кодов и редактор для создания/изменения.
Список
DataTable с серверной пагинацией. Колонки:
| Колонка | Описание |
|---|---|
| Код | Сам промо-код |
| Тип | percent / fixed |
| Размер | Численное значение скидки |
| Область | all (на всю корзину) / matching (на подпадающие) |
| Применений | Текущий счётчик / лимит (если задан) |
| Период | Даты действия |
| Статус | Цветной бейдж (см. ниже) |
| Действия | Включить/выключить, редактировать, удалить |
Цветные статусы
| Статус | Когда |
|---|---|
active | Код активен, в периоде действия, лимит не исчерпан |
scheduled | Дата начала ещё не наступила |
expired | Дата окончания прошла |
exhausted | Лимит применений исчерпан |
disabled | Код вручную отключён в редакторе |
Подсказка
Для покупателей disabled маскируется как not_found — они не узнают, что код существует, но временно отключён.
Фильтры
Над таблицей — панель фильтров:
- Поиск — по тексту кода (case-insensitive).
- Статус — выпадающий список (любой / active / scheduled / expired / exhausted / disabled).
- Период создания — диапазон дат.
Фильтры применяются мгновенно (debounced для текстового поиска).
Групповые действия
Выберите несколько кодов чекбоксами слева, в верхней панели появятся кнопки:
- Включить — массово выставить
active = 1. - Выключить — массово выставить
active = 0. - Удалить — с подтверждением.
Создание кода
Кнопка Создать открывает диалог-редактор. Сразу есть переключатель Режим:
- Один код — заполнить вручную одно значение.
- По маске — пакетная генерация по маске.
Диалог редактора — три вкладки
1. Основные
| Поле | Описание |
|---|---|
| Код / Маска | В режиме «один код» — само значение. В режиме «по маске» — шаблон. |
| Количество | Только для маски — сколько кодов сгенерировать. |
| Тип скидки | percent или fixed. |
| Размер | Численное значение (для percent — без знака %, например 10 = 10%). |
| Область | all — скидка на всю корзину; matching — только на позиции, подпадающие под правила. |
| Дата начала | Когда код становится валидным. Можно очистить — будет «без даты начала». |
| Дата окончания | Когда код становится недействительным. |
| Лимит применений | Сколько раз код может быть применён всего. 0 = без лимита. |
| Минимальная сумма заказа | Если корзина меньше — код не применится. Можно очистить. |
| Активен | Toggle on/off. |
| Описание | Произвольная заметка для менеджера. |
Маска
Синтаксис маски:
| Символ | Что означает |
|---|---|
# | Цифра |
? | Буква (только из безошибочного набора) |
* | Цифра ИЛИ буква |
| Любой другой | Литерал, копируется как есть |
Безошибочный набор символов исключает похожие пары (нет 0/O, 1/I/L) — покупатель не ошибётся при вводе с бумажного носителя.
Под полем маски в реальном времени показывается превью из 3 примеров — чтобы видеть, как будут выглядеть сгенерированные коды.
2. Правила
Применяется только при Область = matching. Шесть секций фильтрации:
- Товары — autocomplete поиск товаров MS3.
- Исключить товары — autocomplete поиск (товары, на которые скидка НЕ распространяется).
- Категории — autocomplete поиск категорий (только перечисленные).
- Исключить категории — autocomplete (только НЕ из этих категорий).
- Бренды — multiselect из списка зарегистрированных vendor'ов.
- Фильтр по полям товара — универсальный JSON-конструктор: поле + оператор + значение.
- Фильтр по опциям товара —
option_key + value.
Подсказка
Несколько секций объединяются по И. Значения внутри одной секции — по ИЛИ.
Например, «Бренды: Apple, Samsung» + «Фильтр по полям: цена > 30000» = только товары Apple ИЛИ Samsung И с ценой больше 30000.
Подробнее о доступных операторах — Правила (Rules).
3. Статистика
Только для существующего кода (после первого сохранения). Показывает:
- KPI-карточки: количество применений, общая сумма скидки.
- Текущий счётчик
used_count/ лимит. - Дата создания, дата последнего обновления.
- Статус (тот же, что в списке).
Это локальная сводка по конкретному коду — общая аналитика по всем кодам в отдельном разделе.
Удаление кода
Внимание
Удаление физически убирает запись из таблицы ms3_promo_codes. Записи в ms3_promo_code_usages (история применений) остаются — но связанная запись будет ссылаться на несуществующий promo_code_id.
Если код когда-то применялся, лучше отключить его (toggle Активен), чем удалить — это сохранит историю и позволит включить обратно.
Дублирование кодов
В списке нет кнопки «Дублировать». Создайте новый код вручную с теми же параметрами или используйте режим «По маске» с количеством 1 для создания одного кода с теми же правилами.
