Jump to content

Variable order_name non remplacé dans les emails


Recommended Posts

Bonjour a tous !

 

Version de prestashop : 1.6.0.9

 

Je viens de m'apercevoir que mes clients reçoivent le mails 'in_transit' qui est envoyé automatiquement avec l'import du fichier dans le module Expeditor Inet avec les infos order_name qui ne sont pas remplacées. Voila ce que reçoit le client :

 

BONJOUR CLIENTS EXTERIEURS,  

COMMANDE {ORDER_NAME} - EN COURS D'EXPÉDITION

La livraison de votre commande ayant pour référence {order_name} est en cours. 

Vous pouvez suivre la progression de votre livraison à l'adresse suivante: http://www.colissimo.fr/portail_colissimo/xxx
    Vous pouvez accéder à tout moment au suivi de votre commande et télécharger votre facture dans "Historique des commandes" de la rubrique "Mon compte" sur notre site. Si vous avez un compte invité, vous pouvez suivre votre commande dans la section "Suivi invité" de notre site.

 

Pourtant la variable firstname, lastname et shop_name ont bien fonctionné.

Je sèche, je ne vois pas d'où vient le problème surtout que dans le mail 'preparation' order_name passe bien.

Merci de votre aide.

post-817393-0-24098500-1418761470_thumb.jpg

Link to comment
Share on other sites

Bonjour @ide-info,

 

Je ne comprends pas pourquoi le mode de paiement est en lien avec mon problème de variable order_name ? Peux tu m'éclairer ?

Edit : Après vérification dans le répertoire override/classes/ je n'ai pas de surcharge du fichier PaymentModule.php

Suite a des recherches c'est le fichier Paymentmodule.php qui contient la déclarations des variables utilisées dans les envois des mails. Est-ce bien cela ?

Edit 2 : Le paiement est effectué via le module officiel CM/CIC de prestashop.  Je n'ai pas pu constater ce problème avec le module Paypal car nous n'avons pas eu de paiement via ce module encore.

Merci.

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

Bonjour @ide-info,

 

Je ne comprends pas pourquoi le mode de paiement est en lien avec mon problème de variable order_name ? Peux tu m'éclairer ?

Edit : Après vérification dans le répertoire override/classes/ je n'ai pas de surcharge du fichier PaymentModule.php

Suite a des recherches c'est le fichier Paymentmodule.php qui contient la déclarations des variables utilisées dans les envois des mails. Est-ce bien cela ?

Edit 2 : Le paiement est effectué via le module officiel CM/CIC de prestashop.  Je n'ai pas pu constater ce problème avec le module Paypal car nous n'avons pas eu de paiement via ce module encore.

Merci.

Oui, c'est à partir de cette classe que la variable est envoyée.

 

Mais les modes de paiement peuvent surcharger la méthode puisqu'ils surcharge la classe PaymentModule.

 

J'utilise un module de paiement CIC aussi (me rappelle plus lequel) et pas de souci de ce côté là.

 

Pour paypal, vous pouvez toujours essayer en vous mettant sur la sandbox, et vous pourrez ainsi savoir si le problème est le même.

 

Bon après midi.

Edited by @ide-info (see edit history)
Link to comment
Share on other sites

Merci pour tes précisions.

 

Mais pourquoi lorsque je fais l'essai avec l'envoi du mail 'preparation' qui utilise aussi la variable order_name elle se trouve bien remplacé dans le mail et elle ne fonctionne pas pour l'envoi du mail 'in_transit' ?

 

PS : Pour mon test la commande a été effectuée avec le module chèque de prestashop, ça pourrait venir de la ?

Link to comment
Share on other sites

Il faut regarder l'aiguillage, les mails ne sont pas envoyés dans les mêmes conditions et n'ont pas forcément les mêmes variables.

 

Par contre je n'avais pas vu que le mail dépend d'un module, il faut vérifier si ce module envoie le mail directement, il se peut que le souci vienne de là.

 

De toute manière, cette variable n'est pas définie, elle n'est pas vide, elle est indéfinie, donc prends le problème à l'envers.

 

Regarde quel script appelle ce tpl de mail, et ensuite remonte jusqu'à trouver la déclaration des variables, et elle sera forcément manquante.

 

Bonne soirée.

Edited by @ide-info (see edit history)
Link to comment
Share on other sites

Je viens de gratter un peu dans le fichier.

 

'in_transit' est appelé par deux fichiers du module expeditorINet :

- admin\tabs\AdminExpeditor.php

- modules\expeditor\AdminExpeditor.php

 

