Modul Bestellungen exportieren mit REST API

Thema wurde von Anonymous, 13. Februar 2021 erstellt.

  1. TobiasBerben

    TobiasBerben Aktives Mitglied

    Registriert seit:
    4. April 2017
    Beiträge:
    41
    Danke erhalten:
    8
    Danke vergeben:
    21
    Hallo L&B,

    ja, jetzt funktioniert es wie erwartet: Ich kann Daten nur genau dann abfragen, wenn ich über die URL einen Token für $sec mitgesendet habe. Den von Dir korrigierten Fehler habe ich auch gesehen - Du hattest in den Hidden Fields $gtoken statt $sec eingetragen und $gtoken ist natürlich immer identisch mit $gtoken, aber wichtig ist ja, dass $sec mit $gtoken identisch ist ...

    1. Warum aber gibst Du eigentlich die ganze Ausgabe des Scripts noch auf den Schirm und nicht nur in die Datei? Da muss man dann, wenn man viele Bestellungen hatte, immer ganz nach unten scrollen ... ?

    2. Btw., kann man einfach für die CSV-Datei das Trennzeichen von ',' auf ';' ändern? So macht mir das Excel z. B. nicht vernünftig auf?

    3. Darf ich Dein Script als Grundlage für eine Seite nehmen, über die man von unterwegs mal eben im Browser schauen kann, welche Bestellungen aufgelaufen sind? Die würde ich dann natürlich auch hier für alle bereitstellen.

    Anyway, tolle Arbeit, vielen Dank!

    Viele Grüße, Tobias Berben
     
  2. TobiasBerben

    TobiasBerben Aktives Mitglied

    Registriert seit:
    4. April 2017
    Beiträge:
    41
    Danke erhalten:
    8
    Danke vergeben:
    21
    #42 TobiasBerben, 30. März 2021
    Zuletzt bearbeitet: 30. März 2021
    Hallo L&B,

    meine zweite Frage habe ich selber lösen können:

    Zeile 92: fputcsv($fp, $header, ';');
    Zeile 163: fputcsv($fp, $csvrow, ';');

    Dann wird es in meinem aktuellen Excel problemlos geöffnet. :)

    Und in Zeile 170 hat sich noch ein Fehler beim Link für das Löschen der CSV-Datei eingeschlichen:

    Falsch: echo '<a href="orders_export?sec=' . $gtoken .'&action=3">Exportdatei entfernen</a>';
    Richtig: echo '<a href="orders_export.php?sec=' . $gtoken .'&action=3">Exportdatei entfernen</a>';

    Und sollte man hier nicht auch besser $sec als $gtoken nehmen? Wohl egal, weil man durch die Prüfung ja durch ist, oder?

    Viele Grüße, Tobias Berben
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.508
    Danke erhalten:
    990
    Danke vergeben:
    856
    Frage 1: Das ist wohl noch vom Debuggen da drin - und damit man sich schnell einen Überblick verschaffen kann, ob alles in etwa passt, bevor man die Datei blind zum Steuerberater schickt o.ä.

    Frage 3: Klar, mach mal. Gute Nutzungsidee, an die ich noch gar nicht gedacht habe. Allerdings würde ich persönlich dann wieder eine Anzeige der Daten im Browser besser finden als eine CSV auf dem Handy öffnen zu müssen.
     
  4. TobiasBerben

    TobiasBerben Aktives Mitglied

    Registriert seit:
    4. April 2017
    Beiträge:
    41
    Danke erhalten:
    8
    Danke vergeben:
    21
    Ja, klar, alle offenen Bestellung oder Bestellungen der letzten X Tage in einer übersichtlichen, kleinen, responsiven Tabelle direkt im Browser, das war meine Idee. Mal schauen, hoffe, ich komme demnächst dazu!

    Viele Grüße, Tobias Berben
     
  5. ostephan1

    ostephan1 Neues Mitglied

    Registriert seit:
    28. Mai 2019
    Beiträge:
    4
    Danke erhalten:
    0
    Danke vergeben:
    2
    Kann man den zusätzlich noch die Rechnungsnummern exportieren und evtl. auch die PaymentID's von PayPal und die Order-Id von Klarna und die Bestell-ID von Amazon? Geht das? Wenn ja wie? Ist das möglich?
     
  6. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.508
    Danke erhalten:
    990
    Danke vergeben:
    856
    Bestimmt. Daw sind dann aber mindestens 3 weitere API Calls, also nicht mal eben mit einer Zeile Code-Erweiterung machbar. Das was mit SQL als EINE Tabellen-übergreifende Abfrage ging, wird mit einer starren API ein Sammelsurium von aneinandergereihten und verschachtelten Einzelabfragen.
     
  7. MartinA&K

    MartinA&K Mitglied

    Registriert seit:
    29. Juli 2018
    Beiträge:
    9
    Danke erhalten:
    1
    Danke vergeben:
    2
    Guten Morgen,
    vielen Dank für das hilfreiche Werkzeug. Leider kommt bei mir nur 400 Bad Request und die CSV enthält aber der 2. Zeile nur ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,
    Kann mir eventuell jemand helfen und mitteilen, was ich falsch gemacht habe?
    Entschuldigt bitte, dass ist das erste mal das ich ein Script selber versuche zu "installieren".
    Danke und Liebe Grüße,
    Martin
     
  8. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.508
    Danke erhalten:
    990
    Danke vergeben:
    856
    #48 Anonymous, 20. April 2021
    Zuletzt bearbeitet: 21. April 2021
    Hallo Martin,

    Fehler 400 kann alles sein. Sowas alles:
    (Link nur für registrierte Nutzer sichtbar.)

    Musst du mal ins Error Log schauen oder so. Meine heißesten Vermutungen:
    • Du rufst die falsche URL auf und / oder hast einen Syntaxfehler darin
    • Du hast den oberen Bereich der Datei, in der man Konfigurationen vornimmt, versehentlich kaputtgemacht.
    Wenn du nicht mehr Details geben willst oder kannst, würde ich die Datei nochmal neu herunterladen und die Konfiguration neu vornehmen, und die Inbetriebnahme-Anleitung nochmal anschauen. Und schauen, ob du den Token richtig übertragen hast: Anführungszeichen richtig, komplett kopiert, kein Leerzeichen vorne oder hinten dran, ...

    Edit: Vielleicht bist du auch hiervon betroffen?
    (Link nur für registrierte Nutzer sichtbar.)
     
  9. Jan Brodowsky

    Jan Brodowsky Erfahrener Benutzer

    Registriert seit:
    20. Juni 2012
    Beiträge:
    165
    Danke erhalten:
    12
    Danke vergeben:
    75
    Hallo, erstmal vielen Dank an @L & B für das Script.
    Ich habe es zum laufen bekommen. auf der Seite erhalte ich aber auch folgenden Fehler
    Code:
    Warning: unlink(oJbiexport.csv): No such file or directory in xxx/orders_export.php on line 24
    
    xxx wurde von mir eingefügt
     
  10. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.508
    Danke erhalten:
    990
    Danke vergeben:
    856
    Schönheitsfehler. Ich habe ein Update im ersten Post hochgeladen. Eigentlich sollte das höchstens beim ersten Aufruf passieren, weil der Fehler nur dann auftritt, wenn die letzte Export-CSV gelöscht werden soll. Beim ersten Aufruf gibt es die natürlich noch nicht. Jetzt erfolgt vor dem Löschversuch die Prüfung, ob es die Datei gibt.
     
  11. Jan Brodowsky

    Jan Brodowsky Erfahrener Benutzer

    Registriert seit:
    20. Juni 2012
    Beiträge:
    165
    Danke erhalten:
    12
    Danke vergeben:
    75
    Ok ;) damit kann ich leben - eine letzte kleine Frage habe ich dann noch: Ich möchte nur die Kundendaten exportieren, ohne den ganzen Bestellkram drumherum. Also habe ich den Teil verändert... Klappt nur leider nicht - wo muss ich da noch ran?
    Code:
    // CSV-Header schreiben
                        $fp = fopen($cfilename, 'w');
                        $header = array('Email','Telefon','Vorname','Nachname','Firma','Strasse','Hausnummer','Adresszeile2','PLZ','Ort','Land');
                        fputcsv($fp, $header);
     
  12. barbara_t

    barbara_t Neues Mitglied

    Registriert seit:
    1. Dezember 2020
    Beiträge:
    4
    Danke erhalten:
    0
    Hallo,
    auch von mir vielen herzlichen Dank für das Script! Mir geht es gleich wie Martin, die csv-Datei enthält ab der 2. Zeile ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,

    @MartinA&K was war denn dann die Lösung bei dir?
    ich hab die Datei mehrmals heruntergeladen, auf Fehler in der Konfiguration geprüft. Die neueste Shop-Version ist installiert, allerdings ist mein Shop noch offline, da leider noch nicht fertig. Kann es daran liegen?

    "Exportdatei entfernen" funktioniert. Wenn ich auf "Bestellungen exportieren" klicke, hört er nicht auf zu laden, es kommt also auch keine neue Seite. Obwohl die csv-Datei erstellt wird, aber eben ohne Bestell-Details. (Ich habe 7 Bestellungen da, falls ihr euch fragt ;))

    Ich wäre sehr dankbar für Ideen und Hilfestellung. Gebe auch gern noch mehr Details, wenn nötig.
    Liebe Grüße,
    Barbara
     
  13. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.508
    Danke erhalten:
    990
    Danke vergeben:
    856
    Kann gut sein dass es daran liegt dass der Shop offline ist. Dann nimm ihn doch mal zum Testen online? Ansonsten: Wenn CURL auf dem Server aktiviert ist und die Konfiguration passt, dürfte es eigentlich laufen.
     
  14. barbara_t

    barbara_t Neues Mitglied

    Registriert seit:
    1. Dezember 2020
    Beiträge:
    4
    Danke erhalten:
    0
    Ich hab gestern doch noch eine Fehlermeldung angezeigt bekommen:
    [​IMG]
     
  15. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.508
    Danke erhalten:
    990
    Danke vergeben:
    856
    Hast du Bestellnummern mit Buchstaben?

    Invalid Credentials bedeutet wohl, dass du falsche Zugangsdaten für die Rest API verwendest, vermute ich.
     
  16. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.508
    Danke erhalten:
    990
    Danke vergeben:
    856
    Könnte auch sein dass diese hier dein Problem ist:
    (Link nur für registrierte Nutzer sichtbar.)
     
  17. barbara_t

    barbara_t Neues Mitglied

    Registriert seit:
    1. Dezember 2020
    Beiträge:
    4
    Danke erhalten:
    0
    Danke für die rasche Hilfestellung!
    Die Bestellnummern sind nur Zahlen. Falsche Zugangsdaten hieße dann falscher Token?

    Danke für den Link, ich werd das mal probieren.
     
  18. MartinA&K

    MartinA&K Mitglied

    Registriert seit:
    29. Juli 2018
    Beiträge:
    9
    Danke erhalten:
    1
    Danke vergeben:
    2
    @barbara_t Bei mir hat das nicht funktioniert. Allerdings kann der nette Herr von Werbemarkt das Problem lösen. Ich habe alle passenden Tables aus der SQL Abfrage gefunden und somit alle benötigten Daten für unseren Steuerberater über ein paar Excel Formeln zusammen gebastelt. Die Vorlage für die Zukunft ist einfach und man muss nur die Tables aktualisieren.
     
  19. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. April 2019
    Beiträge:
    80
    Danke erhalten:
    14
    Danke vergeben:
    14
    Hallo L&B,
    erstmal vielen lieben Dank für die Arbeit hier und das Bereitstellen des Codes.
    Das meiste läuft soweit super, bis auf ein paar Anpassungen bzw. Erweiterungen die wir benötigten.
    Ich habe aber das Problem, dass wenn in der Datenbank für ein Feld keine Daten bereit gestellt werden er in der CSV das Feld mit dem nächsten Wert füllt. Also wenn z.B. kein Kommentar vorhanden ist, schreibt er dann dort das Gewicht rein und es verschiebt sich der ganze Rest!
    Ich kann jetzt natürlich über eine if_else Abfrage vorher immer checken ob ein Wert vorhanden ist und ansonsten ein Leerzeichen in die Variable schreiben, frage mich aber ob es dafür nicht eine einfacherer Lösung gäbe???
    Bzw. warum lässt er das Feld nicht einfach frei und nimmt das nächste. Wo ist mein Denkfehler?
    Wenn ich die CSV im Editor öffne stehen beim Kommentar zwei ;; hintereinander (oder Kommata im Original) ???
    In der Ausgabe im Browser (array$response2) stehen da dann auch die zwei Anführungszeichen! Braucht er da zwingend ein Leerzeichen um das in die CSV zu schreiben ??? Hatte sonst niemand bisher das Problem? Da tauchen ja auch noch jede Menge Addresszusatzfelder auf später, die alle nicht befüllt werden !
    Über Lösungsvorschläge würde ich mich freuen.
    Danke
     
  20. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. April 2019
    Beiträge:
    80
    Danke erhalten:
    14
    Danke vergeben:
    14
    Ach so, noch ein Nachtrag für die die es vielleicht gebrauchen können.
    L&B hatte ja über ein echo das array $response2 ausgegeben. Da stehen z.B. auch die ganzen Artikel die zur Bestellung gehören mit drinne. Leider werden die nicht in der Original Datei in die CSV mit übertragen!
    Ich habe es so gelöst:
    hinter (ca Zeile 172)
    $data['_links']['tracking_codes']);
    fputcsv($fp, $csvrow,);
    PHP:
    $item count($data['items']);
                  if(
    $item 1)
                  {
                    for(
    $z 0$z $item$z++)
                      {
                        
    $a $z+1;
                        
    $csvrow[$z] = array( 'Artikel_'.$a$data['items'][$z]['model'], $data['items'][$z]['name'], $data['items'][$z]['quantity'], $data['items'][$z]['price'].' EUR');
                        
    fputcsv($fp$csvrow[$z]);
                      }  
                  }
                  else
                  {
                     
    $csvrow[0] = array( 'Artikel'$data['items'][0]['model'], $data['items'][0]['name'], $data['items'][0]['quantity'], $data['items'][0]['price'].' EUR');
                     
    fputcsv($fp$csvrow[0]);
                  }
    Dann schreibt er in extra Zeilen unter die Bestellnummer Artikel_1, die Artikelnummer, den Artikelname, die Anzahl und den Artikelpreis auch noch mit in die CSV.
    Unsere Zulieferer wollten schon wissen, was sie an die Lieferadresse liefern sollen ;)