Documentation9 min de lecture

Promotions et fidélité : incompatibilités, limites, suggestions

Le module OCA `loyalty_incompatibility` (dépôt `sale-promotion`, version 18.0.1.0.0, licence AGPL-3) permet de définir des **règles d'incompatibilité entre promotions** — ce qu'Odoo ne prévoit pas, et sans quoi deux offres cumulées peuvent rendre une vente déficitaire. Vingt-quatre autres modules traitent les limites par client, les cadeaux multiples et la suggestion de promotions.

Étiquettes de promotion dans un magasin

Le mécanisme de promotions et de fidélité d'Odoo sait appliquer une remise, un bon ou un cadeau. Il ne sait pas dire que deux offres ne se cumulent pas, limiter une promotion à trois usages par client, exiger plusieurs produits pour la déclencher, ou en suggérer une au commercial.

Vingt-cinq modules communautaires ajoutent ces garde-fous — et terminent le dépôt sale-promotion.

Résumé

Huit modules étendent le mécanisme de fidélité lui-même : des règles d'incompatibilité entre promotions, une limite du nombre de promotions par client ou par commercial, des critères multi-produits, plusieurs cadeaux par promotion, un filtre de clientèle sur les règles, l'envoi en publipostage, la génération de bons sans notification par courriel, et une conversation sur les enregistrements de bons.

Neuf modules les branchent sur les commandes de vente : l'application automatique des bons sans intervention, des informations sur les promotions appliquées, un lien entre promotion et lignes générées, la suggestion de promotions sur la ligne de commande — avec ses deux variantes pour les cadeaux multiples et les critères multi-produits —, l'applicabilité par type de commande, par client, et les deux extensions correspondantes.

Quatre modules enfin les portent sur la boutique en ligne : une page de promotions, un assistant de suggestion permettant de configurer et d'appliquer une promotion depuis le site, et ses deux variantes pour les cadeaux multiples et les critères multi-produits.

L'essentiel

  • Des règles d'incompatibilité entre promotions.
  • Une limite du nombre de promotions par client ou par commercial.
  • Des critères multi-produits pour déclencher une offre.
  • Plusieurs cadeaux par promotion.
  • Un filtre de clientèle sur les règles de promotion.
  • L'application automatique des bons, sans intervention.
  • La suggestion de promotions sur la ligne de commande.
  • Une page de promotions et un assistant sur la boutique.

Ce que ces modules ajoutent à l'instance

FamilleModulesNombre
Mécanisme de fidélitéloyalty_incompatibility, loyalty_limit, loyalty_criteria_multi_product, loyalty_multi_gift, loyalty_partner_applicability, loyalty_mass_mailing, loyalty_coupon_no_mail, loyalty_program_chatter8
Commandes de ventesale_loyalty_auto_refresh, sale_loyalty_order_info, sale_loyalty_order_line_link, sale_loyalty_order_suggestion, sale_loyalty_order_suggestion_multi_gift, sale_loyalty_order_suggestion_multi_product, sale_loyalty_order_type_applicability, sale_loyalty_partner, sale_loyalty_partner_applicability9
Extensions croiséessale_loyalty_incompatibility, sale_loyalty_limit, sale_loyalty_criteria_multi_product, sale_loyalty_multi_gift4
Boutique en lignewebsite_sale_loyalty_page, website_sale_loyalty_suggestion_wizard, website_sale_loyalty_suggestion_wizard_multi_gift, website_sale_loyalty_suggestion_wizard_multi_product4

Le dépôt suit une structure régulière : un module étend le mécanisme de fidélité, un deuxième le branche sur les commandes de vente, un troisième sur la boutique en ligne.

Les garde-fous : incompatibilité et limites

Deux promotions cumulées — « 10 % sur la gamme » et « le troisième article offert » — peuvent transformer une vente rentable en vente à perte. Odoo les applique toutes les deux sans poser de question, et personne ne s'en aperçoit avant l'analyse de marge du trimestre.

loyalty_incompatibility permet de définir des règles d'incompatibilité entre promotions, et sale_loyalty_incompatibility les applique aux commandes de vente.

loyalty_limit restreint le nombre de promotions par client ou par commercial, avec sale_loyalty_limit côté commandes.

