Order ExportDokumentation

Order-Export-Dokumentation

Installationsschritte und eine vollständige Referenz für jede Profileinstellung, Mapping-Option und Protokollfunktion, mit konkreten Beispielen — derselbe Detailgrad, den unser Support zur Kundenbetreuung verwendet.

Als Markdown anzeigen

Installation

Voraussetzungen

Magento 2.4.x — getestet mit 2.4.9, kompatibel mit vorherigen 2.4.*-Versionen. PHP 8.1–8.5. Erfordert codingrow/module-core (wird automatisch als Composer-Abhängigkeit installiert) für das gemeinsame Codingrow-Admin-Menü und die Lizenzvalidierung.

Einrichtungsschritte

  1. Fügen Sie die per E-Mail erhaltenen Zugangsdaten zu auth.json im Stammverzeichnis Ihres Magento-Projekts hinzu:
    { "http-basic": { "repo.codingrow.com": { "username": "...", "password": "..." } } }
  2. composer config repositories.codingrow composer https://repo.codingrow.com
  3. composer require codingrow/module-orderexport
  4. bin/magento module:enable Codingrow_OrderExport
  5. bin/magento setup:upgrade && bin/magento setup:di:compile && bin/magento cache:flush
  6. Fügen Sie Ihren Lizenzschlüssel in Admin → Stores → Configuration → Codingrow → Order Export → License → Lizenzschlüssel ein, speichern Sie, dann bin/magento cache:flush.
  7. Setzen Sie in derselben Sektion, Gruppe General, Modul aktivieren auf "Yes" — das Modul wird auf Magento-Ebene aktiviert ausgeliefert, ist aber funktional deaktiviert, sodass es erst nach ausdrücklicher Aktivierung überhaupt etwas exportiert.
  8. Erstellen Sie Ihr erstes Profil unter Codingrow → Order Export → Export Profiles — siehe Profile weiter unten.

Die gesamte Profilverwaltung, der Mapping-Builder, das Protokoll und jede Benachrichtigungs-E-Mail sind in 7 Sprachen verfügbar, automatisch ausgewählt je nach Sprache des Admin-Benutzers:

Deinstallation

composer remove codingrow/module-orderexport dann bin/magento setup:upgrade && bin/magento setup:di:compile && bin/magento cache:flush. Profile und das Exportprotokoll (codingrow_orderexport_profile, codingrow_orderexport_log) werden nie automatisch gelöscht — verwenden Sie zuerst Profil exportieren, wenn Sie eine Kopie Ihrer Profilkonfiguration behalten möchten.

Benutzerhandbuch

Profile

Alles im Modul ist um Profile herum organisiert, aufgelistet unter Codingrow → Order Export → Export Profiles. Jedes Profil ist vollständig unabhängig: eigener Name, eigener Ein-/Aus-Schalter, eigener/e Trigger-Status, eigenes Ziel (Kanal + Format), eigenes Feld-Mapping und eigene Zeile im Exportprotokoll — Sie können beliebig viele Profile parallel betreiben (eines pro Lieferant, eines pro Spediteur, eines für ein internes ERP), und das Deaktivieren oder Löschen eines Profils wirkt sich nie auf die anderen aus.

Ein deaktiviertes Profil (Profil aktiviert = "No") exportiert nie etwas, unabhängig davon, ob automatisch ausgelöst, über die manuelle Aktion oder über den CLI-Befehl — dies ist unabhängig vom modulweiten Schalter Modul aktivieren unter System Config, der als einziger Hauptschalter alle Profile gleichzeitig abschaltet.

Kanäle & Formate

Jedes Profil wählt einen Kanal (wohin das Payload geliefert wird) und ein Format (wie es serialisiert wird) — die beiden Entscheidungen sind unabhängig, jedes Format funktioniert also mit jedem Kanal.

