Les modules transporteurs - fonctionnement, création, configuration

Cet article a été écrit par Fabien Serny, et publié sur le blog de PrestaShop le 26 septembre 2011.

Préambule

Attention cet article est à l'attention de développeurs avancés (connaissance des hooks, de l'objet Carrier, ...) et est valable à partir de la version 1.4 de PrestaShop. Pour savoir ce qu'est un hook, je vous conseille de vous reporter à l'article de Julien Breux ici : Mieux comprendre et utiliser les hooks

De base PrestaShop permet de créer des transporteurs et de configurer le calcul des frais de transport à partir de tranches de poids et de tranches de prix que vous pouvez spécifier dans le back office.

Ce système atteint sa limite lorsque vous voulez récupérer les prix via des webservices (UPS, USPS, Fedex) ou encore que vous voulez faire votre propre système de calcul de frais de transports (selon nombre d'articles dans le panier, limitation d'un transporteur à un ou plusieurs pays, etc...).

C'est à ce moment-là qu'interviennent les modules transporteurs.

Par où commencer ?

Il existe un module de base que vous pouvez télécharger ici. L'article partira de ce module de base mais il vous est bien entendu possible de le modifier et de l'adapter à vos besoins.

Notre exemple permet de gérer deux transporteurs auxquels il est possible de fixer un coût additionnel en plus du tarif par tranches configuré dans le back office.

Certaines parties du code sont volontairement dupliquées pour mieux comprendre le mécanisme. Il vous appartient de gérer la liste des transporteurs proprement (à l'aide d'une table de données par exemple).

Explication de l'exemple

Tout d'abord, notez le fait que le module est extends de la classe CarrierModule et non Module. A présent, faisons une petite liste des méthodes contenues dans ce module et son fonctionnement général.

Les méthodes constructeur, installation, désinstallation

Le constructeur :

L'installation :

La désinstallation :

Les méthodes back office

Je ne m'attarderai pas sur la plupart des méthodes du back office (getContent, _displayForm, _postValidation et _postProcess) qui sont relativement simples et qui sont là pour permettre d'administrer les coûts des transporteurs. Je vous laisse les découvrir dans le module d'exemple.

Cependant, j'attire votre attention sur la méthode hookupdateCarrier ci-dessous. Dans PrestaShop, à chaque fois que l'on modifie un transporteur, celui-ci est automatiquement archivé et un nouveau transporteur est créé.

Techniquement, on passe le flag deleted du transporteur à 1 et on en créé un nouveau. C'est pour cela que lorsque vous modifiez un transporteur via l'onglet « Transporteurs » de votre back office, son id change.

Il faut donc hooké le module afin d'actualiser l'id du transporteur lorsque celui-ci change.

Les méthodes front office

Pour aller plus loin

Ici l'exemple est très simple, mais vous pouvez créer des modules plus complexes en y associant, par exemple, des webservices (comme c'est le cas dans les modules UPS par exemple) ou encore faire un calcul basé sur le nombre de produits dans votre panier.

Bref, vous avez à présent totalement la main sur le calcul des frais de transport (smile)

Last updated

Was this helpful?