Centurio System- & Moduldokumentation
🏛️ Plattform-Architektur 🔑 Login
Alle Module / sales_billing / Vertragsmanagement
📑

Vertragsmanagement

contracts sales_billing 🛡️ RLS Protected

Rahmenverträge mit Laufzeiten, Konditionen, Kontingenten, Line-Billing und automatischer Abruferfassung.

Fachliche Bestimmung: Verwaltet Kunden- und Lieferantenverträge, Rahmenvereinbarungen und Service-Level-Agreements (SLA). Unterstützt Line-Billing (zeilenbasierte Abrechnung) sowie Abrufaufträge (Call-Offs), bei denen vereinbarte Preise und Kontingente automatisch überwacht und bis zur Vertragsgrenze abgerechnet werden.

⚡ Workflows & Lebenszyklen

Vertragslebenszyklus cascade:business.contract.lifecycle

Kaskade (review_gated).

1. contract
Vertrag anlegen
contracts
Aktionen: contract.create
2. task
Fristen / Kündigungsüberwachung
tasks
Aktionen: create_task

Vertrag anlegen cascade_target:business.contract.apply

Kaskade (review_gated).

1. cascade
Vertrag anlegen

Benutzerbefehl: contract agent plan:command_contract_agent

Geprüfter Durable-Plan (durable_plan), Start: manual_command.

1. contract_agent
contract_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "contract_agent", "condition_fact": null}
Aktionen: contract_agent

Benutzerbefehl: contract crud subagent plan:command_contract_crud_subagent

Geprüfter Durable-Plan (durable_plan), Start: manual_command.

1. contract_crud_subagent
contract_crud_subagent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "contract_crud_subagent", "condition_fact": null}
Aktionen: contract_crud_subagent

Benutzerbefehl: contract drafting agent plan:command_contract_drafting_agent

Geprüfter Durable-Plan (durable_plan), Start: manual_command.

1. contract_drafting_agent
contract_drafting_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "contract_drafting_agent", "condition_fact": null}
Aktionen: contract_drafting_agent

Vertrag status:contract

Beobachtbare Zustandsmaschine (observable_only). Übergänge hier nicht erzwungen — siehe Service-Validierung.

1. draft
draft
Status «draft» der Zustandsmaschine Vertrag.
2. pending
pending
Status «pending» der Zustandsmaschine Vertrag.
3. active
active
Status «active» der Zustandsmaschine Vertrag.
4. expired
expired
Status «expired» der Zustandsmaschine Vertrag.
5. terminated
terminated
Status «terminated» der Zustandsmaschine Vertrag.
6. renewed
renewed
Status «renewed» der Zustandsmaschine Vertrag.

⚙️ Fachprozesse & Capabilities (System-Fachlogik)

Registrierte Fachoperationen und System-Capabilities dieses Moduls zur Steuerung von Workflows, Kaskaden und KI-Agenten.

Gesamt: 39 manual_entry: 1 engine: 23 reviewed: 1 review_gated: 2 operator_surface: 4 engine_step: 4 durable_plan: 3 observable_only: 1
Capability & Schlüssel Fachliche Bezeichnung Ausführung / Coverage Risikostufe & Freigabe Effekte & Kaskaden
Agent-Einstieg contract_crud_subagent agent_entry:contract_crud_subagent
Agent-Einstieg contract_crud_subagent
Quelle: code:module_agent_map
manual_entry
✓ Auto
Keine Seiteneffekte deklariert
Vertragsdokument anhängen capability:contract.annex.add
Op: contract.annex.add
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.document_added
Vertrag anlegen capability:contract.create
Op: contract.create
Objekt: contract
Quelle: code:capability_registry
reviewed
🔒 Freigabe nötig Risiko: business_record
  • cascade:business.contract.apply
Kündigung capability:contract.notice.generate
Op: contract.notice.generate
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.notice.generate
Preisindex capability:contract.price_index.apply
Op: contract.price_index.apply
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.price_index.apply
Vertrag verlängern capability:contract.renew
Op: contract.renew
Intent: renew_contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.renewed
Verlängerung capability:contract.renewal.propose
Op: contract.renewal.propose
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.renewal.propose
SLA-Gutschrift capability:contract.sla.credit
Op: contract.sla.credit
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.sla.credit
Vertrag kündigen capability:contract.terminate
Op: contract.terminate
Intent: terminate_contract
Quelle: code:capability_registry
⚙️ Engine
🔒 Freigabe nötig Risiko: external_effect
  • contract.terminated
Geprüften Vertragsentwurf erstellen capability:contract_draft.materialize
Op: contract_draft.materialize
Intent: author_contract
Quelle: code:capability_registry
⚙️ Engine
🔒 Freigabe nötig Risiko: business_record
  • contract_template_draft.created
  • document.created
Contract: add amendment capability:contracts.contract.add_amendment
Op: contracts.contract.add_amendment
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.add_amendment
Contract: add document capability:contracts.contract.add_document
Op: contracts.contract.add_document
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.add_document
Contract: add document file capability:contracts.contract.add_document_file
Op: contracts.contract.add_document_file
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.add_document_file
Contract: add obligation capability:contracts.contract.add_obligation
Op: contracts.contract.add_obligation
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.add_obligation
Contract: add party capability:contracts.contract.add_party
Op: contracts.contract.add_party
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.add_party
Contract: create capability:contracts.contract.create
Op: contracts.contract.create
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.create
Contract: delete obligation capability:contracts.contract.delete_obligation
Op: contracts.contract.delete_obligation
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.delete_obligation
Contract: generate recurring invoice capability:contracts.contract.generate_recurring_invoice
Op: contracts.contract.generate_recurring_invoice
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.generate_recurring_invoice
Contract: renew contract capability:contracts.contract.renew_contract
Op: contracts.contract.renew_contract
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.renew_contract
Contract: schedule reminders capability:contracts.contract.schedule_reminders
Op: contracts.contract.schedule_reminders
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.schedule_reminders
Contract: terminate contract capability:contracts.contract.terminate_contract
Op: contracts.contract.terminate_contract
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.terminate_contract
Contract: update capability:contracts.contract.update
Op: contracts.contract.update
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.update
Contract: update obligation capability:contracts.contract.update_obligation
Op: contracts.contract.update_obligation
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • contract.update_obligation
Vertragsabrechnung ausführen capability:run_contract_billing
Op: run_contract_billing
Intent: run_contract_billing
Quelle: code:capability_registry
⚙️ Engine
🔒 Freigabe nötig Risiko: business_record
  • engine:run_contract_billing
Vertrag kündigen / beenden capability:terminate_contract
Op: terminate_contract
Objekt: contract
Quelle: code:capability_registry
⚙️ Engine
🔒 Freigabe nötig Risiko: external_effect
  • contract.terminated
Vertragslebenszyklus cascade:business.contract.lifecycle
Vertragslebenszyklus
Quelle: code:cascade_process
review_gated
✓ Auto
Keine Seiteneffekte deklariert
Vertrag anlegen cascade_target:business.contract.apply
Op: contract.create
Vertrag anlegen
Quelle: code:cascade_target
review_gated
🔒 Freigabe nötig
Keine Seiteneffekte deklariert
contract: create form form_surface_anchor:contract.create
Objekt: contract
Quelle: code:erp_form_surface
operator_surface
✓ Auto
Keine Seiteneffekte deklariert
contract: edit form form_surface_anchor:contract.edit
Objekt: contract
Quelle: code:erp_form_surface
operator_surface
✓ Auto
Keine Seiteneffekte deklariert
contract_amendment: edit form form_surface_anchor:contract_amendment.edit
Objekt: contract_amendment
Quelle: code:erp_form_surface
operator_surface
✓ Auto
Keine Seiteneffekte deklariert
contract_obligation: edit form form_surface_anchor:contract_obligation.edit
Objekt: contract_obligation
Quelle: code:erp_form_surface
operator_surface
✓ Auto
Keine Seiteneffekte deklariert
contract auto issue gateway:contract_auto_issue
Op: issue_customer_invoice
contract auto issue
Quelle: code:engine_facade
⚙️ Engine
✓ Auto
Keine Seiteneffekte deklariert
generate contract billing gateway:generate_contract_billing
Op: generate_contract_billing
generate contract billing
Quelle: code:engine_facade
⚙️ Engine
✓ Auto
Keine Seiteneffekte deklariert
Vertragsabrechnung ausführen gateway:recurring_billing
Op: run_contract_billing
Vertragsabrechnung ausführen
Quelle: code:reviewed_gateway
⚙️ Engine
✓ Auto
Keine Seiteneffekte deklariert
terminate contract gateway:terminate_contract
Op: terminate_contract
terminate contract
Quelle: code:engine_facade
⚙️ Engine
✓ Auto
Keine Seiteneffekte deklariert
Benutzerbefehl: contract agent plan:command_contract_agent
Benutzerbefehl: contract agent
Quelle: code:reviewed_execution_plan
durable_plan
✓ Auto
Keine Seiteneffekte deklariert
Benutzerbefehl: contract crud subagent plan:command_contract_crud_subagent
Benutzerbefehl: contract crud subagent
Quelle: code:reviewed_execution_plan
durable_plan
✓ Auto
Keine Seiteneffekte deklariert
Benutzerbefehl: contract drafting agent plan:command_contract_drafting_agent
Benutzerbefehl: contract drafting agent
Quelle: code:reviewed_execution_plan
durable_plan
✓ Auto
Keine Seiteneffekte deklariert
Vertrag status:contract
Objekt: contract
Quelle: code:status_machine
observable_only
✓ Auto
Keine Seiteneffekte deklariert

🧠 Fachprozess-Erzählung & Dual Knowledge Architektur

Synthese aus der ideologischen Blaupause (Meta-Fachlogik / Soll), der faktischen System-Implementierung (System-Fachlogik / Ist) und No-Code Customizing für KI-Consultants.

Dual Knowledge Layer
📖

Der durchgängige Businessprozess im Detail (End-to-End Fließtext-Erzählung)

Der durchgängige Vertrags- und Mietprozess in der betrieblichen Praxis

Verträge und Mietmodelle sichern wiederkehrende Umsätze (Recurring Revenue), erfordern jedoch höchste kaufmännische und juristische Wachsamkeit bei Fristen, Gerätezuständen und periodischen Abrechnungsläufen.

1. Vertragsinitiierung & Vertragsarten

Verträge entstehen aus erfolgreichen Vertriebsangeboten (quotes) oder Kundenvereinbarungen:

  • Vertragstypen in Centurio ERP:
    • Wartungs- & Serviceverträge (SLA): Feste monatliche oder jährliche Servicepauschalen mit garantierten Reaktionszeiten.
    • Mietverträge für Maschinen & Geräte (rental): Kurz- oder Langzeitmiete von Baumaschinen, Werkzeugen, Fahrzeugen oder Eventtechnik.
    • Software-Abonnements & Lizenzen (SaaS): Abrechnung nach Nutzeranzahl oder Funktionsumfang.
    • Lieferanten-Rahmenverträge: Konditionsvereinbarungen für den Einkauf (purchasing).
  • Vertragskopf: Über cap:contracts.contract.create wird der Vertrag angelegt mit Laufzeitbeginn, Mindestvertragslaufzeit (z.B. 24 Monate), Kündigungsfrist (z.B. 3 Monate zum Quartalsende) und Verlängerungsklausel.

