Jump to content
xt:Commerce Community Forum

Gutschein/Kupons-Modul gibt keine Gutscheincodes aus


statist

Recommended Posts

Hallo zusammen,

versuche verzweifelt Folgendes hinzubekommen:

- Kunde kauft Gutschein

- Kunde erhält in der Bestätigungsmail den Gutschein-Code, den er zum Einlösen des Gutscheins verwenden kann

Hab mittlerweile schon mehrmals nach Anleitung das Modul installiert, angepasst und eingestellt. Die nach Anleitung generierten Codes werden aber nirgends ausgegeben, weder in der Bestätigungsmail noch im Login-Bereich des Kunden noch bei der Statusmail, dass die Zahlung eingegangen ist.

Muss ich manuell noch eine Variable (die nicht in der Anleitung genannt ist) zur Ausgabe des Gutscheincodes in die Mail bzw in den Login-Bereich einbauen? Weiß jemand Rat?

Vielen Dank im Voraus!

Link to comment
Share on other sites

Moin,

die vom Modul generierten Codes dienen eher de rWeiterverarbeitung durch Mailprogramme oder ähnliches. Du kannst sie einfach als CSV exportieren. Eine ausgabe der generierten Codes gibt es nicht. Ich würde folgenderweise vorgehen:

1. Codes generieren

2. Codes als csv exportieren

3. Artikel Gutschein als Artikel mit Seriennummer markieren

4. csv über ein kleines Script in die xt_products_serials Datenbank importieren

5. Nach jedem Kauf erhält der Kunde jetzt seinen Gutscheincode (Seriennummer).

LG

Link to comment
Share on other sites

Hallo Sentor77,

danke für Deine Antwort. Klingt etwas kompliziert für einen Standardablauf... Hab die Codes nun als CSV vorliegen mit coupon_name, coupon_id und coupon_token_code. Müssen alle drei Spalten importiert werden oder reicht der Code an sich? Wie sieht ein solches Import-Script aus?

Vielen Dank im Voraus!

Link to comment
Share on other sites

Importiere nur die Codes und lege dir deine Scriptdatei und die CSV in ein beliebiges Verzeichnis auf deinem Webserver. Das Script könnte ungefähr so aussehen:


$db = new PDO("mysql:host=localhost;dbname=DEINDBNAME", "DEINBENUTZERNAME", "DEINPASSWORT");

$handle = fopen("serialCodes.csv", "r");
$tmp = array();
while(!feof($handle)) {
$tmp[] = fgetcsv($handle);
}

$values = "";
foreach($tmp as $data) {
$values .= "('".$data[0]."', 1, PRODUCTID),";
}
$values = rtrim($values,",");
$sql = "
INSERT INTO `xt_products_coupons` (`serial_number`, `status`, `products_id`)
VALUES ".$values.";
";
$db->query($sql);[/PHP]

Ersetze bitte in der ersten Zeile die Platzhalter mit deinen Benutzerdaten für die DB und "PRODUCTID" durch die ID des Gutschein Artikels.

Sollte dann eigentlich recht schnell gehen. Ich überlege breits ob ich daraus nicht ein Plugin schreibe.

LG

Link to comment
Share on other sites

Wenn du unterschiedliche Gutscheine verkaufen möchtest, musst du 2 Artikel anlegen, beide Gutscheine erstellen und für jeden die entsprechnden Codes generieren und das Script 2 mal ausführen. einmal mit der csv für Artikel 1 und der ID des Artikel 1 und einmal mit der csv für Artikel 2 und der ID für Artikel 2

LG

Link to comment
Share on other sites

Ich hba den Code noch einmal modifiziert. Mann kann ja nur alle Gutscheincodes exportieren und auch nicht wirklich entscheiden was exportiert werden soll.

Diesbezüglich habe ich eine IF-Abfrage eingebaut, in der du GUTSCHEINID durch die gewünschte GutscheinId ersetzt (zb 2 für Gutschein im Wert von 20€ oder 6 für Gutschein im Wert von 10 € je nachdem welche id sie bekommen haben).

Demnach musst du also die komplette Liste exportieren mit allen drei Zeilen. dann läuft es. Achso, der Index im Array hat sich auch geändert (aus 0 wurde 2).

LG


$db = new PDO("mysql:host=localhost;dbname=DEINDBNAME", "DEINBENUTZERNAME", "DEINPASSWORT");

$handle = fopen("serialCodes.csv", "r");
$tmp = array();
while(!feof($handle)) {
$tmp[] = fgetcsv($handle);
}

$values = "";
foreach($tmp as $data) {
if($data[1] == GUTSCHEINID) {
$values .= "('".$data[2]."', 1, PRODUCTID),";
}
}
$values = rtrim($values,",");
$sql = "
INSERT INTO `xt_products_coupons` (`serial_number`, `status`, `products_id`)
VALUES ".$values.";
";
$db->query($sql);[/PHP]

Link to comment
Share on other sites

Danke für den aktualisierten Code. Hat soweit alles geklappt, die Seriennummer hätte wie hier beschrieben in die Mail eingebettet, wird aber nicht übermittelt. Auch in der Bestellübersicht wird die Seriennummer nicht angezeigt. An was kann's nun noch liegen?

Vielen Dank im Voraus!

Link to comment
Share on other sites

Damit müsste ich mich ein wneig genauer befassen, werde ich aber wohl in diesem Jahr nicht mehr schaffen.

Das Plugin werde ich schreiben. Ich habe gerade mit meinen Chefs gesprochen und sie würden diese Funktion auch gerne nutzen wollen.

Ich kann dir ja dann bescheid geben wenn ich was entsprechendes fertig habe. Aber wie gesagt, in diesem Jahr wird das nichts mehr.

LG

Link to comment
Share on other sites

So,

letztes Update für heute. Es hatte sich der Fehlerteufel bei dem Tabellennamen eingeschlichen. Desweiteren habe ich eine Ausgabe eingebaut, damit man weiß ob alles geklappt hat.

LG


$db = new PDO("mysql:host=localhost;dbname=DEINDBNAME", "DEINBENUTZERNAME", "DEINPASSWORT");

$handle = fopen("testcoupons.csv", "r");
$tmp = array();
while(!feof($handle)) {
$tmp[] = fgetcsv($handle);
}
$values = "";
foreach($tmp as $data) {
if($data[1] == GUTSCHEINID) {
$values .= "('".$data[2]."', 1, PRODUKTID),";
}
}
$values = rtrim($values,",");
$sql = "
INSERT INTO `xt_products_serials` (`serial_number`, `status`, `products_id`)
VALUES ".$values.";
";
if($res = $db->query($sql)) {
echo "Alles gut!";
} else {
echo "Da stimmt was nicht!";
}[/PHP]

Link to comment
Share on other sites

Hast du beim exportieren der Datei den "Trenner" auf "," umgestellt? Der steht Standardmäßig auf ";".

Sollte das nicht der Fall sein hast du 2 Möglichkeiten:

1. Noch einmal exportieren mit "," als Trennzeichen

2. den obigen Code an einer Stelle ändern

$tmp[] = fgetcsv($handle);[/PHP]

ändern in

[PHP]$tmp[] = fgetcsv($handle,0,"TRENNZEICHEN");[/PHP]

Link to comment
Share on other sites

Nein, Trenner ist ";". Die exportierte Datei sieht so aus:

"coupon_name";"coupon_id";"coupon_token_code"
"25 EUR Gutschein";"1";"PD-G8M-1234"
"25 EUR Gutschein";"1";"JS-ISV-1234"
"25 EUR Gutschein";"1";"NC-7OF-1234"
"25 EUR Gutschein";"1";"C2-MLC-1234"
"25 EUR Gutschein";"1";"1I-MGQ-1234"
"25 EUR Gutschein";"1";"V5-8SX-1234"
"25 EUR Gutschein";"1";"4G-5DH-1234"
"25 EUR Gutschein";"1";"IR-VEK-1234"
"25 EUR Gutschein";"1";"C5-SE8-1234"
"25 EUR Gutschein";"1";"4H-7Z6-1234"[/HTML]

Link to comment
Share on other sites

hmm..hast du den dateinamen angepasst?

$handle = fopen("testcoupons.csv", "r");[/PHP]

Bei mir läuftes einwandfrei. Habe beim Testen die fehler gefunden, die ich weiter oben bereits korrigiert habe. Schau dir noch mal die Array Einträge an. Entscheidend sind der Index $data[1] für die Gutschein ID und $data[2] für den Gutschein Code.

Hast du alle Werte die ich in Großbuchstaben geschrieben habe dur entsprechende Werte ersetzt?

DEINDBNAME, DEINBENUTZERNAME, DEINPASSWORT,

GUTSCHEINID: Die ID des Gutscheins welcher dem Produkt zugewiesen werden soll

PRODUKTID: Die Produkt ID des Produkts

LG

P.S. Welche Fehlermeldung kommt denn?

Link to comment
Share on other sites

Jetzt wirds langsam schwierig,

ändere mal folgendes:

$sql = "
INSERT INTO ".TABLE_PRODUCTS_SERIAL." (`serial_number`, `status`, `products_id`)
VALUES ".$values.";
"; [/PHP]

Vielleicht benutzt du ein einen anderen Prefix.

Sag einmal, das Seriennummern Plugin hast du aber installiert, oder?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...