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. |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML payloadID="{$punchOutSetupRequest->payloadId}" xml:lang="{$punchOutSetupRequest->language}" timestamp="{$punchOutSetupRequest->timestamp->format('c')}" version="1.2.0.14">
<Header>
<From>
<Credential domain="{$punchOutSetupRequest->fromCredential->domain}">
<Identity>{$punchOutSetupRequest->fromCredential->identity}</Identity>
</Credential>
</From>
<To>
<Credential domain="{$punchOutSetupRequest->toCredential->domain}">
<Identity>{$punchOutSetupRequest->toCredential->identity}</Identity>
</Credential>
</To>
<Sender>
<Credential domain="{$punchOutSetupRequest->senderCredential->domain}">
<Identity>{$punchOutSetupRequest->senderCredential->identity}</Identity>
</Credential>
<UserAgent/>
</Sender>
</Header>
<Message deploymentMode="production">
<PunchOutOrderMessage>
<BuyerCookie>{$punchOutSetupRequest->requestBody->buyerCookie}</BuyerCookie>
<PunchOutOrderMessageHeader operationAllowed="edit" quoteStatus="final">
<Total>
<Money currency="{$order->total->getCurrency()}">{($order->totalWithVat)|number_format:2:'.':''}</Money>
</Total>
<Shipping>
<Money currency="{$order->shipping->shippingCost->getCurrency()}">{($order->shipping->shippingCost->getAmount()/100)|number_format:4:'.':''}</Money>
</Shipping>
<Tax>
<Money currency="{$order->total->getCurrency()}">{($order->vat)|number_format:2:'.':''}</Money>
</Tax>
</PunchOutOrderMessageHeader>
{foreach from=$orderItems item=orderItem}
<ItemIn quantity="{$orderItem->quantityValue}">
<ItemID>
<SupplierPartID>{$orderItem->id}</SupplierPartID>
<SupplierPartAuxiliaryID>{$order->id}</SupplierPartAuxiliaryID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="{$orderItem->total->getCurrency()}">{($orderItem->total->getAmount()/100)|number_format:4:'.':''}</Money>
</UnitPrice>
<Description xml:lang="{$punchOutSetupRequest->language}">{$orderItem->name}</Description>
</ItemDetail>
</ItemIn>
{/foreach}
</PunchOutOrderMessage>
</Message>
</cXML>Endpunkte der Schnittstelle
Bezeichnung | Endpunkt / URL |
|---|---|
Login-Sprung in die PRINT LOUNGE | /coupa/processDocument |
Einlieferung einer Bestellung | /coupa/processOrder |
Informationen zum Mapping
cXML-Feld (XML-Pfad) | OrderRequest Feld | OrderRequest Feld Typ | PRINT LOUNGE Order-Feld | Bemerkungen |
|---|---|---|---|---|
Bestellkopf |
|
|
|
|
|
| string |
| Externe Bestellnummer |
|
| DateTime |
|
|
|
| string |
|
|
|
| float |
| Gesamtpreis |
|
| string |
|
|
|
|
|
|
|
Lieferadresse (ShipTo) |
|
|
|
|
|
| string |
| Firmenname |
|
| string |
| Zusatzname oder Ansprechpartner |
|
| string |
| Straße |
|
| string |
| Postleitzahl |
|
| string |
| Ort |
|
| string |
| Land (Name) |
|
| string |
| ISO-Ländercode |
|
| string |
| E-Mail-Adresse |
|
|
|
|
|
Rechnungsadresse (BillTo) |
|
|
|
|
|
| string |
| Firmenname |
|
| string |
| Zusatzname |
|
| string |
| Straße |
|
| string |
| Postleitzahl |
|
| string |
| Ort |
|
| string |
| Land (Name) |
|
| string |
| ISO-Ländercode |
|
| string |
| E-Mail-Adresse |
|
|
|
|
|
Versandkosten und -beschreibung |
|
|
|
|
|
| float |
|
|
|
| string |
|
|
|
| string |
|
|
|
|
|
|
|
Ansprechpartner (Contact) |
|
|
|
|
|
| string |
|
|
|
| string |
|
|
|
| string |
|
|
|
| string |
|
|
|
|
|
|
|
Bestellpositionen (ItemOut) |
|
|
|
|
|
| int |
|
|
|
| string |
|
|
|
| DateTime |
|
|
|
| string | Zur Order-Suche: | Kernfeld für Zuordnung |
|
| string | Zur Order-Suche: | Kernfeld für Zuordnung |
|
| float |
|
|
|
| string |
|
|
|
| string |
|
|
|
| string |
|
|
|
|
|
|
|
Order-Zuordnung & Update |
|
|
|
|
| - |
|
|
|
| - |
|
| Adressdaten aktualisieren |
| - |
|
| Adressdaten aktualisieren |
| - |
|
| Externe Bestellnummer setzen |