Интеграция chinaski.ru с МойСклад: мультисклад и сопоставление по артикулам
Интеграция InSales с МойСклад для chinaski.ru. Уникальная логика обмена по коду товара, чтобы заказы не создавали дубли. Мультисклад: производство и офлайн-магазин. Синхронизация остатков без промежуточной БД.
Задача
Магазин chinaski.ru на InSales использовал МойСклад для учета товаров. Была проблема: заказы с сайта попадали в МойСклад как новые позиции, создавались дубли.
Например, в InSales товар называется "Футболка синяя M", в МойСклад — "Футболка, размер M, цвет синий". Система создавала два разных товара вместо одного.
Также нужно было настроить работу с двумя складами: производство и офлайн-магазин. Остатки должны отображаться на сайте отдельно.
Решение: сопоставление по коду товара
Раньше использовалась промежуточная база данных — отдельная таблица, где хранились соответствия между товарами InSales и МойСклад. Это усложняло поддержку.
Переделали логику:
- ID варианта из МойСклад храним в скрытом свойстве варианта InSales
- ID варианта из InSales храним во внешнем коде МойСклад
- Промежуточная база данных больше не нужна
Зачем это нужно
Когда приходит заказ с сайта, система смотрит во внешний код МойСклад. Находит соответствующий товар и добавляет его в заказ. Дубли не создаются, все привязано по коду.
Функционал 1: Передача заказов
Выбор склада при самовывозе
Когда покупатель выбирает доставку "Самовывоз", заказ автоматически привязывается к складу офлайн-магазина. Если выбирает курьера — к складу производства.
Это делается через параметр store при передаче заказа в МойСклад API.
Синхронизация статусов InSales ← МойСклад
Когда менеджер меняет статус заказа в МойСклад (например, "Отправлен"), статус автоматически обновляется в InSales.
Покупатель получает уведомление по email об изменении статуса.
Создание документа отгрузки
Когда в InSales заказ переводят в статус "Отправлен", система автоматически создает документ отгрузки в МойСклад. Это списывает товары со склада и фиксирует продажу.
Функционал 2: Мультисклад
Настроили синхронизацию остатков с двух складов: производство и офлайн-магазин.
Сопоставление товаров
Система регулярно проверяет товары:
- Читает все товары из InSales
- Проверяет, есть ли они в таблице соответствий
- Если нет — ищет товар в МойСклад по артикулу
- Находит — записывает соответствие в таблицу
- Не находит — создает новый товар в МойСклад
Синхронизация остатков
Создали дополнительное поле в товарах InSales для остатков второго склада. Теперь на сайте видно:
- Склад 1 (производство): 15 шт.
- Склад 2 (магазин): 3 шт.
Алгоритм синхронизации
- Создаем дополнительное поле для второго склада в товарах InSales
- Редактируем Liquid-шаблон для вывода остатков на сайте
- Забираем все остатки из МойСклад через API
- Читаем соответствующие товары в МойСклад
- Сопоставляем товары с таблицей соответствий по артикулам
- Обновляем остатки в InSales, если они изменились
Технические детали
Скрытое свойство варианта
В InSales у каждого варианта товара можно создать дополнительные поля. Эти поля не видны покупателям, но доступны через API.
Мы храним там ID варианта из МойСклад. Когда создается заказ, система читает это поле и передает правильный товар в МойСклад.
Внешний код МойСклад
В МойСклад есть поле "Внешний код" — туда можно записать любой идентификатор. Записываем туда ID варианта из InSales.
Когда нужно обновить остатки в InSales, система ищет товары в МойСклад по внешнему коду.
Таблица соответствий
Несмотря на то, что основные ID хранятся в самих системах, осталась небольшая таблица для быстрого поиска. В ней хранятся:
- Артикул товара
- ID в InSales
- ID в МойСклад
- Дата последнего обновления
Liquid-шаблон для остатков
На сайте отредактировали шаблон карточки товара. Теперь выводятся остатки с обоих складов:
{% if product.stock_main > 0 %}
Склад производства: {{ product.stock_main }} шт.
{% endif %}
{% if product.stock_store > 0 %}
Магазин: {{ product.stock_store }} шт.
{% endif %}
Результат
- Заказы с сайта не создают дубли в МойСклад
- Сопоставление товаров работает автоматически по артикулам
- Не нужна отдельная промежуточная база данных
- Остатки с двух складов отображаются на сайте
- Статусы синхронизируются автоматически
- Документы отгрузки создаются при смене статуса
- Покупатели видят, где есть товар: на производстве или в магазине
Похожие кейсы
- Интеграция modbrand.ru с МойСклад
- Доставка perfectooo.ru с Яндекс.Такси и МойСклад
- Вывод остатков мультисклада в actrading.ru