2. Physische Geräteausgabe & Zustandsprotokoll (Rental Check-Out)

Bei Mietgeräten (rental) ist der Zustand vor Überlassung entscheidend:

  • Gerätedisposition: Das System prüft die Verfügbarkeit im Mietgerätepool (assets).
  • Übergabeprotokoll: Bei Abholung oder Lieferung erfasst der Disponent:
    • Seriennummer und Zählerstand (Betriebsstunden, Kilometer).
    • Vorhandene Gebrauchsspuren und Vorschäden (mit Foto-Upload).
    • Ausgegebenes Zubehör (Kabel, Koffer, Adapter).
  • Digitale Kundensignatur: Der Mieter unterzeichnet das Übergabeprotokoll (cap:rental.rental_order.checkout). Der Gerätestatus wechselt auf Vermietet (rented).
  • Kautionserfassung: Eine vereinbarte Kaution wird bar, per Kreditkartenautorisierung oder Banküberweisung vereinnahmt.

3. Zyklischer Abrechnungslauf (Recurring Billing Engine)

Dauerschuldverhältnisse erfordern pünktliche periodische Rechnungen:

  • Automatischer Abrechnungsscan: Am vereinbarten Stichtag (z.B. monatlich im Voraus am 1. des Monats) scannt die Recurring-Billing-Engine alle abrechenbaren Verträge.
  • Fakturierung: Über cap:contracts.contract.generate_period_invoice wird automatisch die Ausgangsrechnung im Rechnungsmodul (invoices) erzeugt, als E-Rechnung bereitgestellt und per E-Mail an den Kunden versandt.
  • Variable Verbrauchsabrechnung: Bei Maschinen mit Betriebsstundenerfassung werden zusätzlich zur Grundmiete die Mehrstunden nach Zählerstand abgerechnet.

4. Fristenüberwachung, Kündigung & automatische Verlängerung

  • Proaktive Fristenwarnung: Das System scannt kontinuierlich die Kündigungsstichtage. 60 Tage vor dem letztmöglichen Kündigungstermin generiert das System eine Vertriebsaufgabe (crm): Vertragsverlängerung verhandeln.
  • Kündigungseingang: Kündigt der Kunde fristgerecht, wird das Kündigungsdatum hinterlegt; das Vertragsende wird festgeschrieben (cap:contracts.contract.terminate).
  • Automatische Verlängerung (Rollover): Geht keine Kündigung ein, verlängert sich der Vertrag automatisch um die vereinbarte Periode (z.B. weitere 12 Monate).

5. Geräterücknahme & Endabrechnung (Rental Check-In)

Nach Ablauf der Mietzeit kehrt das Gerät zurück:

  • Rücknahmeprüfung: Über cap:rental.rental_order.checkin werden Betriebsstunden und Gerätezustand dokumentiert.
  • Schadensabwicklung: Werden Neuschäden festgestellt (z.B. Beschädigung am Gehäuse, fehlendes Zubehör), erstellt das System ein Schadensprotokoll und hält die Kaution ein.
  • Endabrechnung: Das System verrechnet die Mietdauer, Zusatzstunden, Endreinigungspauschale und Kautionsguthaben zu einer finalen Abrechnung. Das Gerät wechselt zur Wartung oder Reinigung, bevor es wieder für die Vermietung freigegeben wird.
🏛️

Meta-Fachlogik: Ideologische Blaupause, Soll-Weltbild & Normen

Meta-Fachlogik: Die ideologische Blaupause & das normative Weltbild

Die Meta-Fachlogik basiert auf dem Recht der Dauerschuldverhältnisse (BGB §§ 314, 535 ff.), dem Gesetz für faire Verbraucherverträge und Grundsätzen des Subskriptionsmanagements.

1. Rechtliche Grundlagen der Vermietung & Dauerschuldverhältnisse

  • Mietvertrag (§ 535 BGB): Verpflichtung zur Gebrauchsüberlassung in vertragsgemäßem Zustand; Pflicht des Mieters zur Entrichtung der vereinbarten Miete.
  • Zustandsdokumentation & Beweislast: Ohne detailliertes Übergabeprotokoll mit Kundensignatur kann der Vermieter bei Rückgabe entstandene Schäden rechtlich kaum beweisen. Das Soll-Modell erzwingt daher das beidseitig gezeichnete Zustandsprotokoll bei Ausgabe und Rücknahme.
  • Kündigungsfristen (§§ 309, 580a BGB): Gesetzliche Begrenzung automatischer Verlängerungsklauseln im B2C (max. Verlängerung auf unbestimmte Zeit mit 1-Monats-Kündigungsfrist); im B2B sind feste Verlängerungsperioden (z.B. 12 Monate) bei klarer Vereinbarung zulässig.

2. Invarianten des Soll-Modells

  1. Keine Gerätemietübergabe ohne signiertes Übergabeprotokoll.
  2. Keine Doppelabrechnung derselben Periode (strikter Idempotenz-Schutz beim Abrechnungslauf).
  3. Ein gekündigter Vertrag darf nach Vertragsende keine automatischen Folgeabrechnungen mehr auslösen.
  4. Kautionsguthaben müssen buchhalterisch getrennt als Fremdgeld geführt und bei Mängelfreiheit unverzüglich erstattet werden.
⚙️

Systemische Fachlogik: Faktische Umsetzung in Centurio ERP & Capabilities

Systemische Fachlogik: Die faktische Umsetzung in Centurio ERP

Die System-Fachlogik dokumentiert die Realisierung in den Modulen contracts und rental.

