- moduł został przepisany kompletnie pod PrestaShop 9.x
À quoi sert le module
- Programme de fidélité sans coupons. Un client fidèle passe automatiquement à un niveau supérieur, et voit immédiatement les prix réduits dans le catalogue, sur la fiche produit et dans le panier.
- Récompense de l’activité récente. Avec un total calculé sur les 3, 12 ou 24 derniers mois, le niveau dépend des achats effectués pendant cette période, et non de tout l’historique du client.
- Remise selon la valeur de la commande. Avec des totaux incluant le panier, le client peut atteindre un niveau supérieur dès la passation de la commande.
- Groupes B2B et prix HT. Le niveau est un groupe clients PrestaShop standard, il fonctionne donc aussi avec les groupes qui affichent les prix HT.
Niveaux de remise
- Niveau = plage de montants + groupe clients. Chaque niveau a un montant minimum et maximum dans la devise par défaut de la boutique ainsi qu’un groupe clients PrestaShop attribué. Le pourcentage de remise est la remise de ce groupe, définie dans Clients > Groupes.
- Nom et avantage du niveau. Nom facultatif (par ex. Silver, Gold, Platinum) et courte description de l’avantage, par ex. « Support prioritaire » – vous remplissez les deux champs séparément pour chaque langue de la boutique et le client les voit dans le panier ainsi que sur la page de récapitulatif.
- Contrôle de validité. Les plages ne peuvent pas se chevaucher, les montants sont arrondis à deux décimales avant vérification, un groupe clients ne peut appartenir qu’à un seul niveau, et les groupes Visiteur et Invité ne peuvent pas être utilisés comme niveau.
- Intervalles vides et totaux au-dessus des seuils. Un total qui tombe dans un intervalle vide entre les niveaux (par ex. 0–499 et 500–999) ou qui dépasse le maximum du niveau le plus élevé laisse le client au niveau le plus élevé déjà atteint.
- Groupe hors seuils. Un client dont le total n’atteint pas le premier seuil est affecté au groupe par défaut choisi – généralement le groupe standard Client avec une remise de 0 %.
- Création rapide d’un groupe. Le bouton « Créer un groupe de remise » dans l’onglet des niveaux ouvre le formulaire de nouveau groupe clients dans PrestaShop.
Comment le total du client est calculé
Neuf modes de calcul
- Total des commandes prises en compte (historique complet).
- Total des commandes prises en compte des 3, 12 ou 24 derniers mois.
- Total des commandes prises en compte + panier en cours (historique complet ou 3, 12 ou 24 derniers mois).
- Valeur actuelle du panier.
Ce qui est inclus dans le total
- Uniquement les statuts de commande sélectionnés. Lors de l’installation, les statuts payés sont cochés : paiement accepté, préparation en cours, expédié, livré, paiement en attente payé et paiement à distance accepté. Si les statuts comptabilisés incluent des statuts de commandes non payées, les paramètres affichent un avertissement.
- Produits selon les prix de la commande. Les lignes de commande sont comptées aux prix auxquels elles ont été vendues (hors codes promo), et les quantités faisant l’objet d’un retour produit ou d’un remboursement sont déduites. Une commande dont toutes les quantités ont été retournées n’ajoute pas les frais de livraison.
- Livraison et taxe au choix. Des interrupteurs séparés permettent d’exclure du total les frais de livraison et la taxe.
- Plusieurs devises. Les commandes dans une autre devise sont converties dans la devise par défaut de la boutique au taux enregistré dans la commande.
- Périodes calendaires dans le fuseau horaire de la boutique. Les « 3 derniers mois » sont calculés à partir du même jour du mois, et en cas de mois plus court – à partir de son dernier jour (31 mai moins 3 mois = 28 ou 29 février).
Total avec le panier en cours
- Niveau selon les prix de ce niveau. Le client obtient le niveau le plus élevé dont le seuil est atteint par le total des commandes et du panier évalué aux prix de ce niveau précis – de la même manière que les commandes comptent les montants réellement payés. Grâce à cela, le niveau ne change pas à chaque actualisation de la page et ne baisse pas après le paiement du panier.
- Commande en attente de paiement. Une commande, par ex. par virement bancaire, maintient le niveau actuel tant que le panier est vide, de sorte que le niveau ne baisse pas sur la page de confirmation de commande. Elle n’augmente toutefois jamais le niveau, et un nouveau panier est évalué uniquement à partir des commandes payées.
Quand le niveau change
- À l’entrée dans la boutique. Le niveau du client connecté est recalculé sur chaque page de la boutique, donc l’expiration de la période ou de la protection s’applique dès l’affichage suivant. La page sur laquelle le niveau change affiche déjà les prix du nouveau niveau.
- Après modification du panier. Le bloc de niveau et le bloc d’économies dans le panier se rafraîchissent automatiquement (AJAX) après l’ajout ou la suppression d’un produit.
- Après changement du statut de commande. Le paiement d’une commande augmente le total, et son annulation ou son retour le diminue – le changement de statut dans le back-office recalcule immédiatement le niveau du client.
- En masse depuis le back-office. La synchronisation affecte tous les clients aux groupes appropriés, par ex. après l’installation du module ou après modification des seuils.
- Notifications par e-mail. Un e-mail facultatif informe le client du changement de niveau, indique le total actuel et le pourcentage de remise. Les modèles sont disponibles en 9 langues : polonais, anglais, allemand, français, espagnol, italien, tchèque, russe et ukrainien. Pour les totaux avec panier, un changement déclenché par le panier envoie au maximum un e-mail par jour.
- Historique des changements. Chaque promotion, rétrogradation, affectation au groupe par défaut, début et expiration de la protection est enregistré avec la date et le total du client.
Période de protection du niveau
- Maintien du niveau après baisse du total. Une fois la protection activée, le client conserve son niveau actuel pendant le nombre de jours défini (jusqu’à 3650), avant que le module n’autorise sa baisse.
- Uniquement pour un niveau obtenu par les commandes. La protection démarre lorsqu’une commande prise en compte est annulée ou retournée, ou lorsque des commandes sortent de la période de 3, 12 ou 24 mois. Un niveau atteint uniquement grâce au contenu du panier n’est pas protégé.
- Visible pour le client. Le bloc dans le panier et la page de récapitulatif affichent la date jusqu’à laquelle la protection est active. Après son expiration, le niveau change lors de l’affichage suivant de la boutique.
Règles de cumul des remises et exclusions
- Ne pas cumuler avec les remises produit. La remise de groupe ne s’applique pas aux produits qui ont déjà un prix spécifique ou une autre remise produit.
- Ne pas cumuler avec les coupons et remises panier. La remise de groupe n’est pas appliquée lorsqu’un code promo ou une autre règle panier est présent dans le panier. L’ajout ou la suppression du code fait basculer les prix dans la même réponse de la boutique, et le bloc dans le panier informe le client que la remise de niveau ne s’applique pas à cette commande.
- Catégories, fabricants et fournisseurs exclus. Les produits correspondants peuvent être exclus du total du client, privés de la remise de groupe, ou les deux.
- Groupes clients ignorés. Les clients appartenant aux groupes indiqués sont ignorés par le module et conservent leurs groupes.
- Suppression des autres groupes de niveaux. Lors de l’attribution d’un nouveau niveau, le module peut retirer le client des autres groupes de niveaux. Les groupes Visiteur, Invité et Client sont toujours conservés.
Ce que voit le client dans la boutique
- Bloc « Votre remise cumulative » sur la page panier. Il affiche le niveau actuel, le total du client, le pourcentage de remise, l’avantage du niveau, la date de protection ainsi que la remise et le seuil du niveau suivant.
- Bloc « Économies grâce à la remise cumulative » dans le panier et lors de la commande. Il affiche combien le client économise grâce à la remise de groupe. Le montant est calculé selon le même chemin de prix que les prix de la boutique, en tenant compte des prix spécifiques, des exclusions et des règles de cumul des remises.
- « Prix avant remise de groupe » sur la fiche produit et dans l’aperçu rapide. Prix barré sans la remise de groupe, calculé pour la même quantité et dans le même mode de taxe que le prix affiché à côté.
- Page « Mon récapitulatif des remises » dans le compte client. Tableau de tous les niveaux avec seuils, avantages et montant de la remise, niveau actuel mis en évidence, progression vers le niveau suivant et historique des changements de niveau avec montants dans la devise du client.
- Lien dans le compte client. Marquages pour les thèmes Classic, Hummingbird 1.x (PrestaShop 9.0) et Hummingbird 2.x (PrestaShop 9.1).
- Uniquement pour les bons clients. Les blocs et le script de rafraîchissement ne sont visibles que par les clients connectés hors groupes ignorés, lorsque le module est activé et que des niveaux sont configurés.
Back-office
- En-tête avec contrôles d’état. Sur une seule barre : activation du module, nombre de niveaux, état des overrides de prix, notifications clients, protection du niveau et exclusions de produits.
- Quatre onglets. Tableau de bord, Niveaux de remise, Paramètres et Synchronisation des clients. Les paramètres sont divisés en sections : Général, Panier et finalisation de commande, Calcul, Règles de remise, Groupes et exceptions, Exclusions de produits.
- Tableau de bord. Nombre de niveaux, de clients enregistrés, de clients affectés à des niveaux, de protections actives et d’événements enregistrés. En plus : taux d’adoption du programme en pourcentage, répartition des clients par niveau et 20 derniers changements de niveau.
- Synchronisation en masse. Traitement par lots (de 10 à 500 clients, 100 recommandé) avec barre de progression, reprise après interruption et compteurs : traités, mis à jour, déjà corrects, ignorés, protégés, erreurs. Les e-mails pendant la synchronisation sont facultatifs et désactivés par défaut. La synchronisation n’est pas disponible pour le total « panier en cours uniquement ».
- Autorisations et sécurité. L’enregistrement des paramètres, des niveaux et la synchronisation nécessitent l’autorisation « configurer » du module ainsi que le droit de modifier la page des modules. Un employé avec simple droit de consultation ne voit ni les paramètres, ni les niveaux, ni les données clients. Chaque formulaire et chaque requête de synchronisation possède son propre jeton CSRF du module, même lorsque les jetons sont désactivés dans les URL du back-office.
Multiboutique
- Niveaux et paramètres pour chaque boutique. Chaque boutique a ses propres seuils, groupes, statuts de commande et autres paramètres.
- Niveau du client séparé dans chaque boutique. Lorsqu’il y a plus d’une boutique active, le module enregistre le niveau du client séparément pour chaque boutique et l’applique aux prix. Le groupe par défaut du client dans PrestaShop reste inchangé.
- Édition sécurisée. Les niveaux sont ajoutés et modifiés dans le contexte d’une seule boutique. Dans le contexte « Toutes les boutiques », la liste affiche une colonne boutique.
- Synchronisation et statistiques. Chaque client est évalué selon les seuils et paramètres de sa boutique, et les statistiques comptent les clients séparément pour chaque boutique.
Prix, commandes et documents
- Remise calculée par PrestaShop. La remise de niveau est une remise de groupe clients, elle s’applique donc partout où PrestaShop applique la remise de groupe : dans le catalogue, sur la fiche produit, dans le panier, dans la commande et sur la facture.
- Compatibilité avec le groupe natif PrestaShop. Des tests automatiques comparent les prix sur la fiche produit, la liste des produits, dans le panier, dans le récapitulatif de commande, dans les données de commande et sur la facture PDF avec le prix du même groupe dans PrestaShop lui-même.
- Overrides de classes. Le module installe des overrides des classes Product, Customer, Group, Order ainsi que des modèles de facture et d’avoir PDF. Le contrôle dans l’en-tête indique s’ils sont actifs.
- Filtre de prix dans la recherche à facettes. Le module adapte la requête de prix du module ps_facetedsearch afin qu’elle tienne compte des prix spécifiques du groupe résultant du niveau du client.
Compatibilité, installation et mise à jour
- PrestaShop 1.7.0–9.x, PHP 7.0–8.5. Les tests automatiques (Playwright, Chromium) couvrent PrestaShop 1.7.2.4, 1.7.5.2, 1.7.6.7, 1.7.7.2, 1.7.8.5, 1.7.8.10, 8.0.0, 8.1.7, 8.2.6, 9.0.2 et 9.1.5 sur PHP 7.0–8.1, avec les thèmes Classic, Warehouse et Hummingbird 2.x. La syntaxe de tous les fichiers est vérifiée sur PHP 7.0–8.5.
- Mise à jour depuis des versions antérieures. Les scripts de mise à jour couvrent les versions à partir de 1.5.7 ; la mise à jour depuis 1.6.3 et 1.8.2 est vérifiée par des tests. La mise à jour remplace les overrides installés par les anciennes versions par les versions actuelles, conserve une copie de chaque fichier modifié et, en cas de conflit avec un autre module, restaure les fichiers précédents.
- Réinitialisation et désinstallation. La réinitialisation répare les hooks, le schéma de base de données et les overrides sans perte des niveaux, des états clients ni de l’historique. La désinstallation supprime les tables et paramètres du module uniquement lorsque PrestaShop supprime réellement le module.
- Langues. Interface du module en polonais et en anglais, modèles d’e-mails en 9 langues.
Limites importantes de fonctionnement
- La remise de niveau est une remise en pourcentage du groupe clients PrestaShop – le module ne crée ni coupons ni règles panier.
- Le programme concerne les clients enregistrés ; les invités (achats sans compte) n’ont pas de niveau.
- Un retour partiel de quantités sans changement du statut de commande réduit le total, mais ne déclenche pas la période de protection.
- À la limite du seuil, avec des totaux incluant le panier, le bloc peut afficher un total égal au seuil du niveau suivant, bien que ce niveau n’ait pas été atteint. Le total dans le bloc est calculé aux prix du niveau actuel, et le seuil du niveau suivant – à ses prix plus bas.
- L’adaptation du filtre de prix ps_facetedsearch modifie le fichier de ce module ; elle est répétée lors de l’installation, de la mise à jour et de la réinitialisation du module, et annulée lors de la désinstallation.
- En mode multiboutique, les factures et avoirs PDF sur PrestaShop antérieur à 8.1.2 utilisent le groupe enregistré dans PrestaShop, et non le niveau de la boutique.
- Sur PrestaShop 1.7.7.x, une partie des textes du module dans la boutique s’affiche en anglais (limitation des traductions de modèles dans cette version de PrestaShop).
Lien vers la démo du module :
Démo du panneau d’administration :
https://moduly-prestashop.eu/rabaty-kumulacyjne/admin-dev
Démo du front-office :
https://moduly-prestashop.eu/rabaty-kumulacyjne