Stock documents

Решить расхождение

Решение строк очереди расхождений одного документа (ERP-2544) — один вход на все пункты меню «Решить». Своей системы претензий нет: решение исполняют существующие документы склада. Количество и деньги появляются проведением документа, поэтому по поступлению решение всегда черновик — проводит человек; перемещение можно провести сразу (post: true).

Решения по недостаче поступления: claim_delivery — допоставка по претензии (черновик приёмки-допоставки); supplier_acknowledged — поставщик согласился, корректировка приёмки по УКД на уменьшение (supplier_document — номер и дата УКД); writeoff — списание претензии на расходы по статье item_id; wait — отметка «Ждём», без документа (status: marked). По излишку поступления (лежит на складе «К разбору»): pay_supplier — доплатить поставщику, корректировка по УКД на увеличение; receive_free — оприходовать бесплатно, доход списанием претензии в режиме излишка; return — вернуть поставщику. Решения перемещения: wait, charge_culprit (виновник — contact_id), return, writeoff, other_product (пересортица: недостача товара А и излишек товара Б, to_line_id), receive_free — оприходовать излишек (ячейки получателя — bin_allocations строки, ERP-2578). Ячейки строки называют и return (склада-отправителя), и other_product (склада-получателя) — ERP-2579.

Строки (lines) называют строку очереди и количество в базовой единице; без строк — все строки документа, которым это решение доступно, на весь открытый остаток. Решать можно частями: открытый остаток уменьшают проведённые документы решения. Строка с черновиком решения, решённая и «ещё в пути» не решается — 409. Решение, которого нет в actions строки, — 400. Строки с физическими единицами решаются целиком; переменная мера излишка не принимается.

Права по виду основания: перемещение — право перемещений; поступление с wait и claim_delivery — право приёмок; остальные решения поступления — право записи склада, как у тех же документов вне очереди.

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

post/api/v1/stock/discrepancies/resolve

Request

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

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

source'receipt' | 'transfer' required

Откуда строки: receipt — приёмка от поставщика, transfer — отправка перемещения

document_idstring uuid required
action'wait' | 'claim_delivery' | 'supplier_acknowledged' | 'writeoff' | 'charge_culprit' | 'return' | 'other_product' | 'receive_free' | 'pay_supplier' | 'close_without_document' required

Решение из actions строки. wait — «Ждём», отметка без документа

contact_idstring uuid
item_idstring uuid
datestring date

Дата документа решения; пусто — рабочая дата

commentstring

Комментарий решения; у close_without_document — обязательная причина закрытия без документа (ERP-2586)

postboolean

true — провести сразу; только у перемещения, решение по поступлению проводит человек

Response

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

document_idstring uuid
numberstring
type_keystring
statusstring required

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

actionstring
linesinteger required
qtystring required

Сумма количеств решённых строк

Changes

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