Jump to content

variable dans le mail new_order.html ps 1.5.6.0


Recommended Posts

Bonjour,

je cherche à ajouter une variable dans le mail de confirmation de commande envoyé au marchant sous ps 1.5.6.0

j'ai un module de Samdha qui s'appelle deliverydays qui permet au client de choisir son jour de livraison.

Problème le module envoie un mail separé de la confirmation de commande.

 

Bonjour {firstname} {lastname}, voici la date de livraison demandés pour la commande {id_order}.
{delivery_day}

 

Je souhaiterais pouvoir récupérer cette variable {delivery_day} directement dans le mail de confirmation de commande. Donc ajouter au fichier new_order.html du module Mailalert cette variable. Cela  affiche la variable dans le mail, donc il semble qu'il faille déclarer cette variable dans smarty

 

Je ne suis pas vraiment familier avec smarty, si quelqu'un pouvait me rensiegner sur le problème

merci beaucoup par avance de votre aide

 

Link to comment
Share on other sites

Ce n'est pas vraiment un problème à régler avec smarty, mais plus avec le module MailsAlertes

 

Il vous faut modifier le module MailsAlertes pour rajouter cette variable dans la liste des variables déclarer lors de l'envoie du mails.

 

Mais pour obtenir cette variable dans le module MailsAlertes il faudra surement récupérer la fonction de votre module Samdha  (je ne sais pas si je suis clair) ou au moins le bout de php qui s'occupe de récupérer ce délai.

 

Côté MailsAlertes, cela se passe dans mailalerts.php, dans la fonction hookActionValidateOrder.

L'ensemble des variables disponible pour le mail sont défini dans un tableau $template_vars ligne 352

Link to comment
Share on other sites

merci de votre réponse

c'est également ce que je pensais qu'il fallait ajouter simplement la variable dans le mailalerts.php

en gros ici

 

// Filling-in vars for email
        $template = 'new_order';
        $template_vars = array(
            '{firstname}' => $customer->firstname,
            '{lastname}' => $customer->lastname,

             .........

 

reste à savoir qu'elle est la fonction à ajouter du module deliverydays

 

je pense que cela  se trouve dans ce bout de code?

 

public function hookNewOrder($params) {
            $this->getConfig();
            $delivery_day = $this->getDate($params['order']->id_cart, false);

            if ($delivery_day
                && $this->config[$this->shortName.'_id_employee']) {
                $employee = new Employee((int)$this->config[$this->shortName.'_id_employee']);

                if (Validate::isLoadedObject($employee)) {
                    $id_lang = Configuration::get('PS_LANG_DEFAULT');
                    $vars = array('{id_order}' => $params['order']->id,
                                  '{delivery_day}' => Tools::displayDate($delivery_day['date'], $id_lang).($delivery_day['timeframe']?' '.$delivery_day['timeframe']:''),
                                  '{firstname}' => $employee->firstname,
                                  '{lastname}' => $employee->lastname,
                                  );

                    Mail::Send($id_lang,
                               'merchant',
                               $this->l2('Delivery date for order', $id_lang).' '.$params['order']->id,
                               $vars,
                               $employee->email,
                               $employee->firstname.' '.$employee->lastname,
                               NULL, NULL, NULL, NULL, $this->mailPath);
                }
            }

            if ($delivery_day
                && $this->config[$this->shortName.'_mailcustomer']) {
                $customer = $params['customer'];

                if (Validate::isLoadedObject($customer)) {
                    $id_lang = $params['order']->id_lang;
                    $vars = array('{id_order}' => $params['order']->id,
                                  '{delivery_day}' => Tools::displayDate($delivery_day['date'], $id_lang).($delivery_day['timeframe']?' '.$delivery_day['timeframe']:''),
                                  '{firstname}' => $customer->firstname,
                                  '{lastname}' => $customer->lastname,
                                  );
           

Link to comment
Share on other sites

La variable delivery_day est définit par :

$delivery_day = $this->getDate($params['order']->id_cart, false);

Ca appelle donc une fonction getDate qui doit être un peu plus loin dans le module, et lui passe 2 paramètre : l'id du panier/commande, et un autre à false. Il vous faut donc trouver la fonction getDate pour voir ce qu'elle fait.

 

Ensuite, la date est formaté à l'aide de la ligne : Tools::displayDate($delivery_day['date'], $id_lang).($delivery_day['timeframe']?' '.$delivery_day['timeframe']:'')

Link to comment
Share on other sites

sinon j'ai trouvé cela:

public function getDate($id_cart, $check = true) {
			$result = false;
			if (is_object($id_cart))
				$id_cart = $id_cart->id;
			$sql = 'SELECT `date_delivery`, `timeframe` FROM `'._DB_PREFIX_.'deliverydays_cart` WHERE id_cart = '.(int) ($id_cart);
			$date = Db::getInstance()->getRow($sql);
			if ($date) {
				if ($check) {
					$dates = $this->getPossibleDeliveryDays();
					if (in_array($date['date_delivery'], $dates))
						$result = array('date' => $date['date_delivery'], 'timeframe' => $date['timeframe']);
				} else
					$result = array('date' => $date['date_delivery'], 'timeframe' => $date['timeframe']);
			}
			return $result;
		}

Link to comment
Share on other sites

Ok pour getDates();

Et maintenant, il faut aller chercher cette fonction : $dates = $this->getPossibleDeliveryDays(); En espérant qu'elle ne vas pas aire encore appel à une autre fonction de la classe, sinon ca commencera à faire beaucoup de chose à copier ^^

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