Перейти до основного вмісту

Діюча інтеграція з Pharmapoint

Цей сценарій підходить для аптечних мереж, у яких вже налаштована та працює інтеграція з Pharmapoint.

1 Обов'язкові методи та вимоги для роботи зі SkarbOne

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

1. Вивантаження довідників

API методиОпис
1Довідник товарівДля роботи з рецептами необхідна прив'язка до бази Pharmapoint: передавайте максимально повні дані за штрихкодами, кодами Моріон та кодами дистриб'юторів
2Довідник фармацевтівВивантажується з прив'язкою до аптек для автоматичного створення акаунтів та надання доступу в SkarbOne
3Довідник лікарівВивантажується за потреби, якщо потрібне внесення даних лікаря безпосередньо в чек

2. Вивантаження залишків аптеки

API методиОпис
1Вивантаження залишків аптекиВивантажується для забезпечення актуальності даних про наявність товарів та їх вартість у системі.
  • Для роботи з партіями: у поле drugstore_goods_id передавайте унікальне ID партії (має відрізнятися від goods_id)
  • Для роботи з програмою лояльності: обов'язково заповнюйте поле buy_price_vat (ціна закупівлі товару)

3. Вивантаження замовлень

API методиОпис
1ЗамовленняСинхронізація статусів замовлень між маркетплейсом, мобільним додатком та вашою обліковою системою
2Отримання відмінених замовленьОтримання онлайн-замовлень, які були скасовані в додатку SkarbOne або на маркетплейсі, але попередньо створені в обліковій системі. Такі замовлення підлягають обробці та скасуванню в обліковій системі
3Необроблені замовленняОтримання всіх необроблених замовлень по аптечній мережі
4Отримання всіх необроблених замовлень в аптеціОтримання необроблених замовлень у конкретній аптеці
інформація

Опис усіх полів, що використовуються в замовленні, міститься на сторінці Оновлення замовлень

2 Статуси замовлень та алгоритм дій з обліковою системою

СтатусОпис
1createdНове замовлення. Передано від клієнта в обробку
2in_process_by_operatorОпрацьовується оператором (серверно клієнтом)
3processed_by_operatorОпрацьовано оператором (серверно клієнтом)
4got_in_pharmacyОтримано в аптеці
5in_process_by_pharmacyОпрацьовується в аптеці
6processed_by_pharmacyОпрацьовано в аптеці
7check_by_online_siteПродано онлайн. Клієнт успішно завершив покупку безпосередньо через інтерфейс онлайн-майданчика (мобільного додатка або сайту)
8checkПродаж (направляється аптечною мережею як підтвердження Продажу)
9canceled_by_marketplaceСкасовано майданчиком. Скасування надійшло ззовні (не з додатка)
10canceledВідміна (направляється аптечною мережею як підтвердження Відміни)
інформація
  • Статуси, що встановлюються ТІЛЬКИ в обліковій системі (додаток їх не ставить): created, in_process_by_operator, processed_by_operator, got_in_pharmacy, in_process_by_pharmacy, check, canceled_by_marketplace.

  • Статуси, що приходять з API (обробляються в обліковій системі): processed_by_pharmacy, check_by_online_site, canceled.

2.1 Обробка замовлень зі статусом created

При отриманні замовлення зі статусом created аптека повинна:

  1. Створити замовлення в системі. Аптека може виконати фіскалізацію замовлення в обліковій системі.

  2. Якщо замовлення фіскалізовано в додатку облікова система повинна своєчасно отримати поточний статус замовлення та оновити його (за умови що облікова система підключена до мережі).

2.2 Обробка замовлень зі статусом check_by_online_site

При отриманні замовлення зі статусом check_by_online_site аптека повинна:

  1. Перевірити наявність замовлення в базі облікової системи за його ідентифікатором (ID).
  2. Якщо замовлення відсутнє — створити його.
Важливо!

Створення відбувається без подальшої фіскалізації

  1. Прийняти замовлення, обробити всі необхідні поля та викликати метод Оновлення замовлень.
  2. Надіслати статус check.

