Skip to main content

Transmission

A Transmission is the database entity that represents a complete punchout shopping session. It is created at login, populated with the cart payload on transfer, and can automatically create a Shopware order in Auto mode.


Entity fields

The ConnectorTransmissionEntity has the following fields:

FieldTypeDescription
idstring (UUID)Primary key
transmissionNumberstringUnique transmission number
systemTypeConnectorSystemTypeOCI or CXML
systemIdstring (UUID)ID of the OCI or cXML system
statusConnectorTransmissionStatusCurrent status (see below)
hookUrlstring|nullHook URL from the login request
additionalFieldsarray|nullAdditional fields from the login request
cartPayloadstring|nullJSON-serialised cart at transfer time
cartRuleIdsarrayActive cart rule IDs at transfer time
orderIdstring|null (UUID)ID of the created Shopware order
orderOrderEntity|nullLoaded Shopware order (association)
transmittedAtDateTimeInterface|nullTimestamp of the transfer
transmissionCustomersCollection|nullAssociated customers

Status lifecycle

Open

├── (buyer continues shopping)

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

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

└── (manual) ──► Cancelled
StatusEnum valueDescription
OpenopenTransmission created, shopping is active
TransferredtransferredCart was submitted to the procurement system
ClosedclosedLogout without transfer (buyer cancelled)
CancelledcancelledManually cancelled
OrderCreatedorder_createdShopware order was automatically created (Auto mode)

TransmissionSubscriber

The TransmissionSubscriber manages transmissions automatically based on Connector events:

EventMethodAction
ConnectorSessionLoginEvent / OciSessionLoginEvent / CxmlSessionLoginEventonLogin()Create new transmission or reopen existing one (if transmissionId is already in the session)
ConnectorTransferEventonTransfer()Save cart payload to cartPayload
ConnectorSessionLogoutEvent (transferred=true)onLogout()Status → Transferred; in Auto mode: create order
ConnectorSessionLogoutEvent (transferred=false)onLogout()Status → Closed

Auto mode

When an OCI/cXML system is configured with TransmissionMode::Auto and a transfer occurs:

  1. TransmissionSubscriber.onLogout() detects isTransferred() === true
  2. TransmissionOrderService::createOrderFromCart() is called
  3. The cart is reconstructed from cartPayload — for each line item, ConnectorCartLineItemResolveEvent is fired
  4. A Shopware order is created from the reconstructed cart
  5. Transmission status → OrderCreated, orderId is set
note

For custom (plugin) line item types, a listener on ConnectorCartLineItemResolveEvent can handle reconstruction. See Transmission Events.