Zusatzartikel verschwindet aus Warenkorb?

Die Bonusartikel in Gambio sowie Produktabhängigkeiten bergen 2 Probleme, die wie nachfolgend beschrieben zu lösen sind. Betroffen sind mindestens Version 1.0 und 1.1 der Gambio „Product Bundles”.

Zusatzartikel bleibt nicht im Warenkorb

Artikelname Kostenloser Bonusartikel, Automatisch in den Warenkorb legen bei Mindestbestellwert: 100,00 EUR
Zusatzartikel gemäß Mindestbestellwert festlegen.

Abgrenzung: Es geht nicht um die Gambio-Gratisartikel, die vom Kunden ab einem Mindestwarenwert auswählbar sind. Es geht um Zusatzartikel, die entweder ab einem bestimmten Warenwert oder zusammen mit einem anderen Artikel automatisch im Warenkorb landen.

Ebenso betroffen sind die technisch ähnlichen, abhängigen Artikel. Das sind beispielsweise Einrichtungsgebühren, die zwangsweise mit einem anderen Artikel zusammen mit zu bestellen sind.

Problemschilderung

Ihr Warenkorb: DVD (19% MwSt.) 10× 100,00 EUR, Kostenloser Bonusartikel 1× 0,00 EUR
Kostenloser Bonusartikel automatisch in den Warenkorb gelegt

Das Zusatzartikel-Feature macht sich eine Besonderheit Gambios zunutze. Inaktive Artikel erscheinen zwar nicht in der Suche, Kategorien etc. Bestellbar sind sie aber dennoch. Lediglich bei der Anmeldung bzw. Registrierung eines Kunden als Gast prüft Gambio den Artikelstatus. Dadurch können sich folgende Szenarien ergeben, die den gewünschten Ablauf stören:

  1. Ein nicht-angemeldeter Kunde erreicht den Mindestwarenwert für einen kostenlosen Zusatzartikel. Diesen fügt das Modul korrekt automatisch dem Warenkorb hinzu. Klickt der Kunde auf den Kasse-Button und loggt sich im nächsten Schritt in sein bestehendes Kundenkonto ein, entfernt Gambio den (inaktiven) Zusatzartikel aus dem Warenkorb.
  2. Ist gemäß Gambio-Produktabhängigkeiten ein Artikel nicht ohne einen anderen bestellbar und der abhängige Artikel inaktiv, tritt dasselbe Problem auf. Nicht nur das nachträgliche Einloggen, auch die Bestellung als Gast löst die Bereinigung des Warenkorbs um inaktive Artikel aus.

Lösung

Natürlich wäre eine „update-sichere“ Lösung generell vorzuziehen. Aufgrund deren Komplexität würde diese jedoch bei Gambio-Updates erwartungsgemäß mehr Probleme verursachen als lösen. Dies gilt umso mehr, da das Einfügen von nur 4 Zeichen in die Originaldatei includes/classes/shopping_cart.php Ihres Gambio-Shops die beschriebenen Probleme bereits löst:

Je nach Gambio-Version in Zeile 115 bis 128 finden Sie diesen PHP-Code:

if((GROUP_CHECK === 'false' || $t_gm_status['permission'] === '1') && $t_gm_status['products_status'] == 1 && (int)$t_gm_status['gm_price_status'] == 0)

Hier lässt sich die Prüfung des Artikelstatus‘ wie folgt auskommentieren:

if((GROUP_CHECK === 'false' || $t_gm_status['permission'] === '1') && /*$t_gm_status['products_status'] == 1 && */ (int)$t_gm_status['gm_price_status'] == 0)

Nach Bearbeiten der Datei mit einem Texteditor und Upload mittels FTP-Programm bleiben auch inaktive (Zusatz-/Bonus-)Artikel nach dem Login im Warenkorb. Es ist nicht erforderlich, irgendwelche Caches zu leeren oder ähnliches.

Fehlendes Artikelbild im Checkout

Screenshot Gambio-Kasse, Kostenloser Bonusartikel wird mit Bild dargestellt
Richtiges Bild des Bonusartikels auch an der Kasse

Auch in der Zusammenfassung vor Absenden der Bestellung sorgt der Artikelstatus inaktiv für zumindest einen Schönheitsfehler. Die Artikeldaten erscheinen korrekt, der inaktive Artikel lässt bestellen. Jedoch zeigt Gambio statt des Artikelbildes ein weniger ansprechendes Standardbild.

Auch dieses Problem lässt sich ganz einfach durch Einfügen von 4 Zeichen in eine Original-Datei lösen. Zu bearbeiten ist die includes/classes/product.php. In dieser befindet sich die Datenbankabfrage, die unter anderem das Bild des Zusatzartikels ausliest und dabei den Artikelstatus berücksichtigt:

p.products_id = '" . (int)$this->pID . "' AND
p.products_status = '1'

Kommentieren Sie einfach die Status-Bedingung wie folgt aus:

p.products_id = '" . (int)$this->pID . "' /*AND
p.products_status = '1'*/

Wiederum ohne Caches zu leeren etc. wirkt sich die Änderung umgehend so aus, dass auch bei inaktiven Artikel auf der letzten Seite im Checkout das Artikelbild erscheint.