Prestashop 1.7 et le problème des commandes scindées entre 2 transporteurs

SEO Pour créer, rédiger et optimiser le SEO de vos pages web --> Contactez-nous


On sait que la migration vers Prestashop 1.7 n'est pas aussi facile que Prestashop le prétend (voir ).

Avec les commandes scindées, on a un exemple typique de choses qui étaient possibles sur Prestashop 1.6 mais ne le sont plus sur Prestashop 1.7 car abandonnées par les développeurs de ce système.

Quand on lit les issues sur github, prestashop n'indique jamais ou pas explicitement ne pas avoir remis en place la fonctionnalité de la 1.6 permettant de scinder une même commande entre plusieurs transporteurs.

Discussions à ce sujet sur gihub

[BOOM-2690] Carrier selection on FO
https://github.com/PrestaShop/PrestaShop/issues/9998

[BOOM-5944] Split order - order confirmation
https://github.com/PrestaShop/PrestaShop/issues/9594

Etonnant non ?

Comment alors faire fonctionner ceci sur Prestashop 1.7 ?

Les commandes scindées avec Prestashop 1.6:

Commande 1 : Produit A (transporteur A) + Produit B (transporteur B)
=> popup panier => total livraison ok
=> récap panier => total livraison ok
=> page livraison order process => affichage des 2 transporteurs avec pour chacun le produit concerné + prix total
=> page confirmation commande =>  pas de listing des produits mais seulement le montant total (avec par exemple unmodule virement bancaire)
=> historique -> la commande est scindée en 2 (2 lignes, une pour chaque transporteur)
=> des mails sont envoyés
==> à l'admin
===> 2 mails avec les 1 commande par mail (montant + livraison)  
===> 2 mails pour confirmer chaque commande scindée
==> au client
===> 2 mails pour chaque commande scindée  


Commande 2 : Produit A (transporteur A) + Produit BC (transporteur B et transporteur C)
=> popup panier => total livraison ok (la moins chère, liée à la config)
=> récap panier => total livraison ok (la moins chère, liée à la config)
=> page livraison order process => affichage des 2 couples de transporteurs possibles "A + B" OU "A + C" avec possibilité de choisir le couple de son choix

 

Avec Prestashop 1.7, voici ce qu'on a dans ce cas:

Fonctionnement 1.7

Commande 1 : Produit A (transporteur A) + Produit B (transporteur B)
!!! --> étape livraison order process: affiche un seul transporteur mais le total est celui des 2 transporteurs.
!!! --> page confirmation commande : affiche un seul produit et un seul mode de livraison c'est à dire que prestashop affiche une seule commande scindée
=> dans le back-office "commandes" et dans l'historique des commandes du client , les commandes sont bien scindées (comme dans la 1.6)

Commande 2 : Produit A (transporteur A) + Produit BC (transporteur)
!!! --> étape livraison order process: deux transporteurs sont proposés. L'intitulé n'est pas ok. Le transporteur A n'est pas affiché. Le montant total de la livraison est cependant ok : pour le choix 1, le montant est égal à A+B, pour le choix 2, le montant est égal = A+C. On ne voit pas comme dans la 1.6 les produits liés à chaque transporteur.
!!! --> page confirmation commande : affiche un seul produit et un seul mode de livraison c'est à dire que presta affiche une seule commande scindée. 
=> dans le back-office "commandes" et dans l'historique des commandes du client , les commandes sont bien scindées (comme dans la 1.6)

Que faut-il faire pour avoir les mêmes fonctionnalités pour commandes scindées avec Prestashop 1.7 ?

=> si on regarde le template du thème classic fourni par Prestashop en charge d'afficher les transporteurs dans l'order process themes/classic/templates/checkout/_partials/steps/shipping.tpl, on ne retrouve pas les éléments nécessaires permettant de mettre en place des couples de transporteurs (contrairement au template de la 1.6 ). Pour illustrer cette impossibilité, on peut noter par exemple que la condition {if !$option.unique_carrier} présente dans le template par défaut de la 1.6 order-carrier.tpl a disparu. Prestashop a supprimé cette fonctionnalité.

=> dans Prestashop 1.7, la variable contenant les infos pour l'affichage est générée par la fonction getDeliveryOptions() de classes/checkout/DeliveryOptionsFinder.php. La variable ne contient pas les infos pour mettre en place le multi-transporteurs pour une commande contrairement à la 1.6. Il faut dans notre première analyse reprendre les données de la fonction 1.6 getDeliveryOptionList() de controllers/admin/AdminCartsController.php. Avec les données de cette fonction, il est possible de remettre en place le choix dans l'order process. Il faut ensuite modifier la soumission dans la 1.7 du formulaire du choix du transporteur. La fonction isModuleComplete de la classe classes/checkout/CheckoutDeliveryStep.php est à modifier.

==> Pour retrouver le fonctionnement de la 1.6, nous allons repartir de la variable retournée par la fonction getDeliveryOptionList() de controllers/admin/AdminCartsController.php. La variable générée semble être la même que dans la 1.6. Il faut ensuite:

  • modifier le template de la 1.7.
  • modifier la validation de l'étape livraison pour gérer le multi-transporteur.
  • modifier le rendu de la page de confirmation de commande (en cherchant si la commande affichée n'est pas liée à une autre. Si tel est le cas, il faudra transmettre cette deuxième commande au template et l'afficher).

Dans un dernier temps, il faudra revoir l'envoi de mails (Comme dans la 1.6, Prestashop envoie un mail par commande scindée, ce n'est pas très clair pour le client qui peut avoir l'impression d'avoir 2 paiements à effectuer)

Commentaires sur: Prestashop 1.7 et le problème des commandes scindées entre 2 transporteurs

Poster un commentaire sur: Prestashop 1.7 et le problème des commandes scindées entre 2 transporteurs







« Couler les Ads Google des concurrents: la guerre fait de plus en plus rage .. au grand profit de Google | Accueil


Développement it et web, rédaction contenu web,  SEO, scrapping, growth hacking

Besoin de SEO, de développement, de rédaction de contenu web ? Besoin d'un blog, de Wordpress, de Prestashop ou autres nouvelles "choses web" ? Envie de travailler dans ces domaines ? --> Contactez-nous