Окно конструктора
Окно конструктора условий открывается при добавлении и редактировании шаблона условия:
Конструктор условий позволяет редактировать следующие элементы шаблона:
Номер шаблона. Номер шаблона является уникальным идентификатором в рамках одной схемы лояльности (скидки, начисление бонусов, списание бонусов, рекламные сообщения).
ВАЖНО! Если при создании шаблона указать номер, который уже используется у другого шаблона, то новый шаблон полностью заменит существующий.- Название шаблона. Наименование шаблона представляет короткое описание шаблона, которое отображается в списке шаблонов условий в интерфейсе модуля управления.
- Тип шаблона. Выбирается из списка, включающего такие типы как:
- Общее условие. В рамках акции проверяется только выражение условия.
- Условие по карте. В рамках акции проверяется выражение условия и наличие в чеке карты.
- Условие по купону. В рамках акции проверяется выражение условия и наличие в чеке купона.
- Выражение условия. При построении выражения условия могут быть использованы элементы чека и функции из конструктора, к которым применяются логические выражения.
- Список элементов. Перечень элементов чека и функций, используемых для составления условий. Для быстрого поиска элемента предназначен фильтр, в поле которого вводится наименование элемента или его части, после чего в списке отображаются только элементы, содержащие введенный текст.
- Список переменных. Перечень переменных, входящих в условие. При выборе в качестве элемента условия готовой функции список переменных выводится автоматически. Если выражение составляется с нуля, то переменные появляются по мере их добавления в выражение.
- Живой текст. Комбинация текста и переменных, которая используется для заполнения данных условия при составлении акции.
- Редактор описания шаблона. Предназначен для составления подробного описания шаблона с примерами. Описание шаблона можно просмотреть в модуле управления и при составлении акции при выборе соответствующего шаблона.
Составление выражения для условия
Основные правила составления выражений
Выражение для условия является основным полем конструктора шаблонов.
В поле для выражения записывается условие, при выполнении которого акция срабатывается и применяется соответствующее воздействие - скидка, начисление/списание бонусов, рекламное сообщение. При составлении чека его параметры сравниваются с заданным условием. Результатом проверки может быть ответ ДА либо НЕТ. При значении результата ДА воздействие акции применяется, в случае, если результат имеет значение "НЕТ", что воздействие акции применено не будет.
В выражении можно использовать логические операции: логические "и", логическое "или", отрицание и т.д.
В выражении не допускается применение двойных кавычек.
Перед строковыми значениями в выражении следует указывать символ юникода. Например:
rf.inventSumInCheckWithAllOptions([u'opt1',u'признак2'])
Пример №1
Задано выражение:
check['sumb'] > 1000
При составлении чека вместо выражения check['sumb']
из чека будет подставлено значение итоговой суммы чека. Если сумма чека равняется 538 рублей, что выражение примет вид:
538 > 1000
Результат проверки - НЕТ, воздействие акции не применяется.
Пример №2
Задано выражение:
check['sumb'] > 1000 and check['shopcode'] == 3
При составлении чека место выражения check['sumb']
из чека будет подставлено значение итоговой суммы чека, а вместо выражения check['shopcode']
- код магазина. В том случае, если итоговая сумма чека будет превышать 1000 рублей, а код магазина будет равен 3, то воздействие акции будет применено.
Пример №3
Задано выражение:
object['tmc']['price'] != object['tmc']['minprice']
При составлении чека выполняется проверка того, чтобы основная цена товара не была равна минимальной.
Пример №4
Задано выражение:
object['opcode'] in [63,64]
При составлении чека выполняется проверка того, что операция является продажей или возвратом сертификата.
Пример №5
Задано выражение:
card['card']['number'].startswith('12345')
При составлении чека выполняется проверка того, что номер карты клиента начинается со значения "12345".
Пример №6
Задано выражение:
check['num'] % 3 == 0
Воздействие акции будет применено к каждому третьему чеку.
Пример №7
Задано выражение:
not cf.hasInventCatalogs([u'222'])
Воздействие акции будет применено только в том случае, если товар не входит в каталог с кодом 222.
Список элементов и функций
Расчет выражения ведется на основании информации, получаемой из кассового чека. Список элементов включает в себя некоторые поля кассового чека и ряд функций, которые не являются частью чека, но помогают сделать сложные обращения к полям чека более простым и гибким.
Корневые элементы списка:
- check - документ, кассовый чек. Содержит общую информацию о покупке: дату и время, общую стоимость, номер кассы, магазина и т.д.
- object - текущая позиция чека. Содержит информацию о позиции: товар, его количество, стоимость позиции и т.д. Этот элемент разрешено использовать только в том случае, если результатом воздействия является позиция.
- card - карта покупателя. Содержит информацию о карте и о покупателе.
- coupon - купон, выпускаемой торговой сетью для участия в определенной акции.
- functions - список вспомогательных функций.
Для переноса элемента чека или функции в строку выражения необходимо дважды щелкнуть по нему левой кнопкой мыши. Элемент или функция добавляются в выражение в то месте, куда установлен курсор.
Данные кассового чека имеют иерархическую структуру, поэтом в строку выражения подставляется не сам элемент, а полная цепочка элементов, т.е. сам элемент и все дерево до корневого элемента.
Функции подставляются в выражение со своими параметрами. Если в выражении один параметр упоминается несколько раз, то его наименование изменяется. Это сделано для того, чтобы параметры в различных частях выражения не пересекались.
Параметры функции в выражении определяются как переменные:
Информация об использовании переменных приведена ниже.
Список переменных
Переменные представляют собой особые элементы выражения, в которые подставляется значение, указанное при заведении акции.
В выражение переменные записываются в формате:
${НазваниеПеременной}
Все переменные, включенные в выражение, отображаются в списке переменных. Добавление, редактирование и удаление переменных не может выполняться напрямую. Редактирование списка переменных осуществляется автоматически после того, как они были добавлены, изменены или удалены из выражения.
Переменные отличаются используемым типом данных, который следует изменять в зависимости от того, в каком месте выражения используется переменная. Нужный тип переменной выбирается из списка.
От типа переменной зависит и то, какое поле ввода будет заполнять пользователь при заведении акции.
Пусть в выражении условия задано значение:
check['sumb'] > ${minCheckSum}
Для переменной ${minCheckSum}
установлен тип Дробное число.
При задании условия акции пользователю будет предложено указать значение переменной в виде любого строкового значения.
При составлении чека на кассе будет проверяться выражение:
check['sumb'] > 400.00
Т.е. условие акции сработает в том случае, если итоговая сумма чека превысит 400 рублей.
Заголовок переменной позволяет задавать строку-предложение, на основании которой при задании акции пользователю будет понятно, какие данные следует указывать в поле.
В конструкторе шаблонов заголовок задается в списке переменных:
В акции заголовок отображается при добавлении условия или результата:
Живой текст
Живой текст представляет собой блок информации, описывающий условие акции и содержащий поля, для указания при задании акции значений переменных.
Живой текст включает в себя два вида элементов:
- переменные, на месте которых при задании акции будут выведены поля для ввода,
- фиксированный текст, позволяющий описать взаимодействие переменных в акции.
Для добавления фиксированного текста необходимо нажать кнопку . В блок живого текста будет добавлено текстовое поле, куда можно ввести описание условия:
Количество текстовых элементов не ограничено. Для того чтобы удалить фрагмент текста нужно перейти в текстовое поле, стереть текст и нажать кнопку Enter либо щелкнуть в пустом месте окна.
Добавление переменной в блок живого текста выполняется путем ее перетаскивания:
Порядок элементов живого текста можно менять с помощью перетаскивания мышкой.
Описание шаблона
Описание шаблона указывается в произвольной форме и предназначено для того чтобы указать особенности данного шаблона. Для того, чтобы пользователю была понятна работа с шаблоном, рекомендуется указывать примеры и нюансы его использования. Если в выражении используется необычные вычисления, сложные преобразования, нестандартные поля или присутствуют какие-то ограничения, то информацию об этом нужно указать в описании, чтобы пользователь мог скорректировать применение шаблона или акции.
Окно редактора описания шаблона выглядит следующим образом:
При составлении описания можно использовать несколько опорных точек:
- развернутое названия шаблона,
- описание того, что шаблон делает,
- примеры заполнения шаблона,
- особенности использования,
- примеры обработки чеков.
Пример создания шаблона условия
Описание требований
В рамках акции необходимо задать условие, согласно которому на чек будет предоставлена скидка, если количество товаров из списка больше количества, указанного в акции.
Условия акции:
Имеется список "Распродажа", в который включены товары с кодами:
- 111
- 222
- 333
Если количество товаров из списка "Распродажа" больше 5 шт, то условие акции сработает и будет предоставлена скидка.
Пример №1
Пусть имеется чек:
Код товара | Количество товара в чеке |
---|---|
222 | 2 |
444 | 3 |
333 | 1 |
В чеке присутствуют 3 товара, входящих в список "Распродажа". Условие акции не выполнено, скидка не будет предоставлена.
Пример №2
Пусть имеется чек:
Код товара | Количество товара в чеке |
---|---|
111 | 7 |
555 | 5 |
В чеке присутствует 7 товаров из списка "Распродажа". Условие акции выполнено, скидка будет предоставлена.
Пример №3
Пусть имеется чек:
Код товара | Количество товаров в чеке |
---|---|
444 | 1 |
111 | 3 |
333 | 2 |
В чеке присутствует 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
или функции, использующие эти объекты, то выбирается тип "условие по карте" или "условие по купону". В нашем примере данные объекты не использовались, поэтому в типе указывается "общее условие".
Описание шаблона
При составлении описания шаблона необходимо указывать развернутое название. Для нашего примера подойдет вариант:
Количество товара в чеке из указанного списка товаров должно быть больше или равно указанному количеству.
При подсчете количества товаров не будут учитываться товары входящие в набор.
В качестве примеров можно привести варианты чеков из пункта "Описание требований".