MACRO

Сводный отчёт по продажам

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

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

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

#Фильтры

Дата — период отчёта. По умолчанию фильтрует по дате проведения сделки. Тип даты можно изменить в выпадающем списке рядом с полем:

  • Дата начала сделки;
  • Дата ДДУ;
  • Дата сдачи в Росреестр;
  • Дата регистрации;
  • Дата проведения сделки (по умолчанию).

Фильтр по дате применяется только к группам «Заключено договоров» и «Поступления». Группы «Всего объектов», «Маркетинговые договоры» и «Не продано объектов» всегда показывают полные данные независимо от выбранного периода.

Источник денег — отбор по способу оплаты. Применяется только к группам «Заключено договоров» и «Поступления».

Тип недвижимости — отбор по типу: Жилая / Коммерческая.

Категория — отбор по категории объекта (квартира, машино-место, кладовая и т. д.).

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

Категория комплекса — отбор по категории ЖК.

Этап — отбор по статусу объекта.

Вид отделки — отбор по виду отделки объекта. Значение «Любая отделка» показывает объекты, у которых вид отделки задан.

Показывать неактивные дома — включает в отчёт дома в статусах Неактив и Проверка. По умолчанию отображаются только дома в статусе Подбор.

#Опции

Не учитывать наценки — в группе «Заключено договоров» из суммы сделки вычитается сумма допов. Влияет на стоимость, цену за м² и расхождение.

Группировать по очереди — разбивает ЖК на подгруппы по очередям строительства. Добавляет строки «ИТОГО по ЖК» над итогами по очередям.

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

Учитывать в «Заключено договоров» в т.ч. Сделки в работе — добавляет к проведённым сделкам объекты в статусе Сделка в работе. Они автоматически убираются из группы «Не продано».

Вычитать агентскую комиссию — из стоимости в группе «Заключено договоров» вычитается агентская комиссия. Влияет только на стоимость и цену за м² в этой группе; поступления и остальные группы не меняются.

#Структура отчёта

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

(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)