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

```
v1/purchases/update_status.php
```

## Параметры

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

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

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

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

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

```
{
    "purchase_id": 29645,
    "status": 3,
    "date_received": "2026-10-09"
}
```

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

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

## Ошибки

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