Export in CSV von Bestellungen für CE (Cronjob)


#1

Hallo, ich suche nun schon ein Weilchen. Aber so wirklich was passendes habe ich nicht finden können.
Kann mir da jemand einen Tipp geben?

Danke.


#2

Wie wäre es mit ein paar mehr Sätzen?
Was hast du bisher gefunden und wieso hat es nicht gepasst?


#3

Ich möchte keine große Lösung. Ein einfaches exportieren nur der Bestellungen in eine CSV. Und das automatisch per Cron.
Entweder ich habe da Tomaten auf den Augen oder Tante Google gibt da nicht wirklich was aus.
Für CE 4.10.6
Danke.


#4

Naja, könnte daran liegen, dass eine Bestellung per se nicht “einfach” (im Sinne von einzeilig) ist von der Datenstruktur her, insbesondere in einer CSV. Wie soll die den deiner Meinung nach aussehen? Und wofür soll das in einer CSV Datei gut sein?

Grundsätzlich brauchst du ja den Bestellkopf (Bestelldaten) und dann nochmal alle Artikel mit allen Artikelangaben. Wie soll dass in eine CSV?
Da wir es keine allgemeingültige Lösung geben, nur etwas individuelles.
cya


#5

Über Google finde ich durchaus einige Tools und Module, allerdings mit höherem Funktionsumfang und daher kostenpflichtig.
Der einfachste Weg wäre sich im PhpMyAdmin eine SQL Abfrage zu basteln und dann diese Abfrage in einem cronjob zu hinterlegen, quasi ganz ohne Oxid einzubeziehen.


#6

So lange die kompletten Bestellungen exportiert werden, darf es auch kostenpflichtig sein.
Denkbar wäre auch XML.
Darf ich fragen, was du gesehen hast?
Würde ich mir gerne ansehen.
Danke.


#7

im Prinzip nur das:
http://csv-export.de/oxid-bestellungen-exportieren/
Im exchange gibt es noch eine Schnittstelle für OSCware, aber ich weiß nicht, inwiefern man da irgendwas einstellen kann.
Und Web-Architektin bietet sowas als Dienstleistung an:
https://www.web-grips.de/oxid-daten-export

Ansonsten, da du XML erwähnt hast, kann ich mal unser Export Script ausgraben. Wir exportieren damit täglich Bestellungen per cronjob für ein ERP. (Adresse + Bestellungen in getrennten XML Dateien)


#8

Das wäre toll, wenn du mal schaust wegen deines Scripts.
Danke.


#9

Bei uns müssen Neukunden gesondert vor den Bestellungen importiert werden, daher haben wir zwei Dateien, aber beides in einer Datei unterzubringen wäre kein großer Aufwand.

Wichtige Stellen sind:

  • Pfad zur PHP binary in der Zeile 1
  • die Konfiguration in den Zeilen 11-12
  • neues DB Feld in der Zeile 30
  • bei Problemen mit dem Zeichensatz müsste ggf Zeile 217 wieder einkommentiert werden.

#10

Bin sehr begeistert, ohne es mir jetzt genau angesehen zu haben. Bin noch unterwegs. Sieht aber gut aus!!
Ich werde das testen und natürlich eine Rückmeldung geben.
Frage: Eine Datei wäre schon für uns von Vorteil. Was ist zu tun?
Vielen vielen Dank.


#11

es müsste ausreichen die Zeilen 81-114 zu kopieren,
dann unterhalb der Zeile 118 einzufügen und im kopierten Code folgendes zu ersetzen:

  • $xml->AufDOM durch $xml->AdrDOM
  • $adressen->appendChild($pos); durch $auftrag->appendChild($pos);

und Zeilen 188 - 197 am besten auskommentieren, damit die Adressdatei nicht erstellt wird


#12

Hallo vanilla_thunder,
das ist ein super Lösungsansatz.
Danke für dein Post.
Ich bin dabei es für unsere WaWi anzupassen, muss dazu die Länder ID jedoch mit zwei Stellen haben, also statt DEU nur DE.
Leider bin ich mit Oxid noch nicht so weit…
Hier mein Ansatz, der funktioniert jedoch nicht.
Laden der Länderliste, vergleichen der Werte und neuen Wert setzen.

Den Code habe ich vor Zeile 82 eingefügt:
$oCountrys = $oOrder->getCountryList();
foreach ($oCountrys as $oCountry)
{
if ($oOrder->oxorder__oxbillcountryid->value == $oCountry->oxcountry__oxisoalpha3->value)
{
$BillCountryID = $oCountry->oxcountry__oxisoalpha2->value ;
}
}
appendElement($xml->AdrDOM, $pos, ‘country’, $BillCountryID);

Für Hilfe wäre ich dankbar.


#13

versuch mal folgendes:

$oCountry = oxNew("oxcountry");
$oCountry->load($oOrder->oxorder__oxbillcountryid->value);
appendElement($xml->AdrDOM, $pos, ‘country’, $oCountry->oxcountry__oxisoalpha2->value);

#14

Hallo vanilla_thunder,
Super das Script läuft jetzt bei mir.
Vielen Dank :+1: