Centurio System- & moduldokumentation
🏛️ Plattformarkitektur 🔑 Login
🏠 Alla moduler / sales_billing / Angebote & beräkning
📘

Angebote & beräkning

quotes sales_billing 🛡️ RLS Protected

Angebote & Calculation <unk> Process- och API-dokumentation som härleds från kod.

Fachliche Bestimmung: Angebote & Calculation <unk> Process- och API-dokumentation som är avledda från kod.

⚡ Arbetsflöden och livscykler

Användaruppgift: Core workflow agent plan:command_core_workflow_agent

Tjänststyrd 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

Användaruppgift: plan:command_quote_agent

Tjänststyrd 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

Användarföreskrifter: Uppföljningsagent plan:command_quote_followup_agent

Tjänststyrd 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

Sänd plan:quote_followup

Tjänststyrd varaktighetsplan (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

Förberedande för status:quote

Observable_only_observable_state machine.

1. draft
Förberedande
Status <unk>utkast <unk> av den tillståndsmaskin offert.
2. sent
Sänd
Status <unk>sent<unk> av den tillståndsmaskinen offert.
3. accepted
Antagna
Status <unk>Accepted<unk> av den tillståndsmaskin offert.
4. rejected
Avvisad
Status <unk>avvisad <unk> av den tillståndsmaskin offert.
5. expired
Expirerat
Status <unk>expired<unk> av den tillståndsmaskinen offert.

🗄️ Datamodeller & fält

QuoteItems quote_items RLS Aktiv
23 Fält / kolumner

Tabelle quote_items

Feldname Uppgifter Förpliktelse Schlüssel Arbetsuppgifter
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
34 Fält / kolumner

Tabelle quotes

Feldname Uppgifter Förpliktelse Schlüssel Arbetsuppgifter
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
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

🔌 Inledande punkter (UI & API)

Art Förberedelse Slutpunkt / väg Titel & Zweck Förmåga
⚡ REST API DELETE /api/v1/quotes/templates/{template_id}
delete_quote_template
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API DELETE /api/v1/quotes/{quote_id}
delete_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API DELETE /api/v1/quotes/{quote_id}/items/{item_id:uuid}
delete_quote_item
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API GET /api/v1/gaeb/documents
list_gaeb_documents
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /api/v1/gaeb/documents/{document_id}
get_gaeb_document
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /api/v1/gaeb/documents/{document_id}/export-x84
export_gaeb_x84
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /api/v1/quotes
list_quotes
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /api/v1/quotes/templates
list_quote_templates
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /api/v1/quotes/templates/{template_id}
get_quote_template
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /api/v1/quotes/{quote_id}
get_quote
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /api/v1/quotes/{quote_id}/conversion-options
quote_conversion_options
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /api/v1/quotes/{quote_id}/pdf
get_quote_pdf
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /gaeb
gaeb_list_page
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /gaeb/{document_id}
gaeb_detail_page
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /portal/{slug}/angebote
quotes_page
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /quotes
quotes_page
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /quotes/new
quote_create_page
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API GET /quotes/{quote_id}
quote_detail_page
Semantic binding: not_evaluated; mutation=False
quotes
⚡ REST API PATCH /api/v1/quotes/templates/{template_id}
update_quote_template
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API PATCH /api/v1/quotes/{quote_id}
update_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API PATCH /api/v1/quotes/{quote_id}/items/reorder
reorder_quote_items
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API PATCH /api/v1/quotes/{quote_id}/items/{item_id:uuid}
update_quote_item
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/gaeb/documents/{document_id}/convert-to-quote
convert_gaeb_to_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/gaeb/documents/{document_id}/prices
update_gaeb_prices
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/gaeb/upload
upload_gaeb_file
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes
create_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/templates
create_quote_template
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/{quote_id}/accept
accept_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/{quote_id}/convert-to-project
convert_quote_to_project
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/{quote_id}/convert-to-workorder
convert_quote_to_workorder
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/{quote_id}/create-invoice
create_invoice_from_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/{quote_id}/escalate-ticket
escalate_quote_to_ticket
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/{quote_id}/items
add_quote_item
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/{quote_id}/reject
reject_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /api/v1/quotes/{quote_id}/send
send_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /gaeb/upload
web_upload_gaeb
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /gaeb/{document_id}/convert-quote
web_convert_to_quote
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /gaeb/{document_id}/prices
web_update_prices
Semantic binding: not_evaluated; mutation=True
quotes
⚡ REST API POST /portal/{slug}/angebote/{quote_id}/entscheiden
quote_decide
Semantic binding: not_evaluated; mutation=True
quotes

🛡️ Reglering och efterlevnad

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • Företagsförvaltning
  • En sådan information ska användas för att kunna identifiera en person som är underrättad om att den har en sådan information.