---
title: "Собрать наборы под отгрузку или перемещение"
method: POST
path: "/api/v1/stock/documents/{id}/kit-assembly"
tags: ["Stock documents"]
---

# Собрать наборы под отгрузку или перемещение

`POST /api/v1/stock/documents/{id}/kit-assembly`

## Request

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

Черновик отгрузки или перемещения со своего склада. По каждой строке,
у товара которой есть действующий состав вида «Сборка» или «Комплект»,
считает: сколько набора нужно, сколько лежит на складе расхода
(физический остаток), сколько не хватает и хватит ли свободного остатка
компонентов. С `dry_run` только возвращает план. Без него заводит на
недостающее количество комплектацию (`stock_assembly`) на склад
расхода той же датой: «Сборку» — черновиком, чтобы отсканировать марки
компонентов и набора и сформировать набор в ЧЗ, или сразу проведённой
при `post`; «Комплект» — только при `post`, без него строка получает
статус `on_posting`: его соберёт само проведение отгрузки или
перемещения. Строки, которым не хватает компонентов, остаются в плане
со статусом `components_short` и ничего не заводят.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant` string, required

## Request body

- StockKitAssemblyInput: Запрос «Собрать наборы» (ERP-2111).
  - `dry_run` boolean: Только посчитать план, ничего не заводить
  - `post` boolean: Провести заведённые сборки сразу; без него они остаются черновиками

## Response `200`

План или заведённые сборки

- StockKitAssemblyResult
  - `document_id` string, uuid, required
  - `warehouse_id` string, uuid, required
  - `dry_run` boolean, required
  - `assembled` integer, required: Сколько сборок заведено
  - `lines` StockKitAssemblyLine[], required
    - `product_id` string, uuid, required
    - `product_sku` string
    - `product_name` string
    - `condition_id` string, uuid
    - `need` string, required: Сколько набора требует документ
    - `on_hand` string, required: Физический остаток набора на складе расхода
    - `shortage` string, required: Сколько набора не хватает
    - `spec_id` string, uuid, required
    - `spec_version_id` string, uuid, required
    - `spec_name` string, required
    - `spec_kind` 'assembly' | 'kit', required
    - `status` 'enough' | 'assemble' | 'components_short' | 'assembled' | 'on_posting', required: enough — хватает; assemble — соберётся; components_short — не хватает компонентов; assembled — сборка заведена; on_posting — «Комплект» без post соберёт проведение документа расхода
    - `components` StockKitComponentNeed[], required
      - `product_id` string, uuid, required
      - `product_sku` string
      - `product_name` string
      - `qty` string, required: Сколько компонента уйдёт на недостающие наборы (базовая единица)
      - `available` string, required: Свободный остаток компонента на складе расхода
      - `negative` boolean: Материал, пущенный в минус настройкой вида (ERP-2183): свободного меньше нужного, недостающее спишется партией недостачи — сборку это не останавливает
      - `assembled` string: Сколько вложенного «Комплекта» план соберёт перед этим набором («коробка в коробке», ERP-2183)
    - `nested` StockKitAssemblyLine[]: Вложенные «Комплекты», которые собираются раньше этого набора (ERP-2183): та же строка плана на уровень глубже
    - `marked` boolean: Набор со своей маркой ЧЗ (ERP-2183): собирается только «Сборкой» заранее, черновик сборки — место печати и скана марок набора
    - `document_id` string, uuid
    - `document_number` string
    - `document_status` string

## Other responses

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

---

[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/3c60ded179f2?raw)
