🚚
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 & Lebenszyklen (2)
🗄️ Datenmodelle & Felder (2)
🔌 Einstiegspunkte (UI & APIs) (24)
🛡️ Regulatorik & Compliance
⚡ Workflows & Lebenszyklen
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
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
🗄️ Datenmodelle & Felder
🔌 Einstiegspunkte (UI & APIs)
| Art | Methode | Endpunkt / Pfad | Titel & Zweck | Berechtigung |
|---|---|---|---|---|
| ⚡ 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
|
🛡️ Regulatorik & Compliance
Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:
- UStG §25b (Innergemeinschaftliche Dreiecksgeschäfte)
- GoBD (Fakturierung erst nach Leistungserbringung)
Verknüpfte Module: