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

KarteInhalt
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
VertragskopfStatus, Haupttyp, Untertyp, Richtung, Vertragsnummer (Live-Vorschau: peeknumber), date_signed, Währung, Vorlage + Sprache, Notiz
Laufzeit, Verlängerung, KündigungBeginn, 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ündigungGründe aus den Stammdaten mit eigener Klauselnummer und eigenem Text
VertragstextSprachreiter: Titel, Beschreibung, vollständiger Text (HTML-Editor), „Aus Vorlage laden“
Preise und AbrechnungPreisform, Abrechnungsart (single, multiple, recurring), Zeitraum, Zahlungsart und -ziel, Kursmethode, Rechnungsrhythmus, automatische Rechnungsstellung
Verknüpfte RechnungenRechnungen des Vertrags, Suche und Verknüpfung
Vermietete Immobilie & Kostenweiterberechnungbei Mietverträgen: Immobilie, Weiterberechnung (Entwurf oder live), Aufschlag %
Immobilienvermittlungzu vermittelnde Immobilien
Vertragsaktionen, Digitale UnterschriftAJAX-Karten (contract/contractaction.block, contract/esign.block)
Anlagenmit dem Vertrag verknüpfte Dokumente der Dokumentenzentrale, Hochladen, Lösen
Budgetpositionen, PhasenPositionen (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

  1. Recht: canSave(contract/contract, id); der Client muss im Inhaltsbereich des Benutzers liegen.
  2. Client und Gegenstand sind Pflicht; der ungarische Titel ist Pflicht, und bei jedem fremdsprachigen Text auch der ungarische Text.
  3. date_signed: gültiges Datum, nicht in der Zukunft; bei digitaler Annahme füllt das System es, wenn leer.
  4. Zu vermittelnde Immobilie: Provision 0–100 %, Monate bei Langzeitmiete 0–120, Zeilenende nicht vor Beginn; eine Zeile ohne Immobilie liefert einen Fehler mit Zeilennummer.
  5. Vertragswert und Summe der nicht optionalen Positionen (Einzelpreis × geplante Menge) müssen auf ±0,01 übereinstimmen, wenn der Kopfwert auswertbar ist.
  6. Rollenlimit je Partei; fehlende erwartete Rolle und Unterzeichner ohne Befugnis ergeben Warnungen.
  7. Fristloser Kündigungsgrund: neu nur aktiv und für Haupt- und Untertyp gültig; Klauselnummer höchstens 32 Zeichen.
  8. Fehlende Vollmacht, wenn der Auftraggeber nicht Eigentümer der Immobilie ist: Warnung.
  9. Erfolg nur für einen zurückgelesenen Datensatz; danach Personen, Gründe, Vermittlungszeilen, Datenraum-Abgleich (mit grantaccess), optional PDF-Erzeugung (mit generate).

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

EndpunktRecht
contract/contract, .listlist
.formedit
.saveadd oder edit + Bereich
.peeknumberedit + Bereich
.enable, .disableedit
.deletedelete + Bereich; vorher werden die Datenraumrechte des Vertrags entzogen
.invoices, .invoicesearch, .invoicelinklist oder edit + Bereich
.fxrecalcfxrecalc + Bereich
.docs, .docupload, .docunlinklist oder edit + Bereich
.templatepreview, .generategenerate

Die Schlüssel statusdelete, certify, export und invoice stehen im Katalog, werden vom Controller aber nicht geprüft.