1. Datenmodelle & Semantische Schicht (ORM)

  • Contract: Vertragskopf (Felder: id, tenant_id, contract_number, customer_id, contract_type, start_date, end_date, notice_period_months, billing_cycle [monthly, quarterly, yearly], recurring_amount, status).
  • ContractLine: Vertragspositionen und Serviceleistungen.
  • RentalOrder: Mietvorgang (Felder: id, order_number, customer_id, asset_id, start_date, end_date, daily_rate, deposit_amount, checkout_status, checkin_status).
  • RentalInspection: Protokoll der Aus- und Rückgabe mit Fotos, Betriebsstunden und Unterschrift.

2. Das Capability-Register

  • cap:contracts.contract.create: Neuanlage eines Vertrags.
  • cap:contracts.contract.generate_period_invoice: Erzeugung der zyklischen Rechnung für eine Periode.
  • cap:contracts.contract.terminate: Erfassung einer ordentlichen oder außerordentlichen Kündigung.
  • cap:rental.rental_order.checkout: Ausgabe des Mietgeräts mit Übergabeprotokoll.
  • cap:rental.rental_order.checkin: Rücknahme des Mietgeräts mit Schadensprüfung.
  • cap:rental.rental_order.reconcile_deposit: Abrechnung und Rückerstattung der Kaution.

3. Der Gateway gw:rental_checkout@v1 und gw:contract_billing@v1

  • gw:rental_checkout@v1: Prüft Kautionsstellung, Gerätezustand und Kundensignatur vor Freigabe.
  • gw:contract_billing@v1: Garantiert, dass jede Abrechnungsperiode pro Vertrag genau einmal abgerechnet wird.

4. Statusmodelle

  • Vertrag: draft ➔ active ➔ notice_given (Gekündigt) ➔ expired (Beendet) oder terminated.
  • Mietgerät: available ➔ reserved ➔ rented ➔ returned_inspection ➔ cleaning_maintenance.
🤖

KI-Consultant Leitfaden: Customizing- & No-Code-Konzept (Soll-Ist-Synthese)

AI Solution Architect Blueprint

KI-Consultant Blueprint: Customizing & No-Code Architektur

Anleitung für Solution Architects zur Einrichtung von Vertrags- und Mietmodellen.

1. Kundenanforderungsanalyse

  • Welche Abrechnungszyklen nutzt das Unternehmen (Monatsanfang, Monatsende, Quartal)?
  • Werden Kautionen erhoben und wie erfolgt die Rückabwicklung?
  • Welche Zählerstände (Betriebsstunden, Impulse, Seiten) fließen in variable Gebühren ein?

2. No-Code Zusatzfelder (Custom Fields)

Im No-Code Studio (/semantic/customizing):

  • Auf Contract:
    • sla_response_time_hours (Ganzzahl): Garantierte Entstörzeit in Stunden.
    • indexation_clause (Auswahlliste: Ohne, Verbraucherpreisindex VPI, 3% jährlich): Für automatische Preisanpassungen.
  • Auf RentalOrder:
    • fuel_level_at_checkout (Auswahlliste: Voll, 3/4, 1/2, 1/4, Leer): Vermeidet Streitigkeiten bei Kraftstoffrückgabe.

3. No-Code Workflow Canvas DAGs

Blueprint A: Zyklischer Abrechnungslauf am Monatsersten
  • Trigger-Node: Scheduled Cron (0 2 1 * *) – Monatlich um 02:00 Uhr.
  • Condition-Node: contract.status == 'active' AND contract.next_billing_date <= current_date.
  • Action-Node: Rufe cap:contracts.contract.generate_period_invoice auf und sende E-Rechnung an Kunden.
Blueprint B: Fristenwächter 60 Tage vor Kündigungsstichtag
  • Trigger-Node: Täglicher Fristenscan.
  • Condition-Node: contract.notice_deadline_date - current_date == 60_days.
  • Action-Node: Erzeuge CRM-Opportunity: Vertragsverlängerung & Upselling verhandeln mit Zuweisung an Account Manager.

📚 Operative Prozessbegriffe & Transaktionsschnittstellen

Zentrale Fachbegriffe im Prozesszusammenhang (Operatives Modell)
Dauerschuldverhältnis
Langfristiger Vertrag mit fortlaufender Leistungserbringung und periodischer Abrechnung.
Mietgeräte-Check-In/Out
Strukturierte physische Ausgabe und Rücknahme von Investitionsgütern mit Zustandsprotokoll.
Kautionsverwaltung
Treuhänderische Verwahrung von Sicherheitsleistungen und deren Endabrechnung.
Kündigungsstichtag
Letzter Tag, an dem eine Kündigung zugehen muss, um eine automatische Verlängerung abzuwenden.
Recurring Billing
Vollautomatisierte Erzeugung zyklischer Abonnement- und Mietrechnungen.
📥 Eingänge & Trigger (Inputs)
  • Angenommenes Miet- oder Serviceangebot aus dem Quotes-Modul
  • Zyklische Kalender-Trigger für periodische Abrechnungsläufe
  • Kündigungsschreiben von Kunden per Post oder E-Mail
  • Geräterücklieferung an den Mietstützpunkt
📤 Ausgänge & Arbeitsergebnisse (Outputs)
  • Periodische Ausgangsrechnungen für Mieten und Servicegebühren
  • Rechtssichere Übergabe- und Rücknahmeprotokolle mit Kundensignatur
  • Kautionsabrechnungen und Rücküberweisungsbelege
  • Fristen- und Kündigungsberichte für das Vertriebscontrolling
⚡ Kaskaden & Folgeprozesse (Cascades)
  • checkout_completed -> asset_status_rented: Sperrung des Geräts für andere Mieter
  • billing_cycle_triggered -> invoice_created: Automatischer Rechnungsversand am Monatsersten
  • contract_terminated -> schedule_decommissioning: Planung der Vertragsbeendigung
  • damage_detected_at_checkin -> retain_deposit: Einbehalt der Kaution und Schadensrechnung
🛡️ Nebenprozesse & Resilienz
  • Schadensregulierung bei Beschädigung oder Verlust von Mietgeräten
  • Vertragsanpassungen und Preiserhöhungen nach Verbraucherpreisindex
  • Wartungs- und UVV-Prüfung von Mietgeräten zwischen zwei Vermietungen
  • Mahnwesen bei Zahlungsverzug von Mietkunden mit Gerätesperre
💡 No-Code Checkliste & Praxistipps
  • Standard-Kündigungsfristen und Verlängerungsperioden je Vertragskategorie konfigurieren
  • Kautionshöhen in Abhängigkeit vom Neuwert der Mietgeräte staffeln
  • Prüflisten für Geräteausgabe (Sauberkeit, Zubehör, Tank) im System hinterlegen
  • No-Code Zusatzfelder für SLA-Reaktionszeiten und Wertsicherungsklauseln anlegen

🗄️ Datenmodelle & Felder

ContractAmendments contract_amendments RLS Aktiv
10 Felder / Spalten

Tabelle contract_amendments

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
title VARCHAR(255) Ja * - Feld title
effective_date DATE Nein - Feld effective_date
description TEXT Nein - Feld description
document_id UUID Nein - Feld document_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractBillingRuns contract_billing_runs RLS Aktiv
11 Felder / Spalten

Tabelle contract_billing_runs

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
period_start DATE Ja * - Feld period_start
period_end DATE Ja * - Feld period_end
invoice_id UUID Nein - Feld invoice_id
net_amount NUMERIC(14, 2) Ja * - Feld net_amount
recipient_id UUID Nein - Feld recipient_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractClauses contract_clauses RLS Aktiv
13 Felder / Spalten

Tabelle contract_clauses

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
title VARCHAR(255) Ja * - Feld title
category VARCHAR(64) Nein - Feld category
body TEXT Ja * - Feld body
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ContractCommissions contract_commissions RLS Aktiv
14 Felder / Spalten

Tabelle contract_commissions

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
agent_id UUID Ja * FK ➔ sales_agents.id Feld agent_id
invoice_id UUID Nein - Feld invoice_id
period_start DATE Nein - Feld period_start
period_end DATE Nein - Feld period_end
base_amount NUMERIC(14, 2) Ja * - Feld base_amount
percent NUMERIC(5, 2) Ja * - Feld percent
amount NUMERIC(14, 2) Ja * - Feld amount
status VARCHAR(16) Ja * - Feld status
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractDocumentTemplates contract_document_templates RLS Aktiv
25 Felder / Spalten

Tabelle contract_document_templates

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
tenant_id UUID Nein - Feld tenant_id
source_document_id UUID Nein FK ➔ documents.id Feld source_document_id
variant_group UUID Nein - Feld variant_group
doc_key VARCHAR(64) Ja * - Feld doc_key
country VARCHAR(2) Ja * - Feld country
language VARCHAR(8) Ja * - Feld language
industry VARCHAR(64) Nein - Feld industry
contract_type VARCHAR(32) Ja * - Feld contract_type
title VARCHAR(255) Ja * - Feld title
description TEXT Nein - Feld description
sections JSONB Ja * - Feld sections
variables JSONB Ja * - Feld variables
legal_basis VARCHAR(255) Nein - Feld legal_basis
source_kind VARCHAR(16) Ja * - Feld source_kind
source_url VARCHAR(512) Nein - Feld source_url
source_note VARCHAR(255) Nein - Feld source_note
legal_review_status VARCHAR(24) Ja * - Feld legal_review_status
checksum VARCHAR(64) Ja * - Feld checksum
version INTEGER Ja * - Feld version
sort_order INTEGER Ja * - Feld sort_order
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractDocuments contract_documents RLS Aktiv
8 Felder / Spalten

Tabelle contract_documents

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
document_id UUID Ja * - Feld document_id
relation_type VARCHAR(32) Ja * - Feld relation_type
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractLines contract_lines RLS Aktiv
26 Felder / Spalten

Tabelle contract_lines

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
position INTEGER Ja * - Feld position
line_type VARCHAR(24) Ja * - Feld line_type
product_id UUID Nein FK ➔ products.id Feld product_id
description VARCHAR(255) Ja * - Feld description
quantity NUMERIC(14, 4) Ja * - Feld quantity
unit VARCHAR(32) Ja * - Feld unit
billing_method VARCHAR(24) Ja * - Feld billing_method
billing_unit_id UUID Nein FK ➔ units_of_measure.id Feld billing_unit_id
billing_interval VARCHAR(16) Nein - Feld billing_interval
unit_price NUMERIC(14, 2) Nein - Feld unit_price
discount_percent NUMERIC(5, 2) Ja * - Feld discount_percent
tax_rate NUMERIC(6, 3) Nein - Feld tax_rate
included_quantity NUMERIC(14, 4) Nein - Feld included_quantity
overage_unit_price NUMERIC(14, 2) Nein - Feld overage_unit_price
basis VARCHAR(24) Nein - Feld basis
subject_id UUID Nein - Feld subject_id
start_date DATE Nein - Feld start_date
end_date DATE Nein - Feld end_date
last_billed_at DATE Nein - Feld last_billed_at
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractMilestones contract_milestones RLS Aktiv
16 Felder / Spalten

Tabelle contract_milestones

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
kind VARCHAR(32) Ja * - Feld kind
title VARCHAR(255) Ja * - Feld title
due_date DATE Nein - Feld due_date
status VARCHAR(32) Ja * - Feld status
completed_at DATETIME Nein - Feld completed_at
work_order_id UUID Nein - Feld work_order_id
project_id UUID Nein - Feld project_id
service_plan_id UUID Nein - Feld service_plan_id
amount NUMERIC(14, 2) Nein - Feld amount
note TEXT Nein - Feld note
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractObligations contract_obligations RLS Aktiv
13 Felder / Spalten

