Un produit n'est pas qu'une référence et un prix : c'est un poids, un volume, un conditionnement et une unité de vente. Ces informations décident du coût de transport, du remplissage d'un camion et de la conformité d'une étiquette.
Dix-sept modules communautaires les ajoutent à une fiche produit qui, en standard, se contente d'un poids et d'un volume approximatifs.
Résumé
Huit modules traitent les emballages : un référentiel de niveaux — palette, carton, boîte — obligatoire sur chaque emballage, avec deux marqueurs (vendable, propre à un fournisseur), des dimensions et un poids par emballage, l'archivage d'un emballage obsolète, un calculateur qui décompose une quantité en colis, sa colle avec les niveaux, et un assistant de prix unitaire à partir du prix d'un conditionnement.
Cinq traitent les poids et dimensions : des dimensions produit avec volume calculé, un poids net distinct du poids brut, un poids égoutté pour les conserves, une unité dédiée pour exprimer poids et volume, et le calcul du poids total à partir des emballages plutôt que du seul poids unitaire.
Quatre traitent les unités de mesure : des unités secondaires avec facteur de conversion par produit ou par variante, des alias pour retrouver une unité sous plusieurs noms, l'archivage des catégories d'unités, et une unité par défaut définie sur la catégorie de produit.
L'essentiel
- Un référentiel de niveaux d'emballage, obligatoire sur chaque emballage produit.
- Dimensions et poids par emballage, et non seulement par produit.
- Un calculateur qui décompose une quantité en palettes, cartons et unités.
- Le poids total calculé depuis les emballages — celui que pèse le transporteur.
- Un poids net distinct du poids brut, et un poids égoutté pour les conserves.
- Une unité dédiée au poids et au volume, par produit.
- Des unités secondaires avec facteur de conversion, par produit ou par variante.
- Des alias d'unités : retrouver « pièce » en cherchant « unité » ou « pce ».
Ce que ces modules ajoutent à l'instance
| Famille | Modules | Nombre |
|---|---|---|
| Niveaux et emballages | product_packaging_level, product_packaging_level_salable, product_packaging_level_vendor, product_packaging_dimension, product_packaging_archive | 5 |
| Calcul de colisage | product_packaging_calculator, product_packaging_calculator_packaging_level, product_packaging_unit_price_calculator | 3 |
| Poids et dimensions | product_dimension, product_net_weight, product_drained_weight, product_logistics_uom, product_total_weight_from_packaging | 5 |
| Unités de mesure | product_secondary_unit, uom_alias, uom_category_active, product_category_uom | 4 |
Un seul menu ajouté : Inventaire ▸ Configuration ▸ Produits ▸ Product Packaging Level, le référentiel des niveaux d'emballage.
Les niveaux d'emballage : nommer ce qu'on manipule
Odoo connaît des « emballages » par produit, sans les classer. Résultat : un même carton s'appelle « carton » sur un article, « colis de 12 » sur un autre, « CT12 » sur un troisième — et aucune analyse par type de contenant n'est possible.
product_packaging_level crée un référentiel de niveaux — palette, carton, boîte, unité — et rend ce niveau obligatoire sur chaque emballage produit. Deux petits modules le qualifient :
product_packaging_level_salablemarque les niveaux vendables et restreint ceux qu'on peut choisir sur une ligne de commande de vente. On vend à la palette et au carton, pas à l'intercalaire.product_packaging_level_vendormarque un niveau comme propre à un fournisseur, pour distinguer le colisage d'achat du colisage de vente.
product_packaging_dimension ajoute aux emballages leurs dimensions physiques, leur poids et leur volume, avec leurs unités. product_packaging_archive permet enfin d'archiver un emballage obsolète au lieu de le supprimer — et de perdre l'historique des commandes qui l'utilisaient.
Côté vente et achat, ces conditionnements sont exploités par les modules décrits dans conditionnements, unités et lots et les lignes de commande d'achat.
Calculer : colisage et prix unitaire
| Module | Ce qu'il calcule |
|---|---|
product_packaging_calculator | La décomposition d'une quantité en nombre optimal de chaque emballage disponible — palette, carton, boîte, unité |
product_packaging_calculator_packaging_level | La même décomposition, affichée avec le code du niveau d'emballage |
product_packaging_unit_price_calculator | Le prix unitaire à partir du prix d'un conditionnement, et inversement |
Le premier est un moteur technique réutilisé par d'autres modules — notamment celui qui calcule le poids total. Son intérêt direct est de répondre à la question du préparateur : « 2 400 pièces, ça fait combien de palettes et de cartons ? ».
Le troisième s'adresse aux acheteurs et aux commerciaux : un fournisseur annonce un prix à la palette, votre catalogue raisonne à l'unité. L'assistant fait la conversion dans les deux sens et évite l'erreur de division — qui se retrouve ensuite dans toutes les marges.
Les poids : brut, net, égoutté, et celui du transporteur
Le poids d'une expédition calculé sur le seul poids unitaire du produit est toujours sous-estimé : il ignore les cartons, les palettes, les intercalaires. Le transporteur, lui, pèse le colis réel — et facture l'écart.
product_total_weight_from_packaging fournit la méthode de calcul du poids total à partir des emballages, utilisée notamment par le module de livraison correspondant.
product_dimensionajoute longueur, hauteur, largeur sur la fiche produit et calcule le volume automatiquement.product_net_weightajoute un poids net, et renomme le poids existant en poids brut — la distinction exigée par l'étiquetage alimentaire et par la douane.product_drained_weightajoute un poids égoutté : le poids du produit une fois le liquide de conditionnement retiré. C'est une mention obligatoire sur les conserves et bocaux.product_logistics_uompermet de choisir, produit par produit, l'unité dans laquelle s'expriment poids et volume — au lieu des seules unités par défaut d'Odoo.
Le dernier compte dès qu'on manipule des gammes hétérogènes : exprimer en kilogrammes le poids d'une vis et celui d'une machine-outil produit des nombres illisibles d'un côté ou de l'autre.
Le poids réel des conditionnements est repris côté expédition par un module de livraison, décrit dans regrouper et scinder les transferts.
Les unités de mesure
| Module | Ce qu'il permet |
|---|---|
product_secondary_unit | Des unités secondaires avec facteur de conversion, définies au niveau du produit ou d'une variante |
uom_alias | Des alias : retrouver une unité par un nom alternatif — « pce », « unité », « pièce » |
uom_category_active | L'archivage des catégories d'unités de mesure |
product_category_uom | Une unité par défaut définie sur la catégorie de produit, appliquée aux nouveaux articles |
Le premier est la brique dont dépendent les unités secondaires de vente et d'achat déjà traitées : c'est ici que se définit le facteur de conversion. La possibilité de le définir par variante compte dans l'industrie : deux longueurs d'un même profilé n'ont pas le même poids au mètre.
Le deuxième paraît anecdotique et supprime une friction quotidienne : chaque utilisateur cherche l'unité avec son propre vocabulaire, et ne la trouve pas.
Le quatrième évite une erreur récurrente : créer un article liquide en « unité » parce que c'est la valeur par défaut. Une unité posée sur la catégorie se propage aux nouveaux articles, et la gamme reste cohérente.
Limites connues
- Rendre le niveau d'emballage obligatoire suppose de le renseigner sur l'existant : c'est une reprise de données à chiffrer.
- Les dimensions et poids d'emballage doivent être saisis : sans données, les calculs de colisage et de poids ne produisent rien.
- Le poids net et le poids brut sont deux champs distincts : il faut dire lequel sert à quoi, sinon les deux divergent.
- Les unités secondaires demandent un facteur par produit — et par variante quand les variantes diffèrent physiquement.
uom_category_activearchive des catégories : attention aux unités encore utilisées dans l'historique.- Le calculateur de colisage est un moteur : seul, il ne produit aucun écran métier.
Identité technique
Les dix-sept modules viennent du dépôt OCA product-attribute, branche 18.0, en licences AGPL-3 et LGPL-3 selon le module. Plusieurs dépendent d'uom ou de stock ; le calcul de poids total s'appuie sur le calculateur de colisage et sur les dimensions d'emballage.
Les familles voisines : la fiche produit pour la codification et le cycle de vie, et conditionnements, unités et lots pour leur usage en vente.
Questions fréquentes
Pourquoi classer les emballages par niveau ?
Parce qu'Odoo connaît des emballages par produit sans les classer : le même carton s'appelle différemment sur chaque article, et aucune analyse par type de contenant n'est possible. product_packaging_level crée un référentiel — palette, carton, boîte — et le rend obligatoire sur chaque emballage.
Comment calculer le poids réel d'une expédition ?
product_total_weight_from_packaging calcule le poids total à partir des emballages et non du seul poids unitaire du produit. Un poids calculé sans les cartons et les palettes est toujours sous-estimé — et le transporteur, qui pèse le colis réel, facture l'écart.
À quoi sert le poids égoutté ?
C'est le poids du produit une fois le liquide de conditionnement retiré — une mention obligatoire sur les conserves et les bocaux. product_drained_weight l'ajoute à la fiche, en complément du poids net et du poids brut gérés par product_net_weight.
Peut-on définir une unité secondaire par variante ?
Oui : product_secondary_unit permet de définir le facteur de conversion au niveau du modèle de produit ou d'une variante précise. C'est nécessaire dans l'industrie, où deux longueurs d'un même profilé n'ont pas le même poids au mètre.
Comment éviter que chaque article ait une unité différente ?
product_category_uom définit une unité par défaut sur la catégorie de produit, appliquée aux nouveaux articles créés dedans. Cela évite l'erreur récurrente de l'article liquide créé en « unité » parce que c'était la valeur par défaut.
Se faire accompagner
La description physique d'un produit est une donnée qu'on remplit rarement et qu'on découvre nécessaire au premier litige transport — ou au premier contrôle d'étiquetage. Elle conditionne pourtant le coût d'expédition, le remplissage des véhicules et la conformité réglementaire.
Nous la traitons donc par l'usage : si vous expédiez, les poids et les emballages d'abord ; si vous vendez de l'alimentaire, les poids net et égoutté ; si vous achetez à la palette, les unités secondaires. Le reste peut attendre. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
- Fiche produit : codification, cycle de vie et coût
- Conditionnements, unités secondaires et lots
- Grossiste, négoce et distribution avec Odoo
En résumé
Nommer les contenants, peser ce qui part réellement, distinguer le brut du net et de l'égoutté, exprimer chaque gamme dans l'unité qui lui convient. Dix-sept modules pour décrire ce qu'un produit est physiquement — ce dont dépendent le transport, l'étiquetage et la préparation. Parlons de votre catalogue.