# Реестр броней

**Реестр броней** в **MacroCRM** расположен в блоке **Отчеты** -> **Продажи: ассортимент:**

<figure><img src="https://2409287958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfkymnT1WRuXnrJRm6ZIO%2Fuploads%2FwfznNui50az4AyLJcFfk%2Fotchet_po_broni_1.png?alt=media&#x26;token=9c75e7a8-fe9c-476e-abf6-aafbc5cd89fa" alt=""><figcaption></figcaption></figure>

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

### **Работа с отчетом**

1\. Выставите интересующий вас период действия с бронями в фильтре **Дата.**

2\. В фильтре **Действие с бронью** укажите *Снятие*, *Постановка,* *Пролонгация, Перевод в платную бронь.*

3\. Дополнительно можно выставить **Тип действия:** *Автоматическое* или *Ручное*, чтобы исключить действия системы, например.

4\. Оставьте фильтр **ЖК/Дом** и **Менеджер** пустыми, чтобы оценить ситуацию по компании в целом или, наоборот, укажите, чтобы посмотреть более конкретную статистику.

5\. Фильтр **Текущий статус** позволяет выбрать действия с теми заявками, которые сейчас находятся в выбранном статусе.

Так как отчет фиксирует буквально все действия с *Бронями*, полезными могут оказаться **дополнительные опции**, такие как:

* **Платная бронь** — показывает действия по тем заявкам, в которых включена платная бронь, вручную или через проведение финансовой операции Задаток.
* **Только последнее действие по заявке** — если по одной и тоже же заявке ставили и снимали бронь несколько раз (при этом возможно на разные объекты), то по включенной опции отчет покажет только последнее действие с этой заявкой.
* **Исключать действия где бронь на другой объект** — в ситуации, когда постановка брони была на один объект, затем бронь сняли и потавили на другой объект, эта опция может быть полезной. Она исключит из отчета первые действия по заявке, если в итоге бронь сейчас стоит на другой объект. Если опция выключена, то в таблице отображается «!»
* **Показать UTM (xls)** — показывает UTM-метки в скачанном отчете в xls-формате.
* **Без агента** — показывает действия по тем заявкам, в которых не указан конакт-агент.
* **С** **агентом** — показывает действия по тем заявкам, в которых указан конакт-агент.
* **Уникальные действия** — единожды ставили и снимали *Бронь.*
* **Уникальные первичные обращения** — заявки со статусом *Бронь* с уникальным первичным обращением.

<figure><img src="https://2409287958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfkymnT1WRuXnrJRm6ZIO%2Fuploads%2Fyb6PSZW3neZRwK8HHpms%2Fotchet_po_broni_2.png?alt=media&#x26;token=a0140b6f-82e2-4d32-b85a-143d67b98965" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://2409287958-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfkymnT1WRuXnrJRm6ZIO%2Fuploads%2Fq5Qp4tdSDFKjkx6hPqsf%2F%D1%80%D0%B5%D0%B1%D1%80%D0%BE1.jpg?alt=media&#x26;token=4de15597-0be4-4c16-9d09-e582e5c50863" alt=""><figcaption></figcaption></figure>

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

Реестр представляет собой последовательный журнал действий, связанных с изменением статусов <mark style="background-color:yellow;">**заявок**</mark> и <mark style="background-color:yellow;">**объектов недвижимости**</mark>. Каждая строка — это одно событие, отражающее изменение статуса заявки с привязкой к объекту и, при наличии, к сделке. Основные данные берутся из сущности estate\_buys\_statuses\_log[^1], с дополнительными связями к estate\_deals[^2], estate\_buys[^3], estate\_sells[^4], users[^5].

**Поставлено**, **Снято**, **Продлено** и **Переведено в платную бронь (1-4)**:

Принцип выбора данных в <mark style="background-color:purple;">**MacroData**</mark> без учёта дополнительных фильтров. Подсчёт количества действий производится на основе переходов между статусами. Для каждого действия применяется фильтрация по status\_from\_name и status\_to\_name.&#x20;

Ниже приведён пример для подсчёта записей, где заявки были поставлены в бронь:

```sql
SELECT COUNT(id) AS Поставлено в бронь
FROM estate_buys_statuses_log
WHERE status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор')
AND status_to_name = 'Бронь';
```

Для получения других типов действий измените условие WHERE.

