Разработка интернет-магазина лекарств со сложными SKU и системами учета

Василий Ш.
Провизор Леопольд Григорьевич продавал свояченице брандмейстера «крем Анго против загара и веснушек, придает исключительную белизну коже». Свояченица брандмейстера, однако, требовала «пудру Рашель золотистого цвета, придает телу ровный, недостижимый в природе загар». Борьба столь противоположных продуктов парфюмерии длилась полчаса.
Ильф Илья, Петров Евгений. Двенадцать стульев
 

В конце 2018 года мы разработали интернет-магазин для сети аптек. Запуск ожидается в первой половине 2019 года, производится наполнение контентом.

Заказчик проекта — крпуная фармацевтическая компания (далее ФК) занимает 376 место в Рейтинге РБК ТОП-500 Крупнейших компаний России. Компания улучшила в рейтинге показатели на 102 позиции за год.

По объему коммерческих продаж по итогу 2017 года «ФК» вошел в пятерку крупнейших Фармацевтических дистрибьюторов России.

В статье расскажем про трудности (законодательные и технические), которые встретились на пути, и о том как мы добились успеха.

Торговля лекарствами через интернет в 2018-2019

Рынок лекарственных препаратов — зрелый и насыщенный, при этом сильно зарегулированный. Реклама препаратов ограничена, «старые» механизмы, например, беседа медпредставителя с действующим врачом, всё больше отходят в прошлое (формально запрещены).

Конкуренция в оффлайне высокая. Выход в онлайн каждой крупной сети — создание нового канала продаж и продвижения, обязательное условие для сохранения бизнеса.

Интернет-аптека — это особый вид интернет-магазина. Чем она отличается от «обычного» магазина?

Во-первых, свойства и описания товаров — одинаковые в разных сетях. Их источник, как правило, инструкции к лекарствам.

Во-вторых, эти свойства достаточно специфичны, и не всегда понятны. Например, «действующее вещество». Что это такое? А если назвать его вообще «международным непатентованным наименованием»? В то же время, для части пользователей, такие свойства нужны, и именно по ним они и ищут препараты.

И, в-третьих, самое главное: законодательство РФ. В соответствии со ст. 54 Федерального закона от 12.04.2010 N 61-ФЗ «Об обращении лекарственных средств» дистанционная продажа рецептурных лекарств запрещена. Совсем. Как же тогда существует это формат?

Никакой дистанционной продажи, согласно закону, в онлайн-аптеках не производится. «Заказ» в таком магазине — это бронирование и предварительная заявка для покупки уже в обычной оффлайновой-аптеке. Оплата на сайте не принимается: только в торговой точке. В традиционном онлайн-магазине такая форма называется «оплата при получении».

Это не все особенности, превращающие сеть аптек в нетиповой интернет-магазин.

Интернет-магазин: готовое решение или разработка

Существуют готовые интернет-магазины (не специализированные аптечные, а универсальные), в случае Битрикса их сотни, если не тысячи. Они продаются в marketplace, легко настраиваются, работают.

В каком случае нужна разработка магазина с нуля?

Уникальный дизайн — в готовом решении его не получить. Хорошо, что ещё?

Необычные торговые предложения

Что такое товар и что такое торговое предложение. С товаром всё понятно — мы пришли в магазин (обычный или интернет — неважно), положили в корзину упаковку, оплатили, получили.

А вот для самого магазина всё несколько сложнее. Два одинаковых товара на полке по одинаковой цене, но разного объема — это одна позиция в системе учёта или две? А если по телефону просят именно 125 мл, а не 500 — они есть у нас в наличии? А если есть два одинаковых товара, но они из разных поставок и имеют разную цену? При этом у них всё общее: артикул, штрихкод, описание. Различается только цена и срок годности.

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

Для такого случая придумано понятие «Торговые предложения» — SKU (stock keeping unit). Учёт не просто наличия товара, а наличия по некой характеристике. «В наличии 5 флаконов 125 мл, 4 — 500 мл». При этом «общее» этих препаратов хранится и управляется в одном месте. Не нужно править свойства отдельно в маленьких, отдельно в больших: это не разные товары, это «модификации» одного.

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

Проблема рождается, если нужно использовать SKU «не совсем такие, как обычно». Например, что если у нас разные цены в разных городах? Нужно «связать» города и торговые предложения. Скорее всего, в системе учёта нет справочника городов, если есть, то он не такой, какой нужен на сайте. Да, кстати, а при расширении сети и добавлении новых городов — как и что будет происходить?

Решений такого вопроса много. Универсальных нет. Найти готовый магазин, умеющий работать с предложениями по городам, навряд ли возможно (нам не удалось). Изменить его логику — уже нет. Это будет равно по трудоёмкости разработке с нуля. Бизнесу и принципам учёта товаров может не хватить любой мелочи, ровно так же и как сайту.
С такими торговыми предложениями магазин уже нетиповой.

Многорегиональность, геозависимость контента

Многорегиональные сайты распространены. Автоопределение местоположения пользователя — функция стандартная.
Разный контент для разных городов — это сложнее.

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

Доставки, оплаты, заказ в конкретную точку

Указание пункта самовывоза при оформлении заказа — стандарт. Доступность товаров только для части точек, тоже имеет несколько решений: не давать совершить заказ, рассчитывать довоз до точки, если на ней нет части выбранных товаров, разбивать на два заказа с самовывозом из разных точек, и так далее...

Для каждого города своя цена, для каждой точки своё наличие. У препарата на конкретной точке нулевое наличие, а заказ всё равно можно оформить? И не на условиях «предзаказа», а неотличимо для покупателя от «обычного» заказа?

Готовых решений такого уровня детализации не существует.

Это только три причины (не считая уникального дизайна), по которым для аптечной сети потребовалась индивидуальная разработка магазина.

«Сердце Карелии», «Сердце Московии», «Сердце Брянска»…

Когда заказчик к нам обратился, не существовало никакой основы для будущего магазина. Была разрозненная группа региональнальных корпоративных сайтов без каталога. Отдельно для Карелии, отдельно для Москвы, Московской области, Брянска и так далее. При этом сеть является федеральной и одной из крупнейших по данным alpharm.ru.

В начале работы мы провели анализ крупнейших аптек России, агрегаторов, среди которых 366.ru, rigla.ru, apteka.ru и eapteka.ru.

Написали Концепцию сайта. Определили пользовательские сценарии. Функции, удовлетворяющие потребности аудитории. Структуру сайта. Пути привлечения пользователей на сайт. Создали прототипы страниц:

Структура сайта сети аптек

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

Интеграция с системой учёта типового магазина. Остатки, цены, заказы

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

Из системы учёта на сайт отправляется информация о товарах, для торговых предложений — остатки и цены. С сайта в систему учёта — информация о совершенных заказах; обратно — «отклик» магазина о заказах: смена статусов.

Коротко, стандартная схема выглядит так:

Обмен сразу с двумя источниками данных

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

В справочнике «Spring» содержится только информация о товарах: описания, фото, свойства. В «Юнико» — только цены и остатки на точках. Ввести описание невозможно по техническим причинам (как утверждает «Юнико»)

Управляют системами подрядчики — это не представители заказчика.

Пришлось строить обмен с двумя системами. Нас выручил механизм Битрикс, и само понятие торговых предложений, описанное выше. Описания, фото, весь ассортимент — это товары. Наличие и цены — SKU.

Таким образом, каждая система обменивается со своей «сущностью» сайта.

Товары и их SKU должны быть связаны. В большинстве случаев, одна из систем знает «правду», имеет максимально актуальную информацию. В нашем случае, записи о товарах и наличии связаны уникальным ключом. Ключ хранится в двух разных системах учёта и на сайте (то есть, в сумме в трёх разных информационных системах). «Точки правды» нет. Это породило несколько интересных коллизий, потребовавших разрешения.

Архитектура обмена товарами

Системы, участвующие в обмене, интегрированы не только с сайтом. Архитектура сложнее. Из системы учёта с остатками делается выгрузка во вторую систему учёта. Она делает выборку по уникальным вхождениям. Заполняет свойства (вес, производитель и т.д.) и из ТРЕТЬЕЙ загружает текстовое описание товаров и фото. Хорошо, что загрузка фото и описания для нас (для сайта) осталась «за кадром».

Каталог из свойств товаров, не отдельным документом

В стандартном обмене Битрикс данными каталог выгружается отдельно: cначала выгружается каталог, затем товары. Заранее известна иерархия рубрик, товары «прикрепляются» к уже известным разделам.

В нашем случае, каталог не выгружается. Рубрикатор не существует в явном виде ни в одной системе учёта. Зато имеется «тематический указатель», известно, что некоторый препарат — это «антибиотик», а «антибиотик» — «лекарственный препарат». У каждого товара есть два свойства, определяющие его положение в указателе (но самого указателя отдельно нет).

То есть, стандартный механизм «перевернут» с «ног на голову». Пришлось делать обмен так, что на каждом шаге происходить проверка «есть ли такие рубрики, как разделы указателя в свойствах товара», и если нет — создавать их. Создание товаров и каталога выполняется одновременно.

Всегда полная выгрузка

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

