Zusätzliches Attribut von Warenkorb in die Bestellung mit übernehmen

Hallo liebe Shopware-Fans,

ich habe folgendes Problem, ich habe ein zusätzliches Atrribut den Warenhkorb hinzugefügrt. Und würde dieses auch gerne der Bestellung pbertragen. Nur weiß ich nicht wie. Ich hoffe ihr könnt mir helfen, und bitte ich bin ein Anfänger :).

Hallo,

wenn du ein kompletter Anfänger bist, empfehle ich dir folgende Doku: Plugin quick Startup Guide .

Das was du möchtest, ist nicht wirklich trivial und da musst du sehr viel Events ansprechen und anpassen. Alternativ kannst du auch auf bestehende Plugins zurückgreifen und diese nutzen, beispielsweise dieses: http://store.shopware.com/scha147282265910/zusaetzliche-felder-fuer-jede-bestellposition.html .

Beste Grüße

Sebastian

Ein bestehendes Plugin ist leider keine Lösung für mich, ich bin schon bis jetzt gut zurecht gekommen. Nur weiß ich halt nicht genau wo ich ansetzen soll. Es wird halt innerhalb einer Methode (sSaveOrder) die Bestellung angelegt und der Warenkorb gelöscht, wie soll man denn da “einhaken”. Da ja anscheinend die Attribute hardcodet zu sein schein:

 

Hier wird der Warenkorb gelöscht:

$this->db->executeUpdate("DELETE FROM s_order_basket WHERE sessionID=?", array($this->getSession()->offsetGet('sessionId')));

Hier werden die Attribute des Warenkorbes in die Bestellung übernommen:

$attributeSql = "INSERT INTO s_order_attributes (orderID, attribute1, attribute2, attribute3, attribute4, attribute5, attribute6)
                VALUES (
                    " . $orderID .",
                    ".$this->db->quote((string) $this->o_attr_1).",
                    ".$this->db->quote((string) $this->o_attr_2).",
                    ".$this->db->quote((string) $this->o_attr_3).",
                    ".$this->db->quote((string) $this->o_attr_4).",
                    ".$this->db->quote((string) $this->o_attr_5).",
                    ".$this->db->quote((string) $this->o_attr_6)."
                )";

Dieser Quellcode wurde der sOrder.php entnommen, und befindet sich in der sSaveOrder() Funktion.

Hallo,

es gibt doch in der sSaveOrder-Funktion noch einige Events (beispielsweise: Shopware_Modules_Order_SaveOrder_ProcessDetails ), die nach dem Hinzufügen der zusätzlichen Attribute und vor dem Löschen des Warenkorbs ausgeführt werden, bei denen sollte man ansetzen und sich seine (updatsichere) Plugin-Lösung bauen Wink. Du musst eben auch das entscheidenste beachten: es gibt keine direkte Verknüpfung zwischen der Bestellung und dem Warenkorb - die müsstest du dir selbst “schaffen”.

Beste Grüße

Sebastian

Da wirst du so hier keine Antwort bekommen, da man sich da wirklich sehr verkopfen muss und alles im Blick haben muss. Das ist eine sehr komplexe Änderung, bei der man viel berücksichtigen, über die Funktionsweise von Shopware wissen muss.

Das was du möchtest, ist nicht wirklich trivial und da musst du sehr viel Events ansprechen und anpassen.

Deshalb mein Tipp an dich: Nimm den Tipp von @sschreier‍ an:

Alternativ kannst du auch auf bestehende Plugins zurückgreifen und diese nutzen, beispielsweise dieses: http://store.shopware.com/scha147282265910/zusaetzliche-felder-fuer-jede-bestellposition.html .

Grin

Nur als Tipp: wir haben es über einen MySQL-Trigger gelöst.

Diese Plugin hin und her gewerfe ist hier echt nervig. Ich danke sschreier für den Hinweis und das erwähnen dieses Events “Shopware_Modules_Order_SaveOrder_ProcessDetails”.