Окно конструктора

Окно конструктора условий открывается при добавлении и редактировании шаблона условия:

Конструктор условий позволяет редактировать следующие элементы шаблона:

  1. Номер шаблона. Номер шаблона является уникальным идентификатором в рамках одной схемы лояльности (скидки, начисление бонусов, списание бонусов, рекламные сообщения).

    ВАЖНО! Если при создании шаблона указать номер, который уже используется у другого шаблона, то новый шаблон полностью заменит существующий.
  2. Название шаблона. Наименование шаблона представляет короткое описание шаблона, которое отображается в списке шаблонов условий в интерфейсе модуля управления.
  3. Тип шаблона. Выбирается из списка, включающего такие типы как:
    • Общее условие. В рамках акции проверяется только выражение условия.
    • Условие по карте. В рамках акции проверяется выражение условия и наличие в чеке карты.
    • Условие по купону. В рамках акции проверяется выражение условия и наличие в чеке купона.
  4. Выражение условия. При построении выражения условия могут быть использованы элементы чека и функции из конструктора, к которым применяются логические выражения.
  5. Список элементов. Перечень элементов чека и функций, используемых для составления условий. Для быстрого поиска элемента предназначен фильтр, в поле которого вводится наименование элемента или его части, после чего в списке отображаются только элементы, содержащие введенный текст.
  6. Список переменных. Перечень переменных, входящих в условие. При выборе в качестве элемента условия готовой функции список переменных выводится автоматически. Если выражение составляется с нуля, то переменные появляются по мере их добавления в выражение.
  7. Живой текст. Комбинация текста и переменных, которая используется для заполнения данных условия при составлении акции.
  8. Редактор описания шаблона. Предназначен для составления подробного описания шаблона с примерами. Описание шаблона можно просмотреть в модуле управления и при составлении акции при выборе соответствующего шаблона. 

Составление выражения для условия

Основные правила составления выражений

Выражение для условия является основным полем конструктора шаблонов. 

В поле для выражения записывается условие, при выполнении которого акция срабатывается и применяется соответствующее воздействие - скидка, начисление/списание бонусов, рекламное сообщение. При составлении чека его параметры сравниваются с заданным условием. Результатом проверки может быть ответ ДА либо НЕТ. При значении результата ДА воздействие акции применяется, в случае, если результат имеет значение "НЕТ", что воздействие акции применено не будет.

В выражении можно использовать логические операции: логические "и", логическое "или", отрицание и т.д.

В выражении не допускается применение двойных кавычек.

Перед строковыми значениями в выражении следует указывать символ юникода. Например:

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

Пусть имеется чек:

Код товараКоличество товара в чеке
2222
4443
3331

В чеке присутствуют 3 товара, входящих в список "Распродажа". Условие акции не выполнено, скидка не будет предоставлена.

Пример №2

Пусть имеется чек:

Код товараКоличество товара в чеке
1117
5555

В чеке присутствует 7 товаров из списка "Распродажа". Условие акции выполнено, скидка будет предоставлена.

Пример №3

Пусть имеется чек:

Код товараКоличество товаров в чеке
4441
1113
3332

В чеке присутствует 5 товаров из списка "Распродажа". Условие акции выполнено, скидка будет предоставлена.

Шаблон условия должен быть составлен таким образом, чтобы пользователь при задании акции мог указать список товаров и минимальное количество, необходимое для предоставления скидки.

Составление выражения

В настоящее время реализовано множество готовых функций, которые могут быть использованы при составлении выражения для шаблона, поэтому перед началом работы следует проверить наличие подходящей функции в документации. 

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

Выберем эту функцию в списке функций и добавим в выражение двойным щелчком левой кнопки мыши:

Выражение содержит 2 переменные:

  • ${catalog1} указывает код каталога
  • ${kitItemIsOnAccount1} определяет следует ли при подсчете количества позиций учитывать позиции с товарами, входящими в набор.

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

cf.inventQuantInCheckByCatalog('12345', False)

Для нашего случая переменную ${kitItemIsOnAccount1} можно сразу заменить на значение False, т.к. согласно требованиям наборы учитывать не нужно.

Приведем переменную ${catalog1} к нужному виду:

  1. Переименуем переменную ${catalog1} в переменную ${productListCode} для более удобной работы с выражением.
  2. Изменим тип переменной на более подходящий к нашей задаче. Из списка переменных выберем "Код списка товаров" (PRODUCT_LIST).
  3. Изменим формат записи переменной на подходящий для функции вид:

    cf.inventQuantInCheckByCatalog(${productListCode}, False)

Для того чтобы количество товаров из каталога сравнивалось с определенным значением, введем в выражение еще одну переменную.

cf.inventQuantInCheckByCatalog([${productListCode}, False) >= ${minProductCount}

Переменная ${minProductCount} позволит указать необходимое количество товара при задании акции. Для переменной укажем тип DOUBLE, так как количество товара может принимать дробные значения.

В выражении следует использовать нестрогое неравенство, чтобы указанное количество входило в интервал срабатывания условия.

Итоговое выражение будет выглядеть следующим образом:

Составление живого текста

Живой текст должен содержать описание выражения. В нашем случае можно выбрать вариант: "Количество товара в чеке из списка "Распродажа" больше, чем 5 шт".

В окне конструктора живого текста добавляем текст и переменные:

Настройка шаблона

Для настройки шаблона необходимо указать идентификатор, название и тип условия.

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

Название должно содержать максимум информации о шаблоне, но не быть при этом слишком длинным. Для нашего примера подойдет вариант: "Количество товаров из списка больше указанного количества".

Тип шаблона выбирается в соответствии с полученным выражением. Если в выражении используются объекты card, coupon или функции, использующие эти объекты, то выбирается тип "условие по карте" или "условие по купону". В нашем примере данные объекты не использовались, поэтому в типе указывается "общее условие".

Описание шаблона

При составлении описания шаблона необходимо указывать развернутое название. Для нашего примера подойдет вариант:

Пример описания

Количество товара в чеке из указанного списка товаров должно быть больше или равно указанному количеству.

При подсчете количества товаров не будут учитываться товары входящие в набор.

В качестве примеров можно привести варианты чеков из пункта "Описание требований".

  • No labels