Tabelle contract_obligations

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
description TEXT Ja * - Feld description
due_date DATE Nein - Feld due_date
status VARCHAR(32) Ja * - Feld status
responsible_id UUID Nein - Feld responsible_id
reminder_days_before INTEGER Nein - Feld reminder_days_before
amount NUMERIC(14, 2) Nein - Feld amount
notes TEXT Nein - Feld notes
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractParties contract_parties RLS Aktiv
13 Felder / Spalten

Tabelle contract_parties

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
party_type VARCHAR(32) Ja * - Feld party_type
name VARCHAR(255) Ja * - Feld name
vat_id VARCHAR(32) Nein - Feld vat_id
contact_name VARCHAR(255) Nein - Feld contact_name
email VARCHAR(320) Nein - Feld email
phone VARCHAR(64) Nein - Feld phone
address_text TEXT Nein - Feld address_text
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractRebateSettlements contract_rebate_settlements RLS Aktiv
16 Felder / Spalten

Tabelle contract_rebate_settlements

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
period_start DATE Ja * - Feld period_start
period_end DATE Ja * - Feld period_end
revenue_net NUMERIC(14, 2) Ja * - Feld revenue_net
percent NUMERIC(5, 2) Ja * - Feld percent
amount NUMERIC(14, 2) Ja * - Feld amount
credit_note_id UUID Nein - Feld credit_note_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ContractReminders contract_reminders RLS Aktiv
9 Felder / Spalten

Tabelle contract_reminders

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
reminder_date DATE Ja * - Feld reminder_date
reminder_type VARCHAR(32) Ja * - Feld reminder_type
sent_at DATETIME Nein - Feld sent_at
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractRenewals contract_renewals RLS Aktiv
10 Felder / Spalten

Tabelle contract_renewals

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
previous_end_date DATE Nein - Feld previous_end_date
new_end_date DATE Nein - Feld new_end_date
notice_sent_at DATETIME Nein - Feld notice_sent_at
renewed_at DATETIME Nein - Feld renewed_at
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractScopeItems contract_scope_items RLS Aktiv
16 Felder / Spalten

Tabelle contract_scope_items

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
item_type VARCHAR(16) Ja * - Feld item_type
product_id UUID Nein FK ➔ products.id Feld product_id
category_id UUID Nein FK ➔ product_categories.id Feld category_id
label VARCHAR(255) Nein - Feld label
mode VARCHAR(8) Ja * - Feld mode
note TEXT Nein - Feld note
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ContractServicePlans contract_service_plans RLS Aktiv
17 Felder / Spalten

Tabelle contract_service_plans

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
name VARCHAR(255) Ja * - Feld name
subject_id UUID Nein - Feld subject_id
interval_months INTEGER Ja * - Feld interval_months
lead_days INTEGER Ja * - Feld lead_days
next_due_date DATE Ja * - Feld next_due_date
last_generated_for DATE Nein - Feld last_generated_for
order_type VARCHAR(32) Ja * - Feld order_type
work_order_id UUID Nein - Feld work_order_id
billable BOOLEAN Ja * - Feld billable
estimated_hours NUMERIC(6, 2) Nein - Feld estimated_hours
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractStorageAreas contract_storage_areas RLS Aktiv
20 Felder / Spalten

Tabelle contract_storage_areas

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
location_id UUID Ja * FK ➔ locations.id Feld location_id
stock_owner VARCHAR(16) Ja * - Feld stock_owner
policy VARCHAR(16) Ja * - Feld policy
capacity_qty NUMERIC(14, 4) Nein - Feld capacity_qty
capacity_unit VARCHAR(16) Nein - Feld capacity_unit
valid_from DATE Nein - Feld valid_from
valid_until DATE Nein - Feld valid_until
in_route_id UUID Nein FK ➔ warehouse_routes.id Feld in_route_id
out_route_id UUID Nein FK ➔ warehouse_routes.id Feld out_route_id
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ContractSubjects contract_subjects RLS Aktiv
19 Felder / Spalten

Tabelle contract_subjects

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
subject_type VARCHAR(16) Ja * - Feld subject_type
role VARCHAR(16) Ja * - Feld role
asset_id UUID Nein FK ➔ assets.id Feld asset_id
name VARCHAR(255) Ja * - Feld name
address TEXT Nein - Feld address
unit_no VARCHAR(64) Nein - Feld unit_no
area_sqm NUMERIC(10, 2) Nein - Feld area_sqm
rent_amount NUMERIC(14, 2) Nein - Feld rent_amount
service_charges NUMERIC(14, 2) Nein - Feld service_charges
deposit NUMERIC(14, 2) Nein - Feld deposit
tax_rate NUMERIC(6, 3) Nein - Feld tax_rate
attributes JSONB Ja * - Feld attributes
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ContractTemplateDrafts contract_template_drafts RLS Aktiv
22 Felder / Spalten

Tabelle contract_template_drafts

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
template_id UUID Nein FK ➔ contract_document_templates.id Feld template_id
template_version INTEGER Ja * - Feld template_version
template_snapshot JSONB Ja * - Feld template_snapshot
values JSONB Ja * - Feld values
rendered_text TEXT Ja * - Feld rendered_text
checksum VARCHAR(64) Ja * - Feld checksum
sensitive BOOLEAN Ja * - Feld sensitive
status VARCHAR(16) Ja * - Feld status
customer_id UUID Nein FK ➔ customers.id Feld customer_id
employee_id UUID Nein FK ➔ organization_users.id Feld employee_id
document_id UUID Nein FK ➔ documents.id Feld document_id
contract_id UUID Nein FK ➔ contracts.id Feld contract_id
document_stale BOOLEAN Ja * - Feld document_stale
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ContractTemplates contract_templates RLS Aktiv
15 Felder / Spalten

