Hallo,
Aufgabe:
Ein Gutschein soll nur von einem bestimmten Kunden eingelöst werden können - also nicht von jedem, der die GS Nummer kennt
(das funktioniert natürlich nur, wenn der Kunde eingeloggt ist!)
Lösung:
Ein Artikelfeld "PERS" anlegen.
Bei dem betreffenden Gutschein in diesem Feld die Kundennummer des Kunder der diesen GS exklusiv einlösen können soll eintragen.
Bei der GS-Nummer ist jetzt eine Kennzeichnung notwendig
Gutscheine beginnen normalerweise mit _GS_ und dann ein beliebiger Code
Soll der GS personalisiert werden, nach dem _GS_ ein bestimmtes Zeichen (oder Zeichenfolge) verwenden, die sonst NICHT verwendet wird.
Im Beispiel "xy" - die GS Nr. für personalisierte GS beginnt also mit _GS_xy......, für nicht personalisierte GS mit _GS_..... (irgendwas aber NICHT xy)
Code in stdplacecart.ipl
<!--spmacro:module(gutschein) {
#Die Datei enthält keine Funktionen, der Code wird direkt in den Rumpf des Moduls geschrieben
my $item = ssp::qform(ssp::get_var_form('directItem'));
my $kdnr = ssp::get_var_user('kundennr');
if ($item =~ /_GS_xy/) {
my $pre = ssp::db_get_prefix();
my $ITEM = $pre . "ITEM";
my $count = ssp::readSQLData("SELECT PERS FROM $ITEM WHERE ITEMID='$item'","PERS");
if ($count >= 0) {
my $i=0;
while ($count > $i) {
my $pers = ssp::get_var_db("PERS",$i);
++$i;
if ($pers != $kdnr) {
ssp::set_var_form('directItem',"irgendwas");
#Ich setze das "directItem" einfach auf eine nicht vorhandene Artikelnummer, so dass "ungültiger Gutschein" ausgegeben wird.
}
}
#Bei erfolgreicher Abfrage der Datenbank passiert nichts und der Gutschein wird in den Warenkorb gelegt.
}
}
}
-->
Danke an cru der mir diesen Code mal für einen anderen Zweck gegeben hat!
Linkback: https://www.shoppilot.net/pf/index.php?topic=1160.0