KanalTypische NutzungWichtige Einstellungen
REST APISendet das Payload als HTTP-Anfrage an einen Webservice Ziel-URL, HTTP-Methode (GET/POST/PUT/PATCH), Authentifizierung (Keine, HTTP Basic, Bearer-Token), Mindestsekunden zwischen Anfragen (Rate-Limiting, standardmäßig 1 Sekunde)
FTP / SFTPLädt das Payload als Datei auf einen entfernten Server hoch Host, Port (standardmäßig 21), Benutzername, Passwort, entfernter Pfad, optionales FTPS (explizites TLS), passiver Modus
Lokale DateiSchreibt das Payload in eine Datei unter dem eigenen pub/media/ dieses Stores, damit ein externes System sie per HTTP abholen kann Unterordner — die Datei landet unter pub/media/codingrow_orderexport/<Unterordner>/ (Standard-Unterordner: "default")

Formate: JSON, XML oder CSV, unabhängig vom obigen Kanal wählbar — dasselbe Feld-Mapping (siehe unten) steuert alle drei, das Format ändert nur die Art der Serialisierung.

Feld-Mapping

Der Tab Mapping ist eine Tabelle mit Zeilen, die jeweils ein target (den Feldnamen in der Ausgabe — ein Punkt bedeutet eine Verschachtelungsebene, z. B. customer.email) mit einem source path verbinden, der aus einer Dropdown-Liste aller verfügbaren Bestell-/Kunden-/Artikelfelder gewählt wird. Leere Zeilen werden beim Speichern ignoriert.

Die Zeilen werden von oben nach unten in derselben Form wie die Ausgabe selbst gelesen: zuerst eine optionale Header-Vorlage, dann die Mapping-Zeilen auf Bestellebene, dann etwaige Repeat blocks (siehe unten), und zuletzt eine optionale Footer-Vorlage.

Transformationen

Jede Mapping-Zeile kann eine Transformation auf den Quellwert anwenden, bevor er in das Zielfeld geschrieben wird:

TransformationWas sie tut
KeineDirekte Kopie des Werts des source path (fällt auf "Default value" zurück, wenn die Quelle leer ist).
Statischer WertIgnoriert die Quelle vollständig, schreibt immer den festen Text aus "Value".
HTML-Tags entfernenEntfernt HTML-Markup aus dem Quellwert — nützlich für einen Produktnamen oder eine Beschreibung mit restlicher Formatierung.
TextvorlageFreier Text mit Platzhaltern, z. B. {order.shipping_address.firstname} {order.shipping_address.lastname}. Innerhalb eines Platzhalters steht auch eine Funktion zur Verfügung: striphtml{path} (entspricht der Transformation Strip HTML tags, inline nutzbar) und substr{path,N} (entfernt die ersten N Zeichen, z. B. substr{order.some_code,3}).
Suchen und ersetzenSucht den Text "Search" im Quellwert (Groß-/Kleinschreibung wird ignoriert) und ersetzt ihn genau wie angegeben durch "Value".
ZahlSerialisiert den Wert als echte JSON-Zahl statt als Zeichenkette in Anführungszeichen — nutzen Sie dies, wenn das Ziel den TYP des Feldes strikt validiert (eine als datenbankrohe Zeichenkette "1.0000" gesendete Menge wird von manchen APIs abgelehnt, während 1.0 als echte Zahl akzeptiert wird). Dies ist bewusst nicht die Vorgabe für numerisch aussehende Felder: sie überall zu aktivieren würde stillschweigend führende Nullen aus Dingen wie einer Postleitzahl oder einem Artikelcode entfernen — es ist daher eine pro Zeile bewusst gewählte Option, kein automatisches Verhalten.

Dieselbe {path} / striphtml{} / substr{}-Syntax, die in Text-template-Zeilen verwendet wird, steht auch in Repeat-block-Zeilen und im optionalen Header/Footer des Profils zur Verfügung.

Wiederholungsblöcke

Ein Wiederholungsblock erstellt ein verschachteltes Array in der Ausgabe — der häufigste Fall ist ein Eintrag pro Bestellposition. Jeder Block hat einen Block output key (wo das Array in der Ausgabe geschrieben wird) und eine source collection (worüber er iteriert, z. B. die Artikel der Bestellung), sowie seine eigenen Mapping-Zeilen darunter, die einmal pro Element ausgewertet werden, wobei "current" auf dieses Element beschränkt ist — der source path einer Zeile innerhalb eines Wiederholungsblocks bezieht sich also auf Felder des aktuellen Artikels, nicht auf die gesamte Bestellung.

Beispiel. Ein Block mit dem Output-Key items, der source collection "Order items" und zwei Zeilen (sku ← SKU des aktuellen Artikels, qty ← Menge des aktuellen Artikels) erzeugt:
{
  "items": [
    { "sku": "43241", "qty": 2 }
  ]
}
Ein Profil kann beliebig viele unabhängige Wiederholungsblöcke definieren — zum Beispiel einen für die Artikelliste und einen separaten für eine Liste angewendeter Rabatte.

Lieferantenartikel-Filter

Zwei Einstellungen im Tab General entscheiden, welche Bestellzeilen tatsächlich exportiert werden, zusätzlich zu dem, was die eigene source collection eines Wiederholungsblocks bereits enthält:

  • Nur Lieferantenartikel — bei "Yes" (Standardeinstellung, passend zum Dropshipping-Fall, für den dieses Modul gebaut wurde) werden nur Bestellzeilen exportiert, deren Produkt das unten genannte Attribut ausgefüllt hat; bei "No" wird jede Bestellzeile einbezogen.
  • Lieferanten-SKU-Attribut — das Produktattribut, das durch die obige Einstellung geprüft wird, da nicht jeder Katalog es gleich benennt (supplier_sku ist nur der übliche Standardwert).

Wenn "Nur Lieferantenartikel" Zeilen aus einer Bestellung ausschließt, zeigt die Live-Vorschau eine ausdrückliche Warnung, die angibt, wie viele Zeilen aus welchem Grund ausgelassen wurden — ein leeres oder kürzer als erwartetes Payload ist so nie eine stille Überraschung.

Live-Vorschau

Die Schaltfläche Preview auf der Profil-Bearbeitungsseite erstellt ein temporäres, nie gespeichertes Profil aus dem aktuellen Inhalt des Formulars — einschließlich noch nicht gespeicherter Änderungen — und führt es anhand einer von Ihnen gewählten echten Bestellung genau über denselben Codepfad aus, der auch für einen echten Export verwendet wird. Das Ergebnis ist genau das JSON/XML/CSV-Payload, das diese Bestellung erzeugen würde, sodass Sie das Mapping korrigieren können, bevor das Profil überhaupt aktiviert wird — statt es erst nach einem fehlgeschlagenen echten Export zu bemerken.

Trigger & Deduplizierung

Die Mehrfachauswahl Auslösestatus im Tab General listet auf, welche(r) Bestellstatus einen automatischen Export für dieses Profil startet/starten (Strg/Cmd-Klick, um mehrere auszuwählen) — sie wird nur beim automatischen, ereignisgesteuerten Trigger geprüft; die manuelle Aktion in der Übersicht und der CLI-Befehl ignorieren sie absichtlich, da das manuelle Auslösen selbst schon die bewusste Entscheidung ist, unabhängig vom Status zu exportieren.

Jeder erfolgreiche und fehlgeschlagene Versuch wird in das Protokoll dieses Profils geschrieben (siehe unten), und das Protokoll ist auch das, was Duplikate verhindert: dieselbe Bestellung wird von demselben Profil nie automatisch zweimal exportiert, unabhängig davon, was danach mit der Bestellung geschieht (weitere Bearbeitungen, Statuswechsel hin und her). Wird ein echtes erneutes Senden benötigt — zum Beispiel nach der Behebung eines Problems auf Zielseite — verwenden Sie Erneutes Senden erzwingen, was diesen Schutz ausdrücklich umgeht.

