gringo1er Posted February 18, 2022 Share Posted February 18, 2022 Bonjour à tous. Comme quelques uns d'entre nous, nous avons une liste très riche d'états dans lesquels les commandes peuvent être positionnés. Trop d'ailleurs par rapport au besoin. Je ne souhaite pas en supprimer quand même, car on ne sait jamais de quoi l'avenir sera fait. Je souhaite par contre regrouper en tête de liste les états qui sont utiles au fonctionnement de la gestion des commandes. Dans "Boutique / Commandes / états des commandes" j'ai bien trouvé comment créer de nouveaux états, éventuellement supprimer, ceux qui ont été créés par des modules anciens, mais je n'ai pas trouvé comment revoir l'ordre d'affichage des états. Je n'ai pas trouvé d'astuce dans le forum, quelqu'un a-t-il déjà satisfait le même besoin? Je vous remercie Link to comment Share on other sites More sharing options...
Natc77 Posted February 19, 2022 Share Posted February 19, 2022 Perso je nettoierai les statuts inutiles, mais sinon tu peux faire un "faux" ménage en les renommant, tu ajoutes par exemple "z_" devant, et comme les états sont triés par ordre alphabétique, tous les états inutiles se mettront en bas de liste. Moi je cherche pour pouvoir n'afficher que les commandes non finalisées pour nettoyer visuellement le travail à faire. Link to comment Share on other sites More sharing options...
gringo1er Posted February 19, 2022 Author Share Posted February 19, 2022 Merci pour ce retour La plupart des status non pertinents fait partie des non retirables. Donc on va les laisser. Par contre, effectivement en les renommant z_ en entête ça les plaque en fond de panier, ce qui était l'effet recherché. J'ai appliqué cette modif sur la préprod, j'attends le retour des utilisateurs du BO avant déploiement... Merci pour l'astuce, des fois les trucs les plus simples sont les plus efficaces... 1 Link to comment Share on other sites More sharing options...
Grouik Posted March 22, 2023 Share Posted March 22, 2023 Salut, Comme j'ai eu la problématique sur un Prestashop 1.6.1.17, je me suis trouvé la solution suivante qui fonctionne au poil : D'abord je me suis noté les ID de chaque statut, depuis le Back Office - Commandes - statuts Ensuite il convient d'éditer le fichier classes/order/OrderState.php et modifier la fonction : public static function getOrderStates($id_lang) Dans cette fonction il y a la requête qui affiche tous les statuts. Nous allons donc dans le WHERE lui indiquer les id des statuts que l'on souhaite afficher WHERE deleted = 0 and osl.id_order_state in (22,2,6,7,8,9,21,22,23,24,25,28,31,32,36,37,3,35,18) les chiffres entre parenthèses correspondent aux statuts qui doivent apparaitre, les autres statuts n'apparaitront pas, ils ne sont pas supprimé pour autant. Puis pour les mettre dans l'ordre précis il convient de faire à la suite du WHERE un ORDER BY comme ceci : WHERE deleted = 0 and osl.id_order_state in (22,2,6,7,8,9,21,22,23,24,25,28,31,32,36,37,3,35,18) ORDER BY CASE WHEN osl.id_order_state = 22 THEN 1 WHEN osl.id_order_state = 23 THEN 2 WHEN osl.id_order_state = 3 THEN 3 WHEN osl.id_order_state = 24 THEN 4 WHEN osl.id_order_state = 9 THEN 5 WHEN osl.id_order_state = 25 THEN 6 WHEN osl.id_order_state = 31 THEN 7 WHEN osl.id_order_state = 32 THEN 8 WHEN osl.id_order_state = 7 THEN 9 WHEN osl.id_order_state = 6 THEN 10 WHEN osl.id_order_state = 36 THEN 11 WHEN osl.id_order_state = 37 THEN 12 WHEN osl.id_order_state = 8 THEN 13 WHEN osl.id_order_state = 2 THEN 14 WHEN osl.id_order_state = 18 THEN 15 ELSE 15 END Le chiffre après le THEN correpond à l'ordre choisi. Concrètement dans mon cas de figure le statut ID 22 sera en 1ère position, le 23 en 2ème position ... Link to comment Share on other sites More sharing options...
EgamiCreation Posted February 27 Share Posted February 27 Bonjour, nous aimerions adapter cette technique pour la version 8.1.6 concernant des états de commandes à cacher. Nous avons bien ouvert le fichier et retrouvons la fonction liée : Nous appliquons ce changement mais pas d'affichage spécifique de certains états de commande, pourriez-vous nous éclairer ? merci d'avance à vous. -------------------------- public static function getOrderStates($id_lang, $filterDeleted = true) { $deletedStates = $filterDeleted ? ' WHERE deleted = 0' : ''; $cache_id = 'OrderState::getOrderStates_' . (int) $id_lang; $cache_id .= $filterDeleted ? '_filterDeleted' : ''; if (!Cache::isStored($cache_id)) { $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT * FROM `' . _DB_PREFIX_ . 'order_state` os LEFT JOIN `' . _DB_PREFIX_ . 'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = ' . (int) $id_lang . ')' . $deletedStates . ' ORDER BY `name` ASC'); Cache::store($cache_id, $result); return $result; } return Cache::retrieve($cache_id); } Link to comment Share on other sites More sharing options...
Knowband Plugins Posted February 27 Share Posted February 27 (edited) À partir de quel endroit souhaitez-vous masquer le statut de la commande ? La modification de la fonction ci-dessus masquera le statut de la commande partout dans le magasin. Dans ce cas, vous pouvez simplement le supprimer de l'administrateur Pretashop. Edited February 27 by Knowband Plugins (see edit history) Link to comment Share on other sites More sharing options...
EgamiCreation Posted February 27 Share Posted February 27 Just now, Knowband Plugins said: À partir de quel endroit souhaitez-vous masquer le statut de la commande ? La modification de la fonction ci-dessus masquera le statut de la commande partout dans le magasin. Dans ce cas, vous pouvez simplement le supprimer de l'administrateur Pretashop. Merci pour votre retour rapide. Nous aimerions le cacher uniquement pour la partie BO dans liste des commandes et le détail d'une commande afin de simplifier pour les administrateurs la gestion des commandes. merci d'avance. Link to comment Share on other sites More sharing options...
magicbel Posted February 27 Share Posted February 27 Bonjour, Je vous aurais bien aidé mais j'en ai fait un module car c'est une demande récurrente chez mes clients. Ne toucher que sur le listing des commandes afin d'avoir quand même la totalité des états de commande en étant dans la commande elle même. 😇 Je dois encore y apporter quelques modifs (propreté du code et enlever les commentaires) mais si vous désirez le tester => mp Link to comment Share on other sites More sharing options...
Grouik Posted February 27 Share Posted February 27 Bonjour, As-tu essayé ce que j'ai proposé ? A savoir de rajouter un : WHERE osl.id_order_state in (1,2,3,4,5,6,7) avant ton ORDER BY ? Les chiffres entre parenthèses étant les ID des statuts que tu souhaites afficher. Link to comment Share on other sites More sharing options...
EgamiCreation Posted February 27 Share Posted February 27 Merci pour le retour, en effet, j'ai essayé cette méthode public static function getOrderStates($id_lang, $filterDeleted = true) { $deletedStates = $filterDeleted ? ' WHERE deleted = 0' : ''; $cache_id = 'OrderState::getOrderStates_' . (int) $id_lang; $cache_id .= $filterDeleted ? '_filterDeleted' : ''; if (!Cache::isStored($cache_id)) { $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT * FROM `' . _DB_PREFIX_ . 'order_state` os LEFT JOIN `' . _DB_PREFIX_ . 'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = ' . (int) $id_lang . ')' . $deletedStates . ' ORDER BY `name` ASC'); Cache::store($cache_id, $result); return $result; } return Cache::retrieve($cache_id); } Link to comment Share on other sites More sharing options...
Knowband Plugins Posted February 27 Share Posted February 27 Il semble que vous ayez oublié d'ajouter les conditions mentionnées ci-dessus, c'est-à-dire WHERE osl.id_order_state in (1,2,3,4,5,6,7) Je ne vois rien de similaire dans votre code de partage. 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