Se rendre au contenu

Matrix configurator dans Odoo 19 CE — saisir N variantes en une grille

Saison 9 · Article 2/3 — Configurateur Produit
26 avril 2026 par
Matrix configurator dans Odoo 19 CE — saisir N variantes en une grille
B.Mustapha

Saison 9 · Article 2/3 — Configurateur Produit

Matrix configurator dans Odoo 19 CE

Quand le client commande 20 chaises mélangées sur 6 variantes, tu ne veux pas saisir 4 lignes de devis à la main. Le module sale_product_matrix ouvre une grille de saisie au milieu du devis : tu remplis cellule par cellule, Odoo éclate en lignes SO tout seul. Démo sur Cabinet Architecture Alger, 20 chaises InfoChair Pro en 30 secondes.

Ce que tu vas apprendre

Installer le module

sale_product_matrix — un seul toggle pour activer la grille sur tous les devis multi-variantes.

Configurer un template

Basculer le mode de saisie du configurateur classique vers la grille. Un champ product_add_mode, deux options.

Vendre 20 variantes en 1 clic

Modal grille → 4 lignes SO auto-générées → total 486 115 DA → rapport PDF avec la matrice imprimée.

1. Cabinet Architecture rappelle Karim

Le 18 avril, Karim reçoit un second appel du cabinet d'architecture d'Alger. Le devis pilote de 20 chaises Noir + Réglables 4D passé à l'article précédent a convaincu. Mais cette fois le responsable revient avec une demande plus précise : 20 chaises, 4 combinaisons, pour équiper quatre espaces du siège.

Espace Combinaison Quantité Prix unitaire
Open space dev Noir + Réglables 4D 8 22 000 DZD
Salle de réunion Gris anthracite + Fixes 5 18 500 DZD
Accueil visiteurs Bleu marine + Fixes 4 18 500 DZD
Bureau direction Bleu marine + Réglables 4D 3 22 000 DZD
Total 20 408 500 DZD HT

Karim ouvre le devis et commence à ajouter les lignes une à une. Avec les variantes configurées à l'article précédent, chaque ajout impose quatre gestes : cliquer Ajouter un produit, taper le nom, sélectionner la variante exacte (pastille coloris + radio accoudoirs), saisir la quantité. Multiplié par 4 combinaisons : 16 clics minimum pour un seul devis. Sur une quinzaine de devis mensuels, ça devient fastidieux et sujet aux erreurs de saisie — et sans parler des mêmes variantes vendues au comptoir POS, où le vendeur n'a pas le luxe de 4 secondes par ligne.

« Il existe un module Odoo fait exactement pour ça », tranche Inès en comptable pragmatique. « Le matrix configurator. On active la grille de saisie, et tu cliques une seule fois sur la chaise. Une fenêtre s'ouvre avec toutes les variantes, tu remplis les cellules, Odoo éclate automatiquement en 4 lignes de devis. »

📖 Ce que fait sale_product_matrix
  • Ajoute un champ product_add_mode sur product.template avec deux valeurs : Configurateur de produits (défaut) ou Grille des variantes du produit.
  • Quand un template en mode matrix est ajouté à un devis, une modal s'ouvre : lignes = 1er attribut, colonnes = 2e attribut, cellules = quantités à commander.
  • À la validation, le module crée une sale.order.line par combinaison non vide, avec le bon product.product et le prix extra appliqué.
  • Le rapport PDF du devis intègre la grille imprimée (champ report_grids, activé par défaut).

2. Installer le module sale_product_matrix

Le module est livré en standard dans Odoo 19 (Community et Enterprise). Il n'est pas activé par défaut. Deux chemins pour l'installer :

Via le menu Applications

  1. Ouvre Applications, tape matrix dans la barre de recherche.
  2. Clique sur Activer sur la carte Sale Matrix (nom technique sale_product_matrix).
  3. Odoo installe automatiquement la dépendance product_matrix — c'est le moteur technique, pas d'interface visible.

Via les paramètres Ventes (raccourci UX)

