---
title: "Получить отчёт потребности в закупке"
method: GET
path: "/api/v1/stock/report/purchasing"
tags: ["Stock reports"]
---

# Получить отчёт потребности в закупке

`GET /api/v1/stock/report/purchasing`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/stock/report/purchasing`
- 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

Сводит остаток, резерв, ожидаемый приход и потребность с правилом пополнения и даёт рекомендуемое количество продажи или закупки. Заблокированное (blocked) — состояния вне доступного и просроченный на сегодня товар — запасом не считается: оно вычитается из available и projected тем же правилом, что в /stock/report/stocks.

## Query parameters

- `on_hand_from` string
- `on_hand_to` string
- `reserved_from` string
- `reserved_to` string
- `expected_from` string
- `expected_to` string
- `demand_from` string
- `demand_to` string
- `projected_from` string
- `projected_to` string
- `min_from` string
- `min_to` string
- `suggested_from` string
- `suggested_to` string
- `business_id` string, uuid
- `company_id` string, uuid
- `warehouse_id` string, uuid
- `q` string
- `only_needed` boolean
- `include_empty` boolean
- `limit` integer
- `offset` integer
- `blocked_from` string
- `blocked_to` string

## Headers

- `X-Tenant` string, required

## Response `200`

Строки потребности в закупке

- StockReportPurchasingPage
  - `count` integer, required: Общее число строк отбора, а не длина страницы: усечение по limit на нём видно.
  - `limit` integer, required
  - `offset` integer, required
  - `results` StockReportPurchasingRow[], required
    - `business_id` string, uuid, required
    - `business_name` string, required
    - `company_id` string, uuid, required
    - `company_name` string, required
    - `warehouse_id` string, uuid, required
    - `warehouse_code` string, required
    - `warehouse_name` string, required
    - `warehouse_parent_name` string, required: Склад над зоной (дочерним складом); у склада верхнего уровня пусто. Витрина пишет «склад · зона» (ERP-1522).
    - `product_id` string, uuid, required
    - `product_sku` string, required
    - `product_name` string, required
    - `unit` string, required
    - `purchase_price` string, required: Decimal string. Закупочная цена карточки — умолчание цены строки закупки из витрины (ERP-1522); ноль — цены в карточке нет.
    - `on_hand` string, required: Decimal string. Физический остаток: всё, что лежит, вместе с заблокированным
    - `blocked` string, required: Decimal string. Количество вне доступного остатка, тем же правилом, что blocked в /stock/report/stocks: состояния «брак» и «карантин» (ERP-1977), товар, просроченный на сегодня по календарю кабинета (ERP-2149), и товар на складах «в пути» (ERP-2179)
    - `expired` string, required: Decimal string. Просроченная часть blocked: остаток партий, срок годности которых вышел к сегодняшнему дню кабинета. В день «годен до» товар ещё годен. Товар, уже заблокированный состоянием, сюда не входит
    - `reserved` string, required: Decimal string
    - `available` string, required: Decimal string: on_hand − reserved − blocked, тот же расчёт, что available в /stock/report/stocks: резерв на единице, которая сама недоступна, вычитается один раз
    - `expected` string, required: Decimal string
    - `demand` string, required: Decimal string
    - `projected` string, required: Decimal string: available + expected. От него считается дефицит по правилу пополнения
    - `min_qty` string, required: Decimal string
    - `max_qty` string, nullable, required: Decimal string
    - `order_multiple` string, nullable, required: Decimal string
    - `lead_time_days` integer, required
    - `preferred_supplier_id` string, uuid, required
    - `preferred_supplier_name` string, required
    - `suggested_qty` string, required: Decimal string. Максимум из незаказанной потребности и дефицита по правилу пополнения; дефицит считается тем же ядром, что и suggested в /stock/report/stocks.
    - `rule_id` string, uuid, required
    - `rule_source` 'none' | 'fallback' | 'warehouse', required: Какое правило пополнения подобралось к строке
    - `sources` StockReportPurchasingSource[], nullable, required
      - `request_id` string, uuid, required
      - `request_number` string, required
      - `request_type` string, required
      - `request_type_name` string, required
      - `basis_line_id` string, uuid, required
      - `remaining_qty` string, required: Decimal string
  - `formula` 'projected = on_hand - reserved - blocked + expected; suggested = max(demand, rule_shortage)', required

## Other responses

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

---

[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)