* Снятие брони:

```sql
WHERE status_from_name = 'Бронь'
AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')
```

* Продление брони:

```sql
WHERE status_from_name = 'Бронь'
AND status_to_name = 'Бронь'
```

* Перевод в платную бронь:

```sql
WHERE status_from_name = 'Бронь'
AND status_custom_to_name = 'Платная бронь'
```

**Действие/тип**, **Дата (5-6)**:

Принцип выбора данных в <mark style="background-color:purple;">**MacroData**</mark> без учёта дополнительных фильтров:

```sql
SELECT
CASE
WHEN status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор')
AND status_to_name = 'Бронь'
THEN 'Постановка'
WHEN status_from_name = 'Бронь'
AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')
THEN 'Снятие'
WHEN status_from_name = 'Бронь'
AND status_to_name = 'Бронь'
THEN 'Продление'
WHEN status_from_name = 'Бронь'
AND status_custom_to_name = 'Платная бронь'
THEN 'Перевод в платную бронь'
END AS Действие/тип,
log_date AS дата
FROM
estate_buys_statuses_log
WHERE
(
(status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор') AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')) OR
(status_from_name = 'Бронь' AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_custom_to_name = 'Платная бронь')
)
ORDER BY
log_date;
```

В этом запросе структура CASE отвечает за обозначение действия по смене статусов, а напротив выводится дата события.

**Стоимость по договору (11)**, **Агент (13)** и **Программа покупки (15)**:&#x20;

Эти данные хранятся в таблице estate\_deals[^6], так что установите связь между estate\_buys\_statuses\_log[^7] и estate\_deals, чтобы получить необходимую информацию:

```sql
SELECT
CASE
WHEN status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор')
AND status_to_name = 'Бронь'
THEN 'Постановка'
WHEN status_from_name = 'Бронь'
AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')
THEN 'Снятие'
WHEN status_from_name = 'Бронь'
AND status_to_name = 'Бронь'
THEN 'Продление'
WHEN status_from_name = 'Бронь'
AND status_custom_to_name = 'Платная бронь'
THEN 'Перевод в платную бронь'
END AS Действие/тип,
log_date AS Дата,
estate_deals.deal_sum AS Стоимость по договору
FROM
estate_buys_statuses_log
LEFT JOIN
estate_deals ON estate_buys_statuses_log.deal_id = estate_deals.id
WHERE
(
(status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор') AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')) OR
(status_from_name = 'Бронь' AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_custom_to_name = 'Платная бронь')
)
ORDER BY
log_date;
```

{% hint style="warning" %}
Так как само событие не представляет из себя сущность, ориентируйтесь на дату и тип действия для связи с объектами недвижимости.&#x20;
{% endhint %}

В приведённом запросе строка `` estate_deals.deal_sum AS `Стоимость по договору` `` отвечает за вывод **Стоимось по договору (11)**. Для вывода **Агента (13)** и **Программа покупки (15)** замените эту строку соответствующим образом:&#x20;

```sql
estate_deals.agent_name AS `Агент`
```

```sql
estate_deals.deal_program_name AS `Программа покупки`
```

**Категория**, **Объект**, **S м**<sup>**2**</sup> и **Цена по прайсу (7-10)**:

Для получения данных метрик необходимо через estate\_deals установить связь с estate\_sells[^4]. Выборка данных в <mark style="background-color:purple;">**MacroData**</mark>:

```sql
SELECT
CASE
WHEN status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор')
AND status_to_name = 'Бронь'
THEN 'Постановка'
WHEN status_from_name = 'Бронь'
AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')
THEN 'Снятие'
WHEN status_from_name = 'Бронь'
AND status_to_name = 'Бронь'
THEN 'Продление'
WHEN status_from_name = 'Бронь'
AND status_custom_to_name = 'Платная бронь'
THEN 'Перевод в платную бронь'
END AS Действие/тип,
log_date AS Дата,
CASE estate_sells.estate_sell_category
WHEN 'flat' THEN 'Квартира'
WHEN 'garage' THEN 'Парковка'
WHEN 'storageroom' THEN 'Кладовка'
WHEN 'house' THEN 'Дом'
WHEN 'comm' THEN 'Коммерция'
END AS Категория
FROM
estate_buys_statuses_log
LEFT JOIN estate_deals ON estate_buys_statuses_log.deal_id = estate_deals.id
LEFT JOIN estate_sells ON estate_deals.deal_id = estate_sells.deal_id
WHERE
(
(status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор') AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')) OR
(status_from_name = 'Бронь' AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_custom_to_name = 'Платная бронь')
)
ORDER BY
log_date DESC;
```

