Centurio System- & Moduldokumentation (CH)
🏛️ Plattform-Architektur 🔑 Login
🏠 Alli Modul / sales_billing / Streckengeschäft (Dropshipping)
🚚

Streckengeschäft (Dropshipping)

dropship sales_billing 🛡️ RLS Protected

Direktbelieferung vom Lieferanten an den Endkunden, Lieferanten-PO-Generierung und Fakturierungsfreigabe-Sperre.

Fachliche Bestimmung: Bildet echte Dreiecks- und Streckengeschäfte nahtlos in Einkauf und Verkauf ab. Beim Annehmen eines Angebots mit Streckenpositionen wird automatisch eine Einkaufsbestellung an den Lieferanten mit der Lieferadresse des Kunden generiert. Gleichzeitig wird die Kundenrechnung für diese Position durch ein Billing Release Gate gesperrt, bis der physische Zustellnachweis (Proof of Delivery / Tracking) vorliegt.

⚡ Workflows & Läbenszykle

Strecken-Lebenszyklus & Fakturasperre dropship_lifecycle

Kaufmännischer und logistischer Ablauf des Streckengeschäfts ohne Zwischenlagerung.

sequenceDiagram Customer->>ERP: Bestellt Artikel (Route: Dropship) ERP->>Supplier: PO (Lieferadresse: Kunde, Typ: dropship) Note over ERP: billing_released = False (Fakturasperre) Supplier->>Customer: Liefert Ware direkt aus Supplier-->>ERP: Sendungsnummer / Zustellnachweis ERP->>ERP: Status = delivered & billing_released = True ERP->>Customer: Ausgangsrechnung wird generiert
1. ROUTE_DETECTION
Routenerkennung
resolve_route ermittelt Streckengeschäft anhand von Produktkategorie oder Positions-Override.
Aktionen: Lagerbedarf überspringen
2. PURCHASE_ORDER
Bestellgenerierung
DropshipService bündelt Positionen nach Lieferant und erzeugt PO mit procurement_type='dropship'.
Aktionen: Lieferanschrift = Kundenadresse
3. TRACKING
Versandüberwachung
Lieferant meldet Tracking-Nummer und Versanddienstleister.
Aktionen: Status 'in_transit'
4. DELIVERY_CONFIRM
Zustellung
Bestätigung der Zustellung beim Kunden (POD).
Aktionen: Status 'delivered'
5. BILLING_RELEASE
Fakturafreigabe
billing_released wird auf True gesetzt; Kundenrechnung wird freigeschaltet.
Aktionen: Ausgangsrechnung erstellbar

🗄️ Datemodell & Fälder

DropshipLines dropship_lines RLS Aktiv
37 Fälder / Spalte

Tabelle dropship_lines

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
item_type VARCHAR(24) Ja * - Feld item_type
item_id UUID Ja * - Feld item_id
quote_id UUID Nein FK ➔ quotes.id Feld quote_id
work_order_id UUID Nein FK ➔ work_orders.id Feld work_order_id
project_id UUID Nein FK ➔ projects.id Feld project_id
customer_id UUID Nein FK ➔ customers.id Feld customer_id
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(16) Ja * - Feld unit
sales_net NUMERIC(14, 2) Ja * - Feld sales_net
supplier_id UUID Nein FK ➔ suppliers.id Feld supplier_id
purchase_id UUID Nein FK ➔ purchases.id Feld purchase_id
purchase_item_id UUID Nein FK ➔ purchase_items.id Feld purchase_item_id
cost_net NUMERIC(14, 2) Nein - Feld cost_net
ship_to TEXT Nein - Feld ship_to
status VARCHAR(16) Ja * - Feld status
carrier VARCHAR(120) Nein - Feld carrier
tracking_number VARCHAR(120) Nein - Feld tracking_number
tracking_url VARCHAR(512) Nein - Feld tracking_url
expected_delivery_date DATE Nein - Feld expected_delivery_date
shipped_at DATETIME Nein - Feld shipped_at
delivered_at DATETIME Nein - Feld delivered_at
proof_document_id UUID Nein FK ➔ documents.id Feld proof_document_id
billing_released BOOLEAN Ja * - Feld billing_released
release_reason VARCHAR(255) Nein - Feld release_reason
chain_review BOOLEAN Ja * - Feld chain_review
issue_note VARCHAR(500) Nein - Feld issue_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
SalesAgents sales_agents RLS Aktiv
18 Fälder / Spalte

