Guten Morgen, seit gestern geht der Export zu Hermes nicht mehr, da die Tabellenstruktur verändert wurde. Anscheinend raffe ich es nicht, die Datei anzupassen. Hat das vielleicht schon jemand getan?
Hallo, ja ich weiß warum es nicht mehr geht. Es liegt daran dass Hermes eine Spalte mehr eingefügt hat (Sperrgutgewicht glaub ich war das). Einfach die neue Vorlage downloaden und vergleichen. Grüße
Hallo Toby, habe ich bereits getan, aber ich blicke da nicht durch. Was auch immer ich "anpasse", irgendwie passen die Spalten nie.
Ich hab leider gerade keinen Zugriff. Aber lade mal die Hermes Vorlagedatei runter (neue) und vergleich diese mit der alten. Da solltest du dann auf jedenfall einen Unterschied sehen. Ich glaube so weißt du schneller was man anpassen muss. Wenn ich später noch Info habe kann ich Sie dir ja durchgeben.
Hallo ! Ich habe versucht, die php Datei zu ändern ( Sperrgutzuschlag ergänzt ). Dies reicht aber leider nicht, der Gambio Support findet keinen Fehler, obwohl beim Import immer Fehlermeldung:Fehler in Zeile 1, Spalte 9: Die Rufnummer enthält nicht nur Ziffern kommt. Weiß jemand Rat ? Danke Andreas
Hallo Andreas, genau so ging es mir auch. Ich schätze, da ist wahrscheinlich die E-Mail Adresse drin. Ich habe schon vieles hin- und hergeschoben, irgendwas passt immer nicht.
Hallo, Petra ! Danke für die Antwort. Ich verstehe aber die Fehlermeldung nicht, an der Spalte Telefonnummer hat sich ja nichts verändert. Die Antwort von Gambio auf ein an sich bekanntes Problem ::wir konnten im Kundenexport keine Formatierungsfehler feststellen. ist ja auch sehr interessant, da hat man sich große Mühe gemacht ... :O)
Deshalb habe ich gar nicht erst ein Ticket eröffnet. Ein wirklicher Formatierungsfehler ist es ja nicht, es ist halt eine Spalte dazugekommen und die muss nur an die richtige Stelle. Bei meinen Anpassungsversuchen hatte ich immer das Gefühl, dass es verschiebt aber nicht einfügt. Wenn du verstehst, was ich meine
Ich mache den Export in eine hermes.txt mit dem "aktuellen" Modul und lösche dann in einem Texteditor einfach die letzten paar Einträge pro Zeile raus, bis als letzter Eintrag pro Zeile die Mailadresse und das abschließende Semikolon steht. Das ist suboptimal. Ich habe versucht, die hermes.php im Ordner /admin/includes/modules/gm_export anzupassen - was ja eigentlich kein großes Problem sein sollte, da ja "nur" die letzten zwei, drei Einträge bei der Erstellung der Textzeile entfallen. Habe diese angepasste Datei dann in den Ordner hochgeladen und bekomme bei Admin > Kundenexport einen Fatal Error, vonwegen der Shop könne die Klasse "Hermes" nicht neu definieren (oder sowas in der Art). Also habe ich es gelassen und behelfe mit mit dem manuellen löschen der letzten paar Einträge in der exportierten hermes.txt Datei. Die kann ich dann gut einbinden bei Hermes. Aber wäre echt besser, wenn das richtig funktionieren würde. Viele Grüße Florian
Problem gelöst mit einer neuen hermes.php: PHP: <?php/* -------------------------------------------------------------- hermes.php 2010-03-23 gm Gambio GmbH http://www.gambio.de Copyright (c) 2010 Gambio GmbH Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] -------------------------------------------------------------- based on: (c) 2000-2001 The Exchange Project (earlier name of osCommerce) (c) 2002-2003 osCommerce(cod.php,v 1.28 2003/02/14); www.oscommerce.com (c) 2003 nextcommerce (invoice.php,v 1.6 2003/08/24); www.nextcommerce.org (c) 2003 XT-Commerce - community made shopping http://www.xt-commerce.com ($Id: froogle.php 1188 2005-08-28 14:24:34Z matthias $) Released under the GNU General Public License ---------------------------------------------------------------------------------------*/defined('_VALID_XTC') or die('Direct Access to this location is not allowed.');define('MODULE_HERMES_TEXT_DESCRIPTION', 'Export - Hermes');define('MODULE_HERMES_TEXT_TITLE', 'Hermes - TXT');define('MODULE_HERMES_FILE_TITLE', '<hr noshade>Dateiname');define('MODULE_HERMES_FILE_DESC', 'Geben Sie einen Dateinamen ein, falls die Exportadatei am Server gespeichert werden soll.<br>(Verzeichnis export/)');define('MODULE_HERMES_STATUS_DESC', 'Modulstatus');define('MODULE_HERMES_STATUS_TITLE', 'Status');define('MODULE_HERMES_CURRENCY_TITLE', 'Währung');define('MODULE_HERMES_CURRENCY_DESC', 'Welche Währung soll exportiert werden?');define('EXPORT_YES', 'Nur Herunterladen');define('EXPORT_NO', 'Am Server Speichern');define('CURRENCY', '<hr noshade><b>Währung:</b>');define('CURRENCY_DESC', 'Währung in der Exportdatei');define('EXPORT', 'Bitte den Sicherungsprozess AUF KEINEN FALL unterbrechen. Dieser kann einige Minuten in Anspruch nehmen.');define('EXPORT_TYPE', '<hr noshade><b>Speicherart:</b>');define('EXPORT_STATUS_TYPE', '<hr noshade><b>Kundengruppe:</b>');define('EXPORT_STATUS', 'Bitte wählen Sie die Kundengruppe, die Basis für den Exportierten Preis bildet. (Falls Sie keine Kundengruppenpreise haben, wählen Sie <i>Gast</i>):</b>');define('ORDERS_STATUS', '<hr noshade><b>Bestellstatus:</b>');define('ORDERS_STATUS_DESC', 'Bitte wählen Sie den Bestellstatus der Bestellungen, die Sie exportieren wollen:');define('ORDERS_STATUS_NEW_DESC', 'Bitte wählen Sie den Bestellstatus, der nach dem Export für die jeweilige Bestellung gelten soll:');define('DATE_FORMAT_EXPORT', '%d.%m.%Y'); // this is used for strftime()define('GM_PAKET', '<hr noshade><b>Paketgröße:</b><br><input type="text" name="gm_paket" value="S" size="4" />');// include needed functionsclass hermes { var $code, $title, $description, $enabled; function hermes() { global $order; $this->code = 'hermes'; $this->title = MODULE_HERMES_TEXT_TITLE; $this->description = MODULE_HERMES_TEXT_DESCRIPTION; $this->sort_order = MODULE_HERMES_SORT_ORDER; $this->enabled = ((MODULE_HERMES_STATUS == 'True') ? true : false); $this->CAT = array (); $this->PARENT = array (); } function process($file) { @ xtc_set_time_limit(0); $orders_query_where= "WHERE c.countries_iso_code_2=o.delivery_country_iso_code_2 "; if ($_POST['oders_status'] != null) { $orders_query_where .= "AND o.orders_status='" . $_POST['oders_status']."'"; } $schema = ''; //$schema = 'Vorname(20);Nachname/Firmenname(25);Adresszusatz(20);Straße(27);Hausnummer(5);PLZ(5);Ort(25);Bezirk(25)*;Land(3);Tel. Vorwahl(6);Telefonnummer(8);E-Mail Adresse(80);Kundenreferenznummer(20); Paketklasse(3); Nachnahmebetrag(7); ' . "\n"; $orders_query = "SELECT o.orders_id, o.customers_id, o.customers_telephone, o.customers_email_address, o.delivery_name, o.delivery_firstname, o.delivery_lastname, o.delivery_company, o.delivery_street_address, o.delivery_suburb, o.delivery_city, o.delivery_postcode, o.delivery_state, o.delivery_country, o.delivery_country_iso_code_2, c.countries_iso_code_3, o.payment_method, o.comments, o.date_purchased, o.orders_status, o.currency, o.shipping_class FROM orders o, countries c " . $orders_query_where; $customers_query = xtc_db_query($orders_query); while ($customers = xtc_db_fetch_array($customers_query)) { $paket = trim($_POST['gm_paket']); $order_value=" "; if ($customers[payment_method] == 'cod') { $cod_query = "SELECT text from orders_total where orders_id='" . $customers['orders_id'] . "' and class='ot_cod_fee'"; $cod_query = xtc_db_query($cod_query); $cod_array = xtc_db_fetch_array($cod_query); $order_value_query = "SELECT value FROM orders_total WHERE orders_id='".$customers['orders_id']."' AND class='ot_total'"; $order_value_query = xtc_db_query($order_value_query); $order_value_array = xtc_db_fetch_array($order_value_query); $order_value = number_format((double)$order_value_array['value'], 2); $order_value = str_replace('.',',',$order_value); } $comment = preg_replace("/\s+/", " ", $customers['comments']); $cod_value = str_replace(" " . $customers['currency'], '', $cod_array['text']); $delivery_firstname = $customers['delivery_firstname']; if(empty($delivery_firstname)) { $delivery_firstname = ' '; } $delivery_lastname = $customers['delivery_lastname']; if(empty($delivery_lastname)) { $delivery_lastname = ' '; } $delivery_street_address = $customers['delivery_street_address']; if(empty($delivery_street_address)) { $delivery_street_address = ' '; } $delivery_postcode = $customers['delivery_postcode']; if(empty($delivery_postcode)) { $delivery_postcode = ' '; } $delivery_city = $customers['delivery_city']; if(empty($delivery_city)) { $delivery_city = ' '; } $delivery_suburb = $customers['delivery_suburb']; if(empty($delivery_suburb)) { $delivery_suburb = ' '; } $countries_iso_code_3 = $customers['countries_iso_code_3']; if(empty($countries_iso_code_3)) { $countries_iso_code_3 = ' '; } $customers_email_address = $customers['customers_email_address']; if(empty($customers_email_address)) { $customers_email_address = ' '; } $customers_id = $customers['customers_id']; if(empty($customers_id)) { $customers_id = ' '; } if(empty($paket)) { $paket = ' '; } if(empty($order_value)) { $order_value = ' '; } $schema_entry = //Vorname $delivery_firstname .";". //Nachname $delivery_lastname .";". //Adresszusatz $delivery_suburb .";". //Straße $delivery_street_address .";". //Hausnummer ' ' . ";" . //Postleitzahl $delivery_postcode .";". //Ort $delivery_city .";". //Tel. Vorwahl ' ' . ";" . //Telefonnummer ' ' . ";" . //E-Mail Adresse $customers_email_address .";". //Kundenreverenznummer $customers_id .";". //Paketklasse $paket .";". //Sperrrgut '0' . ";" . $order_value .";". ' ' . ";" . "\n" ; $schema .= $schema_entry; } if(empty($schema)) { $schema = ' '; } // create File $fp = fopen(DIR_FS_DOCUMENT_ROOT . 'export/' . $file, "w+"); fputs($fp, $schema); fclose($fp); switch ($_POST['export']) { case 'yes' : // send File to Browser $extension = substr($file, -3); $fp = fopen(DIR_FS_DOCUMENT_ROOT . 'export/' . $file, "rb"); $buffer = fread($fp, filesize(DIR_FS_DOCUMENT_ROOT . 'export/' . $file)); fclose($fp); header('Content-type: application/x-octet-stream'); header('Content-disposition: attachment; filename=' . $file); echo $buffer; if ($_POST['oders_status_new'] != null AND $_POST['oders_status'] != null) { $query = "UPDATE orders SET orders_status ='" . $_POST['oders_status_new'] . "' WHERE orders_status = '" . $_POST['oders_status'] . "'"; xtc_db_query($query); } exit; break; } if ($_POST['oders_status_new'] != null AND $_POST['oders_status'] != null) { $query = "UPDATE orders SET orders_status ='" . $_POST['oders_status_new'] . "' WHERE orders_status = '" . $_POST['oders_status'] . "'"; xtc_db_query($query); } } function display() { $customers_statuses_array = xtc_get_customers_statuses(); // build Currency Select $orders_status_array = array ( array ( 'id' => '', 'text' => 'alle' ) ); $orders_status_query = xtc_db_query("select orders_status_name, orders_status_id from " . TABLE_ORDERS_STATUS . " WHERE language_id='2' order by orders_status_id"); while ($orders_status = xtc_db_fetch_array($orders_status_query)) { $orders_status_array[] = array ( 'id' => $orders_status['orders_status_id'], 'text' => $orders_status['orders_status_name'], ); } $orders_status_new_array = $orders_status_array; $orders_status_new_array[0]['text'] = 'nicht ändern'; return array ( 'text' => ORDERS_STATUS . '<br>' . ORDERS_STATUS_DESC . '<br>' . xtc_draw_pull_down_menu('oders_status', $orders_status_array ) . '<br><br>' . ORDERS_STATUS_NEW_DESC . '<br>' . xtc_draw_pull_down_menu('oders_status_new', $orders_status_new_array) . '<br>' . GM_PAKET.'<br>'. EXPORT_TYPE . '<br>' . EXPORT . '<br>' . xtc_draw_radio_field('export', 'no', false) . EXPORT_NO . '<br>' . xtc_draw_radio_field('export', 'yes', true) . EXPORT_YES . '<br>' . '<br><div align="center">' . xtc_button(BUTTON_EXPORT) . xtc_button_link(BUTTON_CANCEL, xtc_href_link(FILENAME_GM_MODULE_EXPORT, 'set=' . $_GET['set'] . '&module=hermes')) .'</div>'); } function check() { if (!isset ($this->_check)) { $check_query = xtc_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_HERMES_STATUS'"); $this->_check = xtc_db_num_rows($check_query); } return $this->_check; } function install() { xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_HERMES_FILE', 'hermes.txt', '6', '1', '', now())"); xtc_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_HERMES_STATUS', 'True', '6', '1', 'gm_cfg_select_option(array(\'True\', \'False\'), ', now())"); } function remove() { xtc_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { return array ( 'MODULE_HERMES_STATUS', 'MODULE_HERMES_FILE' ); }}?> Und hier gehört die hermes.php rein: admin/includes/modules/gm_export/
Zumindest bei mir funktioniert die Datei nicht. Hermes kann die Datei nicht einlesen und bringt folgenden Fehler: Das liegt - denke ich - daran, dass Hermes das so erwartet: aber die obenstehende PHP Datei dies auswirft: Zumindest bei mir kann Hermes mit allem, was nach der Mailadresse noch in der Zeile steht, nichts anfangen und weist die Importdatei als fehlerhaft zurück. Wie ich in meinem vorherigen Post schon erwähnt habe, passe ich die Exportdatei des Shops manuell an und lösche in jeder Zeile die letzten paar Einträge, sodass die Mailadresse der letzte Eintrag in der Zeile ist. So wie ich die Vorlagendatei von Hermes verstehe, ist es auch garnicht mehr möglich, die Paketgröße mit zu übergeben!?! Viele Grüße Florian Shopversion v2.0.10d r6138
Guten Morgen Florian, bei mir funktioniert es einwandfrei - so wie früher. Vielleicht habe ich beim Kopieren irgendwas unterschlagen deshalb hänge ich die Datei einfach mal als Download an.
Mmmhhhh,, sehr seltsam, ich bekomme mit der eingespielten Datei genau die gleichen Fehler wie oben beschreiben. Könnte es daran liegen, dass ich bei Hermes noch kein ProfiPaketService nutze, sondern meine Pakete als Privatkunde versende? Evtl. sind die Vorlagen für Privatkunden anders als die für ProfiPaketService-Kunden. Wenn ich die Musterdatei zum csv Import von Hermes runterlade, ist eine readme Datei enthalten. Diese: Ist die anders als die Datei für ProfiPaketService Kunden? Denn in der Datei steht ja, dass die Mailadresse der letzte Eintrag sein soll. Die hermes.php Exportdatei für den Shop wirft aber noch mehr Felder aus, die Hermes nicht braucht und daher auch nicht versteht. Alles sehr seltsam:-D
Hi Florian, kann ich mir nicht vorstellen, aber möglich ist alles. Andererseits: Warum meldest du dich eigentlich nicht als PPS-Kunde an? Mittlerweile kann man das schon ab 300 Paketen pro Jahr.
Ich habe zwar ein vielfaches dieser 300 Pakete im Jahr, aber Hermes als PPS Kunde bringt mir nichts. Ich versende die meisten meiner Pakete in der Größe XS. Als "normaler" Kunde darf dieses Paket dann bis 37cm groß sein, als PPS Kunde nur noch bis maximal 30cm. Dann passen aber meine Päckchen nicht mehr und ich müsste alles in Größe S versenden. Das ist dann wiederum teurer als die Päckchen als "normaler" Kunde in XS zu versenden. Blöd, aber ist nunmal so :-( Aber ich schaue mir mal GLS und/oder DPD an, evtl. geht da noch was günstiger. Wie sieht denn die Excelvorlage (oder *.csv Vorlage) aus, wenn ich die als PPS Kunde herunterlade? Ist die Beschreibung, die dabei ist, genauso wie die, die ich gepostet habe? Würde mich mal so aus Neugier interessieren. Das wurmt mich nämlich schon irgendwie.....