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"
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
<!--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
// 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
<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"> </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__">
Linkback: https://www.shoppilot.net/pf/index.php?topic=1390.0