Angebote & Kalkulation
quotes
sales_billing
🛡️ RLS Protected
Angebote & Kalkulation — aus Code abgeleitete Prozess- und API-Dokumentation.
⚡ Workflows & Lifecycles
Benutzerbefehl: core workflow agent
plan:command_core_workflow_agent
Geprüfter Durable-Plan (durable_plan), Start: manual_command.
Benutzerbefehl: quote agent
plan:command_quote_agent
Geprüfter Durable-Plan (durable_plan), Start: manual_command.
Benutzerbefehl: quote followup agent
plan:command_quote_followup_agent
Geprüfter Durable-Plan (durable_plan), Start: manual_command.
Angebot versendet
plan:quote_followup
Geprüfter Durable-Plan (durable_plan), Start: domain_event.
Angebot
status:quote
Beobachtbare Zustandsmaschine (observable_only). Übergänge hier nicht erzwungen — siehe Service-Validierung.
⚙️ Fachprozesse & Capabilities (System-Fachlogik)
Registrierte Fachoperationen und System-Capabilities dieses Moduls zur Steuerung von Workflows, Kaskaden und KI-Agenten.
| Capability & Schlüssel | Fachliche Bezeichnung | Ausführung / Coverage | Risikostufe & Freigabe | Effekte & Kaskaden |
|---|---|---|---|---|
Agent-Einstieg quote_agent
agent_entry:quote_agent
|
Agent-Einstieg quote_agent
Quelle:
code:module_agent_map
|
manual_entry |
✓ Auto
|
Keine Seiteneffekte deklariert |
Angebot annehmen
capability:accept_quote
Op:
accept_quote
|
Objekt:
quote
Quelle:
code:capability_registry
|
⚙️ Engine |
🔒 Freigabe nötig
Risiko:
business_record
|
|
Angebot annehmen und Auftrag binden
capability:accept_quote_and_create_order
Op:
accept_quote_and_create_order
|
Intent:
fulfil_accepted_quote
Quelle:
code:capability_registry
|
⚙️ Engine |
🔒 Freigabe nötig
Risiko:
business_record
|
|
Angebotsentwurf anlegen
capability:create_quote_draft
Op:
create_quote_draft
|
Objekt:
quote
Quelle:
code:capability_registry
|
⚙️ Engine |
✓ Auto
Risiko:
business_record
|
|
Angebotsentwurf verwerfen
capability:delete_quote_draft
Op:
delete_quote_draft
|
Objekt:
quote
Quelle:
code:capability_registry
|
⚙️ Engine |
✓ Auto
Risiko:
business_record
|
|
Reject Quote
capability:reject_quote
Op:
reject_quote
|
Objekt:
quote
Quelle:
code:capability_registry
|
⚙️ Engine |
✓ Auto
Risiko:
business_record
|
|
Abgelaufene Angebote schließen
capability:sales.quote.expire_batch
Op:
sales.quote.expire_batch
|
Objekt:
quote
Quelle:
code:capability_registry
|
⚙️ Engine |
✓ Auto
Risiko:
business_record
|
|
Send Quote
capability:send_quote
Op:
send_quote
|
Objekt:
quote
Quelle:
code:capability_registry
|
⚙️ Engine |
🔒 Freigabe nötig
Risiko:
external_effect
|
|
Angebotsentwurf bearbeiten
capability:update_quote_draft
Op:
update_quote_draft
|
Objekt:
quote
Quelle:
code:capability_registry
|
⚙️ Engine |
✓ Auto
Risiko:
business_record
|
|
quote: create form
form_surface_anchor:quote.create
|
Objekt:
quote
Quelle:
code:erp_form_surface
|
operator_surface |
✓ Auto
|
Keine Seiteneffekte deklariert |
quote: edit form
form_surface_anchor:quote.edit
|
Objekt:
quote
Quelle:
code:erp_form_surface
|
operator_surface |
✓ Auto
|
Keine Seiteneffekte deklariert |
create quote draft
gateway:create_quote_draft
Op:
create_quote_draft
|
create quote draft
Quelle:
code:engine_facade
|
⚙️ Engine |
✓ Auto
|
Keine Seiteneffekte deklariert |
delete quote draft
gateway:delete_quote_draft
Op:
delete_quote_draft
|
delete quote draft
Quelle:
code:engine_facade
|
⚙️ Engine |
✓ Auto
|
Keine Seiteneffekte deklariert |
portal decide quote
gateway:portal_decide_quote
Op:
portal_decide_quote
|
portal decide quote
Quelle:
code:engine_facade
|
⚙️ Engine |
✓ Auto
|
Keine Seiteneffekte deklariert |
Angebot annehmen und Auftrag binden
gateway:quote_acceptance
Op:
accept_quote_and_create_order
|
Angebot annehmen und Auftrag binden
Quelle:
code:reviewed_gateway
|
⚙️ Engine |
✓ Auto
|
Keine Seiteneffekte deklariert |
quote reject
gateway:quote_reject
Op:
reject_quote
|
quote reject
Quelle:
code:engine_facade
|
⚙️ Engine |
✓ Auto
|
Keine Seiteneffekte deklariert |
quote send
gateway:quote_send
Op:
send_quote
|
quote send
Quelle:
code:engine_facade
|
⚙️ Engine |
✓ Auto
|
Keine Seiteneffekte deklariert |
update quote draft
gateway:update_quote_draft
Op:
update_quote_draft
|
update quote draft
Quelle:
code:engine_facade
|
⚙️ Engine |
✓ Auto
|
Keine Seiteneffekte deklariert |
Benutzerbefehl: core workflow agent
plan:command_core_workflow_agent
|
Benutzerbefehl: core workflow agent
Quelle:
code:reviewed_execution_plan
|
durable_plan |
✓ Auto
|
Keine Seiteneffekte deklariert |
Benutzerbefehl: quote agent
plan:command_quote_agent
|
Benutzerbefehl: quote agent
Quelle:
code:reviewed_execution_plan
|
durable_plan |
✓ Auto
|
Keine Seiteneffekte deklariert |
Benutzerbefehl: quote followup agent
plan:command_quote_followup_agent
|
Benutzerbefehl: quote followup agent
Quelle:
code:reviewed_execution_plan
|
durable_plan |
✓ Auto
|
Keine Seiteneffekte deklariert |
Angebot versendet
plan:quote_followup
|
Angebot versendet
Quelle:
code:reviewed_execution_plan
|
durable_plan |
✓ Auto
|
Keine Seiteneffekte deklariert |
Angebot
status:quote
|
Objekt:
quote
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.
Der durchgängige Businessprozess im Detail (End-to-End Fließtext-Erzählung)
Der durchgängige Angebotsprozess in der betrieblichen Praxis
Die Angebotsphase entscheidet über den wirtschaftlichen Erfolg von Aufträgen. Centurio ERP verbindet präzise Kostenkalkulation mit schnellen Vertriebsworkflows, um wettbewerbsfähige Preise bei gesicherten Deckungsbeiträgen zu gewährleisten.
1. Anfrage-Eingang & Vorgangseröffnung (Inquiry Intake)
Ein Angebotsprozess startet über verschiedene Eingangskanäle:
- Eingangskorb & OCR (
inbox): Eingehende Kundenanfragen per E-Mail oder PDF werden über die OCR- und KI-Pipeline analysiert. Erkannte Artikel, Mengen und Kundenangaben werden automatisch in einen Angebotsentwurf (cap:quotes.quote.create_from_inbox) überführt. - CRM-Opportunity (
crm): Im Rahmen eines Vertriebsprojekts wird aus einer qualifizierten Verkaufschance direkt ein neues Angebot erzeugt (cap:quotes.quote.create). - Portal-Anfrage (
portal): Ein Bestandskunde konfiguriert im B2B-Kundenportal ein Produkt oder fragt Staffelpreise an. - Vorgangskontext: Das System verknüpft das Angebot sofort mit dem Kundenstamm (
customers), zieht hinterlegte Zahlungs- und Lieferbedingungen (z.B. 30 Tage netto, Incoterms DAP) und weist eine fortlaufende, lückenlose Belegnummer aus dem Nummernkreis zu.
2. Vorkalkulation & Kostenermittlung (Pre-Calculation)
Für Standardartikel zieht das System hinterlegte Preislisten und Staffelrabatte heran. Bei auftragsbezogenen Erzeugnissen (Make-to-Order) oder individuellen Projekten wird die integrierte Vorkalkulations-Engine aktiviert:
- Materialkosten (MEK): Das System greift auf die kalkulatorische Stückliste (BOM) zu, multipliziert Einzelmengen mit den aktuellen gleitenden Durchschnittspreisen (GLD) oder den Wiederbeschaffungspreisen aus dem Einkauf und schlägt den Materialgemeinkostenzuschlag (MGK, z.B. 8%) auf.
- Fertigungskosten (FEK): Aus dem Arbeitsplan werden die geplanten Rüstzeiten und Bearbeitungszeiten an den jeweiligen Arbeitsplätzen (
Workstations) ermittelt und mit den hinterlegten Maschinen- und Personalkostenstundensätzen bewertet. Hinzu kommt der Fertigungsgemeinkostenzuschlag (FGK, z.B. 15%). - Fremdleistungen: Geplante externe Schritte (Lohnveredelung, Sonderwerkzeuge, Speditionskosten) werden als Sondereinzelkosten der Fertigung (SEKF) addiert.
- Herstellkosten (HK) & Selbstkosten (SK): $$\text{Herstellkosten} = \text{MEK} + \text{MGK} + \text{FEK} + \text{FGK} + \text{SEKF}$$ $$\text{Selbstkosten} = \text{Herstellkosten} + \text{Verwaltungsgemeinkosten (VwGK)} + \text{Vertriebsgemeinkosten (VtGK)}$$
3. Preisfindung, Deckungsbeitrag & Margenprüfung
Auf Basis der Selbstkosten kalkuliert der Vertriebsmitarbeiter den Angebotspreis:
- Gewinnzuschlag & Zielpreis: Durch Aufschlag einer prozentualen Gewinnmarge oder Vorgabe eines Festpreises entsteht der Netto-Verkaufspreis.
- Deckungsbeitragsrechnung: Das System berechnet in Echtzeit den Deckungsbeitrag I (DB I = Nettoerlös - variable Kosten) und die prozentuale Marge: $$\text{Marge} = \frac{\text{Nettoerlös} - \text{Selbstkosten}}{\text{Nettoerlös}} \times 100$$
- Staffelpreise & Rabatte: Rabattstaffeln je nach Losgröße (z.B. ab 100 Stk. 5%, ab 500 Stk. 10%) werden simuliert und transparent dargestellt.
4. Freigabegates bei Margenunterschreitung (Discount Approval)
Zur Verhinderung unrentabler Aufträge greift die kaufmännische Überwachung:
- Liegt die berechnete Marge über der im Mandanten definierten Zielmarge (z.B. > 20%), kann der Vertriebsmitarbeiter das Angebot sofort finalisieren.
- Verzweigung bei Margenunterschreitung: Gewährt der Vertrieb einen hohen Rabatt, sodass die Marge unter die Schwelle fällt (z.B. 12%), blockiert das System die Versendung. Der Status wechselt auf Wartet auf Freigabe (
waiting_approval). - Über die Capability
cap:quotes.quote.request_approvalwird dem Vertriebsleiter eine Genehmigungsaufgabe vorgelegt. Erst nach digitaler Freigabe wird das Angebot zur Versendung entsperrt.
5. Dokumentenerzeugung, Angebotsbindung & Versand
- PDF-Rendering & E-Rechnungsstandard: Über die Vorlagen-Engine wird das offizielle Angebotsdokument generiert. Es enthält alle Einzelpositionen, Staffelpreise, Lieferzeiten, Zahlungsziele und die Angebotsbindungsfrist (Gültigkeitsdatum nach § 145 BGB).
- Versand: Das Angebot wird direkt aus dem System per E-Mail an den Kunden versandt oder im Kundenportal bereitgestellt (
cap:quotes.quote.send). Der Status wechselt auf Versandt (sent).
6. Nachverfolgung, Verhandlung & Versionierung
- Fristenüberwachung: Das System überwacht das Gültigkeitsdatum. Droht das Angebot abzulaufen, generiert der Wiedervorlage-Dienst eine Aufgabe für den Vertrieb (Follow-up Call).
- Verhandlungsrunden (Versionierung): Verhandelt der Kunde nach, wird das bestehende Angebot nicht überschrieben (Audit-Trail). Stattdessen wird eine neue Revision (v2, v3) erzeugt (
cap:quotes.quote.create_revision), wodurch der gesamte Verhandlungsverlauf historisiert bleibt.
7. Angebotsannahme & Gateway zur Auftragskonvertierung
Entscheidet sich der Kunde für den Kauf:
- Über den geprüften Gateway
gw:quote_acceptance@v1wird das Angebot angenommen (cap:quotes.quote.accept). - Transaktionale Kaskade: Der Gateway prüft die Gültigkeit des Angebots, die Kreditwürdigkeit des Kunden und erzeugt in einer einzigen atomaren Transaktion den rechtsverbindlichen Kundenauftrag (
sales.sales_order) inklusive aller Positionsdetails und reserviert die Kapazitäten. Das Angebot wechselt in den Zustand Angenommen (accepted).
Meta-Fachlogik: Ideologische Blaupause, Soll-Weltbild & Normen
Meta-Fachlogik: Die ideologische Blaupause & das normative Weltbild
Die Meta-Fachlogik der Angebotskalkulation beruht auf betriebswirtschaftlicher Kosten- und Leistungsrechnung (KLR), dem deutschen Vertragsrecht (BGB) und Grundsätzen kaufmännischer Vorsicht.
1. Betriebswirtschaftliche Grundlagen
- Kosten- und Preistheorie: Ein Angebotspreis darf niemals ein reines Bauchgefühl sein. Er muss die Deckung der variablen Kosten garantieren und einen angemessenen Beitrag zu den Fixkosten leisten (Deckungsbeitrag).
- Zuschlagskalkulation (Kalkulationsschema): Das Soll-Modell verlangt die saubere Trennung von Einzelkosten (direkt zurechenbar) und Gemeinkosten (über Betriebsabrechnungsbogen BAB ermittelte Zuschlagssätze für Material, Fertigung, Verwaltung und Vertrieb).
- Zielkostenrechnung (Target Costing): Wenn der Marktpreis feststeht, kehrt sich die Logik um: Vom erzielbaren Marktpreis wird die geforderte Zielrendite abgezogen, um die maximal zulässigen Zielherstellkosten (Allowable Costs) zu definieren.
2. Rechtliche Grundlagen & Standards
- BGB §§ 145–148 (Antrag & Bindungsfrist):
- Ein an einen Kunden gerichtetes Angebot ist rechtlich ein bindender Antrag zur Schließung eines Kauf- oder Werkvertrags.
- Das Soll-Modell erzwingt daher stets eine explizite Bindungsfrist (Gültig bis...). Erfolgt keine Annahme innerhalb dieser Frist, erlischt der Antrag kraft Gesetzes (§ 146 BGB).
- Freizeichnungsklauseln (z.B. freibleibend, solange Vorrat reicht) müssen im Belegtext rechtssicher ausgewiesen werden.
- GoBD-Revisionssicherheit:
- Jede an den Kunden übermittelte Angebotsfassung stellt ein steuerlich relevantes Handelsdokument dar.
- Das Überschreiben oder Löschen versandter Angebote ist unzulässig; es gilt striktes Versionierungsgebot (Audit-Trail).
3. Invarianten des Soll-Modells
- Kein Angebot ohne explizites Gültigkeitsdatum (Angebotsbindung).
- Kein Angebotspreis unterhalb der variablen Grenzkosten ohne schriftliche Sonderfreigabe der Geschäftsführung.
- Versandte Angebote sind schreibgeschützt; Änderungen erzwingen eine neue Revisionsnummer.
- Die Konvertierung in einen Kundenauftrag darf nur einmalig erfolgen (Idempotenz).
Normbezug für quotes
Prüfkatalog Standards-Registry v2026.10.1. Dieser Abschnitt ordnet Prüfreferenzen zu und stellt nicht fest, dass das Modul eine Norm einhält; keine Kataloganforderung ist als PASS bewertet.
Geführte Prüfreferenzen:
apqc-pcf-8.0, APQC Process Classification Framework (PCF) – Cross-Industry, Ausgabe PCF Cross-Industry v8.0 (2026-02-27). Art: reference_process. Nur öffentliche Zusammenfassung. Keine Volltextprüfung. Keine modulspezifische Kataloganforderung. Die Zuordnung bleibt eine Prüfreferenz.iso-9001-2026, ISO 9001:2026 Quality management systems — Requirements, Ausgabe ISO 9001:2026 (6. Ausgabe, 2026-09-16). Art: normative. Volltext liegt nicht vor. Keine Klauselprüfung. Keine modulspezifische Kataloganforderung. Die Zuordnung bleibt eine Prüfreferenz.
Plattformweite Katalogwerke mit Geltungsbereich all (unter anderem WCAG 2.2, EN 301 549 V4.1.1, ISO 9241-110:2020, ISO 9241-210:2019, ISO/IEC 25010:2023, ISO 9001:2026, ISO/IEC 27001:2022, APQC PCF 8.0, DSGVO, EU AI Act) umfassen dieses Modul mit. Wo der Volltext fehlt, bleibt der Zugang ohne Quelle, lizenzpflichtig oder nur als öffentliche Zusammenfassung gekennzeichnet. Auch diese Nennung weist keine eingehaltene Vorgabe nach.
Systemische Fachlogik: Faktische Umsetzung in Centurio ERP & Capabilities
Systemische Fachlogik: Die faktische Umsetzung in Centurio ERP
Die System-Fachlogik dokumentiert die konkrete Umsetzung im Kernmodul quotes.
1. Datenmodelle & Semantische Schicht (ORM)
Quote: Der Angebotskopf (Felder:id,tenant_id,quote_number,version,customer_id,status,valid_until,total_net_amount,total_tax_amount,margin_percent,payment_term_id,currency).QuoteLine: Einzelpositionen (Felder:quote_id,product_id,position_type[standard, service, custom_bom],quantity,unit_price,discount_percent,cost_price,margin_amount).QuoteRevision: Revisionshistorie mit verknüpften PDF-Snapshots.QuoteApprovalRequest: Genehmigungsvorgang bei Margen- oder Rabattüberschreitung.
2. Das Capability-Register
cap:quotes.quote.create: Neuanlage eines Angebots.cap:quotes.quote.create_revision: Erstellung einer Folgerevision (v1 ➔ v2).cap:quotes.quote.calculate_costs: Auslösung der automatischen Vorkalkulation über Stücklisten und Arbeitsplätze.cap:quotes.quote.request_approval: Einsteuern des Angebots in den Genehmigungsworkflow bei Margenunterdeckung.cap:quotes.quote.approve: Autorisierung des Angebots durch den Vertriebsleiter.cap:quotes.quote.send: Versand an den Kunden via E-Mail/Portal mit PDF-Erzeugung.cap:quotes.quote.accept: Akzeptanz und Übergabe an die Auftragsabwicklung.cap:quotes.quote.reject: Kennzeichnung als abgelehnt mit Angabe des Verlustgrunds (Lost Reason).
3. Der Gateway gw:quote_acceptance@v1
Der Annahme-Gateway bindet Angebote an Verkaufsaufträge:
Prüfung Frist ➔ Prüfung Kreditlimit ➔ Angebot sperren ➔ SalesOrder generieren ➔ Outbox-Signal
- Validierung: Prüft, ob
valid_until >= current_dateund ob der Kunde ein offenes Kreditlimit besitzt. - Statuswechsel:
Quote.status = 'accepted'. - Auftragserzeugung: Erzeugt
SalesOrdermit denselben Positionen, Preisen und Konditionen. - Signal: Feuert
QUOTE_ACCEPTED_EVENTzur Benachrichtigung des Lager- und Produktionsdisponenten.
4. Statusmodelle
draft (Entwurf) ➔ waiting_approval (Margenprüfung) ➔ approved (Freigegeben) ➔ sent (Versandt) ➔ accepted (Angenommen / Auftrag erzeugt), rejected (Abgelehnt) oder expired (Abgelaufen).
KI-Consultant Leitfaden: Customizing- & No-Code-Konzept (Soll-Ist-Synthese)
KI-Consultant Blueprint: Customizing & No-Code Architektur
Anleitung für Solution Architects zur Anpassung der Angebotsprozesse an spezifische Kundenbranchen.
1. Kundenanforderungsanalyse
- Welche Margengrenzen gelten im Unternehmen (z.B. Mindestmarge Handelsware 15%, Sonderbau 28%)?
- Sollen Rohstoff-Preisanpassungsklauseln (z.B. Metallteuerungszuschlag DEL-Notiz) dynamisch eingebunden werden?
- Welche Freigabestufen existieren (Vertriebsleiter bis 10.000 €, CFO ab 50.000 €)?
2. No-Code Zusatzfelder (Custom Fields)
Im No-Code Studio (/semantic/customizing):
- Auf
Quote:lost_reason_category(Auswahlliste: Preis zu hoch, Lieferzeit zu lang, Mitbewerber gewählt, Projekt storniert): Für die Vertriebs-Verlustanalyse.competitor_name(Text): Name des Mitbewerbers bei verlorenem Angebot.financing_option(Auswahlliste: Kauf, Mietkauf, Leasing): Steuert die Folgekaskade zurentalodercontracts.
- Auf
QuoteLine:raw_material_surcharge(Währungsbetrag): Teuerungszuschlag für Kupfer/Aluminium.guaranteed_delivery_weeks(Ganzzahl): Verbindlich zugesagte Lieferzeit in Wochen.
3. No-Code Workflow Canvas DAGs
Blueprint A: Mehrstufiges Margen-Freigabegate (Margin Approval DAG)
- Trigger-Node:
cap:quotes.quote.calculate_costswird ausgeführt. - Condition-Node A:
quote.margin_percent < 15.0 AND quote.total_net_amount <= 25000.- Action A: Zuweisung einer Freigabeaufgabe an die Rolle Vertriebsleiter.
- Condition-Node B:
quote.margin_percent < 10.0 OR quote.total_net_amount > 25000.- Action B: Vier-Augen-Freigabe erforderlich: Freigabeaufgabe an Geschäftsführung (CFO).
Blueprint B: Automatisches Follow-Up bei Angebotsfristen
- Trigger-Node: Scheduled Cron (
0 8 * * 1-5) – Täglicher Fristenscan. - Condition-Node:
quote.status == 'sent' AND quote.valid_until - current_date == 3_days. - Action-Node: Erzeuge eine Vertriebsaufgabe: Kunde kontaktieren vor Fristablauf und sende Erinnerungs-E-Mail an Kunden.
📚 Operative Prozessbegriffe & Transaktionsschnittstellen
- Kundenanfrage per E-Mail oder Upload im Posteingang (OCR/Inbox)
- Vertriebschance (Opportunity) aus dem CRM-Modul
- Preisanfrage über das B2B-Kundenportal
- Ausschreibungsunterlagen mit Spezifikationskatalog
- Rechtssicheres Angebotsdokument im PDF-Format mit Bindungsfrist
- Vorkalkulationsnachweis mit Deckungsbeitrags- und Margenberechnung
- Revisionsprotokoll bei mehrstufigen Preisverhandlungen
- Konvertierter Verkaufsauftrag bei Annahme durch den Kunden
- quote_accepted -> sales_order_created: Sofortige Erzeugung des Kundenauftrags
- quote_approved -> send_notification_to_sales: Benachrichtigung über erteilte Rabattfreigabe
- quote_expired -> update_crm_opportunity: Statusanpassung der Opportunity auf geschlossen-verloren
- quote_sent -> schedule_followup_task: Automatische Wiedervorlage für den Vertrieb
- Sonderfreigabe bei Margenunterdeckung durch den Vertriebsleiter
- Währungsumrechnung bei Angeboten in Fremdwährungen mit Kurssicherung
- Kreditlimitprüfung des Kunden vor Abgabe großvolumiger Angebote
- Klärung technischer Machbarkeiten mit Konstruktion und Arbeitsvorbereitung
- Mindestmargen je Artikelkategorie in den Systemeinstellungen hinterlegen
- Freigabestufen für Rabatte (Mitarbeiter, Teamleiter, Geschäftsführer) konfigurieren
- Standard-Gültigkeitsdauer (z.B. 14 oder 30 Tage) für Angebote definieren
- No-Code Zusatzfelder für Verlustgründe und Mitbewerber auf Quote anlegen
🗄️ Data Models & Fields
🔌 Entry Points (UI & APIs)
| Art | Method | Endpoint / Path | Titel & Zweck | Required Role |
|---|---|---|---|---|
| ⚡ REST API | DELETE | /api/v1/quotes/templates/{template_id} |
delete_quote_template
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | DELETE | /api/v1/quotes/{quote_id} |
delete_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | DELETE | /api/v1/quotes/{quote_id}/items/{item_id:uuid} |
delete_quote_item
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | GET | /api/v1/gaeb/documents |
list_gaeb_documents
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /api/v1/gaeb/documents/{document_id} |
get_gaeb_document
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /api/v1/gaeb/documents/{document_id}/export-x84 |
export_gaeb_x84
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /api/v1/quotes |
list_quotes
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /api/v1/quotes/templates |
list_quote_templates
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /api/v1/quotes/templates/{template_id} |
get_quote_template
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /api/v1/quotes/{quote_id} |
get_quote
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /api/v1/quotes/{quote_id}/conversion-options |
quote_conversion_options
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /api/v1/quotes/{quote_id}/pdf |
get_quote_pdf
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /gaeb |
gaeb_list_page
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /gaeb/{document_id} |
gaeb_detail_page
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /portal/{slug}/angebote |
quotes_page
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /quotes |
quotes_page
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /quotes/new |
quote_create_page
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /quotes/templates |
quote_templates_page
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | GET | /quotes/{quote_id} |
quote_detail_page
Semantic binding: inventory_only; mutation=False
|
quotes
|
| ⚡ REST API | PATCH | /api/v1/quotes/templates/{template_id} |
update_quote_template
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | PATCH | /api/v1/quotes/{quote_id} |
update_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | PATCH | /api/v1/quotes/{quote_id}/items/reorder |
reorder_quote_items
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | PATCH | /api/v1/quotes/{quote_id}/items/{item_id:uuid} |
update_quote_item
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/gaeb/documents/{document_id}/convert-to-quote |
convert_gaeb_to_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/gaeb/documents/{document_id}/prices |
update_gaeb_prices
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/gaeb/upload |
upload_gaeb_file
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes |
create_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/templates |
create_quote_template
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/{quote_id}/accept |
accept_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/{quote_id}/convert-to-project |
convert_quote_to_project
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/{quote_id}/convert-to-workorder |
convert_quote_to_workorder
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/{quote_id}/create-invoice |
create_invoice_from_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/{quote_id}/escalate-ticket |
escalate_quote_to_ticket
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/{quote_id}/items |
add_quote_item
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/{quote_id}/reject |
reject_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /api/v1/quotes/{quote_id}/send |
send_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /gaeb/upload |
web_upload_gaeb
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /gaeb/{document_id}/convert-quote |
web_convert_to_quote
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /gaeb/{document_id}/prices |
web_update_prices
Semantic binding: operator_surface; mutation=True
|
quotes
|
| ⚡ REST API | POST | /portal/{slug}/angebote/{quote_id}/entscheiden |
quote_decide
Semantic binding: operator_surface; mutation=True
|
quotes
|
🛡️ Regulatory & Compliance
Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:
- GoBD Nachvollziehbarkeit
- Mandanten-Isolation (PostgreSQL RLS)