Jump to content

Bon de réduction après une 1ère commande


Nesty

Recommended Posts

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

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

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

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

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

  • 9 months later...
  • 1 year later...

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 by D-A-Creation (see edit history)
Link to comment
Share on other sites

 

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 :D ). Dans quel fichier je pourrais faire ça par exemple, et à quelle ligne ?

Link to comment
Share on other sites

 

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...