Ab wann gibt es die sOrderDetails?

Hallo zusammen,

ich fange in einer Funktion das Event Shopware_Modules_Order_SaveOrder_ProcessDetails ab. So wie es aussieht gibt es direkt nach dem Klick auf “Zahlungspflichtig bestellen” die sOrderDetails noch nicht. Sind die Werte erst greifbar nach kompletten Durchlauf der finish-Seite? Also präziser: Nach welchem Event könnte ich auf sOrderDetails zugreifen?

Beste Grüße
Olli

Hallo Olli,

bei dem genannten Event bekommst du ja auch einen Parameter “details” mit. Im Prinzip steht dort das gleiche drin, wie in “sOrderDetails”. Oder meinst du die “sOrderVariables” ?

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Hi Michael,

die sOrderVariables kann ich über $orderdates = Shopware()->Session()->sOrderVariables; abrufen und weiterverarbeiten, aber besser geeignet für meine Zwecke wären die sOrderDetails so wie ich sie im Backend bei den E-Mail-Vorlagen finden kann. Wie kann ich denn auf den Parameter details zugreifen? Auch über die session?

Beste Grüße aus der Eifel
Olli

Hi Olli,

angenommen du hast dich auf das Event „Shopware_Modules_Order_SaveOrder_ProcessDetails“ registriert, hast du ja auch eine Callback Methode dafür. In meinem Beispiel heißt diese jetzt „onSaveOrder“. Über die EventArgs kannst du dir die „details“ rausziehen:

public function onSaveOrder(\Enlight_Event_EventArgs $args)
{
    /**@var $sOrder sOrder */
    $sOrder = $args->get('subject');
    $details = $args->get('details');
}

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Hi Michael,

klasse, vielen Dank. So hat es nun funktioniert. Bin ja erst seit ein paar Wochen mit Shopware beschäftigt und muss noch richtig verstehen, wo ich mir wann welche Werte herholen kann. Nun  kann ich erstmal weitermachen.

Beste Grüße aus der Eifel
Olli

Mist, das ist doch zu früh mich auf dieses event zu registrieren. Zu diesem Zeitpunkt gibt es quasi nur die basket-Daten aber noch keine order-Daten und ich brauche u.a. die spätere order id und da es diesbezüglich keine Schnittmenge mit der s_order_basket gibt muss ich also ein event erwischen wo diese order-Daten schon bekannt sind.

Beste Grüße aus der Eifel
Olli

Hi Olli,

vielleicht hilft dir ja ein PostDispatch Event auf den Checkout Controller weiter. In der Callback Methode solltest du dann überprüfen, ob du dich in der finishAction befindest. Dann solltest du alle nötigen Dateien zur Verfügung haben. Siehe auch: Shopware events

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Hi Michael,

vielen Dank für die Hilfe, aber da muss ich leider erstmal passen, weil ich noch nicht wirklich verstehe wie ich so ein Post-Dispatch-Event weiterverarbeite mit view usw… Muss ich mir erstmal anlesen…

Beste Grüße aus der Eifel
Olli

Hallo zusammen,

so, nun habe ich ein Phänomen was ich wirklich nicht verstehen kann…
Ich habe mir in der finishAction nun das Event „Shopware_Modules_Order_SendMail_Send“ genommen und mich dort rangehängt, weil eine Bestellbestätigung ja nur rausgehen kann wenn auch alle Daten der Bestellung bekannt sind. So, zur Kontrolle gebe ich mir auf der finish-Seite die Shopware()->Session()->sOrderVariables; aus. Soweit so gut, ABER in der Ausgabe der sOrderVariables taucht die sOrderNumber nicht auf obwohl sie im Symfony Profiler als session-Variable, präziser: Teil der sOrderVariables ganz am Ende zu finden ist (!!). Das heißt die Variable ist da, aber ich kann nicht darauf zugreifen. Wie kann das sein?

Rätselnde Grüße aus der Eifel
Olli

In dieser Form liegt die sOrderNumber vor. Wenn ich das richtig verstehe als Teil von $args für das Event… Nur: Wie komme ich da jetzt dran?

