Wenn du alle noch nicht eingelösten Gutscheine bzw. Gutscheine mit Restwert aus Shopware 5 in deinen Shopware 6 Shop migrieren möchtest, kannst du die folgende SQL-Abfrage nutzen, um die entsprechenden Gutscheincodes und Restwerte aus Shopware 5 zu exportieren.
Die Abfrage ist auf die Erweiterung Gutscheine, Kaufgutscheine & Coupons - EasyCoupon Plugin von Net Inventors GmbH angepasst, kann aber auch umgeschrieben werden, um für andere Gutscheinerweiterungen genutzt zu werden. Mehr Informationen zu der genannten Erweiterung in Verbindung mit Pickware POS findest du auch hier.
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, 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;
Anschließend kannst du die Gutscheine nach Shopware 6 importieren. Bei Net Inventors findest du alle weiteren Informationen dazu.