Редактирование заказа

Максим

Максим

Обновлено Oct 6, 2026

Изменяет заказ. Меняются только переданные поля, остальные остаются прежними. Подробнее о частичном редактировании в статье Общие правила.

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.