À partir d'Odoo 17, les paramètres Ventes → Configuration → Paramètres affichent une entrée Entrée grille de variantes sous la section Catalogue produits. Cocher la case installe le module sans quitter la page. Utile si l'onglet Apps n'est pas accessible à tous les profils.

💡 Prérequis fonctionnel — l'option Variantes doit être cochée dans les paramètres Ventes. Sinon, le champ product_add_mode reste invisible sur les fiches produit. Cette option s'active en même temps qu'on crée ses premiers attributs. Le code source du module est consultable sur github.com/odoo/odoo — environ 150 lignes de Python et 2 vues XML.
Flux matrix configurator Odoo 19 — de l'installation du module sale_product_matrix à la génération de lignes SO via la grille, puis édition possible en draft
Le parcours complet — installer, configurer, saisir, éclater, corriger.

3. Activer la grille sur la chaise InfoChair Pro

Le module est installé, mais la grille n'apparaît que sur les templates qui l'ont explicitement activée. On ouvre la fiche Chaise ergonomique InfoChair Pro → onglet Attributs & Variantes (celui qui porte les 2 attributs Coloris et Accoudoirs). Tout en bas, une section Sélection des variantes de vente affiche deux options en radio.

Fiche produit Chaise InfoChair Pro Odoo 19 — onglet Attributs et Variantes avec radio 'Grille des variantes du produit' sélectionné sous la section Sélection des variantes de vente
L'onglet Attributs & Variantes — deux attributs, 6 combinaisons, radio Grille des variantes du produit.
  • Configurateur de produits (configurator) — comportement par défaut. Chaque variante s'ajoute une à une via le configurateur classique (autocomplete + popover de sélection).
  • Grille des variantes du produit (matrix) — une modal s'ouvre avec toutes les combinaisons en grille. Tu remplis, Odoo éclate.

On bascule sur la seconde option et on sauvegarde. Depuis maintenant, chaque ajout de la Chaise InfoChair Pro sur un devis ouvrira la grille au lieu du configurateur simple.

⚠️ Mode local au template, pas global — le choix configurateur/grille est stocké sur chaque template individuellement. Si tu vends des chaises en grille et des câbles en configurateur (parce que le câble est en mode Dynamique avec 12 combinaisons rarement vendues), laisse chaque template avec son propre mode. Aucune règle globale ne force un comportement unique.

4. La grille en action sur le devis Cabinet Architecture

Karim crée un nouveau devis, sélectionne Cabinet Architecture Alger comme client, clique Ajouter un produit, tape InfoChair dans l'autocomplete et sélectionne la chaise. Au lieu du configurateur attendu, une modal s'ouvre : Choisissez des variantes de produit.

Modal grille Odoo 19 Choisissez des variantes de produit — chaise ergonomique InfoChair Pro avec lignes Fixes et Réglables 4D, colonnes Noir Gris anthracite et Bleu marine, toutes cellules à zéro, badge +3 500 DA sur Réglables 4D
La grille à l'ouverture — 2 lignes × 3 colonnes = 6 combinaisons possibles, cellules à zéro, prix extra annoncé.

Lecture rapide de la grille :

  • Lignes : valeurs du 2e attribut du template — Fixes et Réglables 4D. L'ordre est celui défini dans la fiche produit.
  • Colonnes : valeurs du 1er attributNoir, Gris anthracite, Bleu marine.
  • Cellules : quantité à commander pour chaque combinaison. Zéro par défaut, un champ numérique éditable au clic.
  • Badge prix extra : la ligne Réglables 4D affiche + 3 500,00 DA — le supplément défini sur la product.template.attribute.value. Transparent pour le vendeur.

Karim saisit les 4 quantités demandées (8, 5, 4, 3) et clique Confirmer.

Modal grille Odoo 19 remplie — Fixes Gris anthracite 5 et Bleu marine 4, Réglables 4D Noir 8 et Bleu marine 3, total visuel 20 chaises
La même grille remplie — 8 + 5 + 4 + 3 = 20 chaises réparties en 1 saisie.

5. Le devis éclate en 4 lignes automatiquement

La modal se ferme. Le devis qui était vide contient maintenant 4 lignes distinctes, une par combinaison non-nulle. Chaque ligne pointe sur le bon product.product (variante concrète), avec son prix unitaire correct, sa TVA et son montant ligne.

