Jump to content

[module à tester] abonnement / vendre l'accès à un groupe donné


Recommended Posts

Bonjour,

je vous présente un petit module qui donne la possibilité de choisir un ou plusieurs produits dans l’admin qui donnent accès a un groupe donné, pour une durée déterminée (en jours). lorsque la commande est validée par le client, il accède au groupe en question. (ensuite les droits du groupes sont gérés normalement par prestashop).

Pour la fin de validité, on a la possibilité d’envoyer un mail au client X jours avant afin de le prévenir. s’il ne renouvelle pas, son compte est retiré du groupe.

Le client peut voir la date de fin de validité sur son compte.

Pout l'utiliser, il faut avoir fait des groupes de clients sur le BO.

ensuite sur le module,

-sélectionner le produit qui donne accès au groupe.

-sélectionner le groupe auquel les clients accedent

-indiquer la validité en nombre de jours

-indiquer le nombre de jours avant la fin de validité le mail de relance doit être envoyé.

une tâche cron est à faire tourner quotidiennement pour lancer le script dans le module (modules/sellgroupaccess/cron.php)

cette tâche est importante car elle permet d'envoyer la relance aux clients, et le cas échéant le supprimer du groupe auquel il appartient.

je tiens à préciser que je n'utilise pas encore ce module en production, mais cela va bientôt être le cas.

N'hesitez pas à le tester, me dire ce qui ne va pas, m'aider à faire les traduction, rediger les mails etc ... !

j'attends vos retours avec impatience !

-----

versions :

0.1 sellgroupaccess.zip

 

0.2 sellgroupaccess_0.2.zip

• ajout de la référence dans la sélection des produits.

 

0.3 sellgroupaccess_0.3.zip

• liste des abonnement en cours dans le BO.

• correction du formatage de emails

 

0.4 sellgroupaccess_0.4.zip

• mise à jour pour prestashop 1.4.5.1

• retour au groupe par défaut

• sélection du produit à associer

• correction installation

-----

 

post-1254-0-20966200-1321881264_thumb.png

Edited by sariha (see edit history)
  • Like 2
Link to comment
Share on other sites

Hello

Suis toujours en phase test et là j'ai un soucis et une question

Mon soucis (voir la capture)

Je ne vois plus de texte dans le paneau de configuration du module ???

Ma question

Ne serais-ce pas possible d'utiliser la référence produits au lieu du nom dans le sélécteur
car il se peut que certain produit aillent le même nom dans des catégorie différentes

Merci d'avance

23874_FTm3hXPdwMxkFk7910d1_t

Link to comment
Share on other sites

MERCI BEAUCOUP

Les traductions !!!
c'était bien cela mes texte disparu
bravo

j'aimerais bien me pencher un peu plus sur le dév et la mod de module
mais je n'ai pas trouvé de documentation ou tutos à ce sujet
m'y pencherai dans un deuxième temps

Pour la séléction des produits par référence ce serais super
ou peut être l'affichage de celle-ci à côté de son nom

Merci encore pour les textes

Link to comment
Share on other sites

Excellent !!!
félicitation et merci

au sujet de la fin des abonnements :

si l'on ne mets pas de durée -> est-ce qu'il est sans fin ?
si l'on ne mets pas de jours pour le rappel -> est-ce qu'il n'en effectue pas ?

car j'ai certain client avec des abonnements sans fin

autre question :

serais-ce compliqué de générer des commandes ou plutôt des factures mensuels
car j'ai des clients qui achète un abonnement sans fin avec certaines conditions de résiliation
mais qui paient mensuellement donc actuellement leur fais une facture

Link to comment
Share on other sites


au sujet de la fin des abonnements :

si l'on ne mets pas de durée -> est-ce qu'il est sans fin ?

non, si on ne met pas de durée, le client est désabonné tout de suite.


si l'on ne mets pas de jours pour le rappel -> est-ce qu'il n'en effectue pas ?

pour le rappel, si on le met à 0, il a lieu le jour même...


autre question :

serais-ce compliqué de générer des commandes ou plutôt des factures mensuels
car j'ai des clients qui achète un abonnement sans fin avec certaines conditions de résiliation
mais qui paient mensuellement donc actuellement leur fais une facture


je n'ai pas prévu l'utilisation d'abonnement à vie... il faudra trouver une astuce !
Link to comment
Share on other sites

bien compris pour les durées

vais trouver une astuce pour ma facturation mensuel d'abonnement sans fin

j'ai vu que dans le compte client apparait le nom ainsi que la date de fin de l'abonnement

est-ce que ces informations sont aussi visible quelque part en zone admin
sous forme de liste peut-être

