Dans Odoo, la personnalisation des éditions de ses devis, factures, etc se fait souvent des manières suivantes:
- Passer par un module personnalisé, la plus robuste, mais il faut être sur un hébergement on premise comme Odoo.sh et savoir codé,
- Passer par Odoo studio, mais ça nécessite de s'y connaître un peu et d'avoir souscrit à un plan personnalisé
Il existe cependant une troisième voix, celle de passer par une vue personnalisée et qui fonctionne également si on a un plan standard.
1. Créer une vue héritée (QWeb) dans Odoo Enterprise
Dans Odoo Enterprise, il est possible de modifier un rapport PDF (devis, facture, bon de livraison, etc.) en héritant d’un template QWeb existant, sans toucher au code source, grâce à l’éditeur de vues.
L’objectif est d’éviter de modifier la vue d’origine (standard Odoo), et d’appliquer uniquement une extension(inheritance) via XPath.
1.1 Activer le mode développeur
Avant tout, active le mode développeur :
1. Allez dans Paramètres 

2. Descendez en bas
3. Clique sur Activer le mode développeur 

1.2 Ouvrir la vue QWeb d’un rapport
Pour modifier un rapport PDF comme un devis ou une facture, il faut accéder au template QWeb correspondant.
1.2.1 Exemple : Devis / Commande client
Le template standard est souvent :
- sale.report_saleorder_document
Pour y accéder :
1. Cliquez sur 

2. Dans la fenêtre qui apparaît, allez dans Techniques -> Interface utilisateur -> Vue
3. 

1.2.2 Créer une nouvelle vue héritée
Dans la fenêtre qui apparaît:Une fois dans l’éditeur de vue QWeb :
1. En haut, cliquez sur le bouton Nouveau
2. Le formulaire suivant apparaît
3. 

4. Choisissez :
1. Nom de vue: report_saleorder_document_with_blocks
- Type de vue: QWeb
- Mode héritage de vue: Vue étendue
5. Dans le champ Vue hériée, sélectionne la vue d’origine sale.report_saleorder_document
6. 

Ensuite vous allez écrire écrire un contenu du style :
<xpath expr="..." position="...">
<!-- ton code -->
</xpath>
1.2. Comprendre le rôle du XPath
Le XPath permet de dire à Odoo :
- où intervenir dans la vue d’origine
- et comment modifier le contenu
Les positions les plus courantes sont :
- position="inside" → injecter à l’intérieur d’un bloc
- position="after" → insérer après un bloc
- position="before" → insérer avant un bloc
- position="replace" → remplacer complètement un bloc
1.2.3 Exemple typique
Ajouter un bloc après le tableau des totaux :
<xpath expr="//div[@id='total']" position="after"> <div>Mon encart ici</div> <xpath>
2. Sauvegarder et tester
1. Cliquez sur Enregistrer
2. Retournez sur ton devis
3. Réimprimez le PDF
Si ça ne change rien :
- Vérifiez que la vue est bien active
- Videz le cache navigateur (rarement nécessaire)
- Et surtout : assurez-vous que vous modifiez la bonne vue, celle réellement appelée par le rapport.
3. L'astuce ChatGPT
Si vous ne vous y connaissez pas ni en html, ni en css en encore moins en modèle Qweb Odoo, vous pouvez faire appel à ChatGPT.
Par exemple, imaginons que vous souhaitiez avoir un devis Odoo qui affiche dans un encart de gauche vos conditions de paiement et dans un encart de droite une zone de signature et de datation du bon pour accord.
Ci-dessous, un exemple de ce que pourrait être ce devis.

Vous pouvez utiliser le prompt suivant:
Tu es un expert Odoo (QWeb / rapports PDF) avec plus de 10 ans d’expérience. Je suis sur Odoo Enterprise (v17/v18/v19) et je personnalise le devis / bon de commande (template QWeb : sale.report_saleorder_document). ### Objectif Je veux modifier l’affichage du devis PDF en ajoutant deux encarts sous le tableau des lignes, positionnés de manière claire et professionnelle : #### 1) Encart “Modalités et conditions de règlement” - Placé sous les lignes du devis - Aligné à gauche - Encadré (border) - Contient : - Modes de règlement (ex: virement bancaire) - Domiciliation bancaire - IBAN - BIC - Échéance / date limite de paiement si disponible - Mention légale (pénalités de retard + indemnité forfaitaire) #### 2) Encart “Bon pour accord” - Placé à droite, au même niveau que l’encart de paiement - Encadré (border) - Contient : - “Bon pour accord” - Zone de signature / tampon - Date - Nom du signataire ### Contraintes techniques importantes - Les deux encarts doivent être côte à côte sur une même ligne (2 colonnes). - Ils doivent rester solidaires et ne pas se séparer à l’impression (PDF) : - éviter les sauts de page au milieu (page-break-inside: avoid;) - L’affichage doit rester stable en PDF même si le texte dans l’encart de gauche devient plus long. - Je veux une solution compatible avec une **vue héritée QWeb Odoo Studio** (donc idéalement un seul bloc XPath simple et robuste). ### Résultat attendu Propose-moi un extrait QWeb complet (héritage + XPath + HTML/QWeb) qui : - Ajoute ces deux encarts dans sale.report_saleorder_document - Utilise des classes bootstrap Odoo (row/col) ou une structure HTML compatible PDF - Produit un rendu propre et lisible en PDF
Il ne vous reste plus qu'à copier coller le xpath généré par ChatGPT dans votre nouvelle vue.

3.1 Remarques
Il se peut que le Qweb proposé par ChatGPT comporte des éléments avant l'élément xpath. Vous devez supprimer ces éléments. Il s'agit souvent d'un tag <template></template> ou <t>\</t>.
4. Conclusion
La personnalisation des éditions dans Odoo peut paraître au premier abord compliquée mais en étant un peu guidé et en mettant à profit les capacités des IA Générative, tout devient plus simple.