Лимиты
Виды лимитов
При процессинге транзакций в системе реализованы различные виды ограничений. Первая группа ограничений – это ограничения фильтрации. Они предназначены для организации управления потоками операций. Например, для перераспределения потоков по времени, когда для некоторой группы участников наиболее выгодными часами посещения торговых точек становится интервал времени внутри рабочего дня, например, для пенсионеров. Ограничения фильтрации не рассматриваются в данном разделе.
Предметом данного раздела являются процессинговые ограничения, связанные с количественными и суммовыми параметрами покупок или какими-то накопительными агрегатами. В системе предусмотрено несколько видов процессинговых ограничений:
- Запрещающие лимиты процессинга
- Лимиты на количество применения
- Лимиты по количеству товара
- Прочие лимиты
Запрещающие лимиты
Запрещающие лимиты – запрещают регистрацию транзакции по каким-то её количественным показателям. Все эти лимиты суточные. Например, суточный лимит на сумму – его установка в каком-то десятичном значении будет означать, что если регистрируется транзакция, сумма которой (с учётом всех остальных транзакций с начала суток по серверному времени) превосходит указанное значение лимита, то регистрации такой транзакции будет запрещена.
Операция для записи лимита фиксируется только при регистрации фискальной транзакции. Тем не менее, при регистрации мягкой транзакции будет выдаваться сообщение о запрещении транзакции, если какие-то параметры фискальной транзакции, которая будет сформирована по ответу на мягкую транзакцию выходят за пределы, установленные лимитами.
Такого рода лимиты задаются на уровне записей партнёра и магазина. В карточке партнёра или магазина – это группа полей в разделе Лимиты.

Рис. Секции лимитов в карточке Партнёра

Рис. Секции лимитов в карточке Магазина
Общие лимиты – это лимиты для всех регистрируемых операций в течение суток, вне зависимости от того, каким участником операция регистрируется.
Лимиты по карте – это лимиты для конкретной карты участника. Если у участника несколько карт – по каждой карте можно в течение суток выбрать соответствующий лимит. Соответственно, такому участнику по разным картам можно зарегистрировать больше количество операций, чем участнику, у которого только одна карта.
Например, если установлен лимит начисления бонусов в размере 1000, по карте уже в течение суток было начисление 950 баллов. Если по карте регистрируется покупка с начислением 100 баллов – такая покупка будет запрещена. Зарегистрировать её можно будет только в случае, если в магазинах предусмотрена регистрация покупок без использования карт лояльности.
Обработка запрещающих лимитов производится по времени сервера, на котором установлено ПО МЛ. Например, если сервер установлен в Московском часовом поясе, а магазин находится в Калининграде, то суточные лимиты будут сбрасываться в 1 час ночи по Калинградскому времени.
При расчёте лимитов учитываются операции отмены транзакций и операции возврата покупок (в случае, если возврат производится в те же самые сутки, что и покупка).
Функциональность использования запрещающих лимитов создаёт дополнительную нагрузку на процессинг. В связи с этим предусмотрены настройки включения данной функциональности:
Настройка Loyalty.Processing.Limits.AllowLimits – включение функциональности лимитов. Можно отдельно включать функциональность лимитов для партнёра. Для этого предусмотрена настройка: Loyalty.Processing.Limits.Partner.AllowLimits.
Значения запрещающих лимитов могут быть установлены также в настройках. В этом случае может возникнуть конкуренция между лимитами в записях партнёров (магазинов) и значениями лимитов в настройках. Какие именно лимиты будут использоваться – задаётся установкой настроек: Loyalty.Processing.Limits.Partner.Priority и Loyalty.Processing.Limits.Shop.Priority.
Лимиты на количество применения
Лимиты на количество применения – не запрещает транзакцию. Данные лимиты устанавливаются на уровне правил начисления и ограничивают количество применений правил по конкретной карте участника. Предусмотрено использование двух лимитов: Количество срабатываний за сутки и Количество срабатываний за всё время. Задаются лимиты в карточке правила начисления, в разделе Ограничения:

Рис. Секция Ограничения в карточке правила начисления (Базовое правило)
Обработка суточного количества применений правила производится по времени сервера, на котором установлено ПО МЛ.
При расчёте лимитов учитываются операции отмены транзакций и операции возврата покупок.
Лимиты на количество применения можно задать для правил начисления:
- Базовое правило
- Поощрение за купон
- Правило счётчик
Использование лимитов на количество применения правил также создаёт дополнительную нагрузку на процессинг. Данные лимиты будут применятся в зависимости от установленного значения настройки: Loyalty.Processing.Limits.AllowLimits.
Использование лимитов для дисконтных правил
Применение дисконтных правил (Вид начисления = «Скидка») также можно ограничить лимитами на количество срабатывания. Однако, если для использования лимитов при начислении бонусов достаточно заполнить соответствующие поля правила и включить настройку функциональности, то для дисконтных правил этого недостаточно. В системе процессинг мягких и фискальных чеков раздельные (в целях увеличения производительности возможна организация процессинга мягких чеков вообще на отдельном сервере).
В любом случае запись применения правила происходит только при регистрации фискальной транзакции. Система позволяет передать информацию о применённых дисконтных транзакциях в фискальных чеках. Для этого необходимо использовать функциональность возврата расширенных атрибутов. В этом случае, в ответ на мягкий чек, в тех позициях к которым применилось дисконтное правило формируются расширенные атрибуты. Ключ атрибута состоит из префикса и внешнего идентификатора дисконтного правила. При формировании кассовым ПО фискального чека на основании ответа по мягкому, в позиции и в чеке должны присутствовать возвращённые расширенные атрибуты с копиями значений и ключей. Только в этом случае будут корректно учитываться лимиты на количество применения дисконтных правил.
Функциональность возврата расширенных атрибутов с детализацией применения дисконтных правил включается установкой значения настройки: Loyalty.Processing.Soft.DiscountRuleRuturnAsAttribute.TurnOn.
Префикс задаётся значением настройки: Loyalty.Processing.Soft.DiscountRuleRuturnAsAttribute.Prefix. Использование префикса обязательно. Расширенные атрибуты с таким префиксом исключаются из процедуры верификации расширенных атрибутов.
Лимиты по количеству товара
Лимиты по количеству товара ограничивают предоставленное поощрение на некоторое количество товара либо при каждой покупке отдельно, либо в пределах суток. Суточные количественные лимиты также называются кумулятивными.
Количественные лимиты – это не запрещающие транзакцию ограничения. В случае, если количество товара при покупке превосходит заданное в правиле начисления значение – то скидка будет применяться только на то количество, которое меньше или равно значению лимита. Покупка будет зарегистрирована, даже если скидка не будет предоставлена совсем.
Количественные лимиты учитываются только при предоставлении скидок (Вид начисления = «Скидка», На = «Позиция чека»), в случае поощрений другого вида – не используются.
Применение количественных лимитов будет корректным при любом распределении товаров одного артикула в чеке, а также распространяется на продажу одинаковых товаров по разным ценам.
Лимит на количество в рамках чека действует только в рамках одного чека и на следующую покупку не переносится. Применение данного лимита не зависит от часового пояса магазина регистрации покупки. Вместе с тем количественные лимиты в рамках чека необходимо использовать аккуратно, поскольку использование может приводить к уменьшению среднего чека, когда кассиры будут искусственно делить одну покупку на несколько.
Суточный лимит учитывает все покупки в течение суток. Но сутки считаются по серверному времени с 0 до 24 часов. Сам по себе процесс очистки таблицы накопленных лимитов может занимать некоторое время, поэтому с 0 часов до окончания выполнения процедуры очистки таблицы (около 1 часа) некоторые чеки могут быть не зарегистрированы или зарегистрированы с некорректным применением лимитов.
Количественные лимиты могут быть заданы на уровне правила, значения товарной акции или значения персональной акции.
Количественные лимиты на уровне правила
На уровне правила количественные лимиты задаются установкой значений полей в карточке правила, в разделе Ограничения:

Рис. Количественные лимиты в карточке правила начисления (Базовое правило)
При этом кумулятивный суточный лимит может быть задан как для карты, так и для всех карт одного контакта (участника программы лояльности). На уровне правила количественные лимиты распространяются на все товары, которые прошли условия фильтрации правила. Поскольку эти разные товары могут иметь различную цену, то в системе предусмотрена сортировка товаров по цене. Данная сортировка регулируется установкой значения настройки Loyalty.Processing.Discount.Limits.ProductQuantity.Sorting. Если значение настройки установлено как 0 – то скидка в первую очередь будет предоставлена на товары с минимальной ценой, если значение есть 1 – на товары с максимальной ценой. В текущей версии, изменение суточных количественных лимитов на уровне правила учитывается при регистрации отмен покупок, но не учитывается при регистрации возвратов покупок.
В системе Manzana в правиле начисления можно задать количественный лимит, который действует на товары, реализуемые как весовые. При этом количественные лимиты на уровне правила задаются целым числом и распространяются на все товары, прошедшие условия фильтрации правила. Например, в дисконтном правиле стоит ограничение на применение скидки только на 2 кг товара, а в чеке фактически куплено 2.251 кг, то скидка рассчитывается только на 2 кг товара. Остаток 0.251 кг скидке не подлежит.
Система поддерживает также индивидуальные лимиты по каждому товару в рамках одного чека. Задается в поле "Количество товаров в рамках одной позиции".
Условия применения количественных лимитов в дисконтном позиционном правиле:
1. Если параметр «Количество товаров в рамках одной позиции» = K, то максимальное количество единиц в этой позиции, которое может претендовать на скидку, ограничивается значением K. Например, если в чеке 5 шт. товара в одной позиции, прошедшей фильтрацию дисконтного правила, при этом K = 2, то скидка будет применена только к 2 товарам из 5.
Если количество товара в позиции ≤ K, то скидка применяется ко всем товарам.
2. Если задан параметр «Количество товаров в рамках чека» = N, то общее количество единиц товара, которые фактически получат скидку, не может превышать N, суммарно по всем позициям товаров, прошедших фильтрацию по правилу. Даже если K > N или суммарный потенциал превышает N. Например, если K = 3, N = 4, и в чеке 3 подходящих товара (по одной позиции), то скидка может быть применена максимум на 4 единицы, распределённые между позициями.
3. Если параметр «Количество товаров в рамках чека» (N) не задан (пусто), то ограничение по чеку не применяется. Скидка может быть предоставлена на все позиции, прошедшие фильтрацию, в пределах лимита K для каждой позиции.
4. Скидка между товарами распределяется с учётом настройки сортировки Loyalty.Processing.Discount.Limits.ProductQuantity.Sorting Для каждой товарной позиции по порядку предоставляется скидка на количество единиц, не превышающее минимальное из следующих значений:
- Оставшееся количество в рамках лимита N (если N задан)
- Лимит в рамках одной позиции — K
- Фактическое количество товара в чеке по этой позиции
5. Обработка чека продолжается до исчерпания лимита N или отсутствия товаров, прошедших фильтрацию правила:
- Если после обработки одной позиции лимит N ещё не исчерпан, и в списке остаются позиции товаров, подходящих под фильтр правила, то осуществляется переход к следующей позиции по отсортированному списку.
- Если лимит N исчерпан, то обработка прекращается — скидка на оставшиеся позиции не применяется, даже если по ним ещё есть доступный лимит K .
- Если все позиции обработаны и скидка предоставлена, но лимит N ещё не исчерпан, то обработка завершается — оставшийся лимит не переносится и не используется.
6. Если суммарное количество позиций (с учётом K) ≤ N, то скидка применяется ко всем позициям в полном объёме (в пределах K на позицию). Например, если в чеке N = 8:
Товар А — 5 шт. (K = 2),
Товар Б — 6 шт. (K = 2),
Товар В — 3 шт. (K = 2),
Если все позиции товаров прошли фильтрацию по правилу, то скидка будет предоставлена на 2 шт. по каждому товару (всего 6 шт.), так как это ≤ N.
Весь лимит N может быть не использован, скидка не «накапливается».
7. Если суммарное количество товаров по позициям> N, то скидка применяется только к N единицам, выбранным, согласно порядку сортировки, заданном значением настройки Loyalty.Processing.Discount.Limits.ProductQuantity.Sorting Например, если N = 5, К = 2, есть 4 товарных позиций, прошедших фильтрацию правила, то скидка будет распределена на первые 5 единиц в отсортированном списке. Распределение выполняется по позициям, а не по отдельным единицам: сначала — максимум по K для первой позиции, затем — для второй и т.д., пока не будет достигнут лимит N.
8. Каждая позиция чека обрабатывается независимо, даже если в чеке несколько строк одного и того же товара. Каждая строка участвует в сортировке и может получить скидку в пределах K и общего лимита N.
При выборе в правиле объекта расчета «На» = «Позиция чека и/или заказа»/ «На позицию заказа»/ «На позицию чека» лимиты по количеству товара применяются в заказах. Проверяются на этапе создания заказа и для апдейта заказа.
Ограничения
1. Количественный лимит для одной позиции не используется в товарных, персональных акциях, комплектах, правилах M*N.
2. Количественный лимит для одной позиции применим только для дисконтных позиционных правил.
3. Кумулятивный лимит по контакту и карте имеет больший приоритет: Количество товаров для карты (за сутки) и Количество товаров для контакта (за сутки).
Если в одном правиле "Количество товаров в рамках одной позиции" = 5, а "Количество товаров для карты (за сутки)" = 3, тогда лимит на карту будет приоритетнее, и скидка применится максимум на 3 штук товара.
4. Лимит на количество товаров в рамках одной позиции чека действует только в рамках одного чека и на следующую покупку не переносится.
5. Все количественные лимиты учитываются только в случае, если кассовое ПО способно объединять в одну позицию одинаковые товары." Если POS разбивает позиции, лимит может работать не корректно.
Взаимодействие с кассовым ПО для корректного учёта количественных лимитов
В текущей версии количественные лимиты реализованы для скидок. Скидки же вычисляются исключительно при процессинге мягких чеков: первым запросом в систему посылается мягкий чек, далее, на основании ответа по этому чеку с уже применёнными скидками, формируется фискальный чек, и далее именно фискальный чек записывается в базу данных системы. Процессинг мягких чеков принципиально отделён от процессинга фискальных чеков, более того, эти обработки могут быть разнесены на разные серверы (или ноды).
Более того, для выполнения требований ФЗ54, уже при формировании фискального чека некоторые позиции могут быть разделены.
Для корректного учёта количественных лимитов в таких условиях в системе реализована функциональность позиционной детализации применения дисконтных правил и акций. Исчерпывающая информация по применению скидок аккумулируется в позиционных расширенных атрибутах, которые должны быть возвращены в систему вместе с сформированным запросом фискального чека.
Важно! Корректный учёт кумулятивных количественных лимитов возможен только в случае, если расширенные атрибуты в ответ на мягкий чек формируются системой строго определённым образом, а именно значение атрибута должно формироваться в виде параметрического текста – в формате json. Функциональность данного формата выведения значения включается установкой соответствующего значения настройки: Loyalty.Processing.Soft.DiscountRuleRuturnAsAttribute.ReturnJson.
Если по какой-то позиции чека произошло применение дисконтного правила, то формат выводимого значения расширенного атрибута следующий:
<ExtendedAttribute> <Key>[Перфикс1][Внешний идентификатор дисконтного правила]</Key> <Value>{"N":"ZZ","D":YYY.YYY}</Value> </ExtendedAttribute> |
(Символы «[» и «]» не участвуют в формировании значения, они вставлены для удобства восприятия текста)
Префикс1 – это есть значение настройки: Loyalty.Processing.Soft.DiscountRuleRuturnAsAttribute.Prefix
N – уникальный в рамках чека и правила номер атрибута внутри чека. Числовое значение из 2-х символов из цифр и латинских букв.
D – величина скидки по правилу
----------------------------------------------------------------------------------------------------------
Если же само дисконтное правило подразумевает использование кумулятивного количественного лимита, то формируется дополнительный расширенный атрибут следующего формата:
<ExtendedAttribute> <Key>[Перфикс2][Внешний идентификатор дисконтного правила]</Key> <Value>{"N":"ZZ","Q":XXXX.XX}</Value> </ExtendedAttribute> |
Префикс2 – это есть значение настройки: Loyalty.Processing.Soft.DiscountLimitedRuleRuturnAsAttribute.Prefix
N – уникальный в рамках чека и правила номер атрибута внутри чека. Числовое значение из 2-х символов из цифр и латинских букв.
Q – количество товара в данной позиции, на которое применилась товарная акция
----------------------------------------------------------------------------------------------------------
Если дисконтное правило подразумевает использование товарной акции, то этот дополнительный атрибут имеет следующий формат:
<ExtendedAttribute> <Key>[Перфикс3][Внешний идентификатор значения товарной акции]</Key> <Value>{"N":"ZZ","Q":XXXX.XX}</Value> </ExtendedAttribute> |
Префикс3 – это есть значение настройки: Loyalty.Processing.Soft.DiscountCommodityCampaignValueRuturnAsAttribute.Prefix.
N – уникальный в рамках чека и правила номер атрибута внутри чека. Числовое значение из 2-х символов из цифр и латинских букв.
Q – количество товара в данной позиции, на которое применилась товарная акция
----------------------------------------------------------------------------------------------------------
Если дисконтное правило подразумевает использование персональной акции, то этот дополнительный атрибут имеет следующий формат:
<ExtendedAttribute> <Key>[Перфикс4][Внешний идентификатор значения персональной акции]</Key> <Value>{"N":"ZZ","Q":XXXX.XX}</Value> </ExtendedAttribute> |
Префикс4 – это есть значение настройки: Loyalty.Processing.Soft.DiscountPersonalCampaignValueRuturnAsAttribute.Prefix.
N – уникальный в рамках чека и правила номер атрибута внутри чека. Числовое значение из 2-х символов из цифр и латинских букв.
Q – количество товара в данной позиции, на которое применилась персональная акция
Важно! Для корректного учёта лимитов (и позиционной детализации скидок в отчётности) важно, чтобы все префиксы ключей расширенных атрибутов были различными.
После того, как ответ по мягкому чеку получен кассовым терминалом, на основании этого ответа кассовое ПО формируется фискальный чек.
Важно! Кассовое ПО должно формировать позиции фискального чека с полученными расширенными атрибутами. Также должно позволять вставить в позицию атрибуты с полными значениями количества знаков, без какого-то обрезания по ограниченности формата. Если кассовое ПО имеет ограничения по количеству символов – это необходимо отдельно рассмотреть перед началом эксплуатации системы.
При получении расширенных атрибутов вместе с фискальным чеком – производится анализ атрибутов и запись в базу данных системы.
Записанное значение атрибута с размером скидки в дальнейшем используется для формирования детализированной отчётности по скидкам.
Атрибуты с количественными значениями – как раз используются для корректного учёта кумулятивных количественных лимитов. При получении их значений, происходит распознавание текста, разбитие его на отдельные параметры и обновление записей в таблицах лимитов, которые детализированы до конкретной акции и позиции чека. Для правил, товарных и персональных акций используются отдельные таблицы базы данных.
Если следующая покупка совершается в те же календарные сутки, то при её анализе алгоритмами системы, записанные значения количеств товаров учитываются при применении скидки. Например, установлен суточный лимит в размере 10 штук. По первой покупке в день получена скидка на 3 акционных товара. Следующая покупка содержит 15 акционных товаров, но скидка будет применена только на 7 из них. Если же в течение того дня совершается третья покупка акционных товаров, то ни на один из них не будет применена скидка по акции, поскольку лимит исчерпан предыдущими покупками.
Возможна ситуация, когда кассовое ПО меняет позиционный состав фискального чека относительно ответа мягкого. В таких случаях допустимо только одно изменение: когда одна позиция разделяется на две. Остальные изменения возможны, но приведут к некорректному учёту скидок вообще. Это такие изменения: объединение позиций, изменение суммовых и количественных показателей, изменение товарных артикулов и т.д.
Для корректного учёта количественных лимитов, каждый позиционный расширенный атрибут получает уникальный номер. Это параметр N значения расширенного атрибута. Значение этого параметра состоит из двух символов, в качестве которых допустимы цифры и латинские буквы. Номер уникальный в рамках правила и позиции чека.
Важно! Если кассовое ПО делит позицию, то две получившие позиции должны иметь идентичные расширенные атрибуты. И именно в таком виде позиция чека должна появится в фискальном запросе.
Важно! В текущей версии допустимо деление одной позиции не более, чем на две позиции. Деление на 3 и более позиций будет обработано некорректно.
Как правило, кассовое ПО выделяет одну штуку товара из позиции, или какое-то небольшое количество для весовых товаров. Соответственно, количественные и суммовые показатели двух позиций вместе должны быть в точности равны количественным и суммовым показателям разбиваемой позиции. При несоблюдении этого условия возникнет необрабатываемая ситуация и лимиты могут быть учтены некорректно, как в меньшую, так и в большую сторону начисления скидки.
При регистрации фискального чека, в котором есть две позиции, с двумя идентичными расширенными атрибутами (с одинаковым номером) в первую очередь находится позиция, в которой товар имеет минимальное количество. Для этой позиции параметр количества в значении атрибута приравнивается количеству товара в позиции. Во второй позиции параметр количества в атрибуте устанавливается как разница переданного значения и значения в том же атрибуте, но в выделенной позиции. При совпадении количеств позиции рассматриваются по порядку следования в чеке. В таком виде атрибуты записываются в базу данных и используются для обновления значений таблиц лимитов.
Дополнительные ограничения использования
Функциональность кумулятивных количественных лимитов не распространяется на функциональность регистрации заказов (e-commerce).
Если при возвратах происходит объединение позиций чека – лимиты будут учитываться некорректно. Например, покупка совершена 10 позициями по 1 штуке одного и того же товара, но при частичном возврате регистрируется 1 позиция в 5 штук: такой возврат не будет обработан корректно.
В текущей версии формирование расширенных атрибутов может быть только при условии, что скидка в значении атрибута формируется как процентная ставка. То есть значение настройки Loyalty.Processing.Soft.DiscountRuleRuturnAsAttribute.DiscountType установлено как 0.
Для товарных акций обмена баллов на скидку кумулятивные количественные лимиты не предусмотрены.
Лимиты поощрений
В модуле Manzana Loyalty Online предусмотрен отдельный раздел, в котором можно настраивать лимит начисления бонусных баллов в рамках конкретной кампании или правила для контакта.
Параметры для Лимита поощрений:
| Поле | Описание | Обязательное поле | Редактирование |
| Название | Наименование для лимита поощрения | Да | Значение доступно для редактирования, заполняется вручную. |
| Внешний идентификатор | Уникальное текстовое значение. Используется для интеграции записей с внешними системами | Нет | Значение доступно для редактирования, заполняется вручную. |
| Описание | Содержит обобщенную информацию о назначении лимита. | Нет | Значение доступно для редактирования, заполняется вручную. |
| Уровень поощрения | Уровень записи системы, на котором производится начисление баллов. Возможные значения:
| Да | Значение доступно для редактирования, заполняется вручную. |
| Кампания | Ссылка на заведенную кампанию. Через +Создание кампании возможно завести кампанию прямо из карточки сущности. Поле обязательное, если Уровень поощрения=Кампания. | Да | Значение доступно для редактирования, заполняется вручную. |
| Правило | Ссылка на правило начисления. Обязательное поле, если Уровень поощрения=Правило. | Да | Значение доступно для редактирования, заполняется вручную. |
| Активно | Поле для активации настройки лимита. По умолчанию Активно=Да. | Нет | Значение доступно для редактирования, активируется вручную. |
| Лимит начисления бонусных баллов | Числовое значение, равное количеству бонусных баллов, доступных для начисления контакту в рамках указанной кампании. | Нет | Значение доступно для редактирования, заполняется вручную. |
| Учётный период | Период действия лимита. Возможные значения, если Уровень поощрения=Правило
Возможные значения, если Уровень поощрения=Кампания
| Да | Значение доступно для редактирования, заполняется вручную. |
На уровне кампании
В рамках конкретной кампании лимит действует для контакта в течение месяца, после окончания периода возобновляется предоставление поощрения в виде бонусов, пока снова не будет достигнут лимит по контакту.
Ограничения для лимитов начисления:
- В учете лимита количественного начисления баллов не участвуют ручные начисления, начисления по ЗПР, импорт баллов;
- Начисления по правилам: Правила-комплекты, накопительные правила, а также правила с приоритетом выше 90 игнорируются для начисления баллов, учитываемых лимитом для поощрения. Начисления по таким правилам не входят в общее начисление по кампании.
Начисление баллов по чеку/заказу в рамках лимитированной кампании происходит только в том случае, если его значение меньше разницы между установленным лимитом и общими накоплениями по этой кампании. При этом, если эта разница меньше, чем значение настройки Loyalty.Processing.ChequeBonusLimit.ToleranceLevel, лимит считается достигнутым и начисления по правилам кампании не происходит.
Для того, чтобы настроить лимит для начисления бонусов, необходимо в интерфейсе лояльности перейти в раздел Правила программы=>Лимиты поощрений.
Рассмотрим пример настройки. Например, а рамках акций на сезонные товары контакту в течение мая может быть начислено по правилам кампании не более 1000 бонусов. Настройка лимита по таким условиям будет выглядеть в системе так:

Рис. Настроенный лимит начисления бонусных баллов
При удалении чека/заказа удаляются соответствующие начисления по кампании.
Лимиты очищаются по контакту с помощью джоба, который запускается 1 раз в месяц 1-го числа в 00:00 часов.
Общий месячный лимит на контакта по всем его картам ограничивается партнерской настройкой Loyalty.Processing.Limits.Bonus.Contact.ChargeableMonth.
Просмотр раздела «Лимиты поощрений» в интерфейсе лояльности доступен для ролей: Loyalty Administrator, Loyalty Contact Center, Loyalty Manager, Loyalty User. Возможность создавать, редактировать и удалять записи лимитов поощрений доступно для - Loyalty Administrator, Loyalty Manager.
Лимит бонусных начислений по правилу
Функционал позволят ограничивать бонусные начисления по правилу в рамках чека/позиции чека за сутки и в рамках всего периода действия правила на контакт. Ограничения настраиваются в разделе Лимиты поощрений в правилах начисления: Базовое правило, Поощрение за купон, Правила-комплекты, Персональная акция и Товарная акция).
Данный раздел доступен на форме только, если в параметре «Вид начисления» указано «Бонус» или «Бонус + статусный бонус».
Для создания лимита в правиле необходимо нажать на «+Добавление нового элемента»-«+Создать лимиты поощрений» в секции «Лимиты поощрений»:


При создании лимита из правила в сущности «Лимиты поощрений» уже будут заполнены параметры: «Уровень поощрения» = «Правило» и «Правило» = Наименование текущего правила.
Лимит можно устанавливать на баллы в рамках того периода, который выбран в поле «Учетный период», начисленные на:
- каждую позицию, прошедшую фильтрацию. При этом общее начисление уменьшается и пропорционально делится на позиции чека.
- каждый чек/заказ.
При такой настройке контакту по правилу будут начислены бонусы при выполнении условий акции с учетом лимита – 300 бонусов - максимальное количество бонусов, которые может получить клиент за все время действия акции.

Лимиты по начислениям вычисляются после агрегации и исключения правил (кампаний). Если правило относится к кампании, по которой установлен лимит, то должен срабатывать минимальный лимит между кампанией и правилом.
Начисление баллов в рамках лимитированного правила происходит только в том случае, если его значение меньше разницы между установленным лимитом за указанный период и общими накоплениями за указанный период либо за чек/позицию чека. Если больше, то начисление уменьшается согласно лимиту вплоть до нуля. Также учитывается погрешность, указанная в настройке Loyalty.Processing.ChequeBonusLimit.ToleranceLevel, аналогично лимитам по кампании.
Для заказов лимиты учитываются при запросе создании заказа. При регистрации запроса изменения заказа (update) агрегаты по лимитам контакта обновляются для пересчитываемого правила - начисление по заказу удаляется из расчета лимита и учитывается новое начисление. Если правило не пересчитываемое, то лимит не изменяется.
В лимитах учитываются роллбеки, отказы от части заказа и возвраты.
Ограничение и допущения:
- В случае изменения в правиле кампании, вида начисления и прочих параметров, накопления по лимиту не пересчитываются.
- В лимите учитываются только обычные, не статусные баллы.
- Для поощрения за купон могут быть проблемы с достижением лимита и гашением купона, без предоставления поощрения в полной мере. Предусмотрена возможность не гасить купон, если он был применен по купонному правилу и лимит обрезал начисление до 0.
- Для лимита баллов по позиции учитываются только позиционные правила, либо чековые правила с учетом распределения по позициям (расширенные параметры правила «Учитывать состав» + «Распределять по позициям»).
- Лимиты по правилам не передаются в ответах на мягкие и фискальные запросы. Передаются лимиты по кампаниям.
- В накоплениях по лимитам учитываются только возвраты со ссылкой на чек покупки, возвраты без ссылки не учитываются.
- Если при возврате есть коррекция списанных ранее баллов, такие баллы в лимитах не учитываются.
- Начисление баллов при проведении запросов по карте без контакта в лимитах не учитываются.
Прочие лимиты
В правиле начисления можно установить лимит на минимальное количество начисляемых по правилу баллов. Это параметр: Минимальное значение баллов. Если применение правила по чеку даёт меньшее количество – то будет начислено минимальное значение. В случае позиционного правила – это относится к каждой позиции, прошедшей условия фильтрации правила.