encore félicitation pour ce module

Link to comment
Share on other sites

hello

Pour l'affichage dans le BO
ce serais génial de l'avoir sous forme de liste
sous l'onglet client dans une catégorie "sell add group"
ainsi que dans la fiche client

Comment est-ce que je peux modifier le formatage de l'affichage dans mon compte
j'aimerais ajouté devant le nom "du sell add group"
Vous êtes abonné au ------------

merci d'avance pour la réponse

Link to comment
Share on other sites

lors de mes test

je remarque la chose suivante dans l'email de Félicitations :

Bonjour {firstname},
vous faites désormais partie du groupe {new_group} sur notre boutique !
...

Bonjour Robbie,
vous faites désormais partie du groupe WILLIAMS sur notre boutique !
...

{firstname} -> ok
{new_group} -> affiche le Nom du client et non celui de l'abonnement

Merci d'avance pour la correction

Link to comment
Share on other sites

Suite de mon feedback "tests sur serveur en prod"

Tâche CRON = OK
envoi email d'avertissement d'expiration = OK
Format du mail = Quelques soucis
- même problème d'affichage du nom du groupe comme dans le mail de félicitation (post précédent)
- j'ai réussi à ajouter le nom de famille après le prénom en début d'email en modifiant (sga-newgroup.html)
suppression dans le group après expiration = OK

Aimerais modifier l'affichage dans la page mon compte mais je n'ai pas trouvé ou cela se trouve
probablement dans le doc : sellgroupaccess.php
non ?

Voilà, bon fini pour ce soir
à demain j'espère pour des news

Link to comment
Share on other sites

encore du feedback de mes tests sur serveur en prod .

La suppresion des utilisateurs de leur groupe suite à la tâche CRON
ne s'effectue qu'après une visite de la configuration du module dans le BO
étrange !!!

Link to comment
Share on other sites


Comment est-ce que je peux modifier le formatage de l'affichage dans mon compte
j'aimerais ajouté devant le nom "du sell add group"
Vous êtes abonné au ------------

merci d'avance pour la réponse


Pour modifier l'affichage sur le compte client,
il suffit d'éditer le fichier "my-account.tpl" dans le dossier du module (modules/sellgroupaccess/)
Link to comment
Share on other sites

Bonsoir,

Est-il possible d'utiliser ce module qui me semble fort interessant mais CRON, avec un lancement manuel des tâches ?

Je n'ai pas encore tout compris en php alors CRON me semble loin pour l'instant... La possibilité de le faire en manuel m'interesse pour avoir également un contrôle plus accru sur les envoie et les tâches en cour ?

Je n'ai pas encore testé ce module, mais en attendant beau travail ;)

Link to comment
Share on other sites

Bonjour emraud,
le principe de CRON est de lancer une tache automatiquement à intervalle régulier et dans le cas de ce module, je préconise une fois par jour.
on peux lancer manuellement cette tache bien sur, pour cela, il faut simplement se rendre à l'adresse "votreboutique.com/modules/sellgroupaccess/cron.php"
par contre, il n'y a aucun retour.

Link to comment
Share on other sites

  • 2 weeks later...

je ne comprend pas..
voici un pas à pas :

1/ tu cree un produit que tu appelle "abonnement" par exemple
2/ tu vas dans le module "sell group access" et tu clique sur "add"
3/ tu nomme comme tu veux (ce titre est uniquement pour toi, le client ne le vois pas)
4/ dans la liste des produits, tu sélectionne le produit que tu a précédemment créé (étape 1) "abonnement"
5/ tu sélectionne le groupe auquel l'abonnement donne accès
6/ tu configure le reste comme tu le souhaite
5/ ton client devra acheter le produit "abonnement" pour devenir membre du groupe choisi à l'étape 5

Link to comment
Share on other sites

Ahhhh OK, j'avais pas compris ça. D'accord super. Par contre, du coup, est-ce que tu sais si on peut faire en sorte qu'un groupe (celui des abonnés par exemple), puisse avoir accès à telle ou telle ressource. Parceque là dans prestashop, j'ai l'impression qu'on peut juste spécifier un pourcentage de réduction pour un groupe donné, moi ce que je voudrais c'est pouvoir dire "vous n'etes pas abonnés, vous ne pouvez pas acheter".

En tout cas merci pour ton explication.

Link to comment
Share on other sites

Ok après avoir testé le module, je viens de trouver une petite anomalie. Je ne sais pas s'il s'agit d'un bug ou d'une connerie dans la BackOffice mais quand je m'achète le produit abonnement, je ne vois pas que les prix ont changé.

