---
title: "Догнать регистр продаж перепроведением"
method: POST
path: "/api/v1/finance/registers/sales-backfill"
tags: ["Finance registers"]
---

# Догнать регистр продаж перепроведением

`POST /api/v1/finance/registers/sales-backfill`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/finance/registers/sales-backfill`
- 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

Перепроводит своими данными проведённые документы без строк регистра продаж, проведённые до его появления: по умолчанию акты продажи и недели выручки площадки с их возвратами, отгрузки и возвраты покупателя — только по явному списку видов. Другие регистры и книга обязаны остаться прежними, иначе документ откатывается и попадает в пропущенные; единственные допустимые поправки текущих правил — разрез deal (сам документ) у строк ОПиУ и reason = principal у строк расчётов, такой документ записывается и попадает в corrected. Сухой прогон только считает; запись — порциями до 500 документов по курсору. Повторный запуск записанное не находит.

## Headers

- `X-Tenant` string, required

## Request body

- FinanceSalesBackfillRequest
  - `dry_run` boolean: Только посчитать кандидатов без записи.
  - `limit` integer: Размер порции; запись без значения берёт 500, сухой прогон без значения смотрит весь кабинет.
  - `after` string: Курсор next_after прошлого ответа; пустой — с начала.
  - `doc_types` string[]: Виды документов; пустой список — акты продажи и недели выручки площадки с возвратами. Отгрузки и возвраты покупателя — только явно.

## Response `200`

Итог догона регистра продаж

- FinanceSalesBackfillResult
  - `dry_run` boolean, required
  - `candidates` integer, required
  - `by_type` object, required: Кандидатов по видам документа.
  - `applied` integer, required: Догнано документов, остальные движения которых совпали полностью.
  - `corrected` integer, required: Догнано документов, у которых перепроведение лишь дописало разрез deal строкам ОПиУ и reason = principal строкам расчётов; суммы, даты, знаки и счета прежние.
  - `corrected_documents` FinanceSalesBackfillDocument[], required: Документы из corrected.
    - `id` string, uuid, required
    - `number` string, required
    - `type` string, required: Вид документа.
  - `skipped` FinanceSalesBackfillSkip[], required
    - `id` string, uuid, required
    - `number` string, required
    - `type` string, required: Вид документа.
    - `reason` 'changed' | 'closed_period' | 'no_sales_lines' | 'other', required: changed — перепроведение меняет не только регистр продаж; closed_period — период закрыт; no_sales_lines — перепроведение не дало строк продаж; other — прочая ошибка, подробности в журнале сервера.
  - `limit_reached` boolean, required
  - `next_after` string, 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)
