Documentation11 min de lecture

Conditionnements, unités secondaires, lots et élaborations

Quatorze modules OCA du dépôt `sale-workflow` font parler Odoo 18 Community le langage du négoce : `sale_order_lot_selection` (version 18.0.1.4.2) permet de **choisir sur la ligne le lot qui sera livré** au client, et `sale_order_lot_selection_price` applique alors le **prix propre à ce lot** quand il en porte un. Les douze autres : vente par carton, unité secondaire, élaborations de préparation et code produit du client.

Numérisation et traitement automatisé de documents commerciaux

Un négociant ne vend pas des unités : il vend des cartons, des palettes, des kilos, des lots. Et son client ne connaît pas vos références, il connaît les siennes.

Quatorze modules communautaires font entrer ce vocabulaire dans la commande — et quelques-uns vont jusqu'à l'atelier de préparation.

Résumé

sale_packaging_default inverse la logique d'Odoo : on choisit d'abord l'emballage, puis le nombre d'emballages, au lieu de saisir des unités et de laisser Odoo deviner. sale_order_secondary_unit permet de vendre dans une unité secondaire — facturer au mètre un produit géré en pièces, au kilo un produit stocké en cartons — et s'installe automatiquement dès que ses deux dépendances sont là.

Trois modules traitent les lots : choisir sur la ligne le lot qui sera livré, générer automatiquement un numéro de lot à la confirmation pour les produits configurés ainsi, et appliquer le prix spécifique du lot sélectionné. C'est la chaîne complète d'une vente tracée à l'unité de production.

sale_elaboration ajoute aux lignes des élaborations — opérations légères de préparation à exécuter à la livraison, l'exemple du code source étant « écailler un poisson » — avec ses profils, ses rapports et son menu de configuration. Autour, deux modules de colle y ajoutent la marque et les élaborations par défaut pour un couple client/produit. Enfin product_customerinfo_sale affiche le code produit du client sur les lignes, et trois petits modules complètent : nomenclature choisie sur la ligne, commande de service marquée terminée, montant du transport isolé.

L'essentiel

  • Choisir l'emballage d'abord, la quantité ensuite — l'inverse du comportement standard.
  • Une unité secondaire de vente, distincte de l'unité de stock, installée automatiquement.
  • Le lot livré choisi sur la ligne, avec son prix propre s'il en a un.
  • La génération automatique d'un numéro de lot à la confirmation, pour les produits concernés.
  • Les élaborations : des opérations de préparation portées par la ligne, avec profils et rapports.
  • Des élaborations par défaut pour un couple client/produit — le client qui veut toujours son poisson vidé.
  • Le code produit du client affiché sur la ligne : il commande avec sa référence, pas la vôtre.
  • La nomenclature choisie sur la ligne quand un produit en a plusieurs.

Ce que ces modules ajoutent à l'instance

ModuleRôleVersionDépend de
sale_packaging_defaultEmballage choisi avant la quantité18.0.1.1.0sale
product_set_sell_only_by_packagingColle : set de produits et vente par colisage18.0.1.0.0sell_only_by_packaging
sale_order_secondary_unitUnité secondaire de vente18.0.1.1.0product_secondary_unit
sale_order_lot_selectionLot choisi sur la ligne18.0.1.4.2sale_stock, stock_restrict_lot
sale_order_lot_generatorLot généré à la confirmation18.0.1.0.0sale_order_lot_selection
sale_order_lot_selection_pricePrix propre au lot18.0.2.0.0stock_lot_list_price
sale_elaborationÉlaborations sur les lignes18.0.1.3.2sale_stock
sale_elaboration_brandLa marque dans le rapport d'élaboration18.0.1.0.0product_brand
product_customerinfo_saleCode et nom produit propres au client18.0.1.0.1product_customerinfo
product_customerinfo_elaborationÉlaborations par défaut client/produit18.0.1.0.0sale_elaboration
sale_mrp_bomNomenclature choisie sur la ligne18.0.1.0.0mrp, sale_stock
sale_order_finish_serviceCommande de service marquée terminée18.0.1.0.0sale_service
sale_shipping_info_helperMontant du transport isolé18.0.1.0.0delivery
sale_order_transmit_methodCanal d'envoi propagé aux factures18.0.1.0.0account_invoice_transmit_method

Les menus ajoutés se concentrent sur deux familles : les élaborations (configuration, profils et deux rapports, côté Ventes et côté Inventaire), les unités secondaires (Ventes ▸ Configuration ▸ Unités de mesure) et les informations produit par client (Ventes ▸ Configuration ▸ Prices for customers).

