Ich habe hierfür eine kleine Lösung! Nehmen wir an der Lagerbestand liegt bei 40 Stück. Der Kunde wählt nun 50 Stück aus und geht in den Warenkorb. Dann wird automatisch die Bestellmenge auf 40 Stück reduziert und eine Meldung unter dem Artikelnamen angezeigt. Den Anhang 3529 betrachten Das ganze ist updatessicher! Gestestet ab V2.0.11.2 Den Ordner Entpacken und die darin enthaltenen Ordner inc und user_classes ins Root kopieren! Fertig. Keine Garantie!!! Vorher Datensicherung!!!
Hallo Steffen, ich habe eben das Modul installiert. Nur leider funktioniert die Korrektur der Artikelmenge nicht für Artikel mit Attributen. Das Modul reduziert die Anzahl immer auf die gesamte noch verfügbare Artikelmenge und nicht auf die verfügbare Attributmenge. Lässt sich das evtl. noch einbauen? VG Antje
So ist es, Steffen. Wir können die abstrusesten Werte dort eingeben, da sich die Abfrage nur auf den Gesamtbestand bezieht. Eigentlich müsste da nur erst die Attributabfrage, dann die Gesamtbestandsabfrage rein. Unsere Kunden haben es auch schon geschafft, Attribute 19 mal ins Minus zu hauen. Wir haben hier gerade absolutes Chaos...
Ich kann zwar keine automatische Korrektur anbieten, aber eine Anzeige des Attribut-Lagerbestandes. Zwei Mankos: ist leider nicht Updatesicher und Bestand wird mit ".0000" angezeigt. in der Datei inc/ xtc_check_stock_attributes.inc.php suchen nach: Code: if(!xtc_db_num_rows($download_query)) $stock_left = $stock_data['attributes_stock'] - $products_quantity; $out_of_stock = ''; if ($stock_left < 0) { $out_of_stock = '<span class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '</span>'; } und ersetzen mit: Code: if(!xtc_db_num_rows($download_query)) $stock_left = $stock_data['attributes_stock'] - $products_quantity; $stock_total = $stock_data['attributes_stock']; $out_of_stock = ''; if ($stock_left <0) { $out_of_stock = '<br /><span style="color: rgb(255, 0, 0); text-weight:10px; font-family:arial" class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '</br><font color="#FF0000"> Nur noch <b>' . $stock_total. '</b> auf Lager</font><br></span>'; if ($stock_total < 1) { $out_of_stock = '<br /><span style="color: rgb(255, 0, 0); text-weight:10px; font-family:arial" class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '<font color="#FF0000"> Nicht mehr auf Lager</b></font><br></span>'; } ACHTUNG: Die Originaldatei sollte gesichert werden.
Hallo Barbara, so etwas haben wir auch, dann wird angezeigt, wie viele noch am Lager sind. Allerdings bekommen wir die Dezimalstellen nicht weg. Da steht dann 1.000 womit man auch Tausend meinen könnte Das wäre zumindest eine Lösung, damit Kunden nicht so lange rumprobieren müssen bis sie die richtige Menge erwischen.
Ich weiß auch gar nicht wo er die herholt. Vermutlich müsste man mit einem sql-Befehl die Dezimalstellen aus der DB löschen.
Habe mir das gerade mal angesehen. in der products_attributes steht bei attributes _stock: Typ: dezimal und Size: 15,4 das müsste man ändern auf Typ: varchar und Size: (z.B.) 30 Und dann kann man die Dezimalstellen löschen. Ich weiß aber nicht ob das irgendwelche negativen Auswirkungen auf die Bestands-Berechnung hat. ÄNDERUNGEN IN DER DB SOLLTEN IMMER IM TESTSHOP AUSPROBIERT WERDEN: Kaputte DB = kein Shop!
So ist es. Soweit waren wir auch schon, aber wir müssen das erst einmal genau testen, bevor es auf die große DB losgelassen wird. Wobei ich immer noch der Meinung bin, dass eine Prüfung der Attributbestände in Steffens Dingens kein Hexenwerk sein kann - wenn man weiß, wie es geht.
Hallo Barbara, wie Petra schon geschrieben hat, haben wir das auch so weit am laufen, jetzt ist nur noch die Herausforderung, das Code: $stock_total = $stock_data['attributes_stock'] so umzubauen oder anzupassen, das die Dezimalstellen und der Punkt nicht mit angezeigt werden, ein Eingriff in die Datenbank währe zwar möglich, aber gar nicht gut, da muss es noch eine andere Möglichkeit geben. Avenger, Steffen, Holger oder Manfred haben da bestimmt eine Idee, vielleicht könnte ja auch Gambio eine Lösung bieten.
Hallo Manfred, ganz so geht es dann doch noch nicht, die Anzeige funktioniert zwar aber wenn der Kunde nicht die gewünschte Menge reduziert gibt es eine Fehlermeldung.
Hallo, es ist zwar keine automatische Korrektur, aber zu mindest wird angezeigt wie viele Artikel Attribute noch zur Verfügung stehen. einfach in der inc/xtc_check_stock_attributes.inc.php alles durch das Code: <?php /* ----------------------------------------------------------------------------------------- $Id: xtc_check_stock_attributes.inc.php 899 2005-04-29 02:40:57Z hhgag $ XT-Commerce - community made shopping http://www.xt-commerce.com Copyright (c) 2003 XT-Commerce ----------------------------------------------------------------------------------------- based on: (c) 2000-2001 The Exchange Project (earlier name of osCommerce) (c) 2002-2003 osCommerce(general.php,v 1.225 2003/05/29); www.oscommerce.com (c) 2003 nextcommerce (xtc_check_stock_attributes.inc.php); www.nextcommerce.org Released under the GNU General Public License ---------------------------------------------------------------------------------------*/ function number_format_clean($number,$precision=0,$dec_point=',',$thousands_sep='.') { RETURN trim(number_format($number,$precision,$dec_point,$thousands_sep),'4'.$dec_point); } function xtc_check_stock_attributes($attribute_id, $products_quantity) { $stock_query=xtc_db_query("SELECT attributes_stock FROM ".TABLE_PRODUCTS_ATTRIBUTES." WHERE products_attributes_id='".(int)$attribute_id."' LIMIT 1"); $stock_data=xtc_db_fetch_array($stock_query); $download_query=xtc_db_query("SELECT products_attributes_id FROM ".TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD." WHERE products_attributes_id='".(int)$attribute_id."' LIMIT 1"); if(!xtc_db_num_rows($download_query)) $stock_left = $stock_data['attributes_stock'] - $products_quantity; $out_of_stock = ''; if ($stock_left < 0) { $out_of_stock = '<span class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '<br> Sie können noch max. ' .number_format_clean($stock_data['attributes_stock'],0). ' Stck bestellen.</span>'; } return $out_of_stock; } ?> ersetzen. Das Ganze ist nicht Updatesicher, und bitte erst im Testshop testen, ich übernehme keine Garantie für eventuell zerschossene Shops.
Wie kann ich dein Modul wieder löschen? Bei meiner Version "Gambio Version: v2.0.14.2 r11229" geht das Modul nicht! Gruß
Hallo, kann ich zwar im Moment nicht nachvollziehen warum das nicht gehen soll, aber überschreibe doch die Datei einfach wieder mit der originalen.
Ich meinte eigentlich das Modul von Steffen auf Seite 1. Kann ich dein Zusatz denn mit Steffens Modul zusammen nutzen?
Wenn du das Modul hast, schaust du nach welche Dateien da drin sind, und löschst die aus deinem Shop wieder raus, wenn ich mich recht erinnere, ist das Modul Updatesicher, also nur neue Dateien. Dann den Cache leeren. Mach das aber bitte erst in einem Testshop, da ich mir nicht ganz sicher bin. Ob du beides nutzen kannst, könnte sein, da die Änderung von mir ja nur für die Attribute gilt, aber wenn das von Steffen nicht funktioniert, kannste das auch raus schmeißen. Aber bitte immer erst testen bevor man das ins Live System macht, und Datensicherung nicht vergessen.
Wer das nutzen möchte und keine Attribute hat, kann auch das für den gesamten Lagerbestand nutzen. inc/xtc_check_stock.inc.php Den gesamten Inhalt der Datei ersetzen. PHP: <?php/* ----------------------------------------------------------------------------------------- $Id: xtc_check_stock.inc.php 899 2005-04-29 02:40:57Z hhgag $ XT-Commerce - community made shopping http://www.xt-commerce.com Copyright (c) 2003 XT-Commerce ----------------------------------------------------------------------------------------- based on: (c) 2000-2001 The Exchange Project (earlier name of osCommerce) (c) 2002-2003 osCommerce(general.php,v 1.225 2003/05/29); www.oscommerce.com (c) 2003 nextcommerce (xtc_check_stock.inc.php); www.nextcommerce.org Released under the GNU General Public License ---------------------------------------------------------------------------------------*/ // include needed functions require_once(DIR_FS_INC . 'xtc_get_products_stock.inc.php'); function xtc_check_stock($products_id, $products_quantity) { $stock_left = xtc_get_products_stock($products_id) - $products_quantity; $stock_total = xtc_get_products_stock($products_id); $out_of_stock = ''; if ($stock_left <0) { $out_of_stock = '<br /><span style="text-weight:10px; font-family:arial" class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '<br> Sie können noch max. ' . $stock_total. ' Stck bestellen.</span>'; } return $out_of_stock; } ?>