MACRO

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

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

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

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

#Фильтры

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

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

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

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

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

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

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

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

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

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

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

Основа отчёта — сделки в статусе Сделка отменена (код 140 по справочнику estate_deals_statuses). Данные берутся из таблицы estate_deals с обязательными связями к estate_sells (объект продажи), estate_houses (дом), contacts (покупатель и продавец) и users (менеджеры). Данные о расположении объекта хранятся непосредственно в estate_sells и estate_houses; площади «Полная» и «Приведённая» — через 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)

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

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

SELECT
    ed.agreement_number              AS `№ договора`,
    h.geo_region_name                AS `Район`,
    h.geo_quarter                    AS `Микрорайон`,
    h.name                           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;

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

Данные хранятся в таблице 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;

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

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

  • Площадь общ. проектная — базовая проектная площадь объекта из карточки объекта (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;

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

Стоимость сделки хранится в 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;

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

Суммарный объём поступивших платежей по сделке. Берётся из таблицы 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;

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

Расходные финансовые операции возврата средств покупателю — типы с признаком 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;

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

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

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

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

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

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

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

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

Ответственный менеджер берётся из таблицы 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;

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

ФИО сотрудника сопровождения сделки. Берётся из 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;

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

Данные не выгружаются в 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.name                                                     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;

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

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

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