Autor Thema: Gutschein auf Guthabenkonto buchen  (Gelesen 2814 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1337
  • Lob: 18
    • ShopPilot AT
Gutschein auf Guthabenkonto buchen
« am: Dezember 13, 2009, 08:33:11 »
Aufgabe:
Der Kunde soll (Wert)Gutscheine auf sein Konto buchen können
(wie es z.B. bei Amazon gemacht werden kann)

Lösung:

1) ein *echtes* Guthabenkonto für eingelogte Kunden anlegen
(s. http://www.shoppilot.net/pf/shopbetrieb/4/echtes-guthabenkonto-bauen/1159/msg4308#msg4308)

2) ein Infoseite anlegen, auf der der Kunde die Gutscheinnr. eingeben und auf sein Konto buchen kann und diese Seite - sinnvollerweise nur für eingelogte Kunden sichtbar - verlinken.

Code auf dieser Seite
<!--spmacro:module(gutschein)
sub buchen {
if (length($main::userid)) {
my $pre = ssp::db_get_prefix();
my $USR = $pre . "USR";
my $ITEM = $pre . "ITEM";
my $kdnr = ssp::get_var_user("kundennr");
my $gscode = ssp::qform(ssp::get_var_form('gscode')) ;
my $jetzt = time();
my $showgsum;
my $showsum2;
my $gsum;

ssp::readSQLData(qq|SELECT GUTSCHBETR  FROM $USR WHERE KUNDENNR = '$kdnr'|, "GUTSCHBETR ");
my $wert =  ssp::get_var_db('GUTSCHBETR ',0);

    ssp::readSQLData("SELECT PRICE FROM $ITEM WHERE ITEMID='$gscode' AND (STAFP2 >='1' OR STAFP2 = '') AND (STAFP4 > $jetzt OR STAFP3 = '0')","PRICE");

            $gsum = ssp::get_var_db("PRICE",0);
$gsum =~ s/-//g;
$showgsum = main::fp($gsum);
if (length($gsum) && $gsum ne "undefined") {
if ($gsum > 0) {
$showgsum = qq|Der Betrag von $showgsum wurde Ihrem Konto gutgeschrieben|;
}
}
else {
if (length($gscode) && $gscode ne "undefined") {$showgsum = qq|ungültiger Code, Gutschein bereits eingelöst oder abgelaufen|; }
}

$gsum2 = $gsum + $wert;
$showsum2 = main::fp($gsum2);

if (length($gsum) && $gsum ne "undefined") {
my $sql = qq|UPDATE $USR SET GUTSCHBETR  = "$gsum2" WHERE KUNDENNR = '$kdnr'|;
ssp::exec_sql($sql, 1);
my $sql2 = qq|UPDATE $ITEM SET STAFP2 = "0" WHERE ITEMID = '$gscode'|;
ssp::exec_sql($sql2, 1);
ssp::db_update_usr($kdnr,"GUTSCHBETR ",$gsum2)
}

main::mprint ("$showgsum <br><br> <b>Ihr aktuelles Guthaben: $showsum2</b>");
}
else { main::mprint ("Sie müssen eingelogt sein, um Gutscheine auf Ihr Konto buchen zu können!"); }
}
-->

Im HTML-Bereich dann das Formular
       <form Method="Post" name="gsgebucht" action="__xxpath__?showbynamegsbuchen" autocomplete="off">
<b>Gutschein-Nr:</b>
   <input type="text" name="gscode" size="18">
            <input type="submit" value="auf Guthabenkonto buchen">
</form>
<br> __gutschein::buchen__

Wenn die Infoseite nicht "gsbuchen" heißt, muß das showbynamegsbuchen entsprechend angepasst werden.

Wie funktioniert es?
Kunde gibt hier seine GS-Nr. ein wie im Warenkorb.
Ist der GS OK (also in der DB vorhanden, noch nicht eingelöst oder abgelaufen) wird der Wert auf sein Guthabenkonto gebucht und der GS in der DB als "eingelöst" eingetragen.
(er soll ihn ja schließlich nicht nochmal im WK einlösen können  ;))
Auf der "Gutschein buchen" Seite wird das aktuelle Guthaben und im Erfolgsfall der gebuchte GS-Wert ausgegeben.
Ist der GS-Code falsch (oder schon eingelöst oder abgelaufen) wird die entsprechende Fehlermeldung angezeigt

Im WK wird das Guthaben automatisch vom Rechnungsbetrag abgezogen bzw. wenn Rechnungsbetrag kleiner als Guthaben dieses aktualisiert wie schon bei "echtes Guthabenkonto bauen" beschrieben.
Neu ist jetzt nur, dass der Kunde eben Gutscheine selber auf sein Konto buchen kann.

Möchte man dass NUR Wertgutscheine aber keine Promotion-GS gebucht werden können, muss man diese mit einer bestimmten Zeichenfolge kennzeichnen und als Bedingung abfragen.

Beispiel:
Promotion-GS beginnen mit _GS_pr....
my $gscode = ssp::qform(ssp::get_var_form('gscode')) ;

if ($gscode !~ /^_GS_pr/)  {
...
...
}
else {main::mprint ("<br>Promotion-GS können nur im Warenkorb eingelöst werden!"); }


Linkback: http://www.shoppilot.net/pf/shopbetrieb/4/gutschein-auf-guthabenkonto-buchen/1340/
« Letzte Änderung: Dezember 13, 2009, 09:08:01 von dobra »
mfG
dobra
______________________________
Betreute Shops:
Barrique Einzelhandel
Barrique Großhandel


lamp
echtes GUTHABENKONTO bauen

Begonnen von dobra

0 Antworten
3057 Aufrufe
Letzter Beitrag November 15, 2008, 08:22:17
von dobra
xx
Testen, ob ein Gutschein im WK liegt

Begonnen von admin

0 Antworten
4238 Aufrufe
Letzter Beitrag März 09, 2010, 11:00:07
von admin
xx
Gutschein - Eingabe prüfen?

Begonnen von dobra

2 Antworten
4509 Aufrufe
Letzter Beitrag Mai 28, 2010, 10:42:08
von admin
xx
Globaler Gutschein - aber nicht für ....

Begonnen von Andi

12 Antworten
6820 Aufrufe
Letzter Beitrag Dezember 20, 2007, 10:44:55
von dobra