Un devis est un document commercial avant d'être un enregistrement. Ce qu'il montre — le libellé d'une ligne, une note technique, un code produit interne, un prix — décide de la façon dont le client le lit, et parfois de la vente.
Odoo construit ces libellés à sa manière, et n'offre aucun moyen simple de masquer une ligne. Douze modules communautaires rendent ce contrôle à l'entreprise.
Résumé
Quatre modules agissent sur ce que le client voit : sale_order_line_description n'affiche que la description de vente du produit au lieu de la construction standard d'Odoo, sale_line_name_option retire le code interne du produit, sale_order_line_no_print masque des lignes entières du PDF et du portail, et sale_order_report_without_price produit un document sans aucun montant.
Trois ajoutent de l'information interne sans polluer le document : une note libre par ligne, un commentaire destiné au fournisseur, et les valeurs d'attributs réellement utilisées — y compris celles des attributs configurés sans variantes.
Deux donnent une référence stable : un numéro de ligne qui suit jusqu'à la facture et au portail, et une référence de commande client par ligne propagée jusqu'aux lignes de facture. Trois enfin changent la façon de travailler : un écran de saisie directe des lignes, un écran de consultation transversale, et des étiquettes pour classer les lignes par motif.
L'essentiel
- Masquer une ligne du PDF et du portail en la gardant visible en interne — l'information stratégique reste interne.
- Un devis sans prix en un clic, pour transmettre un document à qui ne doit pas voir les montants.
- Le libellé maîtrisé : description de vente seule, ou suppression du code produit — deux modules, deux degrés.
- Un numéro de ligne stable, propagé au PDF, au portail et aux lignes de facture.
- Une référence client par ligne, propagée jusqu'à la facture — le cas d'une commande qui couvre plusieurs références client.
- Deux écrans de lignes : l'un pour saisir vite (il crée l'en-tête tout seul), l'autre pour chercher et analyser.
- Des étiquettes sur les lignes : promotion, échantillon, remplacement, urgence — l'analyse que les champs standards ne permettent pas.
Ce que ces modules ajoutent à l'instance
| Module | Ce qu'il change | Version | Licence |
|---|---|---|---|
sale_order_line_description | Le libellé = la description de vente seule | 18.0.1.0.0 | AGPL-3 |
sale_line_name_option | Le libellé sans le code produit | 18.0.1.0.1 | AGPL-3 |
sale_order_line_no_print | Masque des lignes du PDF et du portail | 18.0 | AGPL-3 |
sale_order_report_without_price | Un rapport de devis sans montants | 18.0.1.0.0 | LGPL-3 |
sale_order_line_note | Une note libre par ligne | 18.0.1.0.0 | AGPL-3 |
sale_line_vendor_comment | Un commentaire fournisseur sur la ligne | 18.0.1.0.0 | LGPL-3 |
sale_order_line_product_attribute_values | Les valeurs d'attributs réellement utilisées | 18.0.1.0.1 | LGPL-3 |
sale_order_line_sequence | Un numéro de ligne stable, jusqu'à la facture | 18.0.1.3.0 | AGPL-3 |
sale_order_line_client_order_ref | Une référence client par ligne | 18.0.2.0.0 | AGPL-3 |
sale_order_line_input | Un écran de saisie directe des lignes | 18.0.1.0.1 | AGPL-3 |
sale_order_line_menu | Un écran de consultation des lignes | 18.0.1.0.0 | AGPL-3 |
sale_order_line_tag | Des étiquettes sur les lignes | 18.0.1.0.0 | AGPL-3 |
Tous viennent du dépôt OCA sale-workflow, branche 18.0 — le plus gros dépôt du catalogue avec 172 modules, dont la moitié porte sur la commande et ses lignes.
Où les trouver dans Odoo
| Menu | Module | Ce qu'on y fait |
|---|---|---|
| Ventes ▸ Commandes ▸ Lignes de commande | sale_order_line_menu | Chercher et analyser les lignes, sans en créer |
| Ventes ▸ Commandes ▸ Sales Orders Lines | sale_order_line_input | Saisir des lignes directement, en liste |
| Ventes ▸ Configuration ▸ Commandes clients ▸ Sales Order Line Tags | sale_order_line_tag | Gérer les étiquettes de lignes |
| Ventes ▸ Configuration ▸ Commandes clients ▸ Terms and conditions Templates | sale_order_note_template | Les modèles de conditions générales |
Les huit autres n'ajoutent aucun menu : ils modifient le formulaire de commande, les rapports PDF ou la page du portail client.
Maîtriser ce que le client voit
Le libellé d'une ligne
Odoo compose le libellé d'une ligne en combinant la référence interne, le nom du produit et sa description de vente. C'est pratique en interne, et discutable sur un devis envoyé à un client — qui n'a rien à faire de votre codification.
sale_order_line_descriptionaffiche uniquement la description de vente de la fiche produit, pour les utilisateurs autorisés. C'est le contrôle le plus fin : le texte visible par le client est celui qu'on a écrit pour lui.sale_line_name_optionest plus simple : une option de configuration qui retire le code produit de la description, en gardant le reste.
Les deux ne se cumulent pas utilement : on choisit selon le degré de contrôle voulu, et selon qui doit en décider — un réglage global, ou un droit donné à certains utilisateurs.
Masquer une ligne, ou tous les prix
sale_order_line_no_printmasque certaines lignes dans les documents PDF — devis, commande, facture — et dans la vue portail, tout en les gardant visibles dans l'interface de gestion. Le besoin, énoncé par le module lui-même : garder internes des informations utiles à l'entreprise mais stratégiques ou non pertinentes pour le client.
L'usage le plus fréquent est la ligne de détail technique ou de composant, visible par la production et inutile au client. Le second est la ligne à montant nul qui alourdit le document.
sale_order_report_without_price répond à un besoin voisin : une variante du rapport sans prix unitaire, remise, taxes, sous-total ni total. On transmet alors une confirmation de commande ou un bon de préparation à quelqu'un qui n'a pas à connaître les montants — un transporteur, un chantier, un service technique — sans retoucher le document à la main.
C'est le pendant, côté document, de ce que les types de commande font côté circuit.
Ajouter de l'information sans polluer le document
| Module | Champ ajouté | À quoi il sert |
|---|---|---|
sale_order_line_note | Une note libre, texte long | Consigner une information de ligne sans toucher à la description commerciale |
sale_line_vendor_comment | Un commentaire fournisseur | Transmettre une précision à l'achat lié à la ligne |
sale_order_line_product_attribute_values | Les valeurs d'attributs utilisées | Tracer et filtrer les ventes par valeur d'attribut |
Le troisième résout un angle mort réel. Quand un attribut produit est configuré en mode « ne jamais créer de variantes », sa valeur n'existe nulle part de façon exploitable après la vente : elle a servi à configurer, puis elle s'évapore. Le module l'enregistre sur la ligne.
Concrètement : on peut enfin répondre à « combien avons-nous vendu en finition chêne l'an dernier ? » sans relire les devis un par un.
Le premier module, la note de ligne, mérite une recommandation d'usage : il faut décider une fois pour toutes si l'information technique va dans la note ou dans la description, sinon elle se retrouve à moitié dans l'une et à moitié dans l'autre — et le document envoyé au client devient imprévisible.
Des références qui tiennent du devis à la facture
Le numéro de ligne
sale_order_line_sequence affiche un numéro de ligne visible et stable, et le propage au rapport PDF, à la page du portail client et aux lignes de facture générées depuis la commande.
L'intérêt apparaît au premier échange un peu technique avec un client : « la ligne 7 », ça se dit au téléphone. Sans numéro stable, on désigne les lignes par leur position dans l'ordre d'affichage, qui change dès qu'on en ajoute une.
La référence client, par ligne
Odoo porte une référence de commande client au niveau de l'en-tête. sale_order_line_client_order_ref l'ajoute au niveau de la ligne, la propage jusqu'aux lignes de facture, et peut l'afficher dans les PDF de devis et de facture selon un paramètre par société.
Le cas d'usage est précis : un client passe une seule commande qui couvre plusieurs de ses références internes — plusieurs chantiers, plusieurs services, plusieurs bons de commande. Sans référence par ligne, il ne peut pas rapprocher votre facture de ses engagements, et il la met de côté.
Pour une entreprise qui vend à des grands comptes ou au secteur public, ce module fait gagner des jours de délai de règlement. C'est rarement ainsi qu'on le présente, et c'est pourtant son effet.
Deux écrans de lignes, deux usages
sale_order_line_input | sale_order_line_menu | |
|---|---|---|
| Intention | Saisir vite | Chercher et analyser |
| Création de lignes | Oui, directement dans la liste | Non |
| Création d'en-tête | Automatique dès qu'un client est renseigné | — |
| Contenu | Toutes les lignes de la base, modifiables en ligne | Produit, quantités, statuts, factures liées |
| Dépend de | sale_management | sale |
La différence la plus importante est la deuxième ligne du tableau, et elle décide du choix. Le premier module s'adresse à une prise de commande répétitive — un négoce qui saisit des dizaines de lignes par téléphone — où passer par le formulaire complet coûte des secondes à chaque fois.
Le second s'adresse à une question transversale : quelles lignes de quel produit, dans quel état, facturées ou non. C'est un écran d'analyse, pas de saisie.
Installer les deux est possible et crée deux menus voisins, donc une confusion. Nous conseillons de choisir celui qui correspond au métier dominant, et d'assumer ce choix.
Dernier module du lot, sale_order_line_tag ajoute des étiquettes libres sur les lignes — promotion, échantillon, remplacement, urgence. Elles se gèrent dans un menu de configuration dédié, et donnent la maille d'analyse que les champs standards ne permettent pas : combien d'échantillons offerts ce trimestre, quelle part de remplacements sous garantie.
Limites connues
- Masquer une ligne reste une décision commerciale : une ligne masquée sur le PDF existe toujours dans les totaux. Il faut vérifier que le document reste cohérent.
- Deux modules de libellé qui se chevauchent : choisir entre la description seule et la suppression du code produit, pas les empiler.
- Deux écrans de lignes aux noms voisins : installer les deux déroute les utilisateurs.
- La note de ligne n'a d'intérêt qu'avec une règle d'usage écrite : sans elle, l'information se disperse entre note et description.
sale_order_line_inputcrée l'en-tête de commande automatiquement : pratique en saisie rapide, surprenant si on ne l'attend pas.- Les étiquettes ne servent que si elles sont peu nombreuses : une liste de trente étiquettes n'analyse plus rien.
Identité technique
Les douze modules viennent du dépôt OCA sale-workflow, branche 18.0, sous licence AGPL-3 ou LGPL-3 selon le module (voir le tableau en tête de fiche). Ils dépendent tous de sale, trois d'entre eux de sale_management, et aucun n'exige de module tiers.
Ce dépôt est le plus vaste du catalogue OCA : 172 modules pour la seule gestion des ventes. Les autres familles sont traitées dans les fiches voisines — types de commande et workflows pour le circuit, et achats pour le symétrique côté fournisseur.
Questions fréquentes
Peut-on masquer une ligne de commande au client ?
Oui, avec sale_order_line_no_print : la ligne disparaît des PDF — devis, commande, facture — et de la vue portail, tout en restant visible dans l'interface de gestion. L'usage courant est la ligne de détail technique, utile en interne et sans intérêt pour le client. Attention à la cohérence du document : la ligne masquée compte toujours dans les totaux.
Comment envoyer une confirmation de commande sans les prix ?
sale_order_report_without_price ajoute une variante du rapport PDF qui masque prix unitaire, remise, taxes, sous-total et total. On la transmet à un transporteur, un chantier ou un service technique sans retoucher le document à la main.
Comment enlever le code produit des libellés du devis ?
Deux modules, deux degrés. sale_line_name_option est une option de configuration qui retire le code interne de la description. sale_order_line_description va plus loin : il affiche uniquement la description de vente de la fiche produit, pour les utilisateurs autorisés. On choisit l'un ou l'autre, pas les deux.
À quoi sert une référence client sur chaque ligne ?
À permettre au client de rapprocher votre facture de ses engagements quand une seule commande couvre plusieurs de ses références — plusieurs chantiers, services ou bons de commande. sale_order_line_client_order_ref la propage jusqu'aux lignes de facture et peut l'imprimer sur les PDF. C'est souvent du délai de règlement gagné.
Quelle différence entre les deux écrans de lignes de commande ?
sale_order_line_input sert à saisir : il permet de créer des lignes directement en liste, et crée même l'en-tête de commande automatiquement dès qu'un client est renseigné. sale_order_line_menu sert à consulter : vue transversale pour chercher et analyser, sans création possible. Installer les deux crée deux menus voisins et déroute les utilisateurs.
Se faire accompagner
Ces douze modules paraissent anecdotiques et touchent pourtant au document le plus lu de l'entreprise. Le piège habituel est de les empiler : deux modules de libellé, deux écrans de lignes, une note dont personne ne connaît la règle d'usage — et un devis dont plus personne ne prévoit le rendu.
Nous partons donc du document : nous imprimons un vrai devis, nous listons ce qui doit changer, et nous n'installons que ce qui sert cette liste. Le reste attend d'avoir une raison. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
- Ventes : types de commande, workflows et blocages
- Achats : types, remises et blocages
- Le cycle de vente dans Odoo
En résumé
Le devis est le document le plus lu de l'entreprise : ces douze modules décident de ce qu'il montre. Masquer une ligne, retirer un code produit, numéroter les lignes, porter une référence client par ligne, saisir en liste. À installer en partant d'un vrai devis imprimé, pas d'une liste de modules. Parlons de vos documents commerciaux.