Export von Bestellungen, automatisch, cronjob?

Hallo liebe Forumsmitglieder,
heute brauche ich mal eure Hilfe. Folgene Aufgabe stellt sich mir:

Für unseren Online-Shop (CE 4.9.5) bräuchten wir die Möglichkeit die Bestellungen automatisch, per Cronjob (stündlich) zu exportieren.
Sie sollen dann in einem Ordner auf dem Server landen, wo sie von der Warenwirtschaft abgeholt werden können.

Wie fang ich das jetzt am Besten an?
Hat das jemand von euch schon mal gemacht? …oder könnt ihr mir evtl. ein Modul empfehlen?

Danke für eure Hilfe!
Grüße,

Somi :slight_smile:

Hallo Somi,
ich habe so einen Import bereits für mehrere Kunden umgesetzt. Allerdings sind die Exporte natürlich oft verschieden, da das System dahinter die Daten unterschiedlich benötigt.
In welchem Format wird denn der Export benötigt (Xml, Csv, etc.)?
Zunächst erstellst du ein neues Modul mit dem Namen deiner Wahl. Ich lege dann immer die Ordner “cron” und “core” an. Das kann jeder aber machen wie man will.
Im cron Ordner brauchst du dann eine Klasse, die du später per Cron aufrufst. Meine heißt zum Beispiel “asy_wawi_export_orders_cron.php”.

Der Inhalt davon ist recht einfach:

<?php
/**
 * Returns shop base path.
 *
 * @return string
 */
function getShopBasePath()
{
    return dirname(__FILE__).'/../../../../';
}

// custom functions file
require_once dirname(__FILE__) . "/../../../../bootstrap.php";

// initializes singleton config class
$myConfig = oxRegistry::getConfig();

$oImport = oxNew("asy_wawi_export_orders");
$oImport->run();

Im core Ordner gibt es dann die Klasse, die ich im cron Ordner aufrufe. Hier wäre das also die “asy_wawi_export_orders”. Diese Klasse muss in der metadata.php eingetragen sein.
In dieser Klasse machst du dann den Export an sich (Bestellungen zusammensuchen, Export-Datei bauen und abspeichern, Bestellungen als exportiert markieren, …).

Grüße
Fabian

Hi.

Anmerkung was ich noch berücksichtigen würde:

Wenn du Bestellungen exportierst würde ich nur die “abgreifen” die mind. 1 Minute (oder länger) nicht bearbeitet wurden. Da die Bestellung und die dazugehörigen Artikel, Downloads in mehrerem Tabellen gespeichert sind (oxorders, oxorderarticles, oxorderfiles) kann es sonst passieren das du schon die Bestellung exportierst während der Shop noch in die oxorderarticles/oxorderfiles Tabelle schreibt und du somit nur die Hälfte der Bestellung exportierst.

Du kannst auch ein einfaches PHP script basteln was die Daten direkt aus der Datenbank ließt und in dem Ordner für die Warenwirtschaft ablegt. Es muss nicht unbedingt ein Modul sein. Es muss nur von deinem cron job aufrufbar sein.

Du bräuchtest dann noch eine Möglichkeit zu prüfen welche Bestellungen schon exportiert wurden. Das macht sich am besten über ein extra Feld in der oxorder Tabelle welches ein timestamp beinhaltet bzw null ist wenn die Bestellung noch nicht exportiert wurde.

Hallo Fabian,

der Export kann in Xml oder Csv sein. Beides ist möglich lt. Warenwirtschaft.

Herzlichen Dank auf jeden Fall für deine Antwort.
Dann schau ich mal wie weit ich komme ;-).

Ein schönes Wochenende & Grüße,
Simone

Vielen Dank und ein schönes Wochenende auch an R.Nitzer!!! :slight_smile: