PS PrestaShop Intermédiaire

Prix par Pays, Boutique & Devise : documentation

Créer des règles, comprendre le calcul du prix, simuler, recalculer, annuler un recalcul et automatiser par cron.

Mis à jour Version du module 1.1.4

Prix par Pays, Boutique & Devise applique un coefficient de marge et un arrondi psychologique par marché, puis écrit le résultat sous forme de prix spécifiques PrestaShop natifs. Ce guide couvre l’installation, la création des règles, le calcul du prix, la simulation, le recalcul, l’annulation d’un recalcul et l’automatisation par cron.

Installation et mise à jour

Le module est compatible PrestaShop 8.0 à 9.x, en mono comme en multi-boutique.

  1. Dans le back-office, ouvrez Modules > Gestionnaire de modules, cliquez sur Téléverser un module et sélectionnez le fichier ZIP.
  2. Le module crée ses tables, un onglet DF Multi Price sous Catalogue et un jeton de cron.
  3. Ouvrez la configuration du module pour régler l’application automatique, la taille des lots et récupérer l’URL du cron.

Vous venez de la version 1.0.0 ? Recalculez vos règles après la mise à jour, en particulier celles liées à une devise autre que la devise par défaut : la 1.0.0 enregistrait ces prix dans la mauvaise devise. Les anciennes règles gardent leur comportement, avec les options « Tarifer chaque déclinaison » et « Préserver les promotions en cours » désactivées. Activez-les dans chaque règle si besoin.

Créer une règle de prix

Ouvrez Catalogue > DF Multi Price puis cliquez sur Ajouter une règle. Le formulaire est découpé en quatre blocs.

Qui voit ce prix

  • Boutique : une boutique précise ou toutes. Avec « Toutes les boutiques », les prix de base sont lus dans la boutique par défaut.
  • Pays : sa TVA sert à calculer le prix TTC arrondi. Un visiteur sans adresse est rattaché au pays par défaut de la boutique, sauf si la géolocalisation est activée, et changer de devise ne change pas son pays. Une règle pour un autre pays ne touche donc que les clients ayant une adresse dans ce pays. Pour une règle par devise, gardez « Tous les pays ».
  • Devise : créez une règle par devise pour maîtriser la terminaison dans chacune. Avec « Toutes les devises », le prix est exprimé dans la devise par défaut et PrestaShop le convertit pour les autres devises, qui perdent alors la terminaison.
  • Groupe de clients : pour des tarifs B2B. Les réductions de groupe définies dans Clients > Groupes s’appliquent toujours en plus.

Quels produits

  • Catégorie : la catégorie et toutes ses sous-catégories, ou tout le catalogue.
  • Marque : limite la règle à une marque.
  • Produits exclus : ID produits séparés par des virgules.
  • Préserver les promotions en cours : voir la section dédiée plus bas.

Construction du prix

  • Base de prix : prix de vente HT ou prix d’achat. Avec le prix d’achat, les produits sans prix d’achat sont ignorés.
  • Coefficient de marge : prix = base x coefficient. 1,20 ajoute 20 %. Indiquez 1 pour n’appliquer que l’arrondi.
  • Tarifer chaque déclinaison : recommandé. Chaque déclinaison reçoit son propre prix, impact compris. Sans cette option, PrestaShop ajoute l’impact de la déclinaison après l’arrondi et la terminaison est perdue.
  • Arrondi : terminaison la plus proche, toujours au-dessus, toujours en dessous, ou pas d’arrondi.
  • Terminaison psychologique : x,90, x,95, x,99, x,50 ou x,00.
  • Pas d’arrondi : arrondit au multiple d’un pas au lieu d’une terminaison. Pas disponibles : 0,05, 0,10, 0,20, 0,25, 0,50, 1, 5 et 10. Le sens suit le champ Arrondi : avec 0,10 au plus proche, 23,47 devient 23,50 ; avec 10 toujours au-dessus, 23,47 devient 30 ; avec 10 toujours en dessous, 20. Quand un pas est choisi, il remplace la terminaison. Le prix n’est jamais arrondi à zéro : il vaut au moins un pas. « Aucun » (par défaut) garde la terminaison.
  • Arrondir le prix TTC : recommandé en B2C. À désactiver pour des tarifs B2B affichés HT : l’arrondi porte alors sur le prix HT.

Garde-fous

  • Prix minimum : prix affiché minimum, dans la devise de la règle. 0 = aucun minimum.
  • Marge minimale sur le prix d’achat : coefficient sous lequel le prix ne descend jamais, par exemple 1,15. S’applique aux produits qui ont un prix d’achat. 0 = désactivé.
  • Priorité : les valeurs basses passent en premier. Si deux règles visent la même boutique, le même pays, la même devise et le même groupe, la première garde le prix et l’autre compte un conflit.
  • Active : désactiver une règle retire les prix qu’elle a générés.

Comment le prix final est calculé

