shobbie Posted July 17, 2013 Share Posted July 17, 2013 (edited) Hallo, weiß jemand von Euch ob es möglich ist die die Position der Artikel auf der Rechnung anders anzuordnen? Ich würde gerne die Produkte auf der Rechnung anhand der Referenz / Produktnummer aufsteigend sortieren. Weiß jemand wie man das umsetzten kann oder ob es ggf. ein passendes Modul gibt? Vielen Dank schon mal für Eure Hilfe :-) Edited July 18, 2013 by shobbie (see edit history) Link to comment Share on other sites More sharing options...
eleazar Posted July 17, 2013 Share Posted July 17, 2013 (edited) Hi Shobbie, das geht nur durch einen kleinen Eingriff - entweder in den Quellcode oder als Override. Verantwortlich ist die Funktion getProductsDetail() in der /classes/order/Order.php: public function getProductsDetail() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT * FROM `'._DB_PREFIX_.'order_detail` od LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = od.product_id) LEFT JOIN `'._DB_PREFIX_.'product_shop` ps ON (ps.id_product = p.id_product AND ps.id_shop = od.id_shop) WHERE od.`id_order` = '.(int)($this->id)); } Die braucht einen kleinen Appendix: ORDER BY od.`product_reference`') so dass sie wie folgt aussieht: public function getProductsDetail() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT * FROM `'._DB_PREFIX_.'order_detail` od LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = od.product_id) LEFT JOIN `'._DB_PREFIX_.'product_shop` ps ON (ps.id_product = p.id_product AND ps.id_shop = od.id_shop) WHERE od.`id_order` = '.(int)($this->id).' ORDER BY od.`product_reference`'); } Oder du speicherst folgenden Code unter dem Namen Order.php in das Verzeichnis /overrides/classes/order: <?php /* override für classes/order/Order.php*/ class Order extends OrderCore{ public function getProductsDetail() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT * FROM `'._DB_PREFIX_.'order_detail` od LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = od.product_id) LEFT JOIN `'._DB_PREFIX_.'product_shop` ps ON (ps.id_product = p.id_product AND ps.id_shop = od.id_shop) WHERE od.`id_order` = '.(int)($this->id).' ORDER BY od.`product_reference`'); } } Achtung: Groß- und Kleinschreibung bei Dateinamen beachten. Viele Grüße eleazar Edited July 17, 2013 by eleazar (see edit history) Link to comment Share on other sites More sharing options...
shobbie Posted July 18, 2013 Author Share Posted July 18, 2013 Hi eleazar, vielen Dank das ist ja echt super Werde es gleich mal auf dem Testserver probieren - Ist der Code auf für die Version 1.4.7.0 richtig oder schon für 1.5.X gedacht? Danke noch mal für den tollen Tipp. Link to comment Share on other sites More sharing options...
shobbie Posted July 18, 2013 Author Share Posted July 18, 2013 (edited) Da bin ich noch mal ;-) Hab es jetzt auf unserem Testserver ausprobiert und leider geht es nicht, folgendes Problem taucht auf: 1. Check-Out läuft nicht mehr durch auf der letzten Seite kommt nur noch eine weiße Seite anstatt bspw. der Kontodaten für die Überweisung 2. Im BO wird nur noch 1. Bestellung angezeigt anstatt aller vorhanden 3. Beim versuch au die Bestellung zu klicken wir einfach alles weiß Mir ist auch auf aufgefallen, dass unsere Funktion ein wenig anders aussieht diese Absatz ist bei uns standardmäßig scheinbar garnicht vorhanden alles andere ist identisch. Irgendeine Idee? LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = od.product_id) LEFT JOIN `'._DB_PREFIX_.'product_shop` ps ON (ps.id_product = p.id_product AND ps.id_shop = od.id_shopIr Danke Edited July 18, 2013 by shobbie (see edit history) Link to comment Share on other sites More sharing options...
Mutabor Posted July 18, 2013 Share Posted July 18, 2013 Ja, so ist das, wenn man seine Version nicht dazuschreibt ;-) In 1.4 ist es noch einfacher: public function getProductsDetail() { return Db::getInstance()->ExecuteS(' SELECT * FROM `'._DB_PREFIX_.'order_detail` od WHERE od.`id_order` = '.intval($this->id).' ORDER BY od.`product_reference`');} Link to comment Share on other sites More sharing options...
shobbie Posted July 18, 2013 Author Share Posted July 18, 2013 (edited) Ja das stimmt, sorry Vielen Dank für den tollen Codees läuft auf dem Testserver bisher ohne Probleme noch mal vielen vielen Dank Der "Code-Schnipsel" sollte ja eigentlich sonst keine negativen Auswirkungen haben können auf die Datenbank etc. von der reinen Logik her oder? Edited July 18, 2013 by shobbie (see edit history) Link to comment Share on other sites More sharing options...
Mutabor Posted July 18, 2013 Share Posted July 18, 2013 Nein, eigentlich nicht. Link to comment Share on other sites More sharing options...
shobbie Posted July 18, 2013 Author Share Posted July 18, 2013 Super danke, dann übernehmen wir die Änderung jetzt für unseren Live Shop. Noch mal vielen Dank, dass wir gerade beim zusammenstellen der Waren bei größeren Bestellungen extrem hilfreich sein. Dankeschööööön Link to comment Share on other sites More sharing options...
guest* Posted July 18, 2013 Share Posted July 18, 2013 Bei einem Shop-Upgrade sind die Änderungen aber wieder nichtig gemacht. Musst du immer wieder anpassen und der Code kann je nach Version auch anders dann sein. Die version als override ist sicherer, weil sie beim Upgrade erhalten bleibt. Jedoch ist auch hier Vorsicht geboten, es kann sein, dass die Override-Datei irgendwann mal angepasst werden muss. Link to comment Share on other sites More sharing options...
shobbie Posted July 18, 2013 Author Share Posted July 18, 2013 Danke für den Hinweis CD2500 werden wir dann auf jeden Fall dran denken bei einem anstehenden Update Link to comment Share on other sites More sharing options...
GrafFoto Posted February 20, 2015 Share Posted February 20, 2015 Hallo allerseits. Ich versuche mich gerade an dem gleichen Problem. Damit man möglichst wenige Dateien hat, die bei einem Update angepasst werden müssen, überlege ich gerade, ob man die Sortierung nicht direkt in der invoice.tpl hinbekommt (de ich eh anpasse). Aber ich krieg es nicht hin ... Hier: {foreach $order_details as $order_detail} habe ich versucht einen sortby Befehl zu integrieren, aber dann wird gar keine Rwechnung mehr erzeugt. Ich habe das mal so versucht: {foreach $order_details|@sortby:"$order_detail.product_reference" as $order_detail} funktioniert aber leider nicht :-( Ich wäre dankbar, wenn jemand eine Idee hätte, wie man das hinbekommt. Link to comment Share on other sites More sharing options...
GrafFoto Posted February 20, 2015 Share Posted February 20, 2015 Mmmmh, habe deinen Tipp in der 1.6.10 Version gerade mal ausprobiert ... zeigt leider keine Wirkung. Wenn ich mir eine Bestellübersicht ausdrucke, dann werden die Artikel sortiert. Auf der Rechnung erscheinen sie aber so wie sie in den Warenkorb gelegt wurden. Ich habe extra ne neue Bestellung getätigt, weil ich dachte, dass das vielleicht nicht rückwirkend funktioniert. public function getProductsDetail() { return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT * FROM `'._DB_PREFIX_.'order_detail` od LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = od.product_id) LEFT JOIN `'._DB_PREFIX_.'product_shop` ps ON (ps.id_product = p.id_product AND ps.id_shop = od.id_shop) WHERE od.`id_order` = '.(int)($this->id).' ORDER BY od.`product_reference`'); } Link to comment Share on other sites More sharing options...
GrafFoto Posted August 31, 2015 Share Posted August 31, 2015 Okay ... für alle die auch noch nicht so ganz das Prestashop-Universum durchblicken, hier noch der Hinweis, dass es im Backend unter 'Erweiterte Einstellungen / Leistung' einen Schalter gibt: Alle Overrides deaktivieren. Nachdem ich den gefunden und auf NEIN gesetzt hatte, funktionierte es ganz wunderbar. Link to comment Share on other sites More sharing options...
kulli Posted August 31, 2015 Share Posted August 31, 2015 trotzdem forenregeln lesen und nicht an so uralte Topics mit völlig unterschiedlichen Versionen dranhängen; für die lesenden, die Helfen wollen ist das Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now