Docs

VERTRAG

Dokumentation

VERTRAG

Mit VERTRAG verwalten Sie Mietverträge / Vorgänge zwischen Vermieter und Mieter.

Pro Vertrag können Sie hinterlegen:

  • Vermieter und Mieter (siehe VERMIETER, MIETER)
  • Zeitraum (Beginn, Ende)
  • zugeordnetes Inventar (Mengen, optional Preise)
  • Techniker / Helfer
  • Kommentare und Dokumente (Uploads)
  • Status / Kanban-Spalte (siehe KANBAN)
  • digitale Unterschriften (Vermieter & Mieter)
  • generiertes PDF des Vertrags
  • generierte Rechnung (HTML/PDF) aus den Vertragsdaten (M27)

  • Vertrag anlegen und Daten pflegen
  • Inventar zuweisen
  • PDF generieren
  • Rechnung aus dem Vertrag generieren (HTML/PDF)
  • Vertrag von Vermieter und/oder Mieter unterschreiben lassen
  • Per Kanban-Drag&Drop in eine andere Spalte schieben
  • Anhänge hochladen (z.B. Ausweis, AGB, Auftragsbestätigung)
  • Verträge filtern (z.B. nur offene, nur abgeschlossene)
  • Verträge löschen (Soft) und ggf. wiederherstellen oder endgültig löschen

1) Vertrag anlegen

1. Öffnen Sie Vertrag → Verträge (/vertrag/vertraege).
2. „Neu“ klicken (/vertrag/vertraege/new).
3. Pflichtfelder ausfüllen:

  • Mieter (Auswahl oder neu anlegen)
  • Vermieter
  • Zeitraum

4. Speichern.

2) Vertrag bearbeiten

1. Vertrag in der Liste anklicken (/vertrag/vertraege/{id}).
2. Felder ändern und speichern.
3. Auf der Detailseite zusätzlich verfügbar:

  • Kommentare hinzufügen
  • Dokumente hochladen / herunterladen / löschen
  • Inventar zuweisen (Auswahlliste oder Schnellsuche per Name)
  • Techniker zuweisen
  • PDF generieren
  • Unterschriften erfassen / Signatur-Link erzeugen

3) Inventar zum Vertrag hinzufügen

1. Auf der Detailseite den Bereich Inventar öffnen.
2. Item auswählen (oder per Name suchen, „Quick add“).
3. Menge setzen.
4. Speichern. Das Item wird mit Tagessatz übernommen, sofern hinterlegt.

Items entfernen: Auf das X / „Entfernen“ neben dem Eintrag klicken.

4) Vertrag in der Kanban-Ansicht verschieben

  • In der Kanban-Übersicht Karte per Drag&Drop in eine andere Spalte ziehen.
  • Im Hintergrund wird /vertrag/vertraege/kanban/move aufgerufen.
  • Siehe Plugin KANBAN für die Spalten-Konfiguration.

5) Vertrags-PDF erzeugen

1. Auf der Detailseite (sofern TEMPLATING aktiv ist) im Template-Auswahlmenü eine VERTRAG-Vorlage wählen. „Standard“ nutzt die Standardvorlage für VERTRAG.
2. Mit „PDF generieren“ wird das PDF geöffnet bzw. erzeugt: GET /vertrag/vertraege/{id}/pdf. Ohne Parameter nutzt die App das gespeicherte, geschützte Vertrags-PDF (bzw. regeneriert es, wenn der Vertrag nicht gesperrt ist). Mit template={uuid} wird die gewählte Vorlage on-the-fly gerendert.
3. Optional kann über type ein anderer Dokumenttyp gerendert werden – Details siehe Abschnitt 6.

> Layout und Inhalt der generierten Dokumente werden über das TEMPLATING-Plugin gesteuert. Dort legen Sie Vorlagen für VERTRAG und RECHNUNG an und wählen pro Typ die Standardvorlage.

6) Als Rechnung generieren

1. Auf der Detailseite die Buttons „Als Rechnung generieren“ und „Rechnung als PDF“ nutzen (nur sichtbar, wenn TEMPLATING aktiv ist).
2. „Als Rechnung generieren“ öffnet die HTML-Ansicht: GET /vertrag/vertraege/{id}/generate?type=RECHNUNG.
3. „Rechnung als PDF“ erzeugt das PDF: GET /vertrag/vertraege/{id}/pdf?type=RECHNUNG.
4. Ohne template-Parameter wird die Standard-RECHNUNG-Vorlage verwendet. Mit template={uuid} wird eine explizit gewählte RECHNUNG-Vorlage gerendert; der Typ muss zur Vorlage passen, sonst erhält man einen Fehler (HTTP 400).
5. On-the-fly generierte Rechnungen werden nicht als Vertrags-Dokument gespeichert und nicht im Änderungslog protokolliert.

7) Vertrag unterschreiben lassen

#### a) Vermieter-Unterschrift (intern)
1. Auf der Detailseite „Vermieter unterschreiben“ klicken (POST /vertrag/vertraege/{id}/sign-vermieter).
2. Mit Maus / Touchpad / Stift unterschreiben → speichern.

#### b) Mieter-Unterschrift (per Link extern)
1. Auf der Detailseite „Signatur-Link erzeugen“ klicken (POST /vertrag/vertraege/{id}/sign/generate-token).
2. Es wird ein Token-Link erzeugt: /vertrag/sign/{token}.
3. Diesen Link an den Mieter senden (z.B. per Mail).
4. Der Mieter öffnet den Link, sieht die Vertragsübersicht und unterschreibt direkt im Browser. Es ist kein Login nötig.
5. Nach dem Speichern erscheint die Unterschrift am Vertrag.

> Der Link ist nur gültig, solange der Token aktiv ist und der Vertrag nicht vollständig unterschrieben wurde.

8) Vertrag löschen / wiederherstellen

  • Löschen (Soft): POST /vertrag/vertraege/{id}/delete – Vertrag wird ausgeblendet, bleibt aber in der DB.
  • Wiederherstellen: POST /vertrag/vertraege/{id}/restore
  • Endgültig löschen: POST /vertrag/vertraege/{id}/permanent-delete – nicht mehr rückholbar.

9) Filtern & Suchen

In der Liste können Sie nach Status / Kanban-Spalte / Mieter / Vermieter / Zeitraum filtern. Die Filter werden in der URL als Query-Parameter mitgegeben, sodass Sie die Ansicht als Lesezeichen speichern können.


Optionen (/settings/admin/vertrag/options)

Globale Einstellungen rund um den Vertrag, z.B.:

  • Standard-Steuersatz / Standardwerte
  • Sichtbare Felder im Formular
  • Defaults beim Anlegen aus einer Homepage-Anfrage

Uploads (/settings/admin/vertrag/uploads)

Voreinstellungen für Dokument-Uploads (z.B. erlaubte Dateitypen, max. Größe). Die hochgeladenen Dateien landen physisch unter `
/contract-uploads`.


„PDF wird leer / sieht falsch aus“

  • Prüfen Sie das Vertrags-Template im TEMPLATING-Plugin (Standardvorlage gesetzt?).
  • Bilder/Logos: ist der Pfad korrekt im Template?

„Mieter kann den Signatur-Link nicht öffnen“

  • Token wirklich kopiert und unverändert geschickt?
  • Vertrag schon vollständig unterschrieben? Dann ist der Link „verbraucht“.
  • Eventuell wurde ein neuer Token generiert (alter Link wird ungültig).

„Inventar-Position fehlt im PDF“

  • Position wirklich gespeichert?
  • Im Template muss der Inventar-Block aktiv sein (TEMPLATING).

„Vertrag ist nicht im Kanban“

  • KANBAN aktiv? Kategorie zugeordnet? Vertrag nicht soft-gelöscht?

Nutzerbereich (/vertrag/vertraege):

  • GET /vertrag/vertraege – Liste
  • GET /vertrag/vertraege/new – Neuer Vertrag
  • POST /vertrag/vertraege – Anlegen
  • GET /vertrag/vertraege/{id} – Detail
  • POST /vertrag/vertraege/{id} – Speichern
  • GET /vertrag/vertraege/{id}/pdf – PDF anzeigen (optional: lang, type=VERTRAG|RECHNUNG, template={uuid})
  • GET /vertrag/vertraege/{id}/generate – Dokument-HTML generieren (optional: lang, type=VERTRAG|RECHNUNG, template={uuid})
  • POST /vertrag/vertraege/{id}/comments – Kommentar
  • POST /vertrag/vertraege/{id}/documents – Dokument hochladen
  • GET /vertrag/vertraege/{id}/documents/{docId} – Dokument abrufen
  • POST /vertrag/vertraege/{id}/documents/{docId}/delete – Dokument löschen
  • POST /vertrag/vertraege/{id}/inventar – Inventar zuweisen
  • POST /vertrag/vertraege/{id}/inventar/by-name – Schnellsuche-Inventar
  • POST /vertrag/vertraege/{id}/inventar/{itemId}/remove – Position entfernen
  • POST /vertrag/vertraege/{id}/techniker – Techniker setzen
  • POST /vertrag/vertraege/{id}/sign-vermieter – Vermieter-Unterschrift
  • POST /vertrag/vertraege/{id}/sign/generate-token – Mieter-Signatur-Link erzeugen
  • POST /vertrag/vertraege/kanban/move – Karte zwischen Spalten bewegen
  • POST /vertrag/vertraege/{id}/delete – Soft-Delete
  • POST /vertrag/vertraege/{id}/restore – Wiederherstellen
  • POST /vertrag/vertraege/{id}/permanent-delete – Endgültig löschen

Seit M27 (Issue #522) unterstützen GET .../pdf und GET .../generate die
optionalen Query-Parameter lang (Default de), type
(VERTRAG/RECHNUNG, bei Auslassung Default VERTRAG) und template
(UUID einer existierenden Vorlage):

  • Ohne type/template bleibt das Legacy-Verhalten: /pdf liefert das

gespeicherte, geschützte Vertrags-PDF (bzw. regeneriert es, wenn der Vertrag
nicht gesperrt ist), /generate rendert die Standard-VERTRAG-Vorlage.

  • Mit type oder template wird das Dokument on-the-fly gerendert und nicht

als Vertrags-Dokument gespeichert (kein Änderungslog-Eintrag).

  • Unbekannter type, unbekannte template-UUID oder Typ-Fehlmatch zwischen

type und template → HTTP 400 mit i18n-Fehlermeldung.

Öffentlich (nur mit Token):

  • GET /vertrag/sign/{token} – Signatur-Seite
  • POST /vertrag/sign/{token} – Signatur abschicken

Admin (/settings/admin/vertrag):

  • GET /settings/admin/vertrag/options
  • POST /settings/admin/vertrag/options
  • GET /settings/admin/vertrag/uploads
  • POST /settings/admin/vertrag/uploads

  • VERTRAG ist Kern-Plugin: Es greift auf MIETER, VERMIETER, INVENTAR, TEMPLATING, KANBAN und MAIL zurück. Aktivieren Sie nur, was Sie wirklich brauchen.
  • Soft-deletete Verträge zählen weiter in der Statistik bis zum endgültigen Löschen.