Bei den Artikelstammdaten werden die Rezepturen der Verkaufsartikel aus der Richtung der Einkaufsartikel (Lieferanten, Rezepturen, Inhaltsstoffe, Wareneinsatz usw.) definiert.
Voraussetzungen für den Zugriff auf merchandiseman sind in Endpunkte Artikelstammdaten - Allgemein beschrieben.
Für die Fehlerbehandlung werden außer dem Fehlercode auch genauere Informationen zurückgegeben.
Datenstruktur von Verkaufsartikeln
Nachfolgende Liste beschreibt die Daten, welche von der API abgerufen werden oder welche beim Anlegen oder Aktualisieren von Rezepten geschickt werden müssen.
Feld | Datentyp | Beschreibung |
---|---|---|
id | null, integer Indexfeld | ID des Artikels; wird von LINA generiert. Beim Anlegen eines neuen Artikels wird dieser Wert automatisch gesetzt. |
number | integer Pflichtfeld | Artikelnummer des Artikels |
name | string | Name des Artikels |
active | boolean | Status des Artikels (aktiv oder inaktiv) |
function | string | Artikelfunktion; kann folgende Werte annehmen:
|
detailcategory | integer | ID der Feinsparte |
meccode | null, integer Pflichtfeld | ID des MEC |
productUse | double | Berechneter Wareneinsatz, readonly Feld, welches von Amadeus360 beim Ändern der Rezeptur berechnet wird. |
fixedwe | double | fixer Wareneinsatz; er legt den netto Wareneinsatz des Artikels fest |
prices | array | Array von Preisen |
prices[].active | boolean | Status des Preises (aktiv oder inaktiv) |
prices[].priceperunit | double | Auf zwei Nachkommastellen beschränkter Preis pro Einheit (Standardpreis) |
prices[].pricefixed | double | Auf zwei Nachkommastellen beschränkter fixierter Preis |
prices[].menucard | integer | ID des Angebots |
prices[].site | integer | ID der Verkaufsstelle |
prices[].vat1 | null, integer | ID der Steuer 1 |
prices[].vat2 | null, integer | ID der Steuer 2 |
prices[].vat3 | null, integer | ID der Steuer 3 |
prices[].pricelevels | array | Array von Preisen im Zusammenhang mit den Preisleveln |
prices[].pricelevels[].number | integer | ID des Preislevels |
prices[].pricelevels[].price | double | Preis mit zwei Nachkommastellen |
attributes | array | Array der Attribute (Zusatzstoffe, Allergene, Nährwerte) |
attributes[].attributeType | string | allergen, additive oder nutrition |
attributes[].attributeID | integer | ID des Attributs (siehe Handbuch) |
attributes[].attributeName | string | Anzeigename des Attributes |
attributes[].value | integer double | Falls das Attribut Ja/Nein ist, dann kann der Wert 0 oder 1 sein. Bei Nährwerten die Zahl (ohne Einheit). |
Alle Rezepte abfragen
Um die Rezepte abzufragen, werden keine speziellen Parameter benötigt.
Aufruf:
GET ... /extern/merchandiseman/recipe
Antwort-Beispiel:
[ { "id": "jvAE-T6I7gYp8p0BVREbCcnzmoI", "number": 1234, "name": "Testartikel", "active": false, "function": "MAIN", "detailcategory": 0, "meccode": null, "productUse": 0, "prices": [ { "active": true, "priceperunit": 0, "pricefixed": 0, "menucard": 0, "site": 0, "vat1": null, "vat2": null, "vat3": null, "pricelevels": [ { "number": 1, "price": "0" }, { "number": 2, "price": "0" }, { "number": 3, "price": "0" } ] } ], "attributes": [ { "attributeType": "allergen", "attributeId": 48, "attributeName": "enthält Eier und Eierzeugnisse", "value": 1 }, { "attributeType": "nutrition", "attributeId": 60, "attributeName": "Energie", "value": 220 } ] } ]
Einzelnes Rezept abfragen
Mittels ID besteht die Möglichkeit, ein einzelnes Rezept abzufragen. Die Struktur bleibt gegenüber der Liste aller Rezepte unverändert. Statt eines Arrays von Rezepten wird nur ein einzelnes Rezept (JSON-Objekt) zurückgegeben.
Aufruf:
GET ... /extern/merchandiseman/recipe/id/{id}
Der Teil {id} muss hierbei durch die Artikel-ID ersetzt werden.
API-Doku: https://documenter.getpostman.com
Fehlerbehandlung für Rezepte
Nachfolgende Liste gibt einen Überblick über die möglichen Fehler, die von Amadeus 360 zurückgegeben werden.
Antwort-Beispiel (Status 400):
Falls der Content-Type falsch gesetzt wurde, oder keine Daten übermittelt wurde, wird der Fehler 400 ausgegeben.
{ "status": "error", "message": "Content-Type is not application/json" }
Antwort-Beispiel (Status 403):
Falls das Hochladen von Artikeln nicht als Modul in Amadeus 360 gebucht ist, dann wird der Fehler 403 ausgegeben.
{ "status": "error", "message": "Module is not enabled for payment" }
Möglicher Fehler bei: POST, PUT
Antwort-Beispiel (Status 404):
Falls das Rezept nicht gefunden wird, erhält man bei der Abfrage den Status 404.
{ "status": "error", "message": "Resource not found" }
Möglicher Fehler bei: GET (mit ID), PUT
Antwort-Beispiel (Status 405):
Falls etwas anderes als GET, PUT oder POST übergeben wird, antwortet der Server mit Status 405.
{ "status": "error", "message": "Verb not allowed" }
Antwort-Beispiel (Status 500):
Falls ein oder mehrere Artikel wegen eines Serverfehlers nicht gespeichert werden können, wird Status 500 zurückgegeben.
{ "status": "success", "message": "Processing data (partially) failed" }
Attribute in neuem Artikel: Allergene, Zusatzstoffe, Nährwerte