Devis S00010 Odoo 19 Cabinet Architecture Alger — 4 lignes de commande générées par la matrice, Chaise InfoChair Pro Noir Réglables 4D 8 unités 22 000 DA, Gris anthracite Fixes 5 unités 18 500 DA, Bleu marine Fixes 4 unités 18 500 DA, Bleu marine Réglables 4D 3 unités 22 000 DA, total 486 115 DA TTC
Le devis S00010 après validation de la grille — 20 chaises, 4 lignes, 486 115 DA TTC.
Variante Qté Prix unitaire Sous-total HT TVA 19% Total TTC
Noir / Réglables 4D 8 22 000,00 176 000,00 33 440,00 209 440,00
Gris anthracite / Fixes 5 18 500,00 92 500,00 17 575,00 110 075,00
Bleu marine / Fixes 4 18 500,00 74 000,00 14 060,00 88 060,00
Bleu marine / Réglables 4D 3 22 000,00 66 000,00 12 540,00 78 540,00
Total 20 408 500,00 77 615,00 486 115,00

Chaque ligne est une vraie sale.order.line autonome : on peut la modifier, la dupliquer, changer son prix unitaire, lui ajouter une section commentaire, l'affecter à une pricelist. Le lien avec la grille se conserve via le champ product_template_id.

💡 Ré-ouvrir la grille pour ajuster — si le client change d'avis et veut 2 chaises Gris / Réglables en plus, Karim n'a pas à saisir une 5e ligne manuellement. Il clique sur le produit dans une ligne existante, la grille se ré-ouvre avec les valeurs déjà remplies, il ajuste, Odoo synchronise. Tant que le devis est en état Devis ou Envoyé, la grille reste pilotable. Après Commande client, elle passe en lecture seule.

6. La grille imprimée dans le rapport PDF

Bonus du module : la grille est aussi rendue dans le rapport PDF du devis. Au lieu de 4 lignes perdues au milieu d'un catalogue, le client voit apparaître la matrice complète en tête de document, directement lisible comme une synthèse commerciale.

Rapport PDF devis S00010 Odoo 19 InfoSphere Cabinet Architecture Alger — grille Chaise InfoChair Pro rendue en tableau avec lignes Fixes et Réglables 4D, colonnes Noir Gris anthracite Bleu marine, quantités imprimées et lignes détaillées en dessous totalisant 486 115 DA
Aperçu PDF — la grille en haut, les 4 lignes détaillées en dessous, total 486 115 DA en bas.

Le comportement est piloté par le champ booléen report_grids sur sale.order, activé par défaut. Il est visible sur le formulaire de devis via Autres informations, mais uniquement en mode développeur (groups="base.group_no_one"). Pour masquer la grille du rapport d'un devis précis — par exemple un client qui veut juste voir les totaux — on active le mode dev et on décoche.

⚠️ Si un template est en mode grille mais qu'une seule combinaison est commandée, la grille n'apparaît pas dans le PDF (le module vérifie qu'il y a au moins 2 lignes sur le template pour éviter une matrice creuse). C'est logique : imprimer une grille 3×2 avec une seule cellule remplie fait perdre la valeur pédagogique.

7. Limites et pièges à connaître

Le matrix configurator est puissant mais pas universel. Trois limites structurelles et deux pièges d'usage à intégrer avant de le généraliser.

Limites structurelles

⚠️ Un template = une seule ligne dans le devis — si tu veux vendre la même chaise à deux tarifs différents (par exemple 10 au tarif catalogue + 10 avec remise ponctuelle négociée), tu ne peux pas. Tenter de modifier la quantité d'une variante déjà présente en double lève l'erreur « You cannot change the quantity of a product present in multiple sale lines ». Solution : créer deux devis séparés, ou passer en configurateur classique pour ce devis-là.
⚠️ 2 attributs maximum rendus visuellement confortables — la grille est une matrice 2D (lignes × colonnes). Avec 3 attributs, Odoo ajoute les combinaisons du 3e axe comme sous-groupes dans les lignes, ça reste lisible jusqu'à ~15 combinaisons totales. Au-delà, la modal devient interminable à scroller. Si tu as systématiquement plus de 15 variantes non ponctuelles, envisage de scinder le template en deux.
⚠️ Ne fonctionne pas avec les attributs no_variant — les attributs de type Jamais (création de variante = no_variant) ne génèrent pas de product.product, donc pas de cellule dans la grille. Ils sont gérés dans le configurateur classique uniquement. Si ta chaise a un attribut Gravure personnalisée en no_variant, tu devras choisir : soit garder tout en configurateur, soit détacher cet attribut (et perdre la personnalisation par ligne).

Pièges d'usage

⚠️ Qté à zéro supprime la ligne — remettre une cellule à 0 dans la grille ne se contente pas d'archiver la ligne : si le devis est en état Devis ou Envoyé, la ligne est purement supprimée (self.order_line -= order_lines dans le code). Si tu as déjà négocié une remise ligne spécifique, elle disparaît. Passe par la liste des lignes en édition manuelle pour préserver tes annotations.
⚠️ Pas de saisie en masse via import CSV — la grille n'a pas d'équivalent batch à l'import. Un import de SO Lines via le menu développeur → import passe en mode direct product.product + quantité, le flag matrix est ignoré. Pour un batch massif (50+ devis par jour avec grilles), prévois un script RPC dédié qui appelle la méthode _apply_grid ou insère directement les lignes.

Bonnes pratiques InfoSphere

  • Active la grille uniquement sur les templates à volume — une chaise commandée à 20 unités mérite la grille. Un article spécifique commandé à l'unité reste en configurateur standard (moins de clics sur le modal).
  • Forme tes vendeurs au raccourci Tab — dans la modal grille, Tab passe à la cellule suivante sans toucher la souris. Une fois le réflexe pris, la saisie d'une matrice 3×3 se fait en 15 secondes.
  • Garde report_grids à True pour la vente B2B — les clients architectes, bureau d'études, intégrateurs apprécient la vue matricielle du devis. Pour un client grand public, un simple récap de lignes suffit.
  • Document interne — précise quand utiliser la grille — sinon les vendeurs hésitent et certains préfèrent rester au configurateur par habitude. Une fiche de process de 5 lignes règle la question pour les 6 premiers mois.

À retenir

🧩 Module sale_product_matrix

Installation en 1 clic depuis Apps ou les paramètres Ventes. Dépend automatiquement de product_matrix (moteur technique). Standard Odoo 19, pas d'ajout de code custom.

⚙️ product_add_mode par template

Deux valeurs : Configurateur de produits (défaut) ou Grille des variantes du produit. Choix local à chaque template, pas de règle globale. Visible dans l'onglet Attributs & Variantes si l'option variantes est activée.

🔀 1 saisie grille → N lignes SO

La modal génère autant de sale.order.line que de cellules non-nulles. Chaque ligne est autonome, modifiable, avec son prix extra appliqué et sa TVA correcte. Ré-ouvrable tant que le devis n'est pas confirmé.

📄 Grille imprimée dans le PDF

Champ report_grids à True par défaut. La matrice apparaît dans l'aperçu PDF du devis au-dessus des lignes détaillées. Lisibilité maximale pour les clients B2B architectes ou bureau d'études.

Prochaine étape — Stock par variante

Karim a sa grille, son devis part chez le client. Mais en interne, quel est l'impact sur le stock par variante ? Quants, orderpoints différenciés par PTAV, routes MTO ou MTS, scheduler automatique. Démo chiffrée sur les 6 chaises InfoChair et le PO P00017 de réappro à 962 115 DZD.

Lire la Partie 3 — Stock par variante →

💼 Approfondir — Prospection & Ventes

Autres articles du même domaine :

Les ventes

Acheter & Vendre

Le CRM

Acheter & Vendre

Suite de la Saison 9 — Configurateur Produit

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

Maîtriser les Achats & Approvisionnements dans Odoo 19 — Partie 4/4 : Planification d'approvisionnement (orderpoints, MTO, scheduler)
Saison 8 · Article 4/4 — Achats & Approvisionnements