Модель даних

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

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

     Щоб створити такий шаблон, потрібно не тільки знати синтаксис Razor, але й знати, які дані можна друкувати на чеках, надсилати в SMS та відображати у підказках. У цій статті розглядається модель таких даних.

     Базова модель є ядром таких даних і доступна в квитанціях (чеках), SMS та підказках незалежно від дій, що використовуються.

     Окрім базової моделі, кожна дія має власний набір властивостей, котрі можна використовувати для налаштування шаблону квитанції, SMS або підказки.

     Список властивостей, які можна використовувати в шаблонах Razor для певної дії, можна знайти в налаштуваннях дії, натиснувши кнопку Отримати поля моделі.

     Базова модель

     Властивості базової моделі доступні всюди: у квитанціях, SMS та всіх діях, де можна використовувати шаблон Razor.

НазваТип данихОпис
Властивості
OrganizationOrganizationІнформація про організацію
GuestGuestІнформація про гостя (необов’язкова)
CertificateCertificateІнформація про сертифікат (необов’язкова)
OrderOrderІнформація про замовлення.
Для дії “Відправити гостю СМС” у періодичних діях властивість недоступна
Методи
Counter (CounterMetric, CounterPeriod)stringОтримати значення метрики гостя із зазначенням валюти
NumericCounter (CounterMetric, CounterPeriod)decimalОтримати значення метрики гостя

     Доступні властивості

     Крім базової моделі в діях можна використовувати властивості, котрі доступні тільки для конкретної дії.

ДіяВластивістьТип данихОпис
Поповнити рахунок на відсоток від замовлення

Моделі:RefillWalletPercentActionChequeRefillWalletPercentActionSms
Поповнити рахунок на суму

Моделі:AdditionalBonusFixedSumActionChequeAdditionalBonusFixedSumActionSms
BalanceAfterdecimalБаланс рахунку після поповнення
BalanceAfterWithCurrencystringБаланс рахунку після поповнення із зазначенням валюти
BalanceBeforedecimalБаланс рахунку до поповнення
BalanceBeforeWithCurrency stringБаланс рахунку до поповнення із зазначенням валюти
ChequeGenerationModeChequeGenerationModeРежим генерації тексту. Використовується тільки у чеках
DeliveryDeliveryДоставка (властивість необов’язкова)
PercentdecimalКількість відсотків від замовлення, котра поступила на рахунок.
Доступна тільки у дії Поповнити рахунок на відсоток від замовлення 
SumdecimalСума до нарахування
SumWithCurrencystringСума до нарахування із зазначенням валюти
WalletWalletРахунок оплати (властивість необов’язкова)
Оплата з рахунку

Моделі:PaymentActionChequePaymentActionSms
BalanceAfterPaymentdecimalБаланс рахунку після оплати
BalanceAfterPaymentWithCurrencystringБаланс рахунку після оплати із зазначенням валюти
BalancedecimalБаланс рахунку
BalanceWithCurrencystringБаланс рахунку із зазначенням валюти
ChequeGenerationModeChequeGenerationModeРежим генерації тексту.
Використовується тільки у чеках
DeliveryDeliveryДоставка (властивість необов’язкова)
PayFromWalletOperationPayFromWalletOperationІнформація про транзакцію оплати
PaymentSumdecimalСума оплати з рахунку
PaymentSumWithCurrencystringСума оплати з рахунку із зазначенням валюти
WalletWalletРахунок оплати
Надрукувати інформацію на попередньому чеку, чеку і накладній про доставкуPrintChequeActionChequeChequeGenerationModeChequeGenerationModeРежим генерації тексту тільки у чеках
DeliveryDeliveryДоставка (властивість необов’язкова)
Надіслати гостеві SMS повідомленняSmsActionRazorModelДоступні лише властивості базової моделі.
У періодичних діях властивість Order недоступна
ПідказкаUpsellingTipSuggestionDeliveryDeliveryДоставка (властивість необов’язкова)

     Опис типів даних

     Детальний опис типів даних та їхні властивості, котрі перелічено в таблицях вище.

