MACRO

Реестр непроданных квартир

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

Отчёт показывает актуальный ассортимент непроданных квартир, сгруппированных по домам и типам. Для каждой группы отображаются площади, прайсовые цены и количество объектов. Отчёт используется для анализа остатков и ценовой политики.

#Работа с отчётом

#Фильтры

На дату — при заданной дате в отчёт попадают объекты, которые на указанную дату находились в одном из отображаемых статусов (с учётом настроек опций). Без значения — отчёт формируется по текущим статусам.

Цены и площади всегда отображаются актуальные — исторический срез по ценам не ведётся.

Класс квартир — отбор по классу объекта.

Тип квартиры — отбор по количеству комнат и типу планировки.

ЖК/Дом — отбор по конкретному жилому комплексу или дому.

#Опции

По умолчанию отчёт включает квартиры в статусах Подбор, Бронь и Сделка в работе. Опции позволяют скорректировать этот набор.

Исключить брони — убирает из выборки квартиры в статусе Бронь.

Исключить сделки — убирает из выборки квартиры в статусе Сделка в работе.

Маркетинговый резерв — добавляет квартиры в статусе Маркетинговый резерв.

Маркетинговая сделка — добавляет квартиры в маркетинговых статусах сделки.

#Группировка

По типу (по умолчанию) — строки сгруппированы по типу квартиры (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_studiaestate_sells
(1) Класс квартирыflatClassestate_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_insideestate_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