Bei XT-Commerce Version 3.0.4 kommt immer die Selbstabholung als Default-Wert bei der Versandmethode – was bei doch einigen Kunden zu dem Problem führt dass sie die ware eigentlich gerne zugesandt haben würde, wir aber auf ihre Abholung warten 🙂
In den verschiedenen Forum findet man eigentlich in erster Linie Klagen darüber dass es so ist, aber wirklich eine Lösung hat Franz nicht gefunden, also haben wir uns das Ganze heute mal ein wenig genauer angeschaut!
Fünf Minuten und das Problem scheint mal gelöst zu sein 🙂
Betroffen sind zwei Dateien:
checkout_shipping.php
includes/classes/shipping.php
In der Datei „checkout_shipping.php“ in Zeile 172 findet man folgendes:
if (!isset ($_SESSION[’shipping‘]) || (isset ($_SESSION[’shipping‘]) && ($_SESSION[’shipping‘] == false) && (xtc_count_shipping_modules() > 1)))
Und in der nächsten Zeile wird dann mit
$_SESSION[’shipping‘] = $shipping_modules->cheapest();
die günstigste Methode zum Verschiffen ermittelt.
Bei uns wird aber die Funktion erst garnicht aufgerufen weil die If-Bedingung nie wirklich zutrifft! So wie ich das verstanden habe wird da geprüft on in „shipping“ was enthalten ist und wenn nichts drinnen ist, shipping aber gefüllt ist und mehr als ein shipping-Modul aktiv ist – erst dann die Funktion cheapest ermittelt – was in meinen Augen Schwachsinn ist weil unmöglich.
Also haben wir die Zeile 172 in „checkout_shipping.php“ wie folgt verändert:
if (!isset ($_SESSION[’shipping‘]) || (isset ($_SESSION[’shipping‘]) && ($_SESSION[’shipping‘] == true) && (xtc_count_shipping_modules() > 1)))
Und ab dem Moment wird auch tatsächlich auf die Funktion „cheapest“ zugegriffen!
Jetzt liefert die natürlich „Selbstabholung“ als günstigste Liefermethode weil sie ja 0 Euro kostet…
Hier kommt dann die Datei „includes/classes/shipping.php“ ins Spiel!
Und zwar in Zeile 119 – hier muss zusäztlich einfach eine If-Bedingung eingefügt werde, die prüft ob die Versandmethode „selfpickup“ lautet und nur wenn nicht die Versandmethode in die Berechnung der günstigsten Variante aufnimmt.
Also einfach in Zeile 119 folgende If-Bedingung einfügen:
if($quotes[‚id‘]!=“selfpickup“){
und in Zeile 123 mit einer „}“ wieder abschliessen.
Und schon erscheint die Selbstabholung nicht mehr an erster Stelle – sondern an letzter Stelle!
Ich hoffe der Beitrag hilft dem einen oder anderen XT-Commerce User und beendet den Ärger mit der nicht gewollten Selbstabholung beendet! 🙂