Intégrer du HTML dans les devis

et agrémenter les documents de vente à volonté
18 juin 2024 par
Nexelans, Emmanuel Chaumery
| Aucun commentaire pour l'instant

Introduction

Dans les devis Odoo, il n'y a pas le choix, en standard. La description qui s'affiche est celle du produit et il n'y a pas de fonctionnalité de base pour agrémenter celle-ci avec une mise en forme classique.

Nous allons donc voir comment contourner le besoin avec Studio

Mise en œuvre

De préférence, le tuto qui suit doit d'abord être réalisé dans une base de test!

Pour commencer, il va falloir créer le champ HTML qui sera utilisé dans notre devis. Pour cela, aller dans l'application Ventes, ouvrir un devis en ayant au préalable activé le mode développeur (c'est toujours mieux pour voir les noms de fichiers notamment).

Passer dans Studio et ouvrir le formulaire de saisie de devis. Cliquer sur les lignes puis sur "Modifier la vue Liste" :

Vue liste

Cliquez sur l'onglet ajouter à gauche puis glissez déposez un champ HTML dans une des colonnes de la liste.

Nommez le champ avec un nom qui vous parle et ce sera tout pour cette partie. Nous avons désormais un champ HTML à remplir dans notre ligne de devis.

Vous constaterez rapidement que la zone n'est pas très facile à utiliser. En effet, l'appui sur Entrée fait passer à une nouvelle ligne de devis et l'objet de ce tuto n'est pas de modifier une action qui peut être utile par ailleurs.

2 possibilités : soit vous écrivez votre texte HTML ailleurs, par exemple dans la zone de bas de page ou sont les conditions générales. C'est aussi une zone HTML, donc on peut taper son texte puis le copier coller dans notre description.

Il y a une autre possibilité que nous verrons plus loin.

saisie HTML

Afficher le champ HTML dans un devis PDF

Maintenant que nous avons un champ HTML et que notre texte est cool, il faut que le pdf qui va être envoyé au client soit, lui aussi, cool :)

Retournons dans Studio, cette fois ci, ce sera dans l'onglet Rapports. Il est conseillé de dupliquer l'un des rapports existants et de lui donner un nom explicite. Pensez aussi à cocher la case "Afficher dans le menu d'impression" :

Rapport pdf

Maintenant, il va falloir aller directement dans le XML. Cliquez donc sur le bouton "Modifier les sources". il va nous falloir indiquer à Qweb que rien ne change si le champ HTML est vide, on affiche la description produit, comme d'habitude. En revanche, si le champ HTML est utilisé, c'est celui-ci que l'on va afficher avec la mise en forme correspondante.

Repérez donc la ligne qui doit normalement afficher la description du produit.

 <t t-if="not line.display_type">
                                <td name="td_name"><span t-field="line.name">Bacon Burger</span></td>

Je vous conseille toujours de prendre des précautions en évitant de supprimer des lignes. La solution étant de les commenter. En HTML, le commentaire commence avec <!-- et termine avec -->.

Nous allons donc modifier notre code. Ici, nous avons nommé notre champ x_studio_notes_html

 <t t-if="not line.display_type">
                                <!--<td name="td_name"><span t-field="line.name">Bacon Burger</span></td>-->
                                <t t-if="not line.x_studio_notes_html">
                                    <td name="td_name"><span t-field="line.name">Bacon Burger</span></td>
                                </t>
                                <t t-if="line.x_studio_notes_html">
                                    <td name="td_name"><span t-field="line.x_studio_notes_html">Bacon Burger</span></td>
                                </t>

Qu'avons nous fait :

  • Commenté la ligne qui écrit la description habituelle
  • Ajouté une balise <t> conditionnée par l'existence ou non d'un champ line.x_studio_notes_html
    • Si la condition est fausse, on reprend notre description habituelle
    • Si la condition est vraie, on écrit notre champ HTML

Et voilà !

devis html

Si vous avez réussi, bravo. Ce n'était pas très compliqué mais ça peut être dangereux si on ne prend pas de précautions. Dans le doute, comme d'habitude, contactez nous :)

Workaround

En français : solution de contournement :)

On a vu qu'il pouvait être embêtant de saisir du Html directement dans la zone dédiée de la ligne de commandes.

On peut envisager un autre process, notamment si cette description Html est relativement statique dans votre fiche produit.

Au lieu de créer un champ Html dans la liste des lignes de commandes, créez le directement dans le formulaire produit. 

Html dans produit

Ensuite, avec Studio, dans la liste des lignes de commande, insérez un champ associé et allez chercher votre description Html.

Il suffira de retourner dans le code XML de votre rapport PDF pour y mettre le nom de ce dernier champ à la place de celui créé précédemment.

Et pour l'aperçu ?

Et oui, quand on clique sur aperçu, on ne voit pas de changement. C'est normal, ce n'est pas la même vue qu'un rapport pdf.

Pour modifier l'aperçu, il faut modifier la vue dédiée qui s'appelle "Sales Order Portal Content". Pour ce faire, toujours en mode développeur, accédez aux vues, recherchez celle-ci et modifiez le XML exactement comme pour le rapport PDF.

Evidemment, il est préférable de créer une vue héritée qui va remplacer notre ligne d'affichage de description par nos nouvelles lignes.

Conclusion

Il faut un peu mettre les mains dans le cambouis pour cette opération mais ça reste du Studio, pas vraiment du Dev. Donc on peut le faire dans la version online !

apercu

Allez, essayez de votre côté et commentez cet article pour parler de votre expérience ou de vos améliorations de votre Odoo !

Se connecter pour laisser un commentaire.