marco601 Posted February 3, 2014 Share Posted February 3, 2014 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 More sharing options...
Szed Posted February 3, 2014 Share Posted February 3, 2014 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 More sharing options...
marco601 Posted February 3, 2014 Author Share Posted February 3, 2014 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 More sharing options...
marco601 Posted February 3, 2014 Author Share Posted February 3, 2014 le nom du mail qu'envoie le module s'appelle merchant.html Link to comment Share on other sites More sharing options...
Szed Posted February 3, 2014 Share Posted February 3, 2014 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 More sharing options...
marco601 Posted February 3, 2014 Author Share Posted February 3, 2014 je peux vous passer le fichier php en PM peut-être? Link to comment Share on other sites More sharing options...
marco601 Posted February 3, 2014 Author Share Posted February 3, 2014 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 More sharing options...
Szed Posted February 3, 2014 Share Posted February 3, 2014 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 More sharing options...
marco601 Posted February 3, 2014 Author Share Posted February 3, 2014 je vous ai envoyé le fichier en message, car j'ai pas mal de getPossibleDeliveryDays(); cela sera peut-être plus simple pour faire une synthése pour vous Link to comment Share on other sites More sharing options...
Szed Posted February 3, 2014 Share Posted February 3, 2014 Votre MP est vide. Ce qu'il vous faut trouver c'est la fonction getPossibleDeliveryDays(){ //contenu de la fonction } pas chacun de ses appels. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now