MiDays: База знаний

Правила лояльности

Общая
MiDays UNO предоставляет очень широкий функционал настройки различных правил систем лояльности.
Правила лояльности можно настроить как мастером создания, так и используя скрипты.
Для того, чтобы включить работу с системой лояльности на рабочем месте, перейдите в настройки программы - Основные - Работа с системой лояльности - Включена.
Обратите внимание, все правила лояльности срабатывают только в момент перехода к оплате.
Чтобы просмотреть, как изменится операция после применения правила, нажмите F3 в фронте (или соответствующую кнопку в панели дополнительных кнопок) или поставьте галочку "Применить правила" в операции в бэке.
Для просмотра активных правил в фронте перейдите в панель дополнительных кнопок, все активные правила будут видны списком.

Создание правила лояльности

Для того, чтобы создать правило системы лояльности перейдите на вкладку "Общие", выберите "Система лояльности"
В открывшемся окне выберите условия для срабатывания правила на вкладке "Условия", перейдите на вкладку "Действия" и выберите, что должно происходить при срабатывании правила (условия и действия можно комбинировать)

Условия

Обратите внимание! Можно выбрать несколько условий, но все условия будут работать "вместе", то есть И одно И другое. В случае, если необходимо использовать ИЛИ одно ИЛИ другое, необходимо редактировать скрипт правила. Если редакция скрипта вызывает затруднения, в этом случае лучше создать несколько правил.
Товар - Указывает, для каких товаров должно сработать правило. Открывает справочник товаров для выбора. Выбрать можно несколько товаров.
Исключить товары - Указывает, для каких товаров не должно сработать правило. Открывает справочник товаров для выбора. Выбрать можно несколько товаров.
Группы товара - Указывает, для каких групп товаров должно сработать правило. Открывает справочник групп товаров. Выбрать можно несколько групп.
Исключить группы товара - Указывает, для каких групп товаров не должно сработать правило. Открывает справочник групп товаров. Выбрать можно несколько групп.
Партнёр - Указывает, для каких партнёров должно сработать правило. Открывает справочник партнёров. Выбрать можно несколько партнёров.
Группы партнёров - Указывает, для каких групп партнёров должно сработать правило. Открывает справочник групп партнёров. Выбрать можно несколько групп.
Оборот партнёра - Открывает окно выбора периода, за который необходимо вычислять оборот партнёра. Возможные значения:
  • Весь период.
  • Только за текущий месяц.
  • Только за прошлый месяц.
  • Прошлый + текущий месяц.
Объект - Указывает, для каких объектов должно сработать правило. Открывает справочник объектов для выбора. Выбрать можно несколько объектов.
Группы объектов - Указывает, для каких групп объектов должно сработать правило. Открывает справочник групп объектов. Выбрать можно несколько групп.
День рождения - Указывает, что правило должно сработать в день рождения партнёра (если день рождения указан в карточке партнёра)
Диапазон дат - Открывает окно выбора диапазона дат, в которые должно сработать правило.
Диапазон времени - Открывает окно выбора диапазона времени, в которое должно сработать правило.
Дни недели - Открывает окно выбора дней недели, в которые должно срабатывать правило.
Тип операции - Открывает окно выбора типа операции, для которой должно сработать правило.
Тип оплаты (для фронта) - Открывает окно выбора типа оплаты, с которым должно сработать правило. (Обратите внимание, чтобы правило сработало, необходимо нажать на кнопку с нужным типом оплаты, а не выбрать тип оплаты в окне оплат)
Количество товара в строке - Указывает, для какого количества товара в строке должно сработать правило. Открывает окно ввода количества и выбора условия сравнения (меньше, меньше или равно, равно, больше или равно, больше).
Количество товара из группы - Указывает, для какого количества товара из выбранной группы должно сработать правило. Открывает окно ввода количества и выбора условия сравнения (меньше, меньше или равно, равно, больше или равно, больше). Обратите внимание, данное условие обязательно должно сочетаться с условием выбора групп товаров.
Сумма документа с учётом скидки - Указывает сумму документа с учётом скидки, при которой должно сработать правило. Открывает окно ввода суммы и выбора условия сравнения (меньше, меньше или равно, равно, больше или равно, больше).
Сумма документа без учёта скидки - Указывает сумму документа без учёта скидки, при которой должно сработать правило. Открывает окно ввода суммы и выбора условия сравнения (меньше, меньше или равно, равно, больше или равно, больше).
[Скрипт] Скидка на каждый n проданный товар - Данное условие создаёт скрипт правила, очищая все предыдущие условия. Для редактирования условия перейдите на вкладку "Скрипт" и следуйте подсказкам в тексте. (подробнее)

Действия

