Jump to content

[résolu] Ajout du message client sur l'email d'alerte de commande (avec V1.1 beta3)


jolvil

Recommended Posts

Je cherche à ajouter le message du client fait pendant le processus de commande sur l'email de notification de commande recu par le commercant.
Je suis en Beta 3
J'ai ajouté {order_message} dans new_order.html
et j'ai ajouté:
'{order_message}' => $order->order_message,
dans mailalerts.php
mais cela ne marche pas!
quelqu'un aurait il une piste? :roll:

-----------------------------------------------------------------------------

Problème résolu!

J'édite ce post pour joindre les fichiers avec les modifications apportées dans modules/mailalerts/mailalerts.php et modules/mailalerts/mails/fr/new_order.html et new_order.txt pour avoir le message client dans l'email d'alerte de commande.

-----------------------------------------------------------------------------

A noter que la fonctionnalité sera dispo pour la beta4

new_order.html

Link to comment
Share on other sites

Si vous dite que la variable {order_message} n'apparaît pas, c'est qu'elle a bien été remplacée !

Mais... par rien !
Donc le problème vient du fait que soit vous n'avez pas de message dans votre commande (je doute que vous ayez fait le test sans en mettre un), ou alors que la variable récupérée ($order->order_message) est vide.

Je regarde en détail et je vous dis cela.

Link to comment
Share on other sites

voila ce que j'ai dans mailalerts.php

        // Filling-in vars for mail
       $template = 'new_order';
       $subject = $this->l('New order');
       $templateVars = array(
       '{firstname}' => $customer->firstname,
       '{lastname}' => $customer->lastname,
       '{email}' => $customer->email,
       '{delivery_firstname}' => $delivery->firstname,
       '{delivery_lastname}' => $delivery->lastname,
       '{delivery_address1}' => $delivery->address1,
       '{delivery_address2}' => $delivery->address2,
       '{delivery_city}' => $delivery->city,
       '{delivery_postal_code}' => $delivery->postcode,
       '{delivery_country}' => $delivery->country,
       '{delivery_state}' => $delivery->id_state ? $delivery_state->name : '',
       '{delivery_phone}' => $delivery->phone,
       '{invoice_firstname}' => $invoice->firstname,
       '{invoice_lastname}' => $invoice->lastname,
       '{invoice_address2}' => $invoice->address2,
       '{invoice_address1}' => $invoice->address1,
       '{invoice_city}' => $invoice->city,
       '{invoice_postal_code}' => $invoice->postcode,
       '{invoice_country}' => $invoice->country,
       '{invoice_state}' => $invoice->id_state ? $invoice_state->name : '',
       '{invoice_phone}' => $invoice->phone,
       '{order_name}' => sprintf("d", $order->id),
       '{shop_name}' => Configuration::get('PS_SHOP_NAME'),
       '{date}' => $order_date_text,
       '{carrier}' => (($carrier->name == '0') ? Configuration::get('PS_SHOP_NAME') : $carrier->name),
       '{payment}' => $order->payment,
       '{items}' => $itemsTable,
       '{total_paid}' => Tools::displayPrice($order->total_paid, $currency),
       '{total_products}' => Tools::displayPrice($order->getTotalProductsWithTaxes(), $currency),
       '{total_discounts}' => Tools::displayPrice($order->total_discounts, $currency),
       '{total_shipping}' => Tools::displayPrice($order->total_shipping, $currency),
       '{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $currency),
       '{order_message}' => $order->order_message,
       '{currency}' => $currency->sign);
       Mail::Send($id_lang, $template, $subject, $templateVars, split(',', $this->_mails), NULL, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], NULL, NULL, dirname(__FILE__).'/mails/');
   }



et new_order.html que j'ai modifié, {order_message}est inséré en bas

>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>Nouvelle commande Asie-Shopping</title>
</head>
<body style="padding:20px; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 11px;">
   COMMANDE ASIE-SHOPPING n° {order_name}




   De: {firstname} {lastname}




   Date: {date}




   Mode de paiement: {payment}




