Ce que tu vas apprendre
Pricelists vs Promotions
Ne plus les confondre — la distinction critique que personne n'explique.
8 types de programmes
Panorama v19 avec le cas d'usage recommandé pour chacun.
3 canaux, 3 flags
sale_ok, ecommerce_ok, pos_ok — restreindre un programme au bon canal.
Le calcul en direct
Voir la ligne de récompense apparaître automatiquement sur un devis de 30 chaises.
1. Rentrée 2026 — trois canaux, trois publics
Karim et Inès préparent la campagne Rentrée scolaire et universitaire 2026 chez InfoSphere. Depuis trois ans, la boutique équipe plusieurs écoles privées d'Alger — ordinateurs portables, chaises, câblage réseau. La saison septembre représente 35% du chiffre d'affaires annuel. Chaque année, il faut trouver la mécanique commerciale qui stimule les bons clients sur les bons canaux.
Cette année, Inès veut trois choses différentes selon le canal :
- Côté Ventes B2B — les cabinets d'architectes et les écoles négocient par devis. Il faut les inciter à commander en volume. Une remise automatique dès que le devis dépasse un certain montant. Pas de code à saisir, tout se passe dans la négociation commerciale.
- Côté eCommerce — les particuliers et les TPE découvrent l'offre via une campagne email. Il faut un levier visible et simple : un code unique à saisir au checkout. « SEPT2026 », valable un mois, -15%.
- Côté Point de Vente — la boutique InfoSphere Alger Centre attire les parents qui équipent les chambres d'étudiants en rentrée. Il faut une mécanique vive et physique. Classique qui marche toujours : 3 SSD Samsung achetés = 1 offert.
Trois canaux. Trois mécaniques. Odoo 19 CE permet de les gérer chacune
dans son propre programme, restreint au bon canal pour éviter les
pollutions croisées. Tout ça avec le module loyalty natif et ses
extensions sale_loyalty, website_sale_loyalty,
pos_loyalty.
2. Pricelists vs Promotions — la grande confusion
Avant d'aller plus loin, il faut lever une ambiguïté qui coûte cher. Beaucoup d'intégrateurs Odoo confondent pricelists (listes de prix) et programmes de fidélité (promotions, coupons, loyalty cards). Les deux offrent des « remises », mais leur nature est radicalement différente.
| Axe | Pricelist (liste de prix) | Loyalty Program (promotion, coupon…) |
|---|---|---|
| Nature | Politique tarifaire permanente | Stimulation commerciale ponctuelle |
| Activation | Assignée au client (res.partner) ou au canal (POS, website) | Automatique (trigger=auto) ou manuelle (trigger=with_code) |
| Durée | Permanente jusqu'à changement de la pricelist du client | Bornée par date_from / date_to |
| Cumul | Un seul tarif actif à la fois par devis | Plusieurs programmes cumulables sur le même panier |
| Visibilité | Le prix affiché est le prix pricelist (pas de ligne remise) | Prix catalogue + ligne remise séparée sur le devis |
| Reporting | Marge par pricelist, analyse segment client | KPI campagne (coupons utilisés, panier moyen boosté) |
Dans cet article on se concentre sur les promotions. Les pricelists (tarifs Pro, VIP, revendeur…) feront l'objet de l'article S10·2/N.
3. Panorama — les 8 types de programmes en v19
Odoo 19 CE propose huit types de programmes de fidélité et de
promotion. Le champ program_type sur loyalty.program
définit le comportement et les règles disponibles.
| Libellé v19 FR | Code technique | Quand l'utiliser |
|---|---|---|
| Promotions | promotion |
Règle automatique (min. montant, produits requis) → remise |
| Code de remise | promo_code |
UN code unique (SEPT2026) partagé par tous les clients |
| Bons de réduction | coupons |
Codes individuels (CODE-A1B2C3) distribuables 1 par client |
| Achetez X Recevez Y | buy_x_get_y |
3=2, 4=3, achat d'un produit déclenche l'offre d'un autre |
| Cartes de fidélité | loyalty |
Points accumulés sur carte, réclamables en récompense |
| Carte-cadeau | gift_card |
Valeur prépayée vendue, utilisable comme moyen de paiement |
| e-wallet | ewallet |
Portefeuille prépayé par client, remboursements, cagnottes |
| Bons pour la prochaine commande | next_order_coupons |
Coupon auto-généré après un achat, utilisable plus tard |
promo_code utilise un seul code global que tu
communiques dans toute ta campagne (email à la base clients, flyer imprimé,
affichage vitrine). coupons génère autant de codes
uniques que tu veux, chacun utilisable par un seul client — typique
des campagnes d'influenceurs, des dédommagements SAV ou des cadeaux clients.
Dans cet article on active trois types — un par canal — qui couvrent les cas les plus courants :
promotion(trigger=auto) sur le canal Ventes B2Bpromo_code(trigger=with_code) sur le canal eCommercebuy_x_get_y(trigger=auto) sur le canal Point de Vente
4. Activer les promotions dans les 3 canaux
L'activation se fait depuis les Paramètres Ventes → Catalogue produits mais les effets se propagent aux trois canaux dès que les modules sont installés. Dans une base Odoo 19 CE standard avec eCommerce et POS activés, tu as déjà les trois extensions présentes :
sale_loyalty— ajoute le flag Sales (sale_ok)website_sale_loyalty— ajoute le flag Available on Website (ecommerce_ok)pos_loyalty— ajoute le flag Point of Sale (pos_ok)
loyalty.program.Un nouveau menu apparaît : Ventes → Produits → Remise & Fidélité. C'est ici qu'on crée les programmes. Les POS et le site web ont aussi leur entrée de menu dédiée vers la même liste — c'est la même base de données, les programmes sont filtrés par canal via les flags de disponibilité.
5. Programme Ventes B2B — Pack Rentrée Pro 2026
Premier programme. Menu Ventes → Produits → Remise & Fidélité → Nouveau. Inès configure :
- Nom du programme — Pack Rentrée Pro 2026
- Type de programme — Promotions (règle auto cart-based)
- Devise — DZD (Dinar Algérien)
- Disponible sur — Ventes uniquement (décocher Point de Vente et Site Web)
- Dates — 1er avril → 31 octobre 2026 (fenêtre longue incluant la pré-rentrée)
Puis, dans l'onglet Règles & Récompenses :
- Règle conditionnelle — Minimum 500 000,00 DA dépensé hors taxes. (C'est typiquement le seuil d'un devis « gros volume » pour un cabinet d'architecture ou une école équipant 20 postes.)
- Récompense — 10,00% de remise sur votre commande (remise globale, appliquée sur tout le devis).
Sauvegarde. Le programme est actif. Trigger = auto signifie qu'aucun code n'est requis : dès qu'un devis franchit le seuil, la ligne de récompense apparaît toute seule.
6. Programme eCommerce — Code SEPT2026
Deuxième programme, même menu Nouveau. Inès veut un code à partager dans la newsletter de septembre.
- Nom — Code SEPT2026
- Type de programme — Code de remise
(
promo_code) — un seul code pour tous - Disponible sur — Site Web uniquement (cocher seulement cette case)
- Dates — 1er au 30 septembre 2026 (fenêtre stricte, valeur marketing du « une seule fois par an »)
- Limite d'utilisation — 200 utilisations maximum
(
limit_usage=True,max_usage=200)
Dans l'onglet Règles, le code à saisir :
- Mode — Utiliser un code
- Code — SEPT2026
Dans l'onglet Récompenses, une remise 15% sur la commande. Sauvegarde. Le code est live dès le 1er septembre et se désactive automatiquement le 30.
7. Programme POS — Rentrée 3 SSD achetés = 1 offert
Troisième programme, pour la boutique physique InfoSphere Alger Centre. Mécanique classique qui marche toujours auprès des parents qui viennent équiper les chambres d'étudiants : 3 SSD Samsung achetés = 1 offert. Upsell typique rentrée universitaire, parfait pour liquider les stocks qui commencent à vieillir.
- Nom — Rentrée SSD Samsung — 3 achetés = 1 offert
- Type de programme — Achetez X Recevez Y
(
buy_x_get_y) - Disponible sur — Point de Vente uniquement
- Règle — Quantité minimum de 3 sur le produit cible
- Récompense — 1 unité du même produit offerte (reward_product = produit cible, required_points = 3)
Au POS, quand le caissier scanne le 3e SSD, Odoo propose automatiquement d'ajouter une 4e unité à 0 DZD. Le ticket final affiche les 4 unités dont la dernière avec un prix barré.
8. L'effet concret — Devis S00007 Cabinet Architecture Alger
Karim teste le programme Ventes sur un cas réel. Le Cabinet d'Architecture d'Alger commande 30 chaises InfoChair Pro (Noir, Fixes) à 18 500 DZD l'unité. Total catalogue = 555 000 DZD — largement au-dessus du seuil de 500 000.
Dès que Karim sauvegarde le devis, la ligne de récompense apparaît automatiquement :
Le calcul en direct :
- Ligne 1 — 30 × 18 500 = 555 000 DA (produit, TVA 19% B Prod.)
- Ligne 2 — 1 × -55 500 = -55 500 DA (récompense remise 10% sur votre commande)
- Montant HT — 499 500 DA
- TVA 19% — 94 905 DA
- Total TTC — 594 405 DA
Le chatter en haut à droite trace l'enchaînement : Odoo a recalculé d'abord le montant HT (555 000 → 499 500) puis le total TTC (660 450 → 594 405). Aucun code saisi, aucune action manuelle. Rule-driven, comme le dit la doc officielle.
9. Comprendre la structure d'une récompense
Chaque programme a au moins une récompense attachée. Le modèle
loyalty.reward porte trois choix essentiels :
- Type de récompense — Remise (discount),
Produit gratuit (product), ou Livraison gratuite (shipping
— module
sale_loyalty_delivery) - Mode de remise — Pourcentage, Montant fixe, ou Pourcentage par point (pour les programmes de points)
- Applicabilité de la remise — Commande entière, Produits spécifiques, ou Produit le moins cher du panier
Les programmes simples ont une seule récompense. Les programmes de points (loyalty cards) peuvent en avoir plusieurs, avec des seuils différents (100 points = -5%, 500 points = produit offert).
10. Les pièges à éviter
sale_ok=True, ecommerce_ok=True et
pos_ok=True. Si tu oublies de décocher deux des trois, ton programme
s'applique partout — ce qui peut vider ton budget promo plus vite que prévu.
Bonne pratique : cocher UNIQUEMENT le canal visé pour chaque programme.
pricelist_ids.
Bonnes pratiques InfoSphere
- Un programme = un canal — ne pas multi-cocher par défaut, ça pollue. Si tu veux une promotion transversale, crée trois programmes identiques avec des noms explicites (Rentrée Pro — Ventes, Rentrée Pro — eCom, Rentrée Pro — POS). Plus verbeux mais reporting beaucoup plus clair.
- Dates strictes avec marge — date_from la veille du jour J pour amortir les décalages fuseaux, date_to 23h59 du dernier jour. Évite les plaintes clients « je viens de rater le délai ».
- Limite d'utilisation obligatoire pour les codes de remise
partagés (
promo_code). Sans limite, un code qui fuite sur un forum peut vider ta marge sur une nuit. - Nom du programme = signalétique — clients, collègues et toi dans 6 mois. « Promo -10% » est catastrophique. « Pack Rentrée Pro 2026 » reste compréhensible.
- Tester en base démo avant la prod — créer une commande de test avec les conditions réelles, vérifier la récompense, puis répliquer en prod. Évite 90% des surprises.
11. La vue d'ensemble des programmes actifs
Sur la liste Remise & Fidélité, Inès peut voir en un coup d'œil les trois programmes actifs avec leur type, leurs dates et leur disponibilité par canal :
Les cartes de fidélité (Club InfoSphere) et les cartes-cadeaux (Gift Cards) existent aussi en ligne verrouillées, mais elles relèvent d'une autre logique — on les verra dans la Partie 3/N de la saison.
À retenir
🎯 Pricelist ≠ Promotion
Pricelist = politique tarifaire permanente assignée au client. Promotion = stimulation ponctuelle bornée dans le temps. Les deux cumulables mais pas redondantes.
📋 8 types de programmes
De la promo auto simple (promotion) au
e-wallet (ewallet), Odoo 19 CE couvre nativement tous les
cas. Code de remise (un code global) vs Bons de
réduction (codes individuels) = distinction clé.
🚦 3 flags de canal
sale_ok, ecommerce_ok,
pos_ok — cocher EXPLICITEMENT le canal visé. Tous cochés
par défaut = pollution croisée garantie.
⚡ Rule-driven
trigger=auto → règle satisfaite = récompense appliquée, pas d'action manuelle. trigger=with_code → client saisit un code au checkout. Les deux compatibles sur la même plateforme.
Prochaine étape — Pricelists et politique tarifaire
Maintenant que les promotions sont cadrées, Karim veut
structurer la politique tarifaire permanente
d'InfoSphere : un tarif Pro pour les entreprises, un tarif VIP pour les
clients historiques, un tarif Revendeur. Comment les combiner aux
variantes
? Comment éviter qu'une remise VIP cumulée avec une promo auto casse la
marge ? Dans la Partie 2 — Pricelists et segmentation
client avec product.pricelist.
À paraître — Partie 2 : Pricelists & segmentation client
💼 Approfondir — Prospection & Ventes
Autres articles du même domaine :
Pricelists & segmentation (Partie 2)
Revenue Management
Fidélité, cartes-cadeaux & eWallet (Partie 3)
Revenue Management
Acheter & Vendre
Suite de la Saison 10 — Revenue Management
Articles complémentaires
Sur les mêmes thématiques : #intermediaire#cas-pratique
👥 Ressources humaines · Saison 4
👥 Ressources humaines · Saison 4
🛍 Site web & eCommerce · Saison 5