Bonjour,
Je fais appel à vous car je bloque sur un problème. Je suis en train de mettre en place les retours produits sur mon site et cela fonctionne, seulement j'aimerais aller un peu plus loin dans la configuration. Je m'explique, j'ai ajouté des États de retour pour les produits et chaque fois que je change d'état pour la demande de retour cela envoi un mail au client et jusque là cela me convient. Ce qui ne me convient plus c'est le contenu du mail. Je souhaiterais pouvoir envoyer un mail différent adapté à chaque état de retour comme le fait Prestashop avec les États de commande.
J'ai identifié la partie de code qui génère l'envoi de ce mail, à savoir dans le fichier \controllers\admin\AdminReturnController.php :
if ($orderReturn->save()) {
$orderReturnState = new OrderReturnState($orderReturn->state);
$vars = array(
'{lastname}' => $customer->lastname,
'{firstname}' => $customer->firstname,
'{id_order_return}' => $id_order_return,
'{state_order_return}' => (isset($orderReturnState->name[(int)$order->id_lang]) ? $orderReturnState->name[(int)$order->id_lang] : $orderReturnState->name[(int)Configuration::get('PS_LANG_DEFAULT')]));
Mail::Send((int)$order->id_lang, 'order_return_state', Mail::l('Your order return status has changed', $order->id_lang),
$vars, $customer->email, $customer->firstname.' '.$customer->lastname, null, null, null,
null, _PS_MAIL_DIR_, true, (int)$order->id_shop);
if (Tools::isSubmit('submitAddorder_returnAndStay')) {
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token.'&updateorder_return&id_order_return='.(int)$id_order_return);
} else {
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token);
}
}
Je voudrais rajouter dans la condition if au moment de l'enregistrement de l'État, la vérification de l'État du retour pour envoyer le mail qui correspondra. Bien sur il faudra faire la modification dans un override.
J'ai essayé ceci, mais cela ne fonctionne pas, est-ce qu'il faut déclarer avant ma variable ? et si oui j'aimerais savoir où svp ?
if ($orderReturn->save() && id_order_return_state == 6) {
$orderReturnState = new OrderReturnState($orderReturn->state);
$vars = array(
'{lastname}' => $customer->lastname,
'{firstname}' => $customer->firstname,
'{id_order_return}' => $id_order_return,
'{state_order_return}' => (isset($orderReturnState->name[(int)$order->id_lang]) ? $orderReturnState->name[(int)$order->id_lang] : $orderReturnState->name[(int)Configuration::get('PS_LANG_DEFAULT')]));
Mail::Send((int)$order->id_lang, 'order_return_state', Mail::l('Your order return status has changed', $order->id_lang),
$vars, $customer->email, $customer->firstname.' '.$customer->lastname, null, null, null,
null, _PS_MAIL_DIR_, true, (int)$order->id_shop);
if (Tools::isSubmit('submitAddorder_returnAndStay')) {
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token.'&updateorder_return&id_order_return='.(int)$id_order_return);
} else {
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token);
}
}
Le but après et de faire des elseif pour tous mes états.
Auriez-vous une idée svp ? Si ce n'est pas clair, n'hésitez pas à me poser des questions !
Vous en remerciant par avance.
Julien