Kundenimport Shopware to WinLine
Überblick
- Die Schnittstelle überträgt Kundendaten aus Shopware in die WinLine
- Kunden können als Personenkonto oder als Kontakt/Ansprechpartner importiert werden
- Es gibt vier Varianten für den Umgang mit Kundennummern:
- Kundennummer wird von Shopware vergeben
- Kundennummer wird beim WinLine-Import vergeben
- Alle Bestellungen auf ein Sammelkonto buchen
- Sammelkonto nur als Fallback für unbekannte Kunden
- Der Import kann über XML-Dateien oder direkt per EXIM-Datenbank erfolgen
- Über Umsetzungstabellen können importierte Werte transformiert werden (z.B. Anreden)
Sync-Befehle
- syncFilteredCustomers / syncCustomers -to wl: Kundendaten aus dem Shop abrufen
- syncCustomersWLNumber: Kundennummern aus der WinLine zurückschreiben
Grundsätzlich können die Kundendaten aus Shopware als Personenkonto oder Ansprechpartner/Kontakt an die WinLine übergeben werden.
Es sollte vorab ein klar Workflow definiert werden, damit zum Zeitpunkt des Order-Imports die entsprechenden Kundendaten zur Verfügung stehen.
Kundendaten werden anhand des timestamps heruntergeladen. Auch geänderte Kundaten können auf diese Weise immer aktuell ins System gezogen werden.
!!! Vorsicht: Alle in der Vorlage definierten Vorbelegungen werden in diesem Fall durch den erneuten Import überschrieben.
Um dieses Verhalten zu umgehen, kann mit dem Mapping existingCustomer.yml die Werte vorbelegt werden, sodass diese nicht überschrieben werden.
last_customer_sync = 2021-12-07T15:14:16.494653+01:00
Plugin zur Filterung von Kundenimporten
Das Plugin “getCustomersFiltered.py” aus “beispiel-plugins” lädt nur die Kunden, die noch nicht in der WinLine angelegt wurden und berücksichtigt darüber hinaus nur Kunden die eine Bestellung im Shop getätigt haben.
getCustomersFiltered.py
!!! Vorsicht: Leider werden nur abgeschlossene Bestellungen im OrderCount gezählt.
Es gibt vier Möglichkeiten mit den Kundendaten aus Shopware umzugehen.
- Kunden erhalten von Shopware eine Kundennummer
- Kunden erhalten beim Import von der WinLine eine Kundennummer
- Alle Bestellungen werden auf ein Sammelkonto gebucht.
- Alle Bestellungen einer in der WinLine nicht existierenden Kundennummer werden auf ein Sammelkonto gebucht.
1. Import mit Kundennummer aus SW
Es wird ein Kundennummern-Kreis für Shopkunden festgelegt und dieser in der WinLine und Shopware angelegt.
Bei einer Neuregistrierung eines Kunden werden die angegebenen Daten von der Schnittstelle (syncFilteredCustomers) als XML-File zur Verfügung gestellt.
XML-Import Vorlage in der WinLine mit entsprechenden Vorbelegungen:

2. Import ohne Kundennummer
Beim Import ohne Kundennummer wird die Kundennummer beim Import in die WinLine vergeben.
Wie oben beschrieben werden die XML-Files mit den Kundendaten zur Verfügung gestellt.
Beim Import wird manuell eine Kundennummer vergeben und das Personenkonto angelegt.
Mit dem Sync (syncCustomersWLNumber) wird diese Kundennummer anschließend in den Shop zurückgeschrieben, damit diese bei weiteren Bestellungen direkt zur Verfügung steht.

