🚚
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 (4)
🗄️ Datemodell & Fälder (2)
🔌 Iistigspünkt (UI & APIs) (24)
🛡️ Regulatorie & Compliance
⚡ 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
Kundenauftrag → Abwicklung
cascade:business.customer_order.fulfill
Kaskade (review_gated).
1. order
Verkaufsauftrag anlegen / bestätigen
sales
Aktionen: sales.create
2. issue
Warenausgang als Entwurf buchen
inventory
Aktionen: stock.issue.create
3. tour
Auslieferungstour einplanen
logistics
Aktionen: create_tour
4. project
Projekt / Kostenstelle zuordnen
projects
Aktionen: link_project
5. task
Auftrag ausführen / abrechnen
tasks
Aktionen: create_task
Verkaufsauftrag anlegen / bestätigen
cascade_target:business.sales_order.create
Kaskade (review_gated).
1. cascade
Verkaufsauftrag anlegen / bestätigen
Benutzerbefehl: sales order agent
plan:command_sales_order_agent
Geprüfter Durable-Plan (durable_plan), Start: manual_command.
1. sales_order_agent
sales_order_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "sales_order_agent", "condition_fact": null}
Aktionen: sales_order_agent
🗄️ Datemodell & Fälder
🔌 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: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | GET | /api/v1/sales/orders |
list_sales_orders
Semantic binding: inventory_only; mutation=False
|
sales
|
| ⚡ REST API | GET | /api/v1/sales/orders/{order_id} |
get_sales_order
Semantic binding: inventory_only; mutation=False
|
sales
|
| ⚡ REST API | GET | /api/v1/sales/summary |
sales_summary
Semantic binding: inventory_only; mutation=False
|
sales
|
| ⚡ REST API | GET | /portal/{slug}/bestellung |
order_form
Semantic binding: inventory_only; mutation=False
|
sales
|
| ⚡ REST API | GET | /verkauf |
sales_page
Semantic binding: inventory_only; mutation=False
|
sales
|
| ⚡ REST API | GET | /verkauf/{order_id} |
sales_order_page
Semantic binding: inventory_only; mutation=False
|
sales
|
| ⚡ REST API | PATCH | /api/v1/sales/orders/{order_id} |
update_sales_order
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | PATCH | /api/v1/sales/orders/{order_id}/items/{item_id} |
update_item
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /api/v1/sales/orders |
create_sales_order
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /api/v1/sales/orders/from-quote/{quote_id} |
create_from_quote
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /api/v1/sales/orders/{order_id}/cancel |
cancel_sales_order
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /api/v1/sales/orders/{order_id}/confirm |
confirm_sales_order
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /api/v1/sales/orders/{order_id}/invoice |
invoice_sales_order
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /api/v1/sales/orders/{order_id}/items |
add_item
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /api/v1/sales/orders/{order_id}/mark-delivered |
mark_delivered
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /api/v1/sales/orders/{order_id}/start-delivery |
start_delivery
Semantic binding: operator_surface; mutation=True
|
sales
|
| ⚡ REST API | POST | /portal/{slug}/bestellung |
order_submit
Semantic binding: operator_surface; 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: