Окно конструктора условий открывается при добавлении и редактировании шаблона условия:
Конструктор условий позволяет редактировать следующие элементы шаблона:
Номер шаблона. Номер шаблона является уникальным идентификатором в рамках одной схемы лояльности (скидки, начисление бонусов, списание бонусов, рекламные сообщения).
ВАЖНО! Если при создании шаблона указать номер, который уже используется у другого шаблона, то новый шаблон полностью заменит существующий. |
Выражение для условия является основным полем конструктора шаблонов.
В поле для выражения записывается условие, при выполнении которого акция срабатывается и применяется соответствующее воздействие - скидка, начисление/списание бонусов, рекламное сообщение. При составлении чека его параметры сравниваются с заданным условием. Результатом проверки может быть ответ ДА либо НЕТ. При значении результата ДА воздействие акции применяется, в случае, если результат имеет значение "НЕТ", что воздействие акции применено не будет.
В выражении можно использовать логические операции: логические "и", логическое "или", отрицание и т.д.
В выражении не допускается применение двойных кавычек.
Перед строковыми значениями в выражении следует указывать символ юникода. Например:
rf.inventSumInCheckWithAllOptions([u'opt1',u'признак2']) |
Пример №1 Задано выражение:
При составлении чека вместо выражения
Результат проверки - НЕТ, воздействие акции не применяется. Пример №2 Задано выражение:
При составлении чека место выражения Пример №3 Задано выражение:
При составлении чека выполняется проверка того, чтобы основная цена товара не была равна минимальной. Пример №4 Задано выражение:
При составлении чека выполняется проверка того, что операция является продажей или возвратом сертификата. Пример №5 Задано выражение:
При составлении чека выполняется проверка того, что номер карты клиента начинается со значения "12345". Пример №6 Задано выражение:
Воздействие акции будет применено к каждому третьему чеку. Пример №7 Задано выражение:
Воздействие акции будет применено только в том случае, если товар не входит в каталог с кодом 222. |
Расчет выражения ведется на основании информации, получаемой из кассового чека. Список элементов включает в себя некоторые поля кассового чека и ряд функций, которые не являются частью чека, но помогают сделать сложные обращения к полям чека более простым и гибким.
Корневые элементы списка:
Для переноса элемента чека или функции в строку выражения необходимо дважды щелкнуть по нему левой кнопкой мыши. Элемент или функция добавляются в выражение в то месте, куда установлен курсор.
Данные кассового чека имеют иерархическую структуру, поэтом в строку выражения подставляется не сам элемент, а полная цепочка элементов, т.е. сам элемент и все дерево до корневого элемента.
Функции подставляются в выражение со своими параметрами. Если в выражении один параметр упоминается несколько раз, то его наименование изменяется. Это сделано для того, чтобы параметры в различных частях выражения не пересекались.
Параметры функции в выражении определяются как переменные:
Информация об использовании переменных приведена ниже.
Переменные представляют собой особые элементы выражения, в которые подставляется значение, указанное при заведении акции.
В выражение переменные записываются в формате:
${НазваниеПеременной} |
Все переменные, включенные в выражение, отображаются в списке переменных. Добавление, редактирование и удаление переменных не может выполняться напрямую. Редактирование списка переменных осуществляется автоматически после того, как они были добавлены, изменены или удалены из выражения.
Переменные отличаются используемым типом данных, который следует изменять в зависимости от того, в каком месте выражения используется переменная. Нужный тип переменной выбирается из списка.
При составлении выражения следует тщательно продумывать тип переменной, так как они влияют на итоговый результат выражения. Если типы сравниваемых значений не совпадут или в выражении будет указан лишний символ, то выражение будет ошибочным и акция не сработает! |
От типа переменной зависит и то, какое поле ввода будет заполнять пользователь при заведении акции.
Пусть в выражении условия задано значение:
Для переменной При задании условия акции пользователю будет предложено указать значение переменной в виде любого строкового значения. При составлении чека на кассе будет проверяться выражение:
Т.е. условие акции сработает в том случае, если итоговая сумма чека превысит 400 рублей. |
Заголовок переменной позволяет задавать строку-предложение, на основании которой при задании акции пользователю будет понятно, какие данные следует указывать в поле.
В конструкторе шаблонов заголовок задается в списке переменных:
В акции заголовок отображается при добавлении условия или результата:
Живой текст представляет собой блок информации, описывающий условие акции и содержащий поля, для указания при задании акции значений переменных.
Живой текст включает в себя два вида элементов:
Для добавления фиксированного текста необходимо нажать кнопку . В блок живого текста будет добавлено текстовое поле, куда можно ввести описание условия:
Количество текстовых элементов не ограничено. Для того чтобы удалить фрагмент текста нужно перейти в текстовое поле, стереть текст и нажать кнопку Enter либо щелкнуть в пустом месте окна.
Добавление переменной в блок живого текста выполняется путем ее перетаскивания:
Порядок элементов живого текста можно менять с помощью перетаскивания мышкой.
Описание шаблона указывается в произвольной форме и предназначено для того чтобы указать особенности данного шаблона. Для того, чтобы пользователю была понятна работа с шаблоном, рекомендуется указывать примеры и нюансы его использования. Если в выражении используется необычные вычисления, сложные преобразования, нестандартные поля или присутствуют какие-то ограничения, то информацию об этом нужно указать в описании, чтобы пользователь мог скорректировать применение шаблона или акции.
Окно редактора описания шаблона выглядит следующим образом:
При составлении описания можно использовать несколько опорных точек:
В рамках акции необходимо задать условие, согласно которому на чек будет предоставлена скидка, если количество товаров из списка больше количества, указанного в акции.
Условия акции: Имеется список "Распродажа", в который включены товары с кодами:
Если количество товаров из списка "Распродажа" больше 5 шт, то условие акции сработает и будет предоставлена скидка. Пример №1 Пусть имеется чек:
В чеке присутствуют 3 товара, входящих в список "Распродажа". Условие акции не выполнено, скидка не будет предоставлена. Пример №2 Пусть имеется чек:
В чеке присутствует 7 товаров из списка "Распродажа". Условие акции выполнено, скидка будет предоставлена. Пример №3 Пусть имеется чек:
В чеке присутствует 5 товаров из списка "Распродажа". Условие акции выполнено, скидка будет предоставлена. |
Шаблон условия должен быть составлен таким образом, чтобы пользователь при задании акции мог указать список товаров и минимальное количество, необходимое для предоставления скидки.
В настоящее время реализовано множество готовых функций, которые могут быть использованы при составлении выражения для шаблона, поэтому перед началом работы следует проверить наличие подходящей функции в документации.
Под условие "на чек будет предоставлена скидка, если количество товаров из списка больше количества, указанного в акции" оптимально подходит функция Количество товаров в чеке с указанным каталогом.
Выберем эту функцию в списке функций и добавим в выражение двойным щелчком левой кнопки мыши:
Выражение содержит 2 переменные:
${catalog1}
указывает код каталога${kitItemIsOnAccount1}
определяет следует ли при подсчете количества позиций учитывать позиции с товарами, входящими в набор.При составлении выражения важно правильно указать тип переменной, так как в противном случае акция не сработает. В описании выбранной нами функции приведен пример выражения для нее:
cf.inventQuantInCheckByCatalog('12345', False) |
Для нашего случая переменную ${kitItemIsOnAccount1}
можно сразу заменить на значение False
, т.к. согласно требованиям наборы учитывать не нужно.
Приведем переменную ${catalog1}
к нужному виду:
${catalog1}
в переменную ${productListCode}
для более удобной работы с выражением.PRODUCT_LIST
).Изменим формат записи переменной на подходящий для функции вид:
cf.inventQuantInCheckByCatalog(${productListCode}, False) |
Для того чтобы количество товаров из каталога сравнивалось с определенным значением, введем в выражение еще одну переменную.
cf.inventQuantInCheckByCatalog([${productListCode}, False) >= ${minProductCount} |
Переменная ${minProductCount}
позволит указать необходимое количество товара при задании акции. Для переменной укажем тип DOUBLE
, так как количество товара может принимать дробные значения.
В выражении следует использовать нестрогое неравенство, чтобы указанное количество входило в интервал срабатывания условия.
Итоговое выражение будет выглядеть следующим образом:
Живой текст должен содержать описание выражения. В нашем случае можно выбрать вариант: "Количество товара в чеке из списка "Распродажа" больше, чем 5 шт".
В окне конструктора живого текста добавляем текст и переменные:
Для настройки шаблона необходимо указать идентификатор, название и тип условия.
Идентификатор должен принимать уникальное значение для шаблона условия в выбранной схеме лояльности (скидки, начисление бонусов, списание бонусов, реклама).
Название должно содержать максимум информации о шаблоне, но не быть при этом слишком длинным. Для нашего примера подойдет вариант: "Количество товаров из списка больше указанного количества".
Тип шаблона выбирается в соответствии с полученным выражением. Если в выражении используются объекты card
, coupon
или функции, использующие эти объекты, то выбирается тип "условие по карте" или "условие по купону". В нашем примере данные объекты не использовались, поэтому в типе указывается "общее условие".
При составлении описания шаблона необходимо указывать развернутое название. Для нашего примера подойдет вариант:
Количество товара в чеке из указанного списка товаров должно быть больше или равно указанному количеству. При подсчете количества товаров не будут учитываться товары входящие в набор. |
В качестве примеров можно привести варианты чеков из пункта "Описание требований".