Die normalen 4% bei Vorkasse habe ich bei der Zahlungsart (= 1) hinterlegt (-4%).
Für den Userrabatt habe ich im Warenkorb dein Script hinterlegt:
<!--spmacro:module(show)
sub myrabatt2 {
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 = 1)) {
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|
Ihr persönlicher Rabatt beträgt $userrabatt%
|);
}
}
}
-->
Und die stdcart.ipl habe ich auch so übernommen:
<!--spmacro:module(Callback)
$rabattsumme = 0;
sub invoice_addpos {
my $userrabatt = ssp::get_var_user("USERRABATT");
$userrabatt =~ s/,/./g; # dadurch ist es egal, ob ein Kommabetrag mit "," oder "." eingetragen wird
if (length($userrabatt)) { # Feld USERRABATT ist nicht leer
my $ref_gesamt = $_[0];
my $ref_gesamt_steuer = $_[2];
my $ust = $_[3]/100;
my $netto = $_[4];
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
my ($zahlart) = ssp::get_cart_zahlart();
if ($zahlart = 1) { # Zahlart "Vorauskasse" gewählt
my $rabatt = (ssp::get_var_cart('preis',$i) * $userrabatt) / 100;
$rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
}
}
if ($netto > 0) {
$$ref_gesamt -= $rabattsumme;
$$ref_gesamt_steuer -= $rabattsumme*$ust;
} else {
$$ref_gesamt -= $rabattsumme;
$$ref_gesamt_steuer -= $rabattsumme*(1-1/(1+$ust));
}
return 0;
} else { # kein spezieller Kundenrabatt eingetragen -> also 4% Rabatt für alle anderen
my $ref_gesamt = $_[0];
my $ref_gesamt_steuer = $_[2];
my $ust = $_[3]/100;
my $netto = $_[4];
my $anzahl = ssp::get_cart_items();
for (my $i = 0;$i <= $anzahl;++$i) {
my ($zahlart) = ssp::get_cart_zahlart();
if ($zahlart = 1) { # Zahlart "Vorauskasse" gewählt
my $rabatt = (ssp::get_var_cart('preis',$i) * 4) / 100;
$rabattsumme += $rabatt * ssp::get_var_cart('anzahl',$i);
}
}
if ($netto > 0) {
$$ref_gesamt -= $rabattsumme;
$$ref_gesamt_steuer -= $rabattsumme*$ust;
} else {
$$ref_gesamt -= $rabattsumme;
$$ref_gesamt_steuer -= $rabattsumme*(1-1/(1+$ust));
}
return 0;
}
}
-->
<!--spmacro:module(rabatt)
sub rsumme {
main::mprint(main::fp($Callback::rabattsumme));
return 0;
}
-->
Ich verstehe ja von dieser ganzen Programmierung nischt, daher habe ich das einfach mal so übernommen. Klappt ja auch schon fast.
LG - parimo