MACRO

Реестр расторгнутых договоров

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

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

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

#Фильтры

  • Дата — период, по которому формируется выборка. Нажмите на тип даты, чтобы изменить событие, по которому будут отобраны сделки:
    • Дата договора — дата подписания основного договора.
    • Дата расторжения — фактическая дата расторжения сделки.
    • Дата подписания договора — дата подписания в системе.
    • Дата согласования договора — дата согласования договора.
    • Дата регистрации расторжения — дата государственной регистрации расторжения.
  • ЖК/Дом — ограничивает выборку по жилому комплексу или конкретному строению. При выборе ЖК входящие в него дома выбираются автоматически.
  • Категория объекта — позволяет выбрать один или несколько типов объектов: Квартира, Машино-место, Малоэтажка, Земельный участок, Кладовая, Коммерческая недвижимость.
  • Клиент — поиск и выбор конкретного покупателя. Начните вводить имя или номер телефона, затем выберите нужный контакт из выпадающего списка.
  • Менеджер — ограничивает выборку по одному или нескольким менеджерам сделки.
  • Сотрудник сопровождения сделки — ограничивает выборку по одному или нескольким сотрудникам сопровождения.

Нажмите Сформировать для построения отчёта. Для выгрузки данных используйте кнопку → XLS.

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

Отчёт представляет собой построчный реестр расторгнутых сделок. Каждая строка соответствует одному расторжению. В нижней строке «Итого» суммируются площадь, стоимость по договору и сумма оплаченных средств.

Номер объекта в столбце «№ объекта» является активной ссылкой — нажмите на него, чтобы перейти на карточку объекта.

В адресном блоке таблицы колонки идут в порядке: Район → Микрорайон (если компания его использует) → ЖК → Дом → № дома → № объекта.

  • ЖК — наименование жилого комплекса, к которому привязан дом объекта. Выводится обычным текстом, без ссылки. Значение берётся из той же привязки дома к комплексу, по которой работает фильтр ЖК/Дом, поэтому выбранный в фильтре комплекс и значение колонки всегда совпадают.
  • Дом — наименование дома: публичное наименование дома, если оно задано в карточке дома, иначе наименование карточки дома. Наименование является активной ссылкой на карточку дома.
  • № дома — номер дома из адреса объекта. Это отдельная по смыслу колонка: она не заменяет колонку Дом.

Если объект не привязан к дому, ячейки ЖК и Дом остаются пустыми. Если дом не привязан к жилому комплексу, пустой остаётся только ячейка ЖК. Строка в обоих случаях остаётся в отчёте.

Блок «Сумма и дата возврата» отображает финансовые операции возврата средств покупателю по данной сделке. На экране каждая операция показывается отдельной строкой с датой, суммой и статусом, а внизу — подытог «Итого» по сделке. Возможные статусы операции:

  • Проведено — возврат фактически выплачен.
  • К оплате — возврат запланирован, но ещё не проведён.

В столбце «Сотрудник сопровождения» отображается ФИО сотрудника, сопровождающего сделку.

Столбец «Основание» содержит реквизиты дополнительного соглашения к сделке, на основании которого произошло расторжение. Если дополнительное соглашение не привязано — отображается значение «Не выбрано».

#Технический паспорт отчёта

#Данные в системе

Основа отчёта — сделки в статусе Сделка отменена (код 140 по справочнику estate_deals_statuses). Данные берутся из таблицы estate_deals с обязательными связями к estate_sells (объект продажи), estate_houses (дом), contacts (покупатель и продавец) и users (менеджеры). Данные о расположении объекта хранятся непосредственно в estate_sells и estate_houses; наименование жилого комплекса — в estate_houses.complex_name (привязка дома к карточке комплекса); площади «Полная» и «Приведённая» — через estate_sells_attr. Финансовые операции оплат и возвратов формируются отдельными запросами из таблицы finances с классификацией типов через finances_types.

Тип договора (2), Предварительный договор (3), № договора (4), Дата договора (5)

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

Принцип выбора данных в MacroData без учёта дополнительных фильтров:

