Stock documents

Принять товар по отправке

Приёмка по перемещению (ERP-2179): перемещение со склада «в пути» на склад-получатель на основании отправки. Без строк — «принять всё как отправлено»: хвост каждой строки с её ожидаемой серией и сроком. Со строками — факт: строка отправки (basis_line_id) или товар без неё, количество, серия, выпуск, срок и состояние по факту. Серия или срок по факту рождают новую партию со стоимостью отправки; без них партии отправки переезжают как есть. Принятое сверх того, что в пути, — излишек (surplus_qty в разложении проведения), его приходуют решением. final: true — «приёмка закончена»: остаток в пути — недостача. post: true проводит сразу, иначе черновик.

Строка с qty: "0" — «по строке ничего не приехало»; допустима только с final: true и в документ не идёт (без final — 400). Если с final: true все строки — 0 (больше ничего не приехало), документа нет: приёмку без строк не провести, и отправка закрывается отметкой — ответ status: marked, action: close, qty — весь остаток в пути, он становится недостачей (отправка — discrepancy, в «Расхождениях приёмки» — недостача «нужно решить»). Пустой список строк по-прежнему значит «принять всё как отправлено». Закрывать нечего (в пути пусто) — 400.

Дата приёмки (date) — задним числом можно: не раньше даты отправки и не позже сегодняшнего дня в поясе кабинета, иначе 400; пусто — рабочая дата, не раньше отправки. Сторож хронологии проведения действует как обычно. С post: true отказ проведения не оставляет черновика: заведённая этим запросом приёмка снимается, повтор после исправления заводит одну приёмку.

Серия по факту — подсказка, а не сверка: серия не та, что ожидали, — не расхождение; такие строки показывает отчёт stockListTransitSeriesMismatches.

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

post/api/v1/stock/transit-shipments/{id}/receipts

Request

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

Path parameters

idstring uuid required

Headers

X-Tenantstring required

Slug выбранного кабинета; кабинет не является юрлицом

Idempotency-Keystring

Ключ одной логической попытки команды. Единственная форма идемпотентности на уровне HTTP; читают его только операции, у которых этот параметр объявлен.

Повтор ТОГО ЖЕ запроса (метод, адрес с параметрами, тело) с тем же ключом не выполняет команду второй раз, а отдаёт первый успешный ответ с заголовком Idempotent-Replay: true. Тот же ключ с другим запросом — отказ 422 idempotency.key_mismatch, а не чужой ответ. Пока первая попытка ещё выполняется, повтор получает 409 idempotency.in_progress и Retry-After: он не ждёт и не выполняется второй раз.

Ключ принадлежит предъявителю в кабинете: человеку, кабинетному API-ключу или установке приложения. Одинаковый ключ у соседа — другая попытка.

Отказ 4xx ключ ОСВОБОЖДАЕТ: запрос отклонён до работы, в кабинете не изменилось ничего, и исправленный запрос с тем же ключом выполняется. Отказ 5xx ключ ЗАПИРАЕТ: записалось или нет — неизвестно, коммит мог случиться, а ответ до вас не доехать. Повтор с тем же ключом получает тот же статус и тот же машинный код, а команда второй раз не выполняется. Чтобы попробовать снова, прочитайте отдельным запросом, появился ли результат, и возьмите НОВЫЙ ключ.

И ответ, и запомненный отказ живут сутки; после этого тот же ключ — новая попытка, и команда выполняется заново. Ответы, несущие секрет (выдача токена, аренда секрета настройки), заголовок не читают: секрет отдаётся ровно один раз. Хранилище недоступно — 503 idempotency.unavailable, команда без защиты не выполняется; этот отказ приходит ДО заявки на ключ и потому ключ не тратит.

Для естественного ключа интеграции годится любая строка вида crm:order:123:create; UUID не обязателен.

Request body

datestring date

Дата приёмки: не раньше даты отправки и не позже сегодняшнего дня в поясе кабинета (иначе 400); пусто — рабочая дата кабинета, не раньше даты отправки

commentstring
postboolean

true — провести сразу; по умолчанию черновик

finalboolean

«Приёмка закончена»: остаток в пути — недостача. С final все строки с qty 0 — закрыть отправку без документа: больше ничего не приехало

Response

Заведённая приёмка — черновик или проведённая

document_idstring uuid
numberstring
type_keystring
statusstring required

Статус документа (draft, posted) или marked у отметки

action'wait' | 'close'

Только у отметки: что отмечено; close — отправка закрыта без документа, qty — остаток, ставший недостачей

linesinteger required
qtystring required

Сумма количеств строк

Changes

No recorded changes to this operation across all 1 revision of this API.