j'explique :
J'ai fait un groupe "inscrit" et un produit "abonnement" qui passe l'acheteur dans ce groupe "inscrit". Les inscrits bénéficient d'une remise de 10%. Or en testant je remarque que les prix n'ont pas changés pourtant mon profil de test est bien dans le groupe inscrit (après acceptation du paiement).

(Est-ce normal si le profil ayant acheté l'abonnement se retrouve dans les deux groupe "defaut" ET "inscrit"?)

Link to comment
Share on other sites

Ok je me suis renseigné et pour qu'un client bénéficie d'une remise il faut que ce soit sont groupe principale qui change et non pas les groupe auxquels il appartient (ce sur quoi agit le module actuellement). Qu'est-ce qu'il faudrait que je change dans sellgroupaccess.php ou dans sellgroupaccess.tpl pour que ce soit le groupe principale qui change?

Link to comment
Share on other sites

Ok je me suis renseigné et pour qu'un client bénéficie d'une remise il faut que ce soit sont groupe principale qui change et non pas les groupe auxquels il appartient


je trouve que c'est un peu etrange, étant donné que sur la fiche client il n'est pas possible de décocher le groupe par défaut ... (cf image jointe)

25359_FC2Czkqgsf8zcDERtWi7_t

Link to comment
Share on other sites

ceci expliquant cela..
malheureusement, je ne sais pas comment ça se passe pour le groupe par défaut de la v1.3

pour modifier il y'a deux chose à faire dans mon module :
• changer le groupe par défaut lors de la mise a jour du statut de la commande (fonction hookUpdateOrderStatus ligne 424)

• re-changer le groupe par defaut lorsque l'abonnement est terminé (après la ligne 336)

Link to comment
Share on other sites

OK donc pour ceux que ça intéresse.

Le problème était le suivant :
- On veut pouvoir adhérer au club client pour avoir des tarifs préférentiels.
Dans prestashop, les réductions sont des règles '"non-cumulatives" et ne s'appliquent seulement qu'au groupe principal. Or ce module ne fait qu'ajouter au groupe demandé le client qui a payé son abonnement, il ne change pas le groupe principale, ce qui fait que même s'il a payé sa cotisation, le client n'a toujours pas accès aux tarifs préférentiels du club client.

solution :
dans /modules/sellgroupaccess/sellgroupaccess.php, dans la fonction setUserToGroup(), vers la ligne 310, il faut ajouter la mise à jour du champ id_default_group (le groupe principal) :

if(!$this->isUserInGroup($user_id,$id_group))
{
    if(
          Db::getInstance()->Execute("INSERT INTO `"._DB_PREFIX_."customer_group` (`id_customer`, `id_group`) VALUES ('$user_id', '$id_group');")
          AND
          //De là
          Db::getInstance()->Execute("UPDATE `"._DB_PREFIX_."customer` SET `id_default_group`= '$id_group' WHERE `id_customer` = '$user_id'")
          AND
          //À là!!
          Db::getInstance()->Execute("INSERT INTO `"._DB_PREFIX_."sga_dates` (`id_customer`, `id_group`, `id_sga`,  `date`) VALUES ('$user_id', '$id_group', '$id_sga', '$date');")
      )
      return true;

}



autre problème :
À présent tous les produits bénéficient de la réduction du club client... même l'abonnement (ben ouais là ça craint).

solution :
Il faut donner une référence au produit "abonnement" (ex: "COTIS").
Dans le fichier /classes/Produit.php, on change la ligne 1451 :

$price *= ((100 - Group::getReduction(((isset($id_customer) AND $id_customer) ? $id_customer : 0))) / 100);


en ceci :

$id_cotis=Db::getInstance()->ExecuteS("SELECT `id_product` FROM `"._DB_PREFIX_."product` WHERE `reference` = 'COTIS';");
if($id_product!=$id_cotis[0][id_product]){
     $price *= ((100 - Group::getReduction(((isset($id_customer) AND $id_customer) ? $id_customer : 0))) / 100);
}



Voilà A+

Link to comment
Share on other sites

  • 2 months later...
  • 4 weeks later...
$id_cotis=Db::getInstance()->ExecuteS("SELECT `id_product` FROM `"._DB_PREFIX_."product` WHERE `reference` = 'COTIS';");
if($id_product!=$id_cotis[0][id_product]){
$price *= ((100 - Group::getReduction(((isset($id_customer) AND $id_customer) ? $id_customer : 0))) / 100);
}


How can i make it more than just 1 product or a particular catagorie?

Thanks
Link to comment
Share on other sites

Pour les utilisateurs de la 1.3 : La clé de sécurité invalide vient de l'absence du token dans l'url.
Pour fixer le problème :
Dans modules/sellgroupaccess/sellgroupaccess.php :
ligne 94 (public function getContent()) : changer

    global $token;

par

    //    global $token;
   $token = Tools::getValue('token');



et ligne 224 (private function _get_list($html=true)) : changer

    global $token;

par

    //    global $token;
   $token = Tools::getValue('token');



@ Sahira : excellent module. Merci !

Link to comment
Share on other sites

Hello !

Super module qui correspond tout à fait à ce que je cherchais !

Un petit problème demeure cependant chez moi en version 1.3 et malgréle téléchargement de la version 0.3 : dans l'email de félicitations, le client se retrouve abonné à "son nom de famille" au lieu du groupe auquel il appartient à présent.

Quelqu'un a pu corriger ce souci ?

merci

edit : j'ajoute que quand je clique sur l'éditeur d'une catégorie d'abonnement j'ai ce message d'erreur "clé sécurité inorrecte".

Link to comment
Share on other sites

  • 1 month later...

Dommage que ce module ne soit pas mis à jour au fur et à mesure des modifs qui sont communiquées...
Ce pourrait être un module très intéressant !
Malheureusement, il n'est pas fiable... par exemple, la modif proposée par ArnaudDRP (post#55) ne remplace pas le groupe par défaut...
En revanche, la modif d'Hamanad concernant la clé de sécurité fonctionne !
Pourquoi Sariha n'ajoute pas ceci à une version 0.4 et ne fait pas avancer ce module ?
L'a-t-il abandonné ?
dommage...

Link to comment
Share on other sites

  • 2 weeks later...

Finalement, je rectifie :
La "clé de sécurité incorrecte" est toujours présente, même avec les modifs de Hamanad...
Sariha as t-il disparu de la circulation ?...
C'est vraiment dommage, je ne comprend pas pourquoi ce module n'existe pas plus abouti.. c'est pourtant une fonction super intéressante !!
Quelqu'un as t-il pu "prolonger" le travail de Sahira ?

Link to comment
Share on other sites

  • 1 month later...
Bonsoir

les modifs de hamanad fonctionnent si pour la premiere modif vous mettez

//    global $token;
$token = Tools::getValue('token');
$cookie;



C'est exactement le code que j'ai déjà mis en place sur sellgroupaccess.php
mais sur le panneau d'administration du module, quand on clique sur le nom d'un client, ça abouti toujours sur "Clef de sécurité incorrecte"...

Merci tout de même pour cette tentative d'aide...
Link to comment
Share on other sites

  • 1 month later...

Bonjour,

en ce qui concerne le formatage du mail avec le nom de l'utilisateur à la place du nom du groupe il faut, dans le fichier sellgroupaccess.php dans la fonction hookUpdateOrderStatus() aux environ de la ligne 424, remplacer :

$data = array(
'{firstname}' => $customer->firstname,
'{new_group}' => $customer->lastname
);


par

$data = array(
'{firstname}' => $customer->firstname,
'{lastname}' => $customer->lastname,
'{new_group}' => $group_access['name']
);




et dans sellgroupaccess > mails > fr > sga-newgroup.html, rajouter

{lastname}


après

{firstname}



(vous pouvez même faire cette manip pour tout les mails fr et en)

Sinon pour ce qui concerne le probleme de "Clef de sécurité incorrecte" je l'ai eu aussi et j'ai réussi à le résoudre grâce à ce sujet, mais je ne sais plus comment (sous prestashop 1.3.5.0) et j'ai aussi fait des modifs pour l'enregisterment des groupes, mais je ne sais plus exactement lesquelles...

comment ca poisson rouge??? :P
si il faut je me repencherais dessus pour vous éclairer si je peux :)

