Как начислить баллы на позицию заказа по данным из внешней системы

Механика позволяет начислять бонусные баллы на основании значения, которое передается из внешней системы (например, кассы или сайта) в дополнительном поле позиции заказа.

Когда использовать

Механика подходит для сценариев, когда размер кешбэка рассчитывается на стороне внешней системы для каждой позиции заказа:

  • Персональный процент кешбэка по позиции
  • Динамический размер начисления в зависимости от условий
  • Специальные условия по отдельным SKU
  • Передача готового значения кешбэка из внешней системы

Важно знать перед настройкой

Принцип работы

  1. В Mindbox передается заказ со значением начисления в дополнительном поле каждой позиции через API.
  2. Система начисляет баллы на основе этого значения согласно выбранному режиму бенефита.
  3. Если поле не заполнено, баллы по этой позиции не начисляются.

Доступные режимы начисления баллов:

Режим Логика начисления
Баллы за позицию заказа Начисляется фиксированное количество баллов из дополнительного поля. Пример
Баллы за каждую единицу в позиции заказа Количество товара × значение из поля. Пример
Процент от суммы в позиции заказа Начисляется процент от стоимости позиции заказа до скидок. Пример

Предварительная настройка

Создайте дополнительное поле для хранения значения начисления со следующими параметрами:

  • Тип сущности: Позиция заказа
  • Формат: Десятичный
  • Множественные значения: Выключено

order-item-points-external-system-customfield.png

Убедитесь, что ваша внешняя система передает значение этого дополнительного поля в составе позиций заказа при вызове методов расчета заказа и создания заказа.

Настройка промоакции

  1. Создайте новую балльную акцию по инструкции.

  2. Настройте базовые параметры в зависимости от требований:

    • Период действия акции
    • Точки контакта — места совершения заказа (сайт, мобильное приложение, офлайн-магазин)
    • Сегмент клиентов, на которых распространяется акция
    • Дополнительные условия при необходимости
  3. В блоке Продукт добавьте условие начисления «Начислить баллы из дополнительного поля»:

    • Выберите тип дополнительного поля «Из позиции заказа»;
    • Выберите созданное ранее дополнительное поле;
    • Выберите способ начисления.
    order-item-points-external-system-settings.png
    Пример настройки
  4. При необходимости настройте взаимодействие с другими промоакциями с помощью правил арбитража промоакций или добавьте исключения внутри акций.


Примеры расчета баллов

Баллы за позицию заказа

Логика: Начисляется фиксированное количество баллов независимо от количества товара в позиции.

Формула: Баллы = значение в поле

Продукт Кол-во Цена за ед. Значение в поле Начислено баллов
Молоко 1 шт. 1000 ₽ 0
Шоколад 1 шт. 500 ₽ 50 50
Мыло 2 шт. 100 ₽ 10 10

Итого начислено: 60 баллов.


Баллы за каждую единицу в позиции заказа

Логика: Начисляется указанное количество баллов за каждую единицу товара в позиции.

Формула: Баллы = значение поля × количество продуктов в позиции

Продукт Кол-во Цена за ед. Значение в поле Расчет Начислено баллов
Молоко 1 шт. 1000 ₽ 0
Шоколад 1 шт. 500 ₽ 50 1 × 50 50
Мыло 2 шт. 100 ₽ 10 2 × 10 20

Итого начислено: 70 баллов.


Процент от суммы в позиции заказа

Логика: Начисляется процент от стоимости позиции заказа до скидок.

Формула: Баллы = значение поля / 100 × (базовая цена продукта × количество)

Продукт Кол-во Цена за ед. Значение в поле Расчет Начислено баллов
Молоко 1 шт. 1000 ₽ 0
Шоколад 1 шт. 500 ₽ 50 500 ₽ × 50% 250
Мыло 2 шт. 100 ₽ 10 (2 × 100 ₽) × 10% 20

Итого начислено: 270 баллов.


Правила обработки значений

Проценты

  • Минимум: 0,01%
  • Максимум: 100%
  • Можно передавать дробные значения (например, 12.5)
  • Если передано значение больше 100 — применяется максимум 100%

Округление начисленных баллов выполняется согласно настройкам балльного счета проекта.

Фиксированные баллы

  • Максимум: 10 000 баллов
  • Допускаются дробные значения
  • Если значение превышает лимит:
    • Промоакция не применяется к этой позиции заказа
    • В логах фиксируется предупреждение
    • Заказ сохраняется без ошибки