---
title: "Решить расхождение отправки"
method: POST
path: "/api/v1/stock/transit-shipments/{id}/resolve"
tags: ["Stock documents"]
---

# Решить расхождение отправки

`POST /api/v1/stock/transit-shipments/{id}/resolve`

## Request

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

Решение расхождения отправки (ERP-2179) документом на её основании:
`shortage_writeoff` — списание недостачи со склада «в пути» на
расходы; `shortage_claim` — то же списание претензией виновнику
(`contact_id` обязателен): Дт 60.01 `claim` / Кт 41, сторона расчётов `claim`;
`return` — перемещение со склада «в пути» обратно на склад-отправитель;
`surplus_receipt` — оприходование излишка на склад-получатель по цене
отправки (товара, которого в отправке не было, — по средней цене
склада-отправителя на дату отправки); `regrade` — «Принят другой
товар» (ERP-2198): строка недостачи товара А (`basis_line_id`) и
строка излишка товара Б (`to_basis_line_id`) одной отправки закрываются
одной пересортицей со склада «в пути» на получателя — Б стоит как А,
строки обязательны, количество пары — меньшее из открытых. Без строк — весь открытый хвост (у излишка — весь
неоприходованный излишек). `post: true` проводит сразу, иначе черновик.

Решение без документа — отметка `wait` (ответ `status: marked`):
«Ждать» по недостаче — остаток строки снова считается ещё в пути, а
не недостачей. Пересорт серии расхождением не считается и решения не
требует.

Читает `Idempotency-Key`: повтор с тем же ключом отдаёт тот же документ.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Tenant` string, required
- `Idempotency-Key` string

## Request body

- StockTransitResolveInput
  - `action` 'shortage_writeoff' | 'shortage_claim' | 'return' | 'surplus_receipt' | 'regrade' | 'wait', required
  - `lines` StockTransitInputLine[]: Строки (basis_line_id) и количество; пусто — весь открытый хвост, весь неоприходованный излишек или все строки с остатком в пути (wait)
    - `basis_line_id` string, uuid
    - `product_id` string, uuid
    - `qty` string: Количество в базовой единице, decimal string; у решения пусто — весь открытый хвост строки. У приёмки 0 — по строке ничего не приехало, только с final
    - `batch_code` string: Серия по факту; без поля — ожидаемая серия строки отправки. Пустая строка — без серии
    - `produced_at` string, date
    - `expires_at` string, date
    - `condition_id` string, uuid
    - `bin_allocations` StockDocumentLineBinAllocation[]: Ячейки склада-получателя. У приёмки (ERP-2575) — куда кладут принятое из пути; ложатся в ячейки «куда» (bin_allocations_to) перемещения приёмки, в режиме strict их сумма равна перемещённому — количеству строки без излишка сверх отправленного (ERP-2578). У решения surplus_receipt (ERP-2578) — куда кладут излишек; в режиме strict сумма равна оприходуемому. У решения regrade (ERP-2579) — куда кладут принятый товар на получателе; в режиме strict сумма равна количеству пары. Ячейка принадлежит складу-получателю, в нём включены ячейки; иначе проведение отказывает. У решения return (ERP-2579) — ячейки склада-отправителя, куда возвращают недостачу; в режиме strict сумма равна возвращаемому. У списания и претензии не указываются
      - `bin_id` string, uuid, required
      - `qty` string, required: Положительная decimal string в базовой единице номенклатуры
      - `bin_code` string: Только в ответе: код ячейки. При сохранении игнорируется
      - `bin_name` string: Только в ответе: название ячейки. При сохранении игнорируется
      - `handling_unit_id` string, uuid
    - `to_basis_line_id` string, uuid
  - `contact_id` string, uuid
  - `date` string, date
  - `comment` string
  - `post` boolean: true — провести сразу; по умолчанию черновик

## Response `201`

Заведённый документ решения — черновик или проведённый

- StockTransitDocumentResult: Документ, заведённый по отправке. У решения-отметки (wait) и у «приёмка закончена», когда больше ничего не приехало (close), документа нет: status — marked, action — что отмечено
  - `document_id` string, uuid
  - `number` string
  - `type_key` string
  - `status` string, required: Статус документа (draft, posted) или marked у отметки
  - `action` 'wait' | 'close': Только у отметки: что отмечено; close — отправка закрыта без документа, qty — остаток, ставший недостачей
  - `lines` integer, required
  - `qty` string, required: Сумма количеств строк

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `404`: Запись не найдена или не видима текущему пользователю
- `409`: Конфликт версии, идемпотентности или бизнес-состояния
- `422`: Idempotency-Key уже использован для другого запроса: другое тело, другой адрес или другая операция. Код `idempotency.key_mismatch`; сохранённый ответ не раскрывается. Для новой команды берут новый ключ.
- `503`: Хранилище ключей идемпотентности недоступно, команда с заголовком Idempotency-Key не выполнялась. Код `idempotency.unavailable`; Retry-After говорит, когда повторить.

---

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