22.01.2018

Интеграция кассового сервиса «VirtualPOS» и «Битрикс»

virtualpos

Сервис VirtualPOS - это сервис, позволяющий розничному бизнесу вести управление и аналитику продаж через один web-интерфейс. Функционал платформы обеспечивает работу полноценной интернет-витрины, кассы, склада и системы аналитики. Для интеграции со сторонними сервисами VirtualPOS предоставляет доступ к данным средствами собственного API. Именно методы этого интерфейса стали основой для нашей разработки.

Проблема

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

Покупатели интернет-магазина K.Plus под управлением CMS 1С:Битрикс всегда должны видеть на сайте актуальное наличие товара в точке выдачи, которая географически находится рядом с его домом. Кассир-продавец не должен отправлять покупателя на другой конец города, если продажу можно совершить тут и сейчас. VirtualPOS позволяет вести операционную дейтельность с номенклатурой, складом и заказами. Остатки на складе VirtualPOS должны быть синхронизированы с остатками в каталоге интернет-магазина. Новый заказ на сайте должен быть моментально отображен в облачном кассовом сервисе.

Решение

В нашем решении VirtualPOS является источником, где уже создана структура номенклатуры и склада. Мы реализовали экспорт этих объектов на сайт K.Plus. А уже после создания нового заказа выполняется выгрузка покупки в противоположном направлении - в облачную систему.

virtualpos

Общая структура каталога товаров.

VirtualPOS разделяет товары на группы. На стороне Битрикс создается аналогичная структура дерева разделов каталога. Характеристики и атрибуты товаров переносятся как свойства инфоблока. Одинаковые товары с разными характеристиками группируются в торговые предложения.

Общая структура складов и остатков.

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

Общая структура заказов.

После оформление нового заказа в интернет-магазине такой же заказ экспортируется на сервер VirtualPOS. Изменение статусов заказа отслеживается и переносится в облако.

Как это работает

Для решения нам понадобился удобный и понятный программный интерфейс API VirtualPOS для получения, добавления и изменения данных. А удобен он тем, что запрос строится в одну строчку, если использовать php библиотеку cURL. Данные выгружаются по http протоколу. Формат на выбор - XML или JSON.

Используя функции cURL и Bitrix Framework мы написали собственные методы, которые позволили нам связать два источника. Таком образом для каждой задачи мы создали отдельные скрипты:

  • синхронизация разделов каталога и товаров. Скрипт выполняет импорт и обновление всех: разделов и товаров. Выполняется полное обновление элемента, если такой существует. Если если элемента нет в инфоблоке, то он будет добавлен.
  • обновление складов. Выполняет создание и обновление данных о складах: название, активность, адрес, описание, телефон, время работы.
  • обновление остатков и цен всех товаров каталога. Выполняется ежедневно.
  • обновление остатков для одного товара. Используется на детальной странице товара, и в корзине.
  • фильтр списка магазинов доступных для доставки. Вызывается после формирования всех данных компонента "оформления заказа" на этапе заполнения формы заказа. Возвращает матрицу остатков всех товаров корзины и сохраняет ее в результат работы компонента.
  • экспорт нового заказа на сервер VirtualPOS, изменение товаров уже созданного заказа. Происходит по событию сохранения заказа.
  • устанавливает статус заказа на сервере VirtualPOS. Вызывается при сохранении заказа, когда статус заказа был изменен или сохраняемый заказ был отменен.

Процесс

Для работы сайта K.Plus полное обновление разделов и товаров, а также складов, выполняется раз в сутки. Остатки и цены синхронизируются несколько раз в день. Для запуска скриптов в указанное время на сервере используется программа cron. Результаты обновлений пишутся в лог-файлы. Другие скрипты требуют исполнения в определенный момент. Например, когда на сайте создан новый заказ. В этом случае для вызова нашего скрипта используется система “событий” движка Битрикс.

Заключение

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