Jump to content
Thierryh

Notification email lors d’une demande de retour produit

Recommended Posts

Bonjour
Y a t-il un moyen d'être informé automatiquement par email qu'un client vient de demander le retour d'un produit ?
A ma connaissance le module Mail Alert ne permet pas cela .

Merci
Thierry

Share this post


Link to post
Share on other sites

Bonjour,

Je ne sais pas si tu as trouvé une réponse, mais je me suis posé la même question, et en cherchant un peu sur le forum je n'ai pas trouvé de réponse... Pourtant c'est une demande régulière depuis longtemps, apparemment. Et ça me semble indispensable d'être prévenu illico d'une demande de retour !

Du coup plutôt que de continuer à chercher je l'ai ajouté en reprenant l'envoi de message juste en dessous, "Ajouter un message".

J'utilise prestashop 1.3.4.0
J'ai ajouté dans order-follow.php, à la racine du site, à la ligne 38, c'est à dire juste après

Tools::redirect('order-follow.php?errorQuantity');


et juste avant

$orderReturn->state = 1;


le code suivant :

    
       $message = new Message();
   $message->id_customer = intval($cookie->id_customer);
   $message->message = $orderReturn->question;
   $message->id_order = intval($id_order);
   $message->private = false;
   $message->add();
   if (!Configuration::get('PS_MAIL_EMAIL_MESSAGE'))
       $to = strval(Configuration::get('PS_SHOP_EMAIL'));
   else
   {
       $to = new Contact(intval(Configuration::get('PS_MAIL_EMAIL_MESSAGE')));
       $to = strval($to->email);
   }
   $toName = strval(Configuration::get('PS_SHOP_NAME'));
   $customer = new Customer(intval($cookie->id_customer));
   if (Validate::isLoadedObject($customer))
       Mail::Send(intval($cookie->id_lang), 'order_return_asked', 'Message from a customer', 
       array(
       '{lastname}' => $customer->lastname, 
       '{firstname}' => $customer->firstname, 
       '{id_order}' => intval($message->id_order), 
       '{message}' => $message->message),
       $to, $toName, $customer->email, $customer->firstname.' '.$customer->lastname);



Ce code est similaire, donc, à celui qui se trouve dans order-detail.php

puis j'ai créé deux nouveaux modèles d'email, order_return_asked.txt et order_return_asked.html, (si vous les appelez autrement attention à remplacer 'order_return_asked' dans le code lors de l'appel de la méthode Send) que j'ai placé dans /mails/fr, inspirés de order_merchant_comment.txt et .html, mais qui dit en substance Vous avez reçu une demande de retour produit concernant la commande n°

Voilà, en espérant que ça aidera quiconque ferait la même recherche que moi :-)
Sans doute que cette fonctionnalité est ajoutée dans 1.4, je ne suis pas allé voir, mais il y a du monde qui va continuer à tourner sous 1.3, non...

Share this post


Link to post
Share on other sites

Bonjour Blinblin
et un grand merci pour votre réponse.

Vous indiquez qu'il faut ajouter votre code dans order-follow.php, à la ligne 38.
Pour être bien sur du numéro de ligne, pouvez-vous confirmer que c'est après la ligne

Tools::redirect('order-follow.php?errorQuantity');


et avant la ligne suivante

$orderReturn->state = 1;



?

Confirmez-vous ?

Concernant PS 1.4, j'ai regardé le build de décembre, et plus exactement /controllers/OrderFollowController, et je n'ai nullement trouvé d'instruction qui notifiait le commercant par email.

Merci
Thierry

Share this post


Link to post
Share on other sites

Oui Thierry, je confirme que c'est bien entre ces deux lignes-là.

J'ai édité mon message en conséquence, afin qu'on puisse l'utiliser sans hésitation, merci pour la remarque.

Je vais aller voir ton module, Patanok, je ne connaissais pas. Très bonne idée d'y ajouter la notification de retour produit, c'est franchement utile...

Share this post


Link to post
Share on other sites

Merci bcp pr cette contribution !! Fonctionnement OK :-)

