Дашборд
Виджеты главной страницы и их детальные окна: выручка, чеки, касса, клиенты, должники, склад, продавцы. Все ответы кешируются на 10 минут (теги stat и stat:company:{id}, ключ — путь + query + пользователь) и сбрасываются при любой записи данных компании; область — филиалы, доступные пользователю, с сужением через company_ids[].
Итоговые суммы продаж
/company/stat/dashboard/common/amounts-totalЗа период: средняя сумма чека по валютам (sales.average_amount), проданные и возвращённые товары (количество и сумма со скидкой), прибыль sales.profit_amount и число клиентов, созданных в периоде (clients.quantity). Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
sales | object | |
sales.average_amount | object | |
sales.average_amount.uzs | integer | |
sales.average_amount.usd | integer | |
sales.average_amount.eur | integer | |
sales.average_amount.rub | integer | |
sales.profit_amount | object | Сумма прибыли |
sales.profit_amount.uzs | string | |
sales.profit_amount.usd | string | |
sales.profit_amount.eur | string | |
sales.profit_amount.rub | string | |
sold_products | object | |
sold_products.quantity | null | Количество |
sold_products.amount | object | Сумма |
sold_products.amount.uzs | string | |
sold_products.amount.usd | string | |
sold_products.amount.eur | string | |
sold_products.amount.rub | string | |
returned_products | object | |
returned_products.quantity | null | Количество |
returned_products.amount | object | Сумма |
returned_products.amount.uzs | string | |
returned_products.amount.usd | string | |
returned_products.amount.eur | string | |
returned_products.amount.rub | string | |
clients | object | |
clients.quantity | integer | Количество |
{
"sales": {
"average_amount": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"profit_amount": {
"uzs": "0",
"usd": "0",
"eur": "0",
"rub": "0"
}
},
"sold_products": {
"quantity": null,
"amount": {
"uzs": "0",
"usd": "0",
"eur": "0",
"rub": "0"
}
},
"returned_products": {
"quantity": null,
"amount": {
"uzs": "0",
"usd": "0",
"eur": "0",
"rub": "0"
}
},
"clients": {
"quantity": 2
}
}Остатки основных касс
/company/stat/dashboard/common/cashbox-main-balanciesТекущий баланс касс типа main по способу оплаты × валюте и total по валютам. Период не учитывается — это срез на сейчас. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
cashbox_main_balancies | object | |
cashbox_main_balancies.bank | object | Банк |
cashbox_main_balancies.bank.uzs | integer | |
cashbox_main_balancies.bank.usd | integer | |
cashbox_main_balancies.bank.eur | integer | |
cashbox_main_balancies.bank.rub | integer | |
cashbox_main_balancies.card | object | |
cashbox_main_balancies.card.uzs | integer | |
cashbox_main_balancies.card.usd | integer | |
cashbox_main_balancies.card.eur | integer | |
cashbox_main_balancies.card.rub | integer | |
cashbox_main_balancies.cash | object | |
cashbox_main_balancies.cash.uzs | integer | |
cashbox_main_balancies.cash.usd | integer | |
cashbox_main_balancies.cash.eur | integer | |
cashbox_main_balancies.cash.rub | integer | |
cashbox_main_balancies.system | object | |
cashbox_main_balancies.system.uzs | integer | |
cashbox_main_balancies.system.usd | integer | |
cashbox_main_balancies.system.eur | integer | |
cashbox_main_balancies.system.rub | integer | |
total | object | Всего записей |
total.uzs | integer | |
total.usd | integer | |
total.eur | integer | |
total.rub | integer |
{
"cashbox_main_balancies": {
"bank": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"card": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"cash": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"system": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
},
"total": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
}Движение денег по кассам
/company/stat/dashboard/common/cashbox-transactionsСуммы завершённых (completed) кассовых операций за период: тип (приход/расход) × способ оплаты × валюта, плюс total по каждому типу. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
cashbox_transactions | object | |
cashbox_transactions.income | object | Доход |
cashbox_transactions.income.bank | object | Банк |
cashbox_transactions.income.bank.uzs | integer | |
cashbox_transactions.income.bank.usd | integer | |
cashbox_transactions.income.bank.eur | integer | |
cashbox_transactions.income.bank.rub | integer | |
cashbox_transactions.income.card | object | |
cashbox_transactions.income.card.uzs | integer | |
cashbox_transactions.income.card.usd | integer | |
cashbox_transactions.income.card.eur | integer | |
cashbox_transactions.income.card.rub | integer | |
cashbox_transactions.income.cash | object | |
cashbox_transactions.income.cash.uzs | string | |
cashbox_transactions.income.cash.usd | integer | |
cashbox_transactions.income.cash.eur | integer | |
cashbox_transactions.income.cash.rub | integer | |
cashbox_transactions.income.system | object | |
cashbox_transactions.income.system.uzs | integer | |
cashbox_transactions.income.system.usd | integer | |
cashbox_transactions.income.system.eur | integer | |
cashbox_transactions.income.system.rub | integer | |
cashbox_transactions.outcome | object | |
cashbox_transactions.outcome.bank | object | Банк |
cashbox_transactions.outcome.bank.uzs | integer | |
cashbox_transactions.outcome.bank.usd | integer | |
cashbox_transactions.outcome.bank.eur | integer | |
cashbox_transactions.outcome.bank.rub | integer | |
cashbox_transactions.outcome.card | object | |
cashbox_transactions.outcome.card.uzs | integer | |
cashbox_transactions.outcome.card.usd | integer | |
cashbox_transactions.outcome.card.eur | integer | |
cashbox_transactions.outcome.card.rub | integer | |
cashbox_transactions.outcome.cash | object | |
cashbox_transactions.outcome.cash.uzs | integer | |
cashbox_transactions.outcome.cash.usd | integer | |
cashbox_transactions.outcome.cash.eur | integer | |
cashbox_transactions.outcome.cash.rub | integer | |
cashbox_transactions.outcome.system | object | |
cashbox_transactions.outcome.system.uzs | integer | |
cashbox_transactions.outcome.system.usd | integer | |
cashbox_transactions.outcome.system.eur | integer | |
cashbox_transactions.outcome.system.rub | integer | |
total | object | Всего записей |
total.income | object | Доход |
total.income.uzs | integer | |
total.income.usd | integer | |
total.income.eur | integer | |
total.income.rub | integer | |
total.outcome | object | |
total.outcome.uzs | integer | |
total.outcome.usd | integer | |
total.outcome.eur | integer | |
total.outcome.rub | integer |
{
"cashbox_transactions": {
"income": {
"bank": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"card": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"cash": {
"uzs": "1000.00",
"usd": 0,
"eur": 0,
"rub": 0
},
"system": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
},
"outcome": {
"bank": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"card": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"cash": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"system": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
}
},
"total": {
"income": {
"uzs": 1000,
"usd": 0,
"eur": 0,
"rub": 0
},
"outcome": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
}
}Итоги по поставщикам
/company/stat/dashboard/common/suppliers-totalОбороты с поставщиками за период по типу операции и валюте (amount.{type}.{currency}) и сальдо на начало и конец периода (balance.start / balance.end). Начальный остаток поставщика в обороты не входит, отменённые операции не учитываются; фильтр company_ids[] не применяется. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
amount | object | Сумма |
amount.income | object | Доход |
amount.income.uzs | string | |
amount.income.usd | string | |
amount.income.eur | string | |
amount.income.rub | string | |
amount.outcome | object | |
amount.outcome.uzs | string | |
amount.outcome.usd | string | |
amount.outcome.eur | string | |
amount.outcome.rub | string | |
balance | object | Баланс |
balance.start | object | |
balance.start.uzs | string | |
balance.start.usd | string | |
balance.start.eur | string | |
balance.start.rub | string | |
balance.end | object | |
balance.end.uzs | string | |
balance.end.usd | string | |
balance.end.eur | string | |
balance.end.rub | string |
{
"amount": {
"income": {
"uzs": "1000.00",
"usd": "0",
"eur": "0",
"rub": "0"
},
"outcome": {
"uzs": "0",
"usd": "2000.00",
"eur": "0",
"rub": "0"
}
},
"balance": {
"start": {
"uzs": "0",
"usd": "0",
"eur": "0",
"rub": "0"
},
"end": {
"uzs": "1000.00",
"usd": "-2000.00",
"eur": "0",
"rub": "0"
}
}
}Топ поставщиков
/company/stat/dashboard/common/top-suppliers10 поставщиков с наибольшим числом завершённых приходов за период: телефон, дата последнего прихода, количество приходов и их сумма по валютам. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
{}Топ товаров по количеству
/company/stat/dashboard/common/top-trade-sale-products10 товаров с наибольшим чистым проданным количеством (продано минус возвращено) за период, с суммой по валютам; товары с нулевым итогом отбрасываются. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
{}График выручки
/company/stat/dashboard/common/trade-sale-products-chartsЧистая выручка по товарам (со скидкой, за вычетом возвратов) по валютам, разбитая на точки графика: day — по часам сегодня, week — по дням текущей недели, month — по дням текущего месяца, year — по месяцам текущего года. date_from / date_to не используются; пустые точки заполнены нулями. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
period | string | Нет | Масштаб графика: day, week, month (по умолчанию), year |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object | Данные |
data.00:00 | object | |
data.00:00.uzs | integer | |
data.00:00.usd | integer | |
data.00:00.eur | integer | |
data.00:00.rub | integer | |
data.01:00 | object | |
data.01:00.uzs | integer | |
data.01:00.usd | integer | |
data.01:00.eur | integer | |
data.01:00.rub | integer | |
data.02:00 | object | |
data.02:00.uzs | integer | |
data.02:00.usd | integer | |
data.02:00.eur | integer | |
data.02:00.rub | integer | |
data.03:00 | object | |
data.03:00.uzs | integer | |
data.03:00.usd | integer | |
data.03:00.eur | integer | |
data.03:00.rub | integer | |
data.04:00 | object | |
data.04:00.uzs | integer | |
data.04:00.usd | integer | |
data.04:00.eur | integer | |
data.04:00.rub | integer | |
data.05:00 | object | |
data.05:00.uzs | integer | |
data.05:00.usd | integer | |
data.05:00.eur | integer | |
data.05:00.rub | integer | |
data.06:00 | object | |
data.06:00.uzs | integer | |
data.06:00.usd | integer | |
data.06:00.eur | integer | |
data.06:00.rub | integer | |
data.07:00 | object | |
data.07:00.uzs | integer | |
data.07:00.usd | integer | |
data.07:00.eur | integer | |
data.07:00.rub | integer | |
data.08:00 | object | |
data.08:00.uzs | integer | |
data.08:00.usd | integer | |
data.08:00.eur | integer | |
data.08:00.rub | integer | |
data.09:00 | object | |
data.09:00.uzs | integer | |
data.09:00.usd | integer | |
data.09:00.eur | integer | |
data.09:00.rub | integer | |
data.10:00 | object | |
data.10:00.uzs | integer | |
data.10:00.usd | integer | |
data.10:00.eur | integer | |
data.10:00.rub | integer | |
data.11:00 | object | |
data.11:00.uzs | integer | |
data.11:00.usd | integer | |
data.11:00.eur | integer | |
data.11:00.rub | integer | |
data.12:00 | object | |
data.12:00.uzs | integer | |
data.12:00.usd | integer | |
data.12:00.eur | integer | |
data.12:00.rub | integer | |
data.13:00 | object | |
data.13:00.uzs | integer | |
data.13:00.usd | integer | |
data.13:00.eur | integer | |
data.13:00.rub | integer | |
data.14:00 | object | |
data.14:00.uzs | integer | |
data.14:00.usd | integer | |
data.14:00.eur | integer | |
data.14:00.rub | integer | |
data.15:00 | object | |
data.15:00.uzs | integer | |
data.15:00.usd | integer | |
data.15:00.eur | integer | |
data.15:00.rub | integer | |
data.16:00 | object | |
data.16:00.uzs | integer | |
data.16:00.usd | integer | |
data.16:00.eur | integer | |
data.16:00.rub | integer | |
data.17:00 | object | |
data.17:00.uzs | integer | |
data.17:00.usd | integer | |
data.17:00.eur | integer | |
data.17:00.rub | integer | |
data.18:00 | object | |
data.18:00.uzs | integer | |
data.18:00.usd | integer | |
data.18:00.eur | integer | |
data.18:00.rub | integer | |
data.19:00 | object | |
data.19:00.uzs | integer | |
data.19:00.usd | integer | |
data.19:00.eur | integer | |
data.19:00.rub | integer | |
data.20:00 | object | |
data.20:00.uzs | integer | |
data.20:00.usd | integer | |
data.20:00.eur | integer | |
data.20:00.rub | integer | |
data.21:00 | object | |
data.21:00.uzs | integer | |
data.21:00.usd | integer | |
data.21:00.eur | integer | |
data.21:00.rub | integer | |
data.22:00 | object | |
data.22:00.uzs | integer | |
data.22:00.usd | integer | |
data.22:00.eur | integer | |
data.22:00.rub | integer | |
data.23:00 | object | |
data.23:00.uzs | integer | |
data.23:00.usd | integer | |
data.23:00.eur | integer |
{
"data": {
"00:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"01:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"02:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"03:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"04:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"05:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"06:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"07:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"08:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"09:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"10:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"11:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"12:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"13:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"14:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"15:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"16:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"17:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"18:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"19:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"20:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"21:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"22:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"23:00": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
},
"total": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
}Средний чек
/company/stat/dashboard/common-new/average-checkДетализация карточки «Средний чек»: средний чек текущего месяца (с 1-го числа по сегодня), средний чек прошлого месяца и прирост в процентах (growth_percent = null, если в прошлом месяце продаж не было), а также распределение чеков по диапазонам суммы. Учитываются чеки completed и partial_returned в выбранной валюте. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
average_check | integer | Средний чек |
previous_average_check | integer | |
growth_percent | null | |
amount | integer | Сумма |
checks_count | integer | |
ranges | object[] | |
ranges[].from | integer | Номер первой записи на странице |
ranges[].to | integer | Номер последней записи на странице |
ranges[].checks_count | integer | |
ranges[].amount | integer | Сумма |
ranges[].percent | integer | Процент |
{
"average_check": 0,
"previous_average_check": 0,
"growth_percent": null,
"amount": 0,
"checks_count": 0,
"ranges": [
{
"from": 0,
"to": 5000000,
"checks_count": 0,
"amount": 0,
"percent": 0
},
{
"from": 5000000,
"to": 20000000,
"checks_count": 0,
"amount": 0,
"percent": 0
}
]
}Все клиенты
/company/stat/dashboard/common-new/clientsДетализация «Все клиенты»: карточки (всего клиентов, новых за период — по умолчанию текущий месяц, должников и их долг) и постраничный список клиентов с покупками за всё время, бонусным балансом, долгом и статусом debtor / new / active. Сумма покупок считается в выбранной валюте. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода для карточки «Новые», Y-m-d; по умолчанию — 1-е число текущего месяца |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
name | string | Нет | Поиск по ФИО клиента |
phone | string | Нет | Поиск по основному телефону клиента |
page | integer | Нет | Номер страницы, с 1 (20 строк на странице) |
Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].client_id | integer | Клиент |
data[].full_name | string | ФИО |
data[].main_phone | string | Основной телефон |
data[].bonus_balance | string | |
data[].purchases_count | integer | Покупки |
data[].last_purchase_at | null | Последний приход |
data[].total_purchases_amount | string | |
data[].total_debt | string | Общая задолжность |
data[].total_repaid | string | |
data[].remaining_debt | string | |
data[].status | string | Статус |
{
"cards": {
"total": 2,
"new": 2,
"debtors": {
"count": 0,
"amount": 0
}
},
"data": [
{
"client_id": 2,
"full_name": "Full name 2",
"main_phone": "998000000002",
"bonus_balance": "0.00",
"purchases_count": 0,
"last_purchase_at": null,
"total_purchases_amount": "0",
"total_debt": "0",
"total_repaid": "0",
"remaining_debt": "0",
"status": "new"
},
{
"client_id": 1,
"full_name": "Full name 1",
"main_phone": "998000000001",
"bonus_balance": "1000.00",
"purchases_count": 1,
"last_purchase_at": "2020-01-01 10:00:00",
"total_purchases_amount": "4900.0000000000",
"total_debt": "0",
"total_repaid": "0",
"remaining_debt": "0",
"status": "active"
}
],
"meta": {
"total": 2,
"per_page": 20,
"current_page": 1,
"last_page": 1,
"from": 1
}
}Клиенты по филиалам
/company/stat/dashboard/common-new/clients-countПо каждому филиалу (до 100): общее число клиентов и число новых клиентов за период. Удалённые клиенты не учитываются. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
[].id | integer | ID |
[].name | string | Название |
[].total_count | integer | |
[].new_count | integer |
[
{
"id": 1,
"name": "Company 1",
"total_count": 2,
"new_count": 2
}
]Продажи по регионам
/company/stat/dashboard/common-new/companies-by-regionsСписок регионов с их районами и чистыми продажами филиалов района (продано минус возвращено) — за сегодня (total_amount.today) и за период (total_amount.total) в выбранной валюте. Чеки full_returned и canceled исключены. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
[].id | integer | ID |
[].name | string | Название |
[].districts | object[] | |
[].districts[].id | integer | ID |
[].districts[].name | string | Название |
[].districts[].region_id | integer | Регион |
[].districts[].district_iso_code | integer | |
[].districts[].region_name | string | |
[].districts[].region_iso_code | integer | |
[].districts[].total_amount | object | |
[].districts[].total_amount.today | integer | |
[].districts[].total_amount.total | integer | Всего записей |
[
{
"id": 1,
"name": "Region 1",
"districts": [
{
"id": 1,
"name": "District 1",
"region_id": 1,
"district_iso_code": 1,
"region_name": "Region 1",
"region_iso_code": 1,
"total_amount": {
"today": 0,
"total": 0
}
},
{
"id": 2,
"name": "District 2",
"region_id": 1,
"district_iso_code": 2,
"region_name": "Region 1",
"region_iso_code": 1,
"total_amount": {
"today": 0,
"total": 0
}
}
]
}
]Чеки за сегодня
/company/stat/dashboard/common-new/daily-checksДетализация карточек «Дневная продажа» и «Чеки за сегодня»: итоги дня (выручка, число чеков, средний чек), разбивка по способам оплаты с долями (без system) и постраничный список чеков с продавцом, способами оплаты и составом чека. Период всегда — сегодня; учитываются чеки completed и partial_returned в выбранной валюте. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
page | integer | Нет | Номер страницы, с 1 (20 строк на странице) |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
totals | object | |
totals.amount | integer | Сумма |
totals.checks_count | integer | |
totals.average_check | integer | Средний чек |
payment_types | array | |
checks | array | |
meta | object | Метаданные пагинации |
meta.total | integer | Всего записей |
meta.per_page | integer | Записей на странице |
meta.current_page | integer | Текущая страница |
meta.last_page | integer | Последняя страница |
meta.from | null | Номер первой записи на странице |
{
"totals": {
"amount": 0,
"checks_count": 0,
"average_check": 0
},
"payment_types": [],
"checks": [],
"meta": {
"total": 0,
"per_page": 20,
"current_page": 1,
"last_page": 1,
"from": null
}
}Виджет должников
/company/stat/dashboard/common-new/debtorsДо 50 клиентов с непогашенным долгом: сколько всего взяли, погасили, списано возвратами, остаток и дни просрочки; сначала самые просроченные. Клиент пропадает из списка, как только долг полностью погашен. Период не учитывается — долг показывается на сейчас. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
[].id | integer | ID |
[].full_name | string | ФИО |
[].main_phone | string | Основной телефон |
[].total_amount | integer | |
[].repaid_amount | integer | Сумма погашения |
[].returned_amount | integer | Возвращённая сумма |
[].remaining_amount | integer | |
[].overdue_days | integer | Просрочено дней |
[
{
"id": 1,
"full_name": "Full name 1",
"main_phone": "998000000001",
"total_amount": 4000,
"repaid_amount": 1000,
"returned_amount": 0,
"remaining_amount": 3000,
"overdue_days": 0
}
]Список должников
/company/stat/dashboard/common-new/debtors-listДетализация «Должники»: карточки (общий остаток долга, всего погашено, число клиентов с просрочкой) и постраничный список клиентов с остатком больше 0 — сумма долга, погашено, остаток, ближайший срок и дни просрочки. Период не учитывается. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
name | string | Нет | Поиск по ФИО клиента |
page | integer | Нет | Номер страницы, с 1 (20 строк на странице) |
Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | array | Данные |
{
"cards": {
"total_debt": 0,
"total_repaid": 0,
"overdue_count": 0
},
"data": [],
"meta": {
"total": 0,
"per_page": 20,
"current_page": 1,
"last_page": 1,
"from": null
}
}Месячная продажа
/company/stat/dashboard/common-new/monthly-salesДетализация «Месячная продажа»: выручка текущего месяца (с 1-го числа по сегодня), число чеков, средний чек, средняя выручка в день и разбивка по неделям месяца (1–7, 8–14, 15–21, 22–конец). Учитываются чеки completed и partial_returned в выбранной валюте. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
totals | object | |
totals.amount | integer | Сумма |
totals.checks_count | integer | |
totals.average_check | integer | Средний чек |
totals.average_per_day | integer | |
weeks | object[] | |
weeks[].index | integer | |
weeks[].date_from | string | Дата (от) |
weeks[].date_to | string | Дата (до) |
weeks[].amount | integer | Сумма |
weeks[].checks_count | integer |
{
"totals": {
"amount": 0,
"checks_count": 0,
"average_check": 0,
"average_per_day": 0
},
"weeks": [
{
"index": 1,
"date_from": "2026-09-01",
"date_to": "2026-09-07",
"amount": 0,
"checks_count": 0
},
{
"index": 2,
"date_from": "2026-09-08",
"date_to": "2026-09-14",
"amount": 0,
"checks_count": 0
}
]
}Способы оплаты
/company/stat/dashboard/common-new/payment-methodsДетализация «Способ оплаты» за всё время (период не учитывается): чистая сумма по каждому способу оплаты и валюте (возвраты вычитаются), число чеков по способу, total, общее число операций и основной способ оплаты main_payment_type (по сумме в сумах). Способ system и чеки full_returned / canceled исключены. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
methods | object | |
methods.card | object | |
methods.card.uzs | integer | |
methods.card.usd | integer | |
methods.card.eur | integer | |
methods.card.rub | integer | |
methods.cash | object | |
methods.cash.uzs | integer | |
methods.cash.usd | integer | |
methods.cash.eur | integer | |
methods.cash.rub | integer | |
methods.bonus | object | |
methods.bonus.uzs | integer | |
methods.bonus.usd | integer | |
methods.bonus.eur | integer | |
methods.bonus.rub | integer | |
methods.debt | object | Долг |
methods.debt.uzs | integer | |
methods.debt.usd | integer | |
methods.debt.eur | integer | |
methods.debt.rub | integer | |
checks | object | |
checks.card | integer | |
checks.cash | integer | |
custom_payment_types | object[] | |
custom_payment_types[].name | string | Название |
custom_payment_types[].amounts | object | |
custom_payment_types[].amounts.uzs | integer | |
custom_payment_types[].amounts.usd | integer | |
custom_payment_types[].amounts.eur | integer | |
custom_payment_types[].amounts.rub | integer | |
custom_payment_types[].checks | integer | |
total | object | Всего записей |
total.uzs | integer | |
total.usd | integer | |
total.eur | integer | |
total.rub | integer | |
transactions_count | integer | |
main_payment_type | string | |
main_custom_payment_type | null |
{
"methods": {
"card": {
"uzs": 4000,
"usd": 0,
"eur": 0,
"rub": 0
},
"cash": {
"uzs": 900,
"usd": 0,
"eur": 0,
"rub": 0
},
"bonus": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"debt": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
},
"checks": {
"card": 1,
"cash": 1
},
"custom_payment_types": [
{
"name": "Payment type 1",
"amounts": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"checks": 0
}
],
"total": {
"uzs": 4900,
"usd": 0,
"eur": 0,
"rub": 0
},
"transactions_count": 1,
"main_payment_type": "card",
"main_custom_payment_type": null
}Все продавцы
/company/stat/dashboard/common-new/sellersДетализация «Топ продавцов» за всё время: постраничная таблица продавцов с должностью, филиалом, суммой продаж, числом продаж и средним чеком, лучшие первыми. В таблицу попадают только продавцы, явно выбранные на чеке; учитываются чеки completed и partial_returned в выбранной валюте. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
name | string | Нет | Поиск по имени продавца |
page | integer | Нет | Номер страницы, с 1 (20 строк на странице) |
Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].user_id | integer | Пользователь |
data[].full_name | string | ФИО |
data[].company_name | string | Компания |
data[].position | string | Должность |
data[].sales_count | integer | Количество покупок |
data[].amount | integer | Сумма |
data[].average_check | integer | Средний чек |
{
"data": [
{
"user_id": 2,
"full_name": "director_1@local.host",
"company_name": "Company 1",
"position": "Director 1",
"sales_count": 3,
"amount": 9000,
"average_check": 3000
}
],
"meta": {
"total": 1,
"per_page": 20,
"current_page": 1,
"last_page": 1,
"from": 1
}
}Складские показатели по филиалам
/company/stat/dashboard/common-new/stock-products-countПо каждому филиалу (до 100): общий остаток товаров, число позиций с малым остатком (больше 0 и до 10), с нулевым остатком и неликвидных (остаток есть, но без движения 30 дней). Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
[].id | integer | ID |
[].name | string | Название |
[].total_quantity | string | |
[].low_stock_count | integer | |
[].zero_stock_count | integer | |
[].illiquid_count | integer |
[
{
"id": 1,
"name": "Company 1",
"total_quantity": "3.00000000",
"low_stock_count": 2,
"zero_stock_count": 0,
"illiquid_count": 0
}
]Складские остатки
/company/stat/dashboard/common-new/stock-balancesДетализация «Складские остатки»: карточки и счётчики вкладок по статусам и постраничный список (филиал × товар) с остатком, себестоимостью остатка по последнему приходу, датой последнего движения и статусом: out_of_stock (остаток ≤ 0), illiquid (без движения 30 дней), running_out (меньше 10 или не больше минимального остатка), иначе in_stock. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
status | string | Нет | Вкладка: in_stock, running_out, out_of_stock, illiquid |
name | string | Нет | Поиск по названию товара |
page | integer | Нет | Номер страницы, с 1 (20 строк на странице) |
Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].company_id | integer | Компания |
data[].product_id | integer | Продукт |
data[].product_name | string | Наименование товаров |
data[].category_name | string | |
data[].remainder | string | Остаток |
data[].min_quantity | null | |
data[].last_movement_at | string | Последнее движение |
data[].remainder_cost | string | Стоимость остатка |
data[].purchase_currency | null | Валюта при покупке |
data[].status | string | Статус |
data[].days_without_movement | integer | Без движения |
{
"cards": {
"available": 2,
"running_out": 2,
"out_of_stock": 0,
"illiquid": 0
},
"counts": {
"all": 2,
"in_stock": 0,
"running_out": 2,
"out_of_stock": 0,
"illiquid": 0
},
"data": [
{
"company_id": 1,
"product_id": 2,
"product_name": "Product 1-1 full text",
"category_name": "Category 1-1-1 ru",
"remainder": "2.00000000",
"min_quantity": null,
"last_movement_at": "2026-09-30 12:47:59",
"remainder_cost": "0.00",
"purchase_currency": null,
"status": "running_out",
"days_without_movement": 0
},
{
"company_id": 1,
"product_id": 1,
"product_name": "Product 1",
"category_name": "Category 1-1-1 ru",
"remainder": "1.00000000",
"min_quantity": null,
"last_movement_at": "2026-09-30 12:47:59",
"remainder_cost": "0.00",
"purchase_currency": null,
"status": "running_out",
"days_without_movement": 0
}
],
"meta": {
"total": 2,
"per_page": 20,
"current_page": 1,
"last_page": 1,
"from": 1
}
}Топ товаров по выручке
/company/stat/dashboard/common-new/top-trade-sale-products10 товаров с наибольшей чистой выручкой за период в выбранной валюте: количество и сумма за вычетом возвратов. Чеки full_returned и canceled исключены. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
Ответ · 200
{}Топ товаров/продаж
/company/stat/dashboard/common-new/top-productsДетализация «Топ товаров/продаж»: постраничный рейтинг товаров по чистому проданному количеству (при равенстве — по выручке) с выручкой и прибылью. По умолчанию за всё время; учитываются чеки completed, partial_returned, full_returned в выбранной валюте. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
name | string | Нет | Поиск по названию товара |
page | integer | Нет | Номер страницы, с 1 (20 строк на странице) |
Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].product_id | integer | Продукт |
data[].product_name | string | Наименование товаров |
data[].quantity | string | Количество |
data[].revenue | string | Выручка (всего) |
data[].profit | string |
{
"data": [
{
"product_id": 2,
"product_name": "Product 1-1 full text",
"quantity": "2.00000000",
"revenue": "4000.0000000000",
"profit": "3600.0000000000"
},
{
"product_id": 1,
"product_name": "Product 1",
"quantity": "1.00000000",
"revenue": "900.0000000000",
"profit": "800.0000000000"
}
],
"meta": {
"total": 2,
"per_page": 20,
"current_page": 1,
"last_page": 1,
"from": 1
}
}Топ продавцов
/company/stat/dashboard/common-new/top-sellersБлок «Топ продавцов»: 10 сотрудников с наибольшей суммой продаж за всё время — имя, филиал, число продаж и сумма. Только продавцы, явно выбранные на чеке; учитываются чеки completed и partial_returned в выбранной валюте. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
[].user_id | integer | Пользователь |
[].full_name | string | ФИО |
[].company_name | string | Компания |
[].sales_count | integer | Количество покупок |
[].amount | integer | Сумма |
[
{
"user_id": 2,
"full_name": "director_1@local.host",
"company_name": "Company 1",
"sales_count": 3,
"amount": 9000
}
]Итоги дня и месяца
/company/stat/dashboard/common-new/totalsЧисло чеков, чистая сумма продаж и средний чек по валютам за сегодня (today) и с начала месяца (this_month). Чеки full_returned и canceled исключены; период из запроса не используется. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
today | object | |
today.count | integer | Количество |
today.sold_amount | object | Сумма в продаже |
today.sold_amount.uzs | string | |
today.sold_amount.usd | string | |
today.sold_amount.eur | string | |
today.sold_amount.rub | string | |
today.average_amount | object | |
today.average_amount.uzs | string | |
today.average_amount.usd | string | |
today.average_amount.eur | string | |
today.average_amount.rub | string | |
this_month | object | |
this_month.count | integer | Количество |
this_month.sold_amount | object | Сумма в продаже |
this_month.sold_amount.uzs | string | |
this_month.sold_amount.usd | string | |
this_month.sold_amount.eur | string | |
this_month.sold_amount.rub | string | |
this_month.average_amount | object | |
this_month.average_amount.uzs | string | |
this_month.average_amount.usd | string | |
this_month.average_amount.eur | string | |
this_month.average_amount.rub | string |
{
"today": {
"count": 0,
"sold_amount": {
"uzs": "0",
"usd": "0",
"eur": "0",
"rub": "0"
},
"average_amount": {
"uzs": "0.00",
"usd": "0.00",
"eur": "0.00",
"rub": "0.00"
}
},
"this_month": {
"count": 0,
"sold_amount": {
"uzs": "0",
"usd": "0",
"eur": "0",
"rub": "0"
},
"average_amount": {
"uzs": "0.00",
"usd": "0.00",
"eur": "0.00",
"rub": "0.00"
}
}
}Сводка транзакций
/company/stat/dashboard/common-new/transactions-summaryБлок «Транзакции»: число чеков за период всего и по типам — продажа, возврат, обмен (counts.all/sale/return/exchange) и чистое количество проданных товаров без услуг (products_sold_count). Отменённые чеки не учитываются. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
counts | object | |
counts.all | integer | |
counts.sale | integer | |
counts.return | integer | |
counts.exchange | integer | |
products_sold_count | integer |
{
"counts": {
"all": 1,
"sale": 1,
"return": 0,
"exchange": 0
},
"products_sold_count": 3
}Продажи по филиалам
/company/stat/dashboard/common-new/trade-sales-by-companiesЧистая сумма продаж за период в выбранной валюте по каждому филиалу (до 100, филиалы без продаж — с нулём). Чеки full_returned и canceled исключены. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
[].id | integer | ID |
[].name | string | Название |
[].total_amount | string |
[
{
"id": 2,
"name": "Company 1-1",
"total_amount": "0"
},
{
"id": 1,
"name": "Company 1",
"total_amount": "0"
}
]Продажи по времени
/company/stat/dashboard/common-new/trade-sales-by-timeЧистая сумма продаж, сгруппированная по дням (период до 61 дня), неделям (1–26), месяцам (1–24) и годам (1–20) — заполняются подходящие масштабы; при выборе одного дня добавляется hours (только часы с продажами), плюс total_amount за период. Период по умолчанию — с 2025-01-01; диапазон больше 20 лет или date_to раньше date_from отклоняется. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию 2025-01-01 |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
currency | string | Нет | Валюта чеков: uzs (по умолчанию), usd, eur, rub |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
days | object | |
days.2026-09-01 | integer | |
days.2026-09-02 | integer | |
days.2026-09-03 | integer | |
days.2026-09-04 | integer | |
days.2026-09-05 | integer | |
days.2026-09-06 | integer | |
days.2026-09-07 | integer | |
days.2026-09-08 | integer | |
days.2026-09-09 | integer | |
days.2026-09-10 | integer | |
days.2026-09-11 | integer | |
days.2026-09-12 | integer | |
days.2026-09-13 | integer | |
days.2026-09-14 | integer | |
days.2026-09-15 | integer | |
days.2026-09-16 | integer | |
days.2026-09-17 | integer | |
days.2026-09-18 | integer | |
days.2026-09-19 | integer | |
days.2026-09-20 | integer | |
days.2026-09-21 | integer | |
days.2026-09-22 | integer | |
days.2026-09-23 | integer | |
days.2026-09-24 | integer | |
days.2026-09-25 | integer | |
days.2026-09-26 | integer | |
days.2026-09-27 | integer | |
days.2026-09-28 | integer | |
days.2026-09-29 | integer | |
days.2026-09-30 | integer | |
weeks | object | |
weeks.2026-08-31 | integer | |
weeks.2026-09-07 | integer | |
weeks.2026-09-14 | integer | |
weeks.2026-09-21 | integer | |
weeks.2026-09-28 | integer | |
hours | array | |
total_amount | integer |
{
"days": {
"2026-09-01": 0,
"2026-09-02": 0,
"2026-09-03": 0,
"2026-09-04": 0,
"2026-09-05": 0,
"2026-09-06": 0,
"2026-09-07": 0,
"2026-09-08": 0,
"2026-09-09": 0,
"2026-09-10": 0,
"2026-09-11": 0,
"2026-09-12": 0,
"2026-09-13": 0,
"2026-09-14": 0,
"2026-09-15": 0,
"2026-09-16": 0,
"2026-09-17": 0,
"2026-09-18": 0,
"2026-09-19": 0,
"2026-09-20": 0,
"2026-09-21": 0,
"2026-09-22": 0,
"2026-09-23": 0,
"2026-09-24": 0,
"2026-09-25": 0,
"2026-09-26": 0,
"2026-09-27": 0,
"2026-09-28": 0,
"2026-09-29": 0,
"2026-09-30": 0
},
"weeks": {
"2026-08-31": 0,
"2026-09-07": 0,
"2026-09-14": 0,
"2026-09-21": 0,
"2026-09-28": 0
},
"hours": [],
"total_amount": 0
}Оплаты по способам
/company/stat/dashboard/common-new/trade-sale-transactions-by-payment-typesЧистые поступления по чекам за период (приход минус расход) по способу оплаты × валюте и total по валютам; датой служит момент оплаты. Чеки full_returned и canceled исключены. Кешируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
date_from | string (date) | Нет | Начало периода, Y-m-d; по умолчанию — вся история |
date_to | string (date) | Нет | Конец периода, Y-m-d; по умолчанию — последний день текущего месяца |
company_ids[] | array (integer) | Нет | ID филиалов для фильтра; по умолчанию — все доступные пользователю |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
transactions | object | Транзакции |
transactions.card | object | |
transactions.card.uzs | integer | |
transactions.card.usd | integer | |
transactions.card.eur | integer | |
transactions.card.rub | integer | |
transactions.cash | object | |
transactions.cash.uzs | integer | |
transactions.cash.usd | integer | |
transactions.cash.eur | integer | |
transactions.cash.rub | integer | |
transactions.bonus | object | |
transactions.bonus.uzs | integer | |
transactions.bonus.usd | integer | |
transactions.bonus.eur | integer | |
transactions.bonus.rub | integer | |
transactions.debt | object | Долг |
transactions.debt.uzs | integer | |
transactions.debt.usd | integer | |
transactions.debt.eur | integer | |
transactions.debt.rub | integer | |
transactions.system | object | |
transactions.system.uzs | integer | |
transactions.system.usd | integer | |
transactions.system.eur | integer | |
transactions.system.rub | integer | |
custom_payment_types | object[] | |
custom_payment_types[].name | string | Название |
custom_payment_types[].amounts | object | |
custom_payment_types[].amounts.uzs | integer | |
custom_payment_types[].amounts.usd | integer | |
custom_payment_types[].amounts.eur | integer | |
custom_payment_types[].amounts.rub | integer | |
total | object | Всего записей |
total.uzs | integer | |
total.usd | integer | |
total.eur | integer | |
total.rub | integer |
{
"transactions": {
"card": {
"uzs": 4000,
"usd": 0,
"eur": 0,
"rub": 0
},
"cash": {
"uzs": 900,
"usd": 0,
"eur": 0,
"rub": 0
},
"bonus": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"debt": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"system": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
},
"custom_payment_types": [
{
"name": "Payment type 1",
"amounts": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
}
}
],
"total": {
"uzs": 4900,
"usd": 0,
"eur": 0,
"rub": 0
}
}
