Startseite › Bibliothek › Vertragsverstöße

Vertragsverstöße

Erfassen und verfolgen Sie Verstöße gegen Vertragsbedingungen durch Mieter

Überblick

Das Verstoßmodul ermöglicht die Dokumentation und Verfolgung von Fällen der Nichteinhaltung von Mietvertragsbedingungen. Jeder Verstoß kann mit bestimmten Vertragsklauseln verknüpft und durch Fotobeweise belegt werden.

!

Verstoßverfolgung

Führen Sie eine Historie aller Verstöße für jedes Objekt und jeden Vertrag

Verknüpfung mit Klauseln

Geben Sie an, welche Vertragsklauseln verletzt wurden

Fotobeweise

Fügen Sie Fotos und Dokumente zur Bestätigung von Verstößen bei

Schweregrade

Bewerten Sie die Schwere von Verstößen auf einer Skala von 1 bis 10

Schweregrade

Das System verwendet 4 Schweregrade zur Klassifizierung von Verstößen:

1-3

Niedrig – geringfügige Verstöße, Warnungen

4-5

Mittel – moderate Verstöße, erfordern Aufmerksamkeit

6-8

Hoch – schwerwiegende Verstöße, können zu Strafen führen

9-10

Kritisch – Grund für Vertragsauflösung

Arbeitsprozess

Typischer Prozess der Verstoßdokumentation:

1

Entdeckung

Der Eigentümer entdeckt Verstöße gegen Vertragsbedingungen

2

Dokumentation

Erstellung eines Eintrags mit Beschreibung, Datum und Schweregrad

3

Beweise

Fotos anhängen und mit Vertragsklauseln verknüpfen

4

Benachrichtigung

Der Verletzer kann den dokumentierten Verstoß einsehen

Zugriffsrechte

Verschiedene Benutzer haben unterschiedliche Rechte:

Aktion Wer kann
Verstoß erstellen Eigentümer, Administratoren
Verstoß anzeigen Eigentümer, Administratoren, Verletzer
Verstoß bearbeiten Eigentümer, Administratoren
Verstoß löschen Eigentümer, Administratoren
Dokumente anhängen Eigentümer, Administratoren

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 für die Integration mit externen Systemen:

Service-Layer-Hinweis

GET    /api/v1/properties/{id}/violations           - Liste der Verstöße
POST   /api/v1/properties/{id}/violations           - Verstoß erstellen
GET    /api/v1/properties/{id}/violations/{vid}     - Verstoßdetails
PUT    /api/v1/properties/{id}/violations/{vid}     - Verstoß aktualisieren
DELETE /api/v1/properties/{id}/violations/{vid}     - Verstoß löschen
POST   /api/v1/properties/{id}/violations/{vid}/documents      - Dokument anhängen
DELETE /api/v1/properties/{id}/violations/{vid}/documents/{did} - Dokument entfernen

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

Beispielantwort

{
  "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

Vollständige API-Dokumentation verfügbar unter /api/v1/doc