Zum Hauptinhalt springen

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:

FeldTypBeschreibung
idstring (UUID)Primärschlüssel
transmissionNumberstringEindeutige Transmission-Nummer
systemTypeConnectorSystemTypeOCI oder CXML
systemIdstring (UUID)ID des OCI- oder cXML-Systems
statusConnectorTransmissionStatusAktueller Status (siehe unten)
hookUrlstring|nullHook-URL aus dem Login-Request
additionalFieldsarray|nullZusatzfelder aus dem Login-Request
cartPayloadstring|nullJSON-serialisierter Warenkorb beim Transfer
cartRuleIdsarrayAktive Cart-Rule-IDs beim Transfer
orderIdstring|null (UUID)ID der erstellten Shopware-Bestellung
orderOrderEntity|nullGeladene Bestellung (Association)
transmittedAtDateTimeInterface|nullZeitstempel des Transfers
transmissionCustomersCollection|nullZugeordnete Kunden

Status-Lifecycle

Open

├── (Käufer shoppt weiter)

├── logout?transferred=1 ──► Transferred ──► [Auto-Modus] ──► OrderCreated

├── logout?transferred=0 ──► Closed

└── (manuell) ──► Cancelled
StatusEnum-WertBeschreibung
OpenopenTransmission wurde angelegt, Einkauf ist aktiv
TransferredtransferredWarenkorb wurde an das Procurement-System übergeben
ClosedclosedLogout ohne Transfer (Käufer hat abgebrochen)
CancelledcancelledManuell abgebrochen
OrderCreatedorder_createdShopware-Bestellung wurde automatisch erstellt (Auto-Modus)

TransmissionSubscriber

Der TransmissionSubscriber verwaltet Transmissions vollautomatisch auf Basis von Connector-Events:

EventMethodeAktion
ConnectorSessionLoginEvent / OciSessionLoginEvent / CxmlSessionLoginEventonLogin()Neue Transmission erstellen oder bestehende wiedereröffnen (wenn transmissionId in der Session bereits vorhanden)
ConnectorTransferEventonTransfer()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:

  1. TransmissionSubscriber.onLogout() erkennt isTransferred() === true
  2. TransmissionOrderService::createOrderFromCart() wird aufgerufen
  3. Der Warenkorb aus cartPayload wird rekonstruiert – für jede Position wird ConnectorCartLineItemResolveEvent gefeuert
  4. Eine Shopware-Bestellung wird aus dem rekonstruierten Warenkorb erstellt
  5. Transmission-Status → OrderCreated, orderId wird gesetzt
hinweis

Für eigene (Plugin-)LineItem-Typen kann ein Listener auf ConnectorCartLineItemResolveEvent reagieren. Siehe Transmission Events.