E-mail Différent pour chaque statut d'une commande virtuemart

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • E-mail Différent pour chaque statut d'une commande virtuemart

    Je suis sous Virtuemart 1.1 et joomla 1.5.9, FAITE BIEN UNE SAUVEGARDE DES FICHIERS AVANT DE FAIRE UNE MODIF

    Bonjour tout le monde,

    Voici le petit soucis, j'aimerais que l'e-mail qui est envoyé lors du changement de statut d'une commande soit différent en fonction du statut.

    Car on est bien d'accord, le mail de base est pas super, et surtout c'est le même pour les changements de statuts, il y a juste le nom du statut qui change.

    J'aimerai connaitre les modifs à faire dans le fichier ps_order, voici ce que j'ai trouvé dans le forum joomla :

    Est ce qu'une âme charitable pourrait me donner l'astuce..... c'est tellement plus facile hihi

    Ou sinon je vais être obligé de la faire et je suis fainéant..... sandrine ou asgard vous avez pas l'astuce !!! Au pire pour ceux que ca intéresse je posterais l'astuce la semaine prochaine.

    Willwidooo


    15 jours plus tard...

    Bon dans le fichier administrator/components/com_virtuemart/classes/ps_order.php

    à la ligne 334 ou trouvez : // MAIL BODY
    en dessous de cette ligne il y la composition du mail qui sera envoyé au client à chaque changement de statut, cet email est toujours le même, il y a seulement une valeur qui est changé "l'état de la commande". Confirmé, annulé, en attente, refusé etc...

    On va donc créer un email pour chaque statut qui nous intéresse, pour cela on supprime tout le code de la ligne 335 à la ligne 364 ou de // MAIL BODY à /* Send the email */
    et on le remplace par
    Code:
    $mailStatus = $db->f("order_status_code");
    		
    $TypeMail = 'txt';
    		
    // Message en Fonction de la mise à jour du Statut
    	switch ($mailStatus) {
    // Confirmée
    	case 'C' :
    	$TypeMail = 'html';
    	$message = $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_C',false);
    				
    // Sujet du Mail
    $mail_Subject = 'Votre commande n° '. $d["order_id"] . ' vient d\'être confirmée';
    				
    break;
    				
    // Annulée
    case 'X' :
    $TypeMail = 'html';
    $message = $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_X',false);
    				
    // Sujet du Mail
    $mail_Subject = 'Votre commande n° '. $d["order_id"] . ' vient d\'être Annulée';
    
    break;
    				
    // Colis envoyé
    case 'S' :
    $TypeMail = 'html';
    $message = $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_S',false);
    				
    // Sujet du Mail
    $mail_Subject = 'Votre commande n° '. $d["order_id"] . ' vient d\'être expédiée';
    				
    break;
    				
    // Refusé
    case 'R' :
    $TypeMail = 'html';
    $message = $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_R',false);
    				
    // Sujet du Mail
    $mail_Subject = 'Votre commande n° '. $d["order_id"] . ' vient d\'être refusée';
    				
    				break;
    				
    // Par défaut
    default :
    $message = $VM_LANG->_('HI',false) .' '. $db->f("first_name") .' '. $db->f("last_name") . ",\n\n";
    $message .= $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_1',false)."\n\n";
    				
    				if( !empty($d['include_comment']) && !empty($d['order_comment']) ) {
    $message .= $VM_LANG->_('PHPSHOP_ORDER_HISTORY_COMMENT_EMAIL',false).":\n";
    $message .= $d['order_comment'];
    $message .= "\n____________________________________________________________\n\n";
    				}
    				
    $message .= $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_2',false)."\n";
    $message .= "____________________________________________________________\n\n";
    $message .= $db->f("order_status_name");
    $message .= "\n____________________________________________________________\n\n";
    $message .= $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_3',false)."\n";
    $message .= $url;
    $message .= "\n\n____________________________________________________________\n";
    $message .= $dbv->f("vendor_name") . " \n";
    $message .= $mosConfig_live_site."\n";
    $message .= $dbv->f("contact_email");
    				
    $message = str_replace( "{order_id}", $d["order_id"], $message );
    				
    // Sujet du Mail
    $mail_Subject = str_replace( "{order_id}", $d["order_id"], $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_SUBJ',false));
    			
    		}
    		
    // Remplacement des variables par leurs valeurs
        	$message = str_replace('#NomCli',   	$db->f("last_name"), $message);
        	$message = str_replace('#PrenomNomCli', $db->f("first_name"), $message);
        	$message = str_replace('#NumCde',  $d["order_id"], $message);
    		
    		if( !empty($d['include_comment']) && !empty($d['order_comment']) ) {
    			$message = str_replace('#Commentaire', $d['order_comment'], $message);
    		}
    		else {
    			$message = str_replace('#Commentaire', '', $message);
    		}
    		
    	   	$mail_Body = html_entity_decode($message);
    		
    		if ($TypeMail == 'html') {
    			$result = vmMail( $dbv->f("contact_email"),  $dbv->f("vendor_name"), 
    						$db->f("user_email"), $mail_Subject, $mail_Body, '', 1 );
    		}
    		else {
    			$result = vmMail( $dbv->f("contact_email"),  $dbv->f("vendor_name"), 
    						$db->f("user_email"), $mail_Subject, $mail_Body, '');
    		}
    En clair tout le code dans ce style : PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_C
    correspond à des récupérations de texte dans le fichier :
    administrator/components/com_virtuemart/languages/common/french.php

    Il suffit de rajouter autant de ligne que vous aurez besoin d'emails différents. Pour l'exemple que j'utilise j'ai configuré 4 statuts avec mails personnalisés, j'ai donc dans le code 4 lots dont un voici un:
    Code:
    // Confirmée
    	case 'C' :
    	$TypeMail = 'html';
    	$message = $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_C',false);
    				
    // Sujet du Mail
    $mail_Subject = 'Votre commande n° '. $d["order_id"] . ' vient d\'être confirmée';
    				
    break;
    La c'est le code pour le statut confirmée (c'est le nom que je lui ai donné, peut importe le nom du statut) mais ce qui est important c'est la lettre qui correspond au statut, vous pouvez trouvez l'infos dans la base de donnée dans la table heuuu jos_vm_order_status ou quelque part dans virtuemart.

    l'order statut code, est important car au début du code que je vous fais changer, je récupère la lettre pour qu'on puisse ensuite l'identifier pour l'envoi du mail.

    Code:
    Case 'C' :
    la lettre C correspond à mon order statut code qui correspond à l'order statut name.(dans le cas énoncé c'est CONFIRMEE)
    Code:
    $TypeMail = 'html';
    Pour que l'email soit en html
    Code:
    $message = $VM_LANG->_('PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_C',false);
    On doit donc rajouter cette ligne dans le ficheir french : PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_C

    et comme valeur vous mettez du code html qui composera votre email ex:
    Code:
    'PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_C' => '
    	<html>
    	<body>
    	<div align="center">
    
    <table border="0" width="560" cellspacing="0" cellpadding="0" bordercolor="#000000">
    	<tr>
    		<td>
    		<p align="center">
    		</td>
    	</tr>
    	<tr>
    		<td style="border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-bottom-style: solid; border-bottom-width: 1px">
    		<p align="center"><b><font color="#4A4A4A">Bonjour </font>
    		<font color="#3275C2">#PrenomNomCli #NomCli</font><font color="#4A4A4A">,<br>
    		<br>
    		Votre commande n° </font><font color="#3275C2">#NumCde</font><font color="#4A4A4A"> 
    		a été confirmée dans son intégralité. <br>
    		Nous vous tiendrons informé prochainement de l\'expédition de votre 
    		colis.<br>
    		<br>
    		</font><font color="#3275C2">#Commentaire</font><font color="#4A4A4A"><br>
    		<br>
    		Merci pour votre visite sur notre site internet .<br>
    		<br>
    		Nous espérons vous revoir très bientôt.</font></b></td>
    	</tr>
    </table>
    </div>
    
    </body>
    
    </html>',
    Les 4 valeurs en rouge correspondent à celle qu'on récupère de la commande,
    #PrenomNomCli : prénom du client
    #NomCli : nom du client
    #NumCde : numéro de commande
    #Commentaire : le commentaire que vous pouvez inscrire au moment du changement de statut

    Grace au #commentaire bien situé, on peut dans le cas d'un statut "Colis Envoyé", rajouté le numéro de colissimo au client dans la case commentaire de la commande. Et ca fait super classe.

    Ah oui
    Code:
    // Sujet du Mail
    $mail_Subject = 'Votre commande n° '. $d["order_id"] . ' vient d\'être confirmée';
    				
    break;
    C'est le sujet du mail qui sera envoyé, vous pouvez le personnalisé. La le rendu sera :
    "Votre commande n° 48512 vient d'être confirmée".

    Pour finir vous n'êtes pas obligé de personnalisé chaque statut, si vous mettez un statut non-personnalisé sur une commande , ca va envoyer l'e-mail de base de virtuemart.

    J'espère que ca servira à d'autre personne, que j'ai été assez explicite, et QUE CA MARCHE CHEZ VOUS!!!
    Dernière édition par willwidooo à 04/03/2009, 23h00 Raison: Voila l'astuce.... merci au frangin

  • #2
    ouaouh merci will !!

    Pas le temps de tester ce soir, mais ce sera fait cette semaine !

    Commentaire


    • #3
      Pq ça ne marche pas chez moi?

      Bonjour,
      Ton explication me parait très claire et très logique, j'ai donc fait de même sur mon site de test en local, j'ai ajouté un statut Pending en rapport au statut_code P, j'ai mis les commentaires dans le fichier French.php etc comme décrit, puis ... rien!
      Qu'aurais-je bien pu faire de travers?
      N'étant pas sûr que le fichier ps_order soit appelé autant lors de la mise à jour du statut que lors de la création de la commande, j'ai aussi adapté le fichier ps_checkout en ajoutant juste une trace pour voir si ça apparaitrait dans ma confirmation de commande, puis ... toujours rien!
      J'ai installé JoomFish (mais pas encore eu le temps de le paramétrer) , y aurait-il un rapport?
      Merci d'avance.

      Commentaire


      • #4
        La solution

        Envoyé par khoyoht Voir le message
        Bonjour,
        Ton explication me parait très claire et très logique, j'ai donc fait de même sur mon site de test en local, j'ai ajouté un statut Pending en rapport au statut_code P, j'ai mis les commentaires dans le fichier French.php etc comme décrit, puis ... rien!
        Qu'aurais-je bien pu faire de travers?
        N'étant pas sûr que le fichier ps_order soit appelé autant lors de la mise à jour du statut que lors de la création de la commande, j'ai aussi adapté le fichier ps_checkout en ajoutant juste une trace pour voir si ça apparaitrait dans ma confirmation de commande, puis ... toujours rien!
        J'ai installé JoomFish (mais pas encore eu le temps de le paramétrer) , y aurait-il un rapport?
        Merci d'avance.
        En fait, il manque un ptit truc dans l'explication, je n'ai pas le code du statut de la commande au moment du switch{ case, car dans la requête qui précède on ne prend que le nom du statut, il faut simplement rajouter le morceau en rouge dans la requête juste avant le switch{ case (vers la ligne 310):
        $q = "SELECT first_name,last_name,user_email,order_status_name,order_status_code FROM #__{vm}_order_user_info,#__{vm}_orders,#__{vm}_ord er_status ";

        Commentaire


        • #5
          Je confirme, OK chez moi, avec la modif de khoyoht

          Juste un plus, que j'ai ajouté, car je voulais conserver l'insertion de l'url de la commande.

          A ajouter dans le ps_order.php, sous le commentaire "// Remplacement des variables par leurs valeurs" :

          Code PHP:
          $message str_replace('#url'$url$message); 
          A ajouter dans le fichier french.php, dans le corps du mail :

          Code PHP:
          Pour voir les détails de votre commandecliquez sur le lien suivant (ou copiez-le dans votre navigateur) :<br>
                  <
          a href="#url">#url</a> 
          Merci encore à will !

          Commentaire


          • #6
            Merci pour l'oubli khoyoht !!!

            C'est sur que ca marche mieux quand on rajoute order_status_code dans la requête...


            Willwidooo

            Commentaire


            • #7
              willwidooo, khoyoht, DragonJoli beau travail, vous êtes des chefs!!!
              Merci, grâce à vous, j'ai mantenant des mails qui ressemblent à quelque chose !
              Sans vouloir abuser, es-ce que l'un d'entre vous aurait une idée du nom de la variable qui contient l'url du logos de la boutique ?
              Je le rajouterai bien dans le texte du mail et dans les affectations de variable, histoire de faire encore un peu plus BÔ

              Commentaire


              • #8
                Ah ça m'intéresse aussi moi l'url du logo !

                Commentaire


                • #9
                  Envoyé par DragonJoli Voir le message
                  Ah ça m'intéresse aussi moi l'url du logo !
                  salut dragonjoli

                  en attendant de trouver l'adersse du logo si ça peut te faire gagner du temps, à toi ou à quelques 'NewBilles' comme moi, voici le code que j'ai rajouté dans le email pour placer le logo en haut du mail .

                  'PHPSHOP_ORDER_STATUS_CHANGE_SEND_MSG_C' => '
                  <html>
                  <body>
                  <div align="center"><font face="Comic Sans MS"><a
                  href="http://www.atita38.fr"><img alt="Atita38.eu"
                  src="http://www.atita38.fr/templates/kodadesign/images/joomla_logo.png" border="0"
                  </a><br>
                  <a href="http://www.atita38.fr">La boutique Atita38.fr</a><br>
                  <br> <br> <br> <br>
                  </font></div>


                  <div align="center">
                  <table border="0" width="560" cellspacing="0" cellpadding="0" bordercolor="#000000">

                  -> le rouge+mauve est le texte rajouté
                  -> le mauve est à changer avec vos url du logo, du site et vos textes .... quoi que !!! si vous me faites un peu de pub je dis pas !!!
                  -> <a href="http://www.atita38.fr">La boutique Atita38.fr</a><br> sert à mettre en texte le nom et le lien du site , sous le logo, pour les 'clients de messagerie' qui bloquent les images.

                  Il doit surement exister de meilleures solutions car justement lorsque je reçois un accusé de réception de commande, mon client de messagerie ne bloque pas le logo en haut alors qu'avec ma methode il le bloque ... mais pour l'intant je ne sais pas faire autrement.
                  By By.

                  Commentaire


                  • #10
                    ah oui effectivement, le rajouter "en dur", c'est une solution que j'aurais fini par adopter, je vais faire ça oki, merci !
                    Et on verra plus tard si on trouve autre chose hein !

                    Merci !

                    Commentaire


                    • #11
                      aide modification fichier langue

                      Bonjour,
                      super, c'est vraiement génial, je vais pouvoir avoir moi aussi des mails corrects.
                      J'ai par contre un petit problème.
                      Dès que je modifie le fichier langue de VM, je n'ai plus accès à VM en backend. Joomla ok mais VM non.
                      Même si je copie exactement le texte de willwidoo ou un texte brut tout simple, l'accès au composant VM ne fonctionne plus.
                      Quelqu'un peut-il m'aider. Je ne dois pas insérer la ligne correctement, mais je ne vois pas où

                      merci pour votre aide

                      p.s. : j'ai joomla 1.5.7 et VM 1.1.2
                      Dernière édition par bertrand à 23/04/2009, 10h58
                      amateur averti

                      Commentaire


                      • #12
                        autant pour moi,
                        j'avais comme un idiot oublié un caractère, donc bug. Normal.
                        dur dur le php, il faut vraiment être attentif, surtout pour un ignare comme moi

                        encore bravo pour cette modif
                        amateur averti

                        Commentaire


                        • #13
                          bonjour

                          j ai tout suivi a la lettre mais y a un truc qui m echappe cette partie

                          <html>
                          <body>
                          <div align="center">

                          <table border="0" width="560" cellspacing="0" cellpadding="0" bordercolor="#000000">
                          <tr>
                          <td>
                          <p align="center">
                          </td>
                          </tr>
                          <tr>
                          <td style="border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-bottom-style: solid; border-bottom-width: 1px">
                          <p align="center"><b><font color="#4A4A4A">Bonjour </font>
                          <font color="#3275C2">#PrenomNomCli #NomCli</font><font color="#4A4A4A">,<br>
                          <br>
                          Votre commande n° </font><font color="#3275C2">#NumCde</font><font color="#4A4A4A">
                          a été confirmée dans son intégralité. <br>
                          Nous vous tiendrons informé prochainement de l\'expédition de votre
                          colis.<br>
                          Pour voir les détails de votre commande, cliquez sur le lien suivant (ou copiez-le dans votre navigateur) :<br>
                          <a href="#url">#url</a>
                          <br>
                          </font><font color="#3275C2">#Commentaire</font><font color="#4A4A4A"><br>
                          <br>
                          Merci pour votre visite sur notre site internet .<br>
                          <br>
                          Nous espérons vous revoir très bientôt.</font></b></td>
                          </tr>
                          </table>
                          </div>

                          </body>

                          </html>',

                          on doit la mettre dans quel fichier

                          Commentaire


                          • #14
                            dans le fichier french.php du dossier administrator\components\com_virtuemart\languages\ common
                            amateur averti

                            Commentaire


                            • #15
                              merci pour la reponse
                              je viens de tout faire ca marche nickel
                              un grand merci a tous

                              Commentaire

                              Annonce

                              Réduire
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins
                              Travaille ...
                              X