MACRO

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

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

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

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

#Фильтры

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

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

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

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

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

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

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

{width=70%}

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

Основа отчёта — сделки в статусе Сделка расторгнута (код 140). Данные берутся из таблицы estate_shows с обязательными связями к estate_buys, estate_sells, contacts (покупатель и продавец) и users (менеджер). Данные о площадях и расположении объекта подтягиваются через EAV-атрибуты объекта продажи. Финансовые операции возвратов формируются отдельным запросом из таблицы finances.

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

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

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

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

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

Расположение и характеристики объекта хранятся в EAV-атрибутах объекта продажи (estate_sells). Поле «Кол-во комнат» заполняется только для категории flat.

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

SELECT
    es.agreement_number      AS `№ договора`,
    sell.category            AS `Категория объекта`
FROM estate_shows es
INNER JOIN estate_sells sell ON es.estate_sell_id = sell.id
WHERE es.status = 140;

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

Данные хранятся в таблице contacts. Связь с сделкой устанавливается через estate_shows:

SELECT
    seller.name              AS `Продавец`,
    buyer.name               AS `Покупатель`
FROM estate_shows es
LEFT JOIN contacts seller ON es.contacts_sell_id = seller.id
LEFT JOIN contacts buyer  ON es.contacts_buy_id  = buyer.id
WHERE es.status = 140;

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

Три типа площадей хранятся в EAV-атрибутах объекта и имеют следующий смысл:

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

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

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

Стоимость сделки и расчётная цена за квадратный метр хранятся в estate_shows:

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

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

Суммарный объём поступивших платежей по сделке. Берётся из таблицы finances — суммируются приходные операции по данной сделке в статусах «Проведено» и «Зарезервировано».

SELECT
    es.agreement_number      AS `№ договора`,
    SUM(f.summa)             AS `Оплачено`
FROM estate_shows es
LEFT JOIN finances f ON f.estate_shows_id = es.id
    AND f.is_income = 1
    AND f.summa > 0
    AND f.is_ignore_inout = 0
WHERE es.status = 140
GROUP BY es.id, es.agreement_number;

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

Расходные финансовые операции, соответствующие возврату средств покупателю. Берутся из finances с условием is_income = 0 и is_income_lower = 1.

SELECT
    f.date_added             AS `Дата возврата`,
    f.summa                  AS `Сумма возврата`,
    f.status                 AS `Статус`
FROM finances f
INNER JOIN estate_shows es ON f.estate_shows_id = es.id
WHERE es.status = 140
    AND f.is_income = 0
    AND f.is_income_lower = 1
    AND f.summa > 0
    AND f.is_ignore_inout = 0
ORDER BY es.id, f.date_added;

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

Хранится в estate_shows.deposit_date:

es.deposit_date AS `Дата снятия залога`

Фактическая дата расторжения сделки (22), Дата регистрации расторжения (23), Номер регистрации расторжения (24)

Все три поля хранятся в estate_shows:

es.deal_date_cancelled              AS `Фактическая дата расторжения`,
es.deal_date_cancelled_reg          AS `Дата регистрации расторжения`,
es.deal_cancel_reg_agreement_number AS `Номер регистрации расторжения`

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

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

SELECT
    u.name AS `Менеджер сделки`
FROM estate_shows es
LEFT JOIN users u ON es.users_id = u.id
WHERE es.status = 140;

Причина расторжения (26)

Хранится в estate_shows.deal_cancelled_reason:

es.deal_cancelled_reason AS `Причина расторжения`

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

Полный запрос для получения данных реестра в MacroData:

SELECT
    es.agreement_type                                       AS `Тип договора`,
    CONCAT(
        IFNULL(es.preliminary_number, ''),
        IF(es.preliminary_date IS NOT NULL,
           CONCAT(' от ', DATE_FORMAT(es.preliminary_date, '%d.%m.%Y')), '')
    )                                                       AS `Предварительный договор`,
    es.agreement_number                                     AS `№ договора`,
    es.agreement_date                                       AS `Дата договора`,
    sell.category                                           AS `Категория объекта`,
    seller.name                                             AS `Продавец`,
    buyer.name                                              AS `Покупатель`,
    es.deal_sum                                             AS `Стоимость объекта по договору`,
    ROUND(es.deal_sum / NULLIF(es.deal_area, 0), 2)        AS `Цена за м² по договору`,
    es.deposit_date                                         AS `Дата снятия залога`,
    es.deal_date_cancelled                                  AS `Фактическая дата расторжения`,
    es.deal_date_cancelled_reg                              AS `Дата регистрации расторжения`,
    es.deal_cancel_reg_agreement_number                     AS `Номер регистрации расторжения`,
    u.name                                                  AS `Менеджер сделки`,
    es.deal_cancelled_reason                                AS `Причина расторжения`
FROM estate_shows es
INNER JOIN estate_sells sell   ON es.estate_sell_id    = sell.id
LEFT JOIN  contacts    seller  ON es.contacts_sell_id  = seller.id
LEFT JOIN  contacts    buyer   ON es.contacts_buy_id   = buyer.id
LEFT JOIN  users       u       ON es.users_id          = u.id
WHERE es.status = 140
ORDER BY es.deal_date_cancelled DESC;

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

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

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