Un devis, une facture, un bon de livraison sont les seuls documents qu'un client voit de votre ERP. Odoo les génère avec un gabarit unique, un en-tête composé champ par champ, et aucune possibilité d'ajouter une couverture, un filigrane ou une mention conditionnelle.
Seize modules communautaires rendent ces documents présentables — et imprimables comme on en a besoin.
Résumé
Quatre modules traitent l'en-tête et le pied de page : l'en-tête et le pied remplacés par une image, un contenu HTML libre injecté dans le pied, le nom du document affiché à côté de la pagination, et un format d'adresse personnalisé et traduit par langue sur la fiche contact.
Quatre modules traitent les habillages : un filigrane image ou PDF en fond de chaque page, des pages de couverture et de dos, des images positionnées au millimètre définies au niveau de la société ou du rapport, et des classes CSS contrôlant l'affichage d'un élément selon sa position dans la pagination.
Trois modules traitent le contenu : des modèles de commentaires insérés au-dessus ou en dessous des lignes d'un document, la précision décimale et les options d'affichage des champs numériques configurées sans code, et trois attributs de longueur utilisables dans les gabarits.
Cinq modules enfin traitent l'impression et la substitution : des étiquettes autocollantes avec format de planche configurable, des règles de substitution remplaçant un rapport par un autre, des paramètres transmis au moteur PDF, des options d'encodage pour les rapports texte, et un générateur de QR codes de meilleure qualité.
L'essentiel
- L'en-tête et le pied remplacés par une image.
- Un filigrane image ou PDF en fond de page.
- Une page de couverture et une page de dos.
- Des images positionnées au millimètre : tampon, mention, logo.
- Des commentaires types au-dessus ou en dessous des lignes.
- Des étiquettes autocollantes avec format de planche configurable.
- Un rapport substitué par un autre selon une règle.
- Un format d'adresse traduit par langue.
Ce que ces modules ajoutent à l'instance
| Famille | Modules | Nombre |
|---|---|---|
| En-tête et pied | report_layout_config, report_footer_html, report_display_name_in_footer, report_partner_address | 4 |
| Habillages | report_qweb_pdf_watermark, report_qweb_pdf_cover, report_positioned_image, report_qweb_element_page_visibility | 4 |
| Contenu | base_comment_template, report_qweb_field_option, report_qweb_parameter | 3 |
| Impression et substitution | report_label, report_substitute, report_wkhtmltopdf_param, report_text_format_option, report_qr | 5 |
Les menus, tous sous Paramètres ▸ Technique ▸ Analyse : Modèles de commentaires, Label Paper Formats, Qweb Field Options.
L'en-tête : composé ou remplacé
L'en-tête standard d'Odoo se compose de champs : logo, nom, adresse, numéro de TVA, chacun positionné par le gabarit. Toute identité visuelle un peu travaillée — un bandeau, une mise en page sur deux colonnes, une typographie précise — ne rentre pas dans ce moule.
report_layout_config prend le problème à l'envers : remplacer l'en-tête et le pied par une image. Le graphiste livre deux fichiers, et les documents sortent exactement comme la charte le prévoit.
C'est la solution la plus simple et la plus durable : une image ne casse pas à la montée de version, contrairement à une surcharge de gabarit.
report_footer_html(LGPL-3) ajoute un champ de contenu HTML libre sur la configuration d'un rapport, injecté dans son pied de page. Les mentions légales d'une facture ne sont pas celles d'un bon de livraison.report_display_name_in_footer(LGPL-3) affiche le nom du document dans le pied de chaque page, à côté de la pagination, pour les modèles désignés par un paramètre système.report_partner_addressajoute un champ détails d'adresse traduisible sur la fiche contact, utilisé à la place du format standard. L'adresse d'un client allemand s'écrit dans l'ordre allemand.
Le nom du document dans le pied de page est le détail qui sauve une liasse tombée par terre : « page 3 / 12 » ne dit rien, « FA/2026/0184 — page 3 / 12 » permet de reconstituer.
Les habillages : filigrane, couverture, tampons
report_qweb_pdf_watermark ajoute un filigrane — image ou PDF — en fond de chaque page. Le module existe parce que le moteur de génération PDF d'Odoo ne sait pas produire un fond de page complet en HTML : il faut fusionner deux documents.
report_qweb_pdf_cover ajoute une page de couverture et une page de dos à n'importe quel rapport, fournies sous forme de fichiers.
La couverture est ce qui distingue un devis de 20 pages envoyé par une PME sérieuse d'un devis de 20 pages sorti d'un ERP : une page de garde, un sommaire, et un dos avec les coordonnées. Rien de cela ne demande de développement.
report_positioned_imageplace des images au millimètre — filigranes, logos, tampons — définies au niveau de la société ou du rapport.report_qweb_element_page_visibilityfournit des classes CSS contrôlant l'affichage d'un élément selon sa position : première page, dernière page, toutes les pages. C'est la dépendance du module d'images positionnées.
L'usage le plus fréquent du dernier est la mention « suite au verso » ou le bloc de signature, qui ne doit apparaître qu'une fois.
Le contenu du document
base_comment_template permet de définir des modèles de commentaires — texte ou HTML — insérés automatiquement au-dessus ou en dessous des lignes d'un document : devis, facture, bon de livraison. Référentiel sous Paramètres ▸ Technique ▸ Analyse ▸ Modèles de commentaires.
C'est l'outil des conditions de vente, des mentions de garantie, des consignes de réception — tout ce texte type qu'on recopie autrement à la main, avec des variantes qui divergent.
report_qweb_field_optionpermet de configurer sans code la précision décimale des champs numériques et les options d'affichage des champs d'un rapport. Menu Qweb Field Options.report_qweb_parameterajoute trois attributs de longueur utilisables dans les gabarits de rapport — un outil pour intégrateurs.
La précision décimale configurable répond à un besoin concret : afficher un prix unitaire à quatre décimales sur une facture de pièces détachées, et à deux sur une facture de prestations.
Imprimer, substituer, régler le moteur
report_label permet de créer, sur n'importe quel modèle, une action d'impression d'étiquettes autocollantes : format de planche configurable, gabarit libre pour le rendu d'une étiquette, et un assistant. Référentiel sous Label Paper Formats.
C'est le module qui manque à toute entreprise qui étiquette : produits, emplacements, équipements, colis. Le format de planche configurable évite d'acheter des planches au format d'Odoo.
report_substitutedéfinit des règles de substitution : quand un rapport standard est appelé, le système le remplace par un autre. Utile pour un document réglementaire propre à une société ou à un pays.report_wkhtmltopdf_paramtransmet des paramètres personnalisés au moteur de génération PDF, depuis le format de papier.report_text_format_option(LGPL-3) ajoute des options d'encodage et de fin de ligne aux rapports de type texte, pour les systèmes qui exigent un format précis.report_qrajoute une route générant des QR codes de meilleure qualité que le générateur standard, avec des options de personnalisation.
Les paramètres du moteur PDF sont le dernier recours sur un rapport qui ne sort pas juste : une marge ignorée, une image coupée, un tableau qui saute une page. Mieux vaut un paramètre documenté qu'un gabarit contourné.
Limites connues
- Remplacer l'en-tête par une image fige la mise en page : changer d'adresse demande un nouveau fichier, non une modification de champ.
- Le filigrane fusionne deux PDF : le temps de génération augmente, sensiblement sur les documents longs.
- Les images positionnées au millimètre dépendent du format de papier : un passage de A4 à Letter décale tout.
report_substituteremplace un rapport silencieusement : un utilisateur qui imprime et obtient autre chose n'a aucun indice.- Les paramètres du moteur PDF sont propres à sa version : un paramètre valide aujourd'hui peut disparaître.
report_labelcrée des actions serveur : leur portée se restreint par les droits, sinon chacun imprime des étiquettes de tout.- Les modèles de commentaires s'insèrent sur les documents : une mention erronée part chez tous les clients jusqu'à correction.
- La couverture et le dos sont des fichiers : ils ne reprennent aucune donnée du document.
Identité technique
Les seize modules viennent du dépôt OCA reporting-engine, branche 18.0 — 34 modules au total. Treize sont en AGPL-3, trois en LGPL-3. Les dépendances : web pour la plupart, mail pour les commentaires et les substitutions, base_automation pour les étiquettes, uom pour les options de champ, report_qweb_element_page_visibility pour les images positionnées.
Voir aussi exports SQL et indicateurs pour le reste du dépôt.
Questions fréquentes
Peut-on utiliser sa propre charte graphique sur les documents Odoo ?
Oui, et le plus simplement avec report_layout_config, qui remplace l'en-tête et le pied par une image. Le graphiste livre deux fichiers. C'est aussi la solution la plus durable : une image ne casse pas à la montée de version, contrairement à une surcharge de gabarit.
Peut-on ajouter une page de couverture à un devis PDF ?
Oui : report_qweb_pdf_cover ajoute une page de couverture et une page de dos à n'importe quel rapport, fournies sous forme de fichiers. Elles ne reprennent aucune donnée du document — ce sont des pages fixes.
Comment ajouter des conditions de vente sur les factures sans les retaper ?
base_comment_template définit des modèles de commentaires insérés automatiquement au-dessus ou en dessous des lignes d'un document. C'est l'outil des conditions de vente, des mentions de garantie et des consignes de réception, dont les variantes divergent autrement à la main.
Odoo peut-il imprimer des étiquettes autocollantes ?
report_label le permet sur n'importe quel modèle : format de planche configurable, gabarit libre pour une étiquette, et un assistant. Le format configurable évite d'acheter des planches au format d'Odoo. À restreindre par les droits, car il crée des actions serveur.
Peut-on afficher une adresse au format du pays du client ?
Oui : report_partner_address ajoute un champ détails d'adresse traduisible sur la fiche contact, utilisé à la place du format standard. L'adresse d'un client allemand s'écrit alors dans l'ordre allemand.
Se faire accompagner
Les documents sortants sont la seule partie de votre ERP que vos clients voient. Un devis mal mis en page coûte plus cher qu'un écran mal paramétré, et pourtant c'est le dernier poste traité dans un projet — généralement par une surcharge de gabarit qui casse à la mise à jour suivante.
Nous traitons donc la charte documentaire avec des images et des réglages, pas avec du code, et nous vérifions chaque document sur une impression réelle. Un en-tête en image vaut mieux qu'un gabarit sur mesure. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
En résumé
Un devis, une facture, un bon de livraison sont les seuls documents qu'un client voit de votre ERP. Seize modules les rendent présentables : en-tête remplacé par une image, filigrane, page de couverture, commentaires types, étiquettes autocollantes. Parlons de vos documents.