Несколько складов интернет-магазина: как настроить склады и остатки
Если товар хранится на нескольких складах, покупатель всё равно должен видеть одну понятную цифру — сколько единиц реально можно купить сейчас. Для этого разделяют физический остаток, резерв под оформленные заказы и доступное к продаже количество, задают правила выбора склада и договариваются, как эти данные попадают на сайт из учётной системы. Ниже — порядок действий, развилки и проверки, которые помогают выстроить склады и остатки интернет-магазина без двойных продаж и ручных правок.
Задача бизнеса и границы решения
Несколько складов появляются по разным причинам: у компании есть розничная точка и отдельный оптовый склад, товар хранится в разных городах, часть позиций лежит у подрядчика, часть — на маркетплейсе. Пока склад один, вопрос «сколько у нас товара» решается одной цифрой. Как только складов становится два и больше, та же цифра распадается на несколько: сколько физически лежит, сколько уже обещано покупателям и сколько можно продать прямо сейчас.
Границы решения важно зафиксировать до настройки. Сайт показывает доступность и принимает заказы, но он не заменяет систему учёта и не является первоисточником остатков. Первоисточником обычно остаётся учётная система или товароучётный сервис, а магазин получает оттуда данные и отображает их. Если эту границу не обозначить, команда начинает спорить, где «правильная» цифра, и правки вносятся то на сайте, то в учёте.
Ответственный за процесс тоже должен быть один. Обычно это операционный руководитель или руководитель склада, который отвечает за фактическое наличие, плюс администратор магазина, который отвечает за то, как данные отображаются и обновляются. Разработка интернет-магазина разработка интернет-магазина здесь решает техническую часть: как связать склады, остатки и оформление заказа, но правила приоритета и сроки резерва задаёт бизнес.
Физический остаток, резерв и доступность
Три величины, которые нельзя смешивать:
- Физический остаток — сколько единиц товара реально лежит на складе по данным учёта.
- Резерв — сколько единиц уже обещано покупателям, но ещё не отгружено.
- Доступность к продаже — сколько единиц можно предложить новому покупателю.
Доступность к продаже рассчитывается как физический остаток минус резерв. Если вычитать резерв не нужно, магазин продаёт один товар дважды: первый покупатель оформил заказ, товар ушёл в резерв, но на витрине цифра не изменилась, и второй покупатель покупает ту же единицу.
В учётных системах для интернет-магазина обычно есть два режима: количественный учёт и складской учёт. Количественный отвечает за общее число единиц, складской — за распределение по конкретным складам. Резервирование — механизм, который фиксирует единицу за конкретным заказом. Эти три сущности связаны, но настраиваются по-разному, и включать складской учёт имеет смысл только тогда, когда бизнес готов вести остатки по складам, а не одной общей цифрой.
Почему нельзя показывать только физический остаток
Физический остаток без вычета резерва выглядит привлекательнее для покупателя, но приводит к отменам и переписке. Покупатель видит «5 штук», оформляет заказ, а менеджер выясняет, что четыре из пяти уже обещаны. Отмена заказа после оплаты — самый дорогой сценарий: возврат денег, потерянное доверие, ручная работа поддержки.
Что показывать, если доступность нулевая
Если доступность равна нулю, у магазина есть выбор: скрыть товар из выдачи, показать «нет в наличии» или предложить подписку на поступление. Решение зависит от того, есть ли смысл удерживать покупателя на странице. Подписка на товары и услуги — отдельный механизм, который стоит включать осознанно, иначе он собирает адреса людей, которые уже купили в другом месте.
Как распределить товар между складами
Когда складов несколько, нужно правило, с какого склада отгружать заказ. Без правила менеджер каждый раз решает вручную, а покупатель видит то одну цифру, то другую.
Приоритет склада отгрузки
Самый простой вариант — задать порядок складов: сначала основной, затем резервный. Тогда система пытается собрать заказ с основного склада, а если товара не хватает, добирает с резервного. Такой порядок понятен сотрудникам и легко проверяется.
Что делать, если на одном складе не хватает
Возможны три подхода:
- Собирать заказ целиком с одного склада, а при нехватке — переносить на другой.
- Разрешать частичную сборку с нескольких складов, если это не удорожает доставку.
- Запрещать смешивание и предлагать покупателю два отдельных заказа.
Выбор зависит от логистики. Если склады в разных городах, смешивание почти всегда увеличивает срок и стоимость доставки, поэтому его лучше не разрешать автоматически.
Самовывоз и адрес склада
Если покупатель забирает товар сам, склад становится частью выбора пункта выдачи. Тогда в оформлении заказа нужно показывать, с какого адреса доступен товар, и не предлагать самовывоз со склада, где позиции нет. Это частая причина конфликтов: покупатель приезжает за заказом, а товар лежит в другом месте.
Конкурирующие покупки последней единицы
Последняя единица — самый чувствительный случай. Два покупателя одновременно оформляют заказ, и оба видят, что товар есть. Что произойдёт, зависит от того, когда именно возникает резерв.
Если резерв ставится в момент оформления заказа, первый покупатель забирает единицу, второй получает отказ или предложение подождать. Если резерв ставится после подтверждения менеджером, риск двойной продажи возрастает. Компромисс — резервировать сразу, но с ограниченным сроком: если заказ не оплачен или не подтверждён за отведённое время, резерв снимается и товар возвращается в доступность.
Срок резерва
Срок резерва — это договорённость бизнеса, а не техническая настройка по умолчанию. Слишком короткий срок снимает резерв с заказов, которые покупатель ещё оплачивает. Слишком длинный — замораживает товар под заказы, которые уже не состоятся. Разумно задать срок, исходя из среднего времени обработки заказа, и пересматривать его при жалобах.
Что делать при отмене
При отмене заказа резерв должен сниматься, а товар — возвращаться в доступность. Это звучит очевидно, но на практике отмены часто обрабатывают вручную, и остатки расходятся с реальностью. Стоит заранее решить, какие статусы заказа снимают резерв, а какие нет, и проверить это на тестовых заказах.
Обмен с учётной системой: остатки на складе
Если учёт ведётся во внешней системе, магазин получает остатки из неё. Типовой сценарий — обмен с 1С, где остатки на складе уже ведутся по правилам бухгалтерии и склада. Магазин не должен придумывать свои цифры: он показывает данные из учётной системы, скорректированные на резервы, созданные на сайте.
Что важно согласовать до настройки обмена
- Какие склады участвуют в обмене и как они называются на сайте и в учёте.
- Как часто обновляются остатки и что происходит, если обмен не прошёл.
- Что считается источником истины при расхождении.
- Как передаются цены и как они связаны с остатками.
Названия складов должны совпадать или быть сопоставлены. Если в учёте склад называется «Основной», а на сайте — «Склад №1», сопоставление задаётся явно, иначе остатки попадут не туда.
Что делать с расхождениями
Расхождения между сайтом и учётом неизбежны: обмен идёт по расписанию, а продажи происходят непрерывно. Задача не в том, чтобы их полностью исключить, а в том, чтобы они были предсказуемыми и не приводили к продаже несуществующего товара. Для этого доступность считают с запасом по резервам и проверяют обмен по журналу: сколько позиций обновилось, были ли ошибки, когда прошёл последний успешный обмен.
Права доступа и публичная часть складского учёта
Когда складской учёт включён, у него появляется публичная часть — разделы, где сотрудники видят остатки по складам. Доступ к этим разделам нужно настраивать отдельно: не каждый менеджер должен видеть все склады и все цифры. Настройка прав доступа к разделам складского учёта — обязательный шаг, иначе либо все видят лишнее, либо нужные сотрудники не могут работать.
Кто что должен видеть
- Руководитель склада — остатки по всем складам и движения.
- Менеджер продаж — доступность к продаже, без внутренних деталей учёта.
- Поддержка — статус резерва по конкретному заказу.
- Покупатель — только доступность к продаже, без разбивки по складам, если бизнес не продаёт с конкретного адреса.
Если компания работает с оптовыми клиентами, остатки и цены под клиента — отдельная задача, которая решается в B2B-портале для оптовых продаж: личный кабинет, остатки и цены под клиента. Смешивать её с розничной витриной не стоит: у опта другие правила резерва и другие объёмы.
Сценарии остатков
Ниже — набор сценариев, которые стоит проговорить до настройки. Таблица помогает выбрать поведение магазина в каждом случае и назначить ответственного.
| Сценарий | Что видит покупатель | Что происходит с резервом | Кто отвечает | Как проверить |
|---|---|---|---|---|
| Товар на одном складе, запас есть | Доступное количество | Резерв ставится при оформлении | Менеджер продаж | Оформить тестовый заказ, проверить уменьшение доступности |
| Товар на двух складах, хватает на основном | Доступное количество | Резерв на основном складе | Руководитель склада | Проверить, что заказ собирается с основного склада |
| Товар на двух складах, на основном не хватает | Доступное количество | Резерв распределяется по правилу приоритета | Руководитель склада | Проверить сборку с резервного склада |
| Последняя единица, два одновременных заказа | Количество до оформления | Резерв за первым оформившим | Менеджер продаж | Смоделировать два заказа подряд |
| Заказ отменён | Количество возвращается | Резерв снимается | Поддержка | Отменить тестовый заказ, проверить доступность |
| Обмен с учётной системой не прошёл | Количество не обновилось | Резерв, созданный на сайте, сохраняется | Администратор магазина | Проверить журнал обмена и последнее успешное обновление |
Учебный пример: два склада и один товар
Учебный пример. Данные условные.
Входные условия. Интернет-магазин продаёт складной стол. Товар хранится на двух складах: основном в городе А и резервном в городе Б. В учётной системе на основном складе 3 единицы, на резервном — 2. Один покупатель оформил заказ на 1 единицу с основного склада, но не оплатил. Резерв установлен на срок, принятый в компании.
Что должно произойти. Доступность к продаже считается как физический остаток минус резерв. По основному складу это 3 минус 1, то есть 2 единицы. По резервному — 2 единицы без резерва. Итого покупатель должен видеть 4 единицы, а не 5.
Действия. Новый покупатель оформляет заказ на 2 единицы. Система по правилу приоритета пытается собрать заказ с основного склада: там доступно 2 единицы, значит заказ собирается целиком с основного. Резерв по основному складу становится 3 (1 изначальный + 2 новых), доступность по нему — 0. Резервный склад не задействован.
Проверка. После оформления на витрине должно остаться 2 единицы — это доступность резервного склада (3 минус 1 резерв? Нет, 2 без резерва). Если на витрине по-прежнему 4 или 5, значит резерв не вычитается из доступности. Если на витрине 0, значит система не видит второй склад. Оба отклонения — повод разбираться до запуска, а не после жалоб.
Развилка. Если бы на основном складе было 1 единица, а покупатель заказывал 2, система либо добрала бы недостающее с резервного склада, либо предложила бы разделить заказ. Какое поведение выбрать — решает бизнес, исходя из логистики между городами А и Б.
Ограничение примера. Здесь не учитываются сроки доставки, стоимость перевозки между складами и правила маркетплейсов. В реальной настройке эти факторы нужно добавить отдельно.
Как проверить результат и принять работу
Проверка должна быть воспроизводимой: один и тот же набор действий даёт один и тот же результат. Ниже — чек-лист приёмки.
- Проверить, что доступность считается как физический остаток минус резерв, а не просто как физический остаток.
- Убедиться, что все склады из учётной системы сопоставлены со складами на сайте и названия не путаются.
- Оформить тестовый заказ на товар с одного склада и проверить уменьшение доступности.
- Оформить тестовый заказ на товар, которого на основном складе не хватает, и проверить работу правила приоритета.
- Смоделировать одновременное оформление двух заказов на последнюю единицу и убедиться, что второй не проходит или уходит в ожидание.
- Отменить тестовый заказ и проверить, что резерв снят, а доступность вернулась.
- Проверить журнал обмена с учётной системой: время последнего успешного обновления и наличие ошибок.
- Проверить права доступа к публичному разделу складского учёта для каждой роли.
- Проверить, что при нулевой доступности товар не показывается как доступный к покупке.
- Зафиксировать, кто отвечает за остатки и кто — за отображение на сайте.
Типичные ошибки и ограничения
Ошибки повторяются из проекта в проект, и большинство из них связано не с техникой, а с несогласованными правилами.
- Показ физического остатка без вычета резерва. Самая частая причина двойных продаж.
- Разные названия складов на сайте и в учёте. Остатки попадают не туда, а расхождение ищут в обмене.
- Резерв без срока. Товар замораживается под заказы, которые уже не состоятся.
- Ручные правки остатков на сайте. Через неделю никто не помнит, откуда взялась цифра.
- Отсутствие ответственного. Остатки «никто не ведёт», а расхождения объясняют сбоем обмена.
- Смешивание розничных и оптовых правил. Опт и розница по-разному относятся к резерву и объёмам.
Ограничения тоже стоит проговорить. Обмен с учётной системой идёт по расписанию, поэтому доступность всегда немного отстаёт от реальности. Полностью убрать это отставание нельзя, можно только сделать его предсказуемым. Если магазин работает в нескольких валютах, цены и остатки живут по разным правилам, и это отдельная тема — Несколько валют в магазине. Юридические и персональные данные, которые могут попадать в заказы и документы, — граница задачи, которую нужно сверять с профильным специалистом, а не решать только настройкой.
Какие исходные данные подготовить для оценки
Чтобы оценить объём работ, нужен не список пожеланий, а конкретные данные. Соберите их до обсуждения.
- Перечень складов с названиями и адресами, как они называются в учёте и как должны называться на сайте.
- Какие склады участвуют в продажах на сайте, а какие — только во внутреннем учёте.
- Правило приоритета складов при сборке заказа.
- Срок резерва для каждого способа оплаты.
- Какие статусы заказа снимают резерв.
- Как часто и каким способом обновляются остатки.
- Кто отвечает за остатки и кто — за отображение.
- Есть ли оптовые клиенты и нужны ли им отдельные остатки и цены.
- Что делать при нулевой доступности: скрывать, показывать «нет в наличии» или предлагать подписку.
- Как проверять обмен: где смотреть журнал и кто реагирует на ошибки.
Что дальше
Начните с малого: опишите сценарии остатков из таблицы, назначьте ответственного и проверьте доступность на тестовых заказах. Если расхождения есть уже на этом шаге, настройка складов их не исправит — сначала нужно договориться о правилах. Когда правила зафиксированы, можно переходить к обмену с учётной системой и правам доступа, а затем — к проверке по чек-листу. Такой порядок снижает риск двойных продаж и ручных правок, а результат проверяется на конкретных действиях, а не на словах.
Нужно ли включать складской учёт, если складов несколько, но остатки ведёт только бухгалтерия?
Складской учёт нужен, когда бизнес готов вести остатки по конкретным складам и отвечать за их актуальность. Если учёт ведётся во внешней системе, магазин может получать данные оттуда, но правила приоритета и резерва всё равно придётся задать.
Чем резерв отличается от физического остатка?
Физический остаток — сколько единиц лежит на складе. Резерв — сколько из них уже обещано покупателям. Доступность к продаже считается как физический остаток минус резерв.
Что делать, если два покупателя одновременно оформляют последнюю единицу?
Резерв должен ставиться в момент оформления заказа, а не после подтверждения менеджером. Тогда первый оформивший забирает единицу, а второй получает отказ или предложение подождать.
Как часто должны обновляться остатки из учётной системы?
Частота обмена — договорённость бизнеса. Важно не столько конкретное значение, сколько предсказуемость: известно время последнего успешного обмена и понятно, кто реагирует на ошибки.
Кто должен отвечать за остатки на сайте?
Обычно за фактическое наличие отвечает руководитель склада, а за отображение и обновление данных — администратор магазина. Ответственный должен быть один на каждом уровне, иначе расхождения объясняют сбоем.
Можно ли показывать покупателю разбивку по складам?
Можно, если покупатель выбирает самовывоз с конкретного адреса. В остальных случаях достаточно показывать доступность к продаже без внутренней разбивки.