Остатки

Раздел API для управления остатками товаров по складам в системе ERP: просмотр, создание, обновление и импорт записей инвентаря.

Получение списка остатков (табличное представление)

Метод
GET
URL
https://api.gigma.ru/api/tables/inventories
Авторизация
Bearer token
Headers
Authorization: Bearer {token}

Параметры запроса

  • query — поисковая строка
  • owned_by_us — иерархия складов (true/false)
  • warehouse_id[] — массив ID складов
  • type_id[] — массив ID типов товаров
  • city_id[] — массив ID городов
  • brand_id[] — массив ID производителей
  • vat_id[] — ID НДС
  • application_id[] — ID приложения

Ответ

При успешном действии возвращается HTTP код 200 с массивом columns, объектом warehouseNomenclatures и данными пагинации.

Получение списка остатков (JSON)

Метод
GET
URL
https://api.gigma.ru/api/inventories
Авторизация
Bearer token
Headers
Authorization: Bearer {token}

Backend bug: на боевых данных возвращает IncompleteRead(0 bytes read) — запрос обрывается без ответа. Причина: нет пагинации (->get() без ->paginate()), при большом каталоге сервер не успевает отдать весь ответ. Пока не починено — используй табличный эндпоинт с пагинацией (GET /api/tables/inventories?per_page=50).

Ответ

При успешном действии возвращается HTTP код 200 с массивом inventories, содержащим полные данные о товарах, количестве, ценах и НДС.

Создание записи остатка

Метод
POST
URL
https://api.gigma.ru/api/inventories
Авторизация
Bearer token
Headers
Authorization: Bearer {token}

Параметры запроса

⚠ Реальный minimum (сверено): nomenclature_id + warehouse_id. Остальные опциональны на уровне валидатора, но quantity и price обязательны по смыслу.

  • nomenclature_id (int, обязательно) — ID номенклатуры (GET /api/nomenclatures)
  • warehouse_id (int, обязательно) — ID склада (GET /api/warehouses)
  • code (string, опционально) — код позиции остатка
  • vat_id (int, опционально) — ID ставки НДС (GET /api/vats)
  • quantity (int, опционально) — количество в штуках, неотрицательное целое
  • price (string, опционально) — цена в формате decimal-string, 2 знака ("1000.00")
  • discount (int, опционально) — процент скидки, 0–100
  • markup (int, опционально) — процент наценки

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

{
    "code": "INV-001",
    "warehouse_id": 5,
    "nomenclature_id": 100,
    "vat_id": 2,
    "quantity": 50,
    "price": "1000.00",
    "discount": 0,
    "markup": 30
}

Ответ

При успешном действии возвращается HTTP код 201 с созданным объектом остатка.

{
    "inventory": {
        "id": 200,
        "code": "INV-001",
        "warehouse": { "id": 5, "name": "Главный склад" },
        "nomenclature": { "id": 100, "name": "Крем для лица «Нежность»", "code": "SKU-001", "avatar": "https://api.gigma.ru/storage/uploads/avatar.jpg" },
        "counterparty": { "id": 3, "name": "ООО Поставщик", "inn": "7712345678", "type_id": 1 },
        "invoice": { "number": "РН-001", "date": "2026-05-16", "row_number": 1 },
        "vat": { "id": 2, "name": "НДС 20%" },
        "vat_rate": "20%",
        "vat_amount": "166.67",
        "quantity": 50,
        "price": "1000.00",
        "line_total_without_vat": "50000.00",
        "line_total_with_vat": "50000.00",
        "currency_code": "RUB",
        "discount": 0,
        "markup": 30,
        "created_at": "2026-05-16T07:00:00.000000Z",
        "updated_at": "2026-05-16T07:00:00.000000Z"
    }
}
Описание новых полей
  • nomenclature.avatar (string|null) — URL аватара номенклатуры
  • counterparty (object|null) — поставщик: id, name, inn, type_id
  • invoice (object|null) — реквизиты накладной: number, date, row_number
  • vat (object|null) — ставка НДС как объект {id, name} (не просто число)
  • vat_rate (string|null) — строковое представление ставки («20%», «10%», «0%»)
  • vat_amount (string|null) — сумма НДС по строке, decimal-string
  • line_total_without_vat (string|null) — итого по строке без НДС
  • line_total_with_vat (string|null) — итого по строке с НДС
  • currency_code (string|null) — код валюты ISO 4217 ("RUB")

Обновление записи остатка

Метод
PUT
URL
https://api.gigma.ru/api/inventories/{id}
Авторизация
Bearer token
Headers
Authorization: Bearer {token}

Параметры запроса

Те же параметры, что и в эндпоинте создания.

Ответ

При успешном действии возвращается HTTP код 200 с обновлённым объектом остатка.

Получение выбранного остатка

Метод
GET
URL
https://api.gigma.ru/api/inventories/{id}
Авторизация
Bearer token
Headers
Authorization: Bearer {token}

Ответ

При успешном действии возвращается HTTP код 200 с полной информацией о складе, номенклатуре, количестве, цене и НДС.

Получение истории изменений остатка

Метод
GET
URL
https://api.gigma.ru/api/inventories/{id}/history
Авторизация
Bearer token
Headers
Authorization: Bearer {token}

Ответ

При успешном действии возвращается HTTP код 200 с записями истории, содержащими icon, color, title, description, datetime.

Импорт остатков

Метод
POST
URL
https://api.gigma.ru/api/inventories/upload
Авторизация
Bearer token
Headers
Authorization: Bearer {token}

Два режима в зависимости от Content-Type. В обоих режимах warehouse_id обязателен. Режим А (multipart/form-data): передаётся file — Excel .xmr. Режим Б (application/json): передаётся items[] с полями накладной.

⚠ Реальный minimum (сверено через POST {} → 422): warehouse_id + (file или items[] со всеми полями ниже).

Параметры запроса

  • warehouse_id (int, обязательно) — ID склада (GET /api/warehouses). Обязателен в обоих режимах.
  • file (binary, опционально) — Excel-файл .xmr; режим А. Если передан — поля накладной и items не нужны.
  • invoice_number (string, опционально) — номер накладной; обязателен в режиме Б.
  • invoice_date (string, опционально) — дата накладной ISO 8601 ("2026-05-16"); обязателен в режиме Б.
  • supplier_inn (string, опционально) — ИНН поставщика; обязателен в режиме Б.
  • supplier_name (string, опционально) — наименование поставщика; обязателен в режиме Б.
  • currency_code (string, опционально) — код валюты ISO 4217 ("RUB"); обязателен в режиме Б.
  • items (object[], опционально) — строки накладной; обязателен в режиме Б. Каждая строка:
    • row_number (int, обязательно) — порядковый номер строки
    • item_name (string, обязательно) — наименование товара
    • quantity (number, обязательно) — количество
    • price (string, обязательно) — цена за единицу, decimal-string ("4000.00")
    • sum_without_vat (string, обязательно) — сумма без НДС, decimal-string
    • sum_with_vat (string, обязательно) — сумма с НДС, decimal-string
    • vat_rate (string, обязательно) — ставка НДС: "0%", "10%", "20%"

Пример запроса (режим А — файл)

curl -X POST https://api.gigma.ru/api/inventories/upload 
  -H "Authorization: Bearer $TOKEN" 
  -H "Accept: application/json" 
  -F "warehouse_id=1" 
  -F "file=@./inventories.xmr"

Пример запроса (режим Б — JSON)

{
    "warehouse_id": 1,
    "invoice_number": "РН-001",
    "invoice_date": "2026-05-16",
    "supplier_inn": "7712345678",
    "supplier_name": "ООО Поставщик",
    "currency_code": "RUB",
    "items": [
        {
            "row_number": 1,
            "item_name": "Микрофон Shure SM58",
            "quantity": 5,
            "price": "4000.00",
            "sum_without_vat": "20000.00",
            "sum_with_vat": "20000.00",
            "vat_rate": "0%"
        }
    ]
}

Ответ

При успешном действии возвращается HTTP код 200.

{
    "message": "Import successful"
}

При ошибках формата — 422 с описанием проблемных строк в errors.

© 2026 Itecho ERP