У Syrve Loyalty, можна налаштовувати та використовувати шаблони Razor:
Щоб створити такий шаблон, потрібно не тільки знати синтаксис Razor, але й знати, які дані можна друкувати на чеках, надсилати в SMS та відображати у підказках. У цій статті розглядається модель таких даних.
Базова модель є ядром таких даних і доступна в квитанціях (чеках), SMS та підказках незалежно від дій, що використовуються.
Окрім базової моделі, кожна дія має власний набір властивостей, котрі можна використовувати для налаштування шаблону квитанції, SMS або підказки.
Список властивостей, які можна використовувати в шаблонах Razor для певної дії, можна знайти в налаштуваннях дії, натиснувши кнопку Отримати поля моделі.
Властивості базової моделі доступні всюди: у квитанціях, SMS та всіх діях, де можна використовувати шаблон Razor.
Назва | Тип даних | Опис |
---|---|---|
Властивості | ||
Organization | Organization | Інформація про організацію |
Guest | Guest | Інформація про гостя (необов'язкова) |
Certificate | Certificate | Інформація про сертифікат (необов'язкова) |
Order | Order | Інформація про замовлення. Для дії "Відправити гостю СМС" у періодичних діях властивість недоступна |
Методи | ||
Counter (CounterMetric, CounterPeriod) | string | Отримати значення метрики гостя із зазначенням валюти |
NumericCounter (CounterMetric, CounterPeriod) | decimal | Отримати значення метрики гостя |
Крім базової моделі в діях можна використовувати властивості, котрі доступні тільки для конкретної дії.
Дія | Властивість | Тип даних | Опис |
Поповнити рахунок на відсоток від замовлення Моделі: RefillWalletPercentActionCheque RefillWalletPercentActionSms Поповнити рахунок на суму Моделі: AdditionalBonusFixedSumActionCheque AdditionalBonusFixedSumActionSms | BalanceAfter | decimal | Баланс рахунку після поповнення |
BalanceAfterWithCurrency | string | Баланс рахунку після поповнення із зазначенням валюти | |
BalanceBefore | decimal | Баланс рахунку до поповнення | |
BalanceBeforeWithCurrency | string | Баланс рахунку до поповнення із зазначенням валюти | |
ChequeGenerationMode | ChequeGenerationMode | Режим генерації тексту. Використовується тільки у чеках | |
Delivery | Delivery | Доставка (властивість необов'язкова) | |
Percent | decimal | Кількість відсотків від замовлення, котра поступила на рахунок. Доступна тільки у дії Поповнити рахунок на відсоток від замовлення | |
Sum | decimal | Сума до нарахування | |
SumWithCurrency | string | Сума до нарахування із зазначенням валюти | |
Wallet | Wallet | Рахунок оплати (властивість необов'язкова) | |
Оплата з рахунку Моделі: PaymentActionCheque PaymentActionSms | BalanceAfterPayment | decimal | Баланс рахунку після оплати |
BalanceAfterPaymentWithCurrency | string | Баланс рахунку після оплати із зазначенням валюти | |
Balance | decimal | Баланс рахунку | |
BalanceWithCurrency | string | Баланс рахунку із зазначенням валюти | |
ChequeGenerationMode | ChequeGenerationMode | Режим генерації тексту. Використовується тільки у чеках | |
Delivery | Delivery | Доставка (властивість необов'язкова) | |
PayFromWalletOperation | PayFromWalletOperation | Інформація про транзакцію оплати | |
PaymentSum | decimal | Сума оплати з рахунку | |
PaymentSumWithCurrency | string | Сума оплати з рахунку із зазначенням валюти | |
Wallet | Wallet | Рахунок оплати | |
Надрукувати інформацію на попередньому чеку, чеку і накладній про доставкуPrintChequeActionCheque | ChequeGenerationMode | ChequeGenerationMode | Режим генерації тексту тільки у чеках |
Delivery | Delivery | Доставка (властивість необов'язкова) | |
Надіслати гостеві SMS повідомленняSmsActionRazorModel | Доступні лише властивості базової моделі. У періодичних діях властивість Order недоступна | ||
ПідказкаUpsellingTipSuggestion | Delivery | Delivery | Доставка (властивість необов'язкова) |
Детальний опис типів даних та їхні властивості, котрі перелічено в таблицях вище.
Клас | Властивості | Типи даних | Опис |
---|---|---|---|
AuthType | Спосіб авторизації гостя у замовленні (enum) | ||
None = 0 | Не має | ||
CardTrack = 1 | За треком карти | ||
CardNumber = 2 | За номером картки | ||
Phone = 3 | За номером телефону | ||
FindFaceId = 4 | За FindFaceId (не використовується) | ||
Certificate = 5 | За номером сертифіката | ||
Email = 6 | По електронній пошті | ||
ChequeGenerationMode | Режим генерації тексту для чеків (enum) | ||
Bill = 1 | Згенерувати текст для пречека | ||
CashRegister = 2 | Згенерувати текст для касового чека | ||
DeliveryBill = 3 | Згенерувати текст для накладної доставки | ||
Certificate | Інформація про сертифікат | ||
Number | string | Номер сертифіката | |
ComboItemInformation | Інформація про комбо | ||
ComboId | Guid | Id комбо (на стороні гостя) | |
SourceId | Guid | SourceId комбо, до якого входить страва | |
GroupId | Guid | Id групи комбо, до якої належить страва | |
CounterMetric | Тип метрики (enum) | ||
OrdersSum = 1 | Сума замовлень | ||
OrdersCount = 2 | Кількість замовлень | ||
PayFromWallet = 3 | Сума оплат з рахунку | ||
CounterPeriod | Період (enum) | ||
AllTime = 0 | За весь час | ||
Day = 1 | 1 день | ||
Week = 2 | 7 днів (тиждень) | ||
Month = 3 | 30 днів (місяць) | ||
Quarter = 4 | 90 днів (квартал) | ||
Year = 5 | 365 днів (рік) | ||
WeekBegin = 6 | З 1-го дня поточного тижня | ||
MonthBegn = 7 | З 1-го дня поточного місяця | ||
Delivery | Доставка | ||
DeliveryDate | DateTimeOffset | Дата доставки | |
DeliveryType | DeliveryType | Тип обслуговування (enum):
| |
MarketingSource | string | Маркетинове джерело (реклама) | |
SourceKey | string | Джерело створення доставки | |
City | string | Місто | |
Street | string | Вулиця | |
Region | string | Район | |
Guest | Гість | ||
Name | string | Ім'я | |
LastName | string | Прізвище | |
Sex | Sex | Стать | |
Birthday | DateTime? | Дата народження | |
Categories | IList<GuestCategory> | Список категорій | |
UserWallets | IList<UserWallet> | Список рахунків гостя | |
MagnetCards | IList<MagnetCard> | Список карт гостя | |
TotalBalance | decimal | Загальний баланс рахунку гостя за всіма програмами лояльності | |
TotalProductBalance | decimal | Загальний баланс рахунку гостя тільки за продуктовими програмами | |
HasGuestCategory() | boolean | Повертає значенняtrueякщо гість належить до зазначеної категорії | |
MagnetCard | Дані картки гостя | ||
Track | string | Трек магнітної картки | |
Number | string | Номер магнітної картки | |
Order | Замовлення | ||
Items | IList<OrderItem> | Список страв | |
OpenTime | DateTimeOffset | Час створення замовлення | |
CloseTime | DateTimeOffset | Час закриття замовлення | |
SumAfterDiscount | decimal | Сума замовлення з урахуванням застосованих знижок та надбавок | |
AuthType | AuthType | Спосіб автентифікації гостя | |
AuthCredential | string | Спосіб аутентифікації: номер телефону, номер картки, номер подарункової картки (сертифіката) тощо. | |
GetAuthInfo() | string | Друк інформації про спосіб аутентифікації гостя на чеку | |
OrderItem | Позиція замовлення | ||
Id | Guid | Id позиції замовлення | |
ParentId | Guid | Id батьківського елемента в дереві позицій замовлення. Може бути Id іншої позиції замовлення для модифікаторів, комлексної страви для половинок | |
ComboInformation | ComboInformation | Інформація про комбо (поле необов'язкове) | |
ProductCode | string | Код страви (артикул) | |
ProductName | string | Назва страви | |
ProductCategory | string | Категорія страви | |
Size | string | Розмір страви | |
Amount | decimal | Кількість одиниць елемента замовлення | |
SumAfterDiscount | decimal | Вартість страви після застосування знижок з Syrve Office | |
Comment | string | Коментар до страви | |
Type | OrderItemType | Тип позиції замовлення | |
OrderItemType | Тип позиції замовлення (enum) | ||
ProductItem | Проста позиція замовлення | ||
CompoundComponent | Частина складеної страви | ||
Modifier | Модифікатор | ||
CommonModifier | Загальний модифікатор страви, що складається з декількох частин | ||
Organization | Організація | ||
Name | string | Назва | |
Currency | ICurrency | Валюта | |
PayFromWalletOperation | Операція оплати з рахунку | ||
Wallet | Wallet | Рахунок | |
UserWalletId | Guid | Ідентифікатор рахунку гостя | |
DayLimit | decimal | Денний ліміт | |
WeekLimit | decimal | Тижневий ліміт | |
MonthLimit | decimal | Місячний ліміт | |
AllowMinusBalance | bool | Дозвіл користування овердрафтом | |
RealBalance | decimal | Баланс рахунку | |
PaymentLimit | PaymentLimit | Максимальний розмір оплати для дії оплати:
| |
IsOffline | bool | Чи здійснено оплату офлайн | |
ProgramType | Тип програми (enum) | ||
Money = 0 | Грошова програма | ||
Bonus = 1 | Бонусна програма | ||
Product = 2 | Продуктова програма | ||
Discount = 3 | Знижки, подарунки, комбо | ||
Certificate = 4 | Сертифікатна програма | ||
Sex | Стать (enum) | ||
NotSpecified | Не вказана | ||
Male | Чоловіча | ||
Female | Жіноча | ||
UserWallet | Інформація про рахунок гостя | ||
Id | Guid | ID рахунку гостя | |
Wallet | Wallet | Інформація про рахунок | |
Balance | decimal | Баланс рахунку | |
Wallet | Інформація про рахунок | ||
Name | string | Назва | |
IsInteger | bool | Ознака цілочисельності | |
IsActive | bool | Чи активна програма | |
ProgramType | ProgramType | Тип програми |
Абстрактним базовим класом для всіх кореневих шаблонних моделей, котрі будуть використовуватися для генерації чеків (квитацій), є TemplateBase. Клас містить функції для стандартного форматування даних. Кожен шаблон неявно успадковується від класу TemplateBase та надає доступ до методів форматування.
Функція | Опис | |
---|---|---|
Методи | string FormatAmount(decimal amount) | Формат кількості |
string FormatMoney(decimal price, ICurrency currency) | Формат ціни - "123,45" | |
string FormatMoneyMin(decimal price, ICurrency currency) | Формат ціни "123,45" або "123", якщо значення ціле | |
string FormatPercent(decimal percent) | Формат у відсотках | |
Формат часу | string FormatTime(DateTime time) | HH:mm |
string FormatLongTime(DateTime time) | HH:mm:ss | |
string FormatLongDateTime(DateTime dateTime) | dd.MM.yyyy HH:mm | |
string FormatFullDateTime(DateTime dateTime) | d MMM HH:mm | |
string FormatDate(DateTime dateTime) | dd.MM.yyyy | |
string FormatDateTimeCustom(DateTime dateTime, string format) | Довільний формат | |
Отримання метрик | string Counter(CounterMetric metric, CounterPeriod period) | Отримує метрики вказаного типу за вказаний період у вигляді рядка. Якщо гість не зареєстрований або період недоступний для метрик, метод повертає порожній рядок. Приклад використання: @Model.Counter(CounterMetric.OrdersSum, CounterPeriod.Month) @Model.Counter(CounterMetric.OrdersCount, CounterPeriod.AllTime)Для метрики Кількість замовлень доступний лише період За весь час |
decimal NumericCounter(CounterMetric metric, CounterPeriod period) | Отримує метрики вказаного типу станом на вказаний період у вигляді числа. Якщо гість не зареєстрований або період недоступний для отримання метрик, метод повертає порожній рядок. Приклад використання: @Model. NumericCounter (CounterMetric.OrdersSum, CounterPeriod.Month) @Model. NumericCounter (CounterMetric.OrdersCount, CounterPeriod.AllTime)Для метрики Кількість замовлень доступний лише період За весь час |
У шаблонах чеків та підказок можна використовувати мову розмітки, для форматування тексту.
Щоб текст відображався коректно, його потрібно екранувати (оточити) спеціальними символами:
Приклад:
<center>Бонуси</center>