Месторасположение: Отчёты → Ассортимент → Сводный отчёт по продажам

Отчёт показывает сводную картину ассортимента и продаж в разрезе домов и категорий объектов: количество и стоимость всех объектов, заключённых договоров, маркетинговых сделок и остатка непроданного фонда, а также поступления и расхождение по графикам платежей.
#Работа с отчётом
#Фильтры
Дата — период отчёта. По умолчанию фильтрует по дате проведения сделки. Тип даты можно изменить в выпадающем списке рядом с полем:
- Дата начала сделки;
- Дата ДДУ;
- Дата сдачи в Росреестр;
- Дата регистрации;
- Дата проведения сделки (по умолчанию).

Фильтр по дате применяется только к группам «Заключено договоров» и «Поступления». Группы «Всего объектов», «Маркетинговые договоры» и «Не продано объектов» всегда показывают полные данные независимо от выбранного периода.
Источник денег — отбор по способу оплаты. Применяется только к группам «Заключено договоров» и «Поступления».
Тип недвижимости — отбор по типу: Жилая / Коммерческая.
Категория — отбор по категории объекта (квартира, машино-место, кладовая и т. д.).
ЖК / Дом — отбор по конкретному жилому комплексу или дому.
Категория комплекса — отбор по категории ЖК.
Этап — отбор по статусу объекта.
Вид отделки — отбор по виду отделки объекта. Значение «Любая отделка» показывает объекты, у которых вид отделки задан.
Показывать неактивные дома — включает в отчёт дома в статусах Неактив и Проверка. По умолчанию отображаются только дома в статусе Подбор.
#Опции
Не учитывать наценки — в группе «Заключено договоров» из суммы сделки вычитается сумма допов. Влияет на стоимость, цену за м² и расхождение.
Группировать по очереди — разбивает ЖК на подгруппы по очередям строительства. Добавляет строки «ИТОГО по ЖК» над итогами по очередям.
Округлять суммы до целых — все денежные значения отображаются без копеек.
Учитывать в «Заключено договоров» в т.ч. Сделки в работе — добавляет к проведённым сделкам объекты в статусе Сделка в работе. Они автоматически убираются из группы «Не продано».
Вычитать агентскую комиссию — из стоимости в группе «Заключено договоров» вычитается агентская комиссия. Влияет только на стоимость и цену за м² в этой группе; поступления и остальные группы не меняются.

#Структура отчёта
Таблица иерархична: строки группируются по ЖК, внутри — по домам. Если у дома объекты разных категорий, строка дома разворачивается в подстроки по категориям (кнопкой слева от строки). При одной категории у дома подстрок нет. В конце каждого ЖК — строка «ИТОГО», в конце отчёта — строка «ВСЕГО».

