Новые маршруты цифровой эволюции
Заказать проект✦
Фармацевтика

ProMarket — заказы по акциям

Связали участие аптеки в акции с заказом товара, учётной системой и обратной передачей статусов.

64Функциональных требования в девяти блоках интеграции
8Пользовательских сценариев: основной и семь альтернативных
5Статусов промо-заказа с цветовой индикацией
0Повторных вводов логина и пароля при переходе из акции в черновик заказа

Контекст и задача

Фармацевтический дистрибьютор развивает экосистему цифровых сервисов для аптек: платформу заказа товаров, сервис маркетинговых акций и систему товарного учёта. Пользователи — сотрудники аптечных учреждений, участвующих в акциях производителей, администраторы платформы заказов и команды смежных сервисов, которые обмениваются данными по API.

До проекта производитель запускал акцию с перечнем товаров, минимальным и максимальным количеством и вознаграждением за упаковку. Аптека принимала участие в акции в отдельном сервисе, а заказ товара оформляла на платформе заказов вручную, заново подбирая позиции.

Между участием в акции и заказом не было связи: пользователь дважды проходил авторизацию, повторно вводил состав, не видел условия акции при заказе, а заказы по акции не отличались от обычных в учётной системе и в отчётности.

Была поставлена задача — обеспечить переход из акции сразу в черновик заказа без ввода логина и пароля, расчёт цен по прайс-листу каждого грузополучателя, контроль условий акции при редактировании, передачу заказа в учётную систему с признаком источника и возврат статусов в сервис акций.

Исследование

Разобрали путь пользователя от выбора товаров в акции до получения заказа и сопоставления его статуса с акцией. Изучили структуру данных акции в хранилище клиента: параметры самой акции, участие аптечных учреждений, товары с условиями и фактическую реализацию. Для каждого поля определили, участвует ли оно в интеграции.

Отдельно проработали правила ценообразования по прайс-листам грузополучателей, замену кодов товаров в ходе акции, порядок проверки активности и периода акции, повторные отправки заказов по одной акции и технические повторы запросов, а также действия при отсутствии доступа, прайс-листа или товара в наличии.

Ключевым стало решение вынести заказы по акции в отдельный раздел платформы — так сохраняются состав и сумма обычных заказов, а промо-заказ получает собственные признаки на уровне заказа и строк. Черновик не отправляется поставщику автоматически: пользователь проверяет состав, цены и итог и подтверждает заказ сам. Минимальное количество по условиям акции стало нижней границей редактирования, а максимальное — границей начисления справочного вознаграждения, а не запретом на заказ.

Решение

Реализовали сквозную интеграцию сервиса акций и платформы заказов — от выбора товаров до передачи заказа в учётную систему и возврата статусов.

Требования разделены на девять блоков: сквозная авторизация, API создания черновика, раздел промо-заказов, карточка черновика, недоступные позиции, оформление и передача в учётную систему, статусы, логирование.

Раздел промо-заказов содержит активные и архивные заказы, фильтры, сортировку, выгрузку в Excel и цветовую индикацию пяти статусов. В карточке черновика по каждой позиции видны условия акции, остаток, цена и сумма по прайс-листу грузополучателя и справочный бонус. Недоступные позиции остаются в черновике с причиной, но не передаются поставщику. При отправке добавляется комментарий с признаком источника. Для API определены состав данных, формат ответа и коды ошибок.

Технологии

Бэкенд: C#

Фронтенд: JavaScript, React

База данных: Oracle, PL/SQL

C#JavaScriptReactOraclePL/SQL

Результат

Клиент получил работающую сквозную интеграцию сервиса акций и платформы заказов.

Пользователь переходит из акции сразу в черновик заказа — без повторного ввода логина и пароля. Цены считаются по прайс-листу каждого грузополучателя. При редактировании система контролирует условия акции. Заказы по акции вынесены в отдельный раздел и не смешиваются с обычной корзиной, а их статусы возвращаются в сервис акций — участие в акции и заказ связаны в единую картину.