Wie funktioniert der shoppingcart?

Mit der mutation upsertProduct werden Produkte zum shoppingcart hinzugefügt, mit deleteProduct gelöscht. Die query shoppingcart ruft den Warenkorb ab.

upsertProduct

mutation m1 {
upsertProduct(product:{
proMaterialId: "<proMaterialId>"
productGateCode: "<productGateCode>"
distributionGateCode: "<distributionGateCode>"
distributionChannel: "<distributionChannel>"
productPrice: {
amount: 7.76
currency: "EUR"
taxDetails: {
taxType: VAT
taxAmount: 19
}
}
productOrderDetails:{
orderUnit: {
code: "QM-PIECE"
}
quantity: 1
}
email: "<email>",
clientNumber: "801754"
}){
shoppingCartId
creationDate
orderTotals {
totalOrderProducts
totalAmountNet
orderCurrency
}
products {
productOrderDetails {
orderUnit {
code
}
}
}
}
}

upsertProduct fügt ein Produkt zum Warenkorb hinzu und gibt den neuen Warenkorb zurück.

Wenn noch kein shoppingcart existiert, lassen Sie das Argument shoppingCartId leer; es wird dann ein neuer shoppingCart angelegt, dessen ID verwenden Sie dann um weitere Produkte hinzuzufügen.

Das Produkt, das Sie hinzufügen möchten, geben sie über proMaterialId an. Ein Produkt kann mehrere proMaterialIds haben; es ist egal, welche Sie davon verwenden. Wenn ein Produkt bereits im Warenkorb ist, wird die Anzahl des Produkts durch den neu mitgegeben Wert ersetzt. 

Der productPrice ist ein Pflichtattribut. Geben Sie den Preis an, den Sie über die pricesearch ermittelt haben. Anhand des productPrice kann kontrolliert werden, ob der Preis, den der Kunde im Frontend gesehen hat, sich in der Zwischenzeit geändert hat.

productGateCode lässt sich aus der productsearch abfragen.

distributionGateCode ist der Code, der in der URL vom DistributionGate enthalten ist und der  über die query connectedDistributionGates des BusinessManager abgefragt wurde.

Der distributionChannel ist der Vertriebskanal; ein Händler kann an seinem DistributionGate viele DistributionChannel angeschlossen haben. Software von Drittanbietern werden als externe DistributionChannel behandelt und erhalten auch bei jedem verbundenen DistributionGate eine Nummer. Die ID des distributionChannel soll über die connectedDistributionGates zurückgegeben werden.

productOrderDetails ist optional. Wird keine Angabe gemacht, wird die Standardmenge verwendet.

clientNumber und email sind Pflichtfelder, die über die getUser query im DistributionGate abgefragt werden können.

deleteProduct

Ein Produkt wird aus dem Warenkorb gelöscht, indem die shoppingCartId und die proMaterialId der mutation deleteProduct mitgegeben werden. deleteProduct gibt den neuen Warenkorb zurück.

shoppingCart, allShoppingCarts

Mit diesen queries kann einer oder mehrere shoppingCharts abgerufen werden. Ein shoppingCart wird beim erstellen einer Bestellung an diese Bestellung angehängt. Über die queries können auch shoppingCarts von bereits erfolgten Bestellungen abgefragt werden, daher können die shoppingCarts gefiltert werden über email, orderStatus, distributionGateCodes.