Nesty Posted May 28, 2012 Share Posted May 28, 2012 Bonjour à tous, J'ai effectué plusieurs recherches sur Google, sans trouver la solution correspondant à ma demande, peut-être pourrez-vous m'aider ? Merci par avance ! Je souhaiterai qu'après avoir passé une première commande, mes clients reçoivent un bon de réduction valable sur leur prochaine commande. J'ai regardé du côté des groupes, mais un "client" est considéré comme tel à partir du moment où il s'inscrit et pas seulement s'il a passé commande. Auriez-vous une piste de réflexion sur ce sujet ? Comment procéder pour créer un bon de réduction valable uniquement après une première commande ? Encore merci par avance et bonne journée ! Link to comment Share on other sites More sharing options...
olea Posted May 28, 2012 Share Posted May 28, 2012 Une technique est la suivante : - en back-office, définir un bon de réduction avec les caractéristiques voulues (par exemple, valable 1 fois par client) - éditer le mail de confirmation de commande (ou de confirmation de paiement, pour ajouter une phrase du style "pour votre 1ere commande, nous vous offrons ce bon de réduction valable sur l'une de vos prochaines commandes : XXXXX" Link to comment Share on other sites More sharing options...
intgate Posted May 28, 2012 Share Posted May 28, 2012 et à la 2ieme commande tu fais comment ? ton texte reste dans le mail Link to comment Share on other sites More sharing options...
olea Posted May 28, 2012 Share Posted May 28, 2012 Dans la solution plus haut oui. Sinon, dans le mail, il faut remplacer le texte+le code du bon par une variable de mail "{texte_bon_premiere_comande}" et dans le fichier qui appelle le mail initialiser cette variable soit avec le texte, soit en chaine vide, en testant le le client a déjà passé commande. Habituellement, la technique plus haut s'applique à l'inscription du client : un code est envoyé dans le mail de confirmation d'inscription et est valable sur une commande (la 1ere ou une des suivante) Link to comment Share on other sites More sharing options...
Nesty Posted May 28, 2012 Author Share Posted May 28, 2012 Merci beaucoup pour votre réactivité ! La réducation ne s'appliquant qu'à partir de la deuxième commande, j'ai donc ajouté le texte dans le mail de confirmation de paiement. En effet par contre, si la personne commande une 2ème, 3ème fois, etc... le message d'informations concernant le bon de réduction s'affichera toujours (mais, si je ne me trompe pas, le bon ne sera plus valable, puisqu'il est valable une fois par client ?) Je verrai pour mettre en place la solution + travaillée, avec condition sur le nombre de commandes, mais pour le moment j'ai fait au plus simple et plus rapide, de façon à ce que ce soit fonctionnel. A votre avis, cela risque-t-il d'être gênant pour l'utilisateur ? Merci encore ! Link to comment Share on other sites More sharing options...
Nesty Posted May 30, 2012 Author Share Posted May 30, 2012 Bonjour, Je cherche à mettre en place la seconde solution mais je ne sais pas dans quels fichiers insérer le code nécessaire. Pourriez-vous me dire dans quel fichier se fait l'envoi de mail ? Pour rappel, mon message est contenu dans le mail de confirmation du paiement. Merci par avance ! Link to comment Share on other sites More sharing options...
olea Posted May 30, 2012 Share Posted May 30, 2012 Il me semble qu'il faut regarder dans Classes/OrderHistory.php, methode addWithEmail() Link to comment Share on other sites More sharing options...
MurielAB Posted March 13, 2013 Share Posted March 13, 2013 Bonjour, Je ne suis pas encore experte en programmation, est-ce qu'il existe un tuto ou un moyen de le faire sans trop de risques ? Merci d'avance Link to comment Share on other sites More sharing options...
D-A-Creation Posted December 25, 2014 Share Posted December 25, 2014 (edited) Salut à tous ! Je me pose également la même question. Prestashop ne fait pas la distinction entre une personne qui s'inscrit sans acheter, et une autre qui passe sa première commande. Du coup, le code de réduction fonctionne d'office dès l'inscription du client, mais ce n'est pas ce que je veux. Ce code de réduction doit s'activer après le paiement de la première commande du client.Alors comment faire ? Edited December 25, 2014 by D-A-Creation (see edit history) Link to comment Share on other sites More sharing options...
D-A-Creation Posted December 26, 2014 Share Posted December 26, 2014 Vous créez un module dans lequel vous utilisez le hook ValidateOrder Quand un client valide une commande on verifie si c'est la première, si oui on envoie un email, si non on fait rien. Le hook devrait ressembler à ça : public function hookActionValidateOrder($params) { $sql = "SELECT id_customer FROM `"._DB_PREFIX_."order` WHERE valid = 1 AND id_customer = ".(int)$params[id_customer]." "; if( Db::getInstance()->getValue( $sql ) ) return false else J'envois mon mail avec le bon de réduction } Ok, mais on va partir sur le fait que je n'y connais rien en codage (ce qui est totalement vrai ). Dans quel fichier je pourrais faire ça par exemple, et à quelle ligne ? Link to comment Share on other sites More sharing options...
Eolia Posted December 27, 2014 Share Posted December 27, 2014 Vous créez un module dans lequel vous utilisez le hook ValidateOrder Quand un client valide une commande on verifie si c'est la première, si oui on envoie un email, si non on fait rien. Le hook devrait ressembler à ça : public function hookActionValidateOrder($params) { $sql = "SELECT id_customer FROM `"._DB_PREFIX_."order` WHERE valid = 1 AND id_customer = ".(int)$params[id_customer]." "; if( Db::getInstance()->getValue( $sql ) ) return false else J'envois mon mail avec le bon de réduction } hum.. ça ne vérifie pas que c'est la 1ère commande du client. Un count() serait nécessaire dans la table ps_order sur les commandes validées. public function hookActionValidateOrder($params) { $sql = "SELECT COUNT(id_customer) FROM `"._DB_PREFIX_."order` WHERE valid = 1 AND id_customer = ".(int)$params[id_customer]." "; if( Db::getInstance()->getValue( $sql ) == 1 ) { //Création du bon de réduction //et envoi du mail } return false; } Link to comment Share on other sites More sharing options...
Recommended Posts