Hallo Zusammen, ich suche eine unkomplizierte Lösung die Kundendaten aus der Bestellung an "MY DPD" weiterzuleiten. Laut DPD FAQ soll man dies mit einer CSV Datei machen. Jedoch konnte ich keine Funktion finden, die mir erlaubt, eine CSV Datei zu exportieren. Die Konsequenz wäre, dass ich die Kundendaten per copy paste übertragen müsste. Dieser Prozess wäre Fehleranfällig und bei vielen Bestellungen auch mühsam. Wann greift das Versand-Module "MyDPD Business / iloxx" ? Vielen Dank für eure Hilfe! Denis
Hi, hast du Self-Hosting? Bist Du programmiertechnisch etwas versiert? Dann hier ein kleines Script, welches die offenen Bestellungen aus der gambio Datenbank ausliest (Versandadressen) und eine .csv Datei daraus erstellt. Du musst nur einen Benutzer via get oder post übergeben und die id (bestellstatus id) deiner offenen Bestellungen: PHP: <?phpdate_default_timezone_set('Europe/Berlin');$zeitpunkt = date('d-m-Y---H-i-s');$offenid = $_GET['offenid'];$benutzer = $_GET['benutzer'];function writeCsvLine($file, $data, $delimiter = ';', $enclosure = '') { $line = implode($delimiter, array_map(function($value) use ($enclosure) { return $enclosure . str_replace($enclosure, $enclosure . $enclosure, $value) . $enclosure; }, $data)); fwrite($file, $line . "\n");}// Hier Datenbankdaten eintragen$servername = 'localhost';$username = '';$password = '';$database = '';// Hier bestimmen wieviele Bestellungen für die CSV Datei übernommen werden soll$meinlimit = '15';$limit = "LIMIT ".$meinlimit."";// Verbindung herstellen$connection = new mysqli($servername, $username, $password, $database);// Verbindung überprüfenif ($connection->connect_error) { die('Verbindung fehlgeschlagen: ' . $connection->connect_error);} $query = "SELECT orders_id as bestellnummer, delivery_gender, delivery_company, delivery_firstname, delivery_lastname, delivery_country, delivery_postcode, delivery_city, delivery_street_address, delivery_additional_info, customers_id FROM orders WHERE orders_status = '$offenid' $limit ";$result = $connection->query($query);if ($result === false) { die('Abfrage fehlgeschlagen: ' . $connection->error);}// Array für CSV-Daten initialisieren$csvData = array();// Spaltenüberschriften hinzufügen$csvData[] = array('Anrede', 'Firma', 'Vorname', 'Nachname', 'Land', 'PLZ', 'Ort', 'Straße', 'Hausnummer', 'Sendungsreferenz 1', 'Telefon', 'E-Mail', 'Adresszusatz', 'Bundesstaat', 'Wareninhalt', 'Gewicht', 'default', 'Sendungsreferenz 2', 'Versandprodukt', 'Zusatzleistungen', 'Anzahl Pakete Sendung', 'Zollwert', 'Währung', 'Frankatur', 'Pakettyp', 'Rechnungsnummer', 'Rechnungsdatum', 'SPRN', 'EORI-Nummer (Absender)', 'UID (Empfänger)', 'Bemerkung', 'WTNR', 'Anzahl Artikel', 'Länge', 'Breite', 'Höhe', 'Abstellort (Versender-ASG)', 'Zustellinformation', 'Artikel', 'Herkunftsland', 'Nettogewicht', 'Bruttogewicht', 'Warenwert', 'Stück', 'Rechnungspositionsnummer', 'Warenwert (Höherversicherung)', 'Warenart (Höherversicherung)', 'Abteilung', 'Gebäude', 'Stockwerk', 'Vollständiger Name gemäß Ausweis', 'Telefon (ID-Check)', 'Ausweisnummer', 'Zielnetzwerk', 'MRN-Nummer'); while ($row = $result->fetch_assoc()) { // Variablen für Datenbankwerte erstellen und bearbeiten $bestellnummer = $row['bestellnummer']; $geschlecht = $row['delivery_gender']; $firma = mb_substr($row['delivery_company'], 0, 35, 'UTF-8'); if(!empty($firma)) { $anrede = 'Firma'; } elseif(empty($firma) && $geschlecht == 'm') { $anrede = ''; } elseif(empty($firma) && $geschlecht == 'f') { $anrede = ''; } elseif(empty($firma) && empty($geschlecht)) { $anrede = ''; } $vorname = $row['delivery_firstname']; $nachname = $row['delivery_lastname']; $lieferland = $row['delivery_country']; if($lieferland == 'Germany') { $land = 'DEU'; } $plz = $row['delivery_postcode']; $ort = $row['delivery_city']; $gesamtadresse = $row['delivery_street_address']; $words = explode(' ', $gesamtadresse); $hausnummer = array_pop($words); $vorstrasse = implode(' ', $words); $strasse = preg_replace('/\"/', "", $vorstrasse); $strasse = preg_replace('/\"/', "", $strasse); $adressreferenz = $bestellnummer; $telefon = ''; // Leer lassen $email = ''; // Leer lassen $adresszusatz = $row['delivery_additional_info']; $bundesstaat = ''; $default = ''; // Leer lassen $adresstyp = '1'; $sendungsreferenz1 = $bestellnummer; $sendungsreferenz2 = 'WARENPOST'; // Leer lassen $kundennummer = $row['customers_id']; $integerString = strval($kundennummer); $anzahlNullen = 9 - strlen($integerString); $nullenString = str_repeat('0', $anzahlNullen); $uid = 'DE' . $nullenString . $integerString; $wareninhalt = 'Goods'; $gewicht = '1'; $versandprodukt = '16'; $zusatzleistungen = ''; $anzahlPaketeSendung = '1'; $zollwert = ''; $waehrung = 'EUR'; $frankatur = ''; $pakettyp = '0'; $rechnungsnummer = ''; $rechnungsdatum = ''; $sprn = ''; $eoriNummerAbsender = ''; $uidEmpfaenger = ''; $bemerkung = ''; $wtnr = ''; $anzahlArtikel = ''; $laenge = '36'; $breite = '25'; $hoehe = '5'; $abstellortVersenderASG = ''; $zustellinformation = '0'; $artikel = ''; $herkunftsland = ''; $nettogewicht = ''; $bruttogewicht = ''; $warenwert = ''; $stueck = ''; $rechnungspositionsnummer = ''; $warenwertHoeherVersicherung = ''; $warenartHoeherVersicherung = ''; $abteilung = ''; $gebaeude = ''; $stockwerk = ''; $vollstaendigerNameAusweis = ''; $telefonIDCheck = ''; $ausweisnummer = ''; $zielnetzwerk = ''; $mrnNummer = ''; // Datenzeile für CSV erstellen $csvRow = array( $anrede, $firma, $vorname, $nachname, $land, $plz, $ort, $strasse, $hausnummer, $sendungsreferenz1, $telefon, $email, $adresszusatz, $bundesstaat, $wareninhalt, $gewicht, $default, $sendungsreferenz2, $versandprodukt, $zusatzleistungen, $anzahlPaketeSendung, $zollwert, $waehrung, $frankatur, $pakettyp, $rechnungsnummer, $rechnungsdatum, $sprn, $eoriNummerAbsender, $uidEmpfaenger, $bemerkung, $wtnr, $anzahlArtikel, $laenge, $breite, $hoehe, $abstellortVersenderASG, $zustellinformation, $artikel, $herkunftsland, $nettogewicht, $bruttogewicht, $warenwert, $stueck, $rechnungspositionsnummer, $warenwertHoeherVersicherung, $warenartHoeherVersicherung, $abteilung, $gebaeude, $stockwerk, $vollstaendigerNameAusweis, $telefonIDCheck, $ausweisnummer, $zielnetzwerk, $mrnNummer ); // Datenzeile zum CSV-Datenarray hinzufügen $csvData[] = $csvRow;}$connection->close();// CSV-Datei erstellen und Daten schreiben$filename = ''.$benutzer.'---'.$zeitpunkt.'.csv';$file = fopen($filename, 'w');// UTF-8 BOM einfügenfwrite($file, "\xEF\xBB\xBF");foreach ($csvData as $csvRow) { $csvRow = array_map(function($value) { return mb_convert_encoding($value, 'UTF-8', 'UTF-8'); }, $csvRow); writeCsvLine($file, $csvRow, ';', '');}fclose($file);$file_path = __DIR__ . '/' . $filename; // Full path to the file in the same directory as the script// Check if the file existsif (file_exists($file_path)) { // Set headers for force download header('Content-Description: File Transfer'); header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file_path)); // Read the file and output its contents readfile($file_path); exit;} else { // File doesn't exist die('Error: The file does not exist.');}?> Nächste Steps: Zieh dir in mydpd die Beispiel csv und die Infos. Passe dann z.B. an $versandprodukt = '16'; // steht für Parcelletter - für Classic muss eine andere Zahl rein. Den Rest musst du alleine machen, weiter kann und will ich aufgrund Zeitmangel nicht helfen Selbst ist der Mann LG Peter
Hallo Denis, eine andere Möglichkeit wäre der Export in eine CSV über das REST API, was somit auch grundsätzlich für Cloudshops geeignet ist. Es gibt einen Thread dazu hier: https://www.gambio.de/forum/threads/bestellungen-exportieren-mit-rest-api.45956/ Zum genannten Versandmodul kann ich leider nichts sagen. Halbwegs aktuelle Infos zur Übergabe der Bestelldaten für einen Versand mit DPD findest Du z.B. hier https://www.gambio.de/forum/threads/welches-modul-fuer-dpd-versand.48368/ Viel Erfolg!
@DKG - Die Kleine Geschenkidee (Peter) Ich nutze die Cloud Version. Ist das ein Problem? Ich kann leider nicht Programmieren, aber ich habe einen Freund an der Hand der mich bei der Webseite unterstützt. Er hat auch Erfahrung im programmieren. Vielen Dank für die schnelle Hilfe! @Pepe Ich habe die beiden Links gelesen und auch dir möchte ich danken! Ich werde einen Bericht veröffentlichen, sobald wir DPD erfolgreich integriert haben.
Hallo Denis, In einem Cloud Shop ist der Aufruf eines eigenen Skripts (Peter's Lösung) angeblich möglich. Siehe dazu diesen Post, der den CSV-Export Versanddaten für DHL Privatkunden angeblich erfolgreich beschreibt https://www.gambio.de/forum/threads/csv-export-versanddaten-fuer-dhl-privatkunden.50439/ Für die Benutzung des API in einem Cloudshop ist laut dieser Tabelle https://www.gambio.de/forum/threads/csv-export-versanddaten-fuer-dhl-privatkunden.50439/ mindestens der "SMALL BUSINESS" Tarif erforderlich. Weiterhin viel Erfolg!