La limite par commercial est la plus intéressante : elle traite le cas où une remise exceptionnelle devient systématique chez une personne.

  • loyalty_criteria_multi_product permet des conditions multi-produits comme critère de promotion — l'offre se déclenche sur une combinaison, non sur un article. sale_loyalty_criteria_multi_product l'applique aux commandes.
  • loyalty_multi_gift permet de configurer plusieurs cadeaux par promotion, avec sale_loyalty_multi_gift côté commandes.
  • loyalty_partner_applicability définit un filtre de clientèle sur les règles : la promotion ne s'applique qu'aux clients satisfaisant le filtre. sale_loyalty_partner_applicability l'applique aux commandes.

Les remises et conditions tarifaires sont traitées dans remises, devises et taxes sur facture.

Les bons et leur traçabilité

  • loyalty_coupon_no_mail génère des bons sans déclencher de notification par courriel. Utile pour une génération en masse destinée à un autre canal de distribution.
  • loyalty_mass_mailing relie les promotions au publipostage, en s'appuyant sur le filtre de clientèle. Son README est réduit à sa catégorie.
  • loyalty_program_chatter ajoute une conversation et des activités sur les enregistrements de bons.

La conversation sur un bon paraît superflue jusqu'à la première contestation : un client affirme n'avoir jamais reçu son bon, ou l'avoir utilisé une seule fois. Sans historique, la discussion se règle à la parole.

Sur la commande de vente

sale_loyalty_order_suggestion (version 18.0.1.0.2) suggère les promotions applicables sur la ligne de commande. Deux variantes l'étendent : ..._multi_gift pour les cadeaux multiples, ..._multi_product pour les critères multi-produits.

La suggestion est le module qui fait vraiment travailler les promotions : un commercial ne connaît pas par cœur les douze offres en cours, et une promotion qu'on ne propose pas n'existe pas. L'afficher au moment de la saisie de ligne est le seul moment utile.

  • sale_loyalty_auto_refresh applique automatiquement les bons sans intervention de l'utilisateur.
  • sale_loyalty_order_info ajoute sur la commande des informations sur les promotions appliquées.
  • sale_loyalty_order_line_link crée un lien entre une promotion et les lignes de commande qu'elle a générées, pour faciliter le suivi.
  • sale_loyalty_order_type_applicability configure les types de commande sur lesquels un programme de fidélité est disponible, en s'appuyant sur le module de types de commande.
  • sale_loyalty_partner complète le lien entre partenaire et promotions. Son README est réduit à sa catégorie.

Le lien entre promotion et lignes générées répond à une question d'analyse : combien cette offre a-t-elle coûté. Sans lui, les lignes de remise sont anonymes et le coût d'une campagne se devine.

Sur la boutique en ligne

website_sale_loyalty_page (LGPL-3) ajoute une page de promotions sur la boutique. Son README est réduit à sa catégorie.

website_sale_loyalty_suggestion_wizard ajoute un assistant suggérant les promotions et permettant de les configurer et de les appliquer directement depuis le site. Ses deux variantes couvrent les cadeaux multiples et les critères multi-produits.

L'assistant de suggestion sur le site reprend la logique de celui de la commande : une offre que le visiteur ne voit pas ne convertit pas. La différence est qu'en ligne, c'est le seul vendeur disponible.

Limites connues

  • Trois modules ont un README réduit à leur catégorie : loyalty_mass_mailing, sale_loyalty_partner et website_sale_loyalty_page.
  • La structure du dépôt impose d'installer les modules par paires ou par triplets : un module de mécanisme, un module de commande, parfois un module de site. Installer le premier seul ne change rien à la saisie.
  • Les règles d'incompatibilité se définissent explicitement : elles ne se déduisent pas d'une analyse de marge. Il faut les poser.
  • La limite par client compte les promotions, pas les montants : une seule promotion très généreuse échappe au garde-fou.
  • sale_loyalty_auto_refresh applique les bons sans intervention : un bon erroné s'applique partout avant qu'on le remarque.
  • La suggestion ajoute un calcul à la saisie de ligne : à éprouver avec le nombre réel de programmes actifs.
  • sale_loyalty_order_type_applicability dépend de sale_order_type : une brique de plus.
  • Aucun de ces modules ne calcule la rentabilité d'une promotion : ils fournissent le lien aux lignes générées, l'analyse reste à construire.

