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
| Famille | Modules | Nombre |
|---|---|---|
| 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_chatter | 8 |
| Commandes de vente | sale_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_applicability | 9 |
| Extensions croisées | sale_loyalty_incompatibility, sale_loyalty_limit, sale_loyalty_criteria_multi_product, sale_loyalty_multi_gift | 4 |
| Boutique en ligne | website_sale_loyalty_page, website_sale_loyalty_suggestion_wizard, website_sale_loyalty_suggestion_wizard_multi_gift, website_sale_loyalty_suggestion_wizard_multi_product | 4 |
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_productpermet 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_productl'applique aux commandes.loyalty_multi_giftpermet de configurer plusieurs cadeaux par promotion, avecsale_loyalty_multi_giftcôté commandes.loyalty_partner_applicabilitydéfinit un filtre de clientèle sur les règles : la promotion ne s'applique qu'aux clients satisfaisant le filtre.sale_loyalty_partner_applicabilityl'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_mailgé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_mailingrelie les promotions au publipostage, en s'appuyant sur le filtre de clientèle. Son README est réduit à sa catégorie.loyalty_program_chatterajoute 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_refreshapplique automatiquement les bons sans intervention de l'utilisateur.sale_loyalty_order_infoajoute sur la commande des informations sur les promotions appliquées.sale_loyalty_order_line_linkcré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_applicabilityconfigure 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_partnercomplè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_partneretwebsite_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_refreshapplique 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_applicabilitydépend desale_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.