Изменяет заказ. Меняются только переданные поля, остальные остаются прежними. Подробнее о частичном редактировании в статье Общие правила.
v1/orders/edit.php
Параметры
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| order_id | int | Да | ID заказа |
| num | string | Нет | Номер заказа без префикса |
| products | array | Нет | Строки продуктов. Заменяют текущие строки целиком |
| materials | array | Нет | Строки материалов. Заменяют текущие строки целиком |
| customer_id | int | Нет | ID покупателя |
| customer_name | string | Нет | Имя покупателя и поля customer_* |
| date_placed | string | Нет | Дата заказа |
| date_shipped | string | Нет | Дата отправки. Пустая строка очищает ее |
| products_storage_id | int | Нет | Склад продуктов. Принимается и старое имя storage_id |
| materials_storage_id | int | Нет | Склад материалов |
| production | int | Нет | 1 включает производство под заказ, 0 выключает |
| delivery_price | float | Нет | Стоимость доставки |
| discount | float | Нет | Скидка |
| notes | string | Нет | Заметки |
Статус и статус оплаты этим методом не меняются, для них есть v1/orders/update_status и v1/orders/update_payment.
Как работает
- Строки. Если передан products или materials, состав заменяется целиком, а непереданный массив считается пустым. Если не передан ни один, строки остаются прежними. Строки из ответа v1/orders/get_entry можно отправить обратно без изменений.
- Номер. Передавайте num без префикса: Controlata добавит текущий префикс подключения. Если num не передан, номер не меняется.
- Покупатель. Без customer_id и customer_name покупатель остается прежним. customer_name с тем же именем, что у текущего покупателя, не создает дубль. Другое имя создает нового покупателя. Текущего покупателя можно передать по customer_id, даже если он уже удален.
- Заметки. Если переданы строки, а notes нет, сообщения о ненайденных позициях дописываются к текущим заметкам. Одно и то же сообщение повторно не дописывается.
- Склады. При смене склада списание переносится на новый склад, остатки пересчитываются на обоих складах.
- Производство под заказ. production со значением 1 создает связанное производство, если его еще нет, а у заказа с производством состав производства обновляется вслед за строками. Значение 0 удаляет производство, и продукты списываются со склада продуктов. Без production способ выполнения не меняется.
- Статус сохраняется. Если заказ уже упакован или отправлен, новые строки сразу списываются со склада. Если заказ отправлялся частями, изменение количества сначала затрагивает неотправленную часть.
- Даты. Пустой date_placed заменяется сегодняшней датой. Движения по складу датируются датой отправки, а без нее датой заказа.
Пример запроса
Добавить скидку и изменить заметки, не трогая строки и покупателя:
{
"order_id": 43727,
"discount": 1500,
"notes": "Скидка по промокоду"
}
Заменить состав заказа:
{
"order_id": 43727,
"products": [
{
"sku": "P001",
"amount": 3,
"total": 39000
}
]
}
Пример ответа
{
"success": true
}
Ошибки
| Ошибка | Причина |
|---|---|
| No order_id in input | Не передан order_id |
| Order not found or access denied | Заказ не найден или удален |
| Products is not an array | products не массив (так же для materials) |
| No products or materials in input | Переданы пустые products и materials |
| Materials in orders are disabled in company settings | Переданы материалы, а настройка Возможность заказа материалов выключена |
| All products have wrong SKU or id | Не найдена ни одна строка (с материалами «All products and materials have wrong SKU or id») |
| Storage ID is not set | Передан пустой склад |
| Storage ID not found | Склад не найден или удален |
| Date is not a valid date in format YYYY-MM-DD | Неверная дата |
| Customer not found | Покупатель customer_id не найден или удален |
| Customer name must not be empty | Пустое customer_name |
| Invalid customer_type value. Must be one of: 1, 2, 3 | Неверный тип нового покупателя |
Ошибки в отдельных строках (нет amount или total, неверное количество) те же, что в v1/orders/add.