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

Отчёт показывает актуальный ассортимент непроданных квартир, сгруппированных по домам и типам. Для каждой группы отображаются площади, прайсовые цены и количество объектов. Отчёт используется для анализа остатков и ценовой политики.
#Работа с отчётом
#Фильтры
На дату — при заданной дате в отчёт попадают объекты, которые на указанную дату находились в одном из отображаемых статусов (с учётом настроек опций). Без значения — отчёт формируется по текущим статусам.
Цены и площади всегда отображаются актуальные — исторический срез по ценам не ведётся.
Класс квартир — отбор по классу объекта.
Тип квартиры — отбор по количеству комнат и типу планировки.
ЖК/Дом — отбор по конкретному жилому комплексу или дому.
#Опции
По умолчанию отчёт включает квартиры в статусах Подбор, Бронь и Сделка в работе. Опции позволяют скорректировать этот набор.

Исключить брони — убирает из выборки квартиры в статусе Бронь.
Исключить сделки — убирает из выборки квартиры в статусе Сделка в работе.
Маркетинговый резерв — добавляет квартиры в статусе Маркетинговый резерв.
Маркетинговая сделка — добавляет квартиры в маркетинговых статусах сделки.
#Группировка
По типу (по умолчанию) — строки сгруппированы по типу квартиры (1К, 2К, студия и т. д.).
По классу — строки сгруппированы по классу квартиры. Столбец (1) меняется с «Тип квартиры» на «Класс квартиры».

#Структура отчёта
Таблица разбита на блоки по домам — заголовок каждого блока соответствует названию дома. В конце блока выводится строка «Итого» с суммарными значениями по дому.