Tabelle contract_templates

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
key VARCHAR(64) Ja * - Feld key
name VARCHAR(255) Ja * - Feld name
scope VARCHAR(32) Ja * - Feld scope
description TEXT Nein - Feld description
config JSONB Ja * - Feld config
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ContractTerms contract_terms RLS Aktiv
21 Felder / Spalten

Tabelle contract_terms

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
term_type VARCHAR(24) Ja * - Feld term_type
product_id UUID Nein FK ➔ products.id Feld product_id
category_id UUID Nein FK ➔ product_categories.id Feld category_id
params JSONB Ja * - Feld params
valid_from DATE Nein - Feld valid_from
valid_until DATE Nein - Feld valid_until
active BOOLEAN Ja * - Feld active
note TEXT Nein - Feld note
source_clause_ref VARCHAR(64) Nein - Feld source_clause_ref
source_document_id UUID Nein - Feld source_document_id
source_workflow_run_id UUID Nein - Feld source_workflow_run_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ContractUsageEntries contract_usage_entries RLS Aktiv
14 Felder / Spalten

Tabelle contract_usage_entries

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_id UUID Ja * FK ➔ contracts.id Feld contract_id
line_id UUID Nein - Feld line_id
product_id UUID Nein - Feld product_id
occurred_on DATE Ja * - Feld occurred_on
quantity NUMERIC(14, 4) Ja * - Feld quantity
description VARCHAR(255) Nein - Feld description
source_type VARCHAR(32) Ja * - Feld source_type
source_id UUID Nein - Feld source_id
billed_run_id UUID Nein - Feld billed_run_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
Contracts contracts RLS Aktiv
65 Felder / Spalten

Tabelle contracts

Feldname Datentyp Pflicht Schlüssel Fachliche Bedeutung
contract_number VARCHAR(64) Nein - Feld contract_number
title VARCHAR(255) Ja * - Feld title
status VARCHAR(48) Ja * - Feld status
contract_type VARCHAR(48) Ja * - Feld contract_type
currency VARCHAR(3) Ja * - Feld currency
total_value NUMERIC(14, 2) Nein - Feld total_value
start_date DATE Nein - Feld start_date
end_date DATE Nein - Feld end_date
renewal_type VARCHAR(48) Ja * - Feld renewal_type
renewal_notice_days INTEGER Nein - Feld renewal_notice_days
termination_notice_days INTEGER Nein - Feld termination_notice_days
minimum_term_months INTEGER Nein - Feld minimum_term_months
terms TEXT Nein - Feld terms
notes TEXT Nein - Feld notes
billing_interval VARCHAR(32) Nein - Feld billing_interval
billing_amount NUMERIC(14, 2) Nein - Feld billing_amount
next_billing_date DATE Nein - Feld next_billing_date
owner_id UUID Nein - Feld owner_id
customer_id UUID Nein FK ➔ customers.id Feld customer_id
supplier_id UUID Nein FK ➔ suppliers.id Feld supplier_id
counterparty_id UUID Nein - Feld counterparty_id
counterparty_role VARCHAR(32) Nein - Feld counterparty_role
document_id UUID Nein - Feld document_id
confidence NUMERIC(4, 3) Nein - Feld confidence
scope VARCHAR(32) Ja * - Feld scope
contract_subtype VARCHAR(24) Nein - Feld contract_subtype
template_key VARCHAR(64) Nein - Feld template_key
parent_contract_id UUID Nein FK ➔ contracts.id Feld parent_contract_id
pricelist_id UUID Nein FK ➔ pricelists.id Feld pricelist_id
billing_mode VARCHAR(16) Ja * - Feld billing_mode
agent_id UUID Nein FK ➔ sales_agents.id Feld agent_id
agent_commission_percent NUMERIC(5, 2) Nein - Feld agent_commission_percent
agent_markup_percent NUMERIC(5, 2) Nein - Feld agent_markup_percent
invoice_policy VARCHAR(16) Ja * - Feld invoice_policy
billing_anchor_day INTEGER Nein - Feld billing_anchor_day
renewal_term_months INTEGER Nein - Feld renewal_term_months
commitment_value NUMERIC(14, 2) Nein - Feld commitment_value
price_adjustment_percent NUMERIC(6, 3) Nein - Feld price_adjustment_percent
price_adjustment_interval_months INTEGER Nein - Feld price_adjustment_interval_months
next_price_adjustment_date DATE Nein - Feld next_price_adjustment_date
payment_terms VARCHAR(128) Nein - Feld payment_terms
payment_term_code VARCHAR(32) Nein - Feld payment_term_code
cost_center VARCHAR(64) Nein - Feld cost_center
project_id UUID Nein - Feld project_id
attributes JSONB Ja * - Feld attributes
auto_invoice_mode VARCHAR(16) Ja * - Feld auto_invoice_mode
invoice_lead_days INTEGER Ja * - Feld invoice_lead_days
payment_method VARCHAR(16) Ja * - Feld payment_method
mandate_reference VARCHAR(64) Nein - Feld mandate_reference
mandate_date DATE Nein - Feld mandate_date
paused_from DATE Nein - Feld paused_from
paused_until DATE Nein - Feld paused_until
pause_reason VARCHAR(32) Nein - Feld pause_reason
free_until DATE Nein - Feld free_until
auto_pause_dunning_level INTEGER Nein - Feld auto_pause_dunning_level
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
deleted_at DATETIME Nein - Feld deleted_at

