Afficher l'email client sur les bons de livraison ou factures 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.
Discussions