Создает продукт вместе с составом. Продукт появляется на складе storage_id и на складах, которые хранят все продукты или его категории.
v1/products/add.php
Параметры
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| name | string | Да | Название |
| unit | string | Да | Единица измерения, код из статьи Единицы измерения |
| storage_id | int | Да | Склад, на котором создается остаток |
| sku | string | Нет | Артикул |
| price | float | Нет | Цена продажи за единицу. По умолчанию 0 |
| batch_size | float | Нет | Размер партии: на какое количество продукта указан состав. Больше 0, по умолчанию 1 |
| stock | float | Нет | Начальный остаток на складе storage_id. По умолчанию 0 |
| minimum | float | Нет | Минимальный остаток на складе storage_id. По умолчанию 0 |
| notes | string | Нет | Заметки |
| categories | array | Нет | ID категорий из v1/categories/get_list с type «products» |
| suppliers | array | Нет | ID поставщиков из v1/suppliers/get_list |
| alternative_sku | array | Нет | Альтернативные артикулы: объекты с полями sku (от 1 до 50 символов) и label (необязательная подпись до 100 символов) |
| materials | array | Нет | Материалы в составе |
| products | array | Нет | Заготовки в составе |
| resources | array | Нет | Ресурсы в составе |
Формат строк materials, products и resources описан в разделе «Состав продукта» статьи Продукты. Количества в составе указываются на партию из batch_size единиц.
Controlata рассчитывает себестоимость продукта по составу, и по ней же оценивается начальный остаток. Если состава нет, начальный остаток оценивается по нулевой себестоимости.
Категории через API не создаются, можно назначить только существующие. В categories и suppliers можно передать числа или объекты с полем id, как их возвращает v2/products/get_entry.
Уникальность основного и альтернативных артикулов не проверяется.
Пример запроса
Стол: в партии 10 штук, на партию уходит 0.5 куб. м доски с потерями 5%, 400 саморезов, 40 ножек (заготовка) и 30 часов работы столяра. Накладные расходы считаются процентом, который задан в самом ресурсе, поэтому для него достаточно id.
{
"name": "Стол обеденный",
"sku": "P100",
"unit": "шт",
"price": 45000,
"batch_size": 10,
"storage_id": 3999,
"stock": 5,
"minimum": 2,
"categories": [21],
"suppliers": [46],
"alternative_sku": [
{
"label": "Ozon",
"sku": "OZ-P100"
}
],
"materials": [
{
"id": 2051,
"amount_per_batch": 0.5,
"unit": "куб. м",
"loss_percent": 5
},
{
"id": 2060,
"amount_per_batch": 400,
"unit": "шт"
}
],
"products": [
{
"id": 312,
"amount_per_batch": 40,
"unit": "шт"
}
],
"resources": [
{
"id": 57,
"amount_per_batch": 30,
"unit": "ч"
},
{
"id": 58
}
]
}
Пример ответа
{
"success": true,
"product_id": 3120
}
Ошибки
| Ошибка | Причина |
|---|---|
| No name in input | Не передано обязательное поле (вместо name будет имя поля) |
| Name must not be empty | Пустое название |
| Name must be a string | Название передано не строкой, например массивом |
| Unit not set | Передана пустая единица измерения |
| Unit not found | Неизвестная единица измерения или единица только для ресурсов |
| Storage ID is not set | storage_id равен 0 или пустой |
| Storage ID not found | Склад не найден или удален |
| Batch size must be greater than 0 | Размер партии 0 или меньше |
| Invalid price value. Must be a number | Значение не число, например "12,5" (так же для batch_size, stock и minimum) |
| Category 12 not found | Категория не найдена |
| Supplier not found or access denied | Поставщик не найден или удален |
| Alternative_sku is not an array | alternative_sku передан не массивом |
| SKU must be from 1 to 50 characters for alternative_sku 0 | Альтернативный артикул пустой или длиннее 50 символов (в конце номер строки с 0) |
| Label must not exceed 100 characters for alternative_sku 0 | Подпись альтернативного артикула длиннее 100 символов |
Ошибки в строках materials, products и resources перечислены в разделе «Состав продукта» статьи Продукты.