Меняет статус заказа. От статуса зависит, списаны ли продукты и материалы заказа со склада (см. [Заказы](https://developers.controlata.ru/hc/api-docs/articles/orders)).

```
v1/orders/update_status.php
```

## Параметры

| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| order_id | int | Да | ID заказа |
| status | int | Да | Новый статус: 0 Новый, 1 Упакован, 3 Отправлен, 4 Отменен |
| date_shipped | string | Нет | Дата отправки. Учитывается при переходе в статус «Отправлен» |

Статус 2 «Частично отправлен» через API не ставится: он появляется, когда часть заказа отгружают в интерфейсе Controlata.

## Как работает

* **Остатки.** В статусах «Упакован» и «Отправлен» продукты и материалы списываются со склада, в статусе «Новый» попадают в запланированное изменение остатка, в статусе «Отменен» на остатки не влияют. Остатки пересчитываются сразу.
* **Дата отправки.** При переходе в «Отправлен» переданная date_shipped записывается в заказ, и списание датируется ею. Без date_shipped дата отправки не меняется. В других статусах date_shipped игнорируется.
* **Частичная отправка.** Если заказ был в статусе «Частично отправлен», при переходе в «Отправлен» неотправленная часть оформляется еще одной отгрузкой.
* **Возврат из отправленных.** При переходе из «Отправлен» или «Частично отправлен» в «Новый», «Упакован» или «Отменен» отгрузки заказа удаляются.
* **Тот же статус.** Если заказ уже в переданном статусе, ничего не меняется, и метод отвечает успехом.

## Пример запроса

```
{
    "order_id": 43727,
    "status": 3,
    "date_shipped": "2026-10-08"
}
```

## Пример ответа

```
{
    "success": true
}
```

## Ошибки

| Ошибка | Причина |
|---|---|
| No order_id in input | Не передано обязательное поле (вместо order_id будет имя поля) |
| Invalid status value. Must be one of: 0, 1, 3, 4 | Неверный статус, в том числе 2 |
| Order not found or access denied | Заказ не найден или удален |
| Date is not a valid date in format YYYY-MM-DD | Неверная date_shipped |
