Skip to main content

Завдання на реалізацію обміну даних між Обліковою системою та АВМ Loyalty

Завдання на реалізацію обміну даних між Обліковою системою та АВМ Loyalty

Суть завдання – організувати регулярний автоматичний (без участі людини) обмін даними між обліковою системою Клієнта та системою лояльності АВМ Loyalty.

Передача товарних груп

Необхідно реалізувати вивантаження товарних груп. Вивантажувати потрібно в такій послідовності: спочатку групи першого рівня (батьківська), потім групи нижнього рівня (дочірня), слідуючи ієрархії груп товарів вашої системи.

При зміні/оновленні товарних груп слід дотримуватись її ієрархії.

Крок 1. Вивантажити батьківську групу товарів

Крок 2. Вивантажити дочірню групу товарів

Для передачі товарів з облікової системи Лояльність використовуються методи API:

POST v2/partner/products/groups - Створити групу товарів

PUT v2/partner/products/groups/{group_id} – змінити групу товарів

POST v2/partner/products - Створити продукт (один запит – один продукт)

PUT v2/partner/products/{art_id} - Змінити продукт (один запит – один продукт)

POST v2/partner/batch-products - створити продукти (кілька продуктів одним запитом, рекомендована кількість товарів в одному запиті – 1000)

PUT v2/partner/batch-products - Змінити продукти (кілька продуктів одним запитом, рекомендована кількість товарів в одному запиті - 1000)

GET v2/partner/products/groups- Отримати список всіх груп товарів

GET v2/partner/products/groups/{group_id}– отримати дані про конкретну групу

GET v2/partner/products– отримати список усіх товарів

GET v2 /partner/products/{art_id}– отримати дані про конкретний товар

Опис методів також доступний за посиланням:

https://documenter.getpostman.com/view/10073265/TzJuAdf6

Для передачі торгових точок з облікової системи Лояльність використовуються методи API:

GET v2/partner/branch- Отримати список всіх ТТ (в активному статусі)

POST v2/partner/branch– створити ТТ (кілька магазинів одним запитом)

PUTv2/partner/branch– змінити ТТ (кілька магазинів одним запитом)

GET v2/partner/branch/{branch_id}– отримати інформацію про конкретного ТТ

канал API: https://api.sandbox.abmloyalty.app

ключ (токен):

версія: v2

тип авторизації: Базова автентифікація(можна використовувати поле імені користувача як токен (ключ) доступу та пропустити пароль)

ключ:

!! доступ до тестової бази. Потім потрібно буде перейти на продуктову систему

Усі товари/групи товарів, які є в обліковій системі, повинні бути присутніми в Лояльності. Передавати нові товари/групи або оновлювати існуючі потрібно з періодичністю 1 раз на кілька годин, а також можливість синхронізувати товари примусово (на розсуд сторони Замовника)

При передачі класифікатора спочатку передавати групи, потім підгрупи, потім товари (якщо товар буде передано раніше, ніж група, до якої він належить, то товар не запишеться. повернеться помилка).

Код групи та код товару мають бути унікальними для кожної групи та для кожного товару.

Обмеження на товар (максимальний бонус до списання, максимальний бонус до нарахування):

  • кожен дочірній елемент може мати своє обмеження, відмінне від обмеження батьківської групи.
  • обмеження дочірнього елемента, може бути рівним або менше, але не більше обмеження встановленого для батьківської групи.
  • Тип обмеження не може відрізнятися від типу обмеження батьківської групи.
  • якщо параметри не передані - успадковуються обмеження та тип батьківської групи
  • якщо група коренева – обмеження записуються за умовчанням як 100%

POST v2/partner/products/groups

створити групу товарів

Назва

Тип даних

Опис

Відповідає значенню у Клієнта

group_id

ціле число

Код групи

name

рядок

Найменування групи

parent_id

ціле число

Код батьківської групи. Якщо батьківської групи немає, то заповнювати – 0

status

ціле число

1 - активна група, 0 - неактивна (віддалена) група

max_calculation_bonus