Рис. Параметр «Минимальное количество баллов» в карточке правила начисления.
На уровне кампании можно установить лимит на максимальное количество начисляемых баллов в рамках кампании в сутки. При установке данного параметра в значение, отличное от значения по умолчанию, количество баллов, начисляемое всем участникам в рамках этой кампании (по всем связанным правилам) не будет превосходить данного параметра. Данный лимит не зависит от сроков действия баллов, под него попадают и баллы отложенной активации. На уровне кампании таких параметра два: для бонусных баллов и для статусных баллов.

Рис. Параметры лимитов начисления баллов и статусных баллов в карточке кампании.
Следует иметь в виду, что процедура обработки лимитов работает периодически в офлайн режиме. Если чек (или группа чеков) регистрируется в этот небольшой временной интервал, то по нему могут произойти начисления, даже если на текущий момент лимит достигнут.
Для начисления статусных баллов по правилам начисления для отдельного контакта (по всем его картам) может быть задано максимально возможное количество статусных баллов, начисляемое для этого контакта в пределах одних суток по времени сервера системы. Данное значение лимита задаётся установкой значения партнёрской настройки Loyalty.Processing.DailyLimits.Contact.StatusBonus.ChargeableAmount. Следует иметь в виду, что значение соответствующей системной настройки по умолчанию равно 1. При заведении нового партнёра и организации начисления статусных баллов в его магазинах, без изменения значений, начисление статусных баллов будет ограничено. Если начисление по чеку превосходит возможное начисление с учётом уже ранее начисленных баллов – никаких начислений статусных баллов по этому чеку не будет. Данный лимит учитывается только в случае наличия у карты контакта, для карт без контакта начисление не учитывает значение лимита. Суточный лимит на количество статусных баллов учитывается только при обработке чеков покупки, при обработке запросов заказов, а также при всех прочих начислениях, не связанных с покупками – лимит не учитывается. Также данный лимит не восстанавливается при регистрации возвратов покупок.
Особенности использования лимитов
Лимиты пересчитываются при операциях роллбэков, но не пересчитываются при операциях возвратов.
Если установлен лимит по операциям начисления, то чек не будет зарегистрирован. Отключить начисление на POS-терминале, но провести чек без начисления, чтобы он сохранился для накоплений по карте – нельзя.
Все суточные лимиты для карт пересчитываются по серверному времени, но не по поясному времени контакта карты.
Лимиты на количество начислений в рамках кампании пересчитываются в офлайн режиме, раз в 5 минут. Поэтому возможно в рамках этой кампании зарегистрировать некоторое количество операций начисления сверх установленного лимита.
Все количественные лимиты учитываются только в случае, если кассовое ПО способно объединять в одну позиции одинаковые товары. Количественные лимиты не учитываются для правил или акций вида MxN.
Лимиты для дисконтных правил и дисконтных товарных и персональных акций могут быть использованы в случае, если кассовое ПО позволяет трансляцию в запросах фискальных чеков значений позиционных атрибутов, которые сформированы системой в ответ на мягкий чек.
Операция отмены покупки, в которой сработало правило сообщения, не приводит к пересчёту лимита по количеству срабатывания правила-сообщения.
Лимиты на количество позиций и записей
В пределах стандартного SLA (3 секунды), по стандартным правилам (без зависимостей и комплектов) гарантируется обработка чеков до 100 позиций.
В пределах стандартного SLA (3 секунды) гарантируется обработка до 500 записей накопленных баллов на всех картах, попадающих под списание в одной транзакции покупки и транзакции списания баллов по запросу.
Не рекомендуется выпускать по одному событию чека более 20 моментальных купонов. Не рекомендуется создавать правила счётчиков таким образом, чтобы к событию чека их применилось более 10.