SelSup Developers

Сквозной сценарий · Руководства

Остатки и склады

Модель SKU, получение складских остатков, обновление по идентификаторам SelSup и внешним артикулам и безопасная сверка.

5 разделовПрактическое руководство

Остаток хранится на уровне SKU и склада. Один SKU может объединять несколько товаров, поэтому productId и skuId нельзя подменять друг другом.

WMS, ERP и складские интеграции

01

Понять сущности остатков

SKU является единицей складского учёта. Товар с конкретным размером или вариантом связан с SKU, а остаток SKU размещается на складе или в ячейке.

quantity отражает записанное количество, calculatedQuantity может учитывать внутренние расчёты, а availableQuantity — доступный результат. Используйте поле, соответствующее вашей задаче, а не первое числовое значение.

SelSup поддерживает количественный учёт и поштучный учёт уникальных единиц. Не смешивайте эти схемы в одной операции обновления.

02

Получить остатки склада

Для полной сверки выбирайте остатки по warehouseId. Сохраняйте skuId, идентификатор склада, ячейку, время изменения и все количественные поля ответа.

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

Остатки одного склада · cURL
curl 'https://api.selsup.ru/api/wms/stock/all?warehouseId=10129' \
  --header 'Authorization: YOUR_API_TOKEN'

03

Обновить остаток по сущностям SelSup

Используйте skuId из поиска товаров и идентификатор связи склада, требуемый текущим контрактом. Перед массовой отправкой проверьте одну тестовую позицию.

updateInService=false позволяет отделить запись остатка в SelSup от синхронной отправки на маркетплейс. Если требуется обновление площадок, учитывайте длительность и частичные ошибки отдельно.

withReservedStock определяет учёт резервов. Зафиксируйте единое правило для всей интеграции, иначе разные потоки будут перезаписывать остаток с разной семантикой.

Пакет обновления · JSON
[
  {
    "stock": 5,
    "serviceWarehouseId": "1234",
    "updateInService": false,
    "withReservedStock": true,
    "skuId": 1044318
  }
]

04

Обновить по артикулу или штрих-коду

В варианте с service SelSup ищет связанный товар по идентификатору выбранного сервиса или штрих-коду. serviceWarehouseId должен относиться к тому же сервису.

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

Обновление по штрих-коду · JSON
[
  {
    "stock": 5,
    "barcode": "4601234567890",
    "serviceWarehouseId": "OZON-WH-01",
    "updateInService": false,
    "withReservedStock": true
  }
]

05

Сверка и защита от гонок

  1. 1

    Назначьте владельца остатка

    Определите, какая система является источником истины и какие события могут изменять количество в SelSup.

  2. 2

    Сериализуйте обновления SKU

    Не отправляйте конкурентные значения одного skuId и склада; используйте очередь с ключом SKU+warehouse.

  3. 3

    Сверяйте после пакета

    Повторно прочитайте изменённые SKU и сравните ожидаемое значение с availableQuantity по вашей формуле резервов.

  4. 4

    Отделяйте ошибки сопоставления

    Неизвестный skuId, склад или неоднозначный штрих-код требуют исправления справочника, а не бесконечного повтора.