Guthaben-Verwaltung und Kauf von Gutschein (Shopware 6)
Dieses Plugin unterstützt Dich bei der Verwaltung von Gutschein-Guthaben. Eine besondere Funktion ist die Guthaben-Verwaltung von Shopify-Gutscheinen.
Guthaben-Verwaltung Plugin für Shopware 6 im Shopware Community Store
Funktionalitäten
- Die Erweiterung erfasst Guthaben-Änderungen bspw. Einlösungen im Shop.
- Variable Gutscheine können im Shop verkauft werden
- Ein minimaler und/oder maximaler Gutscheinbetrag kann festgelegt werden
- Kunde erhält nach erfolgter Zahlung den Gutschein per Mail zugesendet.
- Restwerterhalt ist möglich.
- Ablaufdatum kann für das Guthaben hinterlegt werden.
- Optional: Ablaufdatum des Gutscheins wird im Checkout angezeigt.
- Die Guthaben können auch händisch im Adminbereich geändert werden.
- Alle Transaktionen werden erfasst und ein Kommentar wird dazu angegeben.
- Die Umsätze können als csv-Datei exportiert werden.
- Shopify-Modus: Kunden können weiterhin Shopify-Gutscheine einlösen.
- Bei aktivem Shopify-Modus vergleicht das Plugin die letzten 4 Stellen und die Gesamtlänge des Gutscheincodes.
- Optional kann der Gutschein als PDF versendet werden.
- Das Guthaben-Einlösen-Formular kann zusätzlich auf der /checkout/confirm-Seite eingeblendet werden.
Hinweise
- Das Guthaben in unserer App wird steuerneutral betrachtet, d.h. es wird dafür weder beim Kauf noch beim Einlösen des Guthabens MwSt. fällig.
- Die App funktioniert aktuell nur mit einer Währung. Sofern Du mehr als eine Währung in Deinem Shop nutzt, sprich uns bitte an.
- Sofern eine Rückerstattung des Guthabens / Gutscheins erfolgt, muss das Guthaben händisch wieder entwertet werden. Dies wird nicht von der App automatisch erledigt!
- Nur die zeilenweise (horizontale) Steuerberechnung von der Erweiterung unterstützt.
Bilder des Plugins
Konfiguration
Guthaben
Zeige Ablaufdatum des Gutscheins im Checkout
Wenn Du Gutscheine mit einer zeitlichen Begrenzung vertreibst, kann bei Aktivierung dieser Option das Ablaufdatum Deinem Kunden im Shop angezeigt werden.
Laden der Bestell-Entität verändern (wenn keine Wawi angebunden)
Aktiviere diese Option, wenn Du keine Warenwirtschaft nutz, um die Anzeige der Rechnungsbeträge im Adminbereich anzupassen.
Shopware Rabatte & Aktionen-Hinzufügen-Formular verstecken
Aktiviere diese Option, wenn nur das Guthaben-Feld im Warenkorb / Off-Canvas Warenkorb angezeigt werden soll.
Account-Seite für Kunden aktivieren
Wenn diese Option aktiviert ist, wird im Kunden-Login der Menüpunkt "Guthaben-Codes" angezeigt. Dort werden dem Kunden alle erworbenen Codes inkl. aktuellem Wert angezeigt.
Guthaben-Einlösen-Formular auf /checkout/confirm-Seite anzeigen?
Diese Option muss aktiviert werden, wenn das Formular für die Gutschein-Einlösung zusätzlich auf der /checkout/confirm-Seite angezeigt werden soll.
Einlösbare Guthaben auf /checkout/confirm-Seite anzeigen?
Wenn diese Option aktiviert ist, werden im oberen Bereich der /checkout/confirm-Seite die aktuellen Guthaben des Kunden eingeblendet.
Produktnummer für payload
Füge hier eine Produktnummer ein, die über Payload beim Kauf des Gutschein mitgegeben wird.
Guthaben kaufen
Produkte, zum Guthaben kaufen definieren
Hinterlege hier Deine Produkte, die Du verwendest um Guthaben anzubieten.
Minimaler kaufbarer Wert
Lege den minimalen Wert des Guthabens fest, den Deine Kunden kaufen können.
Maximaler kaufbarer Wert
Lege den maximalen Wert des Guthabens fest, den Deine Kunden kaufen können.
Gültig bis
Entscheide, ob das Guthaben bis Ende des 3. Jahres gültig sein soll oder kein Fälligkeitsdatum haben soll.
Ist nur einlösbar von Kunden, die das Guthaben gekauft haben?
Wenn diese Option aktiviert ist, kann nur der Kunde, welcher den Gutschein erworben hat, diesen auch einlösen.
Präfix für Code-Generierung
Optional kannst Du ein Präfix für die Gutscheincodes definieren.
Code-Länge der Generierung
Definiere die Länge des Guthaben-Codes.
Trennzeichen nach bestimmter Anzahl an Zeichen einfügen?
Lege fest, ob der Guthaben-Code Trennzeichen beinhalten soll.
Trennzeichen
Definiere hier das Trennzeichen, das verwendet werden soll.
Trennzeichen nach Anzahl Zeichen anzeigen
Lege fest, nach welcher Anzahl von Zeichen die Trennzeichen in den Code eingebunden werden sollen.
Guthaben-Generierung ab Datum
Produktnummer für payload
Füge hier eine Produktnummer ein, die über Payload beim Einlösen des Gutscheins mitgegeben wird.
Experten-Einstellungen
Standard Steuersatz (Bitte 0% wählen)
Diese Einstellung darf nur verändert werden, wenn Du genau weißt was du tust! Hier wird der Standard Steuersatz für Gutscheine festgelegt.
Installationsanleitung
- Installiere und aktiviere das Plugin.
- Mindestens 1 Produkt anlegen, das verwendet wird, um Guthaben zu kaufen.
- Das Produkt/die Produkte in den Plugin-Einstellungen zuweisen.
- Den Flow mit dem Trigger „lenz_credit_management.buy_credit_charged” überprüfen und ggf. anpassen, damit die Mail an die Kunden versendet wird.
- Den Cronjob bin/console lenz-platform-credit-management:charge-buy-credit einrichten.
Warum verwenden wir einen Konsolenbefehl anstelle eines Scheduled Task?
Scheduled Tasks werden nicht zuverlässig zu einer bestimmten Zeit ausgeführt. Wir möchten aber das die Gutscheine schnellstmöglich dem Kunden zugeschickt werden, daher benutzten wir den Konsolenbefehl.
Möchtest Du für den Guthaben-Kauf eine eigene Versandart anlegen? Dann gelangst Du über den Button zur Anleitung:
Guthaben-Verwaltung und Kauf von Gutschein (SW6): eigene Versandart anlegen
Gutschein als PDF verschicken
Die Erweiterung ermöglicht es für die gekauften Guthaben/Gutscheine ein automatisches PDF zu generieren und diese dem Kunden zu senden.
Um die PDF erstellen zu können wird ein Template benötigt. Das Template muss die benötigten Variablen für die Ausstellung des Gutschein enthalten.
Die nachfolgende Variablen stehen derzeit zur Verfügung. Sollten weitere Variablen benötigt werden, schreibe uns gerne, welche Variablen benötigt werden, damit wir diese hinzufügen können.
URL zum Shop | {{ context.salesChannel.domains.first.url }} |
Guthaben-Wert | {{ credit.creditBalances.first.value|currency }} |
Guthaben-Code | {{ credit.code }} |
Ablaufdatum |
{% if credit.expiresAt != null %} <div style="font-size: 14px; margin-top: 20px;">gültig bis: {{ credit.expiresAt|format_date('medium', locale=locale) }}</div> {% endif %} |
Die erstellte Datei muss anschließend im Template oder einem Plugin in den Template-Dateien (meist /src/Resources/views/) unter documents/lenz-credit-management/ abgelegt werden z.B. documents/lenz-credit-management/buy-voucher-wichtel.html.twig.
Das erstellte PDF kann unter folgender URL getestet werden: SHOPURL/lenz-credit-management/buy-credit/test-pdf?template=[PFAD DER TEMPLATE-DATEI]
Beispiel: SHOPURL/lenz-credit-management/buy-credit/test-pdf?template=@Storefront/documents/lenz-credit-management/test.html.twig
Enthaltene Textbausteine
- lenzCreditManagementCredit.checkout.addVoucherPlaceholder
- Label DE: Guthaben-Code eingeben...
- Label GB: Enter credit code...
- lenzCreditManagementCredit.checkout.buyCreditItemLabel
- Label DE: Guthaben-/Gutschein-Code per E-Mail über %price% %currencySymbol%
- Label GB: Credit-/Coupon-Code via E-Mail (%price% %currencySymbol%)
- lenzCreditManagementCredit.checkout.codeAddedSuccessful
- Label DE: Code "%code%" wurde erfolgreich zum Warenkorb hinzugefügt.
- Label GB: Code "%code%" added to cart.
- lenzCreditManagementCredit.checkout.codeNotFoundError
- Label DE: Der Code "%code%" wurde nicht gefunden.
- Label GB: Code "%code%" not found.
- lenzCreditManagementCredit.checkout.creditAlreadyInCartError
- Label DE: Der Code "%code%" ist bereits im Warenkorb.
- Label GB: Code "%code%" is already in cart.
- lenzCreditManagementCredit.checkout.expiresAtMsg
- Label DE: Gültig bis %expiresAt%
- Label GB: Expires at %expiresAt%
- lenzCreditManagementCredit.checkout.moreThanOneCodeFoundError
- Label DE: Code "%code%" nicht eindeutig! Bitte nehmen Sie Kontakt zu uns auf.
- Label GB: Code "%code%" is ambiguous. Please contact us.
- lenzCreditManagementCredit.checkout.nonResidualCreditValueNotReachedError
- Label DE: Der Code "%code%" kann nur gesamt eingelöst werden. Wert: %value%
- Label GB: The code "%code%" can only be used at once. Value: %value%
- lenzCreditManagementCredit.checkout.redeemCreditPaySum
- Label DE: Zahlbetrag
- Label GB: Pay sum
- lenzCreditManagementCredit.productDetail.buyCreditForm.priceFieldLabel
- Label DE: Gewünschter Guthabenwert (Max: %maxValuePerCredit% %currencySymbol%)
- Label GB: Credit value (Max: %maxValuePerCredit% %currencySymbol%)
- lenzCreditManagementCredit.productDetail.buyCreditForm.priceFieldPlaceholder
- Label DE: Hier Wunschpreis eingeben, z.B. 130 €
- Label GB: Enter price here, e.g. 130 €
- lenzCreditManagementCredit.productDetail.buyCreditForm.submitButtonText
- Label DE: Guthaben zum Warenkorb hinzufügen
- Label GB: Add to cart
Variablen in manipulierter Bestell-Entity (OrderEntity)
Sofern die Bestellmanipulation (LenzPlatformCreditManagement.config.manipulateOrderEntityLoading) aktiviert ist, stehen folgende Variablen zusätzlich zur Verfügung.
Beschreibung der Variable | Zugriff auf die Variable |
Zahlbetrag | order.customFields.lenzCreditManagementCredit.paySum |
Originaler Nettopreis | order.customFields.lenzCreditManagementCredit.originalAmountNet |
Originaler Gesamtpreis | order.customFields.lenzCreditManagementCredit.originalAmountTotal |
Originaler Positionspreis | order.customFields.lenzCreditManagementCredit.originalPositionPrice |
Manipulierter Nettopreis | order.customFields.lenzCreditManagementCredit.amountNet |
Manipulierter Gesamtpreis | order.customFields.lenzCreditManagementCredit.amountTotal |
Manipulierter Positionspreis | order.customFields.lenzCreditManagementCredit.positionPrice |
Gibt es einen Gutschein in der Bestellung? | order.customFields.lenzCreditManagementCredit.hasVoucher |
Core-Hack
Wenn du steuerfreie Länder aktiviert hast, füge bitte unseren Core-Hack hinzu.
Betroffene Datei: vendor/shopware/core/Checkout/Cart/CartRuleLoader.php
Vorher:
private function validateTaxFree(SalesChannelContext $context, Cart $cart, CartBehavior $behaviorContext): Cart
{
$totalCartNetAmount = $cart->getPrice()->getPositionPrice();
if ($context->getTaxState() === CartPrice::TAX_STATE_GROSS) {
$totalCartNetAmount = $totalCartNetAmount - $cart->getLineItems()->getPrices()->getCalculatedTaxes()->getAmount();
}
Nachher:
private function validateTaxFree(SalesChannelContext $context, Cart $cart, CartBehavior $behaviorContext): Cart
{
$totalCartNetAmount = $cart->getPrice()->getPositionPrice();
if ($context->getTaxState() === CartPrice::TAX_STATE_GROSS) {
$totalCartNetAmount = $totalCartNetAmount - $cart->getLineItems()->getPrices()->getCalculatedTaxes()->getAmount();
}
if($totalCartNetAmount < 0) {
$totalCartNetAmount = 0;
}
Fragen & Antworten
Die E-Mail mit dem Gutschein-Code wurde nicht versendet. Was kann ich tun?
- Bitte prüfe, ob die Bestellung als "bezahlt" markiert ist. Erst dann wird der Gutschein versendet.
- Du kannst den Versand der E-Mail anstoßen. Gehe hierzu im Adminbereich in die Bestellung und dort zu den Zusatzfeldern. In dem Reiter "Guthaben-Verwaltung - Bestellung" setzt Du den Haken der Option "Kaufgutschein: Bearbeitet" zurück (inaktiv). Im Anschluss wird die Mail in den nächsten 5-10 Minuten nochmals versendet.
Gibt es eine Dokumentation zur API?
Unsere Erweiterung nutzt die Standard-Shopware API. Eine Dokumentation dazu findest Du hier: https://shopware.stoplight.io/docs/admin-api/twpxvnspkg3yu-quick-start-guide
Reading Entities: https://shopware.stoplight.io/docs/admin-api/600f678a6f688-reading-entities
Writing Entities: https://shopware.stoplight.io/docs/admin-api/18f58c5cb2012-writing-entities
Changelog
Version 6.0.1
BUGFIX | Steuerfreie Warenkörbe wurden teilweise nicht korrekt berechnet.
FEATURE | Option hinzugefügt, um Produktnummer als payload in Warenkorbpositionen anzugeben.
Anmerkungen:
Wenn du steuerfreie Länder aktiviert hast, füge bitte unseren Core-Hack aus den FAQ hinzu.
Version 5.0.8
FEATURE | Option hinzugefügt, um Produktnummer als payload in Warenkorbpositionen anzugeben.
Version 5.0.7
BUGFIX | Steuerfreie Warenkörbe wurden teilweise nicht korrekt berechnet.
Anmerkungen:
Wenn du steuerfreie Länder aktiviert hast, füge bitte unseren Core-Hack aus den FAQ hinzu.
Version 6.0.0
TASK | Kompatibilität mit Shopware 6.6.
Anforderungen:
Die Erweiterung erfordert nun mindestens Shopware Version 6.6.0.0.
Manuelle Aufgaben nach dem Update im Mail-Template "LENZ Guthabenverwaltung: Code senden":
Setze vor alle Variablen in Betreff, Absender, Text und HTML "templateData.", Beispiele:
- {{ templateData.credit.code }} -> {{ credit.code }}
- {{ templateData.order.orderNumber }} -> {{ order.orderNumber }}
- {{ templateData.order.orderNumber }} -> {{ order.orderNumber }}
- {{ templateData.salesChannel.translated.name }} -> {{ salesChannel.translated.name }}
- {{ templateData.order.orderCustomer.firstName }} -> {{ order.orderCustomer.firstName }}
Version 5.0.6
BUGFIX | Anzeige des Ablaufdatums im Kundeaccount korrigiert.
IMPROVEMENT | Option hinzugefügt, um Guthaben auf /checkout/confirm-Seite anzuzeigen.
IMPROVEMENT | Export-Funktion für Guthaben-Umsätze hinzugefügt.
Version 5.0.5
FEATURE | Option hinzugefügt, um Guthaben-Einlösen-Formular auf /checkout/confirm-Seite anzuzeigen.
Version 5.0.4
FEATURE | Option hinzugefügt, um einen Präfix für die Code-Generierung zu verwenden.
Version 5.0.3
IMPROVEMENT | Filter für Bestellnummer hinzugefügt.
Version 5.0.2
BUGFIX | cartLineItemOfType korrigiert.
Version 5.0.1
IMPROVEMENT | Datums-Format für Gültigkeitsdaten geändert.
FEATURE | Option hinzugefügt, um ein Guthaben auf einen speziellen Kunden festzulegen.
IMPROVEMENT | Produkte können nun mit Zusatzfeldern zu Kauf-Guthaben gemacht werden.
IMPROVEMENT | Unterstützung für Bestellungen mit Steuerstatus "net" und "tax-free".
IMPROVEMENT | Erstellungs-Quelle wird nun gespeichert und im Adminbereich angezeigt.
Version 5.0.0
IMPROVEMENT | Guthaben können nun Kunden zugeordnet werden und im Account angezeigt werden.
Version 4.0.0
IMPROVEMENT | Guthaben können nun Kunden zugeordnet werden und im Account angezeigt werden.
BUGFIX | Foreign key 'fk.lenz_credit_management_credit.order_line_item_id' entfernt.
Version 1.1.16
BUGFIX | Shopware 6.5 Template-Anpassungen.
Version 1.1.15
TASK | Kompatibilität mit Shopware 6.5.
Anforderungen: Das Plugin erfordert nun mindestens Shopware Version 6.5.0.0
Hinweis: VOR DEM UPDATE AUF SHOPWARE 6.5.0.0 die App deaktivieren, dann aktualisieren, dann aktivieren.
Manuelle Aufgaben nach dem Update im E-Mail-Template "LENZ Guthabenverwaltung: Code senden":
- Setze vor alle Variablen in Betreff, Absender, Text und HTML "templateData.", Beispiele:
{{ credit.code }} -> {{ templateData.credit.code }}
{{ order.orderNumber }} -> {{ templateData.order.orderNumber }}
{{ order.orderNumber }} -> {{ templateData.order.orderNumber }}
{{ salesChannel.translated.name }} -> {{ templateData.salesChannel.translated.name }}
{{ order.orderCustomer.firstName }} -> {{ templateData.order.orderCustomer.firstName }}
Version 1.1.14
TASK | UTF-8 Content-Typ zu Standard-Guthaben-Dokument hinzugefügt.
IMPROVEMENT | Route zur Guthaben-PDF-Vorschau hinzugefügt (/lenz-credit-management/buy-credit/test-pdf).
IMPROVEMENT | Option hinzugefügt, um "Ab-Datum" für Guthaben-Generierung zu setzen.
IMPROVEMENT | Guthaben-Code-Import Command verbessert.
IMPROVEMENT | Guthaben-Erstellung + Anhang-Erstellung verbessert.
TASK | "limit"-Parameter zu Befehl "lenz-platform-credit-management:charge-buy-credit" hinzugefügt.
Version 1.1.13
BUGFIX | Constraint fk.lenz_credit_management_credit.order_line_item_id korrigiert.
Version 1.1.12
TASK | Kompatibilität mit Plugins, die nicht EntityRepository verwenden.
Version 1.1.11
IMPROVEMENT | Steuersatz für Guthaben kann jetzt gewählt werden.
Hinweis: Bitte wähle 0% als Steuersatz in den Plugin-Einstellungen nach dem Update auf diese Plugin-Version.
Version 1.1.10
IMROVEMENT | Mindestbestellwert für Gutscheine hinzugefügt.
Version 1.1.9
BUGFIX | Behebt einen Fehler beim Bearbeiten von Bestellzeiten (Bestellung erstellen).
Version 1.1.8
FEATURE | PDF kann nun zu Kaufguthaben-Mail hinzugefügt werden.
Version 1.1.7
BUGFIX | Behebt einen Fehler beim Bearbeiten von Bestellzeilen.
Version 1.1.6
BUGFIX | Behebt Bestellmanipulation bei frontend.checkout.finsh.order und frontend.checkout.finish.page
IMPROVEMENT | Bestellmanipulation zu Mail-Templates mit OrderEntity hinzugefügt.
Version 1.1.5
BUGFIX | Notwendige Anpassungen zu checkout/register-Seite hinzugefügt.
IMPROVEMENT | Suche nach Guthaben im Adminbereich verbessert.
TASK | PHP 8.1 Kompatibilität
Version 1.1.4
BUGFIX | "In den Warenkorb"-Button im Listing versteckt.
Version 1.1.3
TASK | Kompatibilität für Produkt-Detailseite-CMS-Layout hinzugefügt.
IMPROVEMENT | "lenzcreditmanagementbuycredit" zu lineItemOfTypeRule hinzugefügt.
Version 1.1.2
IMPROVEMENT | Button hinzugefügt, um Code zu generieren.
IMPROVEMENT | Option hinzugefügt, um Shopware "Rabatte und Aktionen-Hinzufügen-Formular" zu verstecken.
BUGFIX | Verhalten beim Bearbeiten von Bestellungen korrigiert.
BUGFIX | Verhalten beim Bearbeiten von Bestellungen für Kaufgutscheine korrigiert.
Version 1.1.1
IMPROVEMENT | Option hinzugefügt, um Bestelldaten beim laden für bessere Dokumente zu manipulieren.
IMPROVEMENT | Zahlbetrag auf Dokumenten anzeigen.
BUGFIX | IF-Statement bei Bestellmanipulation korrigiert.
BUGFIX | Mail-Templates wurden bei Deinstallation nicht korrekt entfernt.
IMPROVEMENT | URL als Variable in Mail-Template ergänzt.
TASK | Beschreibung in Plugin-Konfiguration verdeutlicht.
Version 1.1.0
FEATURE | Guthaben kann nun von Kunden als "Produkt" gekauft werden.
Version 1.0.2
IMPROVEMENT | Ablaufdatum für Guthaben hinzugefügt.
Version 1.0.1
IMPROVEMENT | Shopify-Modus hinzugefügt.
IMPROVEMENT | Import-Kommando für Shopify-Gutscheine hinzugefügt.
IMPROVEMENT | Regel für Typ "lenzcreditmanagementcredit" hinzugefügt.
IMPROVEMENT | Suche nach Code in Administration hinzugefügt.
TASK | Übersetzungen in Administration hinzugefügt.
IMPROVEMENT | Unterstützung für Komma im Wertveränderungsfeld.
BUGFIX | Deinstallation löscht nun alle Tabellen korrekt.
TASK | Code ist nun ein erforderliches Feld.
IMPROVEMENT | Informativere Fehlermeldungen für Credit-Controller hinzugefügt.
TASK | Fehlende Sichtbarkeit einer Funktion hinzugefügt.
BUGFIX | Unklare Fehlermeldung verhindert.