Так как используется две системы учёта, нельзя выполнить выгрузку изменений. Ни одна система не знает о другой 100% информации, и нельзя быть уверенным, что данное «изменение» уже известно другой системе.

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

Количество торговых предложений интернет-магазина сети аптек

Для каждой точки выгружаются остатки и цены именно этой точки. В итоге, количество sku равно количеству товаров × количество товаров на каждой точке.
На данный момент получилось более одного миллиона товаров. Цифра растёт.

Битрикс отрабатывает штатно. Работает поиск, умный фильтр, сортировка, всё быстро.

Обмен заказами

Каждый заказ отправляется сразу в конкретную торговую точку. В каждой аптеке свой экземпляр системы учёта. Заказ через центральную систему до точки будет идти слишком долго.

То есть с одним сайтом интегрировано 200 информационных систем. И с каждой новой точкой эта цифра растёт.

Скорость вместо перфекционизма. Итерации и постоянное развитие.

На этапе разработки дизайна нами было подготовлено удобное, индивидуальное устройство корзины и оформления заказа.
Из анализа конкурентов понятна востребованность показа разных аналогов, по разным признакам для каждой отдельной позиции.

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

А к этим функциям мы вернемся во второй итерации.

Любому хорошему ресурсу всегда есть что добавить. Любой магазин требует развития. Объяснимым страхом является нежелание открывать сайт «без всех запланированных функций». Правильно — сделать необходимое, начать получать деньги уже сейчас, а потом развивать.

В случае с «Сердцем России» всё именно так. Магазин готов и принесёт бизнесу федеральной сети аптек много пользы. Тем временем, мы приступаем к новой итерации улучшений.

Создание не сайтов, а инструментов для бизнеса

ИНТЕРВОЛГА — компетентный веб-интегратор. Разработка сложных продуктов, построение связей между системами, вывод бизнеса в онлайн — наша специализация и ежедневная работа.

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

Тоже может быть интересно:

Оцените статью
20.02.2019
Понравилась статья?
Поделитесь ссылкой с друзьями и коллегами!

Статьи по теме

Выжимаем максимум скорости из PHPКогда дело доходит до запуска PHP-приложений, выбор подходящего веб-сервера критически важен. Цель статьи — помочь в выборе оптимального решения для своих проек...
Организация поиска на сайте: выбираем между поиском Битрикса, Sphinx и ElasticsearchВ статье разбираем популярные поисковые движки, чтобы выбрать лучший под задачи конкретного проекта. Даем советы по индексации каталога и построении «умного» фи...
Доработка системы LMS KnomaryMust have для бизнеса, где главный актив это люди, — стратегия обучения и развития персонала. Рассказываем как помогли доработать LMS-систему для компании ЕВРАЗ...
«Как раньше» больше не работает — B2B-система продаж сейчасВ этой статье хотим поговорить с чем сейчас сталкивается оптовый бизнес (множеством вызовов и изменений, которые требуют адаптации, а также оптимизации процессо...
Интеграция B2B-платформы на Битрикс с системой авторизации KeycloakВ период бурного роста компании менеджмент учетных записей сотрудников и клиентов может стать проблемой. Решение — интеграция с брокером авторизаций Keycloak ил...
Разработка календаря бронирования для сайта на Битрикс авиационного учебного центраЧтобы пилоты авиакомпаний могли бронировать время своих тренировок в учебном центре, мы разработали для них удобный модуль бронирования времени. Рассказываем по...
Мы работаем по одному из двух форматов:
  • аренда команды (от 2 человек, не менее 3 месяцев);
  • итерации с фиксированной ценой (1-3 месяца длительностью).
ИНТЕРВОЛГА предоставляет:
  • регулярные онлайн-планерки с заказчиком;
  • квалифицированных специалистов;
  • организованную команду (находятся в одном помещении, что упрощает решение рабочих вопросов);
  • полную прозрачность и регулярность отчетов о результатах.
Ключевые услуги:
  • нагруженный интернет-магазин;
  • личный кабинет;
  • оптовые продажи — B2B-платформа;
  • маркетплейс;
  • технический аудит сайта;
  • Битрикс24 — корпоративные HR-порталы;
  • Битрикс24 — построение CRM-системы;
  • Битрикс24 — личные кабинеты сотрудников;
  • Битрикс24 — аудит портала;
  • 1С — интеграция с другими системами;
  • 1С — доработка системы;
  • маркетинг — комплексное интернет-продвижение;
  • маркетинг — продвижение для B2B.
Хотите получать лучшие статьи от INTERVOLGA раз в месяц?
Подпишитесь на рассылку — спамить не будем