---
title: "Получить исполнение продажи складом"
method: GET
path: "/api/v1/stock/sales/{id}/shipping"
tags: ["Stock purchasing"]
---

# Получить исполнение продажи складом

`GET /api/v1/stock/sales/{id}/shipping`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/stock/sales/{id}/shipping`
- 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

Товарные строки продажи ядра с раскладкой отгруженного по порядку состава, отгрузки склада по продаже, признак резерва и доступность «Отгрузить» (can_ship, ship_blocked: closed, no_goods, shipped, no_counterparty, no_company; черновик отгружается — дверь его подтвердит). ship_warehouse — склад, с которого пойдёт отгрузка, если его не назвать: склад продажи, склад её резерва, склад по умолчанию юрлица или склад юрлица, где свободного остатка хватает на все оставшиеся строки (source: order, reservation, policy, stock); нет такого — поля нет. Документооборот не нужен.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant` string, required

## Response `200`

Исполнение продажи складом

- StockOrderShipping
  - `order_id` string, uuid, required
  - `number` string, required
  - `date` string, required
  - `state` string, required
  - `contact_id` string, uuid, required
  - `contact_name` string
  - `company_id` string, uuid
  - `warehouse_id` string, uuid
  - `warehouse_note` string
  - `channel_id` string, uuid
  - `channel_name` string
  - `channel_condition_id` string, uuid
  - `channel_condition_name` string
  - `lines` StockOrderShippingLine[], required
    - `line_id` string, uuid, required
    - `product_id` string, uuid, required
    - `title` string, required
    - `unit` string
    - `ordered_qty` string, required
    - `shipped_qty` string, required
    - `remaining_qty` string, required
    - `reserved_qty` string: ERP-2581: сколько из остатка строки обеспечено бронью с товаром на складе; раскладка по порядку строк, не больше остатка. Комплект без остатка считается по броне компонентов: обеспечено столько комплектов, сколько набирается из неё. Нет поля — бронь не посчитана
    - `short_qty` string: ERP-2581: сколько из остатка строки не обеспечено (остаток минус reserved_qty)
  - `shipments` StockOrderShipment[], required
    - `id` string, uuid, required
    - `order_id` string, uuid, required
    - `number` string, required
    - `date` string, required
    - `status` string, required
    - `warehouse_id` string, uuid
    - `deal` string, uuid
    - `lines` StockOrderShipmentLine[], required
      - `product_id` string, uuid, required
      - `qty` string, required
    - `needed_qty` string: Только у черновика сборки (ERP-2423): сколько нужно собрать по строкам немаркированного товара (picked_qty строк), в базовой единице. Нет поля — сборка марками, черновик до ERP-2423 или проведённая отгрузка
    - `picked_qty` string: Только у черновика сборки (ERP-2423): сколько собрано по тем же строкам, в базовой единице. Не меньше needed_qty — строки собраны
  - `picking` StockOrderShipment
    - `id` string, uuid, required
    - `order_id` string, uuid, required
    - `number` string, required
    - `date` string, required
    - `status` string, required
    - `warehouse_id` string, uuid
    - `deal` string, uuid
    - `lines` StockOrderShipmentLine[], required
      - `product_id` string, uuid, required
      - `qty` string, required
    - `needed_qty` string: Только у черновика сборки (ERP-2423): сколько нужно собрать по строкам немаркированного товара (picked_qty строк), в базовой единице. Нет поля — сборка марками, черновик до ERP-2423 или проведённая отгрузка
    - `picked_qty` string: Только у черновика сборки (ERP-2423): сколько собрано по тем же строкам, в базовой единице. Не меньше needed_qty — строки собраны
  - `reserved` boolean, required
  - `coverage` object: ERP-2581: обеспеченность остатка к отгрузке бронью. Остаток брони по товару минус непокрытое (бронь, под которой на складе физически нет товара — правило отчёта резервов: без товара остаются самые новые обещания). Нет поля — отгружать нечего
    - `state` 'full' | 'partial' | 'none', required: full — все строки к отгрузке обеспечены; none — ни одной единицы; иначе partial
    - `lines` integer, required: Сколько товарных строк ещё к отгрузке
    - `covered_lines` integer, required: Сколько из них обеспечены полностью
  - `reservations` object[]: Остаток резерва самой продажи по складам (товар → количество). Свободный остаток склада его уже вычел, а отгрузка по продаже гасит свой резерв
    - `warehouse_id` string, uuid, required
    - `products` object, required
  - `can_ship` boolean, required
  - `ship_blocked` string
  - `ship_warehouse` object: Склад отгрузки по умолчанию; нет поля — сервер склад не подобрал, его выбирает человек
    - `id` string, uuid, required
    - `name` string, required
    - `source` 'order' | 'reservation' | 'channel' | 'policy' | 'stock', required

## Other responses

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