Jump to content

module anniversaire -> code du bon de reduction


Recommended Posts

Bonjour,

j'ai un petit soucis avec le module Cadeau d'anniversaire v1.0.
Le module génère des codes de bon de réduction lorsque c'est l'anniversaire d'un client. Le problème est que ces codes sont tous identiques et s'appellent "birthday".
Alors lorsqu'un client veux utiliser ce bon il a le message suivant:

Il y a 1 erreur :
1. ce bon de réduction a expiré (limite d'usage atteinte)

Comment faire pour générer des codes de bon de réductions différents?

Link to comment
Share on other sites

Bon j'ai réussi à résoudre le problème.

Dans birthdaypresent.php, dans la fonction createTodaysVouchers(),
il suffit d'attribuer un nom aléatoire au bon de réduction.
Pour cela lorsque l'on assigne le nom du bon, $voucher->name = "birthday"
il faut remplacer birthday par un code aléatoire, ainsi tous les bons auront des noms différents.

Ça à l'air de marcher ainsi.

Par contre je viens de m'apercevoir, en faisant des tests, que l'on peut changer sa date d'anniversaire et ainsi bénéficier de plusieurs bons de réduction! C'est vraiment très gênant, surtout que les bons de réduction des anniversaires sont cumulables! Je vais regarder ça ^^

Link to comment
Share on other sites

  • 3 months later...
  • 2 months later...

Bonjour,
Je ne suis pas du tout un spécialiste. C'est un informaticien qui se charge des mises en place et corrections. Cette gestion anniversaire n'est pas encore en place mais devrait se faire prochainement. Selon lui, ce serait l'ID client qui serait concaténé au "Birthday" aux dernières nouvelles, car ce serait beaucoup plus simple. Alors, si cela peut vous aider en attendant ... j'en serais ravi !

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

Même problème pour moi. Les clients dont c'est l'anniversaire reçoivent bien leurs bons de réductions mais ils ne peuvent pas l'utiliser !

Quand ils tentent de le faire ils obtiennent le message d'erreur suivant :

Il y a 1 erreur : 01. vous ne pouvez pas utiliser ce bon de réduction

Les clients sont frustrés et nous écrivent, à ce moment là je leur crée un autre bon ou j'applique le montant de la réduction s'ils ont déjà commandé. C'est vraiment galère et je vais désinstaller le module tant qu'il n'y a pas de solution.

Je ne sais pas comment rendre aléatoire le nom du bon de réduction.

Quelqu'un pourrait-il nous expliquer ?

Merci d'avance.

Link to comment
Share on other sites

  • 2 months later...
  • 3 weeks later...

Bonjour,

Je me permets de faire un "up" sur ce problème…

Je suis incapable de le faire moi-même mais est-ce qu'on ne pourrait pas modifier la ligne de code :

$voucher->name = 'birthday';



pour remplacer 'birthday' par l' ID du client ou son Lastname ?

Je ne sais pas comment on peut appeler une donnée dans une fonction :-(

$voucher->name = '$user['id_customer']';

???

Merci pour vos lumières !

Link to comment
Share on other sites

Bonjour,
je vous propose une solution non testée :

On commence par ajouter 2 variables et 2 fonctions qui vont permettre de générer un code aléatoire de bon de réduction :

   private static $array = null;
   private static $length = 8;

   public static function getRand( $len = null ){
       if( is_null( self :: $array ) )
         self :: _genArray( );
       if( !is_numeric( $len ) )
         $len = self :: $length;
       $brcode = '';
       for( $i = $len; $i > 0; $i-- )
         $brcode .= self :: $array[ rand( 0, count( self :: $array ) -1 ) ];
       return $brcode;
   }

   static public function _genArray( ){
               self :: $array = array_merge( range( 'A', 'Z' ), range( '0', '9' ) );
     }



ensuite on remplace :

$voucher->name = 'birthday'; 



par

$voucher->name = $this->getRand(10);



ici 10 = nombre de caractères du code bon de réduction, si on ne met rien alors le code fera 8 caractères.

j'attends vos retours sur le sujet... ;-)

Link to comment
Share on other sites

  • 6 months later...
  • 3 weeks later...

Bonjour,

Très interessé par ce module pour le site que je réalise actuellement, je me suis vite rendu compte qu'il n'est pas fini, voir buggé dans certains cas.

j'ai développé qqch pour mon client qui permet de corriger certains bugs tels que:

- choix d'une devise quand type de bon = montant sur la commande (sans ça le bon ne fonctionne pas!)

- choix du nombre de jours avant anniversaire pour envoyer le bon

- choix du temps de validité

- choix des options (cumulable ou pas)

- test si bon de réduction existe déja (pour les malins qui change de date de naissance comme de chemise)

- diverses modifs au template mail (affichage du code de réduc + montant + validité + les conditions écrites en petit si montant minimum etc...)


A propos d'éviter les doublons, il ne faut pas modifier le nommage des bons en rajoutant un numéro aléatoire, au contraire, le système actuel est parfait:

1. On identifie un bon par son ID client et son année, que demander de plus, il suffit de tester si ce bon existe et bingo.

2. Au cas où un utilisateur "pirate" le bon de réduction d'un autre, il ne peut pas s'en servir, le bon est nominatif.

3. Et pour ceux qui changent de date, même principe, la vérif sur le nom du bon intervient, le seul cas qui passe, c'est par exemple:

anniv' le 31 déc : cadeau, et il change sa date au 1er janvier, il aura un cadeau aussi le lendemain, mais dans ce cas, même s'il change par la suite, il est niqué pour l'année!


Pour l'instant, j'ai fait la plupart de ces modifs en dur mais si qqn est intéressé pour les avoir dans la config du module dans le BO, je peux faire ça.

Je ne suis pas spécialiste des modules Presta, mais je viens de passer 3 mois sur une boutique (suzy-la-souris.fr) et j'ai bouffé du module et de la modif de classe sur ce site! (ça va être marrant pour les MAJ...)

Enfin voilà, je me sens prêt à reprendre ce module existant et à l'améliorer, il me faut juste quelques encouragements, et on verra la suite :)

PS : Je précise pour ceux qui ne reçoive pas le mail alors que le fichier cron.php affiche OK, qu'il faut que le client soit validé, càd au moins une commande payée.

Link to comment
Share on other sites

  • 6 months later...

Bonjour,

J'utilise le module cadeau d'anniversaire.
Le cron a été configuré
Le client reçoit bien le mail.
le bon de reduc est bien généré et il est visible dans l'onglet paiement /Bons de reduction.
Le code reduc est BIRTHDAY pour tous les clients dont c'est l'anniversaire.
Au moment de l'utiliser :

Il y a 1 erreur :

1. vous ne pouvez pas utiliser ce bon de réduction

j'ai vu que plusieurs ont ce pb mais personne ne semble l'avoir résolu
Visiblement ca pose un pb si plusieurs clients ont le même nom pour leur réduction !
y a t'il une solution ?
Merci

Prestashop 1.2.5.0 et module cadeau d'anniversaire 1.0

Link to comment
Share on other sites

Bonjour à tous,

Personne n'a donné suite à mon précédent post.
j'ai réflechi un peu et je vous fait part de mes constatations.
Le module cadeau d'anniversaire tel que je l'ait ne marche pas.
Tous les jours, il génère un bon de réduction à tous les clients né ce jour là.
Mais ce bon n'est pas utilisable : une erreur apparait.
Si je renomme le bon de mon client ca fonctionne.
Le pb vient du fait que tous les bons de réduction portent le même nom : "birthday"
Je ne suis pas un grand informaticien et j'y connais guère en php, mais c'est codé dans le fichier suivant :
birthdaypresent.php dans le répertoire modules/birthdaypresent :

La ligne qui déconne est pour moi la suivante :
$voucher->name = 'birthday';
Que l'on trouve en ligne 109
(voir extrait)

$voucher = new Discount();
           $voucher->id_customer = $user['id_customer'];
           $voucher->id_discount_type = Configuration::get('BIRTHDAY_DISCOUNT_TYPE');
           $voucher->name = 'birthday';
           $voucher->description[Configuration::get('PS_LANG_DEFAULT')] = $this->l('Your birthday present !');
           $voucher->value = Configuration::get('BIRTHDAY_DISCOUNT_VALUE');
           $voucher->quantity = 1;




Quelqu'un a t'il sérieusement résolu ce bug ?
SI oui, merci de me faire passer la modif de code à faire !
Existe t'il une autre version de ce module ?

Merci de votre aide !

Link to comment
Share on other sites

Salut,

je fais les questions et les réponses !
J'ai fouillé sur le forum en anglais (je suis aussi fort en anglais qu'en php, c'est dire !)
Et je crois avoir trouvé une solution.

ici :

http://www.prestashop.com/forums/viewthread/27706/development/solved_birthday_present_module__dot__dot__dot_/

En fait, si j'ai bien compris, il faut remplacer

$voucher->name = 'birthday';

par

$voucher->name = 'BIRTHDAY-'.intval($voucher->id_customer).'-'.date('Y');

Qui est censé rajouter le n° de client et l'année en cours !

Je le teste et demain, je vous tiens au courant !

a +

Link to comment
Share on other sites

Bon, c'est encore moi,
Je me sens un peu seul ici.
La modif que j'ai faite semble marcher. J'ai bien généré des coupons de réductions, tous différents dont un que j'ai pu utiliser.
Je considère que c'est résolu.
Si il apparait des soucis, je le posterai ici, sinon c'est que je suis content de ma modif.
Merci

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