Modul Automatische Korrektur der Artikelmenge im Warenkorb bei zuwenig Lagerbestand

Thema wurde von Steffen (indiv-style.de), 23. Februar 2013 erstellt.

  1. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    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!!!
     

    Anhänge:

  2. faf

    faf Erfahrener Benutzer

    Registriert seit:
    11. Januar 2013
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    19
    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
     
  3. Petra

    Petra G-WARD 2013/14/15

    Registriert seit:
    27. August 2011
    Beiträge:
    6.998
    Danke erhalten:
    1.225
    Danke vergeben:
    227
    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...
     
  4. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    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.
     
  5. Petra

    Petra G-WARD 2013/14/15

    Registriert seit:
    27. August 2011
    Beiträge:
    6.998
    Danke erhalten:
    1.225
    Danke vergeben:
    227
    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 :D Das wäre zumindest eine Lösung, damit Kunden nicht so lange rumprobieren müssen bis sie die richtige Menge erwischen.
     
  6. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Ich weiß auch gar nicht wo er die herholt.
    Vermutlich müsste man mit einem sql-Befehl die Dezimalstellen aus der DB löschen.
     
  7. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    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!
     
  8. Petra

    Petra G-WARD 2013/14/15

    Registriert seit:
    27. August 2011
    Beiträge:
    6.998
    Danke erhalten:
    1.225
    Danke vergeben:
    227
    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.
     
  9. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Habe mir Steffens Version noch nicht angesehen, deshalb kann ich das nicht beurteilen.
     
  10. Kai Schoelzke

    Kai Schoelzke Beta-Held

    Registriert seit:
    30. März 2016
    Beiträge:
    3.803
    Danke erhalten:
    548
    Danke vergeben:
    248
    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.
     
  11. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Vielleicht geht´s ja damit?
     
  12. Kai Schoelzke

    Kai Schoelzke Beta-Held

    Registriert seit:
    30. März 2016
    Beiträge:
    3.803
    Danke erhalten:
    548
    Danke vergeben:
    248
    Hallo Manfred,
    danke für den Tipp, jetzt geht es so wie ich mir das vorgestellt habe.
     
  13. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Tja - davon träume ich auch schon ewig - NEID ON! :(
     
  14. Kai Schoelzke

    Kai Schoelzke Beta-Held

    Registriert seit:
    30. März 2016
    Beiträge:
    3.803
    Danke erhalten:
    548
    Danke vergeben:
    248
    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.
     
  15. Kai Schoelzke

    Kai Schoelzke Beta-Held

    Registriert seit:
    30. März 2016
    Beiträge:
    3.803
    Danke erhalten:
    548
    Danke vergeben:
    248
    Hallo,
    es ist zwar keine automatische Korrektur, aber zu mindest wird angezeigt wie viele Artikel Attribute noch zur Verfügung stehen.
    attributmenge.JPG

    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.
     
  16. uwefunke

    uwefunke Mitglied

    Registriert seit:
    11. Dezember 2013
    Beiträge:
    6
    Danke erhalten:
    0
    #16 uwefunke, 13. Dezember 2013
    Zuletzt bearbeitet: 13. Dezember 2013
    Wie kann ich dein Modul wieder löschen?
    Bei meiner Version "Gambio Version: v2.0.14.2 r11229" geht das Modul nicht!

    Gruß
     
  17. Kai Schoelzke

    Kai Schoelzke Beta-Held

    Registriert seit:
    30. März 2016
    Beiträge:
    3.803
    Danke erhalten:
    548
    Danke vergeben:
    248
    Hallo, kann ich zwar im Moment nicht nachvollziehen warum das nicht gehen soll, aber überschreibe doch die Datei einfach wieder mit der originalen.
     
  18. uwefunke

    uwefunke Mitglied

    Registriert seit:
    11. Dezember 2013
    Beiträge:
    6
    Danke erhalten:
    0
    #18 uwefunke, 13. Dezember 2013
    Zuletzt bearbeitet: 13. Dezember 2013
    Ich meinte eigentlich das Modul von Steffen auf Seite 1.
    Kann ich dein Zusatz denn mit Steffens Modul zusammen nutzen?
     
  19. Kai Schoelzke

    Kai Schoelzke Beta-Held

    Registriert seit:
    30. März 2016
    Beiträge:
    3.803
    Danke erhalten:
    548
    Danke vergeben:
    248
    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.
     
  20. Kai Schoelzke

    Kai Schoelzke Beta-Held

    Registriert seit:
    30. März 2016
    Beiträge:
    3.803
    Danke erhalten:
    548
    Danke vergeben:
    248
    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;
          }
     
    ?>