array(4) {\n
  ["subject"]=>\n
  object(stdClass)#1940 (26) {\n
    [" __CLASS__"]=>\n
    string(28) "Shopware_Proxies_sOrderProxy"\n
    ["sUserData"]=>\n
    string(8) "Array(3)"\n
    ["sBasketData"]=>\n
    string(9) "Array(19)"\n
    ["sShippingData"]=>\n
    string(8) "Array(1)"\n
    ["sComment"]=>\n
    string(0) ""\n
    ["paymentObject"]=>\n
    NULL\n
    ["sAmountNet"]=>\n
    float(146.14)\n
    ["sAmount"]=>\n
    float(173.9)\n
    ["sAmountWithTax"]=>\n
    float(173.9)\n
    ["sShippingcosts"]=>\n
    float(3.9)\n
    ["sShippingcostsNumeric"]=>\n
    float(3.9)\n
    ["sShippingcostsNumericNet"]=>\n
    float(3.28)\n
    ["sSYSTEM"]=>\n
    string(7) "sSystem"\n
    ["bookingId"]=>\n
    NULL\n
    ["sOrderNumber"]=>\n
    ....

 

@HolleWolle schrieb:

In dieser Form liegt die sOrderNumber vor. Wenn ich das richtig verstehe als Teil von $args für das Event… Nur: Wie komme ich da jetzt dran?

array(4) {\n
[„subject“]=>\n
object(stdClass)#1940 (26) {\n
[" CLASS"]=>\n
string(28) „Shopware_Proxies_sOrderProxy“\n
[„sUserData“]=>\n
string(8) „Array(3)“\n
[„sBasketData“]=>\n
string(9) „Array(19)“\n
[„sShippingData“]=>\n
string(8) „Array(1)“\n
[„sComment“]=>\n
string(0) „“\n
[„paymentObject“]=>\n
NULL\n
[„sAmountNet“]=>\n
float(146.14)\n
[„sAmount“]=>\n
float(173.9)\n
[„sAmountWithTax“]=>\n
float(173.9)\n
[„sShippingcosts“]=>\n
float(3.9)\n
[„sShippingcostsNumeric“]=>\n
float(3.9)\n
[„sShippingcostsNumericNet“]=>\n
float(3.28)\n
[„sSYSTEM“]=>\n
string(7) „sSystem“\n
[„bookingId“]=>\n
NULL\n
[„sOrderNumber“]=>\n

Hallo,

siehe weiter oben: Ab wann gibt es die sOrderDetails? - #4 von Michael_Telgmann - Programmierung - Shopware Community Forum .

Beste Grüße

Sebastian

1 „Gefällt mir“

@sschreier schrieb:

@HolleWolle schrieb:

In dieser Form liegt die sOrderNumber vor. Wenn ich das richtig verstehe als Teil von $args für das Event… Nur: Wie komme ich da jetzt dran?

array(4) {\n
[„subject“]=>\n
object(stdClass)#1940 (26) {\n
[" CLASS"]=>\n
string(28) „Shopware_Proxies_sOrderProxy“\n
[„sUserData“]=>\n
string(8) „Array(3)“\n
[„sBasketData“]=>\n
string(9) „Array(19)“\n
[„sShippingData“]=>\n
string(8) „Array(1)“\n
[„sComment“]=>\n
string(0) „“\n
[„paymentObject“]=>\n
NULL\n
[„sAmountNet“]=>\n
float(146.14)\n
[„sAmount“]=>\n
float(173.9)\n
[„sAmountWithTax“]=>\n
float(173.9)\n
[„sShippingcosts“]=>\n
float(3.9)\n
[„sShippingcostsNumeric“]=>\n
float(3.9)\n
[„sShippingcostsNumericNet“]=>\n
float(3.28)\n
[„sSYSTEM“]=>\n
string(7) „sSystem“\n
[„bookingId“]=>\n
NULL\n
[„sOrderNumber“]=>\n

Hallo,

siehe weiter oben: https://forum.shopware.com/discussion/comment/188366/#Comment_188366 .

Beste Grüße

Sebastian

Ahhh, stimmt. Jetzt habe ich es endlich. Vielen Dank für die Hilfe!!