ПрограмаЛояльності: відмінності між версіями
Рядок 41: | Рядок 41: | ||
• string[30] ShortCardNumber - короткий номер картки, за повним збігом якого (за наявності) шукають магнітну картку, що належить учаснику програми лояльності. | • string[30] ShortCardNumber - короткий номер картки, за повним збігом якого (за наявності) шукають магнітну картку, що належить учаснику програми лояльності. | ||
• string[30] PhoneNumber - номер телефону, перевіряє збіг за останніми 9 цифрами з контактом або компанією програмою лояльності | • string[30] PhoneNumber - номер телефону, перевіряє збіг за останніми 9 цифрами з контактом або компанією програмою лояльності | ||
• int? PersonID - ІД персони Результат функції: | • int? PersonID - ІД персони | ||
'''Результат функції:''' | |||
• string Error - опис помилки, що виникла | • string Error - опис помилки, що виникла | ||
• eWallet[] eWallets - масив описів електронних гаманців eWallet. Елементи масиву структури з такими полями: | • eWallet[] eWallets - масив описів електронних гаманців eWallet. Елементи масиву структури з такими полями: | ||
Рядок 71: | Рядок 73: | ||
За вхідними даними система шукає учасників, інформацію про них і налаштування програми лояльності в базі даних. | За вхідними даними система шукає учасників, інформацію про них і налаштування програми лояльності в базі даних. | ||
Після чого повертаємо результат функції, заповнюючи відповідні поля. | Після чого повертаємо результат функції, заповнюючи відповідні поля. | ||
==Discount_Transaction_eWallet_Request== | |||
Метод виконує запит інформації щодо можливості надання знижки за ID магнітної картки та списком транзакцій. | |||
Метод підходить для POS і HMS. | |||
'''Вхідні параметри:''' | |||
• int MagneticCardID - ID магнітної картки програми лояльності. | |||
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) | |||
• Transaction[] Transactions - масив транзакцій структур Transaction. Структура Transaction має такі поля: | |||
◦ decimal Sum - сума транзакції. o DateTime TransactionDate - дата проведення транзакції в POS-системі. o int ServiceGroupCode - код групи послуг POS-системи. | |||
◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) | |||
◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) | |||
◦ int BillitemID - ідентифікатор позиції рахунку | |||
'''Результат функції:''' | |||
• string Error - опис помилки, що виникла. | |||
• int eWalletID - ID учасника програми лояльності, якому належить картка із запиту. | |||
• int MagneticCardID - ID учасника програми лояльності, якому належить картка із запиту. | |||
• string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту. | |||
• DiscountTransaction[] DiscountTransactions - масив транзакцій для отримання знижки структур DiscountTransaction. Структура DiscountTransaction має такі поля: | |||
◦ DateTime TransactionDate - дата проведення транзакції. | |||
◦ decimal Sum - сума транзакції. o int ServiceGroupCode - код групи послуг POS-системи. | |||
◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. | |||
◦ decimal Discount - величина знижки у валюті. | |||
◦ decimal DiscountSum - сума транзакції з урахуванням знижки. | |||
◦ string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. | |||
◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Порожнє поле) | |||
◦ string ErrorTransaction - опис помилки, що виникла для конкретної транзакції (Порожнє поле) | |||
◦ int BillitemID - ідентифікатор позиції рахунку | |||
Спочатку відбувається перевірка на дисконтний тип програми, якщо ні - повертаємо помилку. | |||
Далі за MagneticCardID система шукає карту в базі даних, якщо такої немає або вона неактивна, повертає помилку. Якщо карта є і вона активна, то система розраховує знижки для транзакцій. | |||
Після чого повертаємо результат функції, заповнюючи відповідні поля. | |||
==Discount_Transaction_eWallet_Accept== | |||
Метод виконує підтвердження надання знижки за ID магнітної картки та списком транзакцій. Метод підходить для POS і HMS. | |||
'''Вхідні параметри:''' | |||
• int MagneticCardID - ID магнітної картки програми лояльності. | |||
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) | |||
• int? BillID - ідентифікатор рахунку | |||
• int BaseExternalID - ідентифікатор зовнішньої системи | |||
• DiscountTransaction[] DiscountTransactions - масив транзакцій для отримання знижки структур DiscountTransaction. Структура DiscountTransaction має такі поля: o decimal Sum - сума транзакції. | |||
◦ decimal DiscountSum - сума транзакції зі знижкою. (Не впливає на виконання запиту) | |||
◦ DateTime TransactionDate - дата проведення транзакції. | |||
◦ int ServiceGroupCode - код групи послуг POS системи. (Не впливає на виконання запиту) | |||
◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) | |||
◦ decimal Discount - величина знижки у валюті. (Не впливає на виконання запиту) | |||
◦ string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. (Не впливає на виконання запиту) | |||
◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) | |||
◦ десяткова? Quantity - кількість o string ErrorTransaction - опис виниклої помилки для конкретної транзакції. (Не впливає на виконання запиту) | |||
◦ TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля: | |||
▪ int BillID - ID рахунку в POS-системі | |||
▪ DateTime BillDate - Дата створення рахунку | |||
▪ int CurrencyCode - Міжнародний код валюти оплати | |||
▪ string ReceiptType - Тип чека | |||
▪ decimal ReceiptSum - Сума чека | |||
▪ string PaymentType - Назва типу оплати | |||
▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля: | |||
• int ItemID - ID нарахування | |||
• int ServiceCode - Код послуги | |||
• string Name - Назва послуги | |||
• string ClassName - Назва класу послуги | |||
• string ClassCode - Код класу послуги | |||
• string SubClassName - Назва підкласу послуги | |||
• string SubClassCode - Код підкласу послуги | |||
• decimal Price - Ціна позиції | |||
• decimal Quantity - Кількість - Кількість | |||
• decimal Total - Підсумкова вартість | |||
'''Результат функції:''' | |||
• string Error - опис помилки, що виникла. | |||
• int MagneticCardID - ID магнітної картки програми лояльності із запиту | |||
• int eWalletID - ID учасника програми лояльності, якому належить картка із запиту | |||
• string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту | |||
• decimal PayBonuses - загальна сума знижки за транзакціями із запиту | |||
Спочатку відбувається перевірка на дисконтний тип програми, якщо ні - повертаємо помилку. | |||
Далі за MagneticCardID система шукає картку в базі даних, якщо такої немає, повертає помилку про відсутність такої картки. Якщо картка є, то система бере учасника за даними з картки, розраховує знижки для транзакцій, додає транзакції в базу даних і оновлює інформацію про учасника в базі даних. | |||
Після чого повертаємо результат функції, заповнюючи відповідні поля. | |||
==Return_Discount_Transaction_eWallet_Request== | |||
Метод виконує запит інформації щодо можливості повернення транзакцій зі знижкою за ID магнітної картки та списком транзакцій. | |||
Метод підходить для HMS. | |||
'''Вхідні параметри:''' | |||
• int MagneticCardID - ID магнітної картки програми лояльності. | |||
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) | |||
• Transaction[] Transactions - масив транзакцій структур Transaction. Структура Transaction має такі поля: | |||
◦ decimal Sum - сума транзакції. | |||
◦ DateTime TransactionDate - дата проведення транзакції в POS системі. (Не впливає на виконання запиту) | |||
◦ int ServiceGroupCode - код групи послуг POS-системи. | |||
◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) | |||
◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) | |||
◦ decimal DiscountSum - сума транзакції зі знижкою. (Не впливає на виконання запиту) | |||
◦ decimal Discount - величина знижки у валюті. (Не впливає на виконання запиту) | |||
◦ string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. (Не впливає на виконання запиту) o десяткова? Quantity - кількість | |||
string ErrorTransaction - опис виниклої помилки для конкретної транзакції. (Не впливає на виконання запиту) | |||
◦ TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля: | |||
▪ int BillID - ID рахунку в POS-системі | |||
▪ DateTime BillDate - Дата створення рахунку | |||
▪ int CurrencyCode - Міжнародний код валюти оплати | |||
▪ string ReceiptType - Тип чека | |||
▪ decimal ReceiptSum - Сума чека | |||
▪ string PaymentType - Назва типу оплати | |||
▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля: | |||
• int ItemID - ID нарахування | |||
• int ServiceCode - Код послуги | |||
• string Name - Назва послуги | |||
• string ClassName - Назва класу послуги | |||
• string ClassCode - Код класу послуги | |||
• string SubClassName - Назва підкласу послуги | |||
• string SubClassCode - Код підкласу послуги | |||
• decimal Price - Ціна позиції | |||
• decimal Quantity - Кількість - Кількість | |||
• decimal Total - Підсумкова вартість | |||
'''Результат функції:''' | |||
• string Error - опис помилки, що виникла. | |||
• int eWalletID - ID учасника програми лояльності, якому належить картка із запиту. | |||
• int MagneticCardID - ID учасника програми лояльності, якому належить картка із запиту. | |||
• string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту. | |||
• bool IsOTPNeed - ознака необхідності підтвердження операції паролем/пін-кодом (Завжди false) | |||
• DiscountTransaction[] DiscountTransactions - масив транзакцій для отримання знижки структур DiscountTransaction. Структура DiscountTransaction має такі поля: | |||
• DateTime TransactionDate - дата проведення транзакції. | |||
• decimal Sum - сума транзакції. o int ServiceGroupCode - код групи послуг POS-системи. o string[30] POSsystemAccount - Л/Рахунок у POS системі. o decimal Discount - величина знижки у валюті. o decimal DiscountSum - сума транзакції з урахуванням знижки. | |||
• string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. | |||
string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Порожнє поле) | |||
• string ErrorTransaction - опис помилки, що виникла для конкретної транзакції (Порожнє поле) | |||
• TransactionDetails Details - деталізація позицій рахунку. Структура TransactionDetails має такі поля: | |||
▪ int BillID - ID рахунку в POS-системі | |||
▪ DateTime BillDate - Дата створення рахунку | |||
▪ int CurrencyCode - Міжнародний код валюти оплати | |||
▪ string ReceiptType - Тип чека | |||
▪ decimal ReceiptSum - Сума чека | |||
▪ string PaymentType - Назва типу оплати | |||
▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля: | |||
◦ int ItemID - ID нарахування | |||
◦ int ServiceCode - Код послуги | |||
◦ string Name - Назва послуги | |||
◦ string ClassName - Назва класу послуги | |||
◦ string ClassCode - Код класу послуги | |||
◦ string SubClassName - Назва підкласу послуги | |||
◦ string SubClassCode - Код підкласу послуги | |||
◦ decimal Price - Ціна позиції | |||
◦ decimal Quantity - Кількість - Кількість | |||
◦ decimal Total - Підсумкова вартість | |||
Спочатку відбувається перевірка на дисконтний тип програми, якщо ні - повертаємо помилку. | |||
Далі за MagneticCardID система шукає карту в базі даних, якщо такої немає або вона неактивна, повертає помилку. Якщо карта є і вона активна, то система розраховує знижку для транзакцій. | |||
Після чого повертаємо результат функції, заповнюючи відповідні поля. | |||
==Return_Discount_Transaction_eWallet_Accept== | |||
Метод виконує підтвердження повернення зі знижкою за ID магнітної картки та списком транзакцій. | |||
Метод підходить для HMS. | |||
'''Вхідні параметри:''' | |||
• int MagneticCardID - ID магнітної картки програми лояльності. | |||
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) | |||
• string CodeOTP - пароль/пін-код підтвердження операції. (Не впливає на виконання запиту) | |||
• DiscountTransaction[] DiscountTransactions - масив транзакцій для отримання знижки структур DiscountTransaction. Структура DiscountTransaction має такі поля: | |||
decimal Sum - сума транзакції. | |||
◦ decimal DiscountSum - сума транзакції зі знижкою. (Не впливає на виконання запиту) | |||
◦ DateTime TransactionDate - дата проведення транзакції. o int ServiceGroupCode - код групи послуг POS-системи. | |||
◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) | |||
◦ decimal Discount - величина знижки у валюті. (Не впливає на виконання запиту) | |||
◦ string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. (Не впливає на виконання запиту) | |||
◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) | |||
◦ string ErrorTransaction - опис виниклої помилки для конкретної транзакції. (Не впливає на виконання запиту) | |||
◦ TransactionDetails Details - деталізація позицій рахунку. Структура TransactionDetails має такі поля: | |||
▪ int BillID - ID рахунку в POS-системі | |||
▪ DateTime BillDate - Дата створення рахунку | |||
▪ int CurrencyCode - Міжнародний код валюти оплати | |||
▪ string ReceiptType - Тип чека | |||
▪ decimal ReceiptSum - Сума чека | |||
▪ string PaymentType - Назва типу оплати | |||
▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля: | |||
• int ItemID - ID нарахування | |||
• int ServiceCode - Код послуги | |||
• string Name - Назва послуги | |||
• string ClassName - Назва класу послуги | |||
• string ClassCode - Код класу послуги | |||
• string SubClassName - Назва підкласу послуги | |||
• string SubClassCode - Код підкласу послуги | |||
• decimal Price - Ціна позиції | |||
• decimal Quantity - Кількість - Кількість | |||
• decimal Total - Підсумкова вартість | |||
'''Результат функції:''' | |||
• string Error - опис помилки, що виникла. | |||
• int MagneticCardID - ID магнітної картки програми лояльності із запиту | |||
• int eWalletID - ID учасника програми лояльності, якому належить картка із запиту | |||
• string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту | |||
• decimal Discount - загальна сума знижки за транзакціями із запиту | |||
Спочатку відбувається перевірка на дисконтний тип програми, якщо ні - повертаємо помилку. | |||
Далі за MagneticCardID система шукає картку в базі даних, якщо такої немає, повертає помилку про відсутність такої картки. Якщо картка є, то система бере учасника за даними з картки, додає транзакції повернення з дисконтним типом і оновлює інформацію про учасника в базі даних. | |||
Після чого повертаємо результат функції, заповнюючи відповідні поля. | |||
==Add_eWallet_Bonuses_Request== | |||
Метод виконує запит інформації щодо можливості нарахування бонусів за ID магнітної картки та списком транзакцій. | |||
Метод підходить для HMS. | |||
'''Вхідні параметри:''' | |||
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) | |||
• int MagneticCardID - ID магнітної картки | |||
• int CustomerType - тип замовника в POS системі (Не впливає на виконання запиту) | |||
• int CustomerID - ID замовника в POS системі (Не впливає на виконання запиту) | |||
• Transaction[] Transactions - масив транзакцій структур Transaction. Структура Transaction має такі поля: | |||
◦ DateTime TransactionDate - дата проведення транзакції в POS системі (Не впливає на виконання запиту) | |||
◦ int ServiceGroupCode - код групи послуг POS системи o decimal Quantity - кількість послуг за транзакцією o decimal Sum - сума транзакції o string[30] POSsystemAccount - Л/Рахунок у POS системі (Не впливає на виконання запиту) | |||
◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) | |||
◦ string ServiceProviderName - Найменування постачальника послуг (Не впливає на виконання запиту) | |||
◦ string ServiceProviderID - ID постачальника послуг у POS системі (Не впливає на виконання запиту) | |||
◦ TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля: | |||
▪ int BillID - ID рахунку в POS-системі | |||
▪ DateTime BillDate - Дата створення рахунку | |||
▪ int CurrencyCode - Міжнародний код валюти оплати | |||
▪ string ReceiptType - Тип чека | |||
decimal ReceiptSum - Сума чека | |||
▪ string PaymentType - Назва типу оплати | |||
▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля: | |||
• int ItemID - ID нарахування | |||
• int ServiceCode - Код послуги | |||
• string Name - Назва послуги | |||
• string ClassName - Назва класу послуги | |||
• string ClassCode - Код класу послуги | |||
• string SubClassName - Назва підкласу послуги | |||
• string SubClassCode - Код підкласу послуги | |||
• decimal Price - Ціна позиції | |||
• decimal Quantity - Кількість - Кількість | |||
• decimal Total - Підсумкова вартість | |||
'''Результат функції:''' | |||
• int eWalletID - ID учасника програми лояльності, якому належить картка із запиту | |||
• int MagneticCardID - ID магнітної картки | |||
• string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту | |||
• decimal BonusBalance - поточний бонусний баланс електронного гаманця | |||
• Transaction[] Transactions - масив транзакцій Transaction, за якими можливо виконати нарахування бонусів. Структура Transaction має такі поля: | |||
• DateTime TransactionDate - дата проведення транзакції в POS-системі | |||
(Порожнє поле) o int ServiceGroupCode - код групи послуг POS системи o decimal Quantity - кількість послуг за транзакцією o decimal Sum - сума транзакції o string[30] POSsystemAccount - Л/Рахунок у POS системі o string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Порожнє поле) | |||
• string ServiceProviderName - Найменування постачальника послуг o string ServiceProviderID - ID постачальника послуг у POS-системі o TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля: | |||
▪ int BillID - ID рахунку в POS-системі | |||
▪ DateTime BillDate - Дата створення рахунку | |||
▪ int CurrencyCode - Міжнародний код валюти оплати | |||
▪ string ReceiptType - Тип чека | |||
▪ decimal ReceiptSum - Сума чека | |||
▪ string PaymentType - Назва типу оплати | |||
▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля: | |||
◦ int ItemID - ID нарахування | |||
◦ int ServiceCode - Код послуги | |||
◦ string Name - Назва послуги | |||
◦ string ClassName - Назва класу послуги | |||
◦ string ClassCode - Код класу послуги | |||
◦ string SubClassName - Назва підкласу послуги | |||
◦ string SubClassCode - Код підкласу послуги | |||
◦ decimal Price - Ціна позиції | |||
◦ decimal Quantity - Кількість - Кількість | |||
◦ decimal Total - Підсумкова вартість | |||
◦ string Error - опис помилки, що виникла | |||
◦ bool IsOTPNeed - ознака необхідності підтвердження операції паролем/пін-кодом | |||
Спочатку відбувається перевірка на бонусний тип програми, якщо ні - повертаємо помилку. | |||
Далі за MagneticCardID система шукає карту в базі даних, якщо такої немає або вона неактивна, повертає помилку. Якщо картка є і вона активна, то система розраховує кількість бонусів для транзакцій. | |||
Після чого повертаємо результат функції, заповнюючи відповідні поля. | |||
==Add_eWallet_Bonuses== | |||
Метод здійснює нарахування бонусів учаснику програми лояльності за ID магнітної картки та списком транзакцій. | |||
Метод підходить для POS і HMS. | |||
'''Вхідні параметри:''' | |||
• int MagneticCardID - ID магнітної картки. | |||
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) | |||
• POSServiceProvider[] POSServiceProviders - Список сервіс провайдерів, які беруть участь в операції. (Опціонально). Структура POSServiceProvider має такі поля: | |||
◦ string POSSProviderID - ID постачальника послуг у POS системі o string CompanyName - Назва компанії o bool IsCompany - Компанія чи фізособа o рядок AddressLegal - Юридична адреса o рядок ITN - ІПН o string TaxIDCode - ЄДРПОУ(У) o string JobPosition - Посада для підпису (наприклад: Директор) o string Employee - Прізвище та ініціали для підпису (наприклад Пупкін В.П.) o string AffilateCode - Код філії, якщо є o string Bank_MFO - МФО банку з реквізитів рахунку o string Bank_Name - Назва банку з реквізитів рахунку o string Bank_Account - Рахунок у банку | |||
◦ з реквізитів рахунку o string IBAN - IBAN з реквізитів рахунку, якщо є o string NDSNumber - Номер свідоцтва платника ПДВ, якщо є | |||
• Transaction[] Transactions - масив транзакцій для нарахування бонусів Transaction. | |||
Структура Transaction має такі поля: o decimal Sum - сума транзакції. o DateTime TransactionDate - дата проведення транзакції в POS-системі. | |||
◦ int ServiceGroupCode - код групи послуг POS-системи. | |||
◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) | |||
◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) | |||
◦ десяткова? Quantity - кількість o TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля: | |||
▪ int BillID - ID рахунку в POS-системі | |||
▪ DateTime BillDate - Дата створення рахунку | |||
▪ int CurrencyCode - Міжнародний код валюти оплати | |||
▪ string ReceiptType - Тип чека | |||
▪ decimal ReceiptSum - Сума чека | |||
▪ string PaymentType - Назва типу оплати | |||
▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля: | |||
• int ItemID - ID нарахування | |||
• int ServiceCode - Код послуги | |||
• string Name - Назва послуги | |||
• string ClassName - Назва класу послуги | |||
• string ClassCode - Код класу послуги | |||
• string SubClassName - Назва підкласу послуги | |||
• string SubClassCode - Код підкласу послуги | |||
• decimal Price - Ціна позиції | |||
• decimal Quantity - Кількість - Кількість | |||
• decimal Total - Підсумкова вартість Результат функції: | |||
• int MagneticCardID - ID магнітної картки програми лояльності із запиту. | |||
• int eWalletID - ID учасника програми лояльності, якому належить картка із запиту. | |||
• string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту | |||
• decimal AddedBonuses - кількість нарахованих бонусів за транзакції | |||
• decimal BonusBalance - поточний бонусний баланс електронного гаманця | |||
• string Error - опис помилки, що виникла |
Версія за 08:22, 19 травня 2025
API ServioLoyaltyService
Опис взаємодії
Взаємодія системи HMS Servio і Servio Restaurant із процесинговим центром відбуватиметься через звернення цих систем до WCF служби процесингу за протоколом JSON, кодування передавання даних UTF8, методом POST. Для цього протоколу всі типи і значення повинні передаватися в текстовому поданні. Тому необхідно використовувати такі формати для текстового представлення даних таких типів:
1. datetime - строкове подання дати у форматі "yyyy-MM-dd HH:mm:ss" 2. decimal - 18.2 - використовується округлення до 2х знаків після коми, як роздільник цілої та дробової частини виступає "." (крапка) 3. int - стандартне десяткове строкове подання цілого числа 4. string[N] - обмежений за розміром рядок, розмір рядка плаваючий від 0 до N символів. 5. string - необмежений за розміром рядок, розмір рядка плаваючий від 0 до 8000 символів. 6. bool - строкове представлення логічного типу, де "1" - істина (true), "0" - брехня (false)
Приклад запиту і відповіді у форматі JSON: запит POST http://localhost:8000/ServioLoyaltyService/PayBonusesRequest Content-Type: application/json; charset=utf-8 Host: localhost:8000 Content-Length: 241 Connection: Keep-Alive {"MagneticCardID": "5", "Transactions":[{"Sum": "300.3", "ServiceGroupID": "3"}]} результат HTTP/1.1 200 OK Content-Length: 186 Content-Type: application/json; charset=utf-8 Сервер: Microsoft-HTTPAPI/2.0 Дата: Wed, 06 Sep 2023 11:58:56 GMT {"Error":null,"MagneticCardID":5,"BonusBalance":0.00,"UserName":"666 666","Transactions":[{"BonusesToPay":0.00,"ServiceGroupID":3,"Sum":300.3,"TransactionDate": "2023-09-06 14:58:56"}]}
Функції протоколу
Протокол обміну представлений у вигляді окремих відкритих функцій, до яких може будьякий клієнт POS системи.
Get_eWallet_Info
Метод за номером магнітної картки та\або ідентифікатором компанії та\або кодом бронювання та\або коротким номером картки з програмою лояльності повертає інформацію щодо картки, учасника, якому вона належить, транзакцій і налаштувань програми лояльності. Метод підходить для POS і HMS.
Вхідні параметри:
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) • int? CompanyAccount - ідентифікатор компанії HMS Servio. • string[20] AuthCode - код бронювання. (Не впливає на виконання запиту) • string[20] SynkLoyaltyCode - код синхронізації програми лояльності. (Не впливає на виконання запиту) • string[50] CardNumber - повний номер картки, за повним збігом якого шукають магнітну картку, що належить учаснику програми лояльності. • string[30] ShortCardNumber - короткий номер картки, за повним збігом якого (за наявності) шукають магнітну картку, що належить учаснику програми лояльності. • string[30] PhoneNumber - номер телефону, перевіряє збіг за останніми 9 цифрами з контактом або компанією програмою лояльності • int? PersonID - ІД персони
Результат функції:
• string Error - опис помилки, що виникла • eWallet[] eWallets - масив описів електронних гаманців eWallet. Елементи масиву структури з такими полями: ◦ int eWalletID - ID електронного гаманця o string[100] LoyaltyProgramName - назва програми лояльності
(string.Empty) o string[50] BonusStatusName - назва статусу програми лояльності o decimal BonusBalance - поточний бонусний баланс електронного гаманця o decimal AccumulatedBonuses - поточна кількість накопичених бонусів електронного гаманця
◦ string[50] DiscountStatusName - назва статусу програми лояльності o string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, потрібен для синхронізації знижки за прейскурантом, якщо гаманець відноситься до дисконтної програми і для нього заведений код прейскуранта. (string.Empty) ◦ decimal DiscountTransactionsSum - сума всіх неанульованих транзакцій з урахуванням знижки, проведених для цього гаманця ◦ string[20] ServioSynkCode - код синхронізації програми лояльності o int? CompanyAccount - ідентифікатор компанії HMS Servio. ◦ string[30] MagneticCardShortNumber - короткий номер магнітної картки o string[30] MagneticCardFullNumber - довгий номер магнітної картки o decimal BonusSum - сума бонусів o decimal PaySum - сума на платіжній картці o decimal Credit - сума кредиту o decimal Accumulation - сума оборотів за карткою ◦ bool IsPayCard - прапор, що визначає налаштування лояльності "Робота з грошовими коштами" ◦ decimal ExtraMoneySum - сума екстра-грошей o bool IsSmartCard - ознака смарт карти (false) ◦ string ShortCode - короткий номер магнітної картки o decimal DayLimit - ліміт списання за день ◦ decimal WeekLimit - ліміт списання за тиждень o decimal MonthLimit - ліміт списання за місяць ◦ decimal YearLimit - ліміт списання за рік o bool UsePayLimits - ознака використання лімітів списання (false) ◦ bool UseCatLimits - ознака використання лімітів категорій (false) ◦ datetime ValidityStart - дата початку дії картки/сертифіката o datetime Validity - дата закінчення дії картки/сертифіката o bool Issue - ознака Issued (false) ◦ int Cardid - ІД картки ◦ string Comment - коментар (string.Empty) ◦ string Description - Примітка (string.Empty) ◦ decimal Discount - розмір знижки за карткою (0) ◦ string SynkLoyaltyCode - код лояльності з налаштувань програми лояльності ◦ int RoomNightBalance - кількість безкоштовних номероночей учасника o int MagneticCardID - ідентифікатор картки ◦ string UserName - ім'я власника ◦ string MobilePhone - номер телефону ◦ int DiscountGroupID - ідентифікатор дисконтної групи ◦ bool IsBonusProgram - приналежність до бонусної системи ◦ bool IsDiscountProgram - приналежність до дисконтної системи ◦ bool IsActive - ознака активності
За вхідними даними система шукає учасників, інформацію про них і налаштування програми лояльності в базі даних. Після чого повертаємо результат функції, заповнюючи відповідні поля.
Discount_Transaction_eWallet_Request
Метод виконує запит інформації щодо можливості надання знижки за ID магнітної картки та списком транзакцій. Метод підходить для POS і HMS.
Вхідні параметри:
• int MagneticCardID - ID магнітної картки програми лояльності. • string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) • Transaction[] Transactions - масив транзакцій структур Transaction. Структура Transaction має такі поля: ◦ decimal Sum - сума транзакції. o DateTime TransactionDate - дата проведення транзакції в POS-системі. o int ServiceGroupCode - код групи послуг POS-системи. ◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) ◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) ◦ int BillitemID - ідентифікатор позиції рахунку
Результат функції:
• string Error - опис помилки, що виникла. • int eWalletID - ID учасника програми лояльності, якому належить картка із запиту. • int MagneticCardID - ID учасника програми лояльності, якому належить картка із запиту. • string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту. • DiscountTransaction[] DiscountTransactions - масив транзакцій для отримання знижки структур DiscountTransaction. Структура DiscountTransaction має такі поля: ◦ DateTime TransactionDate - дата проведення транзакції. ◦ decimal Sum - сума транзакції. o int ServiceGroupCode - код групи послуг POS-системи. ◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. ◦ decimal Discount - величина знижки у валюті. ◦ decimal DiscountSum - сума транзакції з урахуванням знижки. ◦ string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. ◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Порожнє поле) ◦ string ErrorTransaction - опис помилки, що виникла для конкретної транзакції (Порожнє поле) ◦ int BillitemID - ідентифікатор позиції рахунку
Спочатку відбувається перевірка на дисконтний тип програми, якщо ні - повертаємо помилку. Далі за MagneticCardID система шукає карту в базі даних, якщо такої немає або вона неактивна, повертає помилку. Якщо карта є і вона активна, то система розраховує знижки для транзакцій. Після чого повертаємо результат функції, заповнюючи відповідні поля.
Discount_Transaction_eWallet_Accept
Метод виконує підтвердження надання знижки за ID магнітної картки та списком транзакцій. Метод підходить для POS і HMS.
Вхідні параметри:
• int MagneticCardID - ID магнітної картки програми лояльності. • string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) • int? BillID - ідентифікатор рахунку • int BaseExternalID - ідентифікатор зовнішньої системи • DiscountTransaction[] DiscountTransactions - масив транзакцій для отримання знижки структур DiscountTransaction. Структура DiscountTransaction має такі поля: o decimal Sum - сума транзакції. ◦ decimal DiscountSum - сума транзакції зі знижкою. (Не впливає на виконання запиту) ◦ DateTime TransactionDate - дата проведення транзакції. ◦ int ServiceGroupCode - код групи послуг POS системи. (Не впливає на виконання запиту) ◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) ◦ decimal Discount - величина знижки у валюті. (Не впливає на виконання запиту) ◦ string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. (Не впливає на виконання запиту) ◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) ◦ десяткова? Quantity - кількість o string ErrorTransaction - опис виниклої помилки для конкретної транзакції. (Не впливає на виконання запиту) ◦ TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля:
▪ int BillID - ID рахунку в POS-системі ▪ DateTime BillDate - Дата створення рахунку ▪ int CurrencyCode - Міжнародний код валюти оплати ▪ string ReceiptType - Тип чека ▪ decimal ReceiptSum - Сума чека ▪ string PaymentType - Назва типу оплати ▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля:
• int ItemID - ID нарахування • int ServiceCode - Код послуги • string Name - Назва послуги • string ClassName - Назва класу послуги • string ClassCode - Код класу послуги • string SubClassName - Назва підкласу послуги • string SubClassCode - Код підкласу послуги • decimal Price - Ціна позиції • decimal Quantity - Кількість - Кількість • decimal Total - Підсумкова вартість
Результат функції:
• string Error - опис помилки, що виникла. • int MagneticCardID - ID магнітної картки програми лояльності із запиту • int eWalletID - ID учасника програми лояльності, якому належить картка із запиту • string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту • decimal PayBonuses - загальна сума знижки за транзакціями із запиту
Спочатку відбувається перевірка на дисконтний тип програми, якщо ні - повертаємо помилку. Далі за MagneticCardID система шукає картку в базі даних, якщо такої немає, повертає помилку про відсутність такої картки. Якщо картка є, то система бере учасника за даними з картки, розраховує знижки для транзакцій, додає транзакції в базу даних і оновлює інформацію про учасника в базі даних. Після чого повертаємо результат функції, заповнюючи відповідні поля.
Return_Discount_Transaction_eWallet_Request
Метод виконує запит інформації щодо можливості повернення транзакцій зі знижкою за ID магнітної картки та списком транзакцій. Метод підходить для HMS.
Вхідні параметри:
• int MagneticCardID - ID магнітної картки програми лояльності. • string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) • Transaction[] Transactions - масив транзакцій структур Transaction. Структура Transaction має такі поля: ◦ decimal Sum - сума транзакції. ◦ DateTime TransactionDate - дата проведення транзакції в POS системі. (Не впливає на виконання запиту) ◦ int ServiceGroupCode - код групи послуг POS-системи. ◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) ◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) ◦ decimal DiscountSum - сума транзакції зі знижкою. (Не впливає на виконання запиту) ◦ decimal Discount - величина знижки у валюті. (Не впливає на виконання запиту) ◦ string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. (Не впливає на виконання запиту) o десяткова? Quantity - кількість
string ErrorTransaction - опис виниклої помилки для конкретної транзакції. (Не впливає на виконання запиту)
◦ TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля:
▪ int BillID - ID рахунку в POS-системі ▪ DateTime BillDate - Дата створення рахунку ▪ int CurrencyCode - Міжнародний код валюти оплати ▪ string ReceiptType - Тип чека ▪ decimal ReceiptSum - Сума чека ▪ string PaymentType - Назва типу оплати ▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля:
• int ItemID - ID нарахування • int ServiceCode - Код послуги • string Name - Назва послуги • string ClassName - Назва класу послуги • string ClassCode - Код класу послуги • string SubClassName - Назва підкласу послуги • string SubClassCode - Код підкласу послуги • decimal Price - Ціна позиції • decimal Quantity - Кількість - Кількість • decimal Total - Підсумкова вартість
Результат функції:
• string Error - опис помилки, що виникла. • int eWalletID - ID учасника програми лояльності, якому належить картка із запиту. • int MagneticCardID - ID учасника програми лояльності, якому належить картка із запиту. • string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту. • bool IsOTPNeed - ознака необхідності підтвердження операції паролем/пін-кодом (Завжди false) • DiscountTransaction[] DiscountTransactions - масив транзакцій для отримання знижки структур DiscountTransaction. Структура DiscountTransaction має такі поля: • DateTime TransactionDate - дата проведення транзакції. • decimal Sum - сума транзакції. o int ServiceGroupCode - код групи послуг POS-системи. o string[30] POSsystemAccount - Л/Рахунок у POS системі. o decimal Discount - величина знижки у валюті. o decimal DiscountSum - сума транзакції з урахуванням знижки. • string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом.
string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Порожнє поле)
• string ErrorTransaction - опис помилки, що виникла для конкретної транзакції (Порожнє поле) • TransactionDetails Details - деталізація позицій рахунку. Структура TransactionDetails має такі поля:
▪ int BillID - ID рахунку в POS-системі ▪ DateTime BillDate - Дата створення рахунку ▪ int CurrencyCode - Міжнародний код валюти оплати ▪ string ReceiptType - Тип чека ▪ decimal ReceiptSum - Сума чека ▪ string PaymentType - Назва типу оплати ▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля:
◦ int ItemID - ID нарахування ◦ int ServiceCode - Код послуги ◦ string Name - Назва послуги ◦ string ClassName - Назва класу послуги ◦ string ClassCode - Код класу послуги ◦ string SubClassName - Назва підкласу послуги ◦ string SubClassCode - Код підкласу послуги ◦ decimal Price - Ціна позиції ◦ decimal Quantity - Кількість - Кількість ◦ decimal Total - Підсумкова вартість
Спочатку відбувається перевірка на дисконтний тип програми, якщо ні - повертаємо помилку. Далі за MagneticCardID система шукає карту в базі даних, якщо такої немає або вона неактивна, повертає помилку. Якщо карта є і вона активна, то система розраховує знижку для транзакцій. Після чого повертаємо результат функції, заповнюючи відповідні поля.
Return_Discount_Transaction_eWallet_Accept
Метод виконує підтвердження повернення зі знижкою за ID магнітної картки та списком транзакцій. Метод підходить для HMS.
Вхідні параметри:
• int MagneticCardID - ID магнітної картки програми лояльності. • string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) • string CodeOTP - пароль/пін-код підтвердження операції. (Не впливає на виконання запиту) • DiscountTransaction[] DiscountTransactions - масив транзакцій для отримання знижки структур DiscountTransaction. Структура DiscountTransaction має такі поля:
decimal Sum - сума транзакції.
◦ decimal DiscountSum - сума транзакції зі знижкою. (Не впливає на виконання запиту) ◦ DateTime TransactionDate - дата проведення транзакції. o int ServiceGroupCode - код групи послуг POS-системи. ◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) ◦ decimal Discount - величина знижки у валюті. (Не впливає на виконання запиту) ◦ string[20] DiscountPriceListCode - код прейскуранта поточного дисконтного статусу, не обов'язковий для заповнення, використовується при акцептуванні транзакцій зі знижкою за прейскурантом. (Не впливає на виконання запиту) ◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) ◦ string ErrorTransaction - опис виниклої помилки для конкретної транзакції. (Не впливає на виконання запиту) ◦ TransactionDetails Details - деталізація позицій рахунку. Структура TransactionDetails має такі поля:
▪ int BillID - ID рахунку в POS-системі ▪ DateTime BillDate - Дата створення рахунку ▪ int CurrencyCode - Міжнародний код валюти оплати ▪ string ReceiptType - Тип чека ▪ decimal ReceiptSum - Сума чека ▪ string PaymentType - Назва типу оплати ▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля:
• int ItemID - ID нарахування • int ServiceCode - Код послуги • string Name - Назва послуги • string ClassName - Назва класу послуги • string ClassCode - Код класу послуги • string SubClassName - Назва підкласу послуги • string SubClassCode - Код підкласу послуги • decimal Price - Ціна позиції • decimal Quantity - Кількість - Кількість • decimal Total - Підсумкова вартість
Результат функції:
• string Error - опис помилки, що виникла. • int MagneticCardID - ID магнітної картки програми лояльності із запиту • int eWalletID - ID учасника програми лояльності, якому належить картка із запиту • string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту • decimal Discount - загальна сума знижки за транзакціями із запиту
Спочатку відбувається перевірка на дисконтний тип програми, якщо ні - повертаємо помилку. Далі за MagneticCardID система шукає картку в базі даних, якщо такої немає, повертає помилку про відсутність такої картки. Якщо картка є, то система бере учасника за даними з картки, додає транзакції повернення з дисконтним типом і оновлює інформацію про учасника в базі даних. Після чого повертаємо результат функції, заповнюючи відповідні поля.
Add_eWallet_Bonuses_Request
Метод виконує запит інформації щодо можливості нарахування бонусів за ID магнітної картки та списком транзакцій. Метод підходить для HMS.
Вхідні параметри:
• string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) • int MagneticCardID - ID магнітної картки • int CustomerType - тип замовника в POS системі (Не впливає на виконання запиту) • int CustomerID - ID замовника в POS системі (Не впливає на виконання запиту) • Transaction[] Transactions - масив транзакцій структур Transaction. Структура Transaction має такі поля: ◦ DateTime TransactionDate - дата проведення транзакції в POS системі (Не впливає на виконання запиту) ◦ int ServiceGroupCode - код групи послуг POS системи o decimal Quantity - кількість послуг за транзакцією o decimal Sum - сума транзакції o string[30] POSsystemAccount - Л/Рахунок у POS системі (Не впливає на виконання запиту) ◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) ◦ string ServiceProviderName - Найменування постачальника послуг (Не впливає на виконання запиту) ◦ string ServiceProviderID - ID постачальника послуг у POS системі (Не впливає на виконання запиту) ◦ TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля:
▪ int BillID - ID рахунку в POS-системі ▪ DateTime BillDate - Дата створення рахунку ▪ int CurrencyCode - Міжнародний код валюти оплати ▪ string ReceiptType - Тип чека
decimal ReceiptSum - Сума чека
▪ string PaymentType - Назва типу оплати ▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля:
• int ItemID - ID нарахування • int ServiceCode - Код послуги • string Name - Назва послуги • string ClassName - Назва класу послуги • string ClassCode - Код класу послуги • string SubClassName - Назва підкласу послуги • string SubClassCode - Код підкласу послуги • decimal Price - Ціна позиції • decimal Quantity - Кількість - Кількість • decimal Total - Підсумкова вартість
Результат функції:
• int eWalletID - ID учасника програми лояльності, якому належить картка із запиту • int MagneticCardID - ID магнітної картки • string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту • decimal BonusBalance - поточний бонусний баланс електронного гаманця • Transaction[] Transactions - масив транзакцій Transaction, за якими можливо виконати нарахування бонусів. Структура Transaction має такі поля: • DateTime TransactionDate - дата проведення транзакції в POS-системі
(Порожнє поле) o int ServiceGroupCode - код групи послуг POS системи o decimal Quantity - кількість послуг за транзакцією o decimal Sum - сума транзакції o string[30] POSsystemAccount - Л/Рахунок у POS системі o string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Порожнє поле)
• string ServiceProviderName - Найменування постачальника послуг o string ServiceProviderID - ID постачальника послуг у POS-системі o TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля:
▪ int BillID - ID рахунку в POS-системі ▪ DateTime BillDate - Дата створення рахунку ▪ int CurrencyCode - Міжнародний код валюти оплати ▪ string ReceiptType - Тип чека ▪ decimal ReceiptSum - Сума чека ▪ string PaymentType - Назва типу оплати ▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля:
◦ int ItemID - ID нарахування ◦ int ServiceCode - Код послуги ◦ string Name - Назва послуги ◦ string ClassName - Назва класу послуги ◦ string ClassCode - Код класу послуги ◦ string SubClassName - Назва підкласу послуги ◦ string SubClassCode - Код підкласу послуги ◦ decimal Price - Ціна позиції ◦ decimal Quantity - Кількість - Кількість ◦ decimal Total - Підсумкова вартість ◦ string Error - опис помилки, що виникла ◦ bool IsOTPNeed - ознака необхідності підтвердження операції паролем/пін-кодом
Спочатку відбувається перевірка на бонусний тип програми, якщо ні - повертаємо помилку. Далі за MagneticCardID система шукає карту в базі даних, якщо такої немає або вона неактивна, повертає помилку. Якщо картка є і вона активна, то система розраховує кількість бонусів для транзакцій. Після чого повертаємо результат функції, заповнюючи відповідні поля.
Add_eWallet_Bonuses
Метод здійснює нарахування бонусів учаснику програми лояльності за ID магнітної картки та списком транзакцій. Метод підходить для POS і HMS.
Вхідні параметри:
• int MagneticCardID - ID магнітної картки. • string[32] POSCode - унікальний код POS системи, за яким шукається зв'язка POS системи та користувача програми лояльності. (Не впливає на виконання запиту) • POSServiceProvider[] POSServiceProviders - Список сервіс провайдерів, які беруть участь в операції. (Опціонально). Структура POSServiceProvider має такі поля: ◦ string POSSProviderID - ID постачальника послуг у POS системі o string CompanyName - Назва компанії o bool IsCompany - Компанія чи фізособа o рядок AddressLegal - Юридична адреса o рядок ITN - ІПН o string TaxIDCode - ЄДРПОУ(У) o string JobPosition - Посада для підпису (наприклад: Директор) o string Employee - Прізвище та ініціали для підпису (наприклад Пупкін В.П.) o string AffilateCode - Код філії, якщо є o string Bank_MFO - МФО банку з реквізитів рахунку o string Bank_Name - Назва банку з реквізитів рахунку o string Bank_Account - Рахунок у банку ◦ з реквізитів рахунку o string IBAN - IBAN з реквізитів рахунку, якщо є o string NDSNumber - Номер свідоцтва платника ПДВ, якщо є • Transaction[] Transactions - масив транзакцій для нарахування бонусів Transaction.
Структура Transaction має такі поля: o decimal Sum - сума транзакції. o DateTime TransactionDate - дата проведення транзакції в POS-системі.
◦ int ServiceGroupCode - код групи послуг POS-системи. ◦ string[30] POSsystemAccount - Л/Рахунок у POS системі. (Не впливає на виконання запиту) ◦ string[30] PointOfSalePOScode - код точки продажу в POS системі. Цей код має бути унікальним у межах POS системи серед не віддалених точок. (Не впливає на виконання запиту) ◦ десяткова? Quantity - кількість o TransactionDetails Details - деталізація позицій рахунку. (Опціонально). Структура TransactionDetails має такі поля:
▪ int BillID - ID рахунку в POS-системі ▪ DateTime BillDate - Дата створення рахунку ▪ int CurrencyCode - Міжнародний код валюти оплати ▪ string ReceiptType - Тип чека ▪ decimal ReceiptSum - Сума чека ▪ string PaymentType - Назва типу оплати ▪ PositionInfo[] Items - Деталізація позицій чека. Структура PositionInfo має такі поля:
• int ItemID - ID нарахування • int ServiceCode - Код послуги • string Name - Назва послуги • string ClassName - Назва класу послуги • string ClassCode - Код класу послуги • string SubClassName - Назва підкласу послуги • string SubClassCode - Код підкласу послуги • decimal Price - Ціна позиції • decimal Quantity - Кількість - Кількість • decimal Total - Підсумкова вартість Результат функції: • int MagneticCardID - ID магнітної картки програми лояльності із запиту. • int eWalletID - ID учасника програми лояльності, якому належить картка із запиту. • string UserName - ім'я (ПІБ контакту або назва компанії) учасника програми лояльності, якому належить картка із запиту • decimal AddedBonuses - кількість нарахованих бонусів за транзакції • decimal BonusBalance - поточний бонусний баланс електронного гаманця • string Error - опис помилки, що виникла