ich sitze seit ein paar Tagen an folgendem Problem:
ich würde gerne den Inhalt meines zusätzlichen Attributes von s_order_basket_attributes nach s_order_details_attributes übertragen (bei beiden Attribut-Tabellen ist das zusätzliche Attribut vorhanden). Mit Inhalt befüllt ist es in s_order_basket_attributes auch schon. Nur komme ich bei der Übertragung derzeit nicht weiter. Mein bisheriger Ansatz ist:
in der sOrder.php - Datei bei sSaveOrder werden ja die Attributfelder 1 - 6 beim Event Shopware_Modules_Order_SaveOrderAttributes_FilterDetailsSQL von s_order_details_attributes befüllt. Da ich aber nicht die Attrbutfelder 1 - 6 benutzen möchte, hätte ich mich nun an das Event “drangehangen”, per Session-ID den aktuellen Warenkorb ausgelesen und dann das zusätzliche Attribut aus s_order_basket_attributes ausgelesen und in das entsprechende zusätzliche Attribut von s_order_details_attributes eingefügt.
Nur klappt es nicht, weil mir derzeit der Ansatz fehlt, wie die “Verknüpfung” der beiden Tabellen aussehen könnte. Ich könnte zwar über: $arguments->getRow()->->get(‘id’) die Detail-Id holen, nur weiss ich nicht, wie ich dann nur den ersten oder zweiten Eintrag etc. des Warenkorbs damit “verknüpfe”.
DIe komplette sSaveOrder zu ersetzen wäre für mich auch keine sinnvolle Lösung.
Vielleicht hat ja jemand einen Ansatz für mich oder eine Lösung parat.
die sSaveOrder gibt dir ja die neue Bestellnummer der Bestellung zurück (in der s_order). Von da kommst du leicht auf die Bestell-Details. Die kannst du dann wiederum über die Bestellnummern / Namen mit den s_order_basket-Einträgen der Session mappen. Wäre so auf die Schnelle meine Idee - Shopware_Modules_Order_SaveOrderAttributes_FilterDetailsSQL finde ich (wie du) auch nicht so ideal dafür, denke ich.
die sSaveOrder gibt dir ja die neue Bestellnummer der Bestellung zurück (in der s_order). Von da kommst du leicht auf die Bestell-Details. Die kannst du dann wiederum über die Bestellnummern / Namen mit den s_order_basket-Einträgen der Session mappen. Wäre so auf die Schnelle meine Idee - Shopware_Modules_Order_SaveOrderAttributes_FilterDetailsSQL finde ich (wie du) auch nicht so ideal dafür, denke ich.
Daniel
Hallo Daniel,
danke für deine Antwort.
Nach sSaveOrder einzusteigen wäre aus meiner Sicht zu spät, da ja kurz vor Ende der Funktion schon die Einträge in der s_order_basket gelöscht werden und ich somit ja auf keine Daten mehr Zugriff habe.
Über den Artikelnamen zu gehen wäre natürlich ein Ansatz bzw. eine Idee.
ich habe mich an Enlight_Controller_Action_PostDispatch_Frontend_Checkout angehängt und update das wenn die action == finish ist. Klappt bisher gut, werde das hier aber mal beobachten, vielleicht findet sich ja eine bessere Lösung.
die sSaveOrder gibt dir ja die neue Bestellnummer der Bestellung zurück (in der s_order). Von da kommst du leicht auf die Bestell-Details. Die kannst du dann wiederum über die Bestellnummern / Namen mit den s_order_basket-Einträgen der Session mappen. Wäre so auf die Schnelle meine Idee - Shopware_Modules_Order_SaveOrderAttributes_FilterDetailsSQL finde ich (wie du) auch nicht so ideal dafür, denke ich.
Daniel
Hallo Daniel,
dank deines Tipps mit dem (Artikel-)Namen konnte ich es nun lösen - ich habe dann doch eher am Event Shopware_Modules_Order_SaveOrder_ProcessDetails angesetzt, da es auch außerhalb der Schleife der s_order_details aufgerufen wird, aber noch vor dem Löschen von s_order_basket. Somit Problem gelöst, alle Inhalte des zusätzlichen Feldes aller Artikel im Warenkorb wurden beim Bestellabschluss von s_order_basket_attributes nach s_order_details_attributes übertragen .