manue Posted December 3, 2009 Share Posted December 3, 2009 Bonjour à tous,Je souhaiterais que mes clients puissent choisir leur groupe au moment de leur inscription.J'ai créé mes groupes.J'ai modifié authentification.tpl en mettant : Vous êtes <input type="radio" name="id_group" id="id_group6" value="6" {if isset($smarty.post.id_group) && $smarty.post.id_group == 6}checked="checked"{/if} />Enseignant <input type="radio" name="id_group" id="id_group7" value="7" {if isset($smarty.post.id_group) && $smarty.post.id_group == 7}checked="checked"{/if} />Elève/étudiant <input type="radio" name="id_group" id="id_group8" value="8" {if isset($smarty.post.id_group) && $smarty.post.id_group == 8}checked="checked"{/if} />Particulier j'ai modifié customer.php avec : public $id_group = 1; /*groupe par defaut */$fields['id_group'] = intval($this->id_group); et $row = array('id_customer' => intval($this->id), 'id_group' =>$this->id_group);pour enregistrer le groupe ainsi récupéré.J'obtiens tout le temps des erreurs, impossible d'enregistrer.Vous avez une petite idée ?Un grand merci d'avance pour votre aide.prestashop 1.2.5 Link to comment Share on other sites More sharing options...
Yoya Posted December 3, 2009 Share Posted December 3, 2009 Hello Manue bienvenue a toi tout d'abord.Voila ce que je ferais :1- Modifier ton authentication.tpl comme tu l'as fait.2- Modifier Customer.add() (class Customer.php) : public function add($autodate = true, $nullValues = true, $groupId=1) { $this->birthday = (empty($this->years) ? $this->birthday : intval($this->years).'-'.intval($this->months).'-'.intval($this->days)); $this->secure_key = md5(uniqid(rand(), true)); $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_FRONT').'minutes')); $res = parent::add($autodate, $nullValues); if (!$res) return false; $row = array('id_customer' => intval($this->id), 'id_group' => $groupId); return Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); } 3- Modifier enfin authentication.php ainsi (ligne 86 chez moi) $customer->active = 1; if (!$customer->add(true,true,Tools::getValue('id_group',1))) $errors[] = Tools::displayError('an error occurred while creating your account'); et voilou !Cdlt,Pierre. Link to comment Share on other sites More sharing options...
manue Posted December 3, 2009 Author Share Posted December 3, 2009 Génial ! :-) ça marche nickel...vous avez sauvé ma journée ! Link to comment Share on other sites More sharing options...
Yoya Posted December 3, 2009 Share Posted December 3, 2009 vous avez sauvé ma journée ! A ouai quand meme ... Sinon pourrais tu mettre [RESOLU] devant le titre de ton sujet, histoire que quelqu'un qui cherche comme toi une solution de ce genre la trouve rapidement.Merci par avance,Cdlt,Pierre. Link to comment Share on other sites More sharing options...
manue Posted December 4, 2009 Author Share Posted December 4, 2009 Petit problème quand même avec les catégories.Donc mon client s'enregistre bien avec le groupe sélectionné, mais il ne voit plus aucune catégorie !J'ai bien sûr modifié toutes les catégories en leur affectant tous les groupes.Pour que ça fonctionne, il faut que le client soit au moins dans le groupe defaut.D'ailleurs chose très étrange, quand je créé un client en BO et que je lui affecte un autre groupe, celui-ci n'est pas pris en compte (seul le groupe par défaut est enregistré en base). Il faut aller en modification du client, lui ré-affecter le groupe et là ça fonctionne (il a bien les 2 groupes).-testé sur 2 site avec ps 1.2.5 et 1.2.4-Donc, dans mon cas précis, je pense qu'il faut que je lui affecte systématiquement le groupe par défaut + celui qu'il a sélectionné... et je n'y arrive pas !Encore un petit coup main, please...Merci d'avance. Link to comment Share on other sites More sharing options...
syl Posted December 4, 2009 Share Posted December 4, 2009 J'ai pas (encore) cherché, mais y'a peut être des modules qui permettent la personnalisation des formulaires d'inscription (+ possibilité d'adhérer à un groupe) non ?Juste un truc, si vous vous basez de la structure de code (authentification.tpl) de manue, faut changer ça : {if isset($smarty.post.id_group) && $smarty.post.id_group 6} ---> en ça {if isset($smarty.post.id_group) && $smarty.post.id_group == 6}(manquait les "==") @manue : Ca fonctionne presque nickel chez moi, sauf lorsque que depuis l'administration on veut changer le groupe d'un client faisant partie du "groupe défaut" --> il se retrouve dans le groupe qu'on veut, mais reste dans le "groupe défaut" aussi. Mais c'est pas un gros soucis. Et à part ça tout marche.Et si je change un id_groupe existant de la table ps_customer_group dans la Base de Donnée ça fonctionne il se met bien à sa place.Par contre si j'ajoute "à la main" dans la BD un client dans la table ps_customer, il n'apparait pas ensuite dans la table ps_customer_group, à moins de le créer manuellement. A mon avis un script, lors de l'enregistrement se charge de le créer, donc si tu fais des import dans la Base de Donnée direct, fais le à deux endroits en reprenant le id_customer de la table ps_customer que tu met dans ps_customer_groupMais bon, ajouter les clients dans la base de données sans passer par le système du site c'est bof car ça pose des soucis avec les mots de passes et security key mais il ne voit plus aucune catégorie ! --> Ou ça ??Thx. Link to comment Share on other sites More sharing options...
manue Posted December 4, 2009 Author Share Posted December 4, 2009 J'ai pas (encore) cherché, mais y'a peut être des modules qui permettent la personnalisation des formulaires d'inscription (+ possibilité d'adhérer à un groupe) non ? Côté BO oui, mais pas côté FO. Juste un truc, si vous vous basez de la structure de code (authentification.tpl) de manue, faut changer ça : {if isset($smarty.post.id_group) && $smarty.post.id_group 6} ---> en ça {if isset($smarty.post.id_group) && $smarty.post.id_group == 6}(manquait les "==") Exact, c'était bon dans mon code, mauvais copier/coller @manue : Ca fonctionne presque nickel chez moi, sauf lorsque que depuis l'administration on veut changer le groupe d'un client faisant partie du "groupe défaut" --> il se retrouve dans le groupe qu'on veut, mais reste dans le "groupe défaut" aussi. Mais c'est pas un gros soucis. Et à part ça tout marche.Et si je change un id_groupe existant de la table ps_customer_group dans la Base de Donnée ça fonctionne il se met bien à sa place.Par contre si j'ajoute "à la main" dans la BD un client dans la table ps_customer, il n'apparait pas ensuite dans la table ps_customer_group, à moins de le créer manuellement. A mon avis un script, lors de l'enregistrement se charge de le créer, donc si tu fais des import dans la Base de Donnée direct, fais le à deux endroits en reprenant le id_customer de la table ps_customer que tu met dans ps_customer_groupMais bon, ajouter les clients dans la base de données sans passer par le système du site c'est bof car ça pose des soucis avec les mots de passes et security key Hors de question pour moi d'ajouter les clients directement en base !Je suis d'accord avec vous que lorsque je modifie un client via l'administration tout se passe bien.Le problème se pose lors de sa création. D'ailleurs le groupe défaut n'est plus proposé (cf capture) et dans la table ps_customer_group seul le groupe défaut est enregistré et pas celui que j'ai coché !Est-ce que vous avez le même comportement ?Je voudrais que le client ai au moins le groupe par défaut + celui qu'il a sélectionné lors de son inscription, car s'il n'a pas le groupe par défaut, sur le site, les catégories de produits (menu gauche chez moi) ne s'affichent plus lorsqu'il est loggué (alors que les catégories sont bien paramétrées : cf capture2).Pour résumer :Catégorie A -> tous les groupesClient X -> groupe 1 (défaut), groupe 6 (Enseignant) : il voit bien les catégories de produitsmais,Catégorie A -> tous les groupesClient Y -> groupe 6 (Enseignant) uniquement : le client ne voit aucune catégorieBizarre, non ? Link to comment Share on other sites More sharing options...
syl Posted December 4, 2009 Share Posted December 4, 2009 ..ok javais mal compris je testeEDIT: En effet, exactement le même problème chez moi.j'y regarde...et de son coté, si Yoya971 pourait nous apporter la modification dans le code à faire pour que :lors de l'inscription l'internaute soit automatiquement enregistré dans le groupe client par défaut en plus du groupe sélectionné par l'internaute.il aura une reconnaissance à vie. Link to comment Share on other sites More sharing options...
Yoya Posted December 4, 2009 Share Posted December 4, 2009 HelloAu temps pour moi les amis : je connaissais cette 'subtilitée' mais j'ai zappé Pour me rattrapper : - virer les modifs faites à Customer.add() ... on doit donc retrouver çà : public function add($autodate = true, $nullValues = true) { $this->birthday = (empty($this->years) ? $this->birthday : intval($this->years).'-'.intval($this->months).'-'.intval($this->days)); $this->secure_key = md5(uniqid(rand(), true)); $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_FRONT').'minutes')); $res = parent::add($autodate, $nullValues); if (!$res) return false; $row = array('id_customer' => intval($this->id), 'id_group' => 1); return Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); } - virer les modifs faites à authentication.php et ajouter çà : $customer->active = 1; if (!$customer->add()) // retour à la case départ ... $errors[] = Tools::displayError('an error occurred while creating your account'); else { if(Tools::getValue('id_group',1)!=1) // on ajoute çà ... { $tmpGroup= new Group(); $tmpGroup->id=Tools::getValue('id_group',1); $customer->addGroups($tmpGroup); } Voilou ...Cdlt,Pierre. Link to comment Share on other sites More sharing options...
manue Posted December 4, 2009 Author Share Posted December 4, 2009 Grand merci à vous 2... ça marche bien !!! :coolsmile: Cela n'explique pas le non-enregistrement d'autres groupes lors de la création d'un client via l'administration... mais bon, mon problème à moi est maintenant bien RESOLU.Manue (très reconnaissante pour votre aide). Link to comment Share on other sites More sharing options...
Yoya Posted December 4, 2009 Share Posted December 4, 2009 attends ... y'a un ptit soucis : sa le rajoute aussi au group 0 ... donc voila : if(Tools::getValue('id_group',1)!=1) { $tmpGroup[0]=Tools::getValue('id_group',1); $customer->addGroups($tmpGroup); } .. beaucoup mieu Pierre. Link to comment Share on other sites More sharing options...
syl Posted December 4, 2009 Share Posted December 4, 2009 excellent, parfait , ça fonctionne !Thanks Link to comment Share on other sites More sharing options...
syl Posted December 4, 2009 Share Posted December 4, 2009 Encore une chose : Comment ajouter dans la fiche client (en front) le groupe client (ex. :vous êtes un particulier)jpourais facilement ajouter ça en php, mais le fichier Identity.tpl ne semble pas reconnaitre le php...et une autre question ne concernant pas directement ce prob:Quel est le fichier dans lequel il est ordonné après validation du formulaire :création du nouvel utilisateur avec son nom, prénom, email etc dans la table ps_customer?thx Link to comment Share on other sites More sharing options...
macabann Posted April 4, 2010 Share Posted April 4, 2010 alloBein moi il m'affiche les id à la place des textes et j'ai des 1 a la place des bouton ratios...bon j'ai résolu le probleme qui venait du copier coller qui change les ".quand le client fait un choix "professionnel", comment ajouter le champ siret et le rendre obligatoirement en fonction du choix ?merci Link to comment Share on other sites More sharing options...
manue Posted April 6, 2010 Author Share Posted April 6, 2010 Effectivement, je n'ai pas pu rendre ce champ obligatoire malgré ma tentative de ré-utilisation du code pour ce type de champ !Dans mon cas, ce n'est pas bien grave... mais si quelqu'un a une idée sur la question, elle sera la bienvenue. Link to comment Share on other sites More sharing options...
dangee Posted June 8, 2010 Share Posted June 8, 2010 Quelqu'un pourrait-il mettre son authentification.php modifié ? J'ai beau essayer, j'obtiens toujours une erreur "parse error" (certainement dû à une accolade qui traine ou pas fermée).Merci...[EDIT]C'est bon pb résolu...En revanche, l'ajout se fait bien, mais le groupe par défaut reste "Défaut". Du coup, les réductions applicable à chaque groupe ne sont pas prises en compte.Exemple : Le groupe 1 => DéfautLe groupe 2 => -10%Si une personne s'inscrit en tant que "groupe 2", il est également présent dans le "groupe 1". De ce fait, il n'a pas les -10%...Une idée ?? Link to comment Share on other sites More sharing options...
[email protected] Posted June 12, 2010 Share Posted June 12, 2010 Bonjour,Je souhaiterais mettre en place la possibilité de choisir les groupes lors de l'inscription, seulement je souhaiterais un résumé plus clair de vos conversations pour ne pas faire d'erreurs... Prudence est mère de sureté héhéhéEn effet je ne sais déjà pas où se trouve Customer.add() donc cela est un peu gênant comme vous pouvez l'imaginer !Cela dit je suis déjà très contente d'avoir trouvé un moyen de différencier les pro des particuliers.Merci à celui ou celle qui pourra m'expliquer clairement la procédure à suivre.Cordialement,Caroline Link to comment Share on other sites More sharing options...
SNA Informatique Posted June 16, 2010 Share Posted June 16, 2010 Quelqu'un pourrait-il mettre son authentification.php modifié ? J'ai beau essayer, j'obtiens toujours une erreur "parse error" (certainement dû à une accolade qui traine ou pas fermée).Merci...[EDIT]C'est bon pb résolu...En revanche, l'ajout se fait bien, mais le groupe par défaut reste "Défaut". Du coup, les réductions applicable à chaque groupe ne sont pas prises en compte.Exemple : Le groupe 1 => DéfautLe groupe 2 => -10%Si une personne s'inscrit en tant que "groupe 2", il est également présent dans le "groupe 1". De ce fait, il n'a pas les -10%...Une idée ?? Effectivement avec la version 1.3 cela ne semble plus marcher car le groupe principal prime. Cela marchait nickel sur 1.2.5D'ailleurs si quelqu'un est capable d'adapter ce développement à la version 1.3, je suis preneur Link to comment Share on other sites More sharing options...
SNA Informatique Posted June 17, 2010 Share Posted June 17, 2010 Je me réponds et sollicite l'approbation ou les remarques des vrais développeurs:Dans la classe Group.php, j'ai remplacé ce bout de code de la version 1.3: static public function getReduction($id_customer = NULL) { if ($id_customer) $customer = new Customer(intval($id_customer)); return Db::getInstance()->getValue(' SELECT `reduction` FROM `'._DB_PREFIX_.'group` WHERE `id_group` = '.((isset($customer) AND Validate::isLoadedObject($customer)) ? intval($customer->id_default_group) : 1)); } Par celui de la version 1.2 static public function getReduction($id_customer) { $result = Db::getInstance()->getRow(' SELECT g.`reduction` FROM `'._DB_PREFIX_.'group` g LEFT JOIN `'._DB_PREFIX_.'customer_group` cg ON (cg.`id_group` = g.`id_group`) WHERE g.`reduction` > 0 AND cg.`id_customer` = '.intval($id_customer).' ORDER BY g.`reduction` DESC'); return $result['reduction']; } Et là les réductions par groupe s'appliquent, je vais procéder aux tests, pour voir si ce changement provoque d'autres soucis. Link to comment Share on other sites More sharing options...
SNA Informatique Posted June 17, 2010 Share Posted June 17, 2010 1er problème, cela ne gère plus du coup les taxes par groupes, mais on peut les paramétrer par zone géographique. Link to comment Share on other sites More sharing options...
AzRaEl Posted June 24, 2010 Share Posted June 24, 2010 Bon j'ai trouvé la solution pour la 1.3 je posterais ca ce soir Az Link to comment Share on other sites More sharing options...
[email protected] Posted June 24, 2010 Share Posted June 24, 2010 on attend ça avec impatience héhé Link to comment Share on other sites More sharing options...
AzRaEl Posted June 24, 2010 Share Posted June 24, 2010 Il y a 3 fichiers concerné:authentication.tpl -> \themes\prestashopauthentication.php -> (à la racine)Customer.php -> \classes1- En premier lieu il faut créer le groupe "Pro" par exemple...2- Dans authentication.tpl il faut ajouter ca (vers la ligne 77): Vous êtes <input type="radio" name="id_group_def" id="id_group2" value="2" {if isset($smarty.post.id_group) && $smarty.post.id_group == 6}checked="checked"{/if} /> Professionnel <input checked type="radio" name="id_group_def" id="id_group1" value="1" {if isset($smarty.post.id_group) && $smarty.post.id_group == 8}checked="checked"{/if} /> Particulier A noté que value="2" c'est l'id de votre groupe "pro" ca peut être autre chose, suivant le nombre de vos groupes.3- Dans le fichier "authentication.php" ligne 90: $groupId = $_POST['id_group_def']; Puis toujours dans "authentication.php" ligne 102 à 105 remplacez par ca: $customer->active = 1; if (!$customer->add(true,true,$groupId)) $errors[] = Tools::displayError('an error occurred while creating your account'); else 4- dans le fichier "Customer.php" vers la ligne 114 cherchez cette fonction: public function add($autodate = true, $nullValues.... Et remplacez la entièrement par celle la: public function add($autodate = true, $nullValues = true, $groupId) { $this->birthday = (empty($this->years) ? $this->birthday : intval($this->years).'-'.intval($this->months).'-'.intval($this->days)); $this->secure_key = md5(uniqid(rand(), true)); $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_FRONT').'minutes')); $res = parent::add($autodate, $nullValues); if (!$res) return false; $row = array('id_customer' => intval($this->id), 'id_group' => $groupId); $result = Db::getInstance()->ExecuteS('UPDATE '._DB_PREFIX_.'customer SET id_default_group = '.$groupId.' WHERE id_customer = '.intval($this->id)); return Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); } Et voila!Bon il y a pas de p'tit à améliorer comme les input radio qui ce génére automatiquement en fonction des groupes créé..Mais ca serra pour plus tard!Attention ce hack est pour la version 1.3Az Link to comment Share on other sites More sharing options...
LIMEO Posted August 28, 2010 Share Posted August 28, 2010 Bonjour,Il y aurai une solution en plus de toutes la réponse précédente d'ajouter un champs obligatoire ex: siret quand le client choisi mon second groupe ex: pro, mais qu'il soit facultatif si le client choisi le groupe par défaut.cordialement. Link to comment Share on other sites More sharing options...
dada Posted November 5, 2010 Share Posted November 5, 2010 Bonjour, désolé de m'incruster ^^ mais y aurait -t- il moyen que les valeur de groupe qui s'affiche soit en fonction des nom des groupe dans le panneau administrateur (c'est à dire que cela ne soit pas figé) et de plus que le nombre de groupe proposé dépende du nombre de groupe dans l'admin, de même que cela ne soit pas changé, car le gérant ne touchera pas au fichier mais juste au panneau d'admin. Merci de votre aide Link to comment Share on other sites More sharing options...
Missly Posted November 25, 2010 Share Posted November 25, 2010 Bonjour,J'ai testé les différentes propositions de Yoya971 (sous presta 1.2.5), le choix du groupe s'affiche lors de l'inscription, mais le client se retrouve automatiquement dans le groupe par défaut dans mon BO, et du coup les catégories visibles que sous son groupe choisi ne s'affichent pas.J'ai quasiment passé la journée dessus, et ne trouve vraiment pas la solution!!Si vous avez une idée, elle sera la bienvenue!!Merci d'avancePS: ce que je recherche : mon client s'inscrit dans un groupe et est enregistré dans ce groupe dans mon BO. Link to comment Share on other sites More sharing options...
Pr0j3ktil Posted January 7, 2011 Share Posted January 7, 2011 Bonjour,J'ai essayé de faire cette manip sur prestashop 1.4 mais les fichiers sont totalement différents, est-ce que qqn s'est penché sur le sujet ? Merci d'avance Link to comment Share on other sites More sharing options...
mehdi2405 Posted January 10, 2011 Share Posted January 10, 2011 les modifs marchent à une condition :il faut remplacer ca sur la solution du haut Professionnel <input checked type="radio" name="id_group_def" id="id_group1" value="1" {if isset($smarty.post.id_group) && $smarty.post.id_group == 8}checked="checked"{/if} /> Particulier par ca Professionnel <input checked type="radio" name="id_group_def" id="id_group1" value="1" {if isset($smarty.post.id_group) && $smarty.post.id_group == [b]Votre id[/b]}checked="checked"{/if} /> Particulier Link to comment Share on other sites More sharing options...
hkahil Posted January 19, 2011 Share Posted January 19, 2011 salutjai tester la metode d ARZEL ca marche bien par contrepourquoi quand je clique sur logout j arrive sur une page : monsite/category.php?id_category=8et vu que jai pas acces a cette categorie jai un message d erreurThere is 1 error : 1. you do not have access to this categoryje devrais retourner sur la page d autentificationmerci de bien vouloir m aider Link to comment Share on other sites More sharing options...
Smallville Posted April 1, 2011 Share Posted April 1, 2011 bonjour!Est-ce que vous pouvez m'aider car je crois que c'est la meilleur piste de contourner ces problèmes d'affectation de groupe!Je tourne sous prestashop 1.4 et les fichiers sont vraiment différents alors que ces codes la, ce les bestEst-ce qu'il y a quelqu'un qui pourra m'aider?merci Link to comment Share on other sites More sharing options...
insomniak Posted May 17, 2011 Share Posted May 17, 2011 Les codes ne sont plus les mêmes sur la 1.4 quelqu'un peut nous aider? Link to comment Share on other sites More sharing options...
Geoff95 Posted May 23, 2011 Share Posted May 23, 2011 Salut,J'ai essayé d'effectuer cette modification, mais pour l'ajout d'un champs select (et non radio), cependant j'ai un soucis, lors de la validation du formulaire, j'ai une erreur: Il y a 1 erreur : une erreur s'est produite pendant la création de votre compte mais le compte s'enregistre bien dans la table ps_customer, mais rien dans la table ps_address Voici mon code:authenticaption.tpl Rayon de vente estimé (autour de votre ville) - 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 *(valeurs en Km) authentication.php ligne 90 $rayon = $_POST['rayon']; Class/Custormer.php ligne 76 public $rayon; Class/Custormer.php ligne 80 protected $fieldsRequired = array('lastname', 'passwd', 'firstname', 'email', 'rayon'); Class/Custormer.php ligne 82-83 protected $fieldsValidate = array('secure_key' => 'isMd5', 'lastname' => 'isName', 'firstname' => 'isName', 'email' => 'isEmail', 'passwd' => 'isPasswd', 'id_gender' => 'isUnsignedId', 'birthday' => 'isBirthDate', 'newsletter' => 'isBool', 'optin' => 'isBool', 'active' => 'isBool', 'dni' => 'isDni', 'rayon' => 'isUnsignedId'); Class/Custormer.php ligne 111 $fields['rayon'] = pSQL($this->rayon); Class/Custormer.php ligne 115-127 public function add($autodate = true, $nullValues = true, $rayon) { $this->birthday = (empty($this->years) ? $this->birthday : intval($this->years).'-'.intval($this->months).'-'.intval($this->days)); $this->secure_key = md5(uniqid(rand(), true)); $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_FRONT').'minutes')); $this->id_default_group = 1; $res = parent::add($autodate, $nullValues); if (!$res) return false; $row = array('id_customer' => intval($this->id), 'id_group' => 1, 'rayon' => $rayon); return Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); } Class/Address.php ligne 76 public $rayon; Class/Address.php ligne 81 protected $fieldsRequired = array('lastname', 'passwd', 'firstname', 'email', 'rayon'); Class/Address.php ligne 85-90 protected $fieldsValidate = array('id_customer' => 'isNullOrUnsignedId', 'id_manufacturer' => 'isNullOrUnsignedId', 'id_supplier' => 'isNullOrUnsignedId', 'id_country' => 'isUnsignedId', 'id_state' => 'isNullOrUnsignedId', 'alias' => 'isGenericName', 'company' => 'isGenericName', 'lastname' => 'isName', 'firstname' => 'isName', 'address1' => 'isAddress', 'address2' => 'isAddress', 'postcode' => 'isPostCode', 'city' => 'isCityName', 'other' => 'isMessage', 'phone' => 'isPhoneNumber', 'phone_mobile' => 'isPhoneNumber', 'deleted' => 'isBool', 'rayon' => 'isUnsignedId'); Quelqu'un aurait une idée d'où ça provient? Link to comment Share on other sites More sharing options...
Geoff95 Posted May 25, 2011 Share Posted May 25, 2011 Salut,Personne n'a une idée sur ce problème?Geoffrey. Link to comment Share on other sites More sharing options...
Ornot Posted June 12, 2011 Share Posted June 12, 2011 Bonjour,j'ai créé 2 groupes, l'un par défaut, le groupe des particuliers, l'autre groupe, le groupe des professionnels. Groupe 1 et Groupe 2le hack signalé au-dessus est bon , mais j'ai mis kks heures à le mettre en place sous PS 1.4.0voici la démarche:dans le fichier /themes/autentification.tplvous ajouter le code suivant à la ligne 330: Vous êtes <input type="radio" name="id_group_def" id="id_group2" value="2" {if isset($smarty.post.id_group) && $smarty.post.id_group == 6}checked="checked"{/if} /> Professionnel <input checked type="radio" name="id_group_def" id="id_group1" value="1" {if isset($smarty.post.id_group) && $smarty.post.id_group == 8}checked="checked"{/if} /> Particulier authentification.php ne doit pas être modifié mais bien le fichier maboutique.com/controllers/AuthController.phpà la ligne 88 vous ajoutez $groupId = $_POST['id_group_def']; dans le meme fichier à la ligne 160 $customer->active = 1; if (!$customer->add()) $this->errors[] = Tools::displayError('An error occurred while creating your account.'); else doit être remplacé par $customer->active = 1; if (!$customer->add(true,true,$groupId)) $this->errors[] = Tools::displayError('An error occurred while creating your account.'); else et puis vous remplacé le code à la ligne 145 du fichier /classes/custoer.php public function add($autodate = true, $nullValues = true) { $this->birthday = (empty($this->years) ? $this->birthday : (int)($this->years).'-'.(int)($this->months).'-'.(int)($this->days)); $this->secure_key = md5(uniqid(rand(), true)); $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_FRONT').'minutes')); if (empty($this->id_default_group)) $this->id_default_group = 1; if ($this->is_guest AND !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) return false; if (!parent::add($autodate, $nullValues)) return false; $row = array('id_customer' => (int)($this->id), 'id_group' => (int)$this->id_default_group); return Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); } par celui-ci public function add($autodate = true, $nullValues = true, $groupId) { $this->birthday = (empty($this->years) ? $this->birthday : intval($this->years).'-'.intval($this->months).'-'.intval($this->days)); $this->secure_key = md5(uniqid(rand(), true)); $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_FRONT').'minutes')); $res = parent::add($autodate, $nullValues); if (!$res) return false; $row = array('id_customer' => intval($this->id), 'id_group' => $groupId); $result = Db::getInstance()->ExecuteS('UPDATE '._DB_PREFIX_.'customer SET id_default_group = '.$groupId.' WHERE id_customer = '.intval($this->id)); return Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); } voilà cela fonctionne chez moi et dans le FO et dans le BOj'aimerais posé une question j'aimerais bien que le panier soit vidé quand c'est un professionnel qui vient de se logger et à déjà mis des produits dans son panier,je sais que pour vider le panier c'est le code suivant: $cart->delete(); mais il faut intérroger la base et mettre tout le code kk'un pourrait m'aider à ce sujet,bon courage,ornot Link to comment Share on other sites More sharing options...
Intra Posted August 23, 2012 Share Posted August 23, 2012 Merci bien Ornot! Link to comment Share on other sites More sharing options...
Jeform Posted November 29, 2012 Share Posted November 29, 2012 (edited) très intéressant, je tente cet aménagement sur mon PS 1.4.7.0 , mais j'ai un soucis qui ne doit pas être insurmontable. je pense que cela provient de l'ID des groupes créés. lorsque je valide le formulaire d'inscription en choisissant l'option professionnel le client est enregistre dans un groupe qui n'existe pas, si je regarde dans la BDD j'ai 0 en ID defaut group alors que dans la table group je n'ai que 1, 2 et 3 en IDgroup un petit coup de pouce svp ? Edited November 29, 2012 by graphismoweb (see edit history) Link to comment Share on other sites More sharing options...
qimzu Posted March 25, 2013 Share Posted March 25, 2013 Bonjour, Désolé de remonter ce vieux post, mais cela peut en intéresser certains. Nous avons mis à jour notre module Account Group (presta 1.5) qui permet entre autre de donner le choix aux clients de choisir leur groupe à la création de leur compte, de pouvoir rendre le choix automatique ou modéré par un administrateur, recevoir des infos par mail... N'hésitez à faire un tour sur la page du module, il y a une vidéo de démonstration qui montre l'admin, le front office, les mails qu'on peut recevoir, la validation de l'administrateur (back-office ou par mail). Plus d'info sur la page web du module. Cordialement, Quentin Link to comment Share on other sites More sharing options...
renaudbiemans Posted August 14, 2013 Share Posted August 14, 2013 @qimzu Dommage que votre module soit si cher, ça m'aurait intéressé pour la moitié du prix avec la moitié des fonctionnalités @les_autres Quelqu'un a trouvé une solution propre avec la récupération automatique des groupes existants en liste déroulante ? Link to comment Share on other sites More sharing options...
rachel01 Posted January 31, 2014 Share Posted January 31, 2014 Petit up Quelqu'un aurait la solution pour la version 1.5.4.1 ? Merci! Link to comment Share on other sites More sharing options...
trinkyz Posted July 8, 2014 Share Posted July 8, 2014 up, quelqu'un l'a-t-il adapté pour 1.5 ? Merci ! Link to comment Share on other sites More sharing options...
sleepow Posted February 17, 2015 Share Posted February 17, 2015 (edited) salut tout le monde, Je cherche comment adapter cette solution pour la version 1.6.0.6? merci de me venir en aide Edited February 17, 2015 by sleepow (see edit history) Link to comment Share on other sites More sharing options...
Regaton Posted March 10, 2015 Share Posted March 10, 2015 Pareil pour la version 1.6.13... Et le module "Account group" il est mort ? Une aide sur ce coup svp ! Link to comment Share on other sites More sharing options...
Regaton Posted March 10, 2015 Share Posted March 10, 2015 J'ai trouvé Extended Registration Il me convient parfaitement ! Link to comment Share on other sites More sharing options...
Klemart3D Posted March 25, 2015 Share Posted March 25, 2015 Pour la 1.6.x, il n'y a plus beaucoup de manips à faire (du moins, pas suffisamment pour justifier l'achat d'un module, à mon sens). Pour faire ça proprement, overrider le fichier "controllers/front/AuthContoller.php" dans "override/controllers/front/AuthContoller.php" et remplacer la classe existante par : class AuthController extends AuthControllerCore Puis, en dessous de $customer = new Customer(); (ligne 51), ajouter votre hack qui contient un test des champs "société" et "siret" et l'attribution du groupe sélectionné comme celui par défaut : // Start multi-group hack // $id_group = (Tools::getIsset('id_group')) ? Tools::getValue('id_group') : 1; if($id_group == '4') { if(!Tools::getValue('company')) $this->errors[] = Tools::displayError('Merci de renseigner le nom de votre société.'); else $customer->societe = $_POST['company']; if(!Tools::getValue('siret')) $this->errors[] = Tools::displayError('Merci de renseigner un numéro SIRET valide à 14 chiffres.'); else $customer->siret = $_POST['siret']; $customer->id_default_group = $id_group; } // End multi-group hack // Vous pouvez nettoyer le reste de la class en ne laissant que la fonction"protected function processSubmitAccount()" pour y voir un peu plus clair (environ 300 lignes). Et dans le fichier authentication.tpl de votre thème : <div class="radio-inline required radio"> <input type="radio" name="id_group" id="id_group1" value="1" {if isset($smarty.post.id_group) && $smarty.post.id_group == '1'}checked="checked"{/if} checked/> <label for="id_group1">{l s='Particulier'}</label> </div> <div class="radio-inline required radio"> <input type="radio" name="id_group" id="id_group4" value="4" {if isset($smarty.post.id_group) && $smarty.post.id_group == '4'}checked="checked"{/if} /> <label for="id_group4">{l s='Professionnel'}</label> </div> Et au besoin, le petit JS d'animation qui va bien, en fin de page du même fichier : <script type="text/javascript" charset="utf8"> if($('input#id_group4').is(':checked')) $('.infosPro').show(); else $('.infosPro').hide(); $('input[name=id_group]').change(function() { if($(this).val() == '4' && !$('.infosPro').is(':visible')) $('.infosPro').slideDown(300); else $('.infosPro').slideUp(300); }); $('#submitAccount').click(function(){ var certification=document.createElement('span'); certification.innerHTML='{l s='Alert certification unchecked'}'; if($('input#id_group4').is(':checked') && !$('#infos_exactes').is(':checked')) { alert(certification.innerHTML); return false; } }); </script> Voilà, comme j'y ai retouché à plusieurs fois, j'espère ne rien oublier. Link to comment Share on other sites More sharing options...
murdok Posted September 10, 2015 Share Posted September 10, 2015 Bonjour Klemard j'ai voulu faire cette manip mais je n'ai pas $customer = new Customer(); dans AuthContoller.php je suis en 1.6.0.14 merci Link to comment Share on other sites More sharing options...
Streize Posted June 24, 2016 Share Posted June 24, 2016 (edited) Salut, avec la méthode de Klemart3D Dés que je touche au AuthContoller.php, j'ai un écran blanc. Je ne sais pas d'où vient l'erreur, synthaxe ou incompatibilité avec la dernière version de presta? Merci de votre aide Edited June 24, 2016 by Streize (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now