Link to comment
Share on other sites

  • 1 month later...

:-S Ahhgrr
Toujours personne pour reprendre le développement de ce module d'abonnement ?
Vu le nombre de personnes qui recherche cette fonction sur le Forum, c'est étrange qu'aucun développeur ne se soit mis dessus...
L'arrivée de la 1.4 serait l'occasion rêvée de s'y mettre !!
Je regrette de ne pas en être capable moi-même...

:down:

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour a tous

j'ai eu l'occasion de tester ce module sur la 1.3. très pratique, je trouve dommage que des developpeurs ne soient pas dessus pour la 1.4. va falloir mettre les mains dans le cambouis.

j'ai l'occasion de le tester avec la 1.4 après quelque modif :

- pas de Clé de sécurité invalide quand je clique sur le nom du client.

- l'envoie du mail de validation et du mail de rappel par le biais du cron se font correctement. Par contre a chaque appel du script, j'ai un mail chez le client. il vaut mieux faire le rappel 2 jours avant la fin de l'abonnement. ;-)

- par contre il envoie le nom du groupe du module et j'aimerais envoyer le nom du groupe de prestashop dans le mail. je cherche.... si quelqu'un a une idée, je suis preneur.

- après la fin de l'abonnement, il supprime bien le client du groupe.

Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...

