# Gutscheine Im- & Exportieren
EasyCoupon bringt für das Shopware Standard Import / Exportmodul ein Profil mit, um Gutscheine einfach zu importieren und exportieren.
Migration
Wir bieten für die Migration von Shopware 5 zu Shopware 6 einen kostenpflichtigen Support zum Festpreis an. Bei Interesse melde dich unter support@netinventors.de.
Achtung
Ab der Version 5.5.0 wurde das Feld reduce_shipping_costs entfernt. Bitte überprüfe deine Importdatei.
# Dateiaufbau und Felder
Der Aufbau der CSV Datei. Grundsätzlich müssen alle Felder übergeben werden.
| Feld | Nullable | Datentyp | Beispiel | Erklärung |
|---|---|---|---|---|
| id | ja | STRING | e6d5c97c13c244d98ff779f26d5391f5 | ID des Gutscheins |
| title | nein | STRING | 10 EUR Gutschein | Titel des Gutscheines |
| deleted | nein | INTEGER | 0 oder 1 | Gelöschter Gutschein |
| deleted_date | ja | STRING | 2022-01-17 14:55:30.086 | Löschdatum |
| active | nein | INTEGER | 1 oder 0 | Status des Gutscheins |
| voucher_type | nein | INTEGER | 40010 (allgemeingültig) oder 40020 (individuell) | Beschreibung |
| code | nein | STRING | zfxk-fdzw-13 | Gutscheincode |
| value | nein | FLOAT | 13.37 | Aktueller Wert des Gutscheins in Standardwährung (Faktor 1) |
| value_type | nein | INTEGER | 10010 absolut oder 10020 prozentual | Typ des Rabatts. Absolut oder prozentual. |
| comment | ja | STRING | Interner Kommentar | Kommentarfeld |
| discard_remaining | nein | INTEGER | 0 oder 1 | Restwert verfällt |
| mail_sent | nein | INTEGER | 0 oder 1 | Status ob Mail mit Code versendet wurde |
| combine_vouchers | nein | INTEGER | 1 oder 0 | Gutschein darf mit weiteren Gutscheinen kombiniert werden |
| currency_factor | nein | INTEGER | 1 (Wenn z.B. EUR Standardwährung) | Faktor der aktiven Währung |
| order_position_number | nein | STRING | 1337-voucher | Produktnummer bei Einlösung des Gutscheins |
| max_redemption_value | ja | FLOAT | 100.37 | Maximaler Einlösewert je Kunde |
| currency_iso_code | nein | STRING | EUR | Währung des Gutscheins |
| virtual_import | nein | STRING | {} | Spezialfeld siehe Erklärung |
| valid_until | ja | DateTime | 2022-01-17 14:55:30.086 | Ablaufdatum |
| redemption_order | nein | INTEGER | 0 | Reihenfolge beim Einlösen mit den SW-Promotions |
| pin | ja | STRING | 0123 (bei nichts wird eine 4-stellige Pin automatisch erstellt ) | 4-stellige Pin für die Abfrage des Gutscheinwertes |
| initial_value | ja | Float | 20.00 | Dieses Feld gibt es nur im Export und wird beim Import ignoriert |
| tax_id | ja | STRING | 1dd7ad4e58374fd8b3aae629f6f6d94c | ID der Steuer |
| discount_scope | ja | STRING | cart | Typ des Rabatts(cart, delivery, cartAndDelivery) |
| discount_rules | ja | STRING | 018cc9ec54fb725e9ecd296f035ea38b|018cc9ec5fb67302ba6933b74aae75a9 | IDs der Regeln mit | getrennt |
| discount_restriction | nein | INTEGER | 1 oder 0 (Standard: 0) | Rabatteinschränkungen (0 = Keine, 1 = Rabatt auf teuerstes Produkt) |
| redemptions | ja | INTEGER | 5 | Anzahl der Einlösungen (Ist nur für Export relevant) |
| consider_shipping_costs | nein | INTEGER | 1 oder 0 | Berücksichtigung bei der Berechnung der Versandkosten |
# Import
# Minimal Import
Beispiel für einen Minimalimport der Gutscheine in dem keine Zuordnung zu bestehenden Kunden besteht.
| id | title | deleted | deleted_date | active | voucher_type | code | value | value_type | comment | discard_remaining | mail_sent | combine_vouchers | currency_factor | order_position_number | max_redemption_value | currency_iso_code | virtual_import | valid_until | redemption_order | pin | discount_scope | discount_rules | redemptions | consider_shipping_costs |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Einfacher Gutschein | 0 | 1 | 40010 | zfxk-fdzw-11 | 50 | 10010 | Importierter Gutschein | 0 | 0 | 0 | 1 | Basis Gutschein | EUR | {} | 0 | cart | 0 |
Hier findest eine Beispieldatei.
# Import mit Kundenzuordnung
In diesem Beispiel wird der Gutschein dem Kunden mit der ID 10059 zugewiesen.
| id | title | deleted | deleted_date | active | voucher_type | code | value | value_type | comment | discard_remaining | mail_sent | combine_vouchers | currency_factor | order_position_number | max_redemption_value | currency_iso_code | virtual_import | valid_until | redemption_order | pin | discount_scope | discount_rules | redemptions | consider_shipping_costs |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Einfacher Gutschein mit Kundenzuweisung | 0 | 1 | 40010 | zfxk-fdzw-13 | 50 | 10010 | Importierter Gutschein | 0 | 0 | 0 | 1 | Basis Gutschein | EUR | {"customerNumber":"10059"} | 0 | cart | 0 |
In der Spalte virtual_import wird per JSON mit
{"customerNumber":"10059"}
die Zuordnung zum Kunden hergestellt.
Achtung
Bitte beachte, dass die Kundennummer tatsächlich existiert. Ansonsten erfolgt keine Zuweisung.
Hier findest eine Beispieldatei.
# Import mit Bestelldaten
In diesem Beispiel wird der Gutschein mit den Bestelldaten importiert. Über die Bestellnummer orderNumber kann die Verbindung zu der Bestellung aufgebaut werden. Wenn zusätzlich noch die Artikelnummer des gekauften Gutscheines orderLineItemNumber angegeben wird, so kann korrekt der Status abgefragt werden (offen/bezahlt)
| id | title | deleted | deleted_date | active | voucher_type | code | value | value_type | comment | discard_remaining | mail_sent | combine_vouchers | currency_factor | order_position_number | max_redemption_value | currency_iso_code | virtual_import | valid_until | redemption_order | pin | discount_scope | discount_rules | redemptions | consider_shipping_costs |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Einfacher Gutschein mit Bestelldaten | 0 | 1 | 40010 | zfxk-fdzw-13 | 50 | 10010 | Importierter Gutschein | 0 | 0 | 0 | 1 | Basis Gutschein | EUR | {"orderNumber":"10013","orderLineItemNumber":"SW10000"} | 0 | cart | 0 |
In der Spalte virtual_import wird per JSON mit
{"orderNumber":"10013","orderLineItemNumber":"SW10000"}
die Zuordnung zu der Bestellung und dem Artikel hergestellt.
Achtung
Bitte beachte, dass die Bestellung tatsächlich existiert. Ansonsten erfolgt keine Zuweisung.
Hier findest eine Beispieldatei.
# Import mit Gutscheinregeln
Beispiel für Import der Gutscheine mit angewandten Regeln.
| id | title | deleted | deleted_date | active | voucher_type | code | value | value_type | comment | discard_remaining | mail_sent | combine_vouchers | currency_factor | order_position_number | max_redemption_value | currency_iso_code | virtual_import | valid_until | redemption_order | pin | discount_scope | discount_rules | redemptions | consider_shipping_costs |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Gutschein mit Regeln | 0 | 1 | 40010 | rqvt-ejdc-62 | 50 | 10010 | Voucher conditions | 0 | 0 | 0 | 1 | Basis Gutschein | EUR | {""conditions"":[{""id"":""443ce75951244e5395ac7d4ee101c4c1"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":""e6d5c97c13c244d98ff779f26d5391f5"",""value"":[],""position"":0,""type"":""andContainer""},{""id"":""e6d5c97c13c244d98ff779f26d5391f5"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":null,""value"":[],""position"":0,""type"":""orContainer""},{""id"":""78b1d32101fc429b8fe8a1b8d5cacdcf"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":""443ce75951244e5395ac7d4ee101c4c1"",""value"":{""amount"":25,""operator"":"">""},""position"":0,""type"":""cartCartAmount""}]} | 0 | cart | 0 |
In der Spalte virtual_import wird per JSON mit
{""conditions"":[{""id"":""443ce75951244e5395ac7d4ee101c4c1"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":""e6d5c97c13c244d98ff779f26d5391f5"",""value"":[],""position"":0,""type"":""andContainer""},{""id"":""e6d5c97c13c244d98ff779f26d5391f5"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":null,""value"":[],""position"":0,""type"":""orContainer""},{""id"":""78b1d32101fc429b8fe8a1b8d5cacdcf"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":""443ce75951244e5395ac7d4ee101c4c1"",""value"":{""amount"":25,""operator"":"">""},""position"":0,""type"":""cartCartAmount""}]}
der Regeln des Gutscheins importiert
Hier findest eine Beispieldatei.
# Import mit Kundenzuweisung und Gutscheinregeln
Beispiel für Import der Gutscheine mit angewandten Regeln bei Kundenzuweisung.
| id | title | deleted | deleted_date | active | voucher_type | code | value | value_type | comment | discard_remaining | mail_sent | combine_vouchers | currency_factor | order_position_number | max_redemption_value | currency_iso_code | virtual_import | valid_until | redemption_order | pin | discount_scope | discount_rules | redemptions | consider_shipping_costs |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Gutschein mit Regeln | 0 | 1 | 40010 | rqvt-ejdc-62 | 50 | 10010 | Voucher conditions | 0 | 0 | 0 | 1 | Basis Gutschein | EUR | {""customerNumber"":""10059"",""conditions"":[{""id"":""443ce75951244e5395ac7d4ee101c4c1"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":""e6d5c97c13c244d98ff779f26d5391f5"",""value"":[],""position"":0,""type"":""andContainer""},{""id"":""e6d5c97c13c244d98ff779f26d5391f5"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":null,""value"":[],""position"":0,""type"":""orContainer""},{""id"":""78b1d32101fc429b8fe8a1b8d5cacdcf"",""couponId"":""4a7646ca24344c9b846fe3deb225766b"",""parentId"":""443ce75951244e5395ac7d4ee101c4c1"",""value"":{""amount"":25,""operator"":"">""},""position"":0,""type"":""cartCartAmount""}]} | 0 | cart | 0 |
In der Spalte virtual_import erfolgt die Zuweisung zum Kunden sowie die Gutscheinregel
{"customerNumber":"10059","conditions":[{"id":"100014784a9e43dc9756e6afe3c3add0","couponId":"cfcc7faf35814480af80fd53ff3ec1d1","parentId":"b86a75a10ab044989269a209d4839cc5","value":{"amount":10,"operator":">"},"position":0,"type":"cartCartAmount"},{"id":"3e2481698d804d90a3f8d331f3a2e9e2","couponId":"cfcc7faf35814480af80fd53ff3ec1d1","parentId":null,"value":[],"position":0,"type":"orContainer"},{"id":"b86a75a10ab044989269a209d4839cc5","couponId":"cfcc7faf35814480af80fd53ff3ec1d1","parentId":"3e2481698d804d90a3f8d331f3a2e9e2","value":[],"position":0,"type":"andContainer"}]}
Hier findest eine Beispieldatei.
# Import aus EasyCoupon für Shopware 5
Shopware Migration Tool
Migriere die Gutscheincodes keinesfalls mit dem Shopware Migration Tool - dies hat zur Folge, dass die Gutscheincodes im Shopware Modul "Rabatte & Aktionen" angelegt werden und die Gutscheine nicht eingelöst werden können. Solltest du dennoch die Gutscheine migriert haben, findest du hier weitere Informationen.
- Exportiere die Gutscheine aus EasyCoupon für Shopware 5 Übersicht

