Groupes de clients Prestashop

Maxime

Modifié le : Mer, 28 Févr., 2024 à 11:31 H

Les groupes de clients permettent à Prestashop de :

  • gérer les droits d'accès aux modules,
  • gérer les droits d'accès aux catégories de produits,
  • gérer des prix spécifiques.


Prestashop applique un prix spécifique seulement sur le groupe de client par défaut.


Autre point important, lors de la création d'un groupe de client, Prestashop affecte de manière inappropriée les droits d'accès aux catégories de produits. Plusieurs anomalies sont signalées en ce sens sur le dépôt GitHub de Prestashop, non corrigées lors de la mise à jour de cet article.


Conséquence, si on affecte à un client un groupe par défaut créé automatiquement, il perdra l'accès à certaines parties du site, comme les catégories.


C'est pour cela qu'E-connecteur ne permet pas, tant que Prestashop n'aura pas résolu ces anomalies, de changer automatiquement le groupe par défaut.


Or, il convient donc, pour appliquer un prix spécifique à un groupe de client, de changer le groupe de client par défaut dans PrestaShop.



Plusieurs solutions s'offrent à vous pour cela :


Option 1 : affecter les groupes de clients côté Prestashop


Définir, côté PrestaShop, une stratégie de définition des groupes de client, sans passer par votre gestion commerciale. Cela doit être réalisé automatiquement, par exemple avec un module disponible ici, en réaction à la création et à la mise à jour d'un client. 


Il n'est pas possible de modifier manuellement le groupe par défaut, car E-connecteur mettra à jour tôt ou tard les clients. La mise à jour doit être automatique, avec le mécanisme de hook Prestashop.



Option 2 : prendre le prix spécifique des groupes en plus du groupe par défaut


À l'aide d'une surcharge de PrestaShop, réalisée par votre développeur, vous pouvez prendre le prix spécifique d'autre groupe de client. Voici un exemple pour réaliser cette opération, bien qu'il fonctionne dans de nombreux cas de figure, il peut être nécessaire de l'adapter à votre contexte.


L'idée de ce code est d'être simple à mettre en œuvre, facile à maintenir. Il faut donc peu de ligne de code. C'est pour cela que les appels aux différentes méthodes ne sont pas ré-écrites dans cet exemple, bien que des paramètres deviennent obsolètes.


Le prix est défini par la méthode getSpecificPrice de la classe SpecificPrice. La méthode trouve le prix spécifique applicable, pour l'id_group passé en paramètre. Cet id_group est l'id du groupe de client par défaut. L'idée est de ne plus utiliser le paramètre de la méthode en utilisant la liste de tous les groupes affectés au client dont l'id est $id_customer.


Au début de la méthode, redéfinissez donc $id_group :


$id_group = '(0,' . implode(',', array_map('intval', Customer::getGroupsStatic((int) $id_customer))) . ')';


Ensuite, corrigez la requête SQL vers la fin de la méthode, en supprimant la méthode self::formatIntInQuery puisque la chaine est formatée et sécurisée juste avant :


`id_group` IN ' . $id_group . ' ' . $query_extra . '


Cette idée de surcharge pourra vous aider à appliquer une solution valide dans votre contexte.



Cet article a-t-il été utile ?

C'est super !

Merci pour votre commentaire

Désolé ! Nous n'avons pas pu vous être utile

Merci pour votre commentaire

Dites-nous comment nous pouvons améliorer cet article !

Sélectionner au moins l'une des raisons

Commentaires envoyés

Nous apprécions vos efforts et nous allons corriger l'article