Bestellstatus Flowchart

Ablauf der automatischen Bestellverarbeitung

Klicken Sie auf 'Weiter' um zum nächsten Schritt zu gehen
SHOPWARE ORIGINAL
SW: OFFEN FL: NONE SW: BEZAHLT
Shopware Status: OFFEN
FL Status: NONE (null)
Shopware Zahlung: BEZAHLT
stateMachineState.technicalName: "open"
customFields.custom_order_status: null
transactions[].stateMachineState.technicalName: "paid"
Ausgangspunkt: Shopware Bestellung vor Transformation
FL: NONE → OFFEN
custom_order_status: null → "open"
AUTOMATISCHE TRANSFORMATION
(geschieht über Shopware Flow)
FL None OFFEN
Status Mapping aktiviert
customFields.custom_order_status: null "open"
customFields.custom_order_status_intern: STATUS_OPEN (0)
Shopware Flow: OrderStatusManager::setInitialStatus()
Automatische Transformation der Statuswerte über Shopware Flow
START
OFFEN OFFEN BEZAHLT
Bestellung Status: OFFEN
FL Status: OFFEN
Zahlung: BEZAHLT
customFields.custom_order_status: "open"
customFields.custom_order_status_intern: STATUS_OPEN (0)
stateMachineState.technicalName: "open"
transactions[].stateMachineState.technicalName: "paid"
Startpunkt: Transformierte Bestellung ist bezahlt und wartet auf Verarbeitung
AUTOMATISCHE VERARBEITUNG
(durch Shopware Flow)
Automatischer Middleware-Step
ExportProcessor::processOrders()
fetchPendingOrders()
Automatische Verarbeitung durch Shopware Flow startet Middleware-Step
Entscheidung: Welches Warehouse?
Komplett AC Lager
warehouse: "aachen"
reason: "all_items_available_in_aachen"
ENDE
Bestellung bleibt offen
Final Status:
customFields.custom_order_status: "open"
customFields.custom_order_status_intern: STATUS_OPEN (0)
stateMachineState.technicalName: "open"
Verarbeitung beendet, Status bleibt OFFEN
Mindestens 1 AC Artikel
hasAachenItems() = true
isCompletelyWUWarehouse() = false
EXPORT WIRD DURCHGEFÜHRT
DAT-Datei erstellt
Status bleibt OFFEN
Dateityp: .DAT
Format: ORD_XXXXX.DAT
ExportEngine::exportOrder()
hasAachenItems() = true
DAT-Datei wird erstellt, Status bleibt OFFEN
WARTE AUF MANUELLE ÄNDERUNG
Status muss manuell auf
IN BEARBEITUNG gesetzt werden
customFields.custom_order_status: "open"
customFields.custom_order_status_intern: STATUS_OPEN (0)
Warten auf manuelle Änderung zu:
custom_order_status_intern: STATUS_EXPORTED (1)
Warten auf manuelle Statusänderung
Entscheidung: Welche XML-Datei kommt an?
WARTE AUF XML-DATEI
OK_ oder ERR_ Datei
Dateityp: .xml
Format: OK_XXXXX.xml | ERR_XXXXX.xml
ImportedXMLParser::processFile()
Warten auf SAP-Antwort nach manueller Änderung
OK Datei
status === 'OK'
Status prüfen:
IN BEARBEITUNG?
OrderStatusManager::getCurrentOrderStatus()
Prüfung: custom_order_status_intern === STATUS_EXPORTED (1)?
isInBearbeitung = (currentStatus === STATUS_EXPORTED)
Prüfung ob Status IN BEARBEITUNG ist (nach manueller Änderung)
Status: "pending" → "finished"
STATUS_EXPORTED (1) → STATUS_SUCCESS (2)
STATUS UPDATE
Bestellung wird gesetzt auf: ABGESCHLOSSEN FINISHED
customFields.custom_order_status: "finished"
customFields.custom_order_status_intern: STATUS_SUCCESS (2)
OrderStatusManager::updateOrderStatus(STATUS_SUCCESS)
Status wird auf ABGESCHLOSSEN gesetzt
ERFOLGREICH ABGESCHLOSSEN
Final Status:
customFields.custom_order_status: "finished"
customFields.custom_order_status_intern: STATUS_SUCCESS (2)
Verarbeitung erfolgreich abgeschlossen
ERR Datei
status === 'ERR'
STATUS UPDATE
Bestellung wird gesetzt auf: ABGEBROCHEN FAILED
customFields.custom_order_status: "failed"
customFields.custom_order_status_intern: STATUS_FAILED (3)
OrderStatusManager::updateOrderStatus(STATUS_FAILED)
Status wird auf ABGEBROCHEN gesetzt
Status: "pending" → "failed"
STATUS_EXPORTED (1) → STATUS_FAILED (3)
FEHLER VERARBEITET
Final Status:
customFields.custom_order_status: "failed"
customFields.custom_order_status_intern: STATUS_FAILED (3)
Fehler wurde verarbeitet und protokolliert
FEHLER PROTOKOLLIERT
Fehlerdetails wurden gespeichert
Manuelle Nachbearbeitung möglich
Fehlerprotokoll erstellt
Status: ABGEBROCHEN (FAILED)
Nächste Schritte: Manuelle Prüfung erforderlich
Fehler wurde protokolliert
Komplett WÜ Lager
warehouse: "external"
reason: "all_items_available_in_wuerzburg"
isCompletelyWUWarehouse() = true
EXPORT WIRD DURCHGEFÜHRT
DAT-Datei erstellt
Dateityp: .DAT
Format: ORD_XXXXX.DAT
ExportEngine::exportOrder()
DAT-Datei wird erstellt und an SAP gesendet
STATUS UPDATE
Bestellung wird gesetzt auf: IN BEARBEITUNG PENDING
Zahlung: BEZAHLT
customFields.custom_order_status: "pending"
customFields.custom_order_status_intern: STATUS_EXPORTED (1)
OrderStatusManager::updateOrderStatus(STATUS_EXPORTED)
Nur wenn isCompletelyWUWarehouse() = true
Status wird auf IN BEARBEITUNG gesetzt
Status: "open" → "pending"
STATUS_OPEN (0) → STATUS_EXPORTED (1)
Entscheidung: Welche XML-Datei kommt an?
WARTE AUF XML-DATEI
OK_ oder ERR_ Datei
Dateityp: .xml
Format: OK_XXXXX.xml
Format: ERR_XXXXX.xml
ImportedXMLParser::processFile()
Warten auf SAP-Antwort (OK oder ERR Datei)
OK Datei
status === 'OK'
Status prüfen:
IN BEARBEITUNG?
OrderStatusManager::getCurrentOrderStatus()
Prüfung: custom_order_status_intern === STATUS_EXPORTED (1)?
isInBearbeitung = (currentStatus === STATUS_EXPORTED)
Prüfung ob Status IN BEARBEITUNG ist
Status: "pending" → "finished"
STATUS_EXPORTED (1) → STATUS_SUCCESS (2)
STATUS UPDATE
Bestellung wird gesetzt auf: ABGESCHLOSSEN FINISHED
customFields.custom_order_status: "finished"
customFields.custom_order_status_intern: STATUS_SUCCESS (2)
OrderStatusManager::updateOrderStatus(STATUS_SUCCESS)
Nur wenn isInBearbeitung = true
Status wird auf ABGESCHLOSSEN gesetzt
ERFOLGREICH ABGESCHLOSSEN
Final Status:
customFields.custom_order_status: "finished"
customFields.custom_order_status_intern: STATUS_SUCCESS (2)
Verarbeitung erfolgreich abgeschlossen
ERR Datei
status === 'ERR'
STATUS UPDATE
Bestellung wird gesetzt auf: ABGEBROCHEN FAILED
customFields.custom_order_status: "failed"
customFields.custom_order_status_intern: STATUS_FAILED (3)
OrderStatusManager::updateOrderStatus(STATUS_FAILED)
Status wird auf ABGEBROCHEN gesetzt
Status: "pending" → "failed"
STATUS_EXPORTED (1) → STATUS_FAILED (3)
FEHLER VERARBEITET
Final Status:
customFields.custom_order_status: "failed"
customFields.custom_order_status_intern: STATUS_FAILED (3)
Fehler wurde verarbeitet und protokolliert
FEHLER PROTOKOLLIERT
Fehlerdetails wurden gespeichert
Manuelle Nachbearbeitung möglich
Fehlerprotokoll erstellt
Status: ABGEBROCHEN (FAILED)
Nächste Schritte: Manuelle Prüfung erforderlich
Fehler wurde protokolliert

Legende

Startpunkt (Initialer Status)
Verarbeitungsschritt
Entscheidung/Prüfung
Erfolgreiche Verarbeitung
Übersprungen/Skip
Fehler/Abgebrochen
Ende/Abgeschlossen