PBo34 Posted February 19, 2014 Share Posted February 19, 2014 Bonjour, Après une petite recherche, je ne trouve nulle part référence à ce problème, donc je crée un nouveau topic. Je n'ai pas regardé dans la base de données des bugs. Je me suis hier heurté à une difficulté sur mon site en cours de développement. Je fais tourner en local Presta 1.5.6.2 sur Wamp sur Vista. Le thème est dérivé du thème par défaut avec peu de changements, normalement seulement des changements esthétiques. J'ai créé 2 nouveaux transporteurs pour les envois à l'étranger, ils ne permettent pas de faire d'envoi vers la France. Il s'agit du paquet prioritaire international de la Poste. Je fais des tests, et donc j'entre d'autres pays sur la première page du checkout, estimation des frais de livraison, pour vérifier que les transporteurs fonctionnent. Le problème rencontré est le suivant : ils s'affichent bien avec leur prix qui est juste. Par contre il est impossible de les choisir. Quand on appuie sur le bouton correspondant et qu'on clique "Mettre à jour le panier", le montant correspondant n'est pas ajouté au panier, et le montant correspondant au transporteur précédemment sélectionné (voire le transporteur par défaut) reste affiché dans le panier. En analysant le code, je constate ceci : 1. On retourne chercher la liste des transporteurs possibles pour cette destination, alors qu'on l'a déjà. Pourquoi ? Dans carriercompare, on appelle GetDeliveryOptionList du module Cart. 2. Dans GetDeliveryOptionList, $id_address_delivery du $product vaut 0, pourquoi ? Le pays, l'état et le code postal auraient au moins dû être transmis, car là on a des produits qu'on ne sait pas où livrer. Là, on appelle GetPackageList qui appelle getAvailableCarrierList du module Carrier. 3. Dans getAvailableCarrierList, on a _ $id_address_delivery du $product qui vaut 0, pourquoi ? Le pays, l'état et le code postal auraient au moins dû être transmis, car là on a des produits qu'on ne sait pas où livrer. _ et l'adresse dans $cart qui vaut 0, ce qui est logique puisque l'adresse n'est saisie qu'en page 2 du checkout. Donc on demande la liste des transporteurs disponibles mais on ne lui dit pas où il faut envoyer. Cette situation est une situation d'erreur. Le module devrait renvoyer une erreur quand on lui pose une question à laquelle il est impossible de répondre. Au lieu de celà, il va chercher le pays par défaut et répond "à côté de la plaque". C'est le genre de résilience qui rend une erreur très difficile à détecter car il vaut mieux répondre que les arguments sont erronés plutôt que de renvoyer une réponse au hasard masquant le fait que les appels ne sont pas faits avec les arguments nécessaires. Le problème peut être résolu aux 3 points successifs indiqués plut haut ou se poser la question : si on ne peut pas choisir un transporteur qui ne livre pas dans le pays du magasin, il vaut mieux attendre la page 4 du checkout avec un "vrai" choix du transporteur et donc supprimer ce module (qui est dans presta par défaut ?). J'ai modifié Carriercompare, Cart et Carrier pour rajouter un argument country aux appels de fonction successifs pour que à la fin, getAvailableCarrierList sache pour quel pays il faut chercher, et que si les 3 sources de destination sont nulles, il retourne null. Ca marche pour le cas qui m'intéresse, mais ça ne marchera pas si le transporteur dépend de l'état et/ou du code postal. Si vous êtes intéressé, je vous communique les modifs, charge à quelqu'un qui connaît le code de Presta de vérifier et soit d'intégrer, soit de faire une correction meilleure. Link to comment Share on other sites More sharing options...
PBo34 Posted February 19, 2014 Author Share Posted February 19, 2014 Au fait, est-ce qu'il existe une documentation des modules, des classes, des méthodes, des arguments à transmettre ? Les commentaires dans le code sont succints et pas du tout complets. Link to comment Share on other sites More sharing options...
PBo34 Posted February 19, 2014 Author Share Posted February 19, 2014 Le problème d'ailleurs n'est pas encore résolu complètement. Le bouton de sélection du transporteur revient sur un autre transporteur au retour de "mettre à jour votre panier", même si le prix en a été intégré au panier. Link to comment Share on other sites More sharing options...
Gregory Roussac Posted February 21, 2014 Share Posted February 21, 2014 Bonjour, Ce module est (très) buggué depuis longtemps car (mal) adapté de la 1.4. Un développeur vient d’être affecté récemment pour essayer de dépatouiller cet mise à jour du panier et autres soucis, le cœur de la 1.5 ne permettant pas de répondre comme répondait la 1.4 effectivement, le diagnostique est correct. Je transmets votre post à Julien, par contre n’hésitez pas à soumettre ces modifs sur le module par pull request. https://github.com/PrestaShop/PrestaShop-modules/tree/master/carriercompare Merci. Cordialement Link to comment Share on other sites More sharing options...
PBo34 Posted February 22, 2014 Author Share Posted February 22, 2014 Bonjour, Merci de m'avoir donné une réponse honnête. Je comprends maintenant un peu mieux. La correction que j'ai faite initialement fonctionnait partiellement sur la page 1 et plus du tout sur la page 4. J'en ai donc fait une autre qui semble fonctionner correctement. Je vais soumettre les modifications sur github. Je compte sur le collègue, grâce à sa connaissance du code que je n'ai pas, pour vérifier que le remède ne sera pas pire que le mal. Et je réitère la question : est-ce qu'il existe une documentation des modules, des classes, des méthodes, des arguments à transmettre ? C'est souvent difficile de savoir ce que sont censé faire les méthodes appelées et quel est le rôle de certains arguments. Merci. Bien cordialement. Link to comment Share on other sites More sharing options...
PBo34 Posted March 3, 2014 Author Share Posted March 3, 2014 Bonjour, J'essaie de faire remonter mes modifications de Presta 1.5 avec le logiciel Github installé sur mon PC. Soit le logiciel se bloque, soit il tourne indéfiniment. Il ne prend pas en compte .gitignore et me donne tous les fichiers d'install-dev comme étant différents bien que je les aie restaurés (pour qu'il ne les prenne plus en compte). En ne sélectionnant que les 5 fichiers modifiés pour faire le commit, il me renvoie une erreur et m'invite à débugger GitHub!!!! Ce logiciel me fait perdre mon temps. C'est une plaisanterie ce soft ou bien quelqu'un arrive à le faire marcher ????? SVP un peu d'aide, merci. Link to comment Share on other sites More sharing options...
PBo34 Posted March 3, 2014 Author Share Posted March 3, 2014 C'est bon, il s'est décidé à marcher en fin de journée. J'ai envoyé le pull request. Link to comment Share on other sites More sharing options...
PBo34 Posted March 3, 2014 Author Share Posted March 3, 2014 (edited) Rectification : le logiciel Github me dit que le commit s'est planté, alors le pull request est peut-être incomplet. Soit ce logiciel est une version alpha déguisée en release, soit je n'y ai rien compris. Comment dois-je faire pour vous communiquer ce fix ? Edited March 3, 2014 by PBo34 (see edit history) Link to comment Share on other sites More sharing options...
Gregory Roussac Posted March 3, 2014 Share Posted March 3, 2014 Honnêtement la ligne de commande est plus efficace que le interfaces pour le coup. Un commit ne plante pas, son push oui. Essayez de faire un git pull avant sinon http://doc.prestashop.com/display/PS15/Contributing+code+to+PrestaShop en live edit Cordialement Link to comment Share on other sites More sharing options...
PBo34 Posted March 20, 2014 Author Share Posted March 20, 2014 Bonjour, Pour ceux qui sont confrontés au même problème : le fix est intégré sur GitHub dans presta 1.5. A Gregory : merci pour ton aide. Par contre, pour l'intégration dans la version 1.6, je ne travaille pas dessus pour le moment, alors je vous laisse vous en occuper. 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