Jump to content

Stock / Commande fournisseur - Liste déroulante de fournisseurs vide


Recommended Posts

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+lenny16
Version de MySQL 5.5.40-MariaDB-1~squeeze-log

Edited by Tetardo (see edit history)
Link to comment
Share on other sites

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

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

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

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

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 by Tetardo (see edit history)
Link to comment
Share on other sites

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 :P

Link to comment
Share on other sites


//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

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

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.6
http://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 by Tetardo (see edit history)
Link to comment
Share on other sites

//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 by Zebx (see edit history)
Link to comment
Share on other sites

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 :lol:

Link to comment
Share on other sites

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

$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 by Tetardo (see edit history)
Link to comment
Share on other sites

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 :D

 

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

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 by Tetardo (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...