(1) ЖК / Дом / Категория — заголовок строки. Название ЖК, адрес дома или категория объектов (Квартиры, Машино-места, Кладовые).
(2) Всего объектов — все объекты дома, прошедшие фильтры.
- Кол-во — количество объектов.
- Площ., м² — для объектов с договором (бронь и дальше) — договорная площадь; для остальных — прайсовая площадь объекта.
- Цена, ₽/м² — средневзвешенная цена: Стоимость / Площадь.
- Стоимость, ₽ — для объектов с договором — сумма по договору; для остальных — прайсовая стоимость.
Фильтры по дате и источнику денег на эту группу не влияют.
(3) Заключено договоров — объекты в статусе Сделка проведена. При опции «Учитывать в т.ч. Сделки в работе» — также Сделка в работе. Отбираются по выбранному периоду и источнику денег.
- Кол-во — количество договоров.
- Площ., м² — договорная площадь.
- Цена, ₽/м² — Стоимость / Площадь.
- Стоимость, ₽ — сумма по договорам. При опции «Не учитывать наценки» — за вычетом допов. При опции «Вычитать агентскую комиссию» — за вычетом агентской комиссии.
(4) Маркетинговые договоры — объекты в маркетинговых статусах (Маркетинговая сделка в работе и Маркетинговая сделка проведена). Суммы и площади берутся из прайса, а не из договора. Фильтры по дате и источнику денег не применяются.
- Кол-во, Площ., м², Цена, ₽/м², Стоимость, ₽ — по прайсовым данным объектов.
(5) Не продано объектов — все объекты из выборки, не попавшие ни в «Заключено договоров», ни в «Маркетинговые договоры». Стоимость и площадь — прайсовые. Фильтры по дате и источнику денег не применяются.
Суммарное количество объектов в группах (3) + (4) + (5) всегда равно (2), даже при заданном периоде.
(6) Поступления — фактические платежи по договорам из группы (3). Отбираются по тем же условиям периода и источника денег.
- Проведено — поступившие платежи.
- К оплате — запланированные платежи.
(7) Расхожд. — разница между стоимостью договоров и суммой поступлений (Проведено + К оплате). Ненулевое значение означает, что в одном или нескольких графиках платежей сумма операций не совпадает со стоимостью договора.
Кнопка Скачать XLS выгружает отчёт в Excel.
#Технический паспорт отчёта
#Условия попадания в отчёт
Объект включается в выборку при одновременном выполнении условий:
activity = 'sell'— выставлен на продажу;estate_sell_status > 0— не удалён;- объект привязан к дому (
house_idзадан); - дом активен:
estate_houses.status = 20(Подбор); при опции «Показывать неактивные дома» —estate_houses.status IN (3, 10, 20).
Набор статусов объектов:
| Группа | Коды | Примечание |
|---|---|---|
| Заключено договоров | 100 | + 50 при опции «Учитывать Сделки в работе» |
| Маркетинговые | 52, 53 | — |
| Не продано | всё остальное из выборки | — |
| Граница договорных площадей/сумм в (2) | estate_sell_status \\\\\> 30 | — |
| Дом активен | 20 | + 3, 10 при опции «Показывать неактивные дома» |
#Данные в системе
Группа (1) — иерархия строк
Принцип выбора данных в MacroData без учёта дополнительных фильтров:
SELECT
gc.geo_complex_name AS complex_name,
eh.house_id,
COALESCE(eh.public_house_name, eh.geo_street_name,
'Адрес не определён') AS house_name,
es.estate_sell_category AS category
FROM estate_sells es
INNER JOIN estate_houses eh
ON eh.house_id = es.house_id
AND eh.company_id = es.company_id
LEFT JOIN geo_city_complex gc
ON gc.geo_complex_id = eh.complex_id
AND gc.company_id = es.company_id
WHERE es.company_id = {{company_id}}
AND es.activity = 'sell'
AND es.estate_sell_status > 0
AND eh.status IN (20)
GROUP BY eh.house_id, es.estate_sell_category
ORDER BY gc.geo_complex_name, eh.house_id, es.estate_sell_category
В запросах замените
{{company_id}}на числовой идентификатор компании,{{start_date}}и{{end_date}}— на даты периода в форматеYYYY-MM-DD.
Группы (2), (3), (4), (5) — объекты и договоры
Принцип выбора данных в MacroData без учёта дополнительных фильтров:
SELECT
es.house_id,
es.estate_sell_category AS category,
-- (2) Всего объектов
COUNT(es.estate_sell_id) AS total_cnt,
SUM(IF(es.estate_sell_status > 30 AND IFNULL(ed.deal_area, 0) > 0,
ed.deal_area, es.estate_area)) AS total_area,
SUM(IF(es.estate_sell_status > 30 AND IFNULL(ed.deal_sum, 0) > 0,
ed.deal_sum, es.estate_price)) AS total_sum,
-- (3) Заключено договоров
SUM(IF(es.estate_sell_status = 100
AND ed.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}'),
1, 0)) AS deals_cnt,
SUM(IF(es.estate_sell_status = 100
AND ed.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}'),
IFNULL(ed.deal_area, 0), 0)) AS deals_area,
SUM(IF(es.estate_sell_status = 100
AND ed.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}'),
IFNULL(ed.deal_sum, 0), 0)) AS deals_sum,
-- (4) Маркетинговые договоры
SUM(IF(es.estate_sell_status IN (52, 53), 1, 0)) AS market_cnt,
SUM(IF(es.estate_sell_status IN (52, 53), es.estate_area, 0)) AS market_area,
SUM(IF(es.estate_sell_status IN (52, 53), es.estate_price, 0)) AS market_sum,
-- (5) Не продано
SUM(IF(es.estate_sell_status NOT IN (100, 52, 53), 1, 0)) AS unsold_cnt,
SUM(IF(es.estate_sell_status NOT IN (100, 52, 53),
es.estate_area, 0)) AS unsold_area,
SUM(IF(es.estate_sell_status NOT IN (100, 52, 53),
es.estate_price, 0)) AS unsold_sum
FROM estate_sells es
INNER JOIN estate_houses eh
ON eh.house_id = es.house_id AND eh.company_id = es.company_id
LEFT JOIN estate_deals ed
ON ed.estate_sell_id = es.estate_sell_id
AND ed.company_id = es.company_id
AND ed.deal_status IN (110, 150)
WHERE es.company_id = {{company_id}}
AND es.activity = 'sell'
AND es.estate_sell_status > 0
AND eh.status IN (20)
GROUP BY es.house_id, es.estate_sell_category
Группа (6) — поступления
Принцип выбора данных в MacroData без учёта дополнительных фильтров:
SELECT
es.house_id,
es.estate_sell_category AS category,
SUM(IF(es.estate_sell_status = 100
AND ed.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
AND f.status = 1, f.summa, 0)) AS income_done,
SUM(IF(es.estate_sell_status = 100
AND ed.deal_date BETWEEN DATE('{{start_date}}') AND DATE('{{end_date}}')
AND f.status = 3, f.summa, 0)) AS income_reserved
FROM estate_sells es
INNER JOIN estate_houses eh
ON eh.house_id = es.house_id AND eh.company_id = es.company_id
LEFT JOIN estate_deals ed
ON ed.estate_sell_id = es.estate_sell_id
AND ed.company_id = es.company_id
AND ed.deal_status IN (110, 150)
LEFT JOIN finances f
ON f.deal_id = ed.deal_id
AND f.company_id = es.company_id
JOIN finances_types ft
ON ft.id = f.types_id
AND ft.company_id = f.company_id
AND 1 IN (ft.is_income, ft.is_income_lower, ft.is_other_income,
ft.is_commission, ft.is_arles)
WHERE es.company_id = {{company_id}}
AND es.activity = 'sell'
AND es.estate_sell_status > 0
AND eh.status IN (20)
GROUP BY es.house_id, es.estate_sell_category
#Расчётные данные
Цена, ₽/м² — во всех группах вычисляется делением суммы на площадь. В строках «ИТОГО» и «ВСЕГО» пересчитывается из просуммированных значений, а не как среднее по строкам (средневзвешенная).
Расхожд. (7):
Расхожд. = Стоимость договоров (3) − Поступления Проведено (6) − Поступления К оплате (6)