Замовлення
Замовлення клієнтів: із сайту, маркетплейсу чи від менеджера. З нього виставляються рахунки й відвантаження. Право ролі: order.
Маршрути
/ordertotal./order/{id}/order/count/order/order/{id}/order/{id}/order/document-products/{id}/order/create-invoice/{id}/order/create-shipment/{id}/order/deleted?since=...Усі поля
Обов’язкове лише name; валюта, статус і склад підставляються за замовчуванням. Теги й доп. поля описані в розділі Вкладені дані.
| Поле | Тип | Обмеження | Опис |
|---|---|---|---|
nameобов. | рядок | ≤ 60 симв. | Назва замовлення. |
external_id | рядок | ≤ 64 симв. | Ключ запису у вашій системі. Унікальний; пошук: filter[external_id;eq]. Див. «Синхронізація». |
exchange_rate | десяткове (рядок) | Курс валюти до гривні на дату документа: десяткове число рядком, напр. "41.250000". Для гривні завжди 1; якщо для валюти курс не передано, береться курс довідника. | |
repeat | ціле | 0 | 1 | Повторний (1) чи перший (0) продаж. |
description | рядок | ≤ 1024 симв. | Опис / коментар. |
is_reserved | bool | Товар зарезервовано на складі. | |
date | дата-час | Дата замовлення. | |
closed_date | дата-час | Дата закриття. | |
status_id | id | Статус (/lookup?type=ord_status). Якщо не передано, ставиться статус за замовчуванням. | |
vat_id | id | Ставка ПДВ (/lookup?type=tax). | |
price_includes_vat | bool | Ціни вказано з ПДВ. | |
currency_id | id | Валюта (/currency). | |
address_id | id | Адреса доставки (/address). | |
source_id | id | Джерело (/lookup?type=source). | |
owner_id | id | Відповідальний користувач (/user). Якщо не передано, це користувач токена. | |
contact_id | id | Контакт (/contact). | |
stock_id | id | Склад відвантаження. Якщо не передано, береться склад за замовчуванням. | |
account_id | id | Контрагент (/account). | |
lead_order_id | id | Лід, з якого створено замовлення. | |
project_id | id | Проєкт. Задається лише при створенні; спроба змінити через PUT поверне 422. | |
project_stage_id | id | Етап проєкту (разом із project_id). Лише при створенні. | |
is_archived | bool | В архіві. Архівні записи приховує параметр is_archived=true. | |
is_completed | bool | Виконано. | |
tags | масив Tag | Теги: [{"id": 3}] або [{"name": "VIP"}]. Передані замінюють усі теги запису. Див. «Вкладені дані». | |
idлише читання | ціле | Ідентифікатор запису. | |
costлише читання | ціле, копійки | Сума позицій у копійках, рахує сервер. | |
paymentлише читання | ціле, копійки | Сплачено, у копійках; рахує сервер. | |
created_by_idлише читання | id | Хто створив запис. | |
shop_idлише читання | id | Магазин (філія), ставиться з профілю користувача. | |
created_atлише читання | дата-час | Час створення. | |
updated_atлише читання | дата-час | Час останньої зміни, на ньому будується інкрементальна синхронізація. | |
deleted_atлише читання | дата-час | Час видалення (у звичайних відповідях завжди null). | |
tasksлише читання | масив Task | Завдання запису (лише у відповіді). | |
updated_userлише читання | об’єкт User | Хто змінив запис останнім. | |
subлише читання | рядок | Службове поле, ігноруйте. | |
versionлише читання | ціле | Службовий лічильник змін запису. |
Вкладені масиви
order_extra_fields: пишеться в тілі POST/PUT, формат див. у розділі Вкладені дані.
Повʼязані обʼєкти для ?expand= (14)
Без expand приходять як null; писати їх не можна, передавайте відповідне *_id.
Службові поля у відповіді, ігноруйте: OldOrder.
Позиції документа
Товари й послуги документа. Власного права в позицій немає: читати їх може той, хто бачить документ, а змінювати той, хто може змінювати документ. Сума документа перераховується автоматично.
/order/{id}/itemstotal./order/{id}/items/order/{id}/items/{item_id}/order/{id}/items/{item_id}| Поле | Тип | Обмеження | Опис |
|---|---|---|---|
entity_typeобов.лише читання | рядок | Тип документа, береться зі шляху. | |
entity_idобов.лише читання | id | Id документа, береться зі шляху. | |
product_idобов. | id | Товар. Для kind=custom не потрібен. | |
name | рядок | ≤ 120 симв. | Назва рядка. Для kind=custom обов’язкова, для товару береться з картки. |
kind | рядок | product | custom, ≤ 10 симв. | product (товар) або custom (довільний рядок без товару, напр. доставка чи послуга). |
cost_price | ціле, копійки | Собівартість одиниці, копійки. Вводиться лише для kind=custom; у товарного рядка береться з партій і в запиті ігнорується. | |
cost_source | рядок | none | manual | product | batch, ≤ 10 симв. | Звідки собівартість: none, manual, product, batch. |
unit_label | рядок | ≤ 30 симв. | Підпис одиниці. |
input_unit_id | id | Одиниця введення / упаковка (/product/{id}/units). | |
input_quantity | ціле, ×1000 | Кількість в упаковках, ×1000. | |
input_price | ціле, копійки | Ціна упаковки, копійки. | |
price | ціле, копійки | Ціна за одиницю, копійки. При додаванні ставиться базова ціна товару; змінюйте PUT рядка. | |
quantity | ціле, ×1000 | Кількість, ×1000. | |
discount_amount | ціле, копійки | Знижка сумою, копійки. | |
discount | ціле | ≤ 10000 | Знижка, соті частки % (1000 = 10 %). Якщо не передано, діє персональна знижка клієнта. |
exchange_rate | десяткове (рядок) | Курс перерахунку ціни товару у валюту документа (службове). | |
reason_id | id | Причина (для повернень). | |
price_book_id | id | Прайс-лист, з якого взято ціну. | |
status | рядок | Статус рядка (службове). | |
description | рядок | ≤ 255 симв. | Коментар до рядка. |
idлише читання | ціле | Ідентифікатор запису. | |
unit_idлише читання | id | Одиниця товару (лише у відповіді). | |
input_factorлише читання | десяткове (рядок) | Скільки базових одиниць в упаковці, береться з картки товару. | |
product_unitsлише читання | масив ProductUnit | Одиниці товару (лише у відповіді). | |
totalлише читання | ціле, копійки | Підсумок рядка, рахує сервер. | |
created_atлише читання | дата-час | Час створення. | |
updated_atлише читання | дата-час | Час останньої зміни, на ньому будується інкрементальна синхронізація. | |
updated_userлише читання | об’єкт User | Хто змінив запис останнім. | |
subлише читання | рядок | Службове поле, ігноруйте. | |
versionлише читання | ціле | Службовий лічильник змін запису. |
Вкладені масиви
batches: лише у відповіді (expand=Batches).serial_numbers: лише у відповіді (expand=SerialNumbers).
Повʼязані обʼєкти для ?expand= (4)
Без expand приходять як null; писати їх не можна, передавайте відповідне *_id.
Службові поля у відповіді, ігноруйте: UserId, OldEntityProduct.
Додати товар
POST /api/v1/order/85/items
Idempotency-Key: order-85-add-258
{ "product_id": 258, "quantity": 3000 }Змінити ціну й знижку рядка
PUT /api/v1/order/85/items/323
{ "price": 145000, "discount": 500 }entity_type / entity_id у тілі ігноруються. Рядок чужого документа в цьому шляху дає 404. Закритий обліковий період, недостатній залишок чи вже проведений документ дають 422 з поясненням (див. Помилки).Замовлення з сайту: повний сценарій
1. Знайти або створити клієнта
GET /api/v1/contact?filter[channels.phone;like]=671234567&fields=id # немає — POST /api/v1/contact (див. «Контакти»)
2. Створити замовлення
POST /api/v1/order
Idempotency-Key: site-order-1001
{ "name": "Сайт №1001", "external_id": "site-1001", "contact_id": 42, "source_id": 3 }3. Додати позиції
POST /api/v1/order/85/items
{ "product_id": 258, "quantity": 2000 }4. Виставити рахунок на все замовлення
POST /api/v1/order/create-invoice/85
{}Частковий рахунок: лише частина позицій
GET /api/v1/order/document-products/85 # id позицій і available_quantity
POST /api/v1/order/create-invoice/85
{ "products": [ { "id": 323, "quantity": 1000 } ], "provider_id": 1 }provider_id означає вашу юрособу (ФОП/ТОВ), від якої виставляється документ. Якщо його не передано, береться юрособа із замовлення або основна.