номер

Максимальний бонус до нарахування для групи товарів

max_calculation_bonus_unit

ціле число

Тип обмеження для нарахування: 0 – %; 1-фіксоване значення

max_payment_bonus

номер

Мінімальний бонус до нарахування для групи товарів

max_payment_bonus_unit

ціле число

Тип обмеження для списання: 0 – %; 1-фіксоване значення

PUT v2/partner/products/groups/{group_id}

змінити групу товарів

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

POST v2/partner/products

створити продукт (один запит – один продукт)

Назва

Тип даних

Опис

Відповідає значенню у Клієнта

art_id

рядок

Артикул (код, SKU) товару

group_id

ціле число

Код батьківської групи товарів

max_calculation_bonus

номер

Максимальний бонус для нарахування (обмеження нарахування бонусу для цього товару)

max_calculation_bonus_unit

ціле число

Тип обмеження для нарахування: 0 – %; 1-фіксоване значення

max_payment_bonus

номер

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

max_payment_bonus_unit

ціле число

Тип обмеження для списання: 0 – %; 1-фіксоване значення

name

рядок

Найменування товару

price

номер

Вартість товару. Якщо вартість товару часто змінюється, або різнитися у різних магазинах, її значення слід передати у запитах при передрахуванні продажу та продажу (посилання опис запитів). За замовчуванням значення: 0

mrp

номер

Мінімальна роздрібна ціна. Залежно від базових налаштувань програми нарахування та списання бонусів може бути застосовано лише на суму різниці між МРЦ та продажною ціною

status

ціле число

1 - активний товар; 0 - неактивний (видалений) товар

properties

рядок

Додаткові властивості товарів

barcode

рядок

Штрих-код товару

description

рядок

Опис товару

discount

номер

Розмір знижки, число за замовчуванням 0

discount_unit

ціле число

Тип знижки, 0-відсоток, 1-гроші

favorite_product_allowed

ціле число

Дозвіл вибрати улюбленим продуктом,1 - дозволити, 0-заборонити

group_id_client

ціле число

Код групи для мобільного додатка

img_url

рядок

Посилання на зображення товару

PUT v2/partner/products/{art_id}

змінити продукт (один запит – один продукт)

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

POST v2/partner/batch-products

створити продукти (створити декілька продуктів, переданих в одному запиті)

Параметри та його обов'язковість аналогічні запиту створення продукту.Рекомендована кількість товарів в одному запиті – 1000.

приклад:

{

"100001":{

"group_id": 121981,

"art_id": "100001",

"name": "Макароны 400 гр.",

"status": 1,

"price": 80.29,

“mrp”: 50.00,

"max_calculation_bonus": null,

"max_calculation_bonus_unit": null,

"max_payment_bonus": null,

"max_payment_bonus_unit": null

},

"100002":{

"group_id": 121981,

"art_id": "100002",

"name": "Кетчуп острый",

"status": 1,

"price": null,

"max_calculation_bonus": null,

"max_calculation_bonus_unit": null,

"max_payment_bonus": null,

"max_payment_bonus_unit": null

}

}

PUT v2/partner/batch-products

змінити продукти (створити кілька продуктів, переданих в одному запиті)

Параметри аналогічні запиту створення продукту. Можна передавати лише ті параметри, які потрібно змінити.Рекомендована кількість товарів в одному запиті – 1000.

Для передачі торгових точок з облікової системи Лояльність використовуються методи API:

GET v2/partner/branch- Отримати список всіх ТТ (в активному статусі)

POST v2/partner/branch– створити ТТ (кілька магазинів одним запитом)

PUT v2/partner/branch– змінити ТТ (кілька магазинів одним запитом)

GET v2/partner/branch/{branch_id}- отримати інформацію про конкретного ТТ

Усі торгові точки, які є в мережі та працюють з лояльністю – повинні бути присутніми у Лояльності (система не зможе прийняти запит від магазину, який відсутній у базі лояльності).

POST v2/partner/branch

створити ТТ (кілька магазинів одним запитом)

