Швидке переміщення по статті:


     У Syrve Loyalty, можна налаштовувати та використовувати шаблони Razor:

  • для друку квитанцій, гостьових рахунків і рахунків-фактур на доставку
  • для надсилання текстових повідомлень
  • для відображення підказок у Syrve POS

     Щоб створити такий шаблон, потрібно не тільки знати синтаксис 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):
  • Delivery = 0
    кур'єрська доставка

  • SelfPickup = 1
    самовивіз
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
Максимальний розмір оплати для дії оплати:
  • IsInteger (bool)
    Чи є обмеження цілочисельним

  • Count (int)
    Максимальна кількість для оплати

  • Sum (decimal)
    Максимальна сума для оплати
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)
Для метрики Кількість замовлень доступний лише період За весь час

 

     Розмітка тексту

     У шаблонах чеків та підказок можна використовувати мову розмітки, для форматування тексту.

     Щоб текст відображався коректно, його потрібно екранувати (оточити) спеціальними символами:

  • замість <&lt;
  • замість >&gt;

Приклад:

&lt;center&gt;Бонуси&lt;/center&gt;


Повернутись до розділу Програми