OmniSeller:SW6 Plugin: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
MH (Diskussion | Beiträge) |
MH (Diskussion | Beiträge) |
||
Zeile 75: | Zeile 75: | ||
Anlegen von B2B-Preise | Anlegen von B2B-Preise | ||
{{{!}} style="width: 500px;" border="1" cellspacing="1" cellpadding="1" | {{{!}} style="width: 500px; height: 604px;" border="1" cellspacing="1" cellpadding="1" | ||
{{!}}- | {{!}}- style="height: 28px;" | ||
{{!}} style="width: 103.271px;" {{!}} Route | {{!}} style="width: 103.271px; height: 28px;" {{!}} Route | ||
{{!}} style="width: 389.729px;" {{!}} /api/v3/omniseller/b2bprices | {{!}} style="width: 389.729px; height: 28px;" {{!}} /api/v3/omniseller/b2bprices | ||
{{!}}- | {{!}}- style="height: 28px;" | ||
{{!}} style="width: 103.271px;" {{!}} Request-Tpye | {{!}} style="width: 103.271px; height: 28px;" {{!}} Request-Tpye | ||
{{!}} style="width: 389.729px;" {{!}} POST | {{!}} style="width: 389.729px; height: 28px;" {{!}} POST | ||
{{!}}- | {{!}}- style="height: 362px;" | ||
{{!}} style="width: 103.271px;" {{!}} Request-Json | {{!}} style="width: 103.271px; height: 362px;" {{!}} Request-Json | ||
{{!}} style="width: 389.729px;" {{!}} <div>[</div> | {{!}} style="width: 389.729px; height: 362px;" {{!}} <div>[</div> | ||
<div> {<br> "Company": "123",<br> "CustID": "D12345",</div> | <div> {<br> "Company": "123",<br> "CustID": "D12345",</div> | ||
<div> "Email":"example@htk.de",<br> "Item": "08154711",<br> "Variation": "0",<br> "Ref": "",</div> | <div> "Email":"example@htk.de",<br> "Item": "08154711",<br> "Variation": "0",<br> "Ref": "",</div> | ||
Zeile 93: | Zeile 93: | ||
<div> "UploadID": 1234657890<br> }</div> | <div> "UploadID": 1234657890<br> }</div> | ||
<div>]</div> | <div>]</div> | ||
{{!}}- | {{!}}- style="height: 158px;" | ||
{{!}} style="width: 103.271px;" {{!}} Response-Json | {{!}} style="width: 103.271px; height: 158px;" {{!}} Response-Json | ||
{{!}} style="width: 389.729px;" {{!}} <div>{</div> | {{!}} style="width: 389.729px; height: 158px;" {{!}} <div>{</div> | ||
<div> "status": "FINISHED",</div> | <div> "status": "FINISHED",</div> | ||
<div> "successful": 1,</div> | <div> "successful": 1,</div> | ||
Zeile 102: | Zeile 102: | ||
<div> "errors": 0</div> | <div> "errors": 0</div> | ||
<div>}</div> | <div>}</div> | ||
{{!}}} | {{!}}} | ||
| | ||
Zeile 110: | Zeile 107: | ||
Ein Delete Request, der alle Einträge löscht, die eine alte UploadID haben. Bereinigt alte Einträge unmittelbar nach einer vollständigen B2BPrice Synchronisation | Ein Delete Request, der alle Einträge löscht, die eine alte UploadID haben. Bereinigt alte Einträge unmittelbar nach einer vollständigen B2BPrice Synchronisation | ||
{{{!}} style="width: 500px;" border="1" cellspacing="1" cellpadding="1" | {{{!}} style="width: 500px; height: 197px;" border="1" cellspacing="1" cellpadding="1" | ||
{{!}}- | {{!}}- style="height: 28px;" | ||
{{!}} style="width: | {{!}} style="width: 103.271px; height: 28px;" {{!}} Route | ||
{{!}} style="width: | {{!}} style="width: 389.729px; height: 28px;" {{!}} /api/v3/omniseller/b2bpricesdeleteold | ||
{{!}}- | {{!}}- style="height: 28px;" | ||
{{!}} style="width: | {{!}} style="width: 103.271px; height: 28px;" {{!}} Request-Tpye | ||
{{!}} style="width: | {{!}} style="width: 389.729px; height: 28px;" {{!}} POST | ||
{{!}}- | {{!}}- style="height: 28px;" | ||
{{!}} style="width: | {{!}} style="width: 103.271px; height: 28px;" {{!}} Request-Body | ||
{{!}} style="width: | {{!}} style="width: 389.729px; height: 28px;" {{!}} "1234567890" | ||
{{!}}- | {{!}}- style="height: 113px;" | ||
{{!}} style="width: | {{!}} style="width: 103.271px; height: 113px;" {{!}} Response-Json | ||
{{!}} style="width: | {{!}} style="width: 389.729px; height: 113px;" {{!}} <div><div>{</div> | ||
<div> "message":"Es wurden xx Einträge gelöscht",</div> | <div> "message":"Es wurden xx Einträge gelöscht",</div> | ||
<div> "success":true</div> | <div> "success":true</div> | ||
Zeile 140: | Zeile 137: | ||
{{!}}- | {{!}}- | ||
{{!}} style="width: 102px;" {{!}} Request-Json | {{!}} style="width: 102px;" {{!}} Request-Json | ||
{{!}} style="width: 385px;" {{!}} <div>[ | {{!}} style="width: 385px;" {{!}} <div>[ </div> | ||
<div> {<br> "Company": "123",<br> "CustID": "D12345",<br> "Item": "08154711",<br> "Variation": "0"<br> }</div> | |||
<div>]</div> | <div>]</div> | ||
{{!}}- | {{!}}- | ||
{{!}} style="width: 102px;" {{!}} Response-Json | {{!}} style="width: 102px;" {{!}} Response-Json | ||
{{!}} style="width: 385px;" {{!}} <div>{</div> | {{!}} style="width: 385px;" {{!}} <div>{</div> | ||
<div> | <div> "status":"FINISHED",</div> | ||
<div> | <div> "successful":1,</div> | ||
<div> | <div> "errors":0,</div> | ||
<div> "deleted":1</div> | <div> "deleted":1</div> | ||
<div>}</div> | <div>}</div> |
Aktuelle Version vom 11. Oktober 2021, 10:15 Uhr
das OmniSeller Plugin für Zusatzfunktionen in Shopware6
Hintergründe
Uns erreichen zunehmend Anfragen zur Ausleitung von bestimmten Sage100/ERP Daten in Richtung Shopware, um dort zusätzliche Funktionen wie z.B. Kundenstamm-Import, kundenspezifische Preise oder Erstellungsmöglichkeiten von Verkaufsstatistiken abbilden zu können.
Dieses Plugin soll ein paar dieser Punkte abbilden.
Technisch erweitert dieses Plugin die von Shopware existierende REST-API.
Es werden spezifische Endpunkte zur Verfügung gestellt, die dann angesprochen werden können.
Eine Übersicht hierzu finden Sie unten.
Inhalte/API Endpunkte
Shopware API Authentifizierung
Route | /api/oauth/token |
Request-Tpye | POST |
Request-Json | { "client_id": "administration", "grant_type":"password", "username":"<username>", "password":"<password>" } |
Response-Json | { "token_type": "Bearer", "expires_in": 600, "access_token": "<Token>", "refresh_token": "<RefreshToken>" } |
Nach der erfolgreichen Authentifizierung wird dann bei den folgenden Endpunkt Requests ein Authorization Header mit "Bearer <Token>" angehängt.
Statistik Import
Route | /api/v3/omniseller/statistik |
Request-Tpye | POST |
Request-Json | [{ "kunde": "D100000", "periode": "2002003", "mandant": 123, "menge": "10,0000", "umsatz": "77,7900", "roherloes": "77,7900" } ]
|
Response-Json | { "status": "FINISHED", "successful": 1, "inserts": 0, "updates": 1, "errors": 0 }
|
B2BPreise
einfacher Request für Versionserfragung und Test ob Plugin installiert/aktiv
Route | /api/v3/omniseller/b2bpricesCheck |
Request-Tpye | GET |
Request-Json | |
Response-Json | {
"Installation": "OK",
"version": "1.0.2"
} |
Anlegen von B2B-Preise
Route | /api/v3/omniseller/b2bprices |
Request-Tpye | POST |
Request-Json | [
{
"Company": "123", "CustID": "D12345", "Email":"example@htk.de",
"Item": "08154711", "Variation": "0", "Ref": "", "AbMenge":"0",
"Price": "123,45", "Discount": "10,00",
"IsBruttoPrice": true,
"AllowDiscount": true,
"UploadID": 1234657890
} ]
|
Response-Json | {
"status": "FINISHED",
"successful": 1,
"inserts": 0,
"updates": 1,
"errors": 0
}
|
Ein Delete Request, der alle Einträge löscht, die eine alte UploadID haben. Bereinigt alte Einträge unmittelbar nach einer vollständigen B2BPrice Synchronisation
Route | /api/v3/omniseller/b2bpricesdeleteold |
Request-Tpye | POST |
Request-Body | "1234567890" |
Response-Json | {
"message":"Es wurden xx Einträge gelöscht",
"success":true
} |
Es können auch gezielt einzelne Preise gelöscht werden:
Route | /api/v3/omniseller/b2bpricesDeleteSpecific |
Request-Tpye | POST |
Request-Json | [
{
"Company": "123", "CustID": "D12345", "Item": "08154711", "Variation": "0" } ]
|
Response-Json | {
"status":"FINISHED",
"successful":1,
"errors":0,
"deleted":1
}
|
Kundenimport
Route | /api/v3/omniseller/customersImport |
Request-Tpye | POST |
Request-Json | [{ "Kto_Aktiv":"1", "Kto":"D10000", "AdressID":"12345", "EUUStID":"DE 12345677", "EULand":"DE", "Sprache":"DE", "Rabattgruppe":"R1", "Rabattsatz":"20", "Istgesperrt":0, "Zahlungskondition":"Vorkasse", "Vertreter":"", "Adressgruppe":"", "Ansprechpartner_Nummer":"123546", "EMail":"mh@htk.de", "Anrede":"Herr", "Ansprechpartner":"", "Vorname":"Marvin", "Nachname":"Harant", "Typ":"L", "Name1":"", "Name2":"", "Lieferstrasse":"In der Nauroth 2", "LieferPLZ":"67158", "LieferOrt":"Ellerstadt", "Lieferzusatz":"", "Lieferland":"DE", "Telefon":"06237 306010", "Telefax":"" } ] |
Response-Json | { "status": "FINISHED", "successful": 1, "inserts":10, "updates":2, "errors": 0 }
|
Installation
Da das Plugin in dieser Form (noch) nicht im Shopware Store existiert muss dieses manuell über das Shopware Backend installiert werden.
Bei neuen Shopware6 Versionen (6.4+) gibt es links ein Feld "Erweiterungen". Dort kann dann unter "meine Erweiterungen" das Zip File hochgeladen werden. Anschließend über die 3 Punkte installieren und zuletzt aktivieren.
Bei älteren Shopware6 Versionen ist das Prinzip das gleiche, nur ist die Plugin Seite links im Menü unter Einstellungen->System->Plugins zu finden.