- Passe das Format der Datei in das Format in das benötigte Format an (Minimal Import, Import mit Kundenzuordnung oder Import mit Gutscheinregeln)
- Importiere die Datei
Admin > Einstellungen > Shop > Import/Export > Importund wähle das ProfilEasyCouponaus, um alle Gutscheine zu importieren.
# Import aus Pickware für Shopware 5
Verwende nachfolgenden Query um Gutscheine aus Shopware 5 mit Pickware zu exportieren:
SELECT DISTINCT
UUID() AS id,
sev.description AS title,
0 AS deleted,
NULL AS deleted_date,
1 AS active,
40020 AS voucher_type,
sevc.code AS code,
IF(sod.redeemed, ROUND(sev.value + sod.redeemed, 2), sev.value) AS value,
10010 AS value_type,
'Import von Pickware Shopware 5 Gutscheinen' AS comment,
0 AS discard_remaining,
1 AS mail_sent,
0 AS combine_vouchers,
1 AS currency_factor,
0 AS consider_shipping_costs,
sev.ordercode AS order_position_number,
NULL AS max_redemption_value,
'EUR' AS currency_iso_code,
-- dynamische Kundennummer aus direktem userID oder fallback über Bestellung
IF(
su.customernumber IS NOT NULL,
CONCAT('{"customerNumber":"', su.customernumber, '"}'),
IF(
su_fallback.customernumber IS NOT NULL,
CONCAT('{"customerNumber":"', su_fallback.customernumber, '"}'),
'{}'
)
) AS virtual_import,
vcv.validTo AS valid_until,
0 AS redemption_order,
NULL AS pin,
NULL AS initial_value,
NULL AS tax_id,
'cart' AS discount_scope
FROM s_emarketing_voucher_codes sevc
LEFT JOIN s_emarketing_vouchers sev ON sev.id = sevc.voucherID
LEFT JOIN s_emarketing_vouchers_attributes seva ON seva.voucherId = sev.id
-- Redeemed value korrekt bestimmen
LEFT JOIN (
SELECT
sod.articleID AS voucherCodeId,
SUM(sod.price) AS redeemed
FROM s_order_details sod
LEFT JOIN s_order so ON so.id = sod.orderID
LEFT JOIN s_emarketing_voucher_codes vc ON vc.id = sod.articleID
LEFT JOIN s_emarketing_vouchers v ON v.id = vc.voucherID
WHERE sod.modus = 2
AND so.status NOT IN (-1, 1, 4)
AND sod.articleordernumber = v.ordercode
AND v.modus = 1
GROUP BY sod.articleID
) AS sod ON sod.voucherCodeId = sevc.id
-- Gutschein-Metadaten
LEFT JOIN s_plugin_viison_coupon_voucher_code_gift_voucher vcv ON vcv.voucherCodeId = sevc.id
-- Direkte Zuordnung via userID
LEFT JOIN s_user su ON su.id = sevc.userID
-- Fallback: Kundennummer über eingelöste Bestellung (nur wenn userID NULL)
LEFT JOIN s_order_details sod_fallback ON sod_fallback.id = vcv.orderDetailId
LEFT JOIN s_order so_fallback ON so_fallback.id = sod_fallback.orderID
LEFT JOIN s_user su_fallback ON su_fallback.id = so_fallback.userID
WHERE sevc.cashed = 0
AND sev.modus = 1;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Weitere Informationen findest du hier (opens new window).
# Export
Unter Admin > Einstellungen > Shop > Import/Export > Export wähle das Profil EasyCoupon aus, um alle Gutscheine zu exportieren.
# Änderungen des Profils
Du kannst ein Profil mit dem Objekt-Typ EasyCoupon erstellen oder das bestehende Profil ändern. Beim Ändern des Profils erhältst du einen Fehler, dass die Felder createdAt und currencyId fehlen. Du kannst diese Felder hinzufügen und dann deine Änderungen durchführen. Beim Import/Export haben wir auch sehr viel Logik beim Schreiben bzw. Importieren der Daten eingebaut. Wenn einige Felder fehlen oder nicht korrekt gemappt werden, kann es dazu kommen, dass das Profil gar nicht funktioniert. Bitte denke daran, wenn du Änderungen durchführst.