Vendre au carton, au kilo, à la palette

L'emballage d'abord

sale_packaging_default inverse la logique d'Odoo : au lieu de saisir une quantité d'unités et de laisser le logiciel suggérer un emballage, le vendeur choisit l'emballage puis le nombre d'emballages. La quantité en unités se déduit.

C'est la façon dont la commande arrive réellement : « trois palettes », « dix cartons ». Le reste est un calcul, et c'est au logiciel de le faire — pas au vendeur, dont les erreurs de conversion coûtent des livraisons entières.

Un module de colle, product_set_sell_only_by_packaging, garantit la cohérence avec les sets de produits quand un article ne peut être vendu que par colisage.

L'unité secondaire

sale_order_secondary_unit permet de vendre dans une seconde unité de mesure : facturer au mètre linéaire un produit géré en pièces, au kilogramme un produit stocké en cartons. Le module s'installe automatiquement dès que ses dépendances sont présentes.

SituationUnité de stockUnité de vente
Profilés, tissus, câblesPièce ou rouleauMètre
Produits frais en caisseCaisseKilogramme
VisserieUnitéBoîte ou sachet

Sans ce module, on crée des produits distincts par unité — et le stock devient faux, puisque les deux références puisent dans le même réel.

Le pendant logistique de ce module est traité dans ventes et stock : un module de colle assure que l'unité secondaire suive jusqu'aux mouvements.

Les lots : choisir, générer, tarifer

Pour un produit tracé — agroalimentaire, cosmétique, pièce critique — le lot n'est pas un détail logistique : c'est parfois l'objet de la vente.

  1. sale_order_lot_selection permet de choisir le lot ou le numéro de série directement sur la ligne de commande. Le lot promis au client est celui qui sera livré — la restriction est appliquée jusqu'au transfert.
  2. sale_order_lot_generator génère automatiquement un numéro de lot ou de série à la confirmation, pour les produits configurés ainsi. Utile quand le lot n'existe pas encore au moment de la vente — une production à la commande.
  3. sale_order_lot_selection_price fait calculer le prix de vente en tenant compte du prix spécifique du lot sélectionné, quand celui-ci en porte un.

Le troisième module décrit une pratique réelle et mal supportée par les ERP : tarifer au lot. Un millésime, une qualité de récolte, une série limitée n'ont pas le prix du produit générique. Sans lui, on crée une référence produit par lot — et le catalogue explose.

L'ensemble suppose que la traçabilité par lot soit activée sur les produits concernés, et s'appuie sur un module de restriction de lot côté stock.

Les élaborations : la préparation décrite sur la ligne

C'est le module le plus spécifique du lot, et le plus parlant pour qui connaît le négoce alimentaire.

sale_elaboration permet d'associer à une ligne de commande une ou plusieurs élaborations : des opérations de préparation ou de transformation légère à effectuer sur le produit au moment de la livraison. L'exemple donné par le code source est « écailler un poisson ».

ÉcranCe qu'on y trouve
Ventes ▸ Configuration ▸ ElaborationsLes élaborations disponibles et leurs profils
Ventes ▸ Analyse ▸ Elaborations ReportLe rapport côté commercial
Inventaire ▸ Analyse ▸ Elaborations ReportLe même, côté préparation — c'est celui qui sert à l'atelier

Deux compléments en font un outil quotidien :

  • product_customerinfo_elaboration définit des élaborations par défaut pour un couple client/produit : le client qui veut toujours son poisson vidé n'a plus à le demander, et personne n'a plus à s'en souvenir.
  • sale_elaboration_brand ajoute la marque du produit dans le rapport des mouvements de stock issu des élaborations, pour identifier la marque en même temps que les consignes de préparation.

Au-delà du poisson, la mécanique vaut pour toute préparation à la commande : découpe, mise sous film, étiquetage client, assemblage léger. C'est une instruction de préparation portée par la vente et lue par l'entrepôt, ce qui est exactement ce qui manque dans les installations standard.

Parler le langage du client, et quatre détails utiles

Le code produit du client

product_customerinfo_sale relie les informations produit propres à un client — nom et code spécifiques — aux commandes de vente : le code du client apparaît sur les lignes, et un menu centralise ces informations.

Le besoin est universel en sous-traitance et en distribution : le client commande avec sa référence. Devoir traduire manuellement sa commande dans votre codification est une source d'erreurs quotidienne, et un motif de litige quand la traduction se trompe.

Trois modules de finition