Share this post


Link to post
Share on other sites

Bonjour à tous,

Je viens de faire la manipulation à savoir : intégration du code cité ci-dessus dans OrderFollowController.php puis création des deux mails.

Le hic, ça ne fonctionne pas :(
- le mail qui reçoit l'avertissement doit être celui paramétré dans le module alertes email ?
- est-ce que quelqu'un a déjà testé cela sur la version 1.4 ?

Merci d'avance

Share this post


Link to post
Share on other sites

Bonjour à tous

J'ai moi aussi la version 1.4 et je ne sais pas comment faire.
Quelqu'un a une idée ?

Merci d'avance

Share this post


Link to post
Share on other sites

je viens de faire la manip sur presta 1.4. Cela fonctionne, je reçois biens le mail mais le n° de commande affiche toujours 0. Bon d'accord on a le nom du client et son mail mais si quelqu'un de la team a une idée ça m'arrangerai...

Pour info je n'ai pas pris le code cité plus haut, mais j'ai pris celui de la version 1.4 de order-detail.php copié dans OrderFollowController.php à partir de la ligne 68:

                    $message = new Message();
                   $message->id_customer = (int)(self::$cookie->id_customer);
                   $message->message = $orderReturn->question;
                   $message->id_order = (int)($idOrder);
                   $message->private = false;
                   $message->add();
                   if (!Configuration::get('PS_MAIL_EMAIL_MESSAGE'))
                       $to = strval(Configuration::get('PS_SHOP_EMAIL'));
                   else
                   {
                       $to = new Contact((int)(Configuration::get('PS_MAIL_EMAIL_MESSAGE')));
                       $to = strval($to->email);
                   }
                   $toName = strval(Configuration::get('PS_SHOP_NAME'));
                   $customer = new Customer((int)(self::$cookie->id_customer));
                   if (Validate::isLoadedObject($customer))
                       Mail::Send((int)(self::$cookie->id_lang), 'order_customer_return', Mail::l('Demande de retour produit'),
                       array(
                       '{lastname}' => $customer->lastname,
                       '{firstname}' => $customer->firstname,
                       '{email}' => $customer->email,
                       '{id_order}' => (int)($message->id_order),
                       '{message}' => $message->message),
                       $to, $toName, $customer->email, $customer->firstname.' '.$customer->lastname);



et un exemple de mail en html (a éditer également en txt), avec l'{id_order} qui ne marche pas:

>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>Message d'un client pour une demande de retour de {shop_name}</title>
</head>
<body>
</pre>
<table style="font-family:Verdana, sans-serif;font-size:11px;color:#374953;width:550px;">

 Bonjour, Message de {firstname} {lastname} ({email}) 
Vous avez reçu une demande de retour concernant sa commande n°{id_order} pour la raison suivante:



               {message}
 
{shop_name}™
</table>
<br></body><br></ht

Share this post


Link to post
Share on other sites

je viens de faire la manip sur presta 1.4. Cela fonctionne, je reçois biens le mail mais le n° de commande affiche toujours 0. Bon d'accord on a le nom du client et son mail mais si quelqu'un de la team a une idée ça m'arrangerai...

 

Pour info je n'ai pas pris le code cité plus haut, mais j'ai pris celui de la version 1.4 de order-detail.php copié dans OrderFollowController.php à partir de la ligne 68:

					$message = new Message();
				$message->id_customer = (int)(self::$cookie->id_customer);
				$message->message = $orderReturn->question;
				$message->id_order = (int)($idOrder);
				$message->private = false;
				$message->add();
				if (!Configuration::get('PS_MAIL_EMAIL_MESSAGE'))
					$to = strval(Configuration::get('PS_SHOP_EMAIL'));
				else
				{
					$to = new Contact((int)(Configuration::get('PS_MAIL_EMAIL_MESSAGE')));
					$to = strval($to->email);
				}
				$toName = strval(Configuration::get('PS_SHOP_NAME'));
				$customer = new Customer((int)(self::$cookie->id_customer));
				if (Validate::isLoadedObject($customer))
					Mail::Send((int)(self::$cookie->id_lang), 'order_customer_return', Mail::l('Demande de retour produit'),
					array(
					'{lastname}' => $customer->lastname,
					'{firstname}' => $customer->firstname,
					'{email}' => $customer->email,
					'{id_order}' => (int)($message->id_order),
					'{message}' => $message->message),
					$to, $toName, $customer->email, $customer->firstname.' '.$customer->lastname);

 

et un exemple de mail en html (a éditer également en txt), avec l'{id_order} qui ne marche pas:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Message d'un client pour une demande de retour de {shop_name}</title>
</head>
<body>






















							[url="{shop_url}"][img={shop_logo}][/url]
																	 											Bonjour,											 											Message de {firstname} {lastname} ({email})											 											
							[b]Vous avez reçu une demande de retour concernant sa commande n°{id_order} pour la raison suivante:[/b]



							{message}

							[url="{shop_url}"]{shop_name}™
						[/url]			

</body>
</html>

 

Bonjour à tous,

 

J'ai exactement le même problème ...

Si quelqu'un a trouvé la solution, je suis preneur ;)

 

Merci d'avance.

Share this post


Link to post
Share on other sites

C'est bon j'ai trouvé ...

Il suffit de remplacer :

$message->id_order = (int)($idOrder);

par

$message->id_order = $orderReturn->id_order;

Share this post


Link to post
Share on other sites

super great merci !! Petit résumé et nettoyage ...

 

sur 1.4.7.3 je l'ai mis ligne 64 apres

 

Tools::redirect('order-follow.php?errorQuantity');

 

comme l'indiquait blinblin

 

j'ai corrigé avec l'aide isouport et ca donne :

 

 

$message = new Message();
$message->id_customer = (int)(self::$cookie->id_customer);
$message->message = $orderReturn->question;
$message->id_order = $orderReturn->id_order;
$message->private = false;
$message->add();
if (!Configuration::get('PS_MAIL_EMAIL_MESSAGE'))
$to = strval(Configuration::get('PS_SHOP_EMAIL'));
else
{
$to = new Contact((int)(Configuration::get('PS_MAIL_EMAIL_MESSAGE')));
$to = strval($to->email);
}
$toName = strval(Configuration::get('PS_SHOP_NAME'));
$customer = new Customer((int)(self::$cookie->id_customer));
if (Validate::isLoadedObject($customer))
Mail::Send((int)(self::$cookie->id_lang), 'order_customer_return', Mail::l('Demande de retour produit'),
array(
'{lastname}' => $customer->lastname,
'{firstname}' => $customer->firstname,
 '{email}' => $customer->email,
'{id_order}' => (int)($message->id_order),
 '{message}' => $message->message),
$to, $toName, $customer->email, $customer->firstname.' '.$customer->lastname);

 

+ creer fichiers:

order_customer_return.html

order_customer_return.text

 

 

super post ! merci à tous

Edited by shopme (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Bonjour a tous

 

Merci pour cette super solution

 

cordialement

Share this post


Link to post
Share on other sites

Pour PRESTASHOP 1.5.x

 

Modifiez le fichier : /controllers/front/OrderFollowController.php

 

Ligne 41 :

if (Tools::isSubmit('submitReturnMerchandise'))

{.....

 

Ajouter à l'intérieur du if l'envoi d'un email :

 

if (Tools::isSubmit('submitReturnMerchandise'))

{

mail('votreadresse@mail.fr' , 'NOUVEAU RETOUR PRODUIT' , 'NOUVEAU RETOUR PRODUIT');

 

;)

Share this post


Link to post
Share on other sites

bonjour,

 

je n'y arrive pas, pourtant je suis les modif proposées dans le topic, je ne reçois pas le mail.

 

Version 1.4.9.0

 

merci pour votre aide

Share this post


Link to post
Share on other sites

Pour PRESTASHOP 1.5.x

 

Modifiez le fichier : /controllers/front/OrderFollowController.php

 

Ligne 41 :

if (Tools::isSubmit('submitReturnMerchandise'))

{.....

 

Ajouter à l'intérieur du if l'envoi d'un email :

 

if (Tools::isSubmit('submitReturnMerchandise'))

{

mail('votreadresse@mail.fr' , 'NOUVEAU RETOUR PRODUIT' , 'NOUVEAU RETOUR PRODUIT');

 

;)

 

Bonjour,

 

Je relance le topic.

 

La modification dans le fichier /controllers/front/OrderFollowController.php fonctionne bien mais le nom de l'expéditeur ne correspond pas au nom de ma boutique. Il me renvoie le nom de ma base ?

 

Y-a t'il un moyen de lui spécifier le nom de ma boutique ?

 

Peut-être existe t'il un module spécifique maintenant ?

 

Merci d'avance

 

Nicolas

  • Like 1

Share this post


Link to post
Share on other sites

Moi j'ai fait développer un module par un prestataire qui tourne sur ce forum, il faut voir avec lui peut être...

Share this post


Link to post
Share on other sites

Bonjour,

 

Nous avons mis sur l'addons un module qui permet en cas de retour produit de recevoir un email avec le contenu du retour.

http://addons.prestashop.com/fr/transport-logistique-livraison-modules-prestashop/9493-email-de-retour-produit.html

Ainsi le webmarchand est prévenu et peut donc agir en conséquence.

Cordialement,

 

Arthur

Share this post


Link to post
Share on other sites

Acheter un module à 30€HT pour une fonctionnalité de base, je trouve cela moyen.

Share this post


Link to post
Share on other sites

Pour PRESTASHOP 1.5.x

 

Modifiez le fichier : /controllers/front/OrderFollowController.php

 

Ligne 41 :

if (Tools::isSubmit('submitReturnMerchandise'))

{.....

 

Ajouter à l'intérieur du if l'envoi d'un email :

 

if (Tools::isSubmit('submitReturnMerchandise'))

{

mail('votreadresse@mail.fr' , 'NOUVEAU RETOUR PRODUIT' , 'NOUVEAU RETOUR PRODUIT');

 

;)

 

Merci pour le tuyo. Ça marche pareil sous Prestashop 1.6. J'ai juste un peu customisé pour ajouter l'adresse d'expéditeur et chercher dynamiquement une adresse e-mail d'un contact SAV :

$contact = new Contact(1, 1); // on cherche le contact SAV ayant l'id 1, langue id 1 (FR)
$subject = "Nouveau retour produit";
$headers = 'From: ' . $contact->email . "\r\n" .
'Reply-To: ' . $contact->email . "\r\n" .
 'X-Mailer: PHP/' . phpversion();
mail($contact->email, $subject , 'Bonjour. Nouveau retour produit. Rendez-vous dans le back-office pour de plus amples informations.',$headers);

Je n'ai besoin que du français et je n'ai qu'un contact SAV donc j'ai tout mis en dur. J'ai essayé en utilisant la classe Mail de Prestashop mais ça n'a pas marché.

Share this post


Link to post
Share on other sites

Bonjour,

 

Etant sur 1.5 de Prestashop, je me suis mis à modifier mon code comme indiqué ci-dessus.

 

Toutefois, après les modifications effectuées, rien ne se passe. Je me demande si j'ai bien effectué la manip' ou si il manque quelque chose dans mon paramétrage ?

 

- Faut-il activer le module "Alertes mails" sur le BO Prestashop ?

- Si j'ai bien compris, j'ai juste mon mail à renseigner dans le code ?

 

 

Voici le bout de mon code :

 

public function postProcess()
    {
        if (Tools::isSubmit('submitReturnMerchandise'))
        {
        mail('info@mes-jambes.fr' , 'NOUVEAU RETOUR PRODUIT' , 'NOUVEAU RETOUR PRODUIT');
            $customizationQtyInput = Tools::getValue('customization_qty_input');
            if (!$id_order = (int)(Tools::getValue('id_order')))
                Tools::redirect('index.php?controller=history');
            if (!$order_qte_input = Tools::getValue('order_qte_input'))
                Tools::redirect('index.php?controller=order-follow&errorDetail1');
            if (!$customizationQtyInput && $customizationIds = Tools::getValue('customization_ids'))
                Tools::redirect('index.php?controller=order-follow&errorDetail1');
            if (!$customizationIds && !$ids_order_detail = Tools::getValue('ids_order_detail'))
                Tools::redirect('index.php?controller=order-follow&errorDetail2');

Share this post


Link to post
Share on other sites

Début du topic : 2010 et encore des questions en 2014... C'est quand même dingue que Presta n'ait pas mis ça en place nativement. Effectivement à 30 € le petit module pour ceux comme moi qui n'ont pas du tout envie de mettre les mains dans le code car d'une version à l'autre ça change, ça peut rapporter. Imaginons 1000 nouveaux petits e-commerçants par mois qui achètent le module à 30 € HT, ça fait quand même 30 000 € HT dans la poche. Heu, j'imagine que le petit module développé a largement été rentabilisé. 

Mais comme je suis une petite grouillotte qui comprend rien au code et qui n'a pas envie de s'embêter à essayer de comprendre (oui, chacun son métier), je vais l'acheter. Mais attention : si il bug, je crierai au scandale, voire à l'arnaque.

 

Autre point par rapport à ces bons retours, si je veux éviter d'envoyer un mail au client pour l'avertir de chaque changement de statut, eh bien pas possible en version 1.5.6.2... alors que cela est paramétrable très facilement dans le BO pour les e-mails de commande... 

Share this post


Link to post
Share on other sites

Début du topic : 2010 et encore des questions en 2014... C'est quand même dingue que Presta n'ait pas mis ça en place nativement. Effectivement à 30 € le petit module pour ceux comme moi qui n'ont pas du tout envie de mettre les mains dans le code car d'une version à l'autre ça change, ça peut rapporter. Imaginons 1000 nouveaux petits e-commerçants par mois qui achètent le module à 30 € HT, ça fait quand même 30 000 € HT dans la poche. Heu, j'imagine que le petit module développé a largement été rentabilisé. 

Mais comme je suis une petite grouillotte qui comprend rien au code et qui n'a pas envie de s'embêter à essayer de comprendre (oui, chacun son métier), je vais l'acheter. Mais attention : si il bug, je crierai au scandale, voire à l'arnaque.

 

Autre point par rapport à ces bons retours, si je veux éviter d'envoyer un mail au client pour l'avertir de chaque changement de statut, eh bien pas possible en version 1.5.6.2... alors que cela est paramétrable très facilement dans le BO pour les e-mails de commande... 

Bonjour cela ne fonctionne pas sur 1.6 ou alors j'ai mal compris la manoeuvre.

Share this post


Link to post
Share on other sites

Bonjour,

 

Je suis en 1.6.0.11 et j'ai ajouté ceci dans OrderFollowController.php dans controllers/front/

$contact = new Contact(1, 1); // on cherche le contact SAV ayant l'id 1, langue id 1 (FR)
$subject = "Nouveau retour produit";
$headers = 'From: ' . $contact->email . "\r\n" .
'Reply-To: ' . $contact->email . "\r\n" .
 'X-Mailer: PHP/' . phpversion();
mail($contact->email, $subject , 'Bonjour. Nouveau retour produit. Rendez-vous dans le back-office pour de plus amples informations.',$headers);
	

juste avant

		Hook::exec('actionOrderReturn', array('orderReturn' => $orderReturn));
			Tools::redirect('index.php?controller=order-follow'); 

Ce n'est pas l'idéal absolu puisque ca sautera en cas de mise à jour mais au moins pour le moment on est prévenu d'un éventuel retour :)

 

Si ca peut aider....

 

Stéphane

Edited by panthere31 (see edit history)

Share this post


Link to post
Share on other sites

Bonjour,

Y-a-t-il un moyen d'être notifié des demandes de retour sur Prestashop 1.7 ?

Merci.

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More