Материалы: сырье и комплектующие, из которых производятся продукты. Через API их можно создавать, редактировать и удалять, получать список и данные материала, обновлять остатки на складах.

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

## Методы

| Метод | Что делает |
|---|---|
| [materials/add](https://developers.controlata.ru/hc/api-docs/articles/materials-add) | Создает материал |
| [materials/edit](https://developers.controlata.ru/hc/api-docs/articles/materials-edit) | Изменяет материал |
| [materials/delete](https://developers.controlata.ru/hc/api-docs/articles/materials-delete) | Удаляет материал |
| [materials/update_stock](https://developers.controlata.ru/hc/api-docs/articles/materials-update-stock) | Устанавливает остаток на складе |
| [materials/get_list](https://developers.controlata.ru/hc/api-docs/articles/materials-get-list) | Возвращает материалы склада |
| [materials/get_entry](https://developers.controlata.ru/hc/api-docs/articles/materials-get-entry) | Возвращает данные материала |
| [materials/get_stocks](https://developers.controlata.ru/hc/api-docs/articles/materials-get-stocks) | Возвращает остатки материалов по всем складам |

## Поля материала

| Поле | Тип | Описание |
|---|---|---|
| id | int | ID материала |
| name | string | Название |
| sku | string | Артикул |
| unit | string | Единица измерения, код из статьи [Справочники](https://developers.controlata.ru/hc/api-docs/articles/reference) |
| price | float | Цена за единицу. Используется для расчета себестоимости продуктов |
| notes | string | Заметки |
| archived | int | 1, если материал в архиве |
| categories | array | Категории материала: id и name |
| suppliers | array | Поставщики материала: id и name |

## Остатки на складах

Остаток, минимальный остаток и запланированное изменение хранятся отдельно для каждого склада. Поэтому методы, которые их возвращают или меняют, принимают storage_id.

| Поле | Тип | Описание |
|---|---|---|
| stock | float | Остаток на складе |
| minimum | float | Минимальный остаток на складе |
| planned | float | Изменение остатка по операциям в статусе План (поставки, производства, заказы). null, если таких операций нет |

Материал числится на складе, если у него там есть строка остатка, в том числе с нулевым остатком. Такая строка появляется:

* на складе, указанном при создании материала;
* на складах, где в настройках материалов выбрано **Все**, и на складах, чьи категории совпадают с категориями материала;
* на любом другом складе, когда туда приходит остаток (поставка, перемещение, обновление остатка). Если остаток на таком складе снова становится нулевым, строка удаляется.

Методы get_list и get_entry видят материал только на тех складах, где у него есть строка остатка.

## Цена и себестоимость

Цена материала (price) определяет себестоимость продуктов, в состав которых он входит. При изменении цены Controlata пересчитывает себестоимость таких продуктов. Поставка материала обновляет его цену по сумме поставки.
