GregFr24 Posted September 14, 2016 Share Posted September 14, 2016 Bonjour, Voici un petit bug assez bloquant pour la mise en place d'une politique de frais de port et de transporteurs spécifiques selon des zones de livraisons. Lorsque au moins 2 produits sont dans le panier et que l'un d'entre eux a une restriction de transporteur livrant une zone spécifique, si le client choisi une adresse en dehors de cette zone, la commande n'est pas bloquée. Aucun message d'erreur de type : "Votre sélection ne peut pas être livrée par le(s) transporteur(s) disponible(s)." ne s'affiche. Le nom du transporteur disparaît laissant place à la case à cocher et au prix seulement. Une erreur Smarty est générée : "Notice: Undefined offset: 0 in order-carrier.tpl". Le client peut valider la commande et 2 commandes sont générées: # 1 et # 2 avec des frais de ports erronés dont l'une avec aucun transporteur valide. Lien BugTracker : http://forge.prestashop.com/browse/PSCSX-8387 Merci d'avance pour l'aide que vous pourrez m'apporter ainsi qu'a la communauté. Cordialement, Greg. Configuration: Version : PS 1.6.1.6 (fresh install) Thème : Default bootstrap Override : aucun Modules non prestashop : désactivés Cache activé : oui ou non aucune incidence. Link to comment Share on other sites More sharing options...
erouvier29 Posted September 14, 2016 Share Posted September 14, 2016 (edited) Pouvez-vous refaire la manip après avoir corrigé le bug d'affichage qui traîne depuis un petit moment déjà: https://www.prestashop.com/forums/topic/502782-product-and-carrier-restrictions/ On y verra peut-être plus clair après... Edited September 14, 2016 by erouvier29 (see edit history) Link to comment Share on other sites More sharing options...
GregFr24 Posted September 14, 2016 Author Share Posted September 14, 2016 Bonjour et merci de votre réponse rapide, J'ai corrigé le bug Smarty selon vos recommandations hormis 2 colonnes qui n'ont pas lieu d’être dans la table "delivery_option_carrier" cela fonctionne mieux désormais au niveau de l'affichage. Cependant il reste plusieurs problèmes il me semble : 1 - L'affichage du prix du transport n'est pas le bon pour "Europe" 24€ affiché au lieu de 12€. 2 - La commande peut toujours être validée et est scindée en 2 commandes #1 et #2. Est ce le fonctionnement normal? 3 - Des Frais de manutention TTC apparaissent dans les récapitulatifs des commandes, problème de traduction? Merci d'avance. Link to comment Share on other sites More sharing options...
erouvier29 Posted September 14, 2016 Share Posted September 14, 2016 Même si il y a quelques éléments cohérents (24 = 20 + 20%, 12 = 10 + 20%), globalement c'est le bordel! Le fait qu'il y ait deux commandes c'est "normal", c'est la façon de faire de PS: 1 commande par transporteur Pour le reste, laissez-nous un peu de temps afin de reproduire et d'analyser (sauf si quelqu'un d'autre comprend immédiatement, ou a déjà travaillé dessus...) Link to comment Share on other sites More sharing options...
GregFr24 Posted September 15, 2016 Author Share Posted September 15, 2016 (edited) Ok, après une bonne journée de recherche... Pour les frais de manutention c'est bien un problème de traduction : Traduction Template ORDER-DETAIL -> Shipping & handling -> Frais de manutention à remplacer par "Livraison & Frais de manutention". Le fait qu'il y ait 2 commandes générées si l'un des produits est hors zone est à mon avis pas normal, nous devrions avoir le message "Votre sélection ne peut pas être livrée par le(s) transporteur(s) disponible(s). Veuillez modifier votre panier pour continuer." Si l'on regarde en détail la commande #1, elle n'a pas de transporteur valide. Il me semble que des commandes multiples sont générées si le multiShipping est activé, une commande par adresse, là ok. Or depuis la version 1.6. quelque-chose, la fonctionnalité ne semble pas être maintenue. J'ai actuellement 3 sites en 1.5 et il n'est pas possible de commander si l'un des produits ne peut être livré dans la zone de l'adresse sélectionnée. Je suis donc parti du principe que cela était un dysfonctionnement. Tout ça pour dire que... Dans classes\Cart.php, function getDeliveryOptionList, ligne 2096, j'ai remplacé : if (count($packages) == 1 && count($package['carrier_list']) == 1 && current($package['carrier_list']) == 0) par if (count($package['carrier_list']) == 1 && current($package['carrier_list']) == 0) Modification inspirée de la fonction getDeliveryOptionList de Presta 1.5. Ce qui parait logique, si l'une des options de livraisons pour une adresse dans le panier a un transporteur non valide, renvoyer un array vide. Si quelqu'un a une explication sur la condition "if count($packages) == 1" et son utilité, je suis preneur. Est ce que cela peut être considéré comme une correction de bug? Je ne sais pas, je vous laisse en faire bon usage. En tout cas pour moi le résultat est celui escompté. Merci encore à erouvier29 pour l'attention qu'il a porté à ma requête. Cordialement, Greg. Edited September 15, 2016 by GregFr24 (see edit history) Link to comment Share on other sites More sharing options...
erouvier29 Posted September 16, 2016 Share Posted September 16, 2016 (edited) EDIT: JE N'AVAIS PAS VU QUE VOUS AVIEZ TROUVE LA SOLUTION. DESOLE... En faisant la même manip sur un PS 1.6.1.6 vierge, j'obtiens quelque chose de légèrement différent, incorrect certes, mais cohérent: La commande initiale est ventilée en 2 commandes La commande unitaire avec transporteur compatible de la zone de livraison est ok (produits + frais de port) L'autre commande ne mentionne aucun transporteur, ni frais de port Donc maintenant, y a plus qu'à proposer une correction pour que la commande complète soit bloquée dans ce cas (totalité des transporteurs non disponible)... Ce qui est étonnant chez vous, c'est l'application des frais du port de l'autre transporteur (Europe à 10€ HT + 20%) dans la commande qui ne peut pas être livrée. Quelle version de PS? Peut-être l'effet d'un module tiers? Quant à la mention "Frais de manutention" dans le suivi des commandes, il s'agit d'une erreur de traduction. La valeur affichée est celle des frais port globaux (incluant les frais de manutention éventuels). Vous pouvez corriger ça facilement: BO > Localisation > Traductions Type de traduuction = Front-office Bloc ORDER-DETAIL Expression "Shipping & Handling" => "Frais de port" au lieu de "Frais de manutention" Edited September 16, 2016 by erouvier29 (see edit history) Link to comment Share on other sites More sharing options...
erouvier29 Posted September 16, 2016 Share Posted September 16, 2016 (edited) Dans classes\Cart.php, function getDeliveryOptionList, ligne 2096, j'ai remplacé : if (count($packages) == 1 && count($package['carrier_list']) == 1 && current($package['carrier_list']) == 0) par if (count($package['carrier_list']) == 1 && current($package['carrier_list']) == 0) Modification inspirée de la fonction getDeliveryOptionList de Presta 1.5. Ce qui parait logique, si l'une des options de livraisons pour une adresse dans le panier a un transporteur non valide, renvoyer un array vide. Si quelqu'un a une explication sur la condition "if count($packages) == 1" et son utilité, je suis preneur. Est ce que cela peut être considéré comme une correction de bug? Je ne sais pas, je vous laisse en faire bon usage. En tout cas pour moi le résultat est celui escompté. Vous pouvez proposer cette correction vous-même: https://github.com/PrestaShop/PrestaShop Edited September 16, 2016 by erouvier29 (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