Интеграция Битрикс и Эватор: единый каталог товаров

Не так давно мы стали счастливым обладателем собственного небольшого интернет-магазина комиксов и настольных игр. Естественно, мы его сделали на базе 1С-Битрикс в связке с собственным готовым решением Супермаркет. Иначе и быть не могло. Будучи ответственными предпринимателями, мы приобрели кассовый аппарат Эватор и в процесс эксплуатации столкнулись с вопросами синхронизации данных. Как мы их решили и насколько это сложно? Поведаем вам в материале ниже.

Эватор и 1С-Битрикс в структуре нашего интернет-магазина

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


Закупив товар, мы включаемся в работу по его учету. Нужно вести базу товара, учитывать складские остатки и организовать минимальный документооборот по движению номенклатуры, а именно приход, расход, списание. Учитывая небольшие масштабы, мы не стали использовать какое-то дополнительное программное обеспечение, типа 1С или МойСклад. Хотя стоит отметить, если в вашем магазине планируется от 1000 позиций, то без специализированных программ вряд ли получится обойтись. В нашем же случае достаточно встроенного в 1С-Битрикс функционала по складскому учету, который доступен в самой старшей редакции Бизнес. Подробнее о складском учете в интернет-магазине можно почитать в нашей прошлой статье.

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

Эватор, что за касса и какие возможности?

С момента вступления в силу 54-ФЗ онлайн кассы стали очень быстро распространяться. Компания Эватор и Атол очень популярны в этом сегменте. Наверно во много благодаря банкам, которые предлагают установить их своим клиентам - юридическим лицам.


Мы остановились на варианте Эватор 7.3 взяв его в аренду с полным обслуживанием в Сбербанке, где был открыт расчетный счет нашего нового юридического лица.

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

Ядром всей системы является Облако.Эватор. Там хранятся все данные по вашему аккаунту – товары, продажи, магазины, сотрудники и прочее. Сама касса выступает в роли терминала, который подключается к данному облаку и взаимодействует с ним как точка доступа.

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


Третью точку доступа вы можете создать сами используя широкие возможности API Эватор, которые позволяют подключаться к Облаку Эватор и управлять всеми вашими данными.

Централизованное управление каталогом

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

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


Собираем собственное приложение для Эватор

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

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

В Битриксе мы написали несколько операций с запросами и собрали простой и понятный интерфейс для работы. Операции получились такие:

Получение текущего списка товаров из кассы.

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

Используя curl мы делаем запрос на /api/v1/inventories/stores/search и в заголовке x-authorization передаем полученный из приложения токен. Как его получить описано в штатной документации.

Добавление товара в каталог кассы

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

Обновление данных по товару

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

Запрос к облаку используем тот же что и при добавлении товара, только uuid товара надо брать существующий в базе Эватора.

Резюме

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