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

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

## Методы

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

## Поля списания

| Поле | Тип | Описание |
|---|---|---|
| id | int | ID списания |
| num | string | Номер |
| date | string | Дата списания, YYYY-MM-DD |
| status | int | Статус: 0 План, 1 Списано |
| production_id | int | ID производства, к которому привязано списание. 0, если не привязано |
| materials_storage_id | int | Склад, с которого списываются материалы |
| materials_storage_name | string | Название склада материалов |
| products_storage_id | int | Склад, с которого списываются продукты |
| products_storage_name | string | Название склада продуктов |
| cost | float | Себестоимость списанного по FIFO |
| amount | float | Общее количество. null, если у позиций разные единицы измерения |
| lines | int | Количество строк |
| notes | string | Заметки |

В одном списании могут быть и материалы, и продукты: материалы списываются со склада materials_storage_id, продукты со склада products_storage_id.

## Статусы

| Код | Статус | Остатки |
|---|---|---|
| 0 | План | Списание только запланировано: остаток не меняется, количество учитывается в поле planned остатков |
| 1 | Списано | Материалы и продукты списаны со склада |

Новое списание создается в статусе из настройки **Статус нового списания по умолчанию**. Сменить статус можно методом [v1/writeoffs/update_status](https://developers.controlata.ru/hc/api-docs/articles/writeoffs-update-status).

## Номер

Номер списания строковый и задается свободно. Если не передать его при создании, Controlata присвоит следующий по порядку: наибольший числовой номер плюс 1. Уникальность номера не проверяется.

## Привязка к производству

Списание можно привязать к производству полем production_id. Тогда его себестоимость добавляется к себестоимости производства и распределяется между произведенными продуктами. Так учитывают, например, брак материалов при производстве.

* Стоимость добавляется сразу при привязке, независимо от статуса списания.
* При изменении списания стоимость производства пересчитывается, при удалении списания или передаче production_id, равного 0, вычитается.
* При удалении производства списание остается, но отвязывается от него.

Подробнее о производстве в статье [Производство](https://developers.controlata.ru/hc/api-docs/articles/production).