В представленном запросе осуществляется вывод категории объекта по типу и дате события. Для получения **S м**<sup>**2**</sup> и **Цена по прайсу (9-10)** замените конструкцию `` CASE estate_sells.category … END AS `Категория` `` следующим образом:

```sql
estate_sells.estate_area AS `S, м2` 
```

```sql
estate_sells.estate_price AS `Цена по прайсу2` 
```

{% hint style="warning" %}
Поле **Объект (8)** содержит в себе данные о комнатности, категории, адресе, площади, цене и стоимости. Эти данные можно агрегировать аналогичным образом за счёт данных в estate\_sells.
{% endhint %}

**Заявка/Контакт (12)** и **Текущий статус заявки (14)**:

Данные метрики хранятся в estate\_buys[^3], так что аналогично предыдущему пункту через LEFT JOIN установите связь между  estate\_buys\_statuses\_log  и  estate\_buys.&#x20;

Выборка данных в <mark style="background-color:purple;">**MacroData**</mark>:

```sql
SELECT
CASE
WHEN status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор')
AND status_to_name = 'Бронь'
THEN 'Постановка'
WHEN status_from_name = 'Бронь'
AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')
THEN 'Снятие'
WHEN status_from_name = 'Бронь'
AND status_to_name = 'Бронь'
THEN 'Продление'
WHEN status_from_name = 'Бронь'
AND status_custom_to_name = 'Платная бронь'
THEN 'Перевод в платную бронь'
END AS Действие/тип,
log_date AS Дата,
estate_buys.id AS Заявка/Контакт
FROM
estate_buys_statuses_log
LEFT JOIN estate_buys ON estate_buys_statuses_log.estate_buy_id = estate_buys.id
WHERE
(
(status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор') AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')) OR
(status_from_name = 'Бронь' AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_custom_to_name = 'Платная бронь')
)
ORDER BY
log_date DESC;

```

В данном запросе выводится id заявки через строку запроса `` estate_buys.id AS `Заявка/Контакт` ``. Для вывода **Текущий статус заявки (14)** замените эту строку на:&#x20;

```sql
estate_buys.status_name AS `Текущий статус заявки`.
```

**Менеджер (16)**:

Таблица  estate\_buys\_statuses\_log уже содержит данные об id сотрудника, который являлся инициатором этого события. Для получения ФИО менеджера необходимо напрямую установить связь между estate\_buys\_statuses\_log и users[^5].&#x20;

Выборка данных в <mark style="background-color:purple;">**MacroData**</mark>:

```sql
SELECT
CASE
WHEN status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор')
AND status_to_name = 'Бронь'
THEN 'Постановка'
WHEN status_from_name = 'Бронь'
AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')
THEN 'Снятие'
WHEN status_from_name = 'Бронь'
AND status_to_name = 'Бронь'
THEN 'Продление'
WHEN status_from_name = 'Бронь'
AND status_custom_to_name = 'Платная бронь'
THEN 'Перевод в платную бронь'
END AS Действие/тип,
log_date AS Дата,
users.users_name AS Менеджер
FROM
estate_buys_statuses_log
LEFT JOIN users ON estate_buys_statuses_log.users_id = users.id
WHERE
(
(status_from_name IN ('Неразобранное', 'Проверка', 'Отложено', 'Подбор') AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_to_name NOT IN ('Бронь', 'Сделка в работе', 'Сделка расторгнута', 'Сделка проведена')) OR
(status_from_name = 'Бронь' AND status_to_name = 'Бронь') OR
(status_from_name = 'Бронь' AND status_custom_to_name = 'Платная бронь')
)
ORDER BY
log_date DESC;


```

[^1]: содержит данные о смене статусов

[^2]: содержит данные о сделках

[^3]: содержит данные о заявках

[^4]: содержит данные об объектах недвижимости

[^5]: содержит данные о пользователях в компании

[^6]: содержит данные по сделкам

[^7]: содержит записи о смене статусов


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.macrodigital.ru/manual/macrocrm/otchety/otchet_po_bronjam.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
