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 im Warenkorb zwischenzeitlich verkauft

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Artikel im Warenkorb zwischenzeitlich verkauft
    am: 09. November 2017, 14:36:18
    Ich habe folgendes Problem: Wenn ich eine limitierte Anzahl von Artikeln habe und jemand legt einen davon in seinen Warenkorb, dann kann es vorkommen, dass in der Zwischenzeit alle Artikel abverkauft werden. Auch der in seinem Warenkorb. Soweit wäre das ok, denn der Artikel kann ja nicht ewig für Ihn im Warenkorb reserviert bleiben. Aber das Problem ist, dass dem Kunden dann beim Checkout ausschließlich die Versandkosten in Rechnung gestellt werden, da der Artikel ja "futsch" ist. Das sollte nicht sein. Der Shop um den es hier geht ist leider noch ein 1.06 SP2.

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

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: Artikel im Warenkorb zwischenzeitlich verkauft
    Antwort #1 am: 10. November 2017, 08:19:24
    Ich beantworte mir grad mal teilweise meine eigene Frage. Also nach einem Test gestern konnte ich sicher stellen, dass das in der neusten Shopversion nicht mehr auftritt. In der 1.06er aber anscheinend schon. Hat jemand eine schnelle Variante wie man das bei 1.06 verhindern könnte oder ist das komplizierter und es lohnt sich nicht darüber nachzudenken?

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.370
    • Geschlecht:
    Re: Artikel im Warenkorb zwischenzeitlich verkauft
    Antwort #2 am: 10. November 2017, 09:44:28
    Das geht sicherlich auch in einen 1.06er Shop umzusetzen. Der Code dafür aus der "/includes/checkout_requirements.php", die in jeder der "checkout_***" Datei dafür eingebunden wird, lautet:

    Code: PHP  [Auswählen]
    // Stock Check
    // muss auf jeder Checkout-Seite geladen werden, damit gleichzeitige Bestellungen
    // nicht zu minus Bestaenden fuehren !!!
    if (STOCK_CHECK == 'true'
        && STOCK_ALLOW_CHECKOUT != 'true'
        && (!isset($_SESSION['tmp_oID'])
            || (isset($_SESSION['tmp_oID']) && !is_numeric($_SESSION['tmp_oID']))
            )
        )
    {
      $products = $_SESSION['cart']->get_products();
      for ($i = 0, $n = sizeof($products); $i < $n; $i++) {
        if (xtc_check_stock($products[$i]['id'], $products[$i]['quantity'])) {
          $_SESSION['any_out_of_stock'] = 1;
          xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));
        }
        //products attributes
        if (ATTRIBUTE_STOCK_CHECK == 'true' && isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
          reset($products[$i]['attributes']);
          while (list ($option, $value) = each($products[$i]['attributes'])) {
            $attributes = $main->getAttributes($products[$i]['id'],$option,$value);
            if ($attributes['attributes_stock'] - $products[$i]['quantity'] < 0) {
              $_SESSION['any_out_of_stock'] = 1;
              xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));
            }
          }
        }
      }
    }

    Grüße

    Torsten

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: Artikel im Warenkorb zwischenzeitlich verkauft
    Antwort #3 am: 10. November 2017, 10:54:40
    Hallo Thorsten,

    lieben Dank. Wollte gerade hier meine Erfahrung posten, weil ich nämlich genau da zwischenzeitlich schon selber angesetzt hatte. Klappt wunderbar. Danke.

    Herr_Bert

    • Fördermitglied
    • Beiträge: 756
    • Geschlecht:
    Re: Artikel im Warenkorb zwischenzeitlich verkauft
    Antwort #4 am: 10. November 2017, 11:11:35
    Oh, feine Sache, aber ich habe im Ordner includes keine checkout_requirements.php oder habe ich da etwas falsch verstanden  :-?

    Herr_Bert

    longchuan

    • Viel Schreiber
    • Beiträge: 640
    • Geschlecht:
    Re: Artikel im Warenkorb zwischenzeitlich verkauft
    Antwort #5 am: 10. November 2017, 11:25:57
    Und wie Sieht dies aus bei Shop Version 2.0.3.0

    Danke

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Re: Artikel im Warenkorb zwischenzeitlich verkauft
    Antwort #6 am: 10. November 2017, 11:34:43
    @longchuan:
    Also nach einem Test gestern konnte ich sicher stellen, dass das in der neusten Shopversion nicht mehr auftritt.

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: Artikel im Warenkorb zwischenzeitlich verkauft
    Antwort #7 am: 10. November 2017, 17:39:15
    Herr_Bert -  völlig richtig. Die Datei gibt es in der Shopversion nicht. Da mir eine quick & dirty Lösung in meinem Fall reichte, habe ich mir diese angelegt und nur mit den Functions zur stock Überprüfung "bestückt".
    Die checkout_requirements.php muss dann noch in jeden checkout Step eingebunden werden. Also payment,shipping,confirmation und process.
    Meine requirements sieht so aus:

    Code: PHP  [Auswählen]
    require_once(DIR_FS_INC . 'xtc_get_products_stock.inc.php');

    require_once(DIR_FS_INC . 'xtc_check_stock.inc.php');
     

    // Stock Check
    // muss auf jeder Checkout-Seite geladen werden, damit gleichzeitige Bestellungen
    // nicht zu minus Bestaenden fuehren !!!
    if (STOCK_CHECK == 'true'
        && STOCK_ALLOW_CHECKOUT != 'true'
        && (!isset($_SESSION['tmp_oID'])
            || (isset($_SESSION['tmp_oID']) && !is_numeric($_SESSION['tmp_oID']))
            )
        )
    {
      $products = $_SESSION['cart']->get_products();
      for ($i = 0, $n = sizeof($products); $i < $n; $i++) {
        if (xtc_check_stock($products[$i]['id'], $products[$i]['quantity'])) {
          $_SESSION['any_out_of_stock'] = 1;
          xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));
        }
        //products attributes
        if (ATTRIBUTE_STOCK_CHECK == 'true' && isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
          reset($products[$i]['attributes']);
          while (list ($option, $value) = each($products[$i]['attributes'])) {
            $attributes = $main->getAttributes($products[$i]['id'],$option,$value);
            if ($attributes['attributes_stock'] - $products[$i]['quantity'] < 0) {
              $_SESSION['any_out_of_stock'] = 1;
              xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));
            }
          }
        }
      }
    }

    // Stock Check Specials
    // muss auf jeder Checkout-Seite geladen werden, damit gleichzeitige Bestellungen
    // nicht zu einem Ueberkaufen der Sonderangebote fuehrt !!!
    if (STOCK_CHECK_SPECIALS == 'true'
        && STOCK_ALLOW_CHECKOUT != 'true'
        && (!isset($_SESSION['tmp_oID'])
            || (isset($_SESSION['tmp_oID']) && !is_numeric($_SESSION['tmp_oID']))
            )
        )
    {
      require_once (DIR_FS_INC.'check_stock_specials.inc.php');
      $products = $_SESSION['cart']->get_products();
      for ($i = 0, $n = sizeof($products); $i < $n; $i++) {
        if ($xtPrice->xtcCheckSpecial($products[$i]['id']) && check_stock_specials($products[$i]['id'], $products[$i]['quantity'])) {
          $_SESSION['any_out_of_stock'] = 1;
          xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));
        }
      }  
    }

     
    Shop Hosting
    7 Antworten
    3904 Aufrufe
    05. Juni 2014, 10:11:39 von Diskordia
    3 Antworten
    2268 Aufrufe
    27. Juli 2016, 11:24:45 von Freuden_tanz
    2 Antworten
    2844 Aufrufe
    11. Januar 2012, 14:35:47 von metatron
    4 Antworten
    2895 Aufrufe
    03. Juni 2013, 20:18:45 von newbee79
               
    anything