🔌 Einstiegspunkte (UI & APIs)

Art Methode Endpunkt / Pfad Titel & Zweck Berechtigung
⚡ REST API DELETE /api/v1/contract-clauses/{clause_id}
delete_clause
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API DELETE /api/v1/contract-control/{contract_id}/scope/{item_id}
remove_scope
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API DELETE /api/v1/contract-control/{contract_id}/terms/{term_id}
delete_term
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API DELETE /api/v1/contracts/{contract_id}
delete_contract
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API DELETE /api/v1/contracts/{contract_id}/lines/{line_id}
delete_line
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API DELETE /api/v1/contracts/{contract_id}/obligations/{obligation_id}
delete_contract_obligation
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API DELETE /api/v1/contracts/{contract_id}/service-plans/{plan_id}
remove_plan
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API DELETE /api/v1/contracts/{contract_id}/storage/areas/{location_id}
release_area
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API DELETE /api/v1/contracts/{contract_id}/subjects/{subject_id}
remove_subject
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API GET /api/v1/contract-clauses
list_clauses
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contract-control/{contract_id}
overview
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contract-control/{contract_id}/check
check
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contract-control/{contract_id}/rebates
rebates
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts
list_contracts
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/billing-options
billing_options
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/scenarios
scenarios
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/storage/overview
storage_overview
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/tax-rates
tax_rates
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/warehouse-routes
warehouse_routes
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}
get_contract
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/amendments
list_contract_amendments
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/billing-preview
billing_preview
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/documents
list_contract_documents
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/invoices
get_contract_invoices
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/obligations
list_contract_obligations
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/renewals
list_contract_renewals
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/semantic-attributes
contract_semantic_attributes
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/storage/articles
storage_articles
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/storage/orders
storage_orders
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/storage/stock
storage_stock
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/contracts/{contract_id}/workspace
workspace
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /api/v1/sales-agents
list_agents
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts
contracts_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts/new
contract_create_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts/storage
contract_storage_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts/templates
contract_templates_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts/wizard
contract_wizard_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts/{contract_id}
contract_detail_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts/{contract_id}/edit
contract_detail_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts/{contract_id}/terms
contract_terms_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /contracts/{contract_id}/workspace
contract_workspace_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /portal/{slug}/vertraege
contracts_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /portal/{slug}/vertraege/{contract_id}/dokument
contract_document_download
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /sales-agents
sales_agents_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /sales-agents/new
sales_agents_new_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API GET /sales-agents/{agent_id}/edit
sales_agents_edit_page
Semantic binding: inventory_only; mutation=False
contracts
⚡ REST API PATCH /api/v1/contracts/commissions/{commission_id}
commission_status
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API PATCH /api/v1/contracts/{contract_id}
update_contract
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API PATCH /api/v1/contracts/{contract_id}/commercial
update_commercial
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API PATCH /api/v1/contracts/{contract_id}/lines/{line_id}
patch_line
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API PATCH /api/v1/contracts/{contract_id}/obligations/{obligation_id}
update_contract_obligation
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API PATCH /api/v1/sales-agents/{agent_id}
update_agent
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-clauses
create_clause
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/agb-policies
propose_agb_policies_endpoint
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/policy-releases/{release_id}/activate
activate_policy_release
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/apply-clauses
apply_contract_clauses
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/gateways/billing
gateway_billing
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/gateways/call-off
gateway_call_off
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/gateways/return
gateway_return
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/gateways/service-orders
gateway_service_orders
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/gateways/warranty
gateway_warranty
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/policy-package
propose_policy_package
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/propose-workflow
propose_contract_workflow
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/rebates/settle
settle_rebate
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/scope
add_scope
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-control/{contract_id}/terms
add_term
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contract-templates
save_template
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts
create_contract
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/from-template
from_template
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/run-automation
run_automation
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/storage/orders/{order_id}/cancel
storage_order_cancel
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/storage/orders/{order_id}/post
storage_order_post
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/trigger-recurring-billing
trigger_recurring_billing
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/amendments
create_contract_amendment
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/bill-now
bill_now
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/call-off
call_off
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/conclude
conclude_contract
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/consignment/replenish
consignment_replenish
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/consignment/withdraw
consignment_withdraw
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/generate-invoice
generate_contract_invoice
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/lines
add_line
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/obligations
create_contract_obligation
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/price-adjustment/apply
apply_adjustment
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/promote-intake-attributes
promote_intake_attributes
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/renew
renew_contract
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/save-as-template
save_as_template
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/service-plans
add_plan
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/service-plans/{plan_id}/generate
generate_plan
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/settle-supplier
settle_supplier
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/storage/areas
assign_area
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/storage/articles
storage_article_create
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/storage/consume
storage_consume
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/storage/count
storage_count
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/storage/orders
storage_order_create
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/subjects
add_subject
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/terminate
terminate_contract
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/upload-document
upload_contract_document
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/contracts/{contract_id}/usage
add_usage
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /api/v1/sales-agents
create_agent
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API POST /portal/{slug}/vertraege/{contract_id}/kuendigen
contract_termination_request
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API PUT /api/v1/contract-control/{contract_id}/terms/{term_id}
update_term
Semantic binding: operator_surface; mutation=True
contracts
⚡ REST API PUT /api/v1/contracts/{contract_id}/semantic-attributes/{field_key}
set_contract_semantic_attribute
Semantic binding: operator_surface; mutation=True
contracts

🛡️ Regulatorik & Compliance

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • BGB Vertragsrecht
  • DSGVO Art. 28 (AVV-Fristen)
  • GoBD Aufbewahrungspflichten
Verknüpfte Module:
➔ finance ➔ customers ➔ suppliers