Funktionsweise von Vertragsformular und -liste
Die Karten des Vertragsformulars, Typen und Rollenpaare, die serverseitigen Speicherregeln, Vertragsnummer, Währung, Status, Liste und Endpunkte.
Das Vertragsformular (contract/contract.form) schreibt Vertragskopf, Beschreibungen, Parteien, Personen, Kündigungsgründe und Vermittlungszeilen mit einem AJAX-Speichern (contract/contract.save); das Formular bleibt offen, die neue Kennung wird zurückgeschrieben.
Karten des Formulars
| Karte | Inhalt |
|---|---|
| Mandant (links, 40 %) | Client-Auswahl (nur Firmen im Inhaltsbereich), Steuernummer, Adresse, Bankkonto (8-8-8), Personen des Clients |
| Vertragsparteien (rechts, 60 %) | Hauptpartner und weitere Parteien mit demselben Karten-Makro; Personen mit Rollen |
| Vertragskopf | Status, Haupttyp, Untertyp, Richtung, Vertragsnummer (Live-Vorschau: peeknumber), date_signed, Währung, Vorlage + Sprache, Notiz |
| Laufzeit, Verlängerung, Kündigung | Beginn, Ende, duration_type (fixed, open, project, until_task), Verlängerung, automatische Beendigung, ordentliche Kündigung, Kündigungsfrist und -termin, Leistungsnachweis, Tage und Klausel des Ablaufhinweises |
| Gründe für die fristlose Kündigung | Gründe aus den Stammdaten mit eigener Klauselnummer und eigenem Text |
| Vertragstext | Sprachreiter: Titel, Beschreibung, vollständiger Text (HTML-Editor), „Aus Vorlage laden“ |
| Preise und Abrechnung | Preisform, Abrechnungsart (single, multiple, recurring), Zeitraum, Zahlungsart und -ziel, Kursmethode, Rechnungsrhythmus, automatische Rechnungsstellung |
| Verknüpfte Rechnungen | Rechnungen des Vertrags, Suche und Verknüpfung |
| Vermietete Immobilie & Kostenweiterberechnung | bei Mietverträgen: Immobilie, Weiterberechnung (Entwurf oder live), Aufschlag % |
| Immobilienvermittlung | zu vermittelnde Immobilien |
| Vertragsaktionen, Digitale Unterschrift | AJAX-Karten (contract/contractaction.block, contract/esign.block) |
| Anlagen | mit dem Vertrag verknüpfte Dokumente der Dokumentenzentrale, Hochladen, Lösen |
| Budgetpositionen, Phasen | Positionen (Produkt, Dienstleistung, Immobilie; Einzelpreis, Menge, USt., optional) und Meilensteine |
Typen und Rollen
Haupttypen: mandate, works, employment, lease, sale. Untertypen: unter mandate real_estate_brokerage, accounting, site_supervision, controlling; unter lease vehicle_lease, property_lease, equipment_lease; unter sale property_sale, business_share_sale. Rollenpaare (Verkäufer- und Käuferseite): Beauftragter und Auftraggeber, Unternehmer und Besteller, Vermieter und Mieter, Arbeitnehmer und Arbeitgeber, Verkäufer und Käufer. Werte von contract_parties.role: customer, supplier, principal, agent, orderer, employer, contractor, employee, lessor, lessee, contributor.
Speicherregeln
- Recht:
canSave(contract/contract, id); der Client muss im Inhaltsbereich des Benutzers liegen. - Client und Gegenstand sind Pflicht; der ungarische Titel ist Pflicht, und bei jedem fremdsprachigen Text auch der ungarische Text.
date_signed: gültiges Datum, nicht in der Zukunft; bei digitaler Annahme füllt das System es, wenn leer.- Zu vermittelnde Immobilie: Provision 0–100 %, Monate bei Langzeitmiete 0–120, Zeilenende nicht vor Beginn; eine Zeile ohne Immobilie liefert einen Fehler mit Zeilennummer.
- Vertragswert und Summe der nicht optionalen Positionen (Einzelpreis × geplante Menge) müssen auf ±0,01 übereinstimmen, wenn der Kopfwert auswertbar ist.
- Rollenlimit je Partei; fehlende erwartete Rolle und Unterzeichner ohne Befugnis ergeben Warnungen.
- Fristloser Kündigungsgrund: neu nur aktiv und für Haupt- und Untertyp gültig; Klauselnummer höchstens 32 Zeichen.
- Fehlende Vollmacht, wenn der Auftraggeber nicht Eigentümer der Immobilie ist: Warnung.
- Erfolg nur für einen zurückgelesenen Datensatz; danach Personen, Gründe, Vermittlungszeilen, Datenraum-Abgleich (mit
grantaccess), optional PDF-Erzeugung (mitgenerate).
Vertragsnummer: Client + Präfix + höchste laufende Nummer des Jahres + 1, vierstellig aufgefüllt; eine vorhandene Nummer wird nicht überschrieben.
Währung und Status
Die Währung stammt aus dem Währungsstamm (currency_code, currency_value). Beträge im Dokument: Forint ganzzahlig, Fremdwährung mit zwei Dezimalstellen. fxrecalc berechnet die Kurse der Rechnungen nach dem Vertrag neu (Vorschau und Ausführung; Rechnungen abgeschlossener Perioden werden übersprungen). Status: 0 inaktiv, 1 aktiv, 9 gelöscht (Papierkorb, sichtbar nur für Inhaber der endgültigen Löschung und den Super-Admin). Die Kündigung deaktiviert den Vertrag am Beendigungstag.
Hintergrundaufgaben
Die Aufgabe contract_passthrough_scan überwacht etwa alle 2 Minuten die Weiterberechnung von Mietkosten und reiht die Aufgabe contract_passthrough ein, die eine Entwurfsrechnung zur Weiterberechnung erstellt.
Endpunkte und Rechte
| Endpunkt | Recht |
|---|---|
contract/contract, .list | list |
.form | edit |
.save | add oder edit + Bereich |
.peeknumber | edit + Bereich |
.enable, .disable | edit |
.delete | delete + Bereich; vorher werden die Datenraumrechte des Vertrags entzogen |
.invoices, .invoicesearch, .invoicelink | list oder edit + Bereich |
.fxrecalc | fxrecalc + Bereich |
.docs, .docupload, .docunlink | list oder edit + Bereich |
.templatepreview, .generate | generate |
Die Schlüssel statusdelete, certify, export und invoice stehen im Katalog, werden vom Controller aber nicht geprüft.