Hallo,
ich habe mal wieder ein "verzwicktes" Problem
Die Aufgabe:Monatsaktion - bei Kauf von mindestens 5 (gleichen oder verschiedenen beliebigen) Artikeln eines Herstellers 10% Rabatt.
Der rabattierte Preis soll (in Form von "
alter Preis / Aktionspreis") aber nicht nur im WK angezeigt und berechnet werden, sondern auch auf den Produktseiten.
Soweit funktioniert das auch alles schon
Da ich die Anzahl der bereits bestellten Artikel von Herstelle "X" aber nur im WK auslesen kann, habe ich das so gelöst, daß diese Anzahl in die Warenkorbdatei geschrieben wird und im sub modify_db_price Callback abgefragt werden kann.
ABER hier liegt das Problem sub calc1 { # alle Artikel eines Herstellers minus x% ab x Stueck
my $p = $_[0];
my $artid = $_[1];
my $pre = ssp::db_get_prefix();
my $MERCH = $pre . "MERCH";
ssp::readSQLData(qq|SELECT AKTIMARKE, ABSTUECK FROM $MERCH WHERE STANDARD=1|, "AKTIMARKE", "ABSTUECK");
my $pf = ssp::get_var_db('AKTIFAKTOR',0); # Preisfaktor vom benutdef. Feld des Haendlers holen
my $marke = ssp::get_var_db('AKTIMARKE',0);
my $von = ssp::get_var_db('AKTIONVON',0);
my $bis = ssp::get_var_db('AKTIONBIS',0);
my $abstueck = ssp::get_var_db('ABSTUECK',0);
if (!length($abstueck)) {$abstueck = 0}
my $sum = ssp::cart_read_var('aktistueck');
($sec,$min,$hour,$mday,$mon,$year) = localtime(time);
$mon += 1; $year += 1900; # Y2K
my $datum = sprintf("%04d%02d%02d",$year,$mon,$mday);
my $ITEM = $pre . "ITEM";
my $SITM = $pre . "SITM";
ssp::readSQLData("SELECT FIRMA FROM $ITEM WHERE ITEMID='$artid' UNION SELECT FIRMAV FROM $SITM WHERE ITEMID='$artid'","FIRMA");
my $artikel = ssp::get_var_db('FIRMA',0);
if($artikel ne $ssp::undefined && $artikel ne "" && $sum >= $abstueck){
if ($marke ne $artikel || ($datum <= $von && $datum >= $bis)) {
$pf = 1;
}
return ($p*$pf);
}
else
{
return $p;
}
}
Obwohl der aktuelle Wert sofort in der Cart-Datei steht, wird er erst bei nochmaligem Laden des WK bei der Abfrage my $sum = ssp::cart_read_var('aktistueck'); berücksichtigt mt hatte mal ein ähnliches Problem mit sub invoice_addpos_final ....
ahe hat das dann irgendwie gelöst - vielleicht geht das auch für mein Problem und jemand verrät mir die Lösung?
Nachtrag (editiert):Es hat offensichtlich garnichts mit
cart_read_var zu tun ...
Wenn ich diesen Wert auslese, wird er
sofort - also bei Artikel in WK legen oder Menge ändern -
korrekt ausgegeben
<!--spmacro:module(show)
sub test {
my $sum = ssp::cart_read_var('aktistueck');
main::mprint $sum;
}
-->
Das Problem ist also scheinbar
das Callbackscript, das erst
nach dem Laden der Seite ausgeführt wird
<!--spmacro:module(Callback)
sub modify_db_price {
...
(steht in stdall)
Wie kann ich das lösen?Linkback: https://www.shoppilot.net/pf/index.php?topic=1153.0