Stock documents

Отнести расход на приёмки — доп. расходы на поступление

Документ stock_receipt_cost («Доп. расходы на поступление», ERP-2597): счёт перевозчика, таможни, брокера или фулфилмента за товар выбранных проведённых приёмок. Строки приёмок — партии; снятые строки перечисляют в excluded_lines. Сумма без налога делится по базе allocation_method (количество, стоимость, вес и объём из карточки товара, ручные доли), доля строки — по остатку на дату: лежащее дорожает (Дт 41), ушедшее — себестоимость продаж (Дт 90.02); налог к вычету — Дт 19, если юрлицо его принимает. Долг — перед contact_id (Кт 60.01), обязательство — сам документ. post: true заводит и проводит одним действием; повтор с тем же source возвращает прежний живой документ.

Читает Idempotency-Key так же, как stockCreateDocument.

post/api/v1/stock/receipt-costs

Request

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

contact_idstring uuid
company_idstring uuid
datestring date

Пусто — рабочая дата кабинета; при источнике дата раньше приёмки поднимается до даты последней приёмки

receiptsUUID[]

Проведённые приёмки одного бизнеса и юрлица; пусто — расход на закупки из orders

ordersUUID[]

Подтверждённые закупки, когда товар ещё в пути: расход ждёт черновиком и проводится на приёмку закупки при её проведении; принятая закупка — сразу на её приёмки

kind'delivery' | 'customs' | 'services' | 'other'

Вид затраты; подставляет базу деления

allocation_method'quantity' | 'cost' | 'weight' | 'volume' | 'manual'

База деления; пусто — по виду затраты

amountstring required

Сумма с налогом в валюте счёта

vatstring

Налог в сумме

currencystring

Валюта счёта, код ISO; пусто — валюта учёта

ratestring

Ручной курс; пусто — из справочника курсов на дату

excluded_linesUUID[]

Строки приёмок, которых расход не касается

sharesobject

Ручные доли строк приёмок для базы manual

commentstring
postboolean

Завести и сразу провести

Response

Созданный документ

idstring uuid required
type_idstring uuid required
type_keystring required
type_namestring required
numberstring required
datestring date required
status'draft' | 'posted' | 'cancelled' required
basis_typestring uuid required
basis_idstring uuid required
basis_numberstring required
entity_refsobject required
payloadobject required
commentstring required
is_marked_deletedboolean required
created_byinteger nullable required
created_by_namestring required
created_atstring date-time required
updated_atstring date-time required
posted_atstring required
cancelled_atstring required
customobject

Значения своих полей кабинета (графы вида core.document.<ключ вида>). Отдаёт карточка документа; списки поле не несут

Changes

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