Stock purchasing

Забрать бронь у другой продажи

«Забрать бронь» (ERP-2581): qty брони товара переносится с продажи from_order_id на эту продажу одной транзакцией — обе продажи приводятся к новому составу штатной службой резерва (источник — свой состав минус qty, затем цель — свой плюс qty). Нового вида документа и прямой записи в регистр нет; отказ любой половины откатывает обе. Лимит — нехватка цели по товару (нужно минус обеспечено, как в short_qty): обещание цели без товара на складе нехваткой считается. Новый хвост цели — не больше нужного: min(нужно, держала + qty), поэтому если цель уже держала необеспеченное, суммарная бронь товара на складе уменьшается на излишек. Срок брони источника не меняется; место в очереди на товар (старшинство) источник сохраняет, цель получает более раннее из своего и источника — документы датируются сегодняшним днём. Два одновременных переноса с одного источника идут по очереди. Склад — склад брони источника. Комплект переносится компонентами: по товару-комплекту — отказ. Ответ — исполнение этой продажи с обеспеченностью. Отказы: qty не десятичное число больше нуля или та же продажа — 400; источник не подтверждён или нет брони по товару не меньше qty, источник держит бронь на нескольких складах, цель не может резервировать (stock.order.reserve_blocked), разные юрлица, бронь цели на другом складе, qty больше нехватки цели, товар — комплект, бронь только что изменил кто-то другой (reservation_changed; повторить) — 409 stock.order.reservation_take_refused. Идемпотентность — не нужна: повтор переносит ещё раз и упирается в остаток брони источника или в нехватку цели.

post/api/v1/stock/sales/{id}/reservation/take

Request

  • Base URL: https://erp.akeda.ru
  • URL: https://erp.akeda.ru/api/v1/stock/sales/{id}/reservation/take
  • 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 выбранного кабинета; кабинет не является юрлицом

Request body

from_order_idstring uuid required
product_idstring uuid required
qtystring required

Сколько брони забрать: десятичное число в базовой единице, больше нуля (дробь вида 1/3 не принимается)

Response

Исполнение продажи после переноса брони

order_idstring uuid required
numberstring required
datestring required
statestring required
contact_idstring uuid required
contact_namestring
company_idstring uuid
warehouse_idstring uuid
warehouse_notestring
channel_idstring uuid
channel_namestring
channel_condition_idstring uuid
channel_condition_namestring
reservedboolean required
can_shipboolean required
ship_blockedstring

Changes

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