Tabelle sales_agents

Feldname Datetyp Pflicht Schlüssel Fachlichi Bedütig
name VARCHAR(255) Ja * - Feld name
email VARCHAR(320) Nein - Feld email
phone VARCHAR(64) Nein - Feld phone
customer_id UUID Nein FK ➔ customers.id Feld customer_id
supplier_id UUID Nein FK ➔ suppliers.id Feld supplier_id
default_commission_percent NUMERIC(5, 2) Nein - Feld default_commission_percent
default_markup_percent NUMERIC(5, 2) Nein - Feld default_markup_percent
notes TEXT Nein - Feld notes
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

🔌 Iistigspünkt (UI & APIs)

Art Method Endpunkt / Pfad Titel & Zweck Berächtigig
⚡ REST API DELETE /api/v1/sales/orders/{order_id}/items/{item_id}
delete_item
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API GET /api/v1/sales/orders
list_sales_orders
Semantic binding: not_evaluated; mutation=False
sales
⚡ REST API GET /api/v1/sales/orders/{order_id}
get_sales_order
Semantic binding: not_evaluated; mutation=False
sales
⚡ REST API GET /api/v1/sales/summary
sales_summary
Semantic binding: not_evaluated; mutation=False
sales
⚡ REST API GET /portal/{slug}/bestellung
order_form
Semantic binding: not_evaluated; mutation=False
sales
⚡ REST API GET /verkauf
sales_page
Semantic binding: not_evaluated; mutation=False
sales
⚡ REST API GET /verkauf/{order_id}
sales_order_page
Semantic binding: not_evaluated; mutation=False
sales
⚡ REST API PATCH /api/v1/sales/orders/{order_id}
update_sales_order
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API PATCH /api/v1/sales/orders/{order_id}/items/{item_id}
update_item
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /api/v1/sales/orders
create_sales_order
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /api/v1/sales/orders/from-quote/{quote_id}
create_from_quote
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /api/v1/sales/orders/{order_id}/cancel
cancel_sales_order
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /api/v1/sales/orders/{order_id}/confirm
confirm_sales_order
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /api/v1/sales/orders/{order_id}/invoice
invoice_sales_order
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /api/v1/sales/orders/{order_id}/items
add_item
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /api/v1/sales/orders/{order_id}/mark-delivered
mark_delivered
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /api/v1/sales/orders/{order_id}/start-delivery
start_delivery
Semantic binding: not_evaluated; mutation=True
sales
⚡ REST API POST /portal/{slug}/bestellung
order_submit
Semantic binding: not_evaluated; mutation=True
sales
🖥️ WEB-UI GET /quotes?status=dropship
Strecken-Filter Angebote
Filtert Angebote mit Streckengeschäft-Positionen
quotes:read
🖥️ WEB-UI GET /purchasing#dropship
Streckengeschäft Einkauf
Dedizierter Einkaufs-Reiter mit Kennzahlen und Tracking
purchasing:read
⚡ REST API GET /api/v1/dropshipping
Streckenpositionen API
Liefert Streckengeschäft-Positionen mit Lieferanten- und Belegdaten
quotes:read
⚡ REST API POST /api/v1/dropshipping/{id}/assign-supplier
Lieferant zuweisen
Weist Lieferant zu und erzeugt Einkaufsbestellung
purchasing:write
⚡ REST API POST /api/v1/dropshipping/{id}/tracking
Tracking hinterlegen
Trägt Trackingnummer ein und setzt Status auf in_transit
purchasing:write
⚡ REST API POST /api/v1/dropshipping/{id}/delivered
Zustellung bestätigen
Setzt Status auf delivered und erteilt Rechnungsfreigabe
purchasing:write

🛡️ Regulatorie & Compliance

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • UStG §25b (Innergemeinschaftliche Dreiecksgeschäfte)
  • GoBD (Fakturierung erst nach Leistungserbringung)
Verknüpfti Modul:
➔ finance ➔ purchasing ➔ catalog ➔ customers ➔ suppliers