maximal bestellbare Artikelmenge?

Begonnen von dobra, November 16, 2008, 23:03:16

« vorheriges - nächstes »

0 Mitglieder und 4 Gäste betrachten dieses Thema.

dobra

Hallo,

gibt es eine Möglichkeit, eine maximal bestellbare Anzahl für Artikel/Varianten festzulegen?
Die Frage klingt vielleicht ein wenig sonderbar  ;)

mal konkret, wofür ich diese Option verwenden möchte:
Im B2B Shop sollen Printkataloge (gratis aber nur in Verbindung mit einer Bestellung) angeboten werden.

Man soll die verschiedenen Kataloge einzeln auswählen können (Checkbox) und das auch nachträglich ändern - also z.B. noch einen weiteren Katalog dazulegen können.
Mit Gutscheinen mit Checkbox geht das nicht - s. http://www.shoppilot.net/pf/shoppilot_enterprise/gs_mit_wkcheck-t1137.0.html;msg4233#msg4233
und als "normaler" GS geht's auch nicht, da man ja da nur einen in den WK legen kann (was im Allgemeinen auch gut so ist!)

und - nachdem man ja nur maximal einen Katalog bestellen können soll, geht es auch nicht als "normaler" Artikel.

Ich möchte also einen Artikel der sich wie ein Artikel verhält aber wovon nur maximal x Stück bestellt werden können.
LBSAUTO geht da ja auch nicht - dann könnte ja der nächste Kunde keinen Katalog mehr bestellen.

Soetwas wie LBSAUTO pro Bestellung wäre ideal  ::)

Eine andere Verwendung für diese Funktion wären z.B. besondere Sonderangebote = "Lockartikel" die mit minimalem oder ohne Gewinn angeboten werden um Kunden zum Kauf auch anderer Artikel zu verleiten.
(mit einem "wenn Du DIESEN Artikel willst, mußt Du im Wert von x € einkaufen")
Hier wäre eine Beschränkung der maximal bestellbaren Stückzahl DIESES "Lockartikels" auf jeden Fall sinnvoll.

Habe aber keine Idee, wie ich so eine Funktion selber bauen könnte ....
Hat jemand irgendwelche Tipps oder Lösungsansätze für mich?
mfG
dobra

jg

Nur so als Idee:
Du fängst doch die Klicks 'in den WK' mit einer JS-Meldung ab.
Vielleicht kann man so eine Funktion schreiben:
X = 5;
Wenn Artikelnummer 12345 und Bestellmenge >X;
dann Bestellmenge == X, ansonsten Bestellmenge.
Den Bestand von 12345 setzt du auf 1000000...  ;)

jg
--
www.schmuckzone.de

dobra

#2
Hallo jg,

hmmm - ja, mit JS (oder mit meinem neuen Lieblingsspiel - Ajax  ;)) könnte das gehen...
Allerdings weiß ich nicht, ob das auch bei <!--spmacro:pagetype(1)--> funktioniert?
(WKMIN funktioniert da ja z.B. nicht, da hier keine JS-Abfrage greift)

muß mal bißchen probieren....

Nachtrag:
bei näherer Überlegung ist das vermutlich doch keine brauchbare Lösung, da ich so ja nur das "in WK legen" abfangen kann, nicht aber die Möglichkeit die Menge dann im WK zu ändern....
mfG
dobra

dobra

#3
habe eine Lösung gefunden  :D

ich lege die Kataloge als "normale" Artikel mit LBSAUTO = 1 an und setzte bei Aufruf der Seite LBSAUTO immer auf "1", somit kann jeder Kunde immer ein Stück bestellen.
Bedingung im Beispielcode: alle Katalogartikelnummern beginnen mit "K-"  (und diese Kombination wird sonst NICHT verwendet)

<!--spmacro:module(Callback)
sub begin_read_template {
my $pre = ssp::db_get_prefix();
my $ITEM = $pre . "ITEM";
my $sqlkat = qq|UPDATE $ITEM SET LBSAUTO = "1" WHERE ITEMID LIKE "K-%"|;
ssp::exec_sql($sqlkat, 1);
}
-->


funktioniert tadellos - jetzt fehlt mir nur noch die nachgebaute "ab Bestellwert" Funktion ....

Nachtrag:
die "ab Bestellwert" Funktion
nachdem ich im WK den "bestellen" Link erst einblende, wenn Lieferzone und Zahlart gewählt wurde, habe ich das einfach noch um die Abfrage, ob noch was anderes als Kataloge im WK liegt erweitert.
(ohne diese Abfrage das else { $out = qq|__check::bestellen__|;}  mit  else { $out = qq|__sbestellen__|;} ersetzen)

Code im WK:
<!--spmacro:module(check)
my $mindestwert = 1;
my $sum = ssp::get_wkprodsum();
sub gs() {
my $out;
my $index = $_[0];
my $anzahl = $_[1];
   if ($index <= $anzahl) {
for ($i=0;$i<=$anzahl;$i++) {
              my $wert = ssp::get_var_cart('id',$i);
     if (($wert =~ /K-/)  && ($sum < $mindestwert)) {
       $out = qq| <span class="errortext">Kataloge können nur einer Bestellung beigelegt werden! </span>|;
          }
  else { $out = qq|__check::bestellen__|;}
}
              main::mprint $out;
}
}
-->


mfG
dobra