(1) Тип квартиры — тип квартиры: 1К, 2К, 3К, 1С (студия), 2Е (евро) и т. д. При группировке «По классу» столбец отображает класс квартиры.
(2) Этажи — перечень этажей, на которых расположены квартиры группы.
(3) Номера квартир — перечень номеров квартир группы.
(4) Общая площадь, м² — общая площадь квартир в группе. Все квартиры одной строки имеют одинаковую площадь — это условие группировки.
(5) Площадь без балкона/лоджии, м² — площадь квартиры без учёта балконов, лоджий и террас.
(6) Мин. стоимость, ₽ — минимальная прайсовая цена среди квартир группы.
(7) Средняя цена, ₽/м² — среднее значение цены за квадратный метр по квартирам группы.
(8) Цена за м² у площади без балкона/лоджии — отношение минимальной стоимости группы к площади без балкона/лоджии.
(9) Кол-во — количество квартир в группе.
(10) Кол-во м² — суммарная площадь квартир группы.
(11) Общая сумма — сумма прайсовых цен всех квартир группы.
Кнопка → XLS выгружает отчёт в Excel.
#Технический паспорт отчёта
#Условия попадания в отчёт
Объект включается в отчёт при одновременном выполнении условий:
activity = 'sell'— объект выставлен на продажу;estate_sell_type = 'living'— жилой объект;estate_sell_category = 'flat'— категория «квартира»;house_idуказан — объект привязан к дому;estate_houses.status > 0— дом активен;- статус объекта входит в набор, определяемый опциями.
Набор статусов:
| Статус | Код | Условие включения |
|---|---|---|
| Подбор | 20 | Всегда |
| Бронь | 30 | По умолчанию; исключается опцией «Исключить брони» |
| Сделка в работе | 50 | По умолчанию; исключается опцией «Исключить сделки» |
| Маркетинговый резерв | 32 | Опция «Маркетинговый резерв» |
| Маркетинговая сделка в работе | 53 | Опция «Маркетинговая сделка» |
| Маркетинговая сделка проведена | 52 | Опция «Маркетинговая сделка» |
Фильтр «На дату»:
Статус объекта на указанную дату восстанавливается по таблице estate_sells_statuses_log — берётся последняя запись с log_date < дата + 1 день. Если история отсутствует — используется текущий estate_sell_status при условии, что объект добавлен до указанной даты; иначе объект считается находившимся в статусе «Подбор». Физически удалённые объекты не восстанавливаются.
#Данные в системе
Источники данных: estate_sells, estate_houses, estate_sells_statuses_log.
Группировка строк: house_id (дом) + estate_area + тип или класс квартиры.
Заголовок блока дома: estate_houses.public_house_name; при отсутствии — адрес из geo_street_name, geo_house; при отсутствии — «Адрес не определён».
| Столбец | Поле | Таблица |
|---|---|---|
| (1) Тип квартиры | estate_rooms + estate_studia | estate_sells |
| (1) Класс квартиры | flatClass | estate_sells |
| (2) Этажи | GROUP_CONCAT(DISTINCT estate_floor ORDER BY estate_floor) | estate_sells |
| (3) Номера квартир | GROUP_CONCAT(DISTINCT geo_flatnum) | estate_sells |
| (4) Общая площадь | estate_area (поле группировки) | estate_sells |
| (5) Площадь без балкона/лоджии | estate_area_inside | estate_sells |
| (6) Мин. стоимость | MIN(estate_price) | estate_sells |
| (7) Средняя цена, ₽/м² | SUM(estate_price_m2) / COUNT(estate_sell_id) | estate_sells |
| (9) Кол-во | COUNT(estate_sell_id) | estate_sells |
| (10) Кол-во м² | SUM(estate_area) | estate_sells |
| (11) Общая сумма | SUM(estate_price) | estate_sells |
estate_price — итоговая прайсовая цена продажи. К сумме сделок отношения не имеет.
Средняя цена за м² (столбец (7)) — простое среднее по объектам группы, не взвешенное по площади.
В запросах замените
{{company_id}}на числовой идентификатор компании,{{end_date}}— на нужную дату в форматеYYYY-MM-DD.
Основные данные объектов и группировки:
SELECT
eh.house_id,
COALESCE(eh.public_house_name, eh.geo_street_name, 'Адрес не определён') AS house_name,
es.estate_area,
es.estate_area_inside,
es.estate_rooms,
es.estate_studia,
es.flatClass,
GROUP_CONCAT(DISTINCT es.estate_floor ORDER BY es.estate_floor SEPARATOR ', ') AS floors,
GROUP_CONCAT(DISTINCT es.geo_flatnum SEPARATOR ', ') AS flatnums,
MIN(es.estate_price) AS price_min,
SUM(es.estate_price_m2) / COUNT(es.estate_sell_id) AS price_m2_avg,
MIN(es.estate_price) / es.estate_area_inside AS price_m2_inside,
COUNT(es.estate_sell_id) AS cnt,
SUM(es.estate_area) AS area_total,
SUM(es.estate_price) AS price_total
FROM estate_sells es
INNER JOIN estate_houses eh
ON eh.house_id = es.house_id
AND eh.company_id = es.company_id
WHERE es.company_id = {{company_id}}
AND es.activity = 'sell'
AND es.estate_sell_type = 'living'
AND es.estate_sell_category = 'flat'
AND es.estate_sell_status IN (20, 30, 50)
AND eh.status > 0
GROUP BY
eh.house_id,
es.estate_area,
es.estate_rooms,
es.estate_studia
ORDER BY
house_name,
es.estate_rooms,
es.estate_area
Статус объекта на дату (для фильтра «На дату»):
Находит последнюю запись лога до указанной даты включительно. Результат джойнится к основному запросу вместо estate_sell_status. Объекты без записи в логе считаются находившимися в статусе «Подбор».
SELECT
essl.estate_sell_id,
essl.status_to AS status_at_date
FROM estate_sells_statuses_log essl
LEFT JOIN estate_sells_statuses_log essl_newer
ON essl_newer.estate_sell_id = essl.estate_sell_id
AND essl_newer.company_id = essl.company_id
AND essl_newer.log_date < DATE_ADD(DATE('{{end_date}}'), INTERVAL 1 DAY)
AND essl_newer.id > essl.id
WHERE essl.company_id = {{company_id}}
AND essl.log_date < DATE_ADD(DATE('{{end_date}}'), INTERVAL 1 DAY)
AND essl_newer.id IS NULL
#Расчётные данные
(8) Цена за м² у площади без балкона/лоджии — вычисляется делением минимальной стоимости группы на площадь без балкона/лоджии:
MIN(es.estate_price) / es.estate_area_inside