Après je commence a être un peu paumé pour aller plus loin car je manque de pratique en php. J'ai sorti la partie du code qui fait appel a 'in_transit', c'est possible de jeter un œil ?

Merci.

/*

		 * Extract all needings informations

		 */

		 

		if (($keyId = array_search($this->columnName, $infos[0])) === false)

			return false;

		$keyShippingNumber = array_search('NumeroColis', $infos[0]);



		echo '<p>' . $this->l('List of orders recognized') . '</p>';

		echo '<ul>';



		unset($infos[0]); // delete csv header

		foreach ($infos as $info)

		{

			$id_order = eregi_replace($this->prefix, '', $info[$keyId]);

			$shipping_number = $info[$keyShippingNumber];



			$id_expeditor = ExpeditorModule::getByIdOrder($id_order);

			if (!is_numeric($id_expeditor)) continue;

			$expeditor = new ExpeditorModule($id_expeditor);

			$expeditor->is_send = 1;

			$expeditor->save();



			$order = new Order($id_order);

			// Avoid to make multiple submissions

			if (version_compare(_PS_VERSION_, '1.5.0.4') >= '0')

			{

				$id_order_carrier = Db::getInstance()->getValue('

				SELECT `id_order_carrier`

				FROM `'._DB_PREFIX_.'order_carrier`

				WHERE `id_order` = ' . (int)$id_order );

				

				$order_carrier = NULL;

				if ($id_order_carrier)

					$order_carrier = new OrderCarrier( $id_order_carrier );

			

				if ($order_carrier && !$order_carrier->tracking_number )

				{

					$order_carrier->tracking_number = $shipping_number;

					$order_carrier->update();

				}

			}

			else if ($order->shipping_number == '')

			{

				$order->shipping_number = $shipping_number;

				$order->update();

			}



				$customer = new Customer($order->id_customer);

				$carrier = new Carrier((int)$order->id_carrier, (int)$order->id_lang);

				$templateVars = array('{followup}' => str_replace('@', $shipping_number, $carrier->url));



				$history = new OrderHistory();

				$history->id_order = $id_order;

				$history->changeIdOrderState(Configuration::get('EXPEDITOR_STATE_IMP'), $id_order); // Shipping

				$history->id_employee = intval($cookie->id_employee);

				$history->addWithemail(true, $templateVars);

				

				global $_LANGMAIL;

				$templateVars = array(

					'{followup}' => str_replace('@', $shipping_number, $carrier->url),

					'{firstname}' => $customer->firstname,

					'{lastname}' => $customer->lastname,

					'{id_order}' => intval($order->id)

				);

				//send email with traking number

				$subject = 'Package in transit';

				if (Mail::Send(intval($order->id_lang), 'in_transit', ((is_array($_LANGMAIL) AND key_exists($subject, $_LANGMAIL)) ? $_LANGMAIL[$subject] : $subject), $templateVars, $customer->email, $customer->firstname.' '.$customer->lastname))

					echo '<br/>' . $this->l('Email send to') . ': ' . $customer->email;

				else

					echo '<br/>' . $this->l('Email faild to') . ': ' . $customer->email;

				echo '<li>' . $this->l('Order number') . ': ' . $id_order;

				echo '<br/>' . $this->l('Shipping number') . ': ' . $shipping_number;

				echo "</li>\n";

		}

		echo '</ul>';

		echo '

		<form action="index.php" method="get">

			<p>

				<input type="hidden" name="tab" value="AdminExpeditor" />

				<input type="hidden" name="token" value="'.Tools::getValue('token').'" />

				<input type="submit" value="'.$this->l('   Back   ').'" class="button" />

			</p>

		</form>';



		return true;

	}
Link to comment
Share on other sites

Bonjour,

 

A mon avis, après un coup d'oeil succint, il y a appareemnt un souci ici :

 

                $templateVars = array(

 

                    '{followup}' => str_replace('@', $shipping_number, $carrier->url),

 

                    '{firstname}' => $customer->firstname,

 

                    '{lastname}' => $customer->lastname,

 

                    '{id_order}' => intval($order->id)

 

                );

 

La variable est manquante. Il faudrait essayer :

 

 $templateVars = array(

 

'{order_name}' => $order->getUniqReference(),

 

                    '{followup}' => str_replace('@', $shipping_number, $carrier->url),

 

                    '{firstname}' => $customer->firstname,

 

                    '{lastname}' => $customer->lastname,

 

                    '{id_order}' => intval($order->id)

 

                );

 

 

 

Je pense que c'est un oubli du développeur de reporter cette variable.

 

Bonne journée.

Link to comment
Share on other sites

  • 3 months later...

Bonsoir,

 

Je viens au nouvelle sur ce problème que j'ai toujours. J'ai essayé de faire la modification proposé par @ide-info et d'autres qui n'ont rien donné !  :unsure:

Avez vous une autre idée d'où cela peux venir ? Les autres utilisateurs de ce module vous n'avez pas ce problème ?  :ph34r:

Link to comment
Share on other sites

Bonjour à toutes et tous,

 

J'ai un problème similaire à celui de Gatou avec quelques variables des mails envoyés au client. Pour commencer ma boutique a été développée par une agence, avec qui je ne travail plus actuellement, et après avoir fouiller à droite à gauche je ne pense pas que les mails de confirmation soient gérés de façon conventionnelle c'est à dire dans l'onglet commande>Statut.

J'utilise PS 1.5.5 en multiboutique avec module TNT et voici mon problème :

 

Mail paiement validé : les variables sont Ok ({firstname} {lastname} {shop_name} {order_name}

Mail commande validée : les variables sont Ok ({firstname} {lastname} {shop_name} {order_name}

Là ou ça commence à clocher c'est quand je passe en livraison :

Mail en cours de livraison : déjà il s'envoie quand je change le statut de la commande et les variables {order_date} {shipping_mode} et {shipping_number} ne s'affichent pas.

Ensuite un autre mail par expédition quand je renseigne le numéro de suivi TNT là le {shipping_number} est renseigné mais les {order_date} et {shipping_mode} restent absents.

 

Si vous pouviez me donner une piste où chercher car c'est embettant que mes clients aient un numéro de suivi sans savoir chez qui le suivre.

 

Pour conclure j'ajouterai que je n'ai que les connaissances que google et les forums ont pus m’apporter.

 

Merci à vous.

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

 

J'ai aussi le même problème : {order_name} à la place du numéro de la commande et en plus je n'ai même pas le lien sur le suivi. J'ai prestashop 1.6.0.14 et j'ai fait la dernière mise à jour du module Expeditor.

 

J'ai ouvert une demande de support à Prestashop puisque c'est eux qui développent le module Expeditor. Je vous tiendrai informé de la résolution de ce problème.

Link to comment
Share on other sites

  • 7 months later...

Bonjour,

moi aussi il y as que dans orderhistory.php

 

$topic = $result['osname'];

$data = array(
'{lastname}' => $result['lastname'],
'{firstname}' => $result['firstname'],
'{id_order}' => (int)$this->id_order,
'{order_name}' => $order->getUniqReference()
 
pour remplir les mail
 
j'ai ajouté livraison 
 
 
$carrier = new Carrier((int)($order->id_carrier), $order->id_lang);
 
 
$topic = $result['osname'];
$data = array(
'{lastname}' => $result['lastname'],
'{firstname}' => $result['firstname'],
'{id_order}' => (int)$this->id_order,
'{carrier}' => $carrier->name,
'{order_name}' => $order->getUniqReference()
 
et j'arrive a avoir 
Transporteur : Livraison à domicile
 
dans le retour apres status par contre  rien d'autre aucune ne fonctionne genre
 
 

Bonjour guillaume floch,
votre DEVIS sur MATSECOE  est en étude

 

 

Détails du DEVIS

Devis : FXNJHCPNN Date {date}

Etat : {payment}

 

Référence

Produit

Prix unitaire

Quantité

Prix total

{products}

  {discounts}

 

Produits

 

 

{total_products}

 

 

 

Réductions

 

 

{total_discounts}

 

 

Paquet cadeau

 

 

{total_wrapping}

 

 

Livraison

 

 

{total_shipping}

 

 

TVA totale

 

 

{total_tax_paid}

 

 

Total payé

 

 

32,40 €

 

 

Livraison

Transporteur : Livraison à domicile

Paiement : {payment}

 

 

 

Adresse de livraison

{delivery_block_html}

 

 

 

Adresse de facturation

{invoice_block_html}

 

 
idem pour le xcheque
 

 

Commande FXNJHCPNN - En attente des chèques

Nous avons bien enregistré votre commande ayant pour référence FXNJHCPNN. Celle-ci vous sera envoyée dès réception de votre paiement.

 

 

 

Vous avez choisi de payer par chèque en trois fois sans frais.

Voici les informations dont vous avez besoin pour effectuer le paiement :
Montant : 32,40 €
À l'ordre de : {cheque_name}
Veuillez envoyer votre chèque à l'adresse suivante : {cheque_address_html}

 

alors que le meme template pour cheque fonctionne
je cherche depuis 3 jours deja rien vu sur le net a ce propos
 
merci de nous trouver une raison 
a bientot
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...