Varianten in Listbox und Lagerbestand

Begonnen von admin, September 13, 2011, 12:46:29

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

admin

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);

hop

Hiezu noch eine Ergänzung: Falls man in der Artikelnummer des Hauptartikels ein Minuszeichen hat, muss man dieses entfernen.
Der Code lautet dann:

<!--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);
$itemid =~ s/\-//g; # MINUS ENTFERNEN
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);
}
-->


Sch?ne Gr??e hop