Jump to content
dubosd33

Envoi d'e-mail au transporteur après validation d'une commande

Recommended Posts

Bonjour,

Je partage et cherche en même temps comment avancer sur la problématique pour créer un Envoi automatique d'e-mail au transporteur après validation d'une commande.

Je veux envoyer un e-mail au transporteur car c'est un "retrait en magasin X", "retrait en magasin Y", "retrait en magasin Z".

Je n'ai pas trouver de module gratuit pouvant répondre à mes attentes, donc je vais rentrer dans le code.

 

Dans un premier temps je pense que je vais adapter le module "Alerte mail" pour envoyer un mail au transporteur (magasin) en fonction du choix du transporteur lors de la commande.

 

Dans un deuxième temps je rajouterai une zone de saisie e-mail dans le module transporteur.

 

Si quelqu'un à déjà avancer sur un sujet similaire je suis preneur de toutes infos et développement.

 

Base : Prestashop 1.6

Edited by dubosd33 (see edit history)

Share this post


Link to post
Share on other sites

Bonjour, vous pouvez faire un module utilisant le hook hookActionValidateOrder

Avec le paramètre $params de la function du hook dans votre module, vous pourrez récuperer des infos relatives à la commande et faire l'envoi de l'email en utilisant la methode send de la classe Mail.php

  • Like 1

Share this post


Link to post
Share on other sites

Pour la partie mail c'est fait :

dans modules >> mailalertes >> mailalertes.php

 

ligne : 444 ajouter le code en rouge

			if ($dir_mail)
				Mail::Send(
					$mail_id_lang,
					'new_order',
					sprintf(Mail::l('New order : #%d - %s', $mail_id_lang), $order->id, $order->reference),
					$template_vars,
					$merchant_mail,
					null,
					$configuration['PS_SHOP_EMAIL'],
					$configuration['PS_SHOP_NAME'],
					null,
					null,
					$dir_mail,
					null,
					$id_shop
				);
		}
//////////////  mail au transporteur sélectionné ///////////////////////////////////////////////
		if($carrier->name=='Boutique 1')
		 $merchant_mails='boutique1@boutique.fr';
		 
		 if($carrier->name=='Boutique 2')
		 $merchant_mails='boutique2@boutique.fr';
		 
			if($carrier->name=='Boutique 1' || $carrier->name=='Boutique 2'){	
			// Default language
			$mail_id_lang = $id_lang;
			$mail_iso = $iso;

			// Use the merchant lang if he exists as an employee
			$results = Db::getInstance()->executeS('
				SELECT `id_lang` FROM `'._DB_PREFIX_.'employee`
				WHERE `email` = \''.pSQL($merchant_mail).'\'
			');
			if ($results)
			{
				$user_iso = Language::getIsoById((int)$results[0]['id_lang']);
				if ($user_iso)
				{
					$mail_id_lang = (int)$results[0]['id_lang'];
					$mail_iso = $user_iso;
				}
			}

			$dir_mail = false;
			if (file_exists(dirname(__FILE__).'/mails/'.$mail_iso.'/new_order.txt') &&
				file_exists(dirname(__FILE__).'/mails/'.$mail_iso.'/new_order.html'))
				$dir_mail = dirname(__FILE__).'/mails/';

			if (file_exists(_PS_MAIL_DIR_.$mail_iso.'/new_order.txt') &&
				file_exists(_PS_MAIL_DIR_.$mail_iso.'/new_order.html'))
				$dir_mail = _PS_MAIL_DIR_;

			if ($dir_mail)
				Mail::Send(
					$mail_id_lang,
					'new_order',
					sprintf(Mail::l('Retrait en magasin chez '.$carrier->name.' : #%d - %s', $mail_id_lang), $order->id, $order->reference),
					$template_vars,
					$merchant_mail,
					null,
					$configuration['PS_SHOP_EMAIL'],
					$configuration['PS_SHOP_NAME'],
					null,
					null,
					$dir_mail,
					null,
					$id_shop
				);}
		
/////////// Fin  mail au transporteur sélectionné   ///////////////////////////////////////
		
	}

	public function hookActionProductOutOfStock($params)
  • Thanks 1

Share this post


Link to post
Share on other sites
On 4/6/2015 at 9:37 PM, dubosd33 said:

Pour la partie mail c'est fait :

dans modules >> mailalertes >> mailalertes.php

 

ligne : 444 ajouter le code en rouge


			if ($dir_mail)
				Mail::Send(
					$mail_id_lang,
					'new_order',
					sprintf(Mail::l('New order : #%d - %s', $mail_id_lang), $order->id, $order->reference),
					$template_vars,
					$merchant_mail,
					null,
					$configuration['PS_SHOP_EMAIL'],
					$configuration['PS_SHOP_NAME'],
					null,
					null,
					$dir_mail,
					null,
					$id_shop
				);
		}
//////////////  mail au transporteur sélectionné ///////////////////////////////////////////////
		if($carrier->name=='Boutique 1')
		 $merchant_mails='boutique1@boutique.fr';
		 
		 if($carrier->name=='Boutique 2')
		 $merchant_mails='boutique2@boutique.fr';
		 
			if($carrier->name=='Boutique 1' || $carrier->name=='Boutique 2'){	
			// Default language
			$mail_id_lang = $id_lang;
			$mail_iso = $iso;

			// Use the merchant lang if he exists as an employee
			$results = Db::getInstance()->executeS('
				SELECT `id_lang` FROM `'._DB_PREFIX_.'employee`
				WHERE `email` = \''.pSQL($merchant_mail).'\'
			');
			if ($results)
			{
				$user_iso = Language::getIsoById((int)$results[0]['id_lang']);
				if ($user_iso)
				{
					$mail_id_lang = (int)$results[0]['id_lang'];
					$mail_iso = $user_iso;
				}
			}

			$dir_mail = false;
			if (file_exists(dirname(__FILE__).'/mails/'.$mail_iso.'/new_order.txt') &&
				file_exists(dirname(__FILE__).'/mails/'.$mail_iso.'/new_order.html'))
				$dir_mail = dirname(__FILE__).'/mails/';

			if (file_exists(_PS_MAIL_DIR_.$mail_iso.'/new_order.txt') &&
				file_exists(_PS_MAIL_DIR_.$mail_iso.'/new_order.html'))
				$dir_mail = _PS_MAIL_DIR_;

			if ($dir_mail)
				Mail::Send(
					$mail_id_lang,
					'new_order',
					sprintf(Mail::l('Retrait en magasin chez '.$carrier->name.' : #%d - %s', $mail_id_lang), $order->id, $order->reference),
					$template_vars,
					$merchant_mail,
					null,
					$configuration['PS_SHOP_EMAIL'],
					$configuration['PS_SHOP_NAME'],
					null,
					null,
					$dir_mail,
					null,
					$id_shop
				);}
		
/////////// Fin  mail au transporteur sélectionné   ///////////////////////////////////////
		
	}

	public function hookActionProductOutOfStock($params)

J'ai un peu bidouillé le code, mais je suis arrivé au résultat que je voulais sur Prestashop 1.7.6.5, envoyer un email au transporteur ( magasin pour mon cas ) si le client choisi celui-ci grace à votre code, donc je vous remercie infiniment !! BIG UP !

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