---
title: "Запустить пересчёт стоимости по документу накладных расходов"
method: POST
path: "/api/v1/stock/valuation/rebuild"
tags: ["Stock valuation"]
---

# Запустить пересчёт стоимости по документу накладных расходов

`POST /api/v1/stock/valuation/rebuild`

## Request

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

Операция асинхронная. Ответ 202 отдаёт карточку прогона с id и status=pending, а сам пересчёт продолжается после закрытия запроса; результат читают повторными запросами GET /api/v1/stock/valuation/rebuild/{id} до status=completed или failed. Ключ idempotency_key уникален в пределах кабинета: повторный запрос с тем же ключом возвращает уже существующий прогон и второй пересчёт не запускает. Пустой ключ заменяется идентификатором документа, поэтому повтор без ключа тоже не задваивает прогон. Принимается только документ вида stock_landed_cost.

## Headers

- `X-Tenant` string, required

## Request body

- StockValuationRebuildRequest
  - `document_id` string, uuid, required
  - `idempotency_key` string: Уникален в пределах кабинета; повтор с тем же ключом возвращает уже заведённый прогон. Пустой ключ заменяется идентификатором документа

## Response `202`

Прогон принят в работу; тот же ответ приходит на повтор с прежним idempotency_key

- StockValuationRun
  - `id` string, uuid, required
  - `document_id` string, uuid, required
  - `idempotency_key` string, required
  - `status` 'pending' | 'running' | 'completed' | 'failed', required
  - `progress` integer, required: Сколько документов цепочки уже перепроведено
  - `total` integer, required: Сколько документов цепочки предстоит перепровести
  - `result` StockValuationResult
    - `document_id` string, uuid, required
    - `status` 'preview' | 'completed', required: preview — расчёт откачен, completed — пересчёт записан
    - `total_amount` string, required: Decimal string суммы накладных расходов
    - `affected_documents` integer, required
    - `steps` StockValuationStep[], required
      - `document_id` string, uuid, required
      - `type_key` string, required
      - `number` string, required
      - `date` string, date, required
      - `movements` integer, required: Число движений регистров, записанных этим документом
  - `error` string: Заполняется при status=failed
  - `created_at` string, date-time, required
  - `started_at` string, date-time
  - `finished_at` string, date-time

## Other responses

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

---

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