Bonjour à tous,

je viens de relire ce post... et heu.. ben désolé de ne pas avoir fais les mises à jour :/

Je vais me rattraper en proposant une nouvelle mise à jour, pour la derniere version de prestashop (1.4.5.)

Donc, un peu de patience..

merci :)

Link to comment
Share on other sites

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

Bonjour,

Génial votre module ! il répond à un grand besoin ! Bravo.

 

Par contre, sur notre PS 1.4.8, au moment de l'installation,

nous avons eu ce message d'erreur :

 

TECHNICAL ERROR[object XMLHttpRequest]

 

Est-ce que cela peut être génant ? D'où cela peut venir ?

 

Concernant le CRON, est-ce qu'il suffit de le lancer qu'une seule fois ? ou tous les jours ?

 

Merci par avance.

 

Vincent

Link to comment
Share on other sites

  • 4 months later...

Bonjour,

 

Tout d'abord merci pour ce module qui répond à nos besoins.

Cependant celui-ci aurait besoin d'une toute petite amélioration et je compte un peu sur la communauté pour nous aider à résoudre le problème auquel nous faisons face !

 

En effet, nous souhaiterions mettre en place plusieurs accès limités payants sur notre site.

Par exemple, notre client peut acheter un accès à une partie privée du site, mais il peut aussi acheter un autre accès à une autre partie privée complémentaire de la première.

 

Aujourd'hui le module fonctionne lorsqu'il s'agit de gérer une et une seule partie privée. En effet, lorsque mon client achète l'accès à la Partie A, il se retrouve bien dans le groupe qui donne l'accès à la Partie A.

Cependant, lorsque celui-ci souhaite aussi acheter l'accès à la Partie B, le module ne le met pas dans le groupe.

En revanche, si je le supprime du groupe qui donne l'accès à la Partie A et qu'il retente d'acheter l'accès à la Partie B cela va fonctionner. Le problème se pose donc lorsque le client fait déjà parti d'un groupe particulier.

 

Nous avons donc plonger les mains dans le code est on arrivé à la conclusion que c'est ce petit bout de code dans sellgroupaccess.php qu'il faudrait modifier mais comment ? (on se situe dans le Hook UpdateOrderStatus)

 

//pour chaque sga possible :
  foreach($sga as $group_access)
  {
$sga_products = $group_access['products'];
$commun = in_array($sga_products, $produits);

if($commun){
 //si il y'a un resultat
 //on ajoute l'utilisateur au groupe :
 $this->setUserToGroup($order->id_customer, $group_access['group'],  $group_access['id_sga'], $group_access['availability']);
 $this->setDefaultGroupUser($order->id_customer, $group_access['set_default_group']);

$debug .= ' user : '.$order->id_customer.' group : '.$group_access['group'].' availability : '.$group_access['availability'].' ||| ';

 

Lorsqu'on enlève le if($commun) le module nous inscrit dans tous les groupe à cause du foreach.

Le problème est que ne n'avons aucune idée de comment modifié la condition ou la valeur $commun pour que la fonction puisse répondre comme on le souhaiterai.

Si quelqu'un a une piste ou a déjà été confronté au problème est-ce qu'il peut nous faire partager son savoir ? ou si quelqu'un connait un autre module qui permet de le faire nous prenons aussi.

 

Merci.

Edited by eurekash (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Nous avons remarqué que lorsqu'un client acheté un second accès limité, le module ne fonctionne pas et dans le back-office la facture de la commande n'est pas générée.

En effet, le client passe une 1ère commande d'un accès limité A. Le module fait son travail, l'inscrit dans le groupe qui donne un accès limité à la partie A du site. La facture est bien générée dans le back-office.

Le client passe maintenant une 2ème commande pour un accès limité à la partie B. Le module n'inscrit pas le client dans le groupe qui donne l'accès à la partie B. Dans le back-office, la facture ne se génère pas même lorsqu'on sélectionne manuellement le statut de commande.

Le problème que nous rencontrons dans le post précédent vient peut-être de là.

 

Quelqu'un à t-il une idée ?

Link to comment
Share on other sites

  • 9 months later...