blog.anypoint.de

Wissen ist Macht und nichts wissen macht auch nichts!

Deutsche Post (dp)

Die Versandmodule die von grundauf in c:SEO eingebaut sind, reichen oftmals für den eigenen Gerbauch nicht aus. So war es auch in meinem Fall. Ich fand das Versandmodul Deutsche Post für meine Zwecke am idealsten, jedoch nicht ganz ausreichend und habe es deshalb etwas erweitert. Wir versenden über DHL und haben folgende Zoneneinteilung:

  • Österreich
  • Zone 1 – Belgien, Dänemark, Frankreich ect.
  • Zone 2 – Spanien, Italien, Polen ect.
  • Zone 3 – Norwegen, Estland, Rumänien ect.
  • Zone 4 – Iran, Katar, Kanada ect.
  • Zone 5 – Australien, Argentinien, Angola ect.
  • Deutschland

Für jede der sieben Zonen ist mit DHL ein separater Preis ausgehandelt. Das Modul „dp“ bietet standardmäßig nur 6 Zonen an. Darüber hinaus ergibt sich das das Problem, dass in Zone 5 mehr Länder eingetragen werden müssen, als die Datenbank es mit der jetzigen Struktur aufnehmen kann. Es werden zwar nur ISO Länderkürzel verwendet, jedoch kann das Feld in der DB nur 255 Zeichen aufnehmen. In Zone 5 sind jedoch über 150 Länder eingetragen. Jedes Länderkürzel hat zwei Zeichen und zusätzlich wird das ganze mit einem Komma getrennt. Drei Zeichen pro Land und 150 Länder, ergibt 450 Zeichen. Mir sind drei Varianten bekannt um dieses Problem zu umgehen.

  1. Die Struktur dieses DP Feldes ändern
  2. Wenn einer Zone kein Land zugewiesen wird, dann zählt dass zum Rest der Welt
  3. Weitere Zonen einfügen und die Länder unter den gleichen Bedingungen aufteilen

Da wir ohnehin zu wenig Platz im Modul haben, werde ich die dritte Variante erläutern. Um das Modul zu erweitern müssen wir zum einen die Moduldatei und die dazugehörige Sprachdatei erweitern. Die Moduldatei finden wir unter „includes/modules/shipping/dp.php„. Um die Datei zu bearbeiten einfach in einem Texteditor öffnen. Ich benutze seit Jahren schon Proton. In der Zeile 63 ist festgelegt, wie viele Zonen das Modul haben soll. Bevor mit den Änderungen begonnen wird, am besten immer ein Backup der DB und der geänderten Dateien erstellen, sowie das ganze erst auf einem Testsystem ausprobieren. Standardmäßig sind 6 Zonen eingetragen.

Also mach aus:

$this->num_dp = 6;

folgendes:

$this->num_dp = 9;

Es gibt Module bei denen ist es damit erledigt, bei diesem jedoch nicht. Nach Zeile 153 folgenden Code einfügen damit die nötigen Felder in der DB erzeugt werden:

configuration_group_id, sort_order, date_added) values (‚MODULE_SHIPPING_DP_COUNTRIES_7‘, ‚OM‘, ‚6‘, ‚0‘, now())“);
xtc_db_query(„insert into “ . TABLE_CONFIGURATION . “ ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values (‚MODULE_SHIPPING_DP_COST_7′, ’32:33.5294‘, ‚6‘, ‚0‘, now())“);
xtc_db_query(„insert into “ . TABLE_CONFIGURATION . “ ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values (‚MODULE_SHIPPING_DP_COUNTRIES_8‘, ‚CO‘, ‚6‘, ‚0‘, now())“);
xtc_db_query(„insert into “ . TABLE_CONFIGURATION . “ ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values (‚MODULE_SHIPPING_DP_COST_8′, ’32:33.5294‘, ‚6‘, ‚0‘, now())“);
xtc_db_query(„insert into “ . TABLE_CONFIGURATION . “ ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values (‚MODULE_SHIPPING_DP_COUNTRIES_9‘, ‚DE‘, ‚6‘, ‚0‘, now())“);
xtc_db_query(„insert into “ . TABLE_CONFIGURATION . “ ( configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values (‚MODULE_SHIPPING_DP_COST_9′, ’31:4.19‘, ‚6‘, ‚0‘, now())“);

Speichern, hochlanden.

Danach müssen noch die Sprachdateien geändert werden. Diese sind unter

  • lang/german/modules/shipping/dp.php
  • lang/english/modules/shipping/dp.php

zu finden. Von grundauf ist die deutsche Datei nur teilweise übersetzt. Ich habe zusätzlich noch die Überschriften der einzelnen Felder übersetzt. Wer es auch übersetzen möchte, kann dies tun oder einfach original lassen. Um die Sprachdateien fertig zu machen einfach folgenden Code nach Zeile 66 einfügen:

define(‚MODULE_SHIPPING_DP_COUNTRIES_7_TITLE‘ , ‚DP Zone 7 Countries‘);
define(‚MODULE_SHIPPING_DP_COUNTRIES_7_DESC‘ , ‚Comma separated list of two character ISO country codes that are part of Zone 7‘);
define(‚MODULE_SHIPPING_DP_COST_7_TITLE‘ , ‚DP Zone 7 Shipping Table‘);
define(‚MODULE_SHIPPING_DP_COST_7_DESC‘ , ‚Shipping rates to Zone 7 destinations based on a range of order weights. Example: 0-3:8.50,3-7:10.50,… Weights greater than 0 and less than or equal to 3 would cost 5.72 for Zone 7 destinations.‘);
define(‚MODULE_SHIPPING_DP_COUNTRIES_8_TITLE‘ , ‚DP Zone 8 Countries‘);
define(‚MODULE_SHIPPING_DP_COUNTRIES_8_DESC‘ , ‚Comma separated list of two character ISO country codes that are part of Zone 8‘);
define(‚MODULE_SHIPPING_DP_COST_8_TITLE‘ , ‚DP Zone 8 Shipping Table‘);
define(‚MODULE_SHIPPING_DP_COST_8_DESC‘ , ‚Shipping rates to Zone 8 destinations based on a range of order weights. Example: 0-3:8.50,3-7:10.50,… Weights greater than 0 and less than or equal to 3 would cost 5.82 for Zone 8 destinations.‘);
define(‚MODULE_SHIPPING_DP_COUNTRIES_9_TITLE‘ , ‚DP Zone 9 Countries‘);
define(‚MODULE_SHIPPING_DP_COUNTRIES_9_DESC‘ , ‚Comma separated list of two character ISO country codes that are part of Zone 9‘);
define(‚MODULE_SHIPPING_DP_COST_9_TITLE‘ , ‚DP Zone 9 Shipping Table‘);
define(‚MODULE_SHIPPING_DP_COST_9_DESC‘ , ‚Shipping rates to Zone 9 destinations based on a range of order weights. Example: 0-3:8.50,3-7:10.50,… Weights greater than 0 and less than or equal to 3 would cost 5.92 for Zone 9 destinations.‘);

Speichern, hochladen und damit ist der schwierigste Teil abgeschlossen. Jetzt muss das Modul nur noch installiert und eingerichtet werden. Dazu im Backend auf Module > Versandmodule > Deutsche Post (dp) auswählen und installieren > bearbeiten. Indem wir True auswählen, wird das Modul nach dem Speichern aktiviert und ist im Frontend zu sehen.

  • Bei Handling Free kann man eine Bearbeitungsgebühr eintragen.
  • Falls man dieses Modul nur für gewisse Länder freigeben möchte, kann man im Feld „Einzelne Versandzonen“ eintragen bei welchen Ländern das Modul angezeigt werden soll.
  • Unter Steuersatz kann man den für dieses Modul geltenden Steuersatz festlegen. Ich habe beim Standardsatz 19% MwSt. eintragen. Sollte beim Checkout etwas falsch ausgegeben werde, liegt es daran, dass man hier das Feld leer gelassen hat oder weil man unter „Land/Steuern > Steuersätze“ etwas falsches konfiguriert hat.
  • Unter dem Punkt Versand Zone, kann man auswählen ob für Welche Steuerzonen das Modul gelten soll. Wir geben den Versand grundsätzlich inkl. MwSt. an und schränken dieses Modul daher nicht weiter ein.
  • Wenn man dem Kunden mehrere Versandoptionen bietet, kann man unter dem Punkt „Reihenfolge der Anzeige“ auswählen, welches Versandmodul beim Checkout oben bzw. unten in der Liste angezeigt werden soll.
  • Bei „DP Zone 1 Countries“ werden jeweils die Länderkürzel nach ISO 3166 ALPHA-2, kommagetrent und ohne Leerzeichen, eingetragen. Unter „Land/Steuer > Land“ können alle Länderkürzel eingesehen werden. In unserem Fall „AT“ für Österreich.
  • Bei „DP Zone 1 Shipping Table“ wird die Versandkosten Struktur eingetragen. Man kann einen Pauschalpreis eintragen oder einen Gewicht abhängigen Staffelpreis. Zuerst wird das Gewicht eingetragen bis zu dem der Preis gelten soll und nach einem Doppelpunkt der dazugehörige Preis. Bei commerce:SEO ist die Kommastelle immer als Punkt einzugeben. Ansonsten kommt es zu Fehlern die man lange sucht. Wir verlangen für den Versand nach Österreich 7,99 EUR inkl. MwSt. also ist im Modul „31:6.7142“ einzutragen. 31 für Pakete bis 31 kg und 6.7142 Nettopreis für 7,99 EUR Versandkosten. Es wird empfohlen mit vier Stellen nach dem Komma zu arbeiten, da ansonsten die Ausgabe im Frontend ungenau sein könnte. Im Frontend werden sowieso nur zwei Stellen nach dem Komma angezeigt. Hat man nur eine Staffelung im Versandkostenmodell, wie z.B. 7,99 EUR für Pakete bis 15 kg und 8,99 EUR für Pakete bis 31 kg, ist folgendes einzutragen: 15:6.7142,31:7.5546
  • Diese zwei Schritte muss man bei allen Zonen widerholen.
  • Die DHL Zone 5 Tragen wir im Feld der Zonen 6 bis 8 ein. Einfach die Länderkürzel in drei gleichgroße Blöcke teilen und mit dem gleichen Versandkostenpreis eintragen.
  • In der Zone 9 habe ich den Versandkostenpreis für Deutschland eingetragen. Zum Schluss das Speichern nicht vergessen. Sonst darf man alles von vorne anfangen.

Da wir ja mittlerweile nicht mehr über „Deutsche Post“ sondern über „DHL“ versenden können wir noch das Bild das im Frontend angezeigt wird, ersetzten. Es eine 80 x 13 Pixel große gif Grafik und unter „images/icons/shipping_dp.gif“ zu finden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.