Add-On: Coupa-Anbindung

Mit dem Modul "Coupa" kann jeder Shop der PRINT LOUNGE direkt an eine externe Coupa-Instanz angebunden und somit der Bestell- und Freigabevorgang direkt in bestehende Prozesse integriert werden.

Damit eine Anmeldung aus einer Coupa-Instanz heraus möglich ist, muss innerhalb der PRINT LOUNGE auch das Modul "SSO" aktiviert und konfiguriert werden. Hierüber werden die übergebenen Benutzer sicher in dem jeweiligen Shop-System angemeldet. So kann der Zugriff auf unterschiedliche Produkte und Warengruppen direkt über die Administration konfiguriert werden.

Konfiguration des Moduls

Für die Konfiguration der Coupa-Anbindung muss zunächst ein Shared Secret in der Coupa-Instanz angelegt werden. Anschließend stehen die folgenden Einstellungen in der Modulkonfiguration der PRINT LOUNGE zur Verfügung:

Einstellung

Beschreibung

Hostname des COUPA-Systems

Hier muss die externe URL der Coupa-Instanz hinterlegt werden, um bspw. einen Rücksprung in das externe System nach Bestellabschluss zu ermöglichen.

Shared Secret

Der in der Coupa-Instanz erzeugte Shared Secret muss hier hinterlegt werden, um den Zugriff sicher zu authentifizieren.

Hinweis: Diese Einstellung wird in der Datenbank verschlüsselt abgespeichert und wird bei der Verwendung wieder entschlüsselt.

PunchOutOrderMessage-Template

Das PunchOutOrderMessage-Template (POOM) wird nach Bestellabschluss an die Coupa-Instanz übermittelt und sollte alle Informationen zu dem Warenkorb enthalten. 

Dieses Template kann mithilfe von Smarty dynamisch konfiguriert werden, wobei verschiedene Variablen mit Informationen zu der Bestellung zur Verfügung stehen.

phpwide760
{$punchOutSetupRequest->fromCredential->identity} {$punchOutSetupRequest->toCredential->identity} {$punchOutSetupRequest->senderCredential->identity}
{$punchOutSetupRequest->requestBody->buyerCookie} {($order->totalWithVat)|number_format:2:'.':''} {($order->shipping->shippingCost->getAmount()/100)|number_format:4:'.':''} {($order->vat)|number_format:2:'.':''} {foreach from=$orderItems item=orderItem} {$orderItem->id} {$order->id} {($orderItem->total->getAmount()/100)|number_format:4:'.':''} {$orderItem->name} {/foreach}
]]>

Endpunkte der Schnittstelle

Bezeichnung

Endpunkt / URL

Login-Sprung in die PRINT LOUNGE
Hierzu wird ein PunchOutRequest-Dokument an diesen Endpunkt gesendet.

/coupa/processDocument

Einlieferung einer Bestellung
Für die Einlieferung & Bestätigung einer Bestellung wird ein OrderRequest-Dokument an diesen Endpunkt gesendet.

/coupa/processOrder

Informationen zum Mapping

cXML-Feld (XML-Pfad)

OrderRequest Feld

OrderRequest Feld Typ

PRINT LOUNGE Order-Feld

Bemerkungen

Bestellkopf

/cXML/Request/OrderRequest/OrderRequestHeader@orderID

requestBody->orderRequestHeader->orderId

string

order->externalOrderCode

Externe Bestellnummer

/cXML/Request/OrderRequest/OrderRequestHeader@orderDate

requestBody->orderRequestHeader->orderDate

DateTime

/cXML/Request/OrderRequest/OrderRequestHeader@type

requestBody->orderRequestHeader->type

string

/cXML/Request/OrderRequest/OrderRequestHeader/Total/Money

requestBody->orderRequestHeader->total->value

float

Gesamtpreis

/cXML/Request/OrderRequest/OrderRequestHeader/Total/Money@currency

requestBody->orderRequestHeader->total->currency

string

Lieferadresse (ShipTo)

/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/Name

requestBody->orderRequestHeader->shipTo->name

string

order->deliverAddress->company1

Firmenname

/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/DeliverTo

requestBody->orderRequestHeader->shipTo->postalAddressDeliverTo

string

order->deliverAddress->company2

Zusatzname oder Ansprechpartner

/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/Street

requestBody->orderRequestHeader->shipTo->postalAddressStreet

string

order->deliverAddress->street

Straße

/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/PostalCode

requestBody->orderRequestHeader->shipTo->postalAddressPostalCode

string

order->deliverAddress->zip

Postleitzahl

/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/City

requestBody->orderRequestHeader->shipTo->postalAddressCity

string

order->deliverAddress->town

Ort

/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/Country

requestBody->orderRequestHeader->shipTo->postalAddressCountry

string

order->deliverAddress->country

Land (Name)

/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/PostalAddress/Country@isoCountryCode

requestBody->orderRequestHeader->shipTo->postalAddressCountryIsoCountryCode

string

order->deliverAddress->countryCode

ISO-Ländercode

/cXML/Request/OrderRequest/OrderRequestHeader/ShipTo/Address/Email

requestBody->orderRequestHeader->shipTo->emailAddress

string

order->deliverAddress->email

E-Mail-Adresse

Rechnungsadresse (BillTo)

/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/Name

requestBody->orderRequestHeader->billTo->name

string

order->invoiceAddress->company1

Firmenname

/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/DeliverTo

requestBody->orderRequestHeader->billTo->postalAddressDeliverTo

string

order->invoiceAddress->company2

Zusatzname

/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/Street

requestBody->orderRequestHeader->billTo->postalAddressStreet

string

order->invoiceAddress->street

Straße

/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/PostalCode

requestBody->orderRequestHeader->billTo->postalAddressPostalCode

string

order->invoiceAddress->zip

Postleitzahl

/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/City

requestBody->orderRequestHeader->billTo->postalAddressCity

string

order->invoiceAddress->town

Ort

/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/Country

requestBody->orderRequestHeader->billTo->postalAddressCountry

string

order->invoiceAddress->country

Land (Name)

/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/PostalAddress/Country@isoCountryCode

requestBody->orderRequestHeader->billTo->postalAddressCountryIsoCountryCode

string

order->invoiceAddress->countryCode

ISO-Ländercode

/cXML/Request/OrderRequest/OrderRequestHeader/BillTo/Address/Email

requestBody->orderRequestHeader->billTo->emailAddress

string

order->invoiceAddress->email

E-Mail-Adresse

Versandkosten und -beschreibung

/cXML/Request/OrderRequest/OrderRequestHeader/Shipping/Money

requestBody->orderRequestHeader->shippingTotal->value

float

/cXML/Request/OrderRequest/OrderRequestHeader/Shipping/Money@currency

requestBody->orderRequestHeader->shippingTotal->currency

string

/cXML/Request/OrderRequest/OrderRequestHeader/Shipping/Description

requestBody->orderRequestHeader->shippingDescription

string

Ansprechpartner (Contact)

/cXML/Request/OrderRequest/OrderRequestHeader/Contact@role

requestBody->orderRequestHeader->contact->role

string

/cXML/Request/OrderRequest/OrderRequestHeader/Contact/Name

requestBody->orderRequestHeader->contact->name

string

/cXML/Request/OrderRequest/OrderRequestHeader/Contact/Name@xml:lang

requestBody->orderRequestHeader->contact->nameLang

string

/cXML/Request/OrderRequest/OrderRequestHeader/Contact/Email

requestBody->orderRequestHeader->contact->email

string

Bestellpositionen (ItemOut)

/cXML/Request/OrderRequest/ItemOut@quantity

requestBody->itemOut[].quantity

int

/cXML/Request/OrderRequest/ItemOut@lineNumber

requestBody->itemOut[].lineNumber

string

/cXML/Request/OrderRequest/ItemOut@requestedDeliveryDate

requestBody->itemOut[].requestedDeliveryDate

DateTime

/cXML/Request/OrderRequest/ItemOut/ItemID/SupplierPartID

requestBody->itemOut[].supplierPartId

string

Zur Order-Suche: getOrderFromClientById() (wichtig!)

Kernfeld für Zuordnung

/cXML/Request/OrderRequest/ItemOut/ItemID/SupplierPartAuxiliaryID

requestBody->itemOut[].supplierPartAuxiliaryId

string

Zur Order-Suche: getOrderFromClientById() (Priorität)

Kernfeld für Zuordnung

/cXML/Request/OrderRequest/ItemOut/ItemDetail/UnitPrice/Money

requestBody->itemOut[].unitPrice->value

float

/cXML/Request/OrderRequest/ItemOut/ItemDetail/UnitPrice/Money@currency

requestBody->itemOut[].unitPrice->currency

string

/cXML/Request/OrderRequest/ItemOut/ItemDetail/Description

requestBody->itemOut[].description

string

/cXML/Request/OrderRequest/ItemOut/ItemDetail/UnitOfMeasure

requestBody->itemOut[].unitOfMeasure

string

Order-Zuordnung & Update

itemOut[0].supplierPartAuxiliaryId oder supplierPartId

-

orderRequestHeader->shipTo

-

order->deliverAddress → diverse Felder (siehe oben)

Adressdaten aktualisieren

orderRequestHeader->billTo

-

order->invoiceAddress → diverse Felder (siehe oben)

Adressdaten aktualisieren

orderRequestHeader->orderId

-

order->externalOrderCode

Externe Bestellnummer setzen