Centurio System- & Moduldokumentation (CH)
🏛️ Plattform-Architektur 🔑 Login
🏠 Alli Modul / sales_billing / Angebote & Kalkulation
📘

Angebote & Kalkulation

quotes sales_billing 🛡️ RLS Protected

Angebote & Kalkulation — aus Code abgeleitete Prozess- und API-Dokumentation.

Fachliche Bestimmung: Angebote & Kalkulation — aus Code abgeleitete Prozess- und API-Dokumentation. Erfasst alle registrierten Prozesse, Capabilities, Zustandsmaschinen, APIs und Tabellen für Simulationen und Reviews.

⚡ Workflows & Läbenszykle

Benutzerbefehl: core workflow agent plan:command_core_workflow_agent

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

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

Benutzerbefehl: quote agent plan:command_quote_agent

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

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

Benutzerbefehl: quote followup agent plan:command_quote_followup_agent

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

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

Angebot versendet plan:quote_followup

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

1. quote_followup_agent
quote_followup_agent
{"key": "step_0", "label": "Nachfass-Aufgabe erstellen", "adapter": "agent.execute", "agent": "quote_followup_agent", "condition_fact": "expiring_soon"}
Aktionen: quote_followup_agent

Angebot status:quote

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

1. draft
draft
Status «draft» der Zustandsmaschine Angebot.
2. sent
sent
Status «sent» der Zustandsmaschine Angebot.
3. accepted
accepted
Status «accepted» der Zustandsmaschine Angebot.
4. rejected
rejected
Status «rejected» der Zustandsmaschine Angebot.
5. expired
expired
Status «expired» der Zustandsmaschine Angebot.

🗄️ Datemodell & Fälder

QuoteItems quote_items RLS Aktiv
23 Fälder / Spalte

Tabelle quote_items

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
quote_id UUID Ja * FK ➔ quotes.id Feld quote_id
position INTEGER Ja * - Feld position
product_id UUID Nein FK ➔ products.id Feld product_id
description TEXT Ja * - Feld description
quantity NUMERIC(14, 4) Ja * - Feld quantity
unit VARCHAR(16) Ja * - Feld unit
unit_price NUMERIC(14, 2) Ja * - Feld unit_price
discount_percent NUMERIC(5, 2) Ja * - Feld discount_percent
tax_rate NUMERIC(6, 4) Ja * - Feld tax_rate
net_total NUMERIC(14, 2) Ja * - Feld net_total
gross_total NUMERIC(14, 2) Ja * - Feld gross_total
fulfillment_route VARCHAR(16) Nein - Feld fulfillment_route
ship_to_address TEXT Nein - Feld ship_to_address
semantic_attributes JSONB Nein - Feld semantic_attributes
shop_url TEXT Nein - Feld shop_url
external_sku VARCHAR(128) Nein - Feld external_sku
variant_text VARCHAR(255) Nein - Feld variant_text
shop_supplier_id UUID Nein FK ➔ suppliers.id Feld shop_supplier_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
Quotes quotes RLS Aktiv
36 Fälder / Spalte

Tabelle quotes

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
quote_number VARCHAR(32) Ja * - Feld quote_number
customer_id UUID Nein FK ➔ customers.id Feld customer_id
bill_to_customer_id UUID Nein FK ➔ customers.id Feld bill_to_customer_id
project_id UUID Nein FK ➔ projects.id Feld project_id
status VARCHAR(48) Ja * - Feld status
issue_date DATE Nein - Feld issue_date
valid_until DATE Nein - Feld valid_until
delivery_date DATE Nein - Feld delivery_date
sent_at DATETIME Nein - Feld sent_at
accepted_at DATETIME Nein - Feld accepted_at
currency VARCHAR(3) Ja * - Feld currency
payment_terms VARCHAR(128) Nein - Feld payment_terms
payment_term_code VARCHAR(32) Nein - Feld payment_term_code
customer_reference VARCHAR(128) Nein - Feld customer_reference
delivery_address TEXT Nein - Feld delivery_address
terms TEXT Nein - Feld terms
salesperson_id UUID Nein FK ➔ users.id Feld salesperson_id
signature_required BOOLEAN Ja * - Feld signature_required
subtotal NUMERIC(14, 2) Ja * - Feld subtotal
tax_total NUMERIC(14, 2) Ja * - Feld tax_total
total NUMERIC(14, 2) Ja * - Feld total
notes TEXT Nein - Feld notes
opportunity_id UUID Nein - Feld opportunity_id
portal_kind VARCHAR(24) Nein - Feld portal_kind
portal_order_key UUID Nein - Feld portal_order_key
portal_order_fingerprint VARCHAR(64) Nein - Feld portal_order_fingerprint
contract_id UUID Nein - Feld contract_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

🔌 Iistigspünkt (UI & APIs)

Art Method Endpunkt / Pfad Titel & Zweck Berächtigig
⚡ 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

🛡️ Regulatorie & Compliance

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • GoBD Nachvollziehbarkeit
  • Mandanten-Isolation (PostgreSQL RLS)