Versandinformationen an MY DPD weiterleiten

Thema wurde von denis_pauly, 9. Oktober 2023 erstellt.

  1. denis_pauly

    denis_pauly Neues Mitglied

    Registriert seit:
    13. September 2023
    Beiträge:
    3
    Danke erhalten:
    0
    Danke vergeben:
    4
    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
     
  2. DKG - Die Kleine Geschenkidee (Peter)

    Registriert seit:
    2. Oktober 2017
    Beiträge:
    343
    Danke erhalten:
    195
    Danke vergeben:
    120
    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:
    <?php

    date_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($delimiterarray_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üfen
    if ($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'], 035'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 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ügen
    fwrite($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 exists
    if (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:cool:
    Selbst ist der Mann :eek:

    LG
    Peter
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    17. Oktober 2018
    Beiträge:
    140
    Danke erhalten:
    78
    Danke vergeben:
    18
    #3 Anonymous, 9. Oktober 2023
    Zuletzt bearbeitet: 11. Oktober 2023
    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!
     
  4. denis_pauly

    denis_pauly Neues Mitglied

    Registriert seit:
    13. September 2023
    Beiträge:
    3
    Danke erhalten:
    0
    Danke vergeben:
    4
    @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.
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    17. Oktober 2018
    Beiträge:
    140
    Danke erhalten:
    78
    Danke vergeben:
    18
    #5 Anonymous, 11. Oktober 2023
    Zuletzt bearbeitet: 11. Oktober 2023
    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!