КласВластивостіТипи данихОпис
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Інформація про сертифікат
NumberstringНомер сертифіката
ComboItemInformationІнформація про комбо
ComboIdGuidId комбо (на стороні гостя)
SourceIdGuidSourceId комбо, до якого входить страва
GroupIdGuidId групи комбо, до якої належить страва
CounterMetricТип метрики (enum)
OrdersSum = 1Сума замовлень
OrdersCount = 2Кількість замовлень
PayFromWallet = 3Сума оплат з рахунку
CounterPeriodПеріод (enum)
AllTime = 0За весь час
Day = 11 день
Week = 27 днів (тиждень)
Month = 330 днів (місяць)
Quarter = 490 днів (квартал)
Year = 5365 днів (рік)
WeekBegin = 6З 1-го дня поточного тижня
MonthBegn = 7З 1-го дня поточного місяця
DeliveryДоставка
DeliveryDateDateTimeOffsetДата доставки
DeliveryTypeDeliveryTypeТип обслуговування (enum):Delivery = 0кур’єрська доставка

SelfPickup = 1самовивіз
MarketingSourcestringМаркетинове джерело (реклама)
SourceKeystringДжерело створення доставки
CitystringМісто
StreetstringВулиця
RegionstringРайон
GuestГість
NamestringІм’я
LastNamestringПрізвище
SexSexСтать
BirthdayDateTime?Дата народження
CategoriesIList<GuestCategory>Список категорій
UserWalletsIList<UserWallet>Список рахунків гостя
MagnetCardsIList<MagnetCard>Список карт гостя
TotalBalancedecimalЗагальний баланс рахунку гостя за всіма програмами лояльності
TotalProductBalancedecimalЗагальний баланс рахунку гостя тільки за продуктовими програмами
HasGuestCategory()booleanПовертає значенняtrueякщо гість належить до зазначеної категорії
MagnetCardДані картки гостя
TrackstringТрек магнітної картки
NumberstringНомер магнітної картки
OrderЗамовлення
ItemsIList<OrderItem>Список страв
OpenTimeDateTimeOffsetЧас створення замовлення
CloseTimeDateTimeOffsetЧас закриття замовлення
SumAfterDiscountdecimalСума замовлення з урахуванням застосованих знижок та надбавок
AuthTypeAuthTypeСпосіб автентифікації гостя
AuthCredentialstringСпосіб аутентифікації: номер телефону, номер картки, номер подарункової картки (сертифіката) тощо.
GetAuthInfo()stringДрук інформації про спосіб аутентифікації гостя на чеку
OrderItem Позиція замовлення
IdGuidId позиції замовлення
ParentIdGuidId батьківського елемента в дереві позицій замовлення. Може бути Id іншої позиції замовлення для модифікаторів, комлексної страви для половинок
ComboInformationComboInformationІнформація про комбо (поле необов’язкове)
ProductCodestringКод страви (артикул)
ProductNamestringНазва страви
ProductCategorystringКатегорія страви
SizestringРозмір страви
AmountdecimalКількість одиниць елемента замовлення
SumAfterDiscountdecimalВартість страви після застосування знижок з Syrve Office
CommentstringКоментар до страви
TypeOrderItemTypeТип позиції замовлення
OrderItemTypeТип позиції замовлення (enum)
ProductItemПроста позиція замовлення
CompoundComponentЧастина складеної страви
ModifierМодифікатор
CommonModifierЗагальний модифікатор страви, що складається з декількох частин
OrganizationОрганізація
NamestringНазва
CurrencyICurrencyВалюта
PayFromWalletOperationОперація оплати з рахунку
WalletWalletРахунок
UserWalletIdGuidІдентифікатор рахунку гостя
DayLimitdecimalДенний ліміт
WeekLimitdecimalТижневий ліміт
MonthLimitdecimalМісячний ліміт
AllowMinusBalanceboolДозвіл користування овердрафтом
RealBalancedecimalБаланс рахунку
PaymentLimitPaymentLimitМаксимальний розмір оплати для дії оплати:IsInteger (bool)Чи є обмеження цілочисельним

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

Sum (decimal)Максимальна сума для оплати
IsOfflineboolЧи здійснено оплату офлайн
ProgramTypeТип програми (enum)
Money = 0Грошова програма
Bonus = 1Бонусна програма
Product = 2Продуктова програма
Discount = 3Знижки, подарунки, комбо
Certificate = 4Сертифікатна програма
SexСтать (enum)
NotSpecifiedНе вказана
MaleЧоловіча
FemaleЖіноча
UserWalletІнформація про рахунок гостя
IdGuidID рахунку гостя
WalletWalletІнформація про рахунок
BalancedecimalБаланс рахунку
WalletІнформація про рахунок
NamestringНазва
IsIntegerboolОзнака цілочисельності
IsActiveboolЧи активна програма
ProgramTypeProgramTypeТип програми

     Методи форматування

     Абстрактним базовим класом для всіх кореневих шаблонних моделей, котрі будуть використовуватися для генерації чеків (квитацій), є 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;