Afficher l'email client sur les bons de livraison ou factures Prestashop

Tutorie / Astuce : Comment afficher l'email client sur les PDF PrestaShop ?

Cette demande est assez récurrente sur le forum officiel de Prestashop donc autant en faire un article pour s'y référer.

Le besoin

Ce tutoriel va vous expliquer en détail comment afficher simplement l'email des clients sur les documents PDF générés par PrestaShop lors des commandes.

Cette solution vous permettra d'afficher cette information à l'endroit qui vous conviendra le mieux en ne touchant qu'aux TPL des documents sans modification du code source de PrestaShop.

PrestaShop 1.6 / PrestaShop 1.7

L'application de l'astuce fonctionne pour toutes les versions de PrestaShop 1.6 et 1.7.

Pour personnaliser les bons de livraison, il vous suffira de choisir celui qui vous convient le mieux pour afficher l'information et mettre le code directement sur ce fichier.

Les fichiers TPL pour tous les documents PDF se trouvent dans le répertoire pdf/, tout simplement.

Leur dénomination est assez simple pour les identifier :

  • delivery-slip pour les bons de livraison
  • invoice pour les factures

Le document complet est composé de plusieurs fichiers TPL et donc à vous de tester l'emplacement qui vous convient le mieux pour afficher cette information.

Le code à insérer pour les bons de livraison

Tous ces documents comportent l'object order qui correspond à la classe Order.php où vous pourrez retrouver les données remontées par cet object.

Dans notre cas, nous allons nous appuyer sur une méthode proposée par la classe Order.php à savoir public function getCustomer().

Cette méthode n'étant pas déclarée comme static, nous pourrons tout de même l'appeler directement dans le fichier template puisque l'object order est transmis par la classe appelant le fichier TPL.

$this->smarty->assign(array(
    'order' => $this->order,    

Il vous suffit d'assigner le résultat de la méthode à une nouvelle variable dans votre template :

{assign var="customer" value=$order->getCustomer()}

Puis, dans votre TPL à l'emplacement que vous souhaitez, vous pourrez afficher l'information du client souhaitée, dans notre cas, l'adresse email :

{$customer->email}

Ce qui donne le code suivant à placer où vous le souhaitez :

{assign var="customer" value=$order->getCustomer()}
{$customer->email}

Le code à insérer pour les factures

Le code pour les factures est encore plus simple puisque l'object customer est passé directement au TPL, il vous suffit d'insérer la seconde partie du code pour afficher l'email où vous le souhaitez :

{$customer->email}

PrestaShop 1.5

Je n'ai pas effectué de tests sur cette version, n'hésitez pas à faire vos retours en commentaire pour savoir si cette astuce s'applique aussi à cette version.

Conclusion

Ce tutoriel vous présente la méthode employée pour arriver à l'affichage de l'information souhaitée, celle-ci pourra s'appliquer sur d'autres données dans d'autres TPL de Prestashop en étudiant les tableaux ou les object transmis à vos templates.