---
title: "Подсказать ячейки для прихода или расхода товара"
method: GET
path: "/api/v1/stock/warehouses/{id}/bins/suggest"
tags: ["Stock warehouses"]
---

# Подсказать ячейки для прихода или расхода товара

`GET /api/v1/stock/warehouses/{id}/bins/suggest`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/stock/warehouses/{id}/bins/suggest`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)
  - HTTP bearer

direction=in — куда класть: сначала ячейки с этим товаром той же партии (same_batch), затем с этим товаром (same_product), затем ближайшие пустые активные ячейки (empty). direction=out — откуда брать: «не размещено» первым, затем ячейки по сроку годности партии (без срока — последними), затем по порядку обхода; у партии со сроком shelf_life.status показывает, проходит ли она правило срока кабинета. Не больше 10 подсказок; вместимость ячеек не считается. В месте без ячеек список пуст.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `product_id` string, uuid, required
- `direction` 'in' | 'out', required
- `batch_id` string, uuid
- `condition_id` string, uuid
- `qty` string

## Headers

- `X-Tenant` string, required

## Response `200`

Подсказки ячеек

- StockBinSuggestions
  - `warehouse_id` string, uuid, required
  - `bins_mode` 'off' | 'soft' | 'strict', required
  - `direction` 'in' | 'out', required
  - `suggestions` StockBinSuggestion[], required
    - `reason` 'same_batch' | 'same_product' | 'empty' | 'unplaced' | 'fefo', required: Почему подсказана ячейка. unplaced — не ячейка, а «не размещено» (bin пуст)
    - `bin` StockBinRef, required
      - `id` string, uuid, required
      - `warehouse_id` string, uuid, required
      - `code` string, required: Код ячейки
      - `name` string, required: Название ячейки; может быть пустым
    - `quantity` string, required: Сколько там сейчас: для in — этого товара в ячейке; для out — в срезе
    - `covers_qty` boolean: out с qty: хватает ли этого среза одного
    - `slice` StockBinSlice
      - `warehouse_id` string, uuid, required
      - `product_id` string, uuid, required
      - `product_sku` string, required
      - `product_name` string, required
      - `unit` string, required
      - `batch_id` string, uuid, required
      - `batch_code` string, required: Серия партии поставщика; пусто — серии нет
      - `produced_at` string, date, nullable, required
      - `expires_at` string, date, nullable, required: Годен до
      - `condition_id` string, uuid, required
      - `condition_name` string, required: Название состояния; пусто у «Основного»
      - `handling_unit_id` string, uuid, required
      - `handling_unit_code` string, required
      - `business_id` string, uuid, required
      - `company_id` string, uuid, required
      - `quantity` string, required: Десятичное число строкой
    - `shelf_life` StockBinShelfLife
      - `status` string, required: ok — партия проходит правило срока кабинета; иначе причина: expired, below_pct, below_days, no_production_date, production_date_invalid, shelf_life_within_month
      - `remaining_days` integer: Дней до «годен до» на сегодня; у просроченной отрицательное

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Запись не найдена или не видима текущему пользователю

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/a99574d597cc?raw)
