Tetardo Posted March 27, 2015 Share Posted March 27, 2015 (edited) Bonjour, Je rencontre un petit soucis avec la gestion des stocks avancés. J'ai des produits, fournisseurs et entrepôts d'activés. Lorsque je vais dans stock -> commande fournisseur - > nouvelle commande, il est impossible de sélectionner un fournisseur car la liste déroulante est vide malgré qu'ils soient tous activés. J'ai fait et refait le tour des divers paramètres mais je n'arrive pas a solutionner ce problème. J'ai cherché sur google et sur ce forum mais j'ai l'impression d’être le seul a rencontrer ce soucis. Et pourtant je sais bien que non. Est-ce un bug Prestashop, est-ce du aux versions de mon serveur ? Avez vous déjà rencontré ce problème et/ou avez vous une solution ou une piste a me donner. Je vous remercie d'avance. Pour info: Version de PrestaShop 1.6.0.9 Version du logiciel serveur Apache/2.2 Version de PHP 5.2.6-1+lenny16Version de MySQL 5.5.40-MariaDB-1~squeeze-log Edited March 27, 2015 by Tetardo (see edit history) Link to comment Share on other sites More sharing options...
Zebx Posted March 27, 2015 Share Posted March 27, 2015 Bonsoir, Je n'utilise pas (plus) la gestion des stocks avancées... mais sans doute dois-tu, pour chaque produit, définir un entrepôt et un fournisseur par défaut ? Link to comment Share on other sites More sharing options...
Tetardo Posted March 27, 2015 Author Share Posted March 27, 2015 Merci pour ta réponse. Oui, il faut en définir dans la fiche de chaque produit, c'est fait, donc le soucis ne vient pas de la. Une autre idée ? Link to comment Share on other sites More sharing options...
Zebx Posted March 27, 2015 Share Posted March 27, 2015 Non désolé... D'ailleurs après vérification (sur un PS1.5.6.2), le simple fait de créer le fournisseur et de l'activer suffit à le faire apparaître dans la liste des fournisseurs d'un BDC. Donc ce que j'ai imaginé dans le post précédent s'avère inutile. Essaye peut-être de désactiver tous les fournisseurs, puis de les activer un à un tout en actualisant ton formulaire de commande à chaque fois... on ne sait jamais que ce soit juste un de tes fournisseurs qui soit responsable du plantage... j'en doute mais bon, c'est un test facile... Attention aussi de ne pas confondre fournisseurs et marques Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 Bonjour, Fait, mais pas de changement, j'ai également vérifié en db et le champ active est bien sur 1 pour la table ps_supplier Avez vous une autre idée ? Merci d'avance Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 Re, En fouinant, je viens de trouver une autre anomalie, il m'est impossible de définir un "Meta mots-clés" pour un fournisseur. Il ne s'enregistre pas en db, pour le titre ou la description tout se passe bien. Est-ce la classe de gestion des fournisseurs qui est buggé de partout ? Link to comment Share on other sites More sharing options...
Zebx Posted March 30, 2015 Share Posted March 30, 2015 Ben je vois pas trop du coup... Ce menu déroulant fait apparemment simplement appel à getSuppliers dans la classe Supplier... donc à priori c'est tout ce qu'il y a de plus basique. Le fournisseur doit juste être activé pour être retourné comme résultat. Vérifie peut-être que tu n'as pas un override de la classe Supplier.php (dans le dossier override/classes) (pour les metas mots-clés, en PS1.5 ça fonctionne, mais comme ces metas ne servent plus à grand chose, ça a peut-être été désactivé en 1.6... c'est juste une hypothèse) Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 Effectivement, Dans le dossier override/classes/ j'ai pas de Supplier.php dans ce cas, que faire ? Link to comment Share on other sites More sharing options...
Zebx Posted March 30, 2015 Share Posted March 30, 2015 Tu utilises le multi-boutiques ? Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 Oui, j'ai essayé sans aussi mais le soucis est le mm. j'ai monté une copie sur un vieux domaine qui a rien a voir chez 1and1 et j'ai pas le pb. J'ai du mal a penser que le soucis peut venir de la conf serveur. je suis dev php et oui, je suis d'accord avec toi, la classe retourne bêtement un array suivant un flag en base Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 (edited) donc je viens d'ajouter un print_r dans le SupplierCore::getSuppliers sur la variable de retour. j'ai bien un array des fournisseurs actifs. le soucis viendrait de la vue ? ou du passage de paramètres au formulaire ? [4] => Array ( [id_supplier] => 6 [name] => Cec... [date_add] => 2015-02-11 23:32:13 [date_upd] => 2015-03-30 09:33:02 [active] => 1 [description] => [link_rewrite] => 0 ) [5] => Array ( [id_supplier] => 7 [name] => Cla... [date_add] => 2015-02-11 23:32:15 [date_upd] => 2015-03-30 09:33:08 [active] => 1 [description] => [link_rewrite] => 0 ) Cette fonction SupplierCore::getSuppliers liste bien les fournisseurs dans la fiche d'edition d'un produit.On peut donc en conclure que le soucis ne vient pas de cette fonction Edited March 30, 2015 by Tetardo (see edit history) Link to comment Share on other sites More sharing options...
Zebx Posted March 30, 2015 Share Posted March 30, 2015 Peut-être jeter un oeil du côté du controller AdminSupplyOrdersController.php dans ce cas... Enlève peut-être le array_unique dans renderForm() à la ligne suivante : $suppliers = array_unique(Supplier::getSuppliers(), SORT_REGULAR); Y a pas de raison mais bon, ton bug n'a pas de raison non plus Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 //get suppliers list //$suppliers = array_unique(Supplier::getSuppliers(), SORT_REGULAR); $suppliers = Supplier::getSuppliers(); Et voila ^^ tout est bon ! Enfin, je vais tester si le post du formulaire se passe bien.... Je te remercie, c'est quand mm bizarre, est-ce du a la version de php ? Je vais faire qqs essais.... En tout cas merci d'avoir pris un peu de temps Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 Bon tout semble bon, piouf...par contre, presque rien a voir, quand je passe une commande fournisseur de 10 unités d'un produit, et que je set le statut sur "5 - Commande réceptionnée totalement" rien ne s'ajoute directement au stock, je suis obligé de passer par le statut "4 - Commande réceptionnée partiellement" afin de déclarer mes 10 unités puis de changer de status en "5 - Commande réceptionnée totalement" c'est pas bien méchant. En tout cas, merci #Zebx ^^ Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 (edited) Petite chose concernant le bug de liste de fournisseurs dans stock / fournisseurs: La valeur par défaut de cette fonction a était modifié dans php 5.2.9 alors que je suis en php 5.2.6http://php.net/manual/fr/function.array-unique.php A prendre en compte pour les futures updates de prestashop.... Autre chose a prendre en compte, il ne devrait pas être possible de passer du statut de commande fournisseur 5 - Commande réceptionnée totalement à 4 - Commande réceptionnée partiellement parce que en faisant ça on est capable d'ajouter 20 articles au stock pour une commande de 10 Edited March 30, 2015 by Tetardo (see edit history) Link to comment Share on other sites More sharing options...
Zebx Posted March 30, 2015 Share Posted March 30, 2015 (edited) //get suppliers list //$suppliers = array_unique(Supplier::getSuppliers(), SORT_REGULAR); $suppliers = Supplier::getSuppliers(); Et voila ^^ tout est bon ! Enfin, je vais tester si le post du formulaire se passe bien.... Je te remercie, c'est quand mm bizarre, est-ce du a la version de php ? Je vais faire qqs essais.... En tout cas merci d'avoir pris un peu de temps Cool D'après la doc PHP : http://php.net/array_unique Note: Notez que array_unique() ne fonctionne pas avec des tableaux multi-dimensionnels. Néanmoins : Although array_unique is not intended to work with multi-dimensional arrays, it does on 5.2.9. However, it does not for 5.2.5. Beware. Donc oui, ça dépendrait bien de la version de PHP... mais ça peut aussi être considéré comme un bug dans PS Edit: oups, j'avais pas lu ta réponse précédente En effet, apparemment c'est même un paramètre qui a été ajouté à partir de 5.2.9... donc c'est pas vraiment la valeur par défaut qui pose problème, mais la fonction en elle-même qui nécessite PHP 5.2.9 ou sup... enfin bref ^^ Edited March 30, 2015 by Zebx (see edit history) Link to comment Share on other sites More sharing options...
Zebx Posted March 30, 2015 Share Posted March 30, 2015 Concernant les comportements bizarres que tu constates, là je peux pas t'aider... C'est justement parce que cette gestion de stock avancée n'était pas au point et que j'avais aussi constaté des trucs tordus dans les stocks que j'ai fini par me résoudre à ne pas l'utiliser Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 (edited) oui, il manque une petite condition sur version de php...j'ai rien trouvé la dessus sur google et sur ce forum, ni en FR ni en EN, je trouve ça bizarre d’être le seul (surement pas) a avoir eu ce pb. En tout cas, merci ^^ Edited March 30, 2015 by Tetardo (see edit history) Link to comment Share on other sites More sharing options...
Tetardo Posted March 30, 2015 Author Share Posted March 30, 2015 (edited) et oui, je confirme, il y a pleins de petites anomalies dans les stocks avec la gestion avancée Edited March 30, 2015 by Tetardo (see edit history) Link to comment Share on other sites More sharing options...
Zebx Posted March 31, 2015 Share Posted March 31, 2015 Pour info, j'ai remonté le bug hier, donc voici le correctif : https://github.com/PrestaShop/PrestaShop/pull/2777/files Service rapide pour le coup Link to comment Share on other sites More sharing options...
Tetardo Posted March 31, 2015 Author Share Posted March 31, 2015 Parfait tout ça ! Efficace ^^ Link to comment Share on other sites More sharing options...
Tetardo Posted March 31, 2015 Author Share Posted March 31, 2015 Une boucle de vérif, prk ne pas avoir un simple controle sur la version de php ?La tu as une belle perte de performance (théorique hein...) car tu testes chaque élément du tableau, a savoir que si le premier élément déconne on est sur de devoir traiter le reste du tableau.... Link to comment Share on other sites More sharing options...
Tetardo Posted March 31, 2015 Author Share Posted March 31, 2015 (edited) $suppliers = array_unique( Supplier::getSuppliers(), (version_compare(phpversion(), '5.2.10', '<')) ? SORT_REGULAR : SORT_STRING; ); Un truc du genre... A revoir la condition car la c'est un exemple un peu a l'arrache et pas testé du tout je trouve dommage de virer le array_unique, si ils ont ajouté cette fonction c'est qu'il y a surement un risque de doublon a moment ou a un autre. Edited March 31, 2015 by Tetardo (see edit history) Link to comment Share on other sites More sharing options...
Zebx Posted March 31, 2015 Share Posted March 31, 2015 Le correctif est celui d'un dev PS, moi j'ai juste remonté le bug hein Mais le but du code est le même, éviter un doublon possible... Ceci dit, ta proposition ne fonctionnera pas sur un tableau multi-dimensionnels... car avec SORT_STRING tous les éléments seront considérés identiques (tous les éléments du tableau étant des tableaux), et tu n'auras donc plus que 1 fournisseur dans ta liste Tu peux le tester facilement même sur ta version de PHP, suffit de pas mettre de paramètre du tout dans array_unique... Conclusion, le correctif me semble le bon ^^ Link to comment Share on other sites More sharing options...
Tetardo Posted March 31, 2015 Author Share Posted March 31, 2015 (edited) voui voui, tu as raison ^^ Mais bon tout faire tourner inutilement car tu sais quoi faire au premier résultat, c'est dommage... Et de plus appeler deux fois la fonction mm si la première fonctionne, c'est a mourir de rire $suppliers = array_unique(Supplier::getSuppliers(), SORT_REGULAR); $suppliers_list = Supplier::getSuppliers(); Perso je testerai que le premier élément, avec cette condition ou une autre mais je ne ferai pas de boucle... $suppliers = array_unique(Supplier::getSuppliers(), SORT_REGULAR); if (count($suppliers) < 1) { $suppliers_list = Supplier::getSuppliers() } Edited March 31, 2015 by Tetardo (see edit history) Link to comment Share on other sites More sharing options...
Zebx Posted March 31, 2015 Share Posted March 31, 2015 Aaaah oui mais non... le correctif sur Github : en rouge (-) c'est ce qui faut supprimer, en vert (+) ce qu'il faut ajouter... donc tu gardes que la boucle et tu supprimes le array_unique... Link to comment Share on other sites More sharing options...
Tetardo Posted March 31, 2015 Author Share Posted March 31, 2015 (edited) autant pour moi, je suis un peu c** sur ce coup la ^^ je fatigue avec du code toute la journée... Edited March 31, 2015 by Tetardo (see edit history) 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