Складской учет

Интеграция InSales с МойСклад для chinaski.ru. Уникальная логика обмена по коду товара, чтобы заказы не создавали дубли. Мультисклад: производство и офлайн-магазин. Синхронизация остатков без промежуточной БД.

Краткая информация

  • Проект chinaski.ru
  • Платформа InSales
  • Учетная система МойСклад
  • Функционал Мультисклад + Сопоставление
  • Склады Производство + Магазин

Задача

Магазин chinaski.ru на InSales использовал МойСклад для учета товаров. Была проблема: заказы с сайта попадали в МойСклад как новые позиции, создавались дубли.

Например, в InSales товар называется "Футболка синяя M", в МойСклад — "Футболка, размер M, цвет синий". Система создавала два разных товара вместо одного.

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

Решение: сопоставление по коду товара

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

Переделали логику:

  • ID варианта из МойСклад храним в скрытом свойстве варианта InSales
  • ID варианта из InSales храним во внешнем коде МойСклад
  • Промежуточная база данных больше не нужна

Зачем это нужно

Когда приходит заказ с сайта, система смотрит во внешний код МойСклад. Находит соответствующий товар и добавляет его в заказ. Дубли не создаются, все привязано по коду.

Функционал 1: Передача заказов

Выбор склада при самовывозе

Когда покупатель выбирает доставку "Самовывоз", заказ автоматически привязывается к складу офлайн-магазина. Если выбирает курьера — к складу производства.

Это делается через параметр store при передаче заказа в МойСклад API.

Синхронизация статусов InSales ← МойСклад

Когда менеджер меняет статус заказа в МойСклад (например, "Отправлен"), статус автоматически обновляется в InSales.

Покупатель получает уведомление по email об изменении статуса.

Создание документа отгрузки

Когда в InSales заказ переводят в статус "Отправлен", система автоматически создает документ отгрузки в МойСклад. Это списывает товары со склада и фиксирует продажу.

Функционал 2: Мультисклад

Настроили синхронизацию остатков с двух складов: производство и офлайн-магазин.

Сопоставление товаров

Система регулярно проверяет товары:

  1. Читает все товары из InSales
  2. Проверяет, есть ли они в таблице соответствий
  3. Если нет — ищет товар в МойСклад по артикулу
  4. Находит — записывает соответствие в таблицу
  5. Не находит — создает новый товар в МойСклад

Синхронизация остатков

Создали дополнительное поле в товарах InSales для остатков второго склада. Теперь на сайте видно:

  • Склад 1 (производство): 15 шт.
  • Склад 2 (магазин): 3 шт.

Алгоритм синхронизации

  1. Создаем дополнительное поле для второго склада в товарах InSales
  2. Редактируем Liquid-шаблон для вывода остатков на сайте
  3. Забираем все остатки из МойСклад через API
  4. Читаем соответствующие товары в МойСклад
  5. Сопоставляем товары с таблицей соответствий по артикулам
  6. Обновляем остатки в 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 %}

Результат

  • Заказы с сайта не создают дубли в МойСклад
  • Сопоставление товаров работает автоматически по артикулам
  • Не нужна отдельная промежуточная база данных
  • Остатки с двух складов отображаются на сайте
  • Статусы синхронизируются автоматически
  • Документы отгрузки создаются при смене статуса
  • Покупатели видят, где есть товар: на производстве или в магазине

Похожие кейсы

Технологии

InSales МойСклад Мультисклад API интеграция Liquid Складской учет Синхронизация E-commerce