Одна и та же последняя единица товара может одновременно появиться на сайте, маркетплейсе и в предложении менеджера. Если каждый канал смотрит только на физический или учётный остаток, все считают товар свободным. В итоге есть два подтверждённых заказа, одна единица и необходимость отказать одному клиенту.
Резервирование решает проблему, только если является единым правилом для всех каналов. Резерв фиксирует, что определённое количество уже обещано конкретному заказу, хотя физически товар может оставаться на полке.
Что меняет резерв
Доступный остаток = пригодный учётный остаток − активные резервы − блокировки.
Если на складе числится 20 пригодных единиц, 6 зарезервировано под подтверждённые заказы, а 2 заблокировано для проверки, новым клиентам можно предложить 12. Сам резерв не является списанием и не меняет общее учётное количество.
| Событие | Учётный остаток | Резерв | Доступно |
|---|---|---|---|
| До заказа | 20 | 0 | 20 |
| Подтверждено 6 единиц | 20 | 6 | 14 |
| 2 единицы заблокированы | 20 | 6 | 12 |
| 6 единиц отгружены | 14 | 0 | 12 |
Мягкий и жёсткий резерв
| Тип | Когда уместен | Основной риск |
|---|---|---|
| Мягкий | Корзина, предварительная заявка или короткое ожидание оплаты | Слишком долгий срок скрывает товар от реального спроса |
| Жёсткий | Подтверждённый, оплаченный или принятый менеджером заказ | Ручное снятие без контроля оставляет клиента без товара |
Для корзины на сайте часто достаточно короткого мягкого резерва. После оплаты или подтверждения менеджером он становится жёстким. Границу определяет бизнес, но одинаковые статусы должны одинаково влиять на доступность во всех каналах.
Жизненный цикл резерва
- Создание. Система проверяет доступность и связывает резерв со строкой заказа, товаром, количеством и складом.
- Подтверждение. После оплаты или проверки условий резерв получает гарантированный статус.
- Комплектация. Сотрудник отбирает единицы; при необходимости резерв закрепляется за ячейкой, партией или серийным номером.
- Отгрузка. Фактическое выбытие уменьшает учётный остаток, а выполненная часть резерва закрывается.
- Снятие. После отмены, отказа или окончания срока неиспользованное количество возвращается в доступность.
Каждый переход должен быть идемпотентным: повторное сообщение об оплате, событие маркетплейса или нажатие кнопки не должны создавать второй резерв для той же строки заказа.
Срок действия: товар нельзя замораживать навсегда
Для неоплаченных заказов нужен срок завершения резерва. Он зависит от способа оплаты, оборачиваемости и обещания клиенту. Дефицитный розничный товар можно удерживать 15–30 минут, а согласованный счёт для юридического лица — один рабочий день.
Перед автоматическим снятием нужно проверить актуальный статус платежа. Банк мог подтвердить операцию, но отправить сообщение с задержкой; один лишь таймер в таком случае освободит уже оплаченный товар.
Частичный резерв и дефицит
Клиент заказал 10 единиц, а доступно 7. Возможны три политики:
- зарезервировать 7 и согласовать отдельную дату для остальных;
- не резервировать ничего, пока не будет полного количества;
- зарезервировать 7, а 3 записать как подтверждённый заказ в ожидании поставки.
Политика должна быть видна сотруднику и клиенту. Нельзя показывать все 10 единиц как готовые к отгрузке, если три существуют только в плане закупки.
Что происходит при изменении заказа
| Изменение | Правильное действие с резервом |
|---|---|
| Количество уменьшено | Сразу освободить разницу |
| Товар заменён | Сначала зарезервировать новый товар, затем безопасно снять старый |
| Склад изменён | Проверить доступность на новом складе до переноса |
| Заказ отменён | Один раз снять неисполненный резерв и записать причину |
| Отгружено частично | Закрыть выполненную часть, остаток сохранить или согласованно снять |
Контроль резервов
- Единый источник доступного остатка для сайта, маркетплейсов и менеджеров.
- Отчёт о просроченных резервах с заказом, ответственным и причиной.
- Ролевая защита и журнал действий для ручного снятия жёсткого резерва.
- Отдельные правила для предзаказа, товара в пути и возвратов.
- Пересчёт доступности после каждого события, а не только ночью.
- Оповещение, если жёсткий резерв есть, а заказ не переходит к комплектации.
Вывод
Надёжный резерв связывает товар, склад, количество, заказ, срок и статус. Он не списывает товар, а честно уменьшает то, что можно обещать новому спросу. Отгрузка превращает резерв в физическое движение, а отмена возвращает количество в доступность.
Когда резервы упорядочены, следующая задача — регулярно проверять точность остатков без остановки всей операции. Для этого подходит циклическая инвентаризация. Посмотреть модуль каталога Business Reactor.