L’arrondi n’a de sens que sur le montant affiché au client. Le moteur suit donc cette séquence :

  1. Prix de base HT (déclinaison comprise si l’option est active) multiplié par le coefficient.
  2. Conversion dans la devise de la règle, au taux de change de la boutique.
  3. Passage en TTC avec la TVA du pays de la règle, écotaxe ajoutée si elle est activée dans PrestaShop.
  4. Arrondi à la terminaison choisie, ou au multiple du pas si un pas d’arrondi est défini.
  5. Application du prix minimum puis de la marge minimale, arrondis vers le haut.
  6. Retour au prix HT, enregistré dans la devise de la règle.

Exemple : un prix de base de 69,99 € HT, un coefficient de 1,20, une TVA à 19 % et une terminaison x,99 donnent 99,99 € TTC en boutique.

Un prix spécifique lié à une devise est lu par PrestaShop dans cette devise, sans conversion. C’est pourquoi le module l’enregistre directement dans la devise de la règle : une règle en livres sterling affiche bien le montant en livres calculé par la règle.

Vérifier un prix en boutique

Le panneau Vérifier un prix en boutique, au-dessus de la liste des règles, reproduit le calcul de PrestaShop pour un contexte précis. Saisissez un ID produit, et un ID déclinaison si besoin, puis choisissez la boutique, le pays (celui de la boutique par défaut), la devise et le groupe (Visiteur par défaut). Le panneau affiche :

  • le pays auquel sont rattachés les visiteurs sans adresse et l’état de la géolocalisation ;
  • le prix affiché, HT ou TTC selon le groupe ;
  • le prix spécifique retenu par PrestaShop et son origine : règle du module, prix saisi à la main ou règle de prix catalogue ;
  • le statut de chaque règle : appliquée, autre contexte (avec la boutique, le pays, la devise ou le groupe qu’elle vise), produit hors de la règle, à recalculer, promotion préservée, ou masquée par un autre prix spécifique.

La liste des règles affiche aussi un avertissement quand une règle vise un pays différent du pays par défaut de sa boutique sans géolocalisation, ou quand une règle « Toutes les boutiques » couvre des boutiques aux pays par défaut différents.

Simuler avant d’appliquer

Dans la liste des règles, l’action Simuler ouvre une fenêtre qui affiche, pour les premiers produits ciblés, le prix actuel en boutique, le nouveau prix et l’écart en pourcentage. Rien n’est enregistré. Les produits laissés de côté apparaissent avec leur raison : promotion en cours ou absence de prix de base.

L’action Exporter l’aperçu CSV produit la liste complète (ID produit, ID déclinaison, référence, nom, prix actuel, nouveau prix, prix stocké HT, statut), au format point-virgule lisible dans Excel.

Recalculer

  • L’action Recalculer d’une règle applique cette règle au catalogue.
  • Le bouton Recalculer toutes les règles actives de la barre d’outils enchaîne les règles par ordre de priorité.

Le traitement se fait par lots, avec une barre de progression puis un bilan :

  • Créés, Mis à jour, Inchangés : prix écrits par la règle.
  • Promotions préservées : produits laissés intacts car en promotion.
  • Conflits : prix déjà tenus par une règle prioritaire aux mêmes dimensions.
  • Ignorés : produits sans prix de base exploitable.
  • Retirés : prix supprimés ou rendus au marchand, par exemple pour un produit sorti du périmètre de la règle.

Une règle modifiée après son dernier recalcul affiche le badge À recalculer dans la liste. La taille des lots (10 à 500 produits) se règle dans la configuration du module.

Annuler un recalcul

Chaque recalcul, manuel ou par cron, mémorise l’état d’avant de chaque prix qu’il touche. Pour revenir en arrière :

  • dans la liste des règles, action Annuler le dernier recalcul ;
  • ou, dans la configuration du module, bouton Annuler de l’historique.

L’annulation supprime les prix créés par le recalcul, rend leur valeur aux prix modifiés et recrée les prix retirés. Elle fonctionne dans l’ordre inverse : on annule d’abord le recalcul le plus récent, puis le précédent, jusqu’à 5 recalculs en arrière par règle. Un recalcul interrompu (fenêtre fermée en cours de traitement) est annulable une heure après son démarrage.

Après une annulation, la règle affiche À recalculer, puisque les prix ne correspondent plus à son réglage. Modifiez la règle si besoin, simulez, puis recalculez.

La règle doit être active pour annuler son recalcul. Les recalculs effectués avec la version 1.0.0 ou 1.1.0 ne sont pas annulables : l’annulation fonctionne à partir du premier recalcul fait en 1.1.1.

Promotions et prix saisis à la main

PrestaShop n’applique qu’un seul prix spécifique par produit : le plus précis l’emporte. Un prix par pays et par devise masquerait donc une promotion plus large. Avec l’option Préserver les promotions en cours, un produit qui a une réduction active (hors module) est laissé intact, puis repris au premier recalcul après la fin de la promotion. Planifiez le cron pour que ce retour soit automatique.

Si un prix fixe saisi à la main existe déjà aux mêmes dimensions que la règle, sans réduction ni dates, la règle le reprend au lieu de créer un doublon. Sa valeur d’origine est conservée et lui est rendue à l’annulation du recalcul, à la désactivation ou à la suppression de la règle, ou à la désinstallation du module. Les promotions et les prix aux autres dimensions ne sont jamais modifiés.