SELECT
    ed.agreement_type        AS `Тип договора`,
    CONCAT(
        IFNULL(ed.preliminary_number, ''),
        IF(ed.preliminary_date IS NOT NULL,
           CONCAT(' от ', DATE_FORMAT(ed.preliminary_date, '%d.%m.%Y')), '')
    )                        AS `Предварительный договор`,
    ed.agreement_number      AS `№ договора`,
    ed.agreement_date        AS `Дата договора`
FROM estate_deals ed
WHERE ed.deal_status = 140;

Район (6), Микрорайон (7), ЖК (8), Дом (9), № дома (10), № объекта (11), Этаж (12), Категория объекта (13), Кол-во комнат (14)

Данные о районе и микрорайоне хранятся в estate_houses и являются общими для всех объектов в доме. Номер объекта, этаж, категория и комнатность — прямые поля estate_sells. Поле «Кол-во комнат» заполняется только для категории flat. Столбец «Микрорайон» отображается только при включённой настройке компании estate_show_construction_params. В HTML-версии отчёта значение столбца «№ объекта» является ссылкой на карточку объекта (/account/estate/view/{id}); в выгрузке XLS отображается как обычный текст.

  • ЖК — наименование карточки жилого комплекса, к которому привязан дом объекта (estate_houses.complex_name).
  • Дом — публичное наименование дома (атрибут estate_public_house_name, в MacroData — estate_houses.public_house_name), а если оно не задано — наименование карточки дома. В HTML-версии — ссылка на карточку дома (/account/estate/view/{id дома}), в выгрузке XLS — обычный текст.
  • № дома — номер дома из адреса (атрибут geo_house), в MacroData — estate_houses.geo_house.

Если объект не привязан к дому, ЖК и Дом пустые; если дом не привязан к комплексу, пустой остаётся только ЖК.

Принцип выбора данных в MacroData без учёта дополнительных фильтров:

SELECT
    ed.agreement_number              AS `№ договора`,
    h.geo_region_name                AS `Район`,
    h.geo_quarter                    AS `Микрорайон`,
    h.complex_name                   AS `ЖК`,
    IFNULL(h.public_house_name, h.name) AS `Дом`,
    h.geo_house                      AS `№ дома`,
    sell.geo_flatnum                 AS `№ объекта`,
    sell.estate_floor                AS `Этаж`,
    sell.estate_sell_category        AS `Категория объекта`,
    sell.estate_rooms                AS `Кол-во комнат`
FROM estate_deals ed
INNER JOIN estate_sells sell  ON ed.estate_sell_id = sell.estate_sell_id
INNER JOIN estate_houses h    ON ed.house_id       = h.house_id
WHERE ed.deal_status = 140;

В MacroData поле estate_houses.name содержит частное наименование дома или наименование карточки, поэтому при отсутствии публичного наименования значение колонки «Дом» в запросе может отличаться от отчёта.

Продавец (15), Покупатель (16)

Данные хранятся в таблице contacts. Продавец связывается через estate_deals.seller_contacts_id, покупатель — через estate_deals.contacts_buy_id. Имя контакта — поле contacts_buy_name.

SELECT
    ed.agreement_number            AS `№ договора`,
    c_sell.contacts_buy_name       AS `Продавец`,
    c_buy.contacts_buy_name        AS `Покупатель`
FROM estate_deals ed
LEFT JOIN contacts c_sell ON ed.seller_contacts_id = c_sell.contacts_id
LEFT JOIN contacts c_buy  ON ed.contacts_buy_id    = c_buy.contacts_id
WHERE ed.deal_status = 140;

Площадь общ. проектная (17), Полная площадь (18), Приведённая площадь (19)

Три типа площадей имеют следующий смысл:

  • Площадь общ. проектная — базовая проектная площадь объекта из карточки объекта (estate_sells.estate_area).
  • Полная площадь — сумма всех помещений без понижающих коэффициентов, включая балконы и лоджии (estate_sells_attr, ключ estate_area_max_custom).
  • Приведённая площадь — площадь с коэффициентами для балконов (0,3) и лоджий (0,5) (estate_sells_attr, ключ estate_area_reduced).