Изменить бонусы - Указывает, сколько бонусов начислить партнёру. Открывает окно указания числа бонусов.
Изменить цену - Указывает, на какую цену менять цену в строке операции. Открывает окно ввода цены.
Изменить скидку - Указывает, как изменить скидку в строке операции. Открывает окно ввода скидки (обратите внимание, скидка вводится в процентах, максимально возможное значение 100)
Изменить СНО для операции - Указывает, на какую СНО изменить значение текущей СНО. Открывает окно выбора СНО.
Добавить товар в операцию - Указывает, какой товар добавить в операцию. Открывает окно выбора товара. (обратите внимание, добавить можно только один товар). После выбора товара перейдите на вкладку "Скрипт" и следуйте подсказкам в тексте. (подробнее)
Отправка чека на фиксированный e-mail - Указывает, на какой email отправить чек. Открывает окно ввода email.
Изменить НДС для товаров в операции - Указывает, на какую НДС изменить значение текущей НДС. Открывает окно выбора НДС.
MiDays UNO позволяет создавать правила лояльности практически любой сложности. Мастер правил лояльности поддерживает далеко не все возможности. Для того, чтобы создать правило под Ваши условия, необходимо изменять текст скрипта правила. При необходимости, обратитесь к Вашему автоматизатору.
Перед сохранением правила введите его название, при необходимости укажите период действия. Описание правила заполняется автоматически на основании выбранных условий и действий, при необходимости добавьте своё описание.
Для того, чтобы правило срабатывало на определённом объекте, выберите объект, в противном случае правило будет срабатывать на всех объектах.
Если правил создано несколько, и необходимо, чтобы они срабатывали в определённом порядке, задайте приоритет, чем больше приоритет, тем позднее сработает правило. Если приоритет не указывать, то правила будут срабатывать в порядке их создания (по идентификатору в базе данных).

Описание скриптов из мастера правил лояльности

Скидка на каждый n проданный товар

При выборе данного условия создаётся скрипт, который необходимо доработать самостоятельно. Обратите внимание, при доработке скрипта Вам может понадобиться помощь Вашего автоматизатора.
Подсветка C# кода с уменьшенным шрифтом
foreach(Operation dataRow in bsDataRows)
{
    // Укажите ID товара
    int GoodID = 1;
    // Укажите какое N количество попадет под условие
    decimal EveryQuantity = 6;
    // Укажите за какой период смотреть продажи: Year - за год, Month - за месяц, All - за всё время
    string Period = "Month";
    IsUsed = false;
    if(dataRow.GoodID != GoodID)
        continue;
    
    decimal TempRemnantQuantity = opData.Partner.GetRemnantQuantity(GoodID, EveryQuantity, Period);
    if(TempRemnantQuantity - dataRow.Quantity <= 0)
    {
        dataRow.Discount = dataRow.PriceOut / (dataRow.Quantity * dataRow.PriceOut) * 100;
        IsUsed = true;
    }
}
IsUsed = true;
return IsUsed;
    
Следуя подсказкам в тексте укажите:

GoodID - ID товара. Для того, чтобы узнать ID товара, перейдите в справочник товаров, отобразите столбец с ID товаров, найдите нужный товар. Так же ID товара можно узнать выполнив запрос к базе данных.
EveryQuantity - количество. Укажите, какое количество товаров попадает под условие.
Period - период. Укажите за какой период следует считать проданное количество товара. Возможные значения:
  • Year - год
  • Month - месяц
  • All - всё время.

Добавить товар в операцию

При выборе этого действия открывается окно выбора товара, который должен быть добавлен в операцию. Товар добавляется с Ценой 0 и количеством 1. Для изменения поведения программы при добавлении товара перейдите на вкладку "Скрипт" и следуйте подсказкам в тексте. Обратите внимание, при доработке скрипта Вам может понадобиться помощь Вашего автоматизатора.
Подсветка C# кода с уменьшенным шрифтом
// ID добавляемого товара
int goodID = 1;
// Количество добавляемого товара
decimal quantity = 1;
// Цена добавляемого товара
decimal priceOut = 0;

// Назначение параметра IsUsed необходимо указать в ранее выбранных условиях. 
// Данный текст if(IsUsed) можно прочитать как "Если отработали ранее выбранные условия условия."
// Если условия в правиле не используются, то данную проверку лучше убрать.
if(IsUsed)
{    
    var good = new Good_v3();
    good =   MiDaysData.Goods.FirstOrDefault(x=>x.ID == goodID);
    if(good.ID == 0)
        return false;
    // (НАЧАЛО) Не для редактирования
    var op          = (Operation)bsDataRows.AddNew();
    op.Good         = good;
    op.GroupID      = good.GroupID;
    op.Measure      = good.MeasureMain;
   op.VatGroupCode = good.VAT.Code;
    op.VatValue     = good.VAT.VatValue;
    // (КОНЕЦ) Не для редактирования

    // Имя в операции
    op.DisplayName  = good.DisplayName;
    // Имя для печати
    op.PrintName    = good.PrintName;
    // Количество товара
    op.Quantity     = quantity;
    // Цена товара
    op.PriceOut     = priceOut;
    // Скидки
    op.Discount     = 0;
}
IsUsed = true;
return IsUsed;
    
Следуя подсказкам в тексте укажите:

GoodID - ID товара. Заполняется автоматически при выборе товара из справочника. Для того, чтобы узнать ID товара, перейдите в справочник товаров, отобразите столбец с ID товаров, найдите нужный товар. Так же ID товара можно узнать выполнив запрос к базе данных.
quantity - количество. Укажите, какое количество товаров необходимо добавить в операцию.
priceOut - цена товара в операции. ПО умолчанию 0. Укажите, по какой цене должен быть продан добавляемый товар.

Так же при необходимости Вы можете изменить:
Имя товара, указав нужное значение в строке op.DisplayName, а также имя товара для печати (для бумажных документов) op.PrintName. Обратите внимание, значения имени необходимо указывать в двойных кавычках.
Скидку на товар. Для этого укажите числовое значение процента скидки в строке op.Discount.