</pre>
<table width="100%" cellpadding="5" cellspacing="0" style="border:1px solid #CCCCCC;">RéférenceQtéArticleP.U.Prix totalProduits{total_products}Réductions{total_discounts}Frais de port{total_shipping}Total{total_paid}</table>
<br><br><br>   Transporteur : <b>{carrier}</b><br><br><br><br><br><table width="100%" cellpadding="5" cellspacing="0" style="border:1px solid #CCCCCC;">Adresse de facturationAdresse de livraison{invoice_firstname} {invoice_lastname}

{invoice_address1}

{invoice_address2}

{invoice_city} {invoice_postal_code}

{invoice_country} {invoice_state}

{invoice_phone}{delivery_firstname} {delivery_lastname}

{delivery_address1}

{delivery_address2}

{delivery_city} {delivery_postal_code}

{delivery_country} {delivery_state}

{delivery_phone}</table>
<br><br><br><br><br><table width="100%" cellpadding="5" cellspacing="0" style="border:1px solid #CCCCCC;">Message client:{order_message}
</table>
<br><br><br></body><br></ht




J'ai refais un essai sans succés

Le message est bien enregisté et apparait sur le recapitulatif de commande du compte client

Link to comment
Share on other sites

En fait, c'est tout à fait normal : les messages de commandes constituent un objet métier à part, il n'existe donc pas de propriété order_message à un objet Order.

Donc vous ciblez du vide !

Rapidement, voici comment faire marcher votre ajout de code :

$sql = 'SELECT `message` FROM `'._DB_PREFIX_.'message` WHERE `id_order` = '.$order->id.' ORDER BY `id_message` desc LIMIT 1';
$result = Db::getInstance()->ExecuteS($sql);
$order_message = $result[0]['message'];



En fait, on fait une requète dans la base de données pour prendre le dernier message de la commande.
Puis on l'ajoute dans la liste des variables mails :

'{order_message}' => $order_message,


Ce code n'est pas très "propre", mais il est fonctionnel :-)

Link to comment
Share on other sites

Merci de l'avis de l'expert.

J'ai placé le 1er code au dessus de // Filling-in vars for mail dans mailalerts.php

et '{order_message}' => $order_message,

à la place de '{order_message}' => $order->order_message,


mais cela ne marche pas .

Est ce que j'ai bien placé le code?

Ou faut il le placer?

Merci (faut toujours que je pose des problemes pas simples! %-P )

Link to comment
Share on other sites

Bonjour,

Je viens de tester cette modification ; il est vrai qu’il est plus pratique, afin d’éviter de faire un oubli, de recevoir le message client fait au moment de la commande dans le mail.


J’ai fait exactement les mêmes modifications demandées ci-dessous et à chaque étape j’ai les mêmes conclusions que : Jolvil.


Pour la dernière modif, j’ai aussi le message END sur page blanche avec le header et la colonne de gauche.

Pas de mail de confirmation de commande, par contre celle-ci se retrouve bien dans les historiques codés BO et FO (historique de commandes)


...

Link to comment
Share on other sites

Bon, il semblerait qu'il faudrait que je dorme d'avantage...

J'avais oublié la ligne la plus importante dans le code que j'ai donné !
Jai corrigé cela (message édité), ainsi que sur les boutiques de jolvil et cameleon.

Ca devrait fonctionner pour vous aussi Korn651, en suivant mon précédent message.

Link to comment
Share on other sites

Salut merci pour tes fichiers, mais je reçois toujours un eMail qui indique qu'une commande a été passée, mais cet eMail n'a pas la même forme que new_order.html ! C'est vraiment étrange... quel serait la source du template de mon mail si c'est pas new_order.html ?

Link to comment
Share on other sites

Ah en fait j'ai compris, le template source de l'eMail utilisé se trouve dans boutique/mails/fr/new_order.html
Et celui qui se trouve dans /modules ne sert pas en fait.

C'est une erreur de ma version peut-être ? Je sais pas laquelle c'est...

Link to comment
Share on other sites

Je te déconseille de passer sur la beta3 en production surtout si tu veux utiliser toutes les nouvelles fonctions.

Certain fichiers sont à récupérer sur le SVN et soit attentif aussi bug traker.

Après c’est à toi de voir si tu es capable de faire face aux divers petits bug qui existent encore. ;)

Mais la mise en production de la beta3 n’est pas conseillée.

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...