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. »
sale_product_matrix
- Ajoute un champ
product_add_modesurproduct.templateavec 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.linepar combinaison non vide, avec le bonproduct.productet 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
- Ouvre Applications, tape matrix dans la barre de recherche.
- Clique sur Activer sur la carte Sale Matrix (nom
technique
sale_product_matrix). - 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.
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.
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.
- 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.
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.
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 attribut — Noir, 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 laproduct.template.attribute.value. Transparent pour le vendeur.
Karim saisit les 4 quantités demandées (8, 5, 4, 3) et clique Confirmer.
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.
| 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.
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.
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.
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
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
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.
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.
💼 Approfondir — Prospection & Ventes
Autres articles du même domaine :
Suite de la Saison 9 — Configurateur Produit
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