Перейти к содержимому

Учёт остатков в Serkl: чтобы не продать дважды то, чего уже нет

  • АМ
    Артем МаршалкинОснователь Serkl
Три блока разбора: приход и размещение, видимость в каналах, резерв при оформлении

Главная боль магазина в нескольких каналах одновременно — продать одну и ту же единицу товара два раза, через сайт и через Telegram, в течение пяти минут. На Serkl такой сценарий заранее перекрыт: на каждый артикул — один общий остаток, видимый сразу во всех каналах, и резерв ставится в момент оформления заказа, а не оплаты. Разбираем, что происходит с товаром в магазине от прихода до отгрузки и где у Serkl граница.

Эта статья написана командой Serkl — мы заинтересованная сторона. Старались показать и сильные стороны, и места, где учёт остатков в Serkl пока не дотягивает. Если кажется, что недостаточно критичны — напишите, поправим.

Самая болезненная история в магазине, который продаёт сразу в нескольких местах, — продал последнюю единицу дважды. Через сайт оплачивает один покупатель, через Telegram второй, разница в пять минут. Один заказ отгружается, второй приходится возвращать с извинениями, скидкой на следующий раз и минусом доверия. История стоит дешёво на одном эпизоде, дорого на десятом — продавец перестаёт верить собственным цифрам и заводит отдельную табличку «реальные остатки».

Эта ситуация — не про невнимательность. Она про то, что у магазина нет одной общей цифры остатка, видимой во всех каналах продаж. Когда такая цифра есть и она обновляется в момент оформления заказа (а не оплаты), второй покупатель уже видит «нет в наличии» — независимо от того, в каком канале он пытается купить.

Дальше — про то, как такая цифра собирается в Serkl, через какие точки она проходит вместе с товаром (приход, продажа, отмена, возврат) и где у этой схемы есть рамка.

Приход и размещение: артикул как место, в которое можно положить

Первое движение — товар появляется в магазине. Продавец привёз 20 кружек коллекции «Лето» в двух вариантах: 12 синих и 8 зелёных. Прежде чем эти кружки можно показать покупателю, у магазина должно быть место, в которое они кладутся учётно.

Это место в Serkl — артикул. Артикул — отдельная учётная единица на каждый продаваемый вариант (а не на товар целиком). Синяя кружка 350 мл и зелёная кружка 500 мл — два разных артикула. Не один товар «Кружка Лето» с количеством 20 штук, а две карточки в учёте, у каждой своё количество и своя история.

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

Артикул всегда привязан к варианту товара в каталоге. Меняется вариант — это другой артикул. У каждого артикула — уникальный код (продавец задаёт сам или код подставляется автоматически) и учётный признак: ведём по нему остатки или нет. Услуги, цифровые товары, товары под заказ от поставщика — учёт не ведётся. Кружки на полке — ведётся.

И второе место для прихода — склад. Склад в Serkl — это физическая точка, где артикул лежит. Дом, мастерская, угол у курьера, ПВЗ-консолидатор, магазин на Тверской. На каждом складе — свой остаток для каждого артикула. Один артикул может лежать сразу на нескольких складах: 7 синих кружек дома, 5 в мастерской — итого 12. Приход заводится в админке так: «пришло 12 шт. артикула KER-LETO-BLU-350 на склад "дом", 0 на склад "мастерская"», и продавец дальше распределяет руками.

В стартовой версии Serkl все склады равноправны: общий остаток по всем складам показывается покупателю как одна цифра, без выбора склада за продавца. Какой склад использовать при сборке — продавец решает сам. Приоритеты складов («сначала с ближайшего к покупателю», «сначала с того, где меньше всего») — в наших планах, срок не зафиксирован.

Видимость в каналах: одна цифра для всех точек продаж

После прихода товар нужно показать. Магазин в Serkl — один. Каналы продаж (веб-витрина, мини-приложение в Telegram, страница в VK) — это разные точки одного и того же магазина, с одной общей базой товаров и одной общей базой остатков.

Это значит, что синхронизация по каналам — не «выгружаем из админки в каждый канал по расписанию каждые 15 минут», а свойство архитектуры: каждый канал привязан к тем же складам, что и остальные, и у каждого артикула есть одна доступная цифра, общая для всех каналов. Эта цифра одновременно видна на сайте, в мини-приложении в Telegram и в группе VK. Продавец списал артикул со склада или зарезервировал его под заказ — доступная цифра обновляется, и через секунду в любом канале её видно одинаково. Никакой задержки, никакой кнопки «обновить остатки в Telegram», никаких писем «упс, последняя продалась пять минут назад в другом канале».

Здесь же видна разница с маркетплейсами. Магазин в Serkl — это ваш собственный магазин в нескольких каналах продаж, и он работает как одно целое. Wildberries, Ozon, Я.Маркет — другая категория. Это не «ещё одна витрина магазина», а вторая система, между которой и Serkl ходят остатки. На старте такое подключение делается через выгрузку и периодический обмен — отдельной статьёй («Маркетплейсы и Serkl», планируется).

Дополнительно к видимости в каналах — уведомления при низких остатках. Эта функция в наших планах, срок не зафиксирован: продавец задаст один раз порог («предупредить, если осталось две штуки или меньше»), и когда какой-то артикул проседает — придёт уведомление в админку или на email. На старте такого механизма нет — продавец отслеживает низкие остатки глазами, открывая список артикулов в админке, и сам подаёт сигнал «пора заказывать поставку».

Резерв при оформлении: точка, где закрывается двойная продажа

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

Это закрывается резервом. Резерв — отметка на остатке, что артикул уже занят под оформленный заказ. У каждого артикула есть три цифры:

  • На остатке — сколько физически лежит на складах.
  • В резерве — сколько уже обещано под оформленные заказы.
  • Доступно = на остатке минус в резерве. Это и есть та цифра, которая видна во всех каналах продаж.

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

Дальше у резерва типичный жизненный цикл:

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

Главный смысл этой ткани — после первого оформления второй покупатель в любом канале видит в корзине «нет в наличии». Сценарий «два покупателя оплатили одну кружку с разницей в пять минут» закрыт не правилом, не предупреждением, а тем, что между «оформил» и «оплатил» уже стоит флажок «занято».

Подробнее про заказы и оплату — в «Как устроены Заказы и продажи на Serkl». Про передачу перевозчику, расчёт стоимости и трекинг — в «Как устроена Доставка на Serkl».

Где учёт упирается: партии на приходе, серийники на отгрузке, расхождения при инвентаризации

Граница продукта видна не отдельной H2 «Чего нет», а в тех узлах, где она становится тонкой.

На приходе — нет партионного учёта (FIFO/LIFO). В Serkl остаток артикула — одна цифра, без разбивки по партиям с датой поступления и закупочной ценой. Если бизнес устроен на партиях — продукты с разным сроком годности, ткани с разным метражом, фарма с разными сериями, — этого не хватит. Тогда нужен МойСклад или 1С: Управление торговлей, под которые партии — родная задача. Партионный учёт в наших планах, срок не зафиксирован.

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

На размещении — нет автоматического выбора склада «откуда отгрузить». Все склады равноправны, доступная цифра общая. Если у магазина 20+ складов и нужны приоритеты, автоматические переводы между складами и штрихкодирование на каждой полке — это другой класс задачи, под него — МойСклад или . Приоритеты складов в наших планах, срок не зафиксирован.

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

На связи с поставщиками — нет полноценной интеграции. Приход заводится вручную: в админке отмечается «пришло 20 шт. на склад "дом"». Электронные накладные с автоматическим списанием в кредит и обновлением остатков — в наших планах, срок не зафиксирован. Если в бизнесе обязательная первичка по 1С-формату и обмен по электронному документообороту — это сейчас не покрывается.

Лимиты по тарифам. Количество одновременно подключённых складов зависит от тарифа: на младших — один-два склада, на старших — больше; на верхнем тарифе жёсткого лимита нет. Точные цифры — на странице тарифов /pricing, они могут меняться.

Куда смотреть, если рамка стартовой версии не подходит:

  • МойСклад — российский SaaS специально под склад: партии, серийники, FIFO/LIFO, штрихкодирование, инвентаризации с актами. Подходит, если складской учёт — основная часть бизнеса.
  • 1С: Управление торговлей — для бизнеса с печатью первички, обменом с поставщиками по электронному документообороту и сложной матрицей учёта. Требует внедрения и обычно подрядчика.
  • Битрикс24 + 1С — если уже работаете в экосистеме Битрикса.
  • Своё решение — если есть инженер на подряде и точная складская логика, которой нет на рынке готовой.

Граница — не недостаток продукта, а признание разницы классов: что-то покрывается магазином на Serkl, что-то — отдельной складской системой. Когда дорастёте до партий, серийников или сложных схем отгрузки — этот раздел поможет понять, в какой узел смотреть.

Возвращаясь к двум покупателям и одной кружке

Сценарий из открытия в магазине с правильно собранным учётом остатков просто не случается. Когда первый покупатель доходит до экрана «оформить заказ» на сайте, в эту секунду доступная цифра становится «нет в наличии» — и второй покупатель в Telegram её такой и видит. Не через 15 минут, не после нажатия «обновить», а в моменте: одна цифра обновилась, и в этом обновлении упакована вся работа учёта остатков — артикул как учётная единица, склад как точка хранения, резерв как флажок «занято под заказ».

В админке у продавца — одна цифра на каждый артикул, видимая в любом канале продаж. Никаких таблиц в Excel, никакой ручной синхронизации, никаких разговоров «увы, последняя продалась пять минут назад». И если в этом году бизнес дорастёт до партий, серийников или сложной матрицы складов — будет понятная точка, в которой надо переезжать на МойСклад или 1С.

Связанные статьи:

Артем Маршалкин — основатель Serkl Platform. Раньше запускал магазины с оборотом до 1 млн ₽/мес.

Получайте новые статьи о мультиканальных продажах прямо в почту.

Нажимая «Подписаться», вы соглашаетесь с обработкой email согласно Политике конфиденциальности.

Понравилась статья? Приходите к нам в команду.

Serkl строит мультиканальную платформу для малого бизнеса.

Serkl в Telegram

Новости продукта, анонсы и короткие заметки команды.

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