ModuleCe qu'il résout
sale_mrp_bomChoisir quelle nomenclature fabrique la ligne, quand un produit en a plusieurs — gammes ou variantes de fabrication
sale_order_finish_serviceMarquer terminée une commande de service, qu'Odoo laisserait indéfiniment à l'état « commande »
sale_shipping_info_helperIsoler le montant du transport du montant des articles, pour les rapports et les traitements

Le deuxième comble un vrai manque : sur une activité de service, rien ne distingue une commande achevée d'une commande en cours. La liste de travail se remplit sans jamais se vider.

Dernier module du lot, sale_order_transmit_method porte le canal d'envoi — courriel, courrier, portail — sur la commande, repris du client et propagé aux factures générées. La cohérence du canal entre le devis et la facture paraît évidente ; elle ne l'est pas dans Odoo standard.

Limites connues

  • L'unité secondaire s'installe automatiquement : son apparition peut surprendre si l'on n'a installé que ses dépendances.
  • Le choix du lot à la vente contraint la logistique : l'entrepôt doit livrer ce lot précis, ce qui suppose un stock organisé et une réservation fiable.
  • La tarification par lot suppose un prix renseigné sur le lot : sans donnée, le module n'a rien à appliquer.
  • Les élaborations sont un vocabulaire métier : installées sans profils ni règles par client, elles restent un champ libre de plus.
  • Le code produit client doit être maintenu : un catalogue client non tenu produit des traductions fausses, pires que l'absence de traduction.
  • sale_order_finish_service ajoute un indicateur, pas un état : la commande reste à l'état « commande » pour Odoo.

Identité technique

Les quatorze modules viennent du dépôt OCA sale-workflow, branche 18.0, en licence AGPL-3 sauf sale_packaging_default (LGPL-3). Six dépendent de modules d'autres dépôts : unités secondaires et informations client sur produit (product-attribute), restriction et prix de lot (stock-logistics-workflow), marque produit (brand), mode de transmission (account-invoicing).

Les familles voisines : recommandation de produits, ventes et stock, remises et tarifs.

Questions fréquentes

Peut-on vendre en cartons plutôt qu'en unités ?

Oui : sale_packaging_default inverse la logique standard — on choisit l'emballage, puis le nombre d'emballages, et la quantité en unités se déduit. C'est la façon dont la commande arrive réellement, et cela supprime les erreurs de conversion qui coûtent des livraisons entières.

Comment facturer au kilo un produit stocké en cartons ?

Avec sale_order_secondary_unit, qui ajoute une unité secondaire de vente distincte de l'unité de stock. L'alternative — créer deux références produit — rend le stock faux, puisque les deux puisent dans le même réel. Le module s'installe automatiquement dès que ses dépendances sont présentes.

Peut-on promettre un lot précis à un client ?

Oui : sale_order_lot_selection permet de choisir le lot ou le numéro de série sur la ligne de commande, et la restriction est appliquée jusqu'au transfert. Cela contraint l'entrepôt à livrer ce lot, donc suppose un stock organisé et une réservation fiable.

Peut-on vendre deux lots du même produit à des prix différents ?

C'est l'objet de sale_order_lot_selection_price : le prix de vente tient compte du prix spécifique du lot sélectionné, s'il en porte un. Millésimes, qualités de récolte, séries limitées — sans ce module, il faut créer une référence produit par lot et le catalogue explose.

Qu'est-ce qu'une élaboration ?

Une opération de préparation ou de transformation légère à effectuer sur le produit au moment de la livraison — l'exemple du code source est « écailler un poisson ». sale_elaboration l'attache à la ligne de commande, avec ses profils, son rapport côté préparation, et la possibilité de définir des élaborations par défaut pour un couple client/produit.

Se faire accompagner

Ces quatorze modules ont un point commun : ils font parler l'ERP dans la langue du métier. Une entreprise qui vend des palettes et parle en unités dans son logiciel passe son temps à convertir — et chaque conversion est une erreur potentielle que personne ne détecte avant la livraison.

Nous commençons donc par relever le vocabulaire réel : comment la commande arrive, dans quelle unité, avec quelle référence, et ce que l'atelier doit faire avant d'expédier. Le paramétrage suit ce relevé. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Vendre au carton, facturer au kilo, promettre un lot et le tarifer, décrire la préparation sur la ligne, et afficher la référence du client plutôt que la vôtre. Quatorze modules qui remplacent les conversions mentales — celles dont l'erreur ne se voit qu'à la livraison. Parlons du vocabulaire de votre métier.

Documentation OCAVentesNégoce

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo