| Наступна ревізія | Попередня ревізія |
| posplus:pro:zvity:prodazhi-ohliad [2026/08/20 12:07] – создано - внешнее изменение 127.0.0.1 | posplus:pro:zvity:prodazhi-ohliad [2026/09/13 18:22] (поточний) – зовнішнє редагування 127.0.0.1 |
|---|
| ======Продажі: огляд====== | ======Продажі: огляд====== |
| |
| Усі п'ять звітів цього розділу побудовані однаково: панель фільтрів → кнопка **Сформувати** будує HTML-звіт у вбудованому браузері, **Друк** друкує його, а **Експорт** повторює той самий запит і зберігає результат у XLSX-файл через спільний експортер (`TReportExporter.ExportQueryToXLSX`) — той самий механізм, що і в інших звітах PosPLUS. Період за замовчуванням скрізь — від початку поточного місяця до сьогодні; порожній результат показує «Немає продажів за обраний період» в самому звіті або «Немає даних для експорту» без створення файлу — при спробі експорту. | Усі п'ять звітів цього розділу побудовані однаково: панель фільтрів → кнопка **Сформувати** будує звіт у вбудованому браузері, **Друк** друкує його, а **Експорт** повторює ті самі дані і зберігає результат у XLSX-файл — так само, як і в інших звітах PosPLUS. Період за замовчуванням скрізь — від початку поточного місяця до сьогодні; порожній результат показує «Немає продажів за обраний період» в самому звіті або «Немає даних для експорту» без створення файлу — при спробі експорту. |
| |
| =====Продажі за період по касах/складах===== | =====Продажі за період по касах/складах===== |
| * **Каса:** — випадний список активних кас, за замовчуванням «(всі)». | * **Каса:** — випадний список активних кас, за замовчуванням «(всі)». |
| |
| Звіт об'єднує два джерела: чеки каси (`document_cash_receipt`), згруповані по касі (або по складу, якщо у чека нема прив'язаної каси), і документи продажу (`document_sales`), згруповані по складу. Документи продажу додаються в підсумок, лише якщо фільтр **Каса** лишається «(всі)» — щойно обрано конкретну касу, звіт показує тільки її чеки. Для рядків-кас окремо рахуються суми оплати готівкою і безготівкою (з `document_cash_receipt_payments` за ознакою `is_cash` способу оплати); для рядків-складів (документи продажу) оплата не деталізується. | Звіт об'єднує два джерела: чеки каси, згруповані по касі (або по складу, якщо у чека нема прив'язаної каси), і документи продажу, згруповані по складу. Документи продажу додаються в підсумок, лише якщо фільтр **Каса** лишається «(всі)» — щойно обрано конкретну касу, звіт показує тільки її чеки. Для рядків-кас окремо рахуються суми оплати готівкою і безготівкою; для рядків-складів (документи продажу) оплата не деталізується. |
| |
| Картки підсумку: **Загальна виручка** (головна), **Документів**, **Середній чек**, **Готівка** і **Безготівка** (кожна — лише якщо сума більша нуля), **Знижки** (якщо є). Нижче — рейтинговий бар-чарт виручки по точках (один колір — це ранжування, не класифікація), далі таблиця: **#**, **Каса / Склад**, **Документів**, **Виручка**, **Знижки**, **Середній чек**, **Оплати** (кольорові мітки готівка/картка або «—», якщо оплата не деталізована), і підсумковий рядок «ВСЬОГО». | Картки підсумку: **Загальна виручка** (головна), **Документів**, **Середній чек**, **Готівка** і **Безготівка** (кожна — лише якщо сума більша нуля), **Знижки** (якщо є). Нижче — рейтинговий бар-чарт виручки по точках (один колір — це ранжування, не класифікація), далі таблиця: **#**, **Каса / Склад**, **Документів**, **Виручка**, **Знижки**, **Середній чек**, **Оплати** (кольорові мітки готівка/картка або «—», якщо оплата не деталізована), і підсумковий рядок «ВСЬОГО». |
| |
| Експорт додає колонку **Джерело** («каса» / «продаж»), якої нема в таблиці самого звіту: **Точка/Каса**, **Джерело**, **К-сть**, **Сума**, **Знижки**, **Середній чек**, **Готівка**, **Картка**. | {{ :posplus:pro:zvity:sales-by-point-01.png?direct |Звіт «Продажі за період по касах/складах»}} |
| | |
| | Експорт додає колонку **Джерело** («каса» / «продаж»), якої нема в таблиці самого звіту: **Точка/Каса**, **Джерело**, **К-сть**, **Сума**, **Знижки**, **Середній чек**, **Готівка**, **Безготівка**. |
| |
| =====Деталізація продажів===== | =====Деталізація продажів===== |
| * **Тип:** — «Всі продажі» / «Тільки фіскальні» / «Тільки нефіскальні», за замовчуванням «Всі продажі». | * **Тип:** — «Всі продажі» / «Тільки фіскальні» / «Тільки нефіскальні», за замовчуванням «Всі продажі». |
| |
| Кожен рядок таблиці — окрема позиція (товар) з документа, а не документ цілком. Джерела об'єднуються через UNION трьох таблиць позицій: продажі (`document_sales_items`), чеки каси (`document_cash_receipt_items`) і повернення (`document_cash_return_items`, кількість зі знаком мінус). Чеки показуються завжди (і додатково фільтруються ознакою фіскальності при вибраному **Тип**); документи продажу й повернення показуються, тільки коли **Тип** = «Всі продажі» — фільтр фіскальності діє лише на чеки, бо документи продажу ознаки `is_fiscal` не мають. Фільтр **Підприємець** приєднує чеки через прив'язку ФОП до каси (`catalog_cash_register_fop`), а продажі — через фіскальний чек продажу (`register_fiscal_receipts`); на повернення цей фільтр не поширюється. | Кожен рядок таблиці — окрема позиція (товар) з документа, а не документ цілком. Дані об'єднують три джерела: продажі, чеки каси і повернення (кількість зі знаком мінус). Чеки показуються завжди (і додатково фільтруються ознакою фіскальності при вибраному **Тип**); документи продажу й повернення показуються, тільки коли **Тип** = «Всі продажі» — фільтр фіскальності діє лише на чеки, бо документи продажу такої ознаки не мають. Фільтр **Підприємець** приєднує чеки через прив'язку ФОП до каси, а продажі — через фіскальний чек продажу; на повернення цей фільтр не поширюється. |
| |
| Рядки згруповано під роздільником документа (номер + дата); роздільник і клітинка документа для повернення виділені кольором і позначкою ↺. Для кожної позиції звіт рахує три величини — **Було** / **Продано** (для повернення — **+кількість**) / **Стало** — на основі поточного залишку (`register_stock_balance`) і руху товару після дати документа (`register_goods_movement`); від'ємне значення «Стало» виділяється як недостача. Колонки: **Документ**, **Товар** (+артикул), **Характеристика**, **Од.**, **Було**, **Продано**, **Стало**, **Ціна**, **Сума**, **Знижка**, **Собівартість** (з `register_current_prices` за типом ціни COST). | Рядки згруповано під роздільником документа (номер + дата); роздільник і клітинка документа для повернення виділені кольором і позначкою ↺. Для кожної позиції звіт рахує три величини — **Було** / **Продано** (для повернення — **+кількість**) / **Стало** — на основі поточного залишку і руху товару після дати документа; від'ємне значення «Стало» виділяється як недостача. Колонки: **Документ**, **Товар** (+артикул), **Характеристика**, **Од.**, **Було**, **Продано**, **Стало**, **Ціна**, **Сума**, **Знижка**, **Собівартість**. |
| |
| Картки підсумку: **Позицій**, **Сума продажів**, **Знижки**, **Собівартість**, **Прибуток** (головна картка — зелена, якщо не від'ємна, інакше червона). | Картки підсумку: **Позицій**, **Сума продажів**, **Знижки**, **Собівартість**, **Прибуток** (головна картка — зелена, якщо не від'ємна, інакше червона). |
| | |
| | {{ :posplus:pro:zvity:sales-detail-01.png?direct |Звіт «Деталізація продажів»}} |
| |
| Експорт не включає залишки «було/стало» (вони обчислюються тільки для відображення, це не власні дані документа): **Документ**, **Дата**, **Тип**, **Товар**, **Артикул**, **Характеристика**, **Од.**, **К-сть**, **Ціна**, **Сума**, **Знижка**, **Собівартість**. | Експорт не включає залишки «було/стало» (вони обчислюються тільки для відображення, це не власні дані документа): **Документ**, **Дата**, **Тип**, **Товар**, **Артикул**, **Характеристика**, **Од.**, **К-сть**, **Ціна**, **Сума**, **Знижка**, **Собівартість**. |
| * **По:** — сортування «Сумі» / «Кількості», за замовчуванням «Сумі». | * **По:** — сортування «Сумі» / «Кількості», за замовчуванням «Сумі». |
| |
| Дані об'єднують позиції продажів (`document_sales_items`) і чеків (`document_cash_receipt_items`), згруповані по товару й характеристиці, із собівартістю з `register_current_prices` (тип ціни COST). Рейтинг: **#**, **Товар** (+артикул), **Характеристика**, **Категорія**, **К-сть**, **Сума**, **Знижка**, **Собівартість**, **Прибуток** (сума мінус собівартість, з відсотком маржі) і бар-індикатор популярності (довжина відносно найбільшого значення в списку). Перші 3 позиції рейтингу підсвічені зеленим баром, з 4-ї по 10-ту — жовтим, решта — нейтральним сірим. | Дані об'єднують позиції продажів і чеків, згруповані по товару й характеристиці. Рейтинг: **#**, **Товар** (+артикул), **Характеристика**, **Категорія**, **К-сть**, **Сума**, **Знижка**, **Собіварт.**, **Прибуток** (сума мінус собівартість, з відсотком маржі) і бар-індикатор популярності (довжина відносно найбільшого значення в списку). Перші 3 позиції рейтингу підсвічені зеленим баром, з 4-ї по 10-ту — жовтим, решта — нейтральним сірим. |
| |
| Картки підсумку: **Позицій**, **Сума**, **Кількість**. | Картки підсумку: **Позицій**, **Сума**, **Кількість**. |
| | |
| | {{ :posplus:pro:zvity:top-products-01.png?direct |Звіт «Топ товарів по продажах»}} |
| |
| Експорт: **Товар**, **Артикул**, **Характеристика**, **Категорія**, **Кількість**, **Сума**, **Знижка**, **Собівартість** (без колонки прибутку). | Експорт: **Товар**, **Артикул**, **Характеристика**, **Категорія**, **Кількість**, **Сума**, **Знижка**, **Собівартість** (без колонки прибутку). |
| * **Групувати:** — «По днях» / «По складах» / «По касирах», за замовчуванням «По днях». | * **Групувати:** — «По днях» / «По складах» / «По касирах», за замовчуванням «По днях». |
| |
| Джерела — чеки каси і документи продажу, об'єднані й згруповані за обраним виміром (дата чека/продажу; склад; касир з `catalog_users` за `cashier_id`). Середній чек групи — це сума продажів групи, поділена на кількість чеків/документів групи (а не середнє арифметичне окремих середніх); так само рахується і загальний середній чек. Таблиця: **#**, назва групи (заголовок колонки — Дата / Склад / Касир, залежно від групування), **Чеків**, **Виручка**, **Серед. чек** (зелений, якщо не нижче загального середнього, інакше жовтий), **Мін.**, **Макс.**, і бар з пунктирною лінією-маркером на рівні загального середнього чека — для візуального порівняння рядка з середнім. | Джерела — чеки каси і документи продажу, об'єднані й згруповані за обраним виміром (дата чека/продажу; склад; касир). Середній чек групи — це сума продажів групи, поділена на кількість чеків/документів групи (а не середнє арифметичне окремих середніх); так само рахується і загальний середній чек. Таблиця: **#**, назва групи (заголовок колонки — Дата / Склад / Касир, залежно від групування), **Чеків**, **Виручка**, **Серед. чек** (зелений, якщо не нижче загального середнього, інакше жовтий), **Мін.**, **Макс.**, і бар з пунктирною лінією-маркером на рівні загального середнього чека — для візуального порівняння рядка з середнім. |
| |
| Картки підсумку: **Середній чек** (головна), **Виручка**, **Кількість чеків**, **Мін. серед. чек**, **Макс. серед. чек**. | Картки підсумку: **Середній чек** (головна), **Виручка**, **Кількість чеків**, **Мін. серед. чек**, **Макс. серед. чек**. |
| | |
| | {{ :posplus:pro:zvity:avg-check-01.png?direct |Звіт «Середній чек»}} |
| |
| Експорт: перша колонка називається за обраним групуванням (Дата / Склад / Касир), далі — **Сума**, **К-сть чеків**, **Середній чек**, **Мін. чек**, **Макс. чек**. | Експорт: перша колонка називається за обраним групуванням (Дата / Склад / Касир), далі — **Сума**, **К-сть чеків**, **Середній чек**, **Мін. чек**, **Макс. чек**. |
| * **Склад:** — за замовчуванням «(всі)». | * **Склад:** — за замовчуванням «(всі)». |
| |
| Групування по касирах (`catalog_users.full_name` за `cashier_id`) з трьох джерел: чеки каси, документи продажу і повернення (`document_cash_return` — рахується лише кількість повернень, без суми). Горизонтальний бар-чарт: касир з найбільшою виручкою підсвічений зеленим, решта — акцентним кольором; усередині бару написом — кількість чеків. Перший рядок таблиці (лідер за виручкою) позначений міткою «Лідер» і кольоровим акцентом зліва. Колонки: **#**, **Касир**, **Чеків**, **Виручка**, **Знижки**, **Серед. чек** (зелений/жовтий залежно від тренду відносно загального середнього), **Частка, %** (від загальної виручки), **Повернень** (число або «—», якщо повернень не було). | Групування по касирах з трьох джерел: чеки каси, документи продажу і повернення (рахується лише кількість повернень, без суми). Горизонтальний бар-чарт: касир з найбільшою виручкою підсвічений зеленим, решта — акцентним кольором; усередині бару написом — кількість чеків. Перший рядок таблиці (лідер за виручкою) позначений міткою «Лідер» і кольоровим акцентом зліва. Колонки: **#**, **Касир**, **Чеків**, **Виручка**, **Знижки**, **Серед. чек** (зелений/жовтий залежно від тренду відносно загального середнього), **Частка, %** (від загальної виручки), **Повернень** (число або «—», якщо повернень не було), **Зарплата**, **ЄСВ** і **Вартість, %** (яка частка виручки касира пішла на оплату його праці разом з ЄСВ). |
| |
| Картки підсумку: **Загальна виручка** (головна), **Чеків**, **Середній чек**, **Касирів**, **Знижки** (якщо є). | Картки підсумку: **Загальна виручка** (головна), **Чеків**, **Середній чек**, **Касирів**, **Знижки** (якщо є). |
| |
| Експорт: **Касир**, **Сума продажів**, **Знижки**, **К-сть чеків**, **Середній чек**, **Повернення**. | {{ :posplus:pro:zvity:sales-by-cashier-01.png?direct |Звіт «Продажі по касирах»}} |
| | |
| | Експорт: **Касир**, **Сума продажів**, **Знижки**, **К-сть чеків**, **Середній чек**, **Повернення**, **Зарплата**, **ЄСВ**. |
| |