Не нашли ответы на свои вопросы в наших публикациях? Задайте вопрос в службу техподдержки!
С версии модуля 3.7.100 в заказ можно сохранять служебные данные (в свойствах заказа). Это помогает отлаживать начисление нескольких бонусов и решает проблему отложенной обработки заказов — например, когда свойства товаров могут измениться до расчёта бонусов и повлиять на размер начисляемых бонусов.
Рассмотрим на примере.
Чтобы включить данный механизм нужно активировать в настройках модуля событие \Acrit\Bonus\EventHandler::SaveToOrderBonusProps:

В качестве тестовых бизнес-правил возьмем, что у нас бонус на женские туфли должен быть 250рублей, а за все не-акционные товары бонус должен быть в размере 10% от стоимости заказа:

В данных профилях удобно использовать фильтрацию, чтобы указать, какие товары попадают под необходимые условия. Акцию будем определять списочным свойством в инфоблоке:

А для нашего примера в туфлях также уберем начисление на акционные товары:

Теперь формируем заказ, штаны "жизнь в абстракции" у нас акционные, за них не должно быть начисления бонуса:

Итоговый бонус, расчитанный по 2м профилям наших бизнес-задач составляет 528 рублей.

После оформления заказа смотрим заказ в админке, видно что начисления бонусов за Штаны "Жизнь в Абстракции" не происходило, а также видна подробная картина расчета бонусов для двух профилей начисления за заказы:

Помимо наших двух профилей начисления также есть и еще один бонусный профиль с нулевым начислением. Это профиль реферального маркетинга, и начисления автору заказа будут только, когда оформят заказы его рефералы (друзья).
Теперь давайте смоделируем ситуацию, когда акция за штаны "Жизнь в Абстракции" закончилась раньше, чем случилась обработка заказа посетителя. В этом случае модуль начисляет бонусы и за этот товар, поскольку сверка свойств происходит не на момент создания бонусов, а по актуальным свойствам товара на сайте.
Данная настройка и призвана решить этот вопрос.
Снимаем акцию со штанов:

Начисление бонусов у нас настроено в наших профилях при переводе заказа в статус "[F] Выполнен", переводим заказ в этот статус. При этом будет произведена сверка расчетного бонуса по текущим свойствам товаров и значения в свойстве заказа из свойства "Будет начислен бонус за заказ".
Будьте внимательны!
Значение поля "Будет начислен бонус за заказ" должно быть определенного формата и менять его нужно осознанно! Если укажите сюда не корректный бонус - будет применен именно он.
Переводим заказ в нужный статус, тем самым начисляем бонус:

Смотрим транзакции начисления бонусов по этому заказу, сработали именно нужные суммы бонусных профилей. А на товар, снятый с акции, бонусы не начислялись:

Таким образом можно не только решить вопрос начисления бонусов в случае изменения свойств в товарах и связи величин бонусов с этими свойствами товаров, но и вести диагностику при наличии у вас нескольких профилей начисления бонусов за заказы.
Обратите внимание!
Свойства заказа "Система бонусов. Программы лояльности" создаются с признаком "служебное", но могут отобразиться в ваших доработанных или любых не стандартных процедурах заказа.
В этом случае вам нужно убрать их отображение для посетителей сайта. Для стандартной процедуры заказа они убираются автоматически.
Назад в раздел
Рассмотрим на примере.
Чтобы включить данный механизм нужно активировать в настройках модуля событие \Acrit\Bonus\EventHandler::SaveToOrderBonusProps:

В качестве тестовых бизнес-правил возьмем, что у нас бонус на женские туфли должен быть 250рублей, а за все не-акционные товары бонус должен быть в размере 10% от стоимости заказа:

В данных профилях удобно использовать фильтрацию, чтобы указать, какие товары попадают под необходимые условия. Акцию будем определять списочным свойством в инфоблоке:

А для нашего примера в туфлях также уберем начисление на акционные товары:

Теперь формируем заказ, штаны "жизнь в абстракции" у нас акционные, за них не должно быть начисления бонуса:

Итоговый бонус, расчитанный по 2м профилям наших бизнес-задач составляет 528 рублей.

После оформления заказа смотрим заказ в админке, видно что начисления бонусов за Штаны "Жизнь в Абстракции" не происходило, а также видна подробная картина расчета бонусов для двух профилей начисления за заказы:

Помимо наших двух профилей начисления также есть и еще один бонусный профиль с нулевым начислением. Это профиль реферального маркетинга, и начисления автору заказа будут только, когда оформят заказы его рефералы (друзья).
Теперь давайте смоделируем ситуацию, когда акция за штаны "Жизнь в Абстракции" закончилась раньше, чем случилась обработка заказа посетителя. В этом случае модуль начисляет бонусы и за этот товар, поскольку сверка свойств происходит не на момент создания бонусов, а по актуальным свойствам товара на сайте.
Данная настройка и призвана решить этот вопрос.
Снимаем акцию со штанов:

Начисление бонусов у нас настроено в наших профилях при переводе заказа в статус "[F] Выполнен", переводим заказ в этот статус. При этом будет произведена сверка расчетного бонуса по текущим свойствам товаров и значения в свойстве заказа из свойства "Будет начислен бонус за заказ".
Будьте внимательны!
Значение поля "Будет начислен бонус за заказ" должно быть определенного формата и менять его нужно осознанно! Если укажите сюда не корректный бонус - будет применен именно он.
Переводим заказ в нужный статус, тем самым начисляем бонус:

Смотрим транзакции начисления бонусов по этому заказу, сработали именно нужные суммы бонусных профилей. А на товар, снятый с акции, бонусы не начислялись:

Таким образом можно не только решить вопрос начисления бонусов в случае изменения свойств в товарах и связи величин бонусов с этими свойствами товаров, но и вести диагностику при наличии у вас нескольких профилей начисления бонусов за заказы.
Обратите внимание!
Свойства заказа "Система бонусов. Программы лояльности" создаются с признаком "служебное", но могут отобразиться в ваших доработанных или любых не стандартных процедурах заказа.
В этом случае вам нужно убрать их отображение для посетителей сайта. Для стандартной процедуры заказа они убираются автоматически.
Назад в раздел
