Skip to content

Групповая переоценка ​

«История переоценок»: одна переоценка — групповая или одиночная — с набором переоценённых товаров, способом округления и курсом, по которому она считалась.

МетодАдресНазначение
GET/company/trade/recalculation-batchСписок переоценок
GET/company/trade/recalculation-batch/{model}Детали переоценки
POST/company/trade/recalculation-batchГрупповая переоценка

Список переоценок ​

GET/company/trade/recalculation-batch

История переоценок (групповых и одиночных) с количеством товаров, сводкой наценки, округлением и курсом, с пагинацией и фильтрами.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

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

ПараметрОписание
filter[id]ID — точное значение
filter[company_id]Компания — одно значение или список filter[company_id][]
filter[creator_id]Создатель — точное значение
filter[created_at]Создано — период: [0] — с, [1] — по (Y-m-d)
sort[]Сортировка, - — по убыванию: id, -id
with[]Подгрузить связи: creator.profile, products.product
pageНомер страницы, с 1
page-sizeЗаписей на странице, не больше 20
http
GET /company/trade/recalculation-batch?filter[id]=1&filter[company_id][0]=1&filter[company_id][1]=2&filter[creator_id]=1&filter[created_at][0]=2026-09-29&filter[created_at][1]=2026-09-30

Ответ · 200 ​

Постраничный ответ: записи в data[], пагинация в links и meta.

Поля ответа
ПолеТипОписание
dataarrayДанные
json
{
    "data": [],
    "links": {
        "first": "https://api.wasyt.uz/company/trade/recalculation-batch?page=1",
        "last": "https://api.wasyt.uz/company/trade/recalculation-batch?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "links": [],
        "path": "https://api.wasyt.uz/company/trade/recalculation-batch",
        "per_page": 20,
        "to": null,
        "total": 0
    }
}

Детали переоценки ​

GET/company/trade/recalculation-batch/{model}

Одна переоценка: тип (single/group), способ округления, курс и автор.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Ответ ​

Пример ответа пока не записан тестами.

Групповая переоценка ​

POST/company/trade/recalculation-batch

Переоценивает набор товаров одной транзакцией. Строки, которые нельзя переоценить (товар в активной продаже, минимальная цена ниже себестоимости), пропускаются и возвращаются в skipped_products с причинами; ошибка — только если не проходит ни одна строка. currency_rate («по новому курсу») становится курсом USD компании.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Тело запроса ​

ПолеТипОбязательноОписание
company_idintegerДаКомпания. ID существующей записи, доступной пользователю
rounding_typestringНетДопустимые значения: none, smart, 1000
currency_ratenumberНетКурс. До 2 знаков после запятой. Не меньше 1. Не больше 999999999999.99
productsobject[]ДаПродукты. Мин. 1 элементов
products[].product_idintegerДаПродукт. ID существующей записи
products[].sale_pricenumberДаЦена при продаже. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99
products[].sale_currencystringДаВалюта при продаже. Допустимые значения: uzs, usd, eur, rub
products[].markup_percentnumberНетНаценка %. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99
products[].price_without_roundingnumberНетДо 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99
products[].previous_pricenumberНетПредыдущая цена. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99
products[].min_pricenumberНетДо 2 знаков после запятой. Не меньше 0. Не больше 999999999999.99
products[].min_price_percentnumberНетНе меньше 0. Не больше 10000
json
{
    "company_id": 1,
    "products": [
        {
            "product_id": 1,
            "sale_price": 50000,
            "sale_currency": "uzs",
            "markup_percent": 25.5,
            "price_without_rounding": 49875
        },
        {
            "product_id": 2,
            "sale_price": 120000,
            "sale_currency": "uzs",
            "markup_percent": 20,
            "price_without_rounding": 119800
        }
    ]
}
bash
curl -X POST "https://api.wasyt.uz/company/trade/recalculation-batch" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"company_id":1,"products":[{"product_id":1,"sale_price":50000,"sale_currency":"uzs","markup_percent":25.5,"price_without_rounding":49875},{"product_id":2,"sale_price":120000,"sale_currency":"uzs","markup_percent":20,"price_without_rounding":119800}]}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
idintegerID
company_idintegerКомпания
creator_idintegerСоздатель
rounding_typenull
currency_ratenullКурс
created_atstringСоздано
skipped_productsarray
typestringТип
products_countinteger
markup_summarynull
creatorobject
creator.idintegerID
creator.typestringТип
creator.role_idintegerРоль
creator.company_idintegerКомпания
creator.partner_idnullПартнёр
creator.usernamestringЛогин
creator.pinflnullПИНФЛ
creator.phonestringТелефон
creator.sipuni_sip_numberstringVoIP - Sipuni (SIP-номер)
creator.is_confirmedboolean
creator.are_all_companies_availableboolean
creator.last_login_atnull
creator.created_atstringСоздано
creator.updated_atstringОбновлено
creator.is_deletedboolean
creator.profileobject
creator.profile.first_namenullИмя
creator.profile.last_namenullФамилия
creator.profile.positionnullДолжность
creator.profile.birth_datenullДата рождения
creator.profile.gendernullПол
productsobject[]Продукты
products[].idintegerID
products[].company_idintegerКомпания
products[].creator_idintegerСоздатель
products[].product_idintegerПродукт
products[].batch_idinteger
products[].previous_priceintegerПредыдущая цена
products[].sale_priceintegerЦена при продаже
products[].sale_currencystringВалюта при продаже
products[].markup_percentnumberНаценка %
products[].previous_markup_percentnull
products[].price_without_roundinginteger
products[].min_pricenull
products[].min_price_percentnull
products[].created_atstringСоздано
products[].productobject
products[].product.idintegerID
products[].product.parent_idnullРодитель
products[].product.creator_idintegerСоздатель
products[].product.company_idintegerКомпания
products[].product.category_idintegerКатегория
products[].product.brand_idintegerБренд
products[].product.unit_idintegerЕдиница измерения
products[].product.namestringНазвание
products[].product.full_textstringПолный текст
products[].product.plustringАртикул (PLU)
products[].product.descriptionstringОписание
products[].product.is_free_pricebooleanПродажа по свободной цене
products[].product.is_favoriteboolean
products[].product.min_quantitynull
products[].product.barcodestringШтрих-код
products[].product.images_listarrayИзображения
products[].product.images_list_thumbsarray
products[].product.created_atstringСоздано
products[].product.updated_atstringОбновлено
products[].product.is_deletedboolean
json
{
    "id": 2,
    "company_id": 1,
    "creator_id": 2,
    "rounding_type": null,
    "currency_rate": null,
    "created_at": "2026-09-30 12:54:40",
    "skipped_products": [],
    "type": "group",
    "products_count": 2,
    "markup_summary": null,
    "creator": {
        "id": 2,
        "type": "director",
        "role_id": 2,
        "company_id": 1,
        "partner_id": null,
        "username": "director_1@local.host",
        "pinfl": null,
        "phone": "998020000001",
        "sipuni_sip_number": "210",
        "is_confirmed": true,
        "are_all_companies_available": false,
        "last_login_at": null,
        "created_at": "2026-09-30 12:47:59",
        "updated_at": "2026-09-30 12:47:59",
        "is_deleted": false,
        "profile": {
            "first_name": null,
            "last_name": null,
            "position": null,
            "birth_date": null,
            "gender": null
        }
    },
    "products": [
        {
            "id": 4,
            "company_id": 1,
            "creator_id": 2,
            "product_id": 1,
            "batch_id": 2,
            "previous_price": 1100,
            "sale_price": 50000,
            "sale_currency": "uzs",
            "markup_percent": 25.5,
            "previous_markup_percent": null,
            "price_without_rounding": 49875,
            "min_price": null,
            "min_price_percent": null,
            "created_at": "2026-09-30 12:54:40",
            "product": {
                "id": 1,
                "parent_id": null,
                "creator_id": 1,
                "company_id": 1,
                "category_id": 4,
                "brand_id": 1,
                "unit_id": 1,
                "name": "Product 1",
                "full_text": "Product 1",
                "plu": "0001",
                "description": "Description 1",
                "is_free_price": false,
                "is_favorite": false,
                "min_quantity": null,
                "barcode": "0000000000001",
                "images_list": [
                    "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                    "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                ],
                "images_list_thumbs": [],
                "created_at": "2026-09-30 12:47:59",
                "updated_at": "2026-09-30 12:47:59",
                "is_deleted": false
            }
        },
        {
            "id": 5,
            "company_id": 1,
            "creator_id": 2,
            "product_id": 2,
            "batch_id": 2,
            "previous_price": 2400,
            "sale_price": 120000,
            "sale_currency": "uzs",
            "markup_percent": 20,
            "previous_markup_percent": null,
            "price_without_rounding": 119800,
            "min_price": null,
            "min_price_percent": null,
            "created_at": "2026-09-30 12:54:40",
            "product": {
                "id": 2,
                "parent_id": 1,
                "creator_id": 1,
                "company_id": 1,
                "category_id": 4,
                "brand_id": 1,
                "unit_id": 1,
                "name": "Product 1-1",
                "full_text": "Product 1-1 full text",
                "plu": "0011",
                "description": "Description 1-1",
                "is_free_price": false,
                "is_favorite": false,
                "min_quantity": null,
                "barcode": "0000000000011",
                "images_list": [
                    "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                    "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                ],
                "images_list_thumbs": [],
                "created_at": "2026-09-30 12:47:59",
                "updated_at": "2026-09-30 12:47:59",
                "is_deleted": false
            }
        }
    ]
}

Пример ошибки · 422 ​

json
{
    "message": "Поле Продукты обязательно для заполнения.",
    "errors": {
        "products": [
            "Поле Продукты обязательно для заполнения."
        ]
    }
}