26 Sep 2019

Ajouter l’email client dans les factures PDF de Prestashop 1.7

Mise à jour de l’article le 24/11/2020 : Mon article est maintenant adapté au version 1.7.6.8 et plus. Descendez un peu dans la page pour trouver l’information.

Un tutoriel et des fichiers pour permettre l’affichage de l’adresse mail client sur les factures de votre Prestashop 1.7.

Vous utilisez peut-être les factures clients PDF pour préparer les commandes ou encore pour la comptabilité. Si vous avez besoin de contacter votre client par mail, vous êtes obligé d’aller dans le compte client. Grâce à ce tutoriel Prestashop très simple vous allez pouvoir afficher l’e-mail du client sur vos factures PDF.

Créer un Override sur votre Prestashop

Vous allez devoir faire une surcouche du fichier HTMLTemplate.php sur votre serveur.
Il faut créer ce fichier dans : override -> classes -> PDF

Ensuite collez ceci dans votre fichier :

<?php

/*
Override add telephone on PDF Invoice
https://www.matthieu-jalbert.fr/
*/

abstract class HTMLTemplate extends HTMLTemplateCore {

public function assignCommonHeaderData()
{
$this->setShopId();
$id_shop = (int)$this->shop->id;
$shop_name = Configuration::get('PS_SHOP_NAME', null, null, $id_shop);
$path_logo = $this->getLogo();
$customer = new Customer((int)$this->order->id_customer);

$this->smarty->assign(array(
'logo_path' => $path_logo,

'img_update_time' => Configuration::get('PS_IMG_UPDATE_TIME'),
'date' => $this->date,
'title' => $this->title,
'shop_name' => $shop_name,
'shop_details' => Configuration::get('PS_SHOP_DETAILS', null, null, (int)$id_shop),
'width_logo' => $width,
'height_logo' => $height,
'customer_id' => sprintf("%04d", $customer->id),
'customer_email' => $customer->email
));
}
}

Je joins le fichier tout prêt : Override mail facture PDF PS (682 téléchargements )

Ensuite il faut afficher la variable {$customer_email} créé, dans la facture. Il faut aller à la racine de votre site, dans le dossier PDF. Cherchez ensuite le invoice.tpl.

Pour ma part je mets l’adresse mail sous l’adresse par exemple à la ligne 35 :

<!-- Invoicing -->
<tr>
<td colspan="12">
{$addresses_tab}
{$customer_email}
</td>
</tr>

Vous pouvez maintenant aller dans l’onglet commande et vérifier cela sur une facture.
Si cela ne s’affiche pas, pensez à vider le cache de votre Prestashop.

Mon logo disparaît sur la facture de mon Prestashop 1.7.6.8

Au vu des commentaires et des mails de la communauté, j’ai effectuait des recherches concernant ce problème, suite à mon tutoriel plus haut.

Lors des dernières mises à jour du CMS, l’appel des factures a changé et du coup, l’override au dessus n’est plus bon à partir de cette version.

Si vous êtes au minimum sur 1.7.6.8, ne vous préoccupez pas de mon explication au-dessus. Par contre cette astuce ci-dessous, fonctionne avec toutes les versions de Prestashop !

Rendez-vous dans classes/pdf/HTMLTemplateInvoice.php et à la ligne 346 rajoutez l’adresse client. Vous devez avoir cela :

$data = array(
'order' => $this->order,
'order_invoice' => $this->order_invoice,
'order_details' => $order_details,
'carrier' => $carrier,
'cart_rules' => $cart_rules,
'delivery_address' => $formatted_delivery_address,
'invoice_address' => $formatted_invoice_address,
'addresses' => array('invoice' => $invoice_address, 'delivery' => $delivery_address),
'tax_excluded_display' => $tax_excluded_display,
'display_product_images' => $display_product_images,
'layout' => $layout,
'tax_tab' => $this->getTaxTabContent(),
'customer' => $customer,
'footer' => $footer,
'ps_price_compute_precision' => _PS_PRICE_COMPUTE_PRECISION_,
'round_type' => $round_type,
'legal_free_text' => $legal_free_text,
'customer_email' => $customer->email,
);

Ensuite, modifiez l’adresse client dans /pdf/invoice.addresses-tab.tpl et ajoutez l’email :

<table id="addresses-tab" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">{if $delivery_address}<span class="bold">{l s='Delivery Address' d='Shop.Pdf' pdf='true'}</span><br/><br/>
{$delivery_address}<br />{$customer_email}
{/if}
</td>
<td width="50%"><span class="bold">{l s='Billing Address' d='Shop.Pdf' pdf='true'}</span><br/><br/>
{$invoice_address}<br />{$customer_email}
</td>
</tr>
</table>

Nous avons la même variable que dans ma 1er explication au début de l’article : {$customer_email}.
On l’ajoute tout simplement à la ligne de chaque adresse avec un retour à la ligne en HTML.

J’ai trouvé cette astuce sur le forum de Prestashop, j’ai juste ajusté certaine chose.

N’oubliez surtout pas de vider le cache de votre Prestashop.

Tenir une bonne comptabilité sur votre Prestashop

Vous savez maintenant comment rajouter cette option sur les factures dans Prestashop. Cependant il faut savoir qu’un site e-commerce doit suivre des “règles” de comptabilité. Une entreprise physique ou virtuelle est soumise aux mêmes lois. J’ai publié une vidéo pour parler de comptabilité. Tenez-vous informé pour ne rien oublier dans votre compta.