Exportprotokoll & erzwungenes erneutes Senden

Jedes Profil hat seinen eigenen Protokoll-Tab: ID, Bestellung, Ergebnis (Success/Error), was den Versuch ausgelöst hat, HTTP-Status, Fehlermeldung, Datum und eine ausklappbare "Details"-Zeile mit dem genauen gesendeten Request-Payload und dem empfangenen Response-Body — dieselben Informationen, nach denen der Support bei der Fehlersuche für einen fehlgeschlagenen Export fragt.

Die Schaltfläche Erneutes Senden erzwingen einer fehlgeschlagenen Zeile führt den Export für genau diese Bestellung über genau dieses Profil jetzt sofort erneut aus, wobei der oben beschriebene Duplikatschutz ignoriert wird — ein Bestätigungsdialog weist ausdrücklich darauf hin, bevor die Aktion ausgeführt wird, da es sich um ein bewusstes Übersteuern handelt, nicht um das Standardverhalten.

Fehlerbenachrichtigungs-E-Mails

Zwei Einstellungen im Tab General steuern Fehlerbenachrichtigungen, unabhängig vom Protokoll (das unabhängig von diesen Einstellungen immer jeden Versuch erfasst): Benachrichtigungsempfänger (eine oder mehrere durch Komma getrennte E-Mail-Adressen — leer lassen, um nichts zu senden) und E-Mail senden bei (welche Ereignisse eine Benachrichtigung auslösen).

Der E-Mail-Text enthält den tatsächlichen vom Ziel zurückgegebenen Fehler, nicht nur eine allgemeine HTTP-Statuszeile: Wenn der Response-Body als JSON mit einem message-Feld geparst werden kann, wird diese Meldung wortwörtlich angehängt (z. B. "Destination returned HTTP 422 - Minimum product quantity is 1.0"); andernfalls wird der rohe Response-Body eingefügt, gekürzt auf 500 Zeichen — so ist die tatsächliche Ursache direkt im Postfach sichtbar, ohne das Protokoll öffnen zu müssen.

Profil importieren/exportieren

Die Schaltfläche Profil exportieren auf der Bearbeitungsseite eines Profils lädt dessen gesamte Konfiguration — allgemeine Einstellungen, Ziel, Mapping-Zeilen und Wiederholungsblöcke — als einzelne JSON-Datei herunter, wobei die Zugangsdaten des Ziels bewusst ausgeschlossen sind, sodass die Datei gefahrlos gespeichert, mit dem Support geteilt oder zusammen mit einem Deployment versioniert werden kann. Die Schaltfläche Profil importieren in der Export-Profiles-Übersicht erstellt ein Profil aus einer solchen Datei neu — der typische Anwendungsfall ist das Verschieben eines Profils von einem Staging-/Demo-Store zur Produktion, oder das Sichern eines Mappings, mit dem Sie zufrieden sind, bevor Sie weiter experimentieren. Zugangsdaten müssen nach einem Import immer von Hand neu eingegeben werden, da sie nie in der Datei enthalten waren.

Lizenz

Eine Lizenz pro Domain, eingegeben unter Admin → Stores → Configuration → Codingrow → Order Export → License → Lizenzschlüssel. Enthält alle Updates für diese Domain. Müssen Sie zu einer anderen Domain wechseln (Staging → Produktion oder eine Site-Migration)? Ihr erster Domainwechsel ist kostenlos und sofort von Ihrer Kontoseite aus möglich — kein Warten, kein Ticket nötig. Ab dem zweiten Wechsel ist ein Wechsel einmal pro Jahr erlaubt. Sie können außerdem innerhalb von 30 Tagen nach dem Kauf selbstständig eine Rückerstattung von derselben Kontoseite aus anfordern.