Frage: Ich möchte meine Varianten in einer Listbox darstellen. Dabei sollen aber nur die verfügbaren Größen angezeigt werden. Wie kann ich Größen ausblenden, die keinen Lagerbestand haben.
Anwort: Zusnächst mal zum Lagerbestand. Der wird üblicherweise in den benutzerdefinierten Feldern LBS oder LBSAUTO geführt. LBSAUTO verrringert sich bei Käufen automatisch. Die Lösung ist natürlich, dass wir die Listbox per SSP ausgeben.
Dazu legen wir ein kleines Modul "vari" an. Dies kann direkt in der Vorlage der Detailseite passiern oder in einer vari.ipl Datei. Wenn amn die Funktion in verschiedenen Vorlagen nutzen möchte sollte man eine vari.ipl anlegen und diese per <!--spmacro:include(scripts/vari.ipl)--> einbinden.
Wir lesen einfach per SSP in einer Schleife den Lagebestand der Varrianten aus. Ist dieser grösser Null. lesen wir die restlichen Daten der Variante und legn eine Zeile in der Lisbox an.
<!--spmacro:module(vari)
sub show {
my $index = $_[0];
my $anzahl = $_[1];
my $vindex = $_[2];
my $vanzahl = $_[3];
my $itemid = ssp::get_var_article("itemid",$index);
my $out = qq{<form name="Alv$itemid" action="">\n<select name="variant">\n};
$out .= qq{<option>Bitte Größe wählen</option>\n};
for(my $i = 0; $i <= $vanzahl; ++$i) {
my $lbsauto = ssp::get_var_varticle('LBSAUTO',$i);
if ($lbsauto > 0) { # eventuell auch || length($lbsauto) > 0
my $vitemid = ssp::get_var_varticle('itemid',$i);
my $descr = ssp::get_var_varticle('idescription',$i);
my $price = main::fp(ssp::get_var_varticle('preis',$i));
$out .= qq{<option value="$vitemid"> $descr $price </option>\n};
}
}
$out .= "</select></form>\n";
main::mprint($out);
}
-->
Angezeigt wird die Listbox dann mit __vari::show__
Wenn man nicht für alle Varianten einen gültigen Lagebestand hat, würde das Feld LBSAUTO leer beleiben.
In diesem Fall bleibt es auch bei Verkäufen unberührt.
Die Abfragebedienung wäre dann
if ((length($lbsauto) == 0) || ( $lbsauto > 0)) {
my $vitemid = ssp::get_var_varticle('itemid',$i);
Linkback: https://www.shoppilot.net/pf/index.php?topic=1552.0