Shopsystem ShopPilot

ShopPilot => SSP - Shop Server Pages => Thema gestartet von: dobra am Juni 13, 2009, 07:58:22

Titel: Preisanzeige bei Staffelpreisen
Beitrag von: dobra am Juni 13, 2009, 07:58:22
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  ...

Titel: Re: Preisanzeige bei Staffelpreisen
Beitrag von: ahe am Juni 13, 2009, 20:46:46
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);
}
Titel: Re: Preisanzeige bei Staffelpreisen
Beitrag von: dobra am Juni 13, 2009, 20:49:46
Hallo ahe,
DANKE
Titel: Re: Preisanzeige bei Staffelpreisen
Beitrag von: dobra am Juni 14, 2009, 18:23:30
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....