Управление складом

Склад решает, что клиент увидит в каталоге. Товар продаётся, только если он лежит на складе, привязанном к приложению, и свободного количества больше нуля. Оттуда же берётся цена — если склад так настроен.

Раздел собирает складскую часть платформы: сами склады и их интеграции, остатки с ценами и импортом, резервы под заказы.

Как это связано

 Склад ──привязан──> Приложение ──> витрина отдаёт товар,
   │                                если свободный остаток > 0
   ├── остаток: цена, количество, наценка, скидка
   └── резерв под заказ ──> уменьшает свободное количество

Что должно быть готово

Склад и его привязку к приложению готовит менеджер Gigma или сотрудник в интерфейсе платформы. Это два разных права: склад заводится под create-warehouses или edit-warehouses, привязка к приложению — под edit-applications. Пошагового API-сценария для этих двух действий документация не даёт; контракты самих методов лежат на странице складов и приложений.

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

Порядок работы

Когда склад заведён и привязан, наполнение идёт запросами.

  1. Положить товар на складPOST /api/inventories с nomenclature_id, warehouse_id, price и quantity. Контракт — создание остатка.
  2. Или залить пачкойPOST /api/inventories/upload: файл накладной либо массив items[] с реквизитами поставки. Контракт — импорт остатков.
  3. Поправить цену или количествоPUT /api/inventories/{id}. В отличие от складов, которые закрыты политикой и сверяют проект, остатки находятся по переданному id без такой проверки: устаревший или перепутанный id в скрипте синхронизации меняет чужую запись молча. Сверяйте id перед правкой. Контракт — обновление остатка.
  4. Проверить витринойGET /api/counterparty/products с App Token: тем же запросом, который делает сайт.

Как этот же путь выглядит со стороны магазина — в разделе «Интернет-магазин».

Страницы раздела

ЗадачаСтраница
Склады, их адреса и интеграциисклады
Цены, количества и импорт накладныхостатки и импорт
Блокировки количества под заказырезервы товаров

Правила, из-за которых товар исчезает с витрины

Выдача каталога проверяет три условия — не выполнено любое, и товара в ответе нет:

  • у номенклатуры заполнен category_id;
  • есть запись остатка на складе, привязанном к этому приложению;
  • свободный остаток больше нуля.

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

Цена: со склада или из карточки

Настройка складаОткуда берётся цена витрины
is_price_from_inventories: trueиз остатка на складе, с учётом наценки
is_price_from_inventories: falseиз карточки товара — поле price номенклатуры

Один товар на двух складах с разными настройками даст клиенту разные цены. Если цены расходятся с ожиданием, начинайте проверку с этого флага, а не с карточки товара. Значение видно в карточке склада — получение склада.

Резервы

Резерв появляется, когда клиент создаёт заказ: количество блокируется на конкретной складской позиции и перестаёт быть свободным. Дальше возможны три исхода:

  • заказ исполняется — резерв остаётся связанным с заказом;
  • срок вышел — фоновая задача гасит резервы с наступившим expired_at, количество возвращается в свободное;
  • позицию убрали из заказа — резерв снимается вместе с ней.

Отдельного метода «снять резерв» в API нет: DELETE /api/reservations/{id} описан исторически, но маршрута для него не существует. Снимают резерв удалением позиции заказа — DELETE /api/orders/{order}/nomenclatures/{id}. Подробности — на странице резервов.

Чего в API нет

  • Перемещений между складами — отдельного метода нет, количество правят на каждом складе своей записью остатка.
  • Инвентаризации как процесса — есть импорт накладной и правка остатка, но не сверка с фиксацией расхождений.
  • Создания резерва — резервы появляются только из заказов.

© 2026 Gigma