Jump to content

Envoi du bon de commande par e-mail ne fonctionne pas


Recommended Posts

Bonjour à tous, 

J'essaie de configurer Prestashop 1.7.8.7 pour que lorsqu'une commande est passée le bon de commande soit envoyé à l'adresse mentionnée dans "Notifications pour le marchand" du module "Alertes par e-mail". Les commandes avec lesquels j'ai fait les test sont en mode "Paiement accepté" et "En cours de préparation". J'ai bien coché les cases "Joindre le bon de livraison PDF à l'e-mail." et "Afficher le PDF de bon de livraison." L'e-mail me parvient bien mais je n'ai pas de fichier pdf du bon de commande en annexe ou de lien pour le télécharger. Est-ce que j'ai oublié de configurer quelque chose ailleurs peut-être ?

Merci tout plein pour votre aide. 

Edited by Julyen (see edit history)
Link to comment
Share on other sites

8 hours ago, Eolia said:

Le module MailAlerts n'a jamais envoyé de facture en pièce-jointe, il faut modifier son code si vous voulez que ce soit le cas.

Merci pour ces clarifications, il faut dire que les libellés sont trompeurs... Enfin je pensais au moins obtenir un lien dans l'e-mail pour télécharger le bon de livraison. Demander à la logistique de se loguer dans le back-office c'est pas tellement envisageable. Y aurait-il une manière de procéder pour au moins obtenir un lien pour télécharger le bon de livraison ?

Link to comment
Share on other sites

Il faut modifier le code du module pour le mettre en pièce-jointe lors de l'envoi du mail.

Code à insérer avant

if ($dir_mail)
                Mail::Send(

            if ($order->invoice_number || $order->delivery_number) {

                $file_attachement = array();

                if ((int)Configuration::get('PS_INVOICE') && $order->invoice_number) {
                    $order_invoice_list = $order->getInvoicesCollection();
                    Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list));
                    $pdf = new PDF($invoice, PDF::TEMPLATE_INVOICE, $this->context->smarty);
                    $file_attachement['invoice']['content'] = $pdf->render(false);
                    $file_attachement['invoice']['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang, null, $order->id_shop).sprintf('%06d', $order->invoice_number).'.pdf';
                    $file_attachement['invoice']['mime'] = 'application/pdf';
                }
                if ($order->delivery_number) {
                    $pdf = new PDF($invoice, PDF::TEMPLATE_DELIVERY_SLIP, $this->context->smarty);
                    $file_attachement['delivery']['content'] = $pdf->render(false);
                    $file_attachement['delivery']['name'] = Configuration::get('PS_DELIVERY_PREFIX', $this->context->language->id, null, $order->id_shop).sprintf('%06d', $order->delivery_number).'.pdf';
                    $file_attachement['delivery']['mime'] = 'application/pdf';
                }
            } 
            else {
                $file_attachement = null;
            }

 

Edited by Eolia (see edit history)
Link to comment
Share on other sites

27 minutes ago, Eolia said:

Il faut modifier le code du module pour le mettre en pièce-jointe lors de l'envoi du mail.

Code à insérer avant

if ($dir_mail)
                Mail::Send(

            if ($order->invoice_number || $order->delivery_number) {

                $file_attachement = array();

                if ((int)Configuration::get('PS_INVOICE') && $order->invoice_number) {
                    $order_invoice_list = $order->getInvoicesCollection();
                    Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list));
                    $pdf = new PDF($invoice, PDF::TEMPLATE_INVOICE, $this->context->smarty);
                    $file_attachement['invoice']['content'] = $pdf->render(false);
                    $file_attachement['invoice']['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang, null, $order->id_shop).sprintf('%06d', $order->invoice_number).'.pdf';
                    $file_attachement['invoice']['mime'] = 'application/pdf';
                }
                if ($order->delivery_number) {
                    $pdf = new PDF($invoice, PDF::TEMPLATE_DELIVERY_SLIP, $this->context->smarty);
                    $file_attachement['delivery']['content'] = $pdf->render(false);
                    $file_attachement['delivery']['name'] = Configuration::get('PS_DELIVERY_PREFIX', $this->context->language->id, null, $order->id_shop).sprintf('%06d', $order->delivery_number).'.pdf';
                    $file_attachement['delivery']['mime'] = 'application/pdf';
                }
            } 
            else {
                $file_attachement = null;
            }

 

Merci infiniment pour l'info et le code. J'ai bien ajouté le code dans "ps_emailalerts.php" avant les lignes 527 et 938 mais je ne reçois toujours pas de bon de livraison par en fichier joint. Y a-t-il autre chose en prendre en considération ?

Link to comment
Share on other sites

Ah si, un peu plus bas:

Dans l'envoi du mail ($file_attachement est forcé à null)

remplacez 

Mail::Send(
                    $mail_id_lang,
                    'new_order',
                    sprintf(Mail::l('New order : #%d - %s', $mail_id_lang), $order->id, $order->reference),
                    $template_vars,
                    $merchant_mail,
                    null,
                    $configuration['PS_SHOP_EMAIL'],
                    $configuration['PS_SHOP_NAME'],
                    null,
                    null,
                    $dir_mail,
                    null,
                    $id_shop
                );

Par

Mail::Send(
					$mail_id_lang,
					'new_order',
					sprintf(Mail::l('New order : #%d - %s', $mail_id_lang), $order->id, $order->reference),
					$template_vars,
					$merchant_mail,
					null,
					$configuration['PS_SHOP_EMAIL'],
					$configuration['PS_SHOP_NAME'],
                    			$file_attachement,
					null,
					$dir_mail,
					null,
					$id_shop
				);

 

Edited by Eolia (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...