Introduction
On va, aujourd'hui, principalement parler des produits de type "stockable" dans Odoo
Dans un projet d'implémentation, il y a plusieurs étapes : l'intégration, les développements, les tests …
Pour la partie intégration, nous, chefs de projet, devons souvent organiser la récupération des données d'un ancien logiciel pour les intégrer à Odoo et ça peut s'apparenter à un travail de galérien. Même si on parle de données simples (les produits), il arrive que ces données soient finalement bien plus structurées qu'attendu.
Imaginons que notre client vende des meubles assemblés et de couleurs différentes. Une simple armoire sera utilisée chez certains clients déclinée en 3 articles différents pour les 3 couleurs vendues. Mais chez d'autres, on devra utiliser les variantes pour gérer des nomenclatures différentes.
Exemple :
Dans le premier cas de figure, on a 3 articles :
- Armoire bleue
- Armoire rose
- Armoire blanche
Dans le second cas de figure, on a un article modèle, 3 variantes, 3 nomenclatures et 5 composants différents.
- Armoire
- Armoire bleue
- Portes bleues
- Structure bois
- Kit visserie
- Armoire rose
- Portes roses
- Structure bois
- Kit visserie
- Armoire blanche
- Portes blanches
- Structure bois
- Kit visserie
Dans le premier cas, aucune difficulté. On récupère le fichier des articles dans Excel qu'on va importer dans Odoo ligne par ligne avec les données de base : nom, prix, coût …
Dans le second, on s'est très éloigné de la simplicité et il faudra travailler un peu plus pour intégrer cette donnée. Et pour cela, il faut être conscient de la structure des produits dans Odoo.
La structure des produits dans Odoo
Le produit de base de Odoo est défini par un modèle. Ce modèle existe toujours, le modèle relatif à celui-ci est product.template
La variante est générée automatiquement par Odoo dès lors que l'on crée l'attribut (la couleur) et ses différentes valeurs (bleu, rose, blanc).
Le modèle relatif à la variante est product.product .
Et ce qu'il faut savoir, c'est que même si un produit n'a pas d'attribut, donc, a priori, pas de variante, il aura quand même une valeur pour product.product qui sera la même que pour product.template !
Autre point important : ce qui est suivi en stock, c'est product.product et non pas product.template. C'est logique puisqu'on ne va pas avoir d'armoire de bas en stock mais bien des armoires de couleur.
Et enfin, il va nous falloir intégrer les composants de nos armoires, eux-mêmes potentiellement composée de variantes (les portes de nos armoires dans notre exemple).
Astuce d'implémentation : en général, il est préférable d'utiliser le champ ID externe plutôt que le nom de produit. C'est un champ à valeur unique donc sans risque de message d'erreur à l'import.
L'import de nomenclatures est de type "structuré", ce qui implique que l'import est composé d'un en-tête et de lignes comme pour un document de vente.
L'en-tête de nomenclature contient notamment le nom du modèle, le nom de la variante, la quantité produite, le type de nomenclature (fabrication, kit, sous-traitance).
Les lignes vont contenir principalement le nom du composant, le nom de sa variante et la quantité nécessaire.
Pour sécuriser l'import, on va systématiquement remplacer les noms des produits (modèles et variantes) par leur ID externe.
Voici enfin à quoi ressemblerait notre fichier d'import - simplifié - avec les ID externes à la place des noms de produits :
Conclusion
Bien comprendre la structure des produits dans les bases de données Odoo est fondamental avant de se lancer dans une intégration quelconque.
Dès lors qu'on utilise les fonctionnalités de gestion de variantes et/ou de nomenclatures, l'intégration de données devient plus complexe à gérer.
Si vous êtes confronté à ce type d'intégration, n'hésitez pas à nous contacter, nous serons à même de vous accompagner.
La structure des produits dans Odoo