Preisanzeige bei Staffelpreisen

Begonnen von dobra, Juni 13, 2009, 07:58:22

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

wenn man bei Staffelpreisen im Preisfeld ein "ab" schreibt, gibt es bei bestimmten Abfragen Probleme, da hier nur Zahlen erwartet werden.
ich mache daher die Preisausgabe mit ssp

Staffelpreisfelder abfragen, sortieren und den kleinsten Wert ausgeben
Das funktioniert soweit - aber meine Lösung, nicht benutzte Staffelpreisfelder aus dem Hash zu entfernen gefällt mir nicht  :(

<!--spmacro:module(check)
use strict;
    sub preis {
my $minpreis;
my $out;
        my $index = $_[0];
        my $anzahl = $_[1];         
        my $item = ssp::get_var_article("itemid", $index);
if (length($item)) {
my $price = ssp::get_var_article('preis',$index);

my $stprice1 = ssp::get_var_article('stafp1',$index);
my $stprice2 = ssp::get_var_article('stafp2',$index);
my $stprice3 = ssp::get_var_article('stafp3',$index);
my $stprice4 = ssp::get_var_article('stafp4',$index);

my @staffelp = ($stprice1,$stprice2,$stprice3,$stprice4);
if (!length($stprice4)) {@staffelp = ($stprice1,$stprice2,$stprice3);}
if (!length($stprice3)) {@staffelp = ($stprice1,$stprice2);}
if (!length($stprice2)) {@staffelp = ($stprice1);}

$minpreis = main::fp((sort @staffelp)[0]);
if (length($minpreis)) { $out = "ab $minpreis";}
else { $out = main::fp($price); }

             main::mprint ($out);
        }
}
-->


Da gibt's doch bestimmt eine bessere Lösung als für jedes Feld extra abzufragen, ob hier etwas eingetragen ist  ...

mfG
dobra

ahe

Hallo dobra,

so gehts auch:


my @staffelp = ();
foreach my $field (qw/stafp1 stafp2 stafp3 stafp4/) {
my $val = ssp::get_var_article($field,$index);
push(@staffelp, $val) if ($val);
}
MfG ahe

dobra

mfG
dobra

dobra

nur der Vollständigkeit halber  ;)

hab noch einen kleinen Fehler korrigiert:
mit
(sort @staffelp)[0]  
wird alphanumerisch sortiert = 12,50 ist kleiner als 9,90
in diesem Fall muss es also so heißen:
(sort {$a<=>$b} @staffelp)[0]
dann wird numerisch sortiert = 9,90/22,50/110,90

hoffe das stimmt jetzt so und ich habe nicht noch etwas übersehen....
mfG
dobra