Ablauf Verarbeitung Shop-Bestellungen
Bestellungen von externen Systemen werden immer über Import-Tabellen verarbeitet, es wird nie direkt in die aktiven Bestellungen geschrieben. Der Grund ist, dass die übermittelten Daten oft manuell validiert und ergänzt werden müssen. Neukunden müssen z.B. erst erfasst und mit evt. bereits vorhandenen Adressen abgeglichen werden.
Das empfohlene Vorgehen ist, die Bestellungen via der Warenkorb-Funktion zu übermitteln. In dem Fall übernimmt das System die Verteilung der Daten auf die verschiedenen Online-Tabellen.
Dieser Verarbeitungsprozess ist wie folgt:
Der Shop kann die ganze Verarbeitung über die mitgelieferte Bestell-ID verfolgen.
Bestellung übermitteln
Eine Bestellung soll in einem Aufruf als Ganzes gespeichert werden, um die Datenkonsistenz zu gewährleisten (Der REST-Server verarbeitet jeden Aufruf in einer eigenen Transaktion).
Die hier verwendenden Elemente sind:
- OnlineAdressen (kann jederzeit auch ausserhalb einer Bestellung übermittelt werden)
- OnlineBestellungen (oder OnlineBestellAdresse wenn Substruktur von OnlineAdresse)
- OnlineBestellPositionen
Je nachdem ob die OnlineAdresse schon vorhanden ist oder nicht, sind folgende Übergabestrukturen möglich:
OnlineBestellung
OnlineBestellPositionen
OnlineBestellung
OnlineAdresse
OnlineBestellPositionen
Alle Entitäten können auch direkt über die normalen CRUD-Operationen manipuliert werden, was aber wegen der Datenkonsistenz nur für die OnlineAdresse empfohlen wird.
Beispielaufruf
Bestellung mit vorhandener Adresse: POST auf ./OnlineBestellung mit folgenden Daten:
Allfällige adhoc-Rechnungs-, Liefer- oder Bestell-Adresse [OnlineAdresse]
Eine Bestellung kann abweichende Liefer- und Rechnungsadressen haben. Falls diese noch nicht in VinX vorhanden sind, müssen diese zuerst angelegt werden, damit deren Referenzen in der Bestellung angegeben werden können.
Über OnlineAdresse können sämtliche Adressen verwaltet werden, die mit der Bestellung, der Lieferung und der Fakturierung von Online-Bestellungen zu tun haben.
Diese Online-Adressen sind getrennt vom regulären Adressstamm, und werden manuell bei Bedarf in den Adressstamm übernommen oder auf bestehende Adressen abgebildet.
Bitte beachten Sie, dass die Online-Adressen von VinX periodisch gelöscht werden. Eine permanente Abbildung der Adress-Strukturen eines Shops in den Online-Adressen ist somit nicht möglich!
Aufruf
URI | Methode |
---|---|
./OnlineAdresse | CRUD |
Feldebeschreibung (nur die wichtigsten Felder)
Feld | Datentyp | Optional | Bemerkung |
---|---|---|---|
ID | key | na | PK, wird bei Inserts zurückgegeben, muss in Updates angegeben werden |
AnredeID | ref | x | FK auf die Anreden (=> ./Anrede) |
Name | string[50] | x | |
Vorname | string[25] | x | |
Strasse | string[40] | x | |
Zusatz1 | string[40] | x | |
PLZ | string[10] | x | |
Ort | string[30] | x | |
LandID | ref | x | FK auf das Land (=> ./Land) |
Sprache | string[2] | [DE, FR, IT, EN] | |
string[100] | x | ||
TelG | string[40] | x | Telefon Geschäft |
TelP | string[40] | x | Telefon direkt |
BereichID | ref | x | Nur falls die Option "Bereiche" aktiv ist. FK auf die Bereiche (GET auf ./Bereich) |
Beschreibung Beleg [OnlineBestellung]
Aufruf
URI | Methode |
---|---|
./OnlineBestellung | (CRUD) |
Feldebeschreibung (nur die wichtigsten Felder)
Feld | Datentyp | Optional | Bemerkung |
---|---|---|---|
ID | key | na | PK, wird bei Inserts zurückgegeben |
Datum | date | Buchungsdatum | |
Hinweis | string[2k] | x | Optional, Bemerkung |
BereichID | ref | x | Nur falls die Option "Bereiche" aktiv ist. FK auf die Bereiche (=> ./Bereich) |
ExterneID | string[30] | x | ID vom Shop vergeben, über die der Shop ein Tracking der Weiterverarbeitung machen kann. |
AdresseID | ref | (x) | FK, optional, ID der Rechnungsadresse aus dem Adressstamm (=> ./Adresse) |
OnlineAdrID | ref | (x) | Falls die OnlineBestellung als Sub-Struktur einer OnlineAdresse übergeben wird, wird dessen ID hier hineingeschrieben. In dem Fall das Feld nicht übermitteln. FK, optional, ID der optional neu erfassten adhoc Rechnungsadresse (=> ./Onlineadresse) |
LieferAdrID | ref | x | FK, optional, ID der Lieferadresse aus dem Adressstamm (=> ./Adresse) |
OnlineLieferadresseID | ref | x | FK, optional, ID der erfassten adhoc Lieferadresse (=> ./OnlineAdresse) |
Beschreibung Positionen [OnlineBestellPosition]
Aufruf
In der Regel sollten nur Leseoperationen (GET) ausgeführt werden, da die Struktur mit der Bestellung übergeben werden soll, und nachträgliche Änderungen zu Inkonsistenzen führen können.
URI | Methode |
---|---|
./OnlineBestellPosition | (CRUD) |
Feldebeschreibung (nur die wichtigsten Felder)
Feld | Datentyp | Optional | Bemerkung |
---|---|---|---|
ID | key | na | PK, wird bei Inserts zurückgegeben |
BestID | ref | FK, ID auf OnlineBestellung, wird automatisch verwaltet falls Positionen mit der Bestellung übermittelt werden | |
ArtikelID | ref | FK, ID des gekauften Artikels (=> ./Artikel) | |
Bezeichnung | string[2k] | x | Optional, Artikelbezeichnung |
Anzahl | num[12,4] | Anzahl des gekauften Artikels Bei Reduktionen Menge als -1 liefern und den Betrag positiv | |
Preis | num[12,4] | Im Web kalkulierter Einheitspreis | |
Total | num[12,4] | Im Web kalkulierter Endpreis = Anzahl * Preis | |
PreisErmittlung | num[2] | x | Art des Preises, kann je nach Systemeinstellung übernommen oder ignoriert werden. Gültig sind: 10 Spezialpreis |