Пример интеграции с внешними учётными системами
Пример интеграции с внешними учётными системами
Группы товаров
Группы товаров делятся на основные группы и подгруппы. Чтобы создать подгруппу, необходимо в id_owner_group указать id_group родительской группы.
GET: /api/{locale}/groupGoods
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| id_group | id_group | id_group | |
| name_group | string(128) | Название группы | |
| id_owner_group | integer | null | Идентификатор владельца группы | |
| id_image | integer | null | Идентификатор изображения | |
| active | boolean | Активный статус группы | |
| guid | string | Глобальный уникальный идентификатор | |
| time_create | string(timestampz) | Время создания | |
| time_change | string(timestampz) | Время последнего изменения | |
| hasChildren | boolean | Наличие дочерних элементов |
POST: /api/{locale}/groupGoods
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| name_group* | string(128) | Название группы | |
| id_owner_group | integer | null | Идентификатор владельца группы | |
| id_image | integer | null | Идентификатор изображения | |
| active* | boolean | true | Активный статус группы |
PUT: /api/{locale}/groupGoods/{guid_group}
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| name_group* | string(128) | Название группы | |
| id_owner_group | integer | null | Идентификатор владельца группы | |
| id_image | integer | null | Идентификатор изображения | |
| active* | boolean | true | Активный статус группы |
Уровни цен
У каждого проекта есть постоянный уровень цены Закупочный (id_price_level = -1). Все последующие созданные идут по автоинкременту 1 и соответствуют Розничному уровню цен.
GET: /api/{locale}/price-level
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| id_price_level | bigIncrement | Уникальный идентификатор уровня цен | |
| name_price_level | string(128) | Название уровня цен | |
| active | boolean | true | Активный статус уровня цен |
| guid | string | uuid | Глобальный уникальный идентификатор |
| time_create | string(timestampz) | Время создания | |
| time_change | string(timestampz) | Время последнего изменения |
POST: /api/{locale}/price-level
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| name_price_level | string(128) | Название уровня цен | |
| active | boolean | true | Активный статус уровня цен |
PUT: /api/{locale}/price-level/{guid_price_level}
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| name_price_level* | string(128) | Название уровня цен | |
| active* | boolean | true | Активный статус уровня цен |
Единицы измерения
Единица измерения соотносится с товаром по id_goods на уровне базы и guid goods на уровне запроса API. У каждого товара обязательно должна быть одна единица измерения по умолчанию (is_default = true) с коэффициентом (rate = 1.0).
Дополнительные единицы измерения обязательно должны иметь совместимый Тип единицы измерения с базовой единицей:
- Если базовая — Целый тип (1): только целое (1).
- Если базовая — Кратное 25% (2): кратное 0.25 (2).
- Если базовая — Дробная (3): любое целое или дробное значение.
GET: /api/{locale}/goods/{guid_good}/units
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| id_unit | integer | Уникальный идентификатор единицы измерения | |
| id_goods | integer | Уникальный идентификатор товара | |
| name_unit | string(10) | Название единицы | |
| full_name | string | Полное название единицы | |
| short_name | string | Сокращённое название | |
| code | string | Код единицы | |
| type_unit | integer | Тип единицы: 1 — целое число, 2 — кратное 25%, 3 — дробное | |
| rate | numeric(15,3) | Коэффициент | |
| is_default | boolean | Признак единицы по умолчанию | |
| for_ordering | boolean | Доступность для заказа | |
| is_storage_residues | boolean | Признак единицы хранения остатков | |
| max_count | numeric(10,3) | Максимальное количество для продажи одной строкой | |
| percent_deviation | numeric | Процент отклонения | |
| good | object | Информация о товаре | |
| unit_sample | object | Образец единицы с дополнительными атрибутами | |
| brutto_weight | integer | Вес брутто | |
| height | integer | Высота | |
| width | integer | Ширина | |
| depth | integer | Глубина | |
| active | boolean | Активный статус единицы измерения | |
| guid | string | Глобальный уникальный идентификатор | |
| time_create | string(timestampz) | Время создания | |
| time_change | string(timestampz) | Время последнего изменения |
POST: /api/{locale}/goods/{guid_goods}/units
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| id_unit* | integer | Уникальный идентификатор единицы измерения | |
| type_unit* | integer | Тип единицы: 1 — целое число, 2 — кратное 25%, 3 — дробное | |
| rate* | numeric(15,3) | Коэффициент | |
| max_count | numeric(10,3) | Максимальное количество для продажи одной строкой | |
| brutto_weight | integer | 0 | Вес брутто |
| percent_deviation | numeric | 0.0 | Процент отклонения |
| for_ordering | boolean | false | Доступность для заказа |
| is_default* | boolean | false | Признак единицы по умолчанию |
| is_storage_residues* | boolean | false | Признак единицы хранения остатков |
| height | integer | Высота | |
| width | integer | Ширина | |
| depth | integer | Глубина | |
| active* | boolean | Активный статус единицы измерения |
PUT: /api/{locale}/goods/{guid_goods}/units/{guid_unit}
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| type_unit* | integer | Тип единицы: 1 — целое число, 2 — кратное 25%, 3 — дробное | |
| rate* | numeric(15,3) | Коэффициент | |
| max_count | numeric(10,3) | Максимальное количество для продажи одной строкой | |
| brutto_weight | integer | 0 | Вес брутто |
| percent_deviation | numeric | 0.0 | Процент отклонения |
| for_ordering | boolean | false | Доступность для заказа |
| is_default* | boolean | false | Признак единицы по умолчанию |
| is_storage_residues* | boolean | false | Признак единицы хранения остатков |
| height | integer | Высота | |
| width | integer | Ширина | |
| depth | integer | Глубина | |
| active* | boolean | Активный статус единицы измерения |
Цены
Цена создаётся для комбинации товара (id_goods) + базовой единицы измерения (id_unit) + серии (id_series) + уровня цен (id_price_level).
Создать цену можно только один раз при создании товара. При создании необходимо учесть, что минимальная цена должна быть не менее 10 копеек (0.10). Максимальная цена — не больше Цены (чаще равняется Цене).
Обновление цены происходит документом Переоценка.
GET: /api/{locale}/goods/{guid_good}/goodsPrice/prices
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| id_goods | integer | Идентификатор товара | |
| name_goods | string | Название товара | |
| id_unit | integer | Идентификатор единицы измерения | |
| name_unit | string | Название единицы измерения | |
| id_series | string | Идентификатор серии товара | |
| name_series | string | Название серии товара | |
| id_price_level | integer | Идентификатор уровня цены | |
| name_price_level | string | Название уровня цен | |
| min_price | numeric(15,4) | Минимальная цена | |
| max_price | numeric(15,4) | Максимальная цена | |
| active | boolean | Активный статус цены |
POST: /api/{locale}/goods/{guid_good}/goodsPrice
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| id_goods | integer | Идентификатор товара | |
| id_unit | integer | Идентификатор единицы измерения | |
| id_series | string | — | Идентификатор серии товара |
| id_price_level | integer | Идентификатор уровня цены | |
| price | numeric(15,4) | Цена | |
| min_price | numeric(15,4) | Минимальная цена | |
| max_price | numeric(15,4) | Максимальная цена | |
| active | boolean | Активный статус цены |
Штрих-код
GET: /api/{locale}/goods/{guid_good}/barcodes
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| bar_code | numeric-string(21) | Уникальный штрих-код | |
| id_goods | integer | Идентификатор товара | |
| id_unit | integer | Идентификатор единицы измерения | |
| id_series | string | Идентификатор серии товара | |
| ext_bar_code | string(5) | null | — | Расширенный штрих-код 13+2, 15+5 |
| name_series | string | Название серии | |
| name_unit | string | Название единицы измерения | |
| active | boolean | Активный статус штрих-кода | |
| guid | string | Глобальный уникальный идентификатор | |
| time_create | string(timestampz) | Время создания | |
| time_change | string(timestampz) | Время последнего изменения |
POST: /api/{locale}/goods/{guid_good}/barcodes
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| bar_code* | numeric-string(21) | Уникальный штрих-код | |
| id_unit* | integer | Идентификатор единицы измерения | |
| id_series* | string | Идентификатор серии товара | |
| ext_bar_code | string(5) | null | — | Расширенный штрих-код 13+2, 15+5 |
| active* | boolean | Активный статус цены |
PUT: /api/{locale}/goods/{guid_good}/barcodes/{guid_barcode}
| Поле | Тип | По умолчанию | Комментарий |
|---|---|---|---|
| bar_code* | numeric-string(21) | Уникальный штрих-код | |
| id_unit* | integer | Идентификатор единицы измерения | |
| id_series* | string | Идентификатор серии товара | |
| ext_bar_code | string(5) | null | — | Расширенный штрих-код 13+2, 15+5 |
| active* | boolean | Активный статус цены |
Flow создания товара
- Зарезервировать id для товара. Выполнить запрос:
POST: /api/{locale}/goods/id/lastВ ответ получитеid_goodsиguid. - Создать как минимум базовую единицу измерения со значением
is_default = true. Выполнить запрос:POST: /api/{locale}/goods/{guid_goods}/units - Создать как минимум одну базовую серию со значениями
id_series = '-',name_series = '-'. Выполнить запрос:POST: /api/{locale}/goods/{guid_goods}/series - Заполнить товар атрибутами. В запросе обязательно указать
id_goodsиguid, полученные на первом шаге. Выполнить запрос:POST: /api/{locale}/goods - Опционально. Создать цену (закупочную, розничную и т.д.). Выполнить запрос:
POST: /api/{locale}/goods/{guid_good}/goodsPrice - Опционально. Создать штрих-код. Выполнить запрос:
POST: /api/{locale}/goods/{guid_good}/barcodes