В строке «Итого» суммируется значение столбца Площадь общ. проектная.

SELECT
    ed.agreement_number      AS `№ договора`,
    sell.estate_area         AS `Площадь общ. проектная`,
    esa_max.attr_value       AS `Полная площадь`,
    esa_red.attr_value       AS `Приведённая площадь`
FROM estate_deals ed
INNER JOIN estate_sells sell ON ed.estate_sell_id = sell.estate_sell_id
LEFT JOIN estate_sells_attr esa_max
    ON esa_max.estate_sell_id = sell.estate_sell_id
    AND esa_max.attr_name = 'estate_area_max_custom'
LEFT JOIN estate_sells_attr esa_red
    ON esa_red.estate_sell_id = sell.estate_sell_id
    AND esa_red.attr_name = 'estate_area_reduced'
WHERE ed.deal_status = 140;

Цена за м² по договору (20), Стоимость объекта по договору (21)

Стоимость сделки хранится в estate_deals.deal_sum, цена за квадратный метр вычисляется как отношение суммы сделки к площади.

SELECT
    ed.agreement_number                                      AS `№ договора`,
    ed.deal_sum                                              AS `Стоимость объекта по договору`,
    ROUND(ed.deal_sum / NULLIF(ed.deal_area, 0), 2)         AS `Цена за м² по договору`
FROM estate_deals ed
WHERE ed.deal_status = 140;

Оплачено, ₽ (22)

Суммарный объём поступивших платежей по сделке. Берётся из таблицы finances — суммируются подтверждённые операции (status_name = 'on'), тип которых в finances_types имеет признак is_income = 1. Операции сверх суммы сделки (is_over_deal_sum = 1) не учитываются.

SELECT
    ed.agreement_number      AS `№ договора`,
    SUM(f.summa)             AS `Оплачено`
FROM estate_deals ed
LEFT JOIN finances f ON f.deal_id = ed.deal_id
    AND f.summa > 0
    AND f.is_over_deal_sum = 0
    AND f.status_name = 'on'
LEFT JOIN finances_types ft ON ft.id = f.types_id
    AND ft.company_id = f.company_id
    AND ft.is_income = 1
WHERE ed.deal_status = 140
GROUP BY ed.deal_id, ed.agreement_number;

Сумма и дата возврата (23)

Расходные финансовые операции возврата средств покупателю — типы с признаком finances_types.is_income_lower = 1. В выборку попадают операции в статусах «Проведено» (on) и «К оплате» (reserved).

SELECT
    ed.agreement_number      AS `№ договора`,
    f.date_added             AS `Дата возврата`,
    f.summa                  AS `Сумма возврата`,
    f.status_name            AS `Статус`
FROM estate_deals ed
LEFT JOIN finances f ON f.deal_id = ed.deal_id
    AND f.summa > 0
    AND f.status_name IN ('on', 'reserved')
LEFT JOIN finances_types ft ON ft.id = f.types_id
    AND ft.company_id = f.company_id
    AND ft.is_income_lower = 1
WHERE ed.deal_status = 140
ORDER BY ed.deal_id, f.date_added;

Дата снятия залога (24)

Данные не выгружаются в MacroData.

Фактическая дата расторжения сделки (25)

Хранится в estate_deals.deal_date_cancelled.

SELECT
    ed.agreement_number          AS `№ договора`,
    ed.deal_date_cancelled       AS `Фактическая дата расторжения`
FROM estate_deals ed
WHERE ed.deal_status = 140;

Дата регистрации расторжения (26), Номер регистрации расторжения (27)

Данные не выгружаются в MacroData.

Менеджер сделки (28)

Ответственный менеджер берётся из таблицы users через estate_deals.deal_manager_id.

SELECT
    ed.agreement_number      AS `№ договора`,
    u.users_name             AS `Менеджер сделки`
FROM estate_deals ed
LEFT JOIN users u ON u.id = ed.deal_manager_id
WHERE ed.deal_status = 140;

Сотрудник сопровождения (29)

ФИО сотрудника сопровождения сделки. Берётся из estate_deals.deal_co_manager_id. Если сотрудник сопровождения не назначен — поле пустое.

SELECT
    ed.agreement_number      AS `№ договора`,
    u_co.users_name          AS `Сотрудник сопровождения`
FROM estate_deals ed
LEFT JOIN users u_co ON u_co.id = ed.deal_co_manager_id
WHERE ed.deal_status = 140;

Причина расторжения (30), Основание (31)

Данные не выгружаются в MacroData.

Итоговый запрос

Полный запрос для получения данных реестра в MacroData. Финансовые столбцы (Оплачено, Сумма и дата возврата) выбираются отдельными запросами, приведёнными выше.

SELECT
    ed.deal_id,
    ed.agreement_type                                          AS `Тип договора`,
    CONCAT(
        IFNULL(ed.preliminary_number, ''),
        IF(ed.preliminary_date IS NOT NULL,
           CONCAT(' от ', DATE_FORMAT(ed.preliminary_date, '%d.%m.%Y')), '')
    )                                                          AS `Предварительный договор`,
    ed.agreement_number                                        AS `№ договора`,
    ed.agreement_date                                          AS `Дата договора`,
    h.geo_region_name                                          AS `Район`,
    h.geo_quarter                                              AS `Микрорайон`,
    h.complex_name                                             AS `ЖК`,
    IFNULL(h.public_house_name, h.name)                        AS `Дом`,
    h.geo_house                                                AS `№ дома`,
    sell.geo_flatnum                                           AS `№ объекта`,
    sell.estate_floor                                          AS `Этаж`,
    sell.estate_sell_category                                  AS `Категория объекта`,
    sell.estate_rooms                                          AS `Кол-во комнат`,
    c_sell.contacts_buy_name                                   AS `Продавец`,
    c_buy.contacts_buy_name                                    AS `Покупатель`,
    sell.estate_area                                           AS `Площадь общ. проектная`,
    esa_max.attr_value                                         AS `Полная площадь`,
    esa_red.attr_value                                         AS `Приведённая площадь`,
    ROUND(ed.deal_sum / NULLIF(ed.deal_area, 0), 2)           AS `Цена за м² по договору`,
    ed.deal_sum                                                AS `Стоимость объекта по договору`,
    ed.deal_date_cancelled                                     AS `Фактическая дата расторжения`,
    u.users_name                                               AS `Менеджер сделки`,
    u_co.users_name                                            AS `Сотрудник сопровождения`
FROM estate_deals ed
INNER JOIN estate_sells sell      ON ed.estate_sell_id      = sell.estate_sell_id
INNER JOIN estate_houses h        ON ed.house_id            = h.house_id
LEFT JOIN  contacts c_sell        ON ed.seller_contacts_id  = c_sell.contacts_id
LEFT JOIN  contacts c_buy         ON ed.contacts_buy_id     = c_buy.contacts_id
LEFT JOIN  users u                ON u.id                   = ed.deal_manager_id
LEFT JOIN  users u_co             ON u_co.id                = ed.deal_co_manager_id
LEFT JOIN  estate_sells_attr esa_max
    ON esa_max.estate_sell_id = sell.estate_sell_id
    AND esa_max.attr_name = 'estate_area_max_custom'
LEFT JOIN  estate_sells_attr esa_red
    ON esa_red.estate_sell_id = sell.estate_sell_id
    AND esa_red.attr_name = 'estate_area_reduced'
WHERE ed.deal_status = 140
ORDER BY ed.deal_date_cancelled DESC;

Строка «Итого»

В строке «Итого» суммируются три показателя:

  • Площадь общ. проектная — суммарная проектная площадь по всем расторгнутым сделкам в выборке.
  • Стоимость объекта по договору — суммарная стоимость расторгнутых сделок.
  • Оплачено, ₽ — суммарный объём поступивших платежей по всем сделкам в выборке.