3. Sammelkonto
Im nachfolgenden Fall werden alle Orders auf das Sammelkonto 50000 gebucht.
config:
; Kundennummer für Orders ohne oder mit in der WinLine nicht hinterlegten Kundennummer
sammelkonto = 50000
always_sammelkonto = True
4. Sammelkonto fallback
Im nachfolgenden Fall werden alle Orders ohne WinLine Kundennummer das Sammelkonto 50000 gebucht.
config:
; Kundennummer für Orders ohne oder mit in der WinLine nicht hinterlegten Kundennummer
sammelkonto = 50000
always_sammelkonto = False
Umsetzungstabellen für Kundenimport
Es ist darüber hinaus möglich Umsetzungen zu realisieren, um von SW zur Verfügung gestellte Daten für den Import anzupassen.
Es können auch ergänzende Werte hinzugefügt werden.
Der nachfolgende Ordner muss in der Config angegeben werden.
config:
xml_preferences = C:\Program Files (x86)\energy-shop-sync-sentry\mapping\shopware\xml_preferences\
Dort werden die Dateien add_tags.json & refactor_xml.json abgelegt. (siehe ..\Beispiel-Konfiguration\mapping)
Beispiele zur Umsetzung
1. Anrede von “mr” zu “Herr” und von “ms” zu “Frau”
refactor_xml.json:
"salutation": {
"ms": "Frau",
"mr": "Herr"
},
2. Der Wert aus “groupKey” wird zu einem neuen Wert im neuen tag “Preisliste”
refactor_xml.json:
"groupKey": {
"EK": "40|Preisliste",
"H": "40|Preisliste"
},
add_tags.json:
"Preisliste": {}
3. Der Wert aus “email” wird in den neuen neuen tag “email-copy” kopiert
refactor_xml.json:
"email-copy": "<email>",
add_tags.json:
"email-copy": {}
4. Die Werte aus parent “ShippingAddress” “areaId” & “vatId” werden für den tag “Belegart” zur Verfügung gestellt.
Diese stehen pipegetrennt (|) zur Vergügung. Das Umsetzungergebnis landet im tag “Belegart”. Mit dem “*” vor “vatId” in add_tags wird ein beliebiger Wert zu “*” - ein “None” bleibt als Option kombinierbar.
refactor_xml.json:
"Belegart": {
"1|*": "1",
"1|None": "3"
}
}
add_tags.json:
"Belegart": {
"ShippingAddress": {
"areaId": "",
"*vatId": ""
}
}
Existierende Kunden
über das Mapping ‘existingCustomer’ können die Pflicht-Felder bei erneutem import mit den werten aus der WinLine überschreiben werden. Da beim ersten Import höchstwahrscheinlich ein Default gesetzt wurde kann so im nachhinein der wert in der WinLine gesetzt werden, ohne dass dieser wieder Überschrieben wird.
Kundenimport Per Mapping
Es ist nun auch möglich importierte Kunden durch eine Mappingdatei so zu transformieren, dass sie von EXIM akzeptiert werden.
Kunden als Kontakt/Ansprechpartner
Über das Feature Flag CUSTOMERS_AS_CONTACT = True können die Accounts als Kontakt/Ansprechpartner in der WinLine
angelegt werden.
Über die Mapping-Dateien customer6_kontakt und customer6_kontakt_exisiting können die Daten für den Import
angepasst werden.
In der Konfiguration-Datei muss die WinLine Vorlage für die Kontakte in dem Wert wlvorlageKontakt im Segment
[SHOPFIELDS] gesetzt werden. Im Standard heißt diese Shopware6Kontakt
Zum Abrufen der Kunden muss der Befehl syncCustomers -to wl aufgerufen werden.
SObald die Kontakte in der WinLine zu Personenkonten gewandelt oder zu einem Personenkonto hinzugefügt wurden,
müssen über syncCustomersWLNumber die Accounts im Shop mit den Daten aus der WinLine synchronisiert werden.
Vor jedem syncCustomers wird einmal syncCustomersWLNumber ausgeführt, dies vermeidet doppelte Abrufe.
Kunden Datenbankimport
Personenkonten und Kontakte können über die EXIM-Datenbank importiert werden.
Dazu muss in der Konfiguration die Flag gesetzt werden und die Datenbank-Tabelle angegeben werden:
[WL]
customers_via_exim = True
exim_customers = EXIM_KONTAKT