Autor Thema: Promotion GS soll pro Kunde nur 1x eingelöst werden können  (Gelesen 5219 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Promotion GS soll pro Kunde nur 1x eingelöst werden können
« am: November 24, 2012, 23:42:44 »
Hallo,

Wenn Promotion GS (z.B. per Newsletter) versendet werden, ist das ja i.d.R. nur EIN GS-Code den alle bekommen.
= "Anzahl begrenzen" ist nicht aktiviert.
Wie kann man also erreichen, dass jeder Kunde diesen GS nur einmal einlösen kann ?

Mit ein bisschen ssp geht's :)
(leider funktioniert meine Lösung aber nur bei eingeloggte Kunden - im Script können nicht eingeloggte Kunden den GS nicht einlösen)

Änderungen im WC:
1)  ein ben.def. Kundenfeld "XGS" anlegen
2)  unter Datenbank -> Optionen -> Datenfelder/Repliz.  Datenreplizierung abschalten "für Kundendaten" anhaken !
     Das ist wichtig da das XGS-Feld sonst bei jedem DB neu anlegen überschrieben würde = der Kunde den beireits eingelösten GS doch nochmals einlösen könnte.

Scripte:
in der Warenkorb-Vorlage im head-Bereich
<!--spmacro:module(test)
 sub gssuchen {
my $index = $_[0];
my $anzahl = $_[1];
  if ($index <= $anzahl) {
for ($i=0;$i<=$anzahl;$i++) {
             my $wert = ssp::get_var_cart('id',$i);
    if ($wert =~ /_GS_/) {
      ssp::cart_write_var('gsimwk', $wert);
         }  else {  
      ssp::cart_write_var('gsimwk', 0);
  }
}
}
}
-->
__test::gssuchen__
hier wird abgefragt ob ein GS im WK liegt und wenn ja wird der Code in die cart-Datei geschrieben um ihn nachher auf der Danke-Seite abgerufen zu können.

"Danke" Seite (ebenfalls im head Bereich)
<!--spmacro:module(Callback)
sub begin_read_template {

if ($ssp::xxsession != 4711471147) {
my $pre = ssp::db_get_prefix();
my $USR = $pre . "USR";
my $kdnr = ssp::get_var_user("kundennr");
my $wert = ssp::cart_read_var('gsimwk');
if ($wert =~ /_GS_/) {

my $count = ssp::readSQLData("SELECT XGS FROM $USR WHERE KUNDENNR='$kdnr'","XGS");
my $oldwert = ssp::get_var_db("XGS",0);
$wert = "$oldwert : $wert";
my $sql = qq|UPDATE  $USR SET XGS = "$wert" WHERE KUNDENNR = $kdnr|;
ssp::exec_sql($sql, 1);
ssp::db_update_usr($kdnr,"XGS",$wert)
}
}
}
-->
der eingelöste GS-Code wird in das neue XGS-Kundenfeld geschrieben.
Steht hier bereits ein Code, wird der neue mit ":" getrennt angehängt.

in stdplacecart.ipl
(falls nicht vorhanden - anlegen und nicht vergessen in die "Dateien hinzufügen" Liste eintrage)
<!--spmacro:module(gutschein) {
my $kdnr = ssp::get_var_user('kundennr');
my $pre = ssp::db_get_prefix();
my $USR = $pre . "USR";
my $count = ssp::readSQLData("SELECT XGS FROM $USR WHERE KUNDENNR='$kdnr'","XGS");
my $kdgs = ssp::get_var_db("XGS",0);
  my $item = ssp::qform(ssp::get_var_form('directItem'));

if ($kdgs =~ /$item/ || $kdnr eq "undefined") {
        ssp::set_var_form("directItem",nixGS);    
}
  }
-->
Abfrage ob Kunde diesen GS bereits eingelöst hat.
Wenn "ja" wird directItem einfach auf eine nicht vorhandene Artikelnummer("nixGS") gesetzt, so dass "ungültiger Gutschein" ausgegeben wird.  

ACHTUNG:
Damit das Script auch bei mehreren GS funktioniert und nicht der Promotion-GS überschrieben wird wenn der Kunde bei einer nächsten Bestellung einen anderen GS einlöst, werden alle eingelösten GS mit =~ (ist enthalten) abgefragt.
Wenn der Kunde also z.B. den Gutschein _GS_1234 bereits eingelöst hat, kann auch _GS_123 nicht mehr eingelöst werden da dieser Code ja in _GS_1234 enthalten ist.


@ support
gibt es eine Lösung die auch für nicht eingeloggte Kunden funktioniert ?  (::))

Linkback: https://www.shoppilot.net/pf/index.php?topic=1636.0
mfG
dobra


xx
Link soll auf statischen Seiten dynamisch bleiben

Begonnen von dobra

1 Antworten
4072 Aufrufe
Letzter Beitrag Oktober 14, 2007, 09:45:56
von dobra
xx
Mehrere Lieferadressen pro Kunde

Begonnen von admin

1 Antworten
7096 Aufrufe
Letzter Beitrag September 04, 2015, 14:00:10
von Ingolf
xx
neuer Kunde in Auftragsliste?

Begonnen von dobra

2 Antworten
5509 Aufrufe
Letzter Beitrag August 30, 2007, 12:33:01
von dobra
xx
mehrere Lieferadressen je Kunde

Begonnen von Ingolf

2 Antworten
5591 Aufrufe
Letzter Beitrag September 23, 2016, 22:46:39
von Ingolf