Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: ANLEITUNG: Artikel und Attribute bei Bestand 0 automatisch ausblenden

    MW

    • Fördermitglied
    • Beiträge: 418
    • Geschlecht:
    Ich habe die Anleitung aus diesem Beitrag hier: ANLEITUNG: Artikel automatisch bei Anzahl 0 auf inaktiv setzen (von Schreibwarendiele) mal getestet, zusammengefasst und von kleinen 2 "Fehlern" bereinigt.

    Hiermit können Artikel sowohl mit, wie auch ohne Attribute, einzeln deaktiviert werden, sobald der Bestand 0 erreicht.

    Screenshot:

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Ich hätte da auch noch eine Anleitung anzubieten inkl. Attributerweiterung und Einstellmöglichkeit für jeden einzelnen Artikel.
    Müsste nur noch an modified eCommerce Shopsoftware angepasst werden.

    Quelle: ANLEITUNG: Artikel automatisch bei Anzahl 0 auf inaktiv setzen

    Ist mehr was für Abverkäufe von Restposten die nicht mehr nach geordert werden können oder für Unikatshops wo jeder Artikel meistens nur einmal vorhanden ist.

    Wer es braucht, hier die Anleitung:

    Datensicherung von Shop/Dateien und Datenbank machen!

    Falls bereits Modifikationen an den einzelnen Dateien vorgenommen wurden bitte Dateivergleich machen!

    Änderung der Datenbank (Befehl mit PHP MyAdmin o.ä. ausführen:

    Code: SQL  [Auswählen]
    ALTER TABLE `products` ADD `switch_status` TINYINT( 1 ) DEFAULT '0';

    Datei: /lang/german/admin/categories.php

    Am Ende einfügen:

    Code: PHP  [Auswählen]
    define('TEXT_PRODUCTS_SWITCH_STATUS','Artikel automatisch deaktivieren, wenn nicht mehr auf Lager?');

    Datei: /admin/includes/modules/new_product.php

    Hinter (ca. Zeile 49):

    Code: PHP  [Auswählen]
    $pInfo->products_startpage = $_POST['products_startpage'];

    Einfügen:

    Code: PHP  [Auswählen]
    $pInfo->switch_status = $_POST['switch_status'];

    Hinter (ca. Zeile 88):

    Code: PHP  [Auswählen]
    if ($pInfo->products_startpage == '1') { $startpage_checked = true; } else { $startpage_checked = false; }

    Einfügen:

    Code: PHP  [Auswählen]
    if ($pInfo->switch_status == '1') { $switch_status_checked = true; } else { $switch_status_checked = false; }

    Hinter (ca. Zeile 200):

    Code: PHP  [Auswählen]
    echo '<td><span class="main">'.xtc_draw_pull_down_menu('options_template', $files, $default_value);
    ?>
            </span></td>
          </tr>

    Einfügen:

    Code: PHP  [Auswählen]
    <tr>
    <td><span class="main"><?php echo TEXT_PRODUCTS_SWITCH_STATUS; ?></span></td><td><span class="main"> <?php echo TEXT_PRODUCTS_STARTPAGE_YES . xtc_draw_radio_field('switch_status', '1',$switch_status_checked) . '&nbsp;' . TEXT_PRODUCTS_STARTPAGE_NO . xtc_draw_radio_field('switch_status', '0', !$switch_status_checked) ?></span></td>
    </tr>

    Datei: /checkout_process.php

    Suchen nach(ca. Zeile 151):

    Code: PHP  [Auswählen]
    $stock_query = xtc_db_query("select products_quantity from ".TABLE_PRODUCTS." where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");

    Ändern in:

    Code: PHP  [Auswählen]
    $stock_query = xtc_db_query("select products_quantity, switch_status from ".TABLE_PRODUCTS." where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");

    Suchen nach:

    Code: PHP  [Auswählen]
    if (($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false')) {
            xtc_db_query("update ".TABLE_PRODUCTS." set products_status = '0' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
    }

    Danach einfügen:

    Code: PHP  [Auswählen]
    if (( $stock_values['switch_status'] == 1 ) && ($stock_left < 1)) {
            xtc_db_query("update ".TABLE_PRODUCTS." set products_status = '0' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
    }

    Datei: /admin/includes/classes/categories.php

    Suchen (ca. Zeile 504):

    Code: PHP  [Auswählen]
     'products_vpe' => xtc_db_prepare_input($products_data['products_vpe'])

    Dahinter einfügen:

    Code: PHP  [Auswählen]
    , 'switch_status' => xtc_db_prepare_input($products_data['switch_status'])

    Sollte dann so aussehen:

    Code: PHP  [Auswählen]
    $sql_data_array = array ('products_quantity' => xtc_db_prepare_input($products_data['products_quantity']), 'products_model' => xtc_db_prepare_input($products_data['products_model']), 'products_ean' => xtc_db_prepare_input($products_data['products_ean']), 'products_price' => xtc_db_prepare_input($products_data['products_price']), 'products_sort' => xtc_db_prepare_input($products_data['products_sort']), 'products_shippingtime' => xtc_db_prepare_input($products_data['shipping_status']), 'products_discount_allowed' => xtc_db_prepare_input($products_data['products_discount_allowed']), 'products_date_available' => $products_date_available, 'products_weight' => xtc_db_prepare_input($products_data['products_weight']), 'products_status' => $products_status, 'products_startpage' => xtc_db_prepare_input($products_data['products_startpage']), 'products_startpage_sort' => xtc_db_prepare_input($products_data['products_startpage_sort']), 'products_tax_class_id' => xtc_db_prepare_input($products_data['products_tax_class_id']), 'product_template' => xtc_db_prepare_input($products_data['info_template']), 'options_template' => xtc_db_prepare_input($products_data['options_template']), 'manufacturers_id' => xtc_db_prepare_input($products_data['manufacturers_id']), 'products_fsk18' => xtc_db_prepare_input($products_data['fsk18']), 'products_vpe_value' => xtc_db_prepare_input($products_data['products_vpe_value']), 'products_vpe_status' => xtc_db_prepare_input($products_data['products_vpe_status']), 'products_vpe' => xtc_db_prepare_input($products_data['products_vpe']), 'switch_status' => xtc_db_prepare_input($products_data['switch_status']));

    Suchen (ca. Zeile 764):

    Code: PHP  [Auswählen]
    'options_template'=>$product['options_template'],

    Dahinter einfügen:

    Code: PHP  [Auswählen]
    'switch_status'=>$product['switch_status'],

    Sollte dann so aussehen:

    Code: PHP  [Auswählen]
                    $sql_data_array=array('products_quantity'=>$product['products_quantity'],
                                                    'products_model'=>$product['products_model'],
                                                    'products_ean'=>$product['products_ean'],
                                                    'products_shippingtime'=>$product['products_shippingtime'],
                                                    'products_sort'=>$product['products_sort'],
                                                    'products_startpage'=>$startpage,
                                                    'products_sort'=>$product['products_sort'],
                                                    'products_price'=>$product['products_price'],
                                                    'products_discount_allowed'=>$product['products_discount_allowed'],
                                                    'products_date_added'=>'NOW()',
                                                    'products_date_available'=>$product['products_date_available'],
                                                    'products_weight'=>$product['products_weight'],
                                                    'products_status'=>$products_status,
                                                    'products_tax_class_id'=>$product['products_tax_class_id'],
                                                    'manufacturers_id'=>$product['manufacturers_id'],
                                                    'product_template'=>$product['product_template'],
                                                    'options_template'=>$product['options_template'],
                                                    'switch_status'=>$product['switch_status'],
                                                    'products_fsk18'=>$product['products_fsk18'],
                                                    );

    ******************************************************************
    Wenn auch ausverkaufte Artikeloptionen ausgeblendet werden sollen
    ******************************************************************

    Datei: /includes/modules/product_attributes.php [EDIT web28 21.09.2011: Pfad korrigiert]

    Folgende Abfrage suchen (ca. Zeile 43):

    Code: PHP  [Auswählen]
    $products_options_query = xtDBquery("select pov.products_options_values_id,
                                                                     pov.products_options_values_name,
                                                                     pa.attributes_model,
                                                                     pa.options_values_price,
                                                                     pa.price_prefix,
                                                                     pa.attributes_stock,
                                                                     pa.attributes_model
                                                                     from "
    .TABLE_PRODUCTS_ATTRIBUTES." pa,
                                                                     "
    .TABLE_PRODUCTS_OPTIONS_VALUES." pov
                                                                     where pa.products_id = '"
    .$product->data['products_id']."'
                                                         and pa.options_id = '"
    .$products_options_name['products_options_id']."'
                                                                     and pa.options_values_id = pov.products_options_values_id
                                                                     and pov.language_id = '"
    .(int) $_SESSION['languages_id']."'
                                                                     order by pa.sortorder"
    );

    Ersetzen durch:

    Code: PHP  [Auswählen]
    $products_options_query = xtDBquery("select pov.products_options_values_id,
                                                                     pov.products_options_values_name,
                                                                     pa.attributes_model,
                                                                     pa.options_values_price,
                                                                     pa.price_prefix,
                                                                     pa.attributes_stock,
                                                                     pa.attributes_model,
                                                                     p.switch_status
                                                                     from "
    .TABLE_PRODUCTS_ATTRIBUTES." pa,
                                                                     "
    .TABLE_PRODUCTS_OPTIONS_VALUES." pov,
                                                                     "
    .TABLE_PRODUCTS." p
                                                                     where pa.products_id = '"
    .$product->data['products_id']."'
                                                                     and p.products_id = '"
    .$product->data['products_id']."'
                                                         and pa.options_id = '"
    .$products_options_name['products_options_id']."'
                                                                     and pa.options_values_id = pov.products_options_values_id
                                                                     and pov.language_id = '"
    .(int) $_SESSION['languages_id']."'
                                                                     order by pa.sortorder"
    );

    Suchen:

    Code: PHP  [Auswählen]
    if ($_SESSION['customers_status']['customers_status_show_price'] == '0') {

    DAVOR (!) einfügen:

    Code: PHP  [Auswählen]
    if (($products_options['switch_status'] == '0') || ($products_options['switch_status'] == '1' && $products_options['attributes_stock'] >0)) {

    Weiter unten suchen:

    Code: PHP  [Auswählen]
    $col ++;

    Dahinter einfügen:

    Code: PHP  [Auswählen]
    }

    (Geschweifte Klammer zu)

    Datei: /checkout_process.php

    Suchen:

    Code: PHP  [Auswählen]
            //------insert customer choosen option eof ----

    Davor einfügen:

    Code: PHP  [Auswählen]
        // Disable product if no attributes left
                            if (( $stock_values['switch_status'] == 1 ) && (isset ($order->products[$i]['attributes']))){
                                                    $attrib_stock_query_SQL = "SELECT count(pa.attributes_stock) as in_stock
                                                                                FROM "
    .TABLE_PRODUCTS_ATTRIBUTES." pa
                                                                                WHERE pa.products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."' AND pa.attributes_stock >0";
                                                    $attrib_stock_query = xtc_db_query($attrib_stock_query_SQL);
                                                    $attrib_stock_values = xtc_db_fetch_array($attrib_stock_query);
                if ( $attrib_stock_values['in_stock'] == 0)
                                           xtc_db_query("update ".TABLE_PRODUCTS." set products_status = '0' where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
          }

    Getestet auf modified eCommerce Shopsoftware 1.05

    Gruß
    Michael

    Author:
    Anleitung "Verkaufte Artikel ausblenden"
    Roland Reichardt 29.11.2005

    [EDIT web28 21.09.2011: Fehlerhaften Pfad korrigiert, Danke an Benny aka A. für den Hinweis.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=15500.0

    Security

    • Fördermitglied
    • Beiträge: 188
    • Geschlecht:
    Danke  :-)

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Auch ich danke dir ganz herzlich! :thx:

    Grüße

    Torsten

    web28

    • modified Team
    • Beiträge: 9.404
    Ich finde die Anleitung ja nicht schlecht, nur...

    ...das macht das Shopsystem bei richtiger Konfiguration vollautomatisch!  ;-)

    Bei Lagerbestand < 1 wird am Ende einer Bestellung der Artikel auf inaktiv gesetzt (wenn so gewollt).

    Gruss Web28

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Ja, ich glaube ich hatte das Thema auch schonmal intern angesprochen. :D

    Das war die Einstellung unter "Konfiguration" -> "Lagerverwaltungs Optionen" -> "Einkaufen nicht vorrätiger Ware erlauben".

    Grüße

    Torsten

    EarthPlague

    • Mitglied
    • Beiträge: 186
    Da hat sich in der Anleitung ein kleiner Fehler eingeschlichen!
    Datei "/admin/modules/product_attributes.php" gibt es ja nicht sollte wohl
    Datei "/includes/modules/product_attributes.php" heissen. ;)

    Das Modul macht mit einem Attributsfilter Sinn, denn so werden auch nur Artikel angezeigt die auch die Attributsmenge haben! Und Attribute wie zum Beispiel bei Sprühdosen ausgeblendet!

    Besten Dank,
    Benny

    MW

    • Fördermitglied
    • Beiträge: 418
    • Geschlecht:
    Sorry, stimmt, sollte "/includes/modules/product_attributes.php" sein.  :oops:

    web28

    • modified Team
    • Beiträge: 9.404
    Ich habe den Pfad in Beitrag 1 korrigiert.

    Gruss Web28
    2 Antworten
    2878 Aufrufe
    17. Januar 2013, 16:21:32 von Zaldoran
    9 Antworten
    6261 Aufrufe
    20. Juni 2018, 10:46:00 von mahagma
               
    anything