Аптека не буде отримувати ці замовлення в методах отримання необроблених замовлень.

2.3 Обробка замовлень зі статусом canceled_by_marketplace

При отриманні замовлення зі статусом canceled_by_marketplace аптека повинна перевірити наявність замовлення в обліковій системі:

  • Якщо замовлення є в в обліковій системі - скасувати замовлення в обліковій системі, викликати метод Оновлення замовлень та відправити статус canceled.

  • Якщо замовлення відсутнє в обліковій системі - викликати метод Оновлення замовлень та та відправити статус canceled.

Замовлення не потрапляє в необроблені та не передається.

2.4 Збереження ідентифікатора замовлення

При зміні статусу замовлення (перехід з check_by_online_sitecheck) через метод Оновлення замовлень, облікова система повинна зберігати значення поля drugstore_order_number (номер замовлення), згенерований у мобільному додатку.

Важливо!

Поле drugstore_order_number є унікальним ідентифікатором для операцій списання та нарахування в межах програми лояльності. Його збереження є важливим для запобігання дублюванню операцій з бонусами (повторного нарахування або списання бонусів)

2.5 Передача фінансових та бонусних полів в масиві goods

Під час виклику методу Оновлення замовлень, облікова система повинна повертати у складі товарних позицій ті самі фінансові та бонусні поля, які були отримані разом із замовленням.

Важливо!

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

2.5.1 Обов'язкові поля в масиві goods

У кожній товарній позиції необхідно передавати такі поля:

ПолеОпис
1customer_discountЗнижка за всю позицію за результатом аналізу акцій
2customer_paid_by_bonusСума, що була оплачена бонусами (за всю позицію)
3customer_bonusКількість бонусів, нарахованих за позицію
4discountЗнижка, що не стосується програми лояльності (включає округлення)
5surchargeНадбавка
Важливо!

Якщо значення для будь-якого з перелічених полів в масиві goods відсутнє — необхідно передавати значення 0, або не передавати поле взагалі

2.5.2 Приклад фрагменту запиту
Запит: /api/v1/marketplace/order
[
{
"external_drugstore_id": "57864",
"order_number": "3M-P3-5A-P0",
"status_name": "check",
"goods": [
{
"local_goods_id": "0076044f-7a7b-41fd-ad70-64554af9aefa",
"price": 198.5,
"quantity": 0.2,
"batch": "02b557c0-a9b6-11f0-9026-005056962e80",
"customer_discount": 0,
"customer_paid_by_bonus": 5,
"customer_bonus": 0.4,
"discount": 0.2,
"surcharge": 0
}
]
}
]

2.6 Метод get_all_processed_orders_by_period

Метод get_all_processed_orders_by_period використовується аптечною мережею для регулярного отримання замовлень в обліковій системі та їх актуалізації відповідно до статусу в системі Pharmapoint.

Застосовується для формування повної картини замовлень і чеків в обліковій системі.

Ознайомитися з документацією можна на сторінці Отримання всіх оброблених замовлень за період.

Аптечна мережа має забезпечити постійний запит даних через цей метод для актуалізації статусів замовлень у своїй базі.

  • Якщо замовлення відсутнє в обліковій системі — його необхідно створити з поточним статусом, отриманим з API.

  • Якщо замовлення вже є в обліковій системі — необхідно оновити його статус на той, що передає маркетплейс.

При отриманні замовлень через метод get_all_processed_orders_by_period, необхідно обробляти лише два статуси:

СтатусДія
1processed_by_pharmacyОброблено в аптеці. Якщо замовлення нове — створити його. Встановити стан Готовий до видачі. Виконати резервування товарів / зняття з залишків
2canceledВідміна. Якщо замовлення існує в обліковій системі — скасувати його (розформувати). Якщо замовлення в обліковій системі немає — ігнорувати запис
інформація

При зміні статусу в локальній базі 1С після отримання даних з цього методу, не потрібно повторно надсилати цей же статус назад на маркетплейс