Funktion Warenkorb (ist separate Lizenzoption)
Die Funktion Warenkorb wird als separate Lizenz-Option angeboten. Einfache Bestell-Rückmeldungen (ohne Berechnungen, Rabatte, Gebinde, ...) ans VinX-System müssen direkt über Online-Tabellen übermittelt werden.
Für Shop-Anbindungen kann ein ganzer Warenkorb gerechnet, und mit derselben Schnittstelle auch als Bestellung übermittelt werden. die Datenstruktur sieht wie folgt aus:
Als Wurzelelement steht der Warenkorb, dem die Positionen angehängt sind. Auf dem Warenkorb, wie auch der Position, kann ein Rabatt ausgegeben werden, dieser kann aber nicht übersteuert werden (Output only). Das selbe gilt für die Gebinde-Position.
Optional können diverse Adressen mitgegeben werden, wobei immer die Online*-Adressen verwendet werden sollen (blaue Tabellen). In die gelben Adress-Tabellen sollte geschrieben werden, wenn dies im Projekt explizit so definiert wird.
Im Folgenden wird auf den Warenkorb und die angehängten Positionen eingegangen.
Ein einfacher Warenkorb (nur rechnen) mit einer Online-Lieferadresse sieht folgendermaßen aus:
Die Antwort ist dann:
In VinX wird unter anderem über die FremdsystemID die Standard Shop Adresse (Konditionen) ermittelt.
Warenkorb
Der Warenkorb ist eine temporäre Struktur, die nicht abgespeichert werden kann. Sie wird für das Berechnen der Preise und die Umwandlung in eine Bestellung verwendet (= Verteilung der übermittelten Daten auf die diversen Online-Tabellen). In Folge ist nur ein POST möglich:
Aufruf
URI | Methode | Return |
---|---|---|
./Warenkorb | POST | Warenkorb vervollständigt mit den angehängten Objekten |
Daten
Hier werden nur diejenigen Felder beschrieben, die irgendeine Logik hinterlegt haben, oder Einfluss auf die Berechnung haben. Die vollständige Beschreibung der Tabelle kann über die Metadaten abgefragt werden.
Feld | Funktion | Richtung | Format | Bemerkungen |
---|---|---|---|---|
id | Id des Warenkorbes, wird in der Antwort unverändert zurückgegeben. Kann zu Steuerzwecken verwendet werden. | I | key | |
InklMWST | Gibt an, ob der Kunde MWSt-pflichtig ist. | O | boolean | Preise werden inkl. und exkl. ausgegeben |
BereichID | Id des Bereichs, in dem der Warenkorb gerechnet werden soll | I | key | Kann leer gelassen werden, falls nicht mit Bereichen gearbeitet wird Ref nach ../Bereich |
AdresseID | ID der Bestelladresse | I | key | Ref nach ../Adresse, nur möglich wenn bekannt (Abgleich Adressen) |
LieferAdresseID | ID der Lieferadresse | I | key | Ref nach ../Adresse, nur möglich wenn bekannt (Abgleich Adressen) |
RechnungsAdresseID | ID der Rechnungsadresse | I | key | Ref nach ../Adresse, nur möglich wenn bekannt (Abgleich Adressen) |
ExterneID | Id/Schlüssel des Warenkorbes im Shop. Wird bei der Speicherung in die Folgetabellen (z.B. Beleg) weitergereicht. | I | string[30] | Über diese ID kann der Shop ein Tracking der Weiterverarbeitung der Bestellung machen, indem er in den Online-Tabellen die generierte Bestellung sucht und weiterverfolgt. |
FremdsystemID | Id des Shopsystems, muss im VinX/PerformX angelegt und mitgeteilt werden. Dient der Unterscheidung der angebundenen Systeme. | I | key | z.B. 1=Test, 2=Prod, 3=QS |
PreisgruppeID | Zu verwendende Preisgruppe. Wenn leer gelassen findet eine Preisgruppenfindung statt. | I/O | key | Ref nach ../Preisgruppe, Empfehlung leer lassen, ausser eigene Preislogik |
WarenkorbAktion | Auszuführende Aktion: 10: nur rechnen 20: rechnen und als Bestellung speichern | I | integer | |
ZahlungswegKarteID | Falls im Shop bezahlt wird muss hier der verwendetet Zahlungsweg angegeben werden | I | key | Ref nach ../Zahlungsweg |
ZahlungskonditionID | Falls im Shop bezahlt wird kann hier zusätzlich eine Zahlungskondition angegeben werden (z.B. Sofortbezahl-Rabatt) | I | key | Ref nach ../Zahlungskondition |
SaferPayBetrag | Bezahlter Betrag falls im Shop bezahlt | I | number[20,4] | |
TotalBetragNettoExkl | Total Nettobetrag des Warenkorb exkl MWSt | O | number[20,4] | TotalBetragNetto aller Positionen - möglicher Auftragsrabatt |
TotalBetragNettoInkl | dito inkl. | O | number[20,4] |
WarenkorbPosition
Die Warenkorbpositionen sind immer an den Warenkorb gebunden und sind als Unterelemente mitzugeben (siehe auch Beispiel-Aufruf oben).
Daten
Es werden wiederum nur diejenigen Felder beschrieben, die irgendeine Logik hinterlegt haben, oder Einfluss auf die Berechnung haben. Die vollständige Beschreibung der Tabelle kann über die Metadaten abgefragt werden.
Feld | Funktion | Richtung | Format | Bemerkungen |
---|---|---|---|---|
id | Id der Position, muss eindeutig sein | I | key | |
Anzahl | Bestellmenge | I | number[20,4] | |
ArtikelID | Id des Bestellartikels | I | key | Ref nach ../Artikel |
Bezeichnung | Artikelbezeichnung | O | string[40] | nicht übersteuerbar |
EinzelPreisExkl | Preis des Artikel exkl. MWSt | I/O | float | Wird bei Preisermittlung = 55 übernommen, ansonsten ignoriert und ausgegeben |
EinzelPreisInkl | dito inkl. | I/O | float | Wird bei Preisermittlung = 55 übernommen, ansonsten ignoriert und ausgegeben |
MWSTProzentArtikel | MWSt-Satz, der dem Artikel zugrunde liegt | O | number[20,4] | |
MWSTProzentInPreis | MWSt-Satz welcher im Grundpreis bereits enthalten ist | O | number[20,4] | |
PreisErmittlung | Art des Preises, kann je nach Systemeinstellung übernommen oder ignoriert werden. Gültig sind: 10 Spezialpreis | I/O | integer | leer lassen = Preisberechnung wie in VinX mit 55 kann überschrieben werden |
TotalBetragNettoExkl | Total Nettobetrag der Position exkl MWSt | O | number[20,4] | EinzelPreis * Anzahl - Betrag aller Rabattpositionen + (Anzahl * Preis aller Gebindepositionen) |
TotalBetragNettoInkl | dito inkl. | O | number[20,4] | |
BetragGebuehrenExkl | Betrag der hinterlegten Gebühren exkl MWSt | O | number[20,4] | Anzahl * GebuehrenArtikel.Grundpreis |
BetragGebuehrenInkl | dito inkl. | O | number[20,4] | |
GebuehrenArtikelID | Id des Gebühren-Artikel | O | key | Ref nach ../Artikel |
WarenkorbRabatt
WarenkorbRabatt kann auf dem Warenkorb (Auftragrabatt) wie auf der Position erscheinen und kann nicht überschrieben werden.
Daten
Feld | Funktion | Richtung | Format | Bemerkungen |
---|---|---|---|---|
RabattBasisExkl | Betrag auf welchem der Rabatt angewandt wurde (vor Rabatt) exkl. MWST | O | number[20,4] | |
RabattBasisInkl | dito inkl. | O | number[20,4] | |
BetragExkl | Rabattbetrag exkl. MWST | O | number[20,4] | |
BetragInkl | dito inkl. | O | number[20,4] | |
Bezeichnung | Rabattbezeichnung | O | string[40] |
WarenkorbGebindePosition
WarenkorbGebindePosition wird auf der Position ausgegeben und kann nicht überschrieben werden.
Daten
Feld | Funktion | Richtung | Format | Bemerkungen |
---|---|---|---|---|
Anzahl | Menge des Gebinde | O | number[20,4] | |
GebindeArtikelID | Id des Gebinde-Artikel | O | key | Ref nach ../Artikel |
MWSTProzentArtikel | dito Position | O | number[20,4] | Gebinde ist in VinX immer 0.0 |
MWSTProzentInPreis | dito Position | O | number[20,4] | Gebinde ist in VinX immer 0.0 |
PreisExkl | Preis des Gebinde-Artikel exkl. MWST | O | number[20,4] | |
PreisInkl | dito inkl. | O | number[20,4] |
Umgang mit Promocodes, Gutscheinen etc.
VinX unterstützt aktuell die Verwaltung von Promocodes, Gutscheinen, Einmalrabatten etc. nicht. Der Grund ist die enorme Vielvalt der Rabatt- und Aktionsmöglichkeiten, die nicht in einer allgmeinen Schnittstelle sinnvoll abgebildet werden können.
In der Warenkorbschnittstelle können diese Funktionalitäten aber ins VinX übergeben werden, wenn der Shop diese verwalten kann. Dazu muss wie folgt vorgegangen werden:
- Im Shop müssen die Spezialkonditionen, Aktionen, Gutscheine etc. verwaltet werden.
- Im VinX muss für die Fibu, Kostenrechnung oder Nachkalkulation je nach Anforderungen mindetstens ein Promo-Artikel angelegt werden. Dieser muss dem Shop bekannt sein, analog zu den Versandkosten.
- Wird ein Rabatt eingelöst, muss der Shop wie folgt vorgehen:
- Der Warenkorb muss im Modus "nur berechnen" übermittelt werden (Flag WarenkorbAktion = 10)
- Rabatte bestimmen, Z.b. Fixpreis-Promo, z.B. 20.- ab 100.- Bestellwert:
- Im Warenkorb ist eine neue Bestellposition hinzuzufügen, die
- als Artikel den obigen Promoartikel hat
- als Preis den negative Rabatt hat, im Beispiel hier wären das -20.-
- in der Preisregel (Feld PreisErmittlung) muss 55 sein. Damit macht der Warenkorb keine Neuberechnung des Preises.
- Der Warenkorb wird normal übermittelt (Flag WarenkorbAktion = 20)
Vorgehen Adressen
Bestellung als Gast
Mindestanforderung: OnlineLieferadresse
Optional: OnlineRechnungsadresse
OnlineAdresse wird bei diesem Fall nicht ausgefüllt. Die Konditionen-Adresse wird anhand der FremdsystemID gefunden (Standard Shop-Adresse).
Bestellung mit Login
Mindestanforderung: OnlineAdresse mit Angabe von OnlineBenutzername (matching mit VinX Adresse, bei erster Bestellung Shop-Standard als Konditionsadresse)
Optional: OnlineLieferadresse, OnlineRechnungsadresse
Mutation bei einer Adresse mit Login
Eine Änderung einer OnlineAdresse (Hauptadresse) sollte im VinX mitgeteilt werden. Für optionale OnlineLiefer- und OnlineRechnungs-Adressen ist dies nicht nötig.
Dazu kann bei der Übernahme einer Bestellung (WarenkorbAktion 20) auf der OnlineAdresse zusätzlich das Attribut EintragTyp mit dem Wert 6 mitgegeben werden.
Wird eine Änderung der Hauptadresse nicht mitgeteilt, wird diese im VinX auch nicht angepasst.