Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 

In Deutschland ist es z.b. üblich auch auf Rechnung zu bezahlen. In Joomshopping legt man dazu die entsprechende Bezahlart an und länderspezifisch die Versandart fest. Somit kann einem Kunden aus Österreich ein anderes Porto berechnet werden als einem Kunden aus Deutschland oder Griechenland. In Joomshopping ist es jedoch im Gegensatz zu den Versandarten nicht möglich, im Backend Bezahlarten auch länderspezifisch zu verwalten. An welchen Stellen müssen im Checkout Controller Codeanpassungen vorgenommen werden?

Länderspezifisches Bezahlen und passende Versandarten einrichten

Dazu muss man wissen, dass der Checkout aus mehreren Schritten besteht. Schritt Eins und Zwei erheben die Kundendaten, wie Anschrift und zusätzliche Registrierungsdaten. Im Schritt Drei werden die Bezahlarten und im Schritt Vier die Versandarten bereitgestellt und vom Kunden ausgewählt. Wenn also die Bezahlarten länderspezifisch und die Versandarten in Abhängigkeit von den Bezahlarten und von Kunden gewählten Land getroffen werden sollen, dann muss eine Codeänderung jeweils im Schritt Drei und Vier erfolgen.

Schritt 1: Filterung der Bezahlarten nach Länder

Zuerst ist es im Schritt Drei notwendig, die Länder-Id zu ermitteln. Der Benutzer wird in einem $adv_user Objekt verwaltet. Dieses Objekt bietet Zugriff auf einen Gast-Benutzer oder einen in der Datenbank hinterlegten Benutzer und somit über die Eigenschaft country bzw. über die Zugriffsmethode getCountryId(...) gleichzeitig Zugriff auf das im vorherigen Schritt selektierte Land.

In einer Schleife werden alle verfügbaren Bezahlarten durchlaufen und in einem Array $paym aufgelistet. Im Schleifendurchlauf wird vor Befüllen des Arrays $paym überprüft, ob die gerade betrachtete Bezahlart einzubinden ist. Dadurch erfolgt eine Filterung der Bezahlarten in Abhängigkeit der Länderauswahl durch den sich im Bezahlvorgang befindlichen Kunden.

Die Zahlungsart Lastschrift für eine Zustelladresse im Ausland ist nicht mehr verfügbar, nachdem der Quellcode verändert wurde. Abschließend sollte noch überprüft werden, ob die im $cart-Objekt des Kunden hinterlegte Bezahlart zu den nach der Filterung vorhanden Bezahlarten passt, damit sicher gestellt ist, dass mindestens eine Bezahlart im checkout-Template vorausgewählt werden kann. Eine definierte Vorauswahl einer Bezahlart verringert eine Irritation des Kunden beim Checkout-Vorgang.

Schritt 2: Filterung der Versandarten nach Bezahlart und Land

Diese Codemanipulation bietet den Vorteil, im Ausland zum Beispiel das Bezahlen per Vorauskasse zu erlauben und gleichzeitig Versandkosten zu erheben. In Deutschland hingegen bliebe das Bezahlen per Vorauskasse versandkostenfrei. Ein derartiges Regelwerk kann in Joomshopping durch das Filtern von Versandarten im Schritt Vier umgesetzt werden.

Zunächst werden alle Versandarten und zugehörige Preismodelle berechnet und in einem Array $shippings abgelegt. Erst danach werden die Versandarten nach Land und Bezahlart gefiltert. Falls eine Vorauswahl der Versandarten gewünscht wird, sollte im folgendem Schritt die im $cart-Objekt vorgehaltene Versandart auf Gültigkeit geprüft werden, damit die entsprechende Versandart aus dem Array $shippings beim Darstellen des Schrittes 4 im Checkout über die Eigenschaft $active_shipping auch entsprechend vorselektiert werden kann.

Alternativen:

Zur Zeit ist es die einfachste Methode, diese Änderungen im Quellcode von checkout.php durchzuführen, da Sie mit Sicherheit Bezahl- und Versandarten nicht so häufig ändern werden, wie Produkte und oder Kategorien. Im weiteren Schritt könnte man die Description-Felder von den Bezahlarten / Versandarten erweitern und für Abhängigkeiten zu Ländern bzw. Bezahlarten verwenden.