Se rendre au contenu

Promotions multicanal dans Odoo 19 CE — Ventes B2B, eCommerce et Point de Vente

Saison 10 · Article 1/3 — Revenue Management
26 avril 2026 par
Promotions multicanal dans Odoo 19 CE — Ventes B2B, eCommerce et Point de Vente
B.Mustapha

Saison 10 · Article 1/3 — Revenue Management

Promotions multicanal dans Odoo 19 CE

Une seule rentrée commerciale, trois canaux, trois mécaniques de promotion. Odoo 19 CE gère nativement les promotions automatiques, les codes de remise et les offres Buy X Get Y via loyalty.program. Chaque programme peut être restreint à un canal (Ventes, eCommerce, POS). On ouvre la Saison 10 avec le setup complet de la rentrée 2026 chez InfoSphere.

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é)
💡 Règle mentale simple — une pricelist répond à la question « quel prix affiches-tu pour ce client ? ». Une promotion répond à la question « qu'est-ce qui peut booster son panier ce mois-ci ? ». Pricelist = politique. Promotion = tactique.

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
Arbre de décision Odoo 19 — choisir un type de programme selon le canal cible (Sales, eCommerce, POS)
Arbre de décision — quel type de programme pour quel canal ?
🔑 Différence critique entre Code de remise et Bons de réduction — les deux demandent un code au client, mais 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 B2B
  • promo_code (trigger=with_code) sur le canal eCommerce
  • buy_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)
Paramètres Ventes Odoo 19 — section Remises et cartes cadeaux avec option Promotions activée
Section Remises et cartes-cadeaux des paramètres Ventes — les promotions sont gérées via 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 programmePack Rentrée Pro 2026
  • Type de programmePromotions (règle auto cart-based)
  • DeviseDZD (Dinar Algérien)
  • Disponible surVentes uniquement (décocher Point de Vente et Site Web)
  • Dates — 1er avril → 31 octobre 2026 (fenêtre longue incluant la pré-rentrée)
Programme Pack Rentrée Pro 2026 — type Promotions, disponible sur Ventes, règle minimum 500 000 DA, récompense 10 pourcent
Le programme Pack Rentrée Pro 2026 configuré sur le canal Ventes uniquement.

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écompense10,00% de remise sur votre commande (remise globale, appliquée sur tout le devis).
Règle conditionnelle Pack Rentrée Pro — minimum 500 000 DA dépensé hors taxes
Règle conditionnelle — déclenchement automatique dès que le montant HT atteint 500 000 DA.

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.

  • NomCode SEPT2026
  • Type de programmeCode de remise (promo_code) — un seul code pour tous
  • Disponible surSite 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)
Programme Code SEPT2026 — type Code de remise, disponible sur Site Web uniquement, limite 200 utilisations
Le programme Code SEPT2026 — seul le site web peut l'appliquer, la limite protège le budget promo.

Dans l'onglet Règles, le code à saisir :

  • ModeUtiliser un code
  • CodeSEPT2026
Règle du programme Code SEPT2026 — code SEPT2026 à saisir par le client pour déclencher la remise
Règle avec code SEPT2026 — le client saisit ce code au checkout pour activer la remise.

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.

  • NomRentrée SSD Samsung — 3 achetés = 1 offert
  • Type de programmeAchetez X Recevez Y (buy_x_get_y)
  • Disponible surPoint 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)
Programme Rentrée 3 achetés = 1 offert — type Achetez X Recevez Y, disponible Point de Vente uniquement
Le programme buy_x_get_y — visible uniquement à la caisse, se déclenche automatiquement dès la 3e unité dans le panier.

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 :

Devis S00007 Cabinet Architecture Alger — 30 chaises à 555 000 DA + ligne remise automatique 10 pourcent pour -55 500 DA
Devis S00007 — la ligne « 10% sur votre commande / Remise » apparaît sans aucune action manuelle.

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écompenseRemise (discount), Produit gratuit (product), ou Livraison gratuite (shipping — module sale_loyalty_delivery)
  • Mode de remisePourcentage, Montant fixe, ou Pourcentage par point (pour les programmes de points)
  • Applicabilité de la remiseCommande entière, Produits spécifiques, ou Produit le moins cher du panier
Récompense Pack Rentrée Pro — 10 pourcent de remise sur votre commande, mode pourcentage, applicabilité commande entière
Récompense 10% sur votre commande — l'intitulé par défaut est généré depuis le mode et le montant, personnalisable.

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

⚠️ Flags de canal à décocher EXPLICITEMENT — par défaut, un nouveau programme a 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.
⚠️ Cumul multi-programmes sur un même panier — Odoo autorise plusieurs programmes simultanément. Sur un devis qui déclenche Pack Rentrée Pro -10% ET qui utilise le code SEPT2026 -15%, les deux s'additionnent — mais pas forcément comme tu crois (pas (-10-15 = -25%), c'est appliqué en séquence sur le montant restant). Toujours tester un cas réel avant de publier des communications clients.
⚠️ Conflit avec les pricelists — si un client est sur une pricelist Pro -5% et déclenche une promotion -10%, la promo s'applique sur le prix après pricelist, pas sur le prix catalogue. Le cumul donne -14,5% (pas -15%). Si tu veux absolument interdire le cumul, il faut restreindre le programme aux pricelists concernées via le champ pricelist_ids.
⚠️ Modification d'un programme actif — changer le montant de la récompense ou la règle sur un programme qui a déjà été utilisé n'affecte pas les devis / coupons existants, mais s'applique aux nouveaux. Bonne pratique : archiver l'ancien programme et en créer un nouveau si le changement est significatif (préserve l'historique des campagnes).

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 :

Liste des programmes loyalty.program actifs — Pack Rentrée Pro, Code SEPT2026, Rentrée SSD Samsung 3=4
Vue liste Remise & Fidélité — 3 programmes actifs, un 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 :

Articles complémentaires

Sur les mêmes thématiques : #intermediaire#cas-pratique

Recrutement RH

👥 Ressources humaines · Saison 4

Congés & Présence RH

👥 Ressources humaines · Saison 4

Site vitrine

🛍 Site web & eCommerce · Saison 5

Variantes produit dans Odoo 19 CE — attributs, valeurs et prix par variante
Saison 9 · Article 1/3 — Configurateur Produit