also wenn ich das jetzt richtig verstanden habe, bekommen alle Kunden 4 % Zahlartrabatt bei Vorauskasse.
zusätzlich bekommen eingelogte Kunden einen höheren Rabatt, gestaffelt nach "bisherigem Einkauf"
---> "bisheriger Einkauf = was er insgesamt bisher eingekauft hat (also bei früheren Bestellungen)
(Du meinst damit nicht den Staffelreabatt nach Warenwert bei dem aktuellen Einkauf?)
also Kunde A hat bereits 5x bestellt und damit eine Gesamteinkaufssumme erreicht bei der er z.B. 6% Rabatt bei Zahlung mit Vorauszahlung erhalten soll (keinen Rabatt bei anderen Zahlungsarten) und Du willst diese 6% dann manuell im Kundenfeld eintragen.
Diese Rabattstaffeln - bzw. den aktuellen Rabatt für den jeweiligen Kunden - kannst Du natürlich im Kundenkonto ausgeben.
Damit der Kunde diese Rabatte auch berechnet und angezeigt bekommt MUSS er sich einloggen - sonst kann ja der eingetragene Rabatt ja nicht zugewiesen werden!
Aber Du hast recht - ein im Kundendialog eingegebener Rabatt gilt für alle Artikel und alle Zahlarten.
Wenn Du den Rabatt also von irgendwelchen Bedingungen abhängig machen willst, geht das soweit ich herausgefunden habe, nur mit
<!--spmacro:module(Callback)
sub invoice_addpos { ....
}
-->
also ein eigenes Kundenfeld anlegen, wo Du den jeweis gültigen Rabatt einträgst und dieses Feld dann abfragst.
s.
http://www.shoppilot.net/pf/ssp_shop_server_pages/myrabatt_nicht_fuer_bestimmte_artikel_auch_keine_anderen_rabatte-t1260.0.html#msg4549mal grob skizziert:
Im Kundenfeld z.B. "USERRABATT" hast Du "6" eingetragen.
Du fragst also ab, welche zahlart gewählt ist
my ($zahlart) = ssp::get_cart_zahlart();
und ob etwas in dem Feld "USERRABATT" steht
my $userrabatt = ssp::get_var_user("USRRABATT");
if (length($userrabatt ) && $zahlart = 5) { berechne $userfeld % Rabatt }
(wenn "5" die Zahlartnr. für Vorauszahlung ist)
Damit wird der Rabatt von 6% für Kunde A im WK und auf den Bestellseiten für die Gesamtsumme berechnet und audgegeben *wenn er eingelogt ist*.
Wenn Du den Rabatt z.B. in Form von "Ihr persönlicher Rabatt beträgt 5% -- Rabattbetrag € ..." ausgeben willst, brauchst Du eine zusätzliche ssp-Abfrage.
ungefähr so (ungetestetes Beispiel - muß dann natürlich noch angepasst werden):
sub myrabatt {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g;
my ($zahlart) = ssp::get_cart_zahlart();
my $rabatt;
my $rabattsumme;
if (length($main::userid) && $userrabatt > 0 && $zahlart = 5) {
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
$rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;
$rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
}
if ($rabattsumme > 0) {
$rabattsumme = main::fp($rabattsumme);
main::mprint(qq|
<tr>
<td colspan="3"></td>
<td colspan="3" class="rabatt">Ihr Rabatt $userrabatt%</td>
<td class="cpreis" nowrap="nowrap">$rabattsumme </td>
<td></td>
</tr>
|);
}
}
}