Identité technique

Les vingt-cinq modules viennent du dépôt OCA sale-promotion, branche 18.0 — dont tous les modules sont désormais documentés ici. Vingt-quatre sont en AGPL-3, website_sale_loyalty_page est en LGPL-3. Les dépendances : loyalty pour le mécanisme, sale_loyalty pour les commandes, website_sale_loyalty pour la boutique, mass_mailing pour le publipostage, sale_order_type pour les types de commande.

Voir aussi la caisse Odoo et ses modules OCA pour la fidélité en magasin.

Questions fréquentes

Peut-on empêcher deux promotions de se cumuler dans Odoo ?

Oui : loyalty_incompatibility définit des règles d'incompatibilité entre promotions, appliquées aux commandes par sale_loyalty_incompatibility. Sans elles, « 10 % sur la gamme » et « le troisième article offert » se cumulent sans question — et personne ne s'en aperçoit avant l'analyse de marge du trimestre.

Peut-on limiter le nombre de promotions accordées à un client ?

Oui, avec loyalty_limit et sale_loyalty_limit : la limite s'applique par client ou par commercial. La limite par commercial est la plus intéressante — elle traite le cas où une remise exceptionnelle devient systématique chez une personne. Attention, elle compte les promotions, pas les montants.

Comment faire connaître les promotions en cours aux commerciaux ?

sale_loyalty_order_suggestion les suggère sur la ligne de commande, avec deux variantes pour les cadeaux multiples et les critères multi-produits. Un commercial ne connaît pas par cœur douze offres, et une promotion qu'on ne propose pas n'existe pas. La saisie de ligne est le seul moment utile.

Peut-on déclencher une promotion sur une combinaison de produits ?

Oui : loyalty_criteria_multi_product permet des conditions multi-produits comme critère, et sale_loyalty_criteria_multi_product l'applique aux commandes. L'offre se déclenche alors sur une combinaison, non sur un article unique.

Comment savoir combien une promotion a coûté ?

sale_loyalty_order_line_link crée un lien entre la promotion et les lignes de commande qu'elle a générées. Sans lui, les lignes de remise sont anonymes et le coût d'une campagne se devine. Le module fournit le lien ; l'analyse de rentabilité reste à construire.

Se faire accompagner

Les promotions sont le domaine où un ERP permissif coûte le plus silencieusement : chaque offre est défendable seule, et leur cumul détruit la marge sans qu'aucun écran ne l'indique. Deux modules — incompatibilité et limite — suffisent à poser les garde-fous.

Nous commençons donc par les règles de non-cumul et les limites, avant d'activer la suggestion automatique : proposer plus d'offres sans garde-fou revient à accélérer le problème. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Le mécanisme de promotions d'Odoo sait appliquer une remise, un bon ou un cadeau. Il ne sait pas dire que deux offres ne se cumulent pas — et leur cumul détruit la marge sans qu'aucun écran ne l'indique. Vingt-cinq modules ajoutent ces garde-fous. Parlons de vos promotions.

Documentation OCAVentesOdoo Community

Partager

Fiches connexes

Baies de serveurs dans une salle machine
Le module OCA `queue_job` (dépôt `queue`, version 18.0.3.4.1, licence LGPL-3) ajoute à Odoo une **file de travaux de fond** avec ses canaux, ses fonctions et ses tâches, sous le menu **File d'attente des tâches** : c'est la brique dont dépendent plus de quarante modules communautaires, et la première à surveiller en exploitation. Vingt-six autres modules traitent les composants, la configuration hors base, l'impression serveur et l'IoT.
Lire la suite
Documentation OCA, Exploitation
Câbles réseau branchés sur un commutateur
Le module OCA `endpoint` (dépôt `web-api`, version 18.0.1.1.4, licence LGPL-3) permet de **déclarer un point d'entrée HTTP depuis l'interface**, sous **Paramètres ▸ Technique ▸ Endpoints** : une adresse, une méthode, un traitement — sans écrire de module. Vingt-trois autres modules traitent le cache, les imports par sessions, les échanges de factures et l'agenda.
Lire la suite
Documentation OCA, Intégration