Jump to content

Notification email lors d’une demande de retour produit


Recommended Posts

  • 1 month later...

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

Link to comment
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

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

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

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

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

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

Link to comment
Share on other sites

  • 10 months later...

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.

Link to comment
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
Link to comment
Share on other sites

  • 4 weeks later...
  • 1 month later...
  • 6 months later...
  • 5 months later...
  • 3 weeks later...

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('[email protected]' , 'NOUVEAU RETOUR PRODUIT' , 'NOUVEAU RETOUR PRODUIT');

 

;)

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 months later...

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('[email protected]' , '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
Link to comment
Share on other sites

  • 2 months later...

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

Link to comment
Share on other sites

  • 6 months later...

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('[email protected]' , '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é.

Link to comment
Share on other sites

  • 1 month later...

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('[email protected]' , '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');

Link to comment
Share on other sites

  • 2 months later...

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

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

Link to comment
Share on other sites

  • 4 months later...
  • 3 months later...

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)
Link to comment
Share on other sites

  • 5 years later...

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