Hallo liebe Community, ich habe eine Frage bzgl. der API in shopware. Ich habe ein Plugin entwickelt, welches den Status einer Bestellung, von “offen” auf “Teilweise geliefert” bzw. “Komplette geliefert” setzt. Wenn ich das setzen des Status, im Backend selber vornehme, schlägt shopware, mir das Versenden einer E-Mail vor. Nun ist meine Frage, wenn ich den Status, über das entwickelte Plugin umsetzte, wird dann auch über einen Cronjob oder ähnliches eine E-Mail an den Kunden geschickt? Vielen Dank und viele Grüße
Servus, Unter modules gibt es eine Order klasse. Diese bietet dir genau was du suchst. Allerdings Vorsicht. Die Funktion die du brauchst hat seit sw. 4 oder gar noch länger einen Fehler, da es die Mail Funktion mit komplett falschen Parametern aufruft. Wenn du dir aber nun eine Klasse machst die diese extended und diese Funktion austauscht, solltest du das haben was du suchst …
Ich habe das mit der Shopware Status-Mail gemacht. Da gibt es im Backend-Order-Controller eine passende Funktion. Diese stößt wiederum ne Hilfsklasse für die Status-eMails an. private function getMailForOrder($orderId, $statusId) { try { /\*\*@var $mail Enlight\_Components\_Mail \*/ $mail = Shopware()-\>Modules()-\>Order()-\>createStatusMail($orderId, $statusId); if ($mail instanceof Enlight\_Components\_Mail) { return array( 'mail' =\> $mail, 'data' =\> array( 'error' =\> false, 'content' =\> $mail-\>getPlainBodyText(), 'subject' =\> $mail-\>getPlainSubject(), 'to' =\> implode(', ', $mail-\>getTo()), 'fromMail' =\> $mail-\>getFrom(), 'fromName' =\> $mail-\>getFromName(), 'sent' =\> false, 'orderId' =\> $orderId ) ); } else { return array(); } } catch (Exception $e) { return array( 'mail' =\> null, 'data' =\> array( 'error' =\> true, 'message' =\> $e-\>getMessage() ) ); } }
EDIT: Martin, meinst du die Status-eMail Methode? Also, ich hatte das durchgetestet und da kam bisher immer alles richtig an! Was ist denn da fehlerhaft deiner Meinung nach? …