Изменяет производство. Меняются только переданные поля, остальные остаются прежними. Подробнее о частичном редактировании в статье [Общие правила](https://developers.controlata.ru/hc/api-docs/articles/rules).

```
v1/production/edit.php
```

## Параметры

| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| production_id | int | Да | ID производства |
| products | array | Нет | Выпускаемые продукты: id или sku и amount, как в [v1/production/add](https://developers.controlata.ru/hc/api-docs/articles/production-add). Заменяют текущие целиком |
| date | string | Нет | Дата производства, YYYY-MM-DD |
| name | string | Нет | Название |
| notes | string | Нет | Заметки |
| produce_subproducts | int | Нет | 1: производить заготовки вместе с продуктами, 0: списывать их со склада |
| materials_storage_id | int | Нет | Склад, с которого списываются материалы |
| subproducts_storage_id | int | Нет | Склад, с которого списываются использованные продукты |
| products_storage_id | int | Нет | Склад, на который поступают произведенные продукты |

Статус этим методом не меняется, для него есть [v1/production/update_status](https://developers.controlata.ru/hc/api-docs/articles/production-update-status). Номер изменить нельзя.

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

* **Пересчет.** Любое изменение, даже только заметок, заново рассчитывает расход по текущим составам продуктов и текущим остаткам. Флаг bom_changed после этого сбрасывается в 0. Производство остается в своем статусе.
* **Ручные уточнения расхода**, сделанные в Controlata, сохраняются. Исключение: при produce_subproducts, равном 1, уточнения по использованным продуктам удаляются, потому что заготовки производятся по своим составам.
* **Склады.** Переданный склад должен существовать, 0 не принимается. Если у производства выбран автоматический склад, не передавайте поле склада, чтобы его сохранить.
* **Привязанные списания** после пересчета снова добавляются к себестоимости производства.
* **Производство под заказ** (order_id больше 0). Продукты задает заказ, поэтому products можно передать только с теми же продуктами и количеством, например в другом порядке. Остальные поля меняются как обычно.

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

```
{
    "production_id": 39978,
    "products": [
        {
            "id": 512,
            "amount": 12
        }
    ],
    "notes": "Добавили два стола"
}
```

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

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

## Ошибки

| Ошибка | Причина |
|---|---|
| No production_id in input | Не передан production_id |
| Production not found or access denied | Производство не найдено или удалено |
| Products of a production linked to a sale cannot be changed. Edit the sale instead | Изменение продуктов производства под заказ |
| No products in input | Передан пустой массив products |
| Products is not an array | products не массив |
| Product with id 512 not found | Продукт не найден или удален |
| Amount must be greater than 0 for product with id 512 | Количество не число или не больше 0 после округления |
| Storage ID is not set | Передан склад, равный 0 или пустой |
| Storage ID not found | Склад не найден или удален |
| Date is not a valid date in format YYYY-MM-DD | Неверный формат даты |

Остальные ошибки строк products такие же, как в [v1/production/add](https://developers.controlata.ru/hc/api-docs/articles/production-add).