Automatiser avec le cron

L’URL du cron, protégée par un jeton, est affichée dans la configuration du module :

https://votreboutique.com/index.php?fc=module&module=dfmultiprice&controller=cron&token=VOTRE_JETON

Ajoutez &id_rule=3 pour ne recalculer qu’une règle. Planifiez l’URL chez votre hébergeur, par exemple chaque nuit : les prix suivent ainsi les variations de taux de change, de prix d’achat et la fin des promotions. Le cron renvoie un bilan JSON par règle et chaque passage est annulable comme un recalcul manuel. En cas de fuite du jeton, régénérez-le dans la configuration : l’ancienne URL cesse de fonctionner.

Application automatique

Si l’option est activée, la création ou la modification d’un produit ou d’une déclinaison applique les règles actives à ce produit. Pratique pour les imports réguliers.

PrestaShop ne déclenche pas les hooks d’un module pour un employé qui n’a pas le droit « Voir » sur ce module. Gardez le cron comme filet de sécurité.

Historique

La configuration du module liste les 20 derniers recalculs : date, règle, origine (manuel ou cron), statut, compteurs et nombre de modifications enregistrées pour l’annulation.

Désactivation, suppression et désinstallation

  • Désactiver ou supprimer une règle retire les prix qu’elle a générés et rend leur valeur aux prix manuels qu’elle avait repris.
  • Dupliquer une règle crée une copie désactivée, prête à être adaptée à un autre marché.
  • La désinstallation retire tous les prix générés et rend leur valeur aux prix manuels repris.

Dépannage

Un produit n’est pas mis à jour

Vérifiez qu’il est actif sur la boutique de la règle, qu’il appartient à la catégorie et à la marque ciblées et qu’il n’est pas exclu. Lancez une simulation : le statut indique s’il est en promotion ou sans prix de base. En base « prix d’achat », il lui faut un prix d’achat.

Le prix affiché n’a pas la bonne terminaison

Vérifiez que « Arrondir le prix TTC » est activé et que le pays de la règle correspond à celui du client. Pour une déclinaison avec impact, activez « Tarifer chaque déclinaison ». Dans une autre devise que celle de la règle, le prix est converti par PrestaShop : créez une règle pour cette devise.

Le prix est bon en euros mais pas dans une autre devise

La règle est réglée sur « Toutes les devises » : le prix est enregistré dans la devise par défaut et PrestaShop le convertit, par exemple 23,90 € en 27,84 $. La terminaison n’est pas conservée. Le panneau Vérifier un prix montre alors le même prix spécifique dans les deux devises. Créez une règle par devise, avec Pays sur « Tous les pays », puis recalculez.

Une règle par pays ne s’applique pas aux visiteurs

Les visiteurs sans adresse sont rattachés au pays par défaut de la boutique. Une règle pour un autre pays ne s’applique qu’aux clients ayant une adresse dans ce pays, ou à tous les visiteurs de ce pays si la géolocalisation est activée (International > Localisation > Géolocalisation).

La terminaison est décalée sur une seule boutique

En multi-boutique, l’arrondi utilise la TVA du pays par défaut de la boutique visée par la règle. Une règle « Toutes les boutiques » se base sur la boutique par défaut : si vos boutiques n’ont pas le même pays par défaut, créez une règle par boutique.

La terminaison n’apparaît pas sur le prix HT affiché aux visiteurs

Si le groupe Visiteur affiche les prix HT, désactivez « Arrondir le prix TTC » : la terminaison porte alors sur le prix HT que voient les visiteurs.

Le bilan affiche des conflits

Une autre règle aux mêmes boutique, pays, devise et groupe tient déjà ces prix. Ajustez les priorités ou fusionnez les deux règles.

Le bouton Annuler n’apparaît pas

Seul le dernier recalcul de chaque règle est annulable, à condition qu’il ait été fait en 1.1.1 et qu’il fasse partie des 5 derniers. Un recalcul en cours depuis moins d’une heure n’est pas encore annulable.

Le cron renvoie « Invalid token »

Le jeton de l’URL ne correspond plus à celui enregistré. Récupérez l’URL à jour dans la configuration.

Un badge « -0,00 € » apparaît sur certains produits

Ce n’est pas un problème de thème. PrestaShop 8.1 et plus calcule la réduction affichée en soustrayant le prix arrondi à 2 décimales du prix sans réduction, gardé à 6 décimales. Le prix d’une règle étant enregistré HT, le retour au TTC laisse parfois un écart de 0,000001 avec une TVA à 19, 21 ou 23 %, que le thème affiche comme une réduction de -0,00 €. Depuis la version 1.1.4, le module neutralise cet écart sur ses propres prix : mettez le module à jour puis videz le cache dans Paramètres avancés > Performances. Aucun recalcul n’est nécessaire.

Cette page vous a-t-elle été utile ?

Toujours bloqué ? Contactez le support