Transmission
Eine Transmission ist die Datenbankentität, die einen vollständigen Punchout-Einkaufsvorgang repräsentiert. Sie wird beim Login angelegt, beim Transfer mit dem Warenkorb-Payload befüllt und kann im Auto-Modus automatisch eine Shopware-Bestellung auslösen.
Entity-Felder
Die Entität ConnectorTransmissionEntity enthält folgende Felder:
| Feld | Typ | Beschreibung |
|---|---|---|
id | string (UUID) | Primärschlüssel |
transmissionNumber | string | Eindeutige Transmission-Nummer |
systemType | ConnectorSystemType | OCI oder CXML |
systemId | string (UUID) | ID des OCI- oder cXML-Systems |
status | ConnectorTransmissionStatus | Aktueller Status (siehe unten) |
hookUrl | string|null | Hook-URL aus dem Login-Request |
additionalFields | array|null | Zusatzfelder aus dem Login-Request |
cartPayload | string|null | JSON-serialisierter Warenkorb beim Transfer |
cartRuleIds | array | Aktive Cart-Rule-IDs beim Transfer |
orderId | string|null (UUID) | ID der erstellten Shopware-Bestellung |
order | OrderEntity|null | Geladene Bestellung (Association) |
transmittedAt | DateTimeInterface|null | Zeitstempel des Transfers |
transmissionCustomers | Collection|null | Zugeordnete Kunden |
Status-Lifecycle
Open
│
├── (Käufer shoppt weiter)
│
├── logout?transferred=1 ──► Transferred ──► [Auto-Modus] ──► OrderCreated
│
├── logout?transferred=0 ──► Closed
│
└── (manuell) ──► Cancelled
| Status | Enum-Wert | Beschreibung |
|---|---|---|
Open | open | Transmission wurde angelegt, Einkauf ist aktiv |
Transferred | transferred | Warenkorb wurde an das Procurement-System übergeben |
Closed | closed | Logout ohne Transfer (Käufer hat abgebrochen) |
Cancelled | cancelled | Manuell abgebrochen |
OrderCreated | order_created | Shopware-Bestellung wurde automatisch erstellt (Auto-Modus) |
TransmissionSubscriber
Der TransmissionSubscriber verwaltet Transmissions vollautomatisch auf Basis von Connector-Events:
| Event | Methode | Aktion |
|---|---|---|
ConnectorSessionLoginEvent / OciSessionLoginEvent / CxmlSessionLoginEvent | onLogin() | Neue Transmission erstellen oder bestehende wiedereröffnen (wenn transmissionId in der Session bereits vorhanden) |
ConnectorTransferEvent | onTransfer() | Warenkorb-Payload in cartPayload speichern |
ConnectorSessionLogoutEvent (transferred=true) | onLogout() | Status → Transferred; bei Auto-Modus: Bestellung erstellen |
ConnectorSessionLogoutEvent (transferred=false) | onLogout() | Status → Closed |
Auto-Modus
Wenn das OCI/cXML-System mit TransmissionMode::Auto konfiguriert ist und ein Transfer stattfindet:
TransmissionSubscriber.onLogout()erkenntisTransferred() === trueTransmissionOrderService::createOrderFromCart()wird aufgerufen- Der Warenkorb aus
cartPayloadwird rekonstruiert – für jede Position wirdConnectorCartLineItemResolveEventgefeuert - Eine Shopware-Bestellung wird aus dem rekonstruierten Warenkorb erstellt
- Transmission-Status →
OrderCreated,orderIdwird gesetzt
hinweis
Für eigene (Plugin-)LineItem-Typen kann ein Listener auf ConnectorCartLineItemResolveEvent reagieren. Siehe Transmission Events.