Назва

Тип даних

Опис

Відповідає значенню у Клієнта

branch_id

рядок

id торгової точки, унікальна в межах мережі

coord1

номер

координати по широті

coord2

номер

координати по довготі

address

рядок

адреса ТТ

phones

рядок

номер телефону ТТ

emails

рядок

Електронні листи TT

status

рядок

статус ТТ: 1 – активна, 0 – неактивна

name

рядок

найменування ТТ

time_from

рядок

час початку роботи ТТ за графіком

time_to

рядок

час завершення роботи ТТ за графіком

приклад:

{

{

"06":{ //id торгової точки, унікальний в мережі

"branch_id": "06",

"coord1": 55.72839976498599,

"coord2": 37.67679348090883,

"address": "Київ, проспект Бандери, 18, Україна",

"phones": "044-006-06-06",

"emails": "mag06@gmail.com",

"status": 1,

"name": "ТТ6",

"time_from": "00:00",

"time_to": "23:59"

},

"07":{

"branch_id": "07",

"coord1": 55.71260711011073,

"coord2": 37.577362060546875,

"address": "Київ, проспект Бандери, 20, Україна",

"phones": "044-007-07-07",

"emails": "mag07@gmail.com",

"status": 1,

"name": "ТТ7",

"time_from": "00:00",

"time_to": "23:59"

}

}

PUT v2/partner/branch

змінити ТТ (кілька магазинів одним запитом)

Параметри аналогічні запиту створення ТТ. Можна передавати лише ті параметри, які потрібно змінити.

Методи для завантаження акційної ціни

Для завантаження акційних цін у лояльність необхідно використовувати такі методи:

Метод v2/partner/products/warehouse

POST

Створює запис у таблиці обліку товару на складах.

Створює кілька записів одним запитом (аналогічно методу групового створення/зміни товарів /partner/batch-products)

Приклад запиту:

{

"10.22":{ //id ТТ.id товару. Обов'язковий параметр

"branch_id": "10", // id ТТ. Обов'язковий параметр.

"art_id": "22", // ID товару. Обов'язковий параметр.

"price": 100.00, //Ціна продажна. Не обов'язковий параметр може приймати значення null.

"price_discount": 80,99, //Ціна акційна. Не обов'язковий параметр може приймати значення null.

"in_stock": правда //наявність залишку: true - у наявності/false немає. Чи не обов'язковий параметр. Якщо не передано, то false за замовчуванням.

},

"10.23":{.....

}

}

Приналежність партнеру визначати за токеном у запиті.

При успішному виконанні запиту повертається відповідь у статусі 201, кількість створених/не створених записів та статус кожного переданого запису.

Приклад відповіді:

{

"success": true,

"status": 201,

"data": {

"success": 3, //створено записів

"failed": 0, //не створено записів

"branch_product": {

"10.22": { //статус по конкретному запису

"status": 201,

"message": "Ok"

},

"10.23": {

"status": 201,

"message": "Ok"

},

"10.24": {

"status": 201,

"message": "Ok"

}

}

Якщо запит виконано частково - повертається відповідь у статусі 422, кількість створених/не створених записів та статус кожного переданого запису.

Приклад відповіді:

{

"success": false,

"status": 422,

"data": {

"success": 0,

"failed": 3,

"branch_product": {

"10.23": {

"status": 422,

"message": "Invalid product",

"data": {

"art_id": "Error. Acrticle of product has to be unique"

}

},

"10.24": {

"status": 422,

"message": "Invalid product",

"data": {

"art_id": "Error. Acrticle of product has to be unique"

}

},

"10.26": {

"status": 201,

"message": "Ok"

}

}

}

}

метод

PUT /partner/products/warehouse

Змінює запис у таблиці обліку товару на складах.

Змінює кілька записів одним запитом.

Приклад запиту:

{

"10.22":{ //id ТТ.id товару

"branch_id": "10", //id ТТ

"art_id": "22", //ідентифікатор вантажу

"price": 100.00, //Ціна продажна, може набувати значення null.

"price_discount": 80,99, //Ціна акційна, може набувати значення null.

"in_stock": правда //наявність залишку: true - у наявності/false немає

},

"10.23":{.....

}

}

Можна передавати лише ті параметри, які змінюються.

При успішному виконанні запиту повертається відповідь у статусі 201, кількість змінених/не змінених записів та статус кожного переданого запису.

Якщо запит виконано частково - повертається відповідь у статусі 422, кількість змінених/не змінених записів та статус кожного переданого запису.

метод

GET /partner/products/warehouse/{branch_id}

Повертає інформацію про товари на вказаному складі (магазині).

  • {branch_id} - id магазина

Приклад відповіді:

{

"success": true,

"status": 200,

"data": {

"items": [

{

"branch_id": "10", //id ТТ

"art_id": "22", //ідентифікатор вантажу

"price": 100.00, //Ціна продажна

"price_discount": 80,99, //Ціна акційна

"in_stock": правда //наявність залишку: true - у наявності/false немає

}

]

метод

GET /partner/products/warehouse/{branch_id}/{art_id}

Повертає інформацію про конкретний товар на вказаному складі (магазині).

  • {branch_id} - id магазина
  • {art_id} - id товару

Приклад успішної відповіді та перевірки – аналогічні методу /partner/products/warehouse/{branch_id}

Для завантаження товарів у Мобільний додаток необхідно виконати кілька доопрацювань з вашого боку:

1. Реалізувати передачу каталогу груп та підгруп товарів, що використовується в Інтернет-магазині. Використовуючи метод POST/partner/products/groups-client

POST/partner/products/groups-client - Партнер визначається за токеном авторизації

POST - створює новий запис

BODY:

parent_id – id батьківської групи. Обов'язково до заповнення. Для групи першого рівня брати 0.

name – найменування групи. Обов'язково до заповнення.

status – статус групи: 1-активний; 0-неактивний. Не обов'язково заповнити. Якщо не передано, то за промовчанням надавати активний статус.

group_id - зовнішній ID групи (ID групи у партнера). Обов'язково до заповнення.

img_url – веб-посилання на зображення групи товарів. Не обов'язково заповнити.

Відповідь:

parent_id

name

status

updated_at

created_at

group_id

img_url

GET – віддає список груп партнера

Відповідь:

parent_id

name

status

updated_at

created_at

group_id

img_url

PUT /partner/products/groups-client/{group_id} - Новий метод.

Партнер визначається за токеном авторизації.

{group_id} - ID групи, за якою виконується запит.

PUT - змінює запис

BODY:

parent_id

name

status

group_id

img_url

У BODY вказуються лише параметри, які підлягають зміні.

Відповідь:

parent_id

name

status

updated_at

created_at

group_id

img_url

При переведенні групи в неактивний статус - всі її підгрупи/товари повинні бути неактивними.

GET - віддає інформацію щодо конкретного запису

Відповідь:

parent_id

name

status

updated_at

created_at

group_id

img_url

2. Реалізувати вивантаження опису, штрих-кодів та зображень товарів за допомогою методів:

POST v2/partner/products - Створити продукт (один запит – один продукт)

PUT v2/partner/products/{art_id} - Змінити продукт (один запит – один продукт)

POST v2/partner/batch-products - створити продукти (кілька продуктів одним запитом, рекомендована кількість товарів в одному запиті – 1000)

PUT v2/partner/batch-products - Змінити продукти (кілька продуктів одним запитом, рекомендована кількість товарів в одному запиті - 1000)

Опис параметрів у BODY які, вам знадобляться:

· штрих-код - Штрих-код вантажу, рядок

· description - опис товару, string

· discount - Розмір знижки, число за замовчуванням 0

· discount_unit - Тип знижки, 0-відсоток, 1-гроші

· favorite_product_allowed- Дозвіл вибрати улюбленим продуктом,1 - дозволити, 0-заборонити

· group_id_client - Код групи для мобільного додатку, integer

· img_url - Посилання на зображення товару, string