Hallo,
Wenn ein Kunde NUR Wertgutscheine im WK hat werden keine Versandkosten verrechnet (Code wird ja per mail versendet).
Das habe ich so realisiert, dass GS ein "Gewicht" von 0 haben - alle anderen Artikel haben in ben.def. Feld GEWICHT "1" stehen.
In Callback::invoice_addpos_final wird dieses Feld dann abgefragt.
Das Problem ist aber, dass der Mindermengenzuschlag (bei Händler "bis Betrag 25" eingetragen) auch bei "NUR GS-Bestellungen" wenn unter 25,- berechnet wird.
Soll aber nicht wenn der Kunde eben NUR Wertgutscheine bestellt.
my $minderbetrag = $_[6];
ist zwar definiert aber wie kann ich das auch verwenden ?
sorry - habe mal wieder ein total-blackout
hier mal mein komplettes Script:
<!--spmacro:module(Callback)
$vsumme = 0;
$gewichtsumme =0;
$rabattsumme = 0;
sub invoice_addpos_final {
my $ref_gesamt = $_[0];
my $ref_gesamt_netto = $_[1];
my $ref_gesamt_steuer = $_[2];
my $anzahl = ssp::get_cart_items();
my $ust = $_[3]/100;
my $netto = $_[4];
my $versandbetrag = $_[5];
my $minderbetrag = $_[6];
my $zahlkosten = $_[7];
($sec,$min,$hour,$mday,$mon,$year) = localtime(time);
$mon += 1; $year += 1900; # Y2K
my $datum = sprintf("%02d%02d",$mon,$mday);
for (my $i = 0;$i <= $anzahl;++$i) {
my $wert = ssp::get_var_cart('RABKLASSE',$i) ;
my $tag = ssp::get_var_cart('DATUM',$i);
if ($datum == $tag){
$rabattsumme += $wert * ssp::get_var_cart('preis',$i) *
ssp::get_var_cart('anzahl',$i); }
}
if ($netto > 0) {
$$ref_gesamt = $$ref_gesamt - $rabattsumme;
$$ref_gesamt_steuer = $$ref_gesamt_steuer - ($rabattsumme*$ust);
} else {
$$ref_gesamt = $$ref_gesamt - $rabattsumme;
$$ref_gesamt_steuer = $$ref_gesamt_steuer - ($rabattsumme*(1-1/(1+$ust)));
}
my $versand = $Callback::vsumme;
my $warenwert = ssp::get_wkprodsum();
my ($zone,$txt) = ssp::get_cart_zone();
if ($warenwert >= 100 && $zone == 1) { $wert = 0; }
elsif ($warenwert >= 150 && $zone == 2) { $wert = 0; }
else {
my $ust = $_[3]/100;
my $netto = $_[4];
for (my $i = 0;$i <= $anzahl;++$i) {
my $wert = ssp::get_var_cart('anzahl',$i)*ssp::get_var_cart('GEWICHT',$i);
$gewichtsumme += $wert;
}
}
foreach my $i (@{$defs::verskosttab}) {
ssp::trace("$i->[0] $i->[1] $i->[2]\n");
if (($i->[0] <= $gewichtsumme) && ($gewichtsumme < $i->[1]) ) {
$vsumme = $i->[2];
break;
}
}
if ($netto > 0) {
$$ref_gesamt += $vsumme;
$$ref_gesamt_steuer += $vsumme*$ust;
} else {
$$ref_gesamt += $vsumme;
$$ref_gesamt_steuer += $vsumme*(1-1/(1+$ust));
}
$$ref_gesamt_netto = ($$ref_gesamt*100)/120;
$$versandbetrag = $vsumme;
ssp::trace("+++++ invoice_addpos gesamt: $$ref_gesamt / gesamt netto:$$ref_gesamt_netto / gesamt Steuer: $$ref_gesamt_steuer / vsumme: $vsumme\n");
return 0;
}
-->
Linkback: https://www.shoppilot.net/pf/index.php?topic=1599.0