Reihenfolge der Bestellstatus im Dropdown im Backend ändern

Hallo, wir würden gerne die Reihenfolge der Bestellstatus bei der Anzeige im Dropdown im Backend ändern, also sowohl für den Filter in der Bestellübersicht als auch bei einer Einzelbestellung, wo der Status gesetzt wird. Sie sollten möglichst chronologisch angezeigt werden. Mit phpmyadmin habe ich in der Tabelle s_core_states das Feld position (für group = state) geändert, da ich dachte, dass wäre für die Sortierung zuständig. Danach Cache gelöscht. Aber nichts ändert sich. Muss ich noch was anderes machen? Shopware 4.3.6

Hey Chris, das Feld s_core_states.position klingt erstmal intuitiv, hat aber im Backend keine Auswirkung auf die Sortierung. Wenn Du das umsortieren willst, müsste man dafür ein Plugin schreiben, Aufwand ca. zwei Stunden. Dann kann man z.B. eine chronologische Sortierung leicht umsetzen. Freundliche Grüße, Tristan

[quote=“Shop Session”]Aufwand ca. zwei Stunden[/quote] /\*\* \* Return the subscribed controller events. \* \* @return array \*/ public static function getSubscribedEvents() { // return the events return array( 'Shopware\Models\Order\Repository::getOrderStatusQueryBuilder::after' =\> 'afterGetOrderStatusQueryBuilderHook' ); } /\*\* \* Add a default order. \* \* @param \Enlight\_Hook\_HookArgs $arguments \* \* @return void \*/ public function afterGetOrderStatusQueryBuilderHook( \Enlight\_Hook\_HookArgs $arguments ) { // get the query builder /\* @var $builder \Doctrine\ORM\QueryBuilder \*/ $builder = $arguments-\>getReturn(); // set order $builder-\>orderBy( "status.position", "DESC" ); // set new builder $arguments-\>setReturn( $builder ); } Aufwand ca. 5 Minuten :smiley: Viele Grüße

Vielen Dank! Aber als Neuling weiß ich leider nicht, wohin mit dem Code. Hab noch keine Erfahrung mit Backend-Plugins. :frowning: Und wofür ist dann das Feld s_core_states.position, wenn nicht für die Sortierung?

[quote=„chris_52“]Vielen Dank! Aber als Neuling weiß ich leider nicht, wohin mit dem Code. Hab noch keine Erfahrung mit Backend-Plugins. :([/quote] Kein Problem - jeder fängt mal klein an. Hier findest du die Shopware Doku inkl. Anleitungen und Tutorials: http://community.shopware.com/Doku_cat_ … 1395069908 [quote=„chris_52“]Und wofür ist dann das Feld s_core_states.position, wenn nicht für die Sortierung?[/quote] Gute Frage… Viele Grüße

Hallo, ich kenne die Doku und hab sie sogar gelesen, aber leider keine Erleuchtung gehabt, wie das mit Deinem Code-Schnipsel gemeint sein könnte. Bisher haben wir uns zwei kleine Frontend-Plugins schreiben lassen und ich habe versucht, sie nachzuvollziehen, was auch ungefähr funktioniert hat. Das wäre jetzt mein erstes “eigenes” Plugin, also neues Plugin angelegt und installiert. Statt Deiner function getSubscribedEvents() (wusste nicht wohin damit :oops:) habe ich $this-\>subscribeEvent genommen. Funktioniert auch prima für die Filterung in der Bestellübersicht. Soweit so gut. Aber leider ist die Reihenfolge, um den Status bei einer Einzelbestellung zu setzen, davon nicht betroffen. Wäre für einen Tipp dankbar!

Hallo, nochmal: wie finde ich den Event (oder Hook), wo ich ansetzen muss, damit auch beim Setzen des Bestellstatus in einer Bestellung die geänderte Bestellreihenfolge angezeigt wird?

Hallo, ich stehe vor dem gleichen Problem: Wie muss der oben stehende Code eingebunden werden, damit man die Reihenfolge der Bestellstati ändern kann? Danke.

Mein Code nimmt euch 95% der Arbeit ab. Die restlichen 5% könnt ihr über die Doku erlernen. Viele Grüße

Danke für die konstruktive Antwort. Da geht man doch gerne ins Forum…

Siehe sonstiges-f58/faq-haufig-gestellte-fragen-t24425.html#p109837 [quote]Könnt oder wollt ihr euch nicht mit der Thematik auseinander setzen, dann missversteht die Helfer des Forums nicht als kostenlose Dienstleister, sondern wendet euch an eine Shopware Agentur. [/quote] Viele Grüße

Hallo chemiebär, ich habe das zumindest für die Filterung in der Bestellübersicht so gelöst, dass ich in der Bootstrap den Hook registriert hab. public function install() { $this-\>subscribeEvent('Shopware\Models\Order\Repository::getOrderStatusQueryBuilder::after', 'afterGetStatusQueryBuilderHook' ); return true; } Und da auch die Funktion afterGetStatusQueryBuilderHook von Aquatuning definiert hab. Leider funktioniert das eben nur für die Filterung in der Bestellübersicht. Welcher Hook für das Setzen des Bestellstatus in einer Bestellung zuständig ist, weiß ich leider immer noch nicht.

[quote=“chris_52”]Hallo chemiebär, ich habe das zumindest für die Filterung in der Bestellübersicht so gelöst, dass ich in der Bootstrap den Hook registriert hab. public function install() { $this-\>subscribeEvent('Shopware\Models\Order\Repository::getOrderStatusQueryBuilder::after', 'afterGetStatusQueryBuilderHook' ); return true; } Und da auch die Funktion afterGetStatusQueryBuilderHook von Aquatuning definiert hab. Leider funktioniert das eben nur für die Filterung in der Bestellübersicht. Welcher Hook für das Setzen des Bestellstatus in einer Bestellung zuständig ist, weiß ich leider immer noch nicht.[/quote] Hallo, die zuständige Stelle für die Sortierung in den Bestelldetails wäre in /engine/Shopware/Controllers/Backend/Order.php /\*\* \* This class has its own OrderStatusQuery as we need to get rid of states with satus.id = -1 \*/ public function getOrderStatusQuery($filter = null, $order = null, $offset = null, $limit = null) { $builder = Shopware()-\>Models()-\>createQueryBuilder(); $builder-\>select(array('status')) -\>from('Shopware\Models\Order\Status', 'status') -\>andWhere("status.group = 'state'"); if ($filter !== null) { $builder-\>addFilter($filter); } if ($order !== null) { $builder-\>addOrderBy($order); } if ($offset !== null) { $builder-\>setFirstResult($offset) -\>setMaxResults($limit); } return $builder-\>getQuery(); } Ich sehe hier aber nur die Möglichkeit die komplette Funktion zu überschreiben, nicht aber zu erweitern. Kann mich aber auch irren! Vielleicht kann da jemand anders noch was dazu sagen. $this-\>subscribeEvent( 'Shopware\_Controllers\_Backend\_Order::getOrderStatusQuery::replace', 'repalceGetOrderStatusQuery' Gruß