Shopsystem ShopPilot Shoploesung Diskussionen und Infos zum Shopsystem ShopPilot
Willkommen Gast. Bitte einloggen oder registrieren.
Oktober 25, 2014, 06:10:19

Einloggen mit Benutzername, Passwort und Sitzungslänge
Suche:     Erweiterte Suche
5472 Beiträge in 1507 Themen von 344 Mitglieder
Neuestes Mitglied: Jep
* Übersicht Hilfe Login Registrieren
+  Diskussionen und Infos zum Shopsystem ShopPilot
|-+  ShopPilot
| |-+  SSP - Shop Server Pages
| | |-+  Ajax Beispielanwendungen (Moderator: dobra)
| | | |-+  "nicht auf Rechnung" ohne login
0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: "nicht auf Rechnung" ohne login  (Gelesen 1654 mal)
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1269


WWW
« am: Februar 24, 2010, 07:34:14 »

Wenn man die Zahlart "auf Rechnung" nur Stammkunden anbieten will, kann man diese Option bei eingelogten Kunden ja sehr einfach mit Callback::exclude_zahlart ausblenden.

Etwas problematischer ist das bei nicht eingelogten Kunden, aber mit SopPilot gibt's kein "geht nicht"  Wink
Mit ajax ist auch das möglich!

Die Aufgabe:
bei Erstbestellung sollen die Kunden NICHT auf Rechnung zahlen können
Stammkunden - egal ob eingelogt oder nicht - aber schon (ich möchte ja meine "alten" Kunden, die immer brav gezahlt haben nicht verärgern)

Die Lösung:
wie immer Voraussetzung dass die nötigen Ajax-Scripte bereits eingebunden sind:
der "ajax"-Ordner ist im Shopverzeichnis vorhanden, die Dateien sind im WC in "Dateien hinzufügen" Liste eingetragen und in der Seite, auf der ajax verwendet werden soll eingebunden.
(wenn ajaxsearch installiert ist, sind alle Voraussetzungen bereits erfüllt)

1) eine checkorder.html Datei mit Inhalt <!--spmacro:include(ajax/order.ipl)--> erstellen und im "ajax" Ordner ablegen
2) eine Infoseite mit beliebigem Namen anlegen und bei "Vorlage" checkorder.html eintragen
3) die Dateien order.ipl und order.js ebenfalls im "ajax" Ordner anlegen

order.ipl
Code:
<!--spmacro:module(mail)

## BITTE KEINE ÄNDERUNGEN VORNEHMEN
#____________________________________________________________________                    
push(@INC,'ajax');
require "JSON.pm";


print "Content-Type: text/plain;charset=ISO-8859-1\n\n";
#use utf8;
my $pCall = JSON::jsonToObj($main::input);
my %result;
$result{_call} = $pCall;

if ($pCall->{method} eq 'orderMail') {
  $result{_orderMail} = 1;
  
  my $mail =  $pCall->{params}[0]; # Die eingetippte MailAdresse
  
  my $ORDERS = ssp::db_get_prefix() . "ORDERS";
  my $sql = qq|SELECT EMAIL FROM $ORDERS WHERE EMAIL='$mail' AND ATYPE=0|;

  if (!length($mail)) {$result{_orderMail} = 0;}
else {
 my $read = ssp::readSQLData($sql, "count");
 if ($read){
   if(ssp::get_var_db("count", 0)){
     #Bestellung unter Mail vorhanden
     $result{_orderMail} = 1;
   }
 } else {$result{_orderMail} = 3;}
}
}

print JSON::objToJson(\%result);
exit 0;

-->

order.js
Code:
// Wird aufgerufen wenn Formular abgesendet
var re = false;
function orderRechnung(){

 if (-1 != myinterfaceOrder.search(/__xxspath__\?/)) {
      return;
  }
  
  if (document.getElementById("order_mail")) { var email = document.getElementById('order_mail').value;} // Hier muss id des input-Felder rein
  
  var postdata = {
method : 'orderMail',
id : 0,
params : [email]
};
try {
req = new HTTP.Request(
{
uri: myinterfaceOrder,
postbody: postdata.toJSONString(),
onSuccess: function (trans) {
var data;
try {
data = eval('('+trans.responseText+')'); // JSON "parsen"
} catch(e) {
return;  
}
        var resultMail = data['_orderMail']; //Wenn 1 dann mail nicht eingetragen
 
 
       if (resultMail == 1){
     document.getElementById("naR").innerHTML = '';
        }
          if (resultMail == 3){
     document.getElementById("naR").innerHTML = 'auf "offene Rechnung" kann nur an Stammkunden geliefert werden!<br>Bitte wählen Sie im <a href="http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?showwk,">Warenkorb</a> eine andere Zahloption.';
          }

if (resultMail == 1) {
re = true;
            document.getElementById('orderF').submit();
}

}
      
});
}
catch(e)
{
return;
}
  if(re == true){
    return true;
  }
  else{
    return false;
  }
}

HTML in der "Rechnung" Vorlage
im head
Code:
<script type="text/javascript" src="../ajax/order.js"></script>  
<script type="text/javascript">
 // Server-URL für die Ajax-Abfragen
 var myinterfaceOrder = "__xxspath__?ajax1200006190,__xxsession__";  
</script>
ajax1200006190 -> hier muss die Seitennr. der Infoseite eingetragen werden

im Form-Tag
<form METHOD="post" id="orderF" ACTION="__SERVER__#fehler" onSubmit="return orderRechnung();">

damit wird die Bestellung NUR DANN abgesendet, wenn der Kunde schon mindestens 1x bestellt hat.
anderenfalls wird die Meldung "nix Rechnung - andere Zahloption wählen" mit Backlink zum WK ausgegeben.

Dazu noch an der Stelle an der die Meldung ausgegeben werden soll
<span class="errortext" id="naR">&nbsp;</span>
einfügen.

Damit die eingetippte email auch an das ajax-Script übergeben werden kann, muss jetzt diesem Input noch eine ID zugewiesen werden
<input name="eMail" id="order_mail" size="29" maxlength="50" value="__eMail__">
Gespeichert

Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  

mysitelist Impressum Powered by SMF 1.1.19 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS