Обзор
Финансовый календарь показывает агрегированные итоги дня по всем вашим объектам. Вместо отдельных событий каждый день отображает до 4 компактных индикаторов:
Зелёный чип с шевроном вверх — сумма всех платежей за день (аренда и коммунальные вместе). Нажмите на чип, чтобы увидеть отдельные платежи.
Оранжевый чип с шевроном вниз — сумма всех начислений за день: коммунальные, аренда и штрафы. Нажмите на чип для детализации.
Жёлтый чип с круглой точкой — количество нефинансовых событий: показания счётчиков, документы, договоры, нарушения. Нажмите на чип для просмотра списка.
Синий чип с иконкой кошелька — общий долг на конец дня по всем объектам. Нажмите на чип для детальной разбивки по объектам с отдельными секциями коммунальных и аренды.
Детали баланса
Нажатие на чип баланса (синий, с иконкой кошелька) открывает детальный отчёт по балансу на выбранную дату. Отчёт разделён на две секции:
Показывает каждый объект с: начальным долгом, начислениями за день, платежами за день и итоговым балансом. Нажмите на сумму начислений или платежей, чтобы раскрыть отдельные документы со ссылками.
Та же структура, что и для коммунальных, но для арендных начислений. Арендные платежи отслеживаются отдельно на основе привязки платежа к начислению.
Все суммы автоматически конвертируются в вашу валюту по текущим курсам.
Навигация
- Используйте стрелки ‹ › для навигации между месяцами
- Используйте выпадающие списки месяца и года для быстрой навигации
- Переключайтесь между видами Месяц и Список
- Нажмите на иконку фильтра для показа/скрытия фильтра по объектам
Мобильная версия
На узких экранах сетка месяца заменяется вертикальным списком дней: каждый день месяца показан со своими чипами на всю ширину, нажатие на чип открывает сводку дня. Баланс отображается компактными карточками вместо таблицы.
API Endpoints
Данные календаря доступны через REST API для интеграции с внешними системами.
GET
/api/v1/calendar/events?start=2026-02-01&end=2026-03-01
Возвращает все события календаря для авторизованного пользователя в указанном диапазоне дат.
start — Начальная дата (ISO 8601)end — Конечная дата (ISO 8601)property_id — Опциональный фильтр по объектуResponse example
[
{
"id": "charge-42",
"title": "14.27 €",
"start": "2026-02-01",
"allDay": true,
"backgroundColor": "#e53935",
"textColor": "#fff",
"extendedProps": {
"type": "charge_with_counter",
"eventTypeName": "Expense Charge",
"property": "My Apartment",
"propertyId": 12,
"amount": "14.27",
"currency": "€",
"expenseTypeName": "Electricity",
"url": "/properties/12/charges/42"
}
},
{
"id": "payment-15",
"title": "500.00 €",
"start": "2026-02-05",
"allDay": true,
"backgroundColor": "#27ae60",
"textColor": "#fff",
"extendedProps": {
"type": "payment",
"eventTypeName": "Payment",
"property": "My Apartment",
"propertyId": 12,
"amount": "500.00",
"currency": "€",
"url": "/properties/12/payments/15"
}
}
]
GET
/api/v1/calendar/event-types
Возвращает доступные типы событий с цветами и иконками.
Response example
[
{"type": "charge_with_counter", "color": "#e53935", "label": "Expense Charge"},
{"type": "rental_charge", "color": "#9c27b0", "label": "Rental Charge"},
{"type": "payment", "color": "#27ae60", "label": "Payment"},
{"type": "counter_reading_due", "color": "#ffa726", "label": "Reading Due"},
{"type": "document", "color": "#7f8c8d", "label": "Document"}
]
GET
/api/v1/calendar/daily-balances?start=2026-02-01&end=2026-02-28
Возвращает начальный баланс + дневные дельты для вычисления кумулятивного баланса. Все суммы в валюте пользователя.
Response example
{
"startBalance": -28159.58,
"dailyDeltas": {"2026-02-01": -656.43, "2026-02-02": 2282.16},
"dayCharges": {"2026-02-01": 688.63},
"dayPaid": {"2026-02-01": 32.20},
"rangeStart": "2026-02-01",
"rangeEnd": "2026-02-28",
"currency": "€"
}
GET
/api/v1/calendar/balance?date=2026-02-01
Детальный баланс по объектам на дату: коммунальные и аренда отдельно, с расшифровкой (отдельные документы).
Response example
{
"properties": [{
"propertyName": "My Apartment",
"utilityDebtBefore": 1338.51,
"utilityChargedDay": 14.27,
"utilityPaidDay": 10.40,
"utilityDebt": 1342.38,
"utilityDayItems": [
{"label": "Electricity", "desc": "Monthly", "amount": 14.27, "url": "/properties/12/charges/42"}
],
"rentalDebt": 486.18,
"totalDebt": 1828.56
}],
"currency": "€"
}
GET
/api/v1/calendar/charges?date=2026-02-01
Возвращает только начисления (коммунальные, аренда, штрафы) за указанную дату.
Response example
[
{
"id": "charge-42",
"title": "14.27 €",
"start": "2026-02-01",
"allDay": true,
"backgroundColor": "#e53935",
"textColor": "#fff",
"extendedProps": {
"type": "charge_with_counter",
"eventTypeName": "Начисление расходов",
"property": "Квартира на Хрещатику",
"propertyId": 12,
"amount": "14.27",
"currency": "€",
"expenseTypeName": "Электричество",
"url": "/properties/12/charges/42"
}
},
{
"id": "rental-7",
"title": "486.18 €",
"start": "2026-02-01",
"allDay": true,
"backgroundColor": "#9c27b0",
"textColor": "#fff",
"extendedProps": {
"type": "rental_charge",
"eventTypeName": "Начисление аренды",
"property": "Квартира на Хрещатику",
"propertyId": 12,
"amount": "486.18",
"currency": "€",
"url": "/properties/12/rental-charges/7"
}
}
]
GET
/api/v1/calendar/payments?date=2026-02-01
Возвращает только платежи (приход, возвраты, компенсации) за указанную дату.
Response example
[
{
"id": "payment-15",
"title": "500.00 €",
"start": "2026-02-01",
"allDay": true,
"backgroundColor": "#27ae60",
"textColor": "#fff",
"extendedProps": {
"type": "payment",
"eventTypeName": "Платёж",
"property": "Квартира на Хрещатику",
"propertyId": 12,
"amount": "500.00",
"currency": "€",
"url": "/properties/12/payments/15"
}
},
{
"id": "compensation-3",
"title": "50.00 €",
"start": "2026-02-01",
"allDay": true,
"backgroundColor": "#16a085",
"textColor": "#fff",
"extendedProps": {
"type": "repair_compensation",
"eventTypeName": "Компенсация за ремонт",
"property": "Квартира на Хрещатику",
"propertyId": 12,
"amount": "50.00",
"currency": "€",
"url": "/properties/12/repair-compensations/3"
}
}
]
GET
/api/v1/calendar/properties
Возвращает объекты доступные для фильтрации календаря.
Response example
[
{"id": 12, "name": "My Apartment", "address": "Kyiv, Khreschatyk 1"},
{"id": 14, "name": "Beach House", "address": "Odessa, Deribasovska 5"}
]