Wie fange ich am besten die sOrderNumber ab, wenn eine erstellt wird?

Hallo,

mein Chef hat mal wieder eine Erweiterung für mein Plugin an mich gegeben. Ich bin ziemlich neu in dem ganzen Shopwarezeug, und dazu ein Azubi.

Wir haben im Shop ein neues Plugin, welches Kundenbestellungen aus Amazon in unser Backend importiert. Mein Plugin hat davor das Shopware_Modules_Order_SendMail_Send Event genutzt, um meine Funktion, welche die sOrderNumber an eine API schickt und in einen Ordner schreibt, anzuhängen.
Jetzt werden aber nur Bestellungen, die direkt aus unserem Shopware-Shop kommen, an die API gesendet und nicht die neu importierten von Amazon.

Jetzt ist meine Frage: Gibt es ein Event in das ich mich einklinken kann, welches nach der sOrderNumber Erstellung feuert? Oder wie sollte ich am besten vorgehen?

Ich bin neu in dem ganzen Shopware-Zeug, also bitte ich um Gnade  Grin

Danke.

Was ist denn der Sinn hinter dem Plugin? Alle gekauften Artikel listen? Das ginge auch wesentlich einfacher über Orders-Api oder Datenbank.

1 Like

@PStadtfeld schrieb:

Was ist denn der Sinn hinter dem Plugin? Alle gekauften Artikel listen? Das ginge auch wesentlich einfacher über Orders-Api oder Datenbank.

Wir nutzen, um den ganzen Warenfluss, Kunden, Käufe usw der Firma zu verwalten, “Tetra T4”. Um den import von Shopware zu T4 ein wenig zu automatisieren, habe ich mein Plugin geschrieben (welches die ordernumber an die API und den Ordner schickt). Das funktioniert auch alles wenn Kunden Online im Shop bestellen, jedoch weiß ich nicht, wie ich die Ordernumber, von dem zu Shopware aus Amazon importieren Aufträgen, bekomme, um diese an die API zu schicken. 

Mehr als die Ordernumber brauch ich nicht.

Naja, im Standard kann Shopware gar keine Bestellungen von Amazon importieren. D.h. ihr nutzt dafür irgendeine Logik/Plugin. Diese Logik/Plugin wird die Bestellungen irgendwie in Shopware einpfelgen.

Anhand der vielen “irgendein/irgendwie” lässt sich erkennen, dass man hier nicht genau weiß von was du redest :stuck_out_tongue:

Daher meine Empfehlung: Entweder hier mit dem Hersteller der Logik/Plugin sprechen und fragen, ob man hier eingreifen kann oder komplett daran vorbei arbeiten:

Das ginge z.B. mit einem Cronjob. Der prüft alle 10 Minuten die Bestellungen, die noch nicht exportiert wurden. Diese werden dann an euere System übermittelt und via Freitextfeld auf “übermittelt” gesetzt (Boolean Flag). Fertig.

Viele Grüße

1 Like

@simkli schrieb:

Naja, im Standard kann Shopware gar keine Bestellungen von Amazon importieren. D.h. ihr nutzt dafür irgendeine Logik/Plugin. Diese Logik/Plugin wird die Bestellungen irgendwie in Shopware einpfelgen.

Anhand der vielen “irgendein/irgendwie” lässt sich erkennen, dass man hier nicht genau weiß von was du redest :stuck_out_tongue:

Daher meine Empfehlung: Entweder hier mit dem Hersteller der Logik/Plugin sprechen und fragen, ob man hier eingreifen kann oder komplett daran vorbei arbeiten:

Das ginge z.B. mit einem Cronjob. Der prüft alle 10 Minuten die Bestellungen, die noch nicht exportiert wurden. Diese werden dann an euere System übermittelt und via Freitextfeld auf “übermittelt” gesetzt (Boolean Flag). Fertig.

Viele Grüße

 Jau, wie oben gesagt: 

Wir haben im Shop ein neues Plugin, welches Kundenbestellungen aus Amazon in unser Backend importiert.

 Die Idee mit dem Cronjob ist mir auch schon eingefallen, jedoch fühlt sich das ein wenig… “unelegant” an. Ich werde mich mal an den anderen Plugin-Ersteller wenden und fragen, ob der einen Weg hat weiß.

Danke für die schnellen Antworten, ihr beiden.

Die Plugins liegen ja alle auf dem Server und sind in den meisten Fällen einsehbar… Vielleicht kannst du dich da mal durchklicken und schauen, auf welche Events sich das Plugin registriert und ob du dich da nicht ebenfalls einhaken kannst. Wenn du eh Kontakt mit dem Ersteller aufnimmst kann er dir das aber sicher auch erklären.

1 Like

Die Ordernumber wird in sOrder::sGetOrderNumber() generiert. Es gibt ein Event mit dem man die Ordernumer ändern / bzw. einfach abfragen kann. Das ist ‚Shopware_Modules_Order_GetOrdernumber_FilterOrdernumber‘.

Alernativ kannst du auch den Service ‚NumberRangeIncrementer‘ dekorieren. Das ist der Service, der in sGetOrderNumber() aufgerufen wird.

Falls ihr Magnalister für die Amazon Dinge nutzt, kannst du das o.g. Event nehmen. Falls ihr auch Bestellungen manuell im Backend über anlegt, solltest du lieber den Service dekorieren, da diese Funktion direkt den Service nutzt. Das Event wird dann also gar nicht gefeuert.

1 Like

Hallo,

ich habe jetzt mit dem Plugin ersteller gesprochen und habe gesagt bekommen, dass das Plugin selbst Events hat. Habe jetzt mein Plugin angepasst und es wird jetzt im Testshop getestet. Danke für eure Hilfe :slight_smile: