Главная › Библиотека › Нарушения договоров

Нарушения договоров

Фиксируйте и отслеживайте нарушения условий договора нанимателями

Обзор

Модуль нарушений договора позволяет документировать и отслеживать случаи несоблюдения условий арендного договора. Каждое нарушение может быть связано с конкретными пунктами договора и подтверждено фотодоказательствами.

!

Отслеживание нарушений

Ведите историю всех нарушений по каждому объекту и договору

Привязка к пунктам

Указывайте какие именно пункты договора были нарушены

Фотодоказательства

Прикрепляйте фото и документы для подтверждения нарушений

Уровни серьёзности

Оценивайте серьёзность нарушений по шкале от 1 до 10

Уровни серьёзности

Система использует 4 уровня серьёзности для классификации нарушений:

1-3

Низкий - незначительные нарушения, предупреждения

4-5

Средний - умеренные нарушения, требуют внимания

6-8

Высокий - серьёзные нарушения, могут привести к штрафам

9-10

Критический - основание для расторжения договора

Процесс работы

Типичный процесс документирования нарушения:

1

Выявление

Владелец выявляет нарушение условий договора

2

Документирование

Создание записи с описанием, датой и уровнем серьёзности

3

Доказательства

Прикрепление фото и привязка к пунктам договора

4

Уведомление

Нарушитель может просмотреть зафиксированное нарушение

Права доступа

Разные пользователи имеют разные права:

Действие Кто может
Создание нарушения Владельцы, администраторы
Просмотр нарушения Владельцы, администраторы, нарушитель
Редактирование нарушения Владельцы, администраторы
Удаление нарушения Владельцы, администраторы
Прикрепление документов Владельцы, администраторы

Automatic Overdue Payment Control

The system automatically detects late payments and creates contract violations. A daily cron job (app:payments:check-overdue) runs at 05:00 UTC and checks the previous month's payments.

How it works

  1. For each property with an active contract, the system reads RENT_PAYMENT_DAY and UTILITIES_PAYMENT_DAY + grace period from the contract blocks
  2. Finds payments made after the deadline (charge date + grace period)
  3. Groups overdue payments by deadline date
  4. Creates a ContractViolation with auto-generated description in the tenant's language
  5. Links overdue payments to the violation via violation_overdue_payments junction table

Severity rules

Days overdueSeverityLevel
1–53Low
6–145Medium
15–307High
31+9Critical

Utilities overdue always gets severity 5 (medium).

If a contract does not have RENT_PAYMENT_DAY or UTILITIES_PAYMENT_DAY blocks — no violation is created for that type.

Payment linking

Each violation can be linked to one or more overdue payments. One payment can be linked to at most one violation (UNIQUE constraint). Payments can also be linked manually when creating or editing a violation.

REST API

REST API для интеграции с внешними системами:

Примечание уровня сервиса

GET    /api/v1/properties/{id}/violations           - Список нарушений
POST   /api/v1/properties/{id}/violations           - Создать нарушение
GET    /api/v1/properties/{id}/violations/{vid}     - Детали нарушения
PUT    /api/v1/properties/{id}/violations/{vid}     - Обновить нарушение
DELETE /api/v1/properties/{id}/violations/{vid}     - Удалить нарушение
POST   /api/v1/properties/{id}/violations/{vid}/documents      - Прикрепить документ
DELETE /api/v1/properties/{id}/violations/{vid}/documents/{did} - Открепить документ

GET    /api/v1/properties/{id}/violations/{vid}/overdue-payments          - List linked overdue payments
POST   /api/v1/properties/{id}/violations/{vid}/overdue-payments          - Link payments (payment_ids[])
DELETE /api/v1/properties/{id}/violations/{vid}/overdue-payments/{payId}  - Unlink payment
GET    /api/v1/properties/{id}/overdue-payments                          - List unlinked overdue payments

Пример ответа

{
  "data": [
    {
      "id": 1,
      "property_id": 5,
      "contract_id": 12,
      "violation_date": "2026-01-10",
      "severity": 7,
      "severity_level": "high",
      "description": "Unauthorized subletting of the property to third party",
      "violator": {
        "id": 15,
        "name": "John Tenant"
      },
      "created_by": {
        "id": 8,
        "name": "Owner Name"
      },
      "documents_count": 2,
      "blocks": [
        {
          "id": 5,
          "code": "SUBLETTING",
          "name": "Subletting Prohibition"
        }
      ],
      "created_at": "2026-01-10T14:30:00+00:00"
    }
  ],
  "total": 1,
  "page": 1,
  "totalPages": 1
}

Swagger / OpenAPI

Полная документация API доступна по адресу /api/v1/doc