Individuelle Gutscheine im PDF-Sammeldruck erzeugen (gelöst)

Hallo community, Ich möchte meinen Neukunden einen Gutschein zur ersten Bestellung mitsenden. Dafür habe ich einen Gutschein mit 1000 individuellen Codes angelegt und den PDF Gutschein-Beleg durch mein eigenes Template erweitert. So weit so gut. Normalerweise erzeuge ich einmal täglich alle nötigen PDF-Belege (Rechnungen) und starte einen Sammeldruck. Ähnlich hatte ich mir das mit den Gutscheinen vorgestellt. Im Backend ein Häckchen bei jeder neuen Bestellung setzen -> Belege verarbeiten -> Art des Belegs: Gutschein -> Erstellen -> Drucken. Leider erscheint kein Code auf dem Druck. Das liegt daran, dass Shopware natürlich wissen muss, von welcher Gutschein-Code-Sammlung die Codes kommen sollen. Ich kann also im Moment nur Gutscheine erstellen, indem ich jede Bestellung im Backend aufrufe und den Gutschein-Beleg für jede Bestellung einzeln erstelle. Das ist selbstverständlich zu viel Herumgeklicke und zu viel Arbeit. Oder habe ich etwas übersehen? Weiß hier jemand, wie ich Gutscheine für mehrere Bestellungen gleichzeitig erzeugen kann? Viele Grüße

Hallo, den individuellen Code kann man nur auf der “Detailseite” auswählen und speziell für einen Beleg auf dem PDF generieren. In der Sammelverarbeitung geht das nicht. Du könntest du also nur über die Templateanpassung einen global gültigen Code integrieren. Dieser kann ja wie ein individueller aussehen, z.B. XxzM77zT Einschränken, dass diese ggf. nur 6 Monate nutzbar ist, um die Bestellung versandkostenfrei zu bekommen. Einlösbar je Kunde 1x

Das könnte funktionieren. Nur sehe ich ein Problem bei Stammkunden: da sie den Gutschein bei ihrer letzten Bestellung bereits eingelöst haben, können sie ihn kein zweites Mal verwenden. Das ließe sich nur über individuelle Codes lösen, die mit jeder Bestellung mitgesendet werden und nur für die nächste Bestellung gültig sind. Stattdessen habe ich die folgende Lösung: Im Template wird ein neuer Code generiert und zur Datenbank hinzugefügt. [color=red]ACHTUNG! ABSOLUT OHNE GEWÄHR! VERWENDUNG AUF EIGENE GEFAHR! WEDER SAUBERE, NOCH SICHERE LÖSUNG![/color] Dazu lege ich in meinem Template-Ordner einen neuen Gutschein-Template an und erstelle dazu den entsprechenden PDF-Beleg in den Grundeinstellungen. Zusätzlich muss ein neuer Gutschein mit folgenden Eigenschaften angelegt werden: Modus: Individuell Stückzahl: beliebig große Zahl: zum Beispiel 10000 Alle anderen Eigenschaften wie gewohnt eintragen. AUF KEINEN FALL Gutschein-Codes generieren! Sie werden in dieser Lösung erst bei der PDF-Erstellung generiert. In der neuen /templates/xxx/documents/gutschein-versandkostenfrei.tpl Datei überschreibe ich den entsprechenden Template-Block. Hier der Inhalt dieser .tpl Datei: {extends file="../\_default/documents/gutschein.tpl"} {block name="document\_voucher\_customer\_text"} {s name="DocumentIndexVoucher"}{/s} {/block} Den zugehörigen Textbaustein DocumentIndexVoucher fülle ich mit folgendem Text/Code: [code]Im Rahmen unserer Aktionen schenken wir Ihnen für den nächsten Einkauf im Beispiel-Onlineshop einen Gutschein mit dem Sie ab einem Wert von 25 Euro versandkostenfrei bestellen. Dieser Gutschein ist gültig bis 31. Juli 2012.

Gutscheincode: {php}include(„voucher-code.php“);{/php}
[/code] Zusätzlich wird eine voucher-code.php Datei benötigt. Sie liegt im gleichen Templateordner wie die eben erstellte .tpl Datei. Ihr Inhalt ist mehr oder weniger aus mit ein paar Änderungen der /engine/backend/modules/vouchers/ajax/code_generator.php Datei übernommen. [code]<?php function generateVoucherCode() {
mt_srand ((double) microtime() * 1000000);
$voucherCode = „“;
$chars = „123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ“;
for ($k = 0; $k < 8; $k += 1) {
$num = mt_rand(0, strlen($chars)-1);
$voucherCode .= $chars[$num];
}
return $voucherCode;
}

$id = 4; // DIESE ID MUSS DURCH DIE ID DES VOUCHERS (aus der s_emarketing_vouchers Tabelle ablesen) ERSETZT WERDEN!

do {
$ticketCode = generateVoucherCode();
$checkCode = mysql_query(„SELECT id FROM s_emarketing_voucher_codes WHERE voucherID=$id AND code=’$ticketCode’“);
} while (mysql_num_rows($checkCode) > 0); mysql_query(„INSERT INTO s_emarketing_voucher_codes (voucherID, code) VALUES ($id,’$ticketCode’)“); echo $ticketCode; ?>[/code] So funktioniert es bei mir auf dem Testsystem. Wer das hier im Webshop so einsetzt, tut das auf eigene Gefahr! Jetzt lassen sich individuelle Gutscheincodes auch über den Sammeldruck erzeugen: Grüße