xtcmodified Adressen zu DHL Intraship exportieren

Zum aktuellen Zeitpunkt gibt es leider keine vollständig automatisierte Schnittstelle vom Shopsystem xtcmodified zu der DHL Intrashipanwendung. Auf Basis eines anderen Adressenexportmoduls (dessen Quelle ich nicht mehr finde) habe ich folgenden Ablauf entwickelt.

Im Shopsystem werden immer eine feste Anzahl (bei mir 100) der letzten Adressen in eine CSV exportiert. Diese CSV Datei kann dann in der DHL Anwendung in das Adressbuch importiert werden. Wichtig ist dabei, dass die alten Adressen überschrieben werden und das Dateiformat "Standard CSV" ausgewählt ist. Jetzt können die Adressen beim Anlegen eines neuen Auftrages ausgewählt werden.

Folgende manuelle Arbeiten sind noch notwendig

  • Die Hausnummer muss manuell in das Feld Hausnummer eingetragen werden. xtcmodified legt die Hausnummer mit der Straße ab und so werden diese dann auch importiert.
  • Im Match Code wird die Auftragsnummer eingetragen. Diese kann mit Cut&Paste in den Sendungsdaten in das Feld Sendungsreferenz eingetragen werden.

Diese Variante ist nicht perfekt aber ich kenne zumindestens einen der sehr zufrieden damit ist :-)

intranet-dhl-export.pngFolgende Einschränkungen gelten:

  • Die Firmennamen müssen manuell nachgetragen. Da wir hauptsächlich an Endkundenversenden ist das Feld Firmenname mit dem Kontakt vorbelegt. Bei DHL ist das Feld "Firma" ein Pflichtfeld.
  • Anzahl der Adressen ist nicht konfigurierbar sondern steht in der PHP Datei drin.

Folgende Änderungen sind notwendig

  1. Eintragen des neuen Menueintrages in der Tabelle admin_access
  2. Aufnehmen des neuen Befehls im Adminbereich
  3. Die eigentliche Datei selbst

1. Eintragen des neuen Menueintrages in der Tabelle admin_access

mysql -u shop_admin -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql> use shop;
Reading table information for completion of table and column names

Database changed
mysql> ALTER TABLE admin_access ADD order_export TINYINT(1);
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> UPDATE admin_access SET order_export=1 WHERE customers_id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

2. Aufnehmen des neuen Befehls im Adminbereich

lang/german/admin/german.php
===================================================================

 define('BOX_MODULE_EXPORT','XT-Module');
+define('BOX_ORDERS_EXPORT','DHL Adressen Download');
define('BOX_HEADING_GV_ADMIN', 'Gutscheine/Coupons');

admin/includes/column_left.php
===================================================================
   }
// EOF - Tomcraft - 2009-11-02 - set global customers-group-permissions
   if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['orders'] == '1')) echo '<li><a href="' . xtc_href_link(FILENAME_ORDERS, '', 'NONSSL') . '" class="menuBoxContentLink1"> -' . BOX_ORDERS . '</a></li>';
+  if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['order_export'] == '1')) echo '<li><a href="' . xtc_href_link('order_export.php', '', 'NONSSL') . '" class="menuBoxContentLink1"> -' . BOX_ORDERS_EXPORT . '</a></li>';
echo ('</ul>');

3. Die eigentliche Datei selbst

Die neue datei  admin/order_export.php

<?php
include('includes/application_top.php');
$res=xtc_db_query('SELECT NOW() as time');
$row=mysql_fetch_assoc($res);
$now=$row['time'];
$sql="
SELECT
    orders.orders_id as FortlaufendeNummer,
    orders.delivery_name as Firma,
    orders.delivery_street_address as Strasse,
    CONCAT('') as Hausnummer,
    orders.delivery_postcode as PLZ,
    orders.delivery_city as Ort,
    orders.delivery_country  as Land,
    CONCAT('') as Firma2,
    CONCAT('') as Firma3,
    orders.orders_id as Matchcode,
    CONCAT('') as Telefonnummer,
    CONCAT('') as Fax,
    orders.customers_email_address as Email,
    CONCAT('') as USTID,
    CONCAT('') as Kontakt,
    CONCAT('') as AddrZusatz
FROM orders_total total1
    LEFT JOIN orders_total total2
        ON total1.orders_id = total2.orders_id AND total2.class = 'ot_cod_fee'
    JOIN orders
        ON orders.orders_id = total1.orders_id
    JOIN orders_status
        ON orders.orders_status = orders_status.orders_status_id
    WHERE total1.class = 'ot_shipping'
    ORDER BY orders.orders_id desc;
        ";
$result=xtc_db_query($sql);
$i=0;
while(($row = mysql_fetch_assoc($result))&&($i<100)){
$inhalt.='"'.implode('";"',$row)."\"\r\n";
$i++;
}
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=orders_export.csv");
echo $inhalt;