Огляд
Фінансовий календар показує агреговані підсумки дня по всіх ваших об'єктах. Замість окремих подій кожен день відображає до 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"}
]