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: Artikel mit bestimmtem Optionsmerkmal vom Warenbestand ausschließen

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Hallo,

    normalerweise werden Produkte mit Attributen vom Warenbestand nach einer Bestellung abgezogen, wenn das so im Backend eingestellt ist.

    Ein Schuh ist einmal mit und ohne Namen-Bestickung lieferbar. Bei Wunsch mit Namen muss der Name in ein Textfeld eingetragen werden. Zuvor muss der Kunde noch auswählen, ob mit Namen oder ohne Namen gewünscht ist. Nur wenn er "ohne Namen" auswählt, kann das Textfeld leer gelassen werden, sonst ist es ein Pflichtfeld.  Dieses Feld hat die products_options_values_id 13.  Es sollen nun alle Bestellungen, bei denen eine Eintragung in dieses Feld erfolgt, also nicht leer ist, nicht vom Lagerbestand abgezogen werden. Nur die Bestellungen, bei denen das Feld mit der id 13 leer ist, sollen den Lagerbestand verringern.

    Wie kann ich das am besten lösen?

    Gruß

    Robert

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

    Roberto75

    • Viel Schreiber
    • Beiträge: 836
    Hat keiner eine Lösung? Es dürfte eigentlich nur eine Datei zu bearbeiten sein.

    AGI

    • modified Team
    • Beiträge: 305
    • Geschlecht:
    Guten Morgen Robert,

    ohne deine Shopversion, oder die vorgenommene Änderung zu kennen, ist es nicht einfach, eine konkrete Lösung anzubieten.

    Grundsätzlich muss entweder der Datenbankbefehl, der den Bestand reduziert nicht ausgeführt werden, oder ein zusätzlicher Befehl setzt den Bestand wieder hoch, wenn das Attribut verwendet wird.
    Welche Option zu verwenden ist, und wo du diese einfügst, hängt auch von den Einstellungen des Shops ab.

    in der Shopversion 2.0.4.x gibt es diese Möglichkeiten:
    A) checkout_prozess.php (nicht updatesicher):
    Der Datenbankbefehl in Zeile 230
    Code: PHP  [Auswählen]
    xtc_db_query("UPDATE ".TABLE_PRODUCTS."
                             SET products_quantity = '"
    .$stock_left."'
                           WHERE products_id = '"
    .xtc_get_prid($order->products[$i]['id'])."'");
    Darf nicht ausgeführt werden, wenn das Attribut verwendet wird.

    B) checkout_prozess.php (nicht updatesicher):
    Hinter diesem Code-Block
    Code: PHP  [Auswählen]
    // update attribute stock
            if ($update_attr_stock === true) {
              xtc_db_query("UPDATE ".TABLE_PRODUCTS_ATTRIBUTES."
                               SET attributes_stock=attributes_stock - '"
    .$order->products[$i]['qty']."'
                             WHERE products_id='"
    .xtc_get_prid($order->products[$i]['id'])."'
                               AND options_values_id='"
    .$order->products[$i]['attributes'][$j]['value_id']."'
                               AND options_id='"
    .$order->products[$i]['attributes'][$j]['option_id']."'
                             "
    );
            }
    wird der Bestand des Produkts zurückgesetzt, wenn $order->products[$i]['attributes'][$j]['option_id'] == 13.

    Beides kann auch Updatesicher implementiert werden, indem die bestellte Anzahl wieder addiert wird.
    Dafür sind entsprechende Dateien hier anzulegen:

    Für Lösung A)
    includes/extra/checkout/checkout_process_products

    Für Lösung B)
    includes/extra/checkout/checkout_process_attributes/

    Die Anpassung sollte ein Programmierer deines Vertrauens durchführen.

    Viele Grüße
    Andreas
    1 Antworten
    415 Aufrufe
    11. März 2023, 21:50:29 von Viol
    1 Antworten
    1413 Aufrufe
    01. Dezember 2017, 23:00:26 von andreaswien
    2 Antworten
    3399 Aufrufe
    24. November 2010, 15:55:40 von kid77
               
    anything