Se rendre au contenu

Modifier des vues dans Odoo - bonnes pratiques

L'héritage est une pratique nécessaire pour éviter les erreurs. La documentation aussi ! Xpath est ton ami :)
14 janvier 2025 par
Nexelans, Emmanuel Chaumery
| Aucun commentaire pour l'instant

Introduction

C'est très facile de modifier une vue dans Odoo Online dès lors qu'on a le module "Studio" installé.

C'est très facile mais c'est un peu dangereux.

En effet, chaque modification faite directement dans le code de la vue originale peut potentiellement être supprimé ou ignoré lors d'une mise à jour. Or Odoo fait des mises à jour régulières dans Odoo online. Il y a la migration annuelle, on peut compter 3 à 4 migrations intermédiaires pendant l'année mais il y a aussi des mises à jour de corrections de bug.

Et chacune de ces mises à jour peut réinitialiser les vues standard. Donc si vous avez modifié ces vues, la mise à jour peut écraser vos modifications.

Bonnes pratiques

La première chose à faire est de créer une vue héritée plutôt que de modifier une vue standard. C'est ce qui est préconisé par Odoo

Ensuite, il est important de documenter ces modifications car la personne qui a modifié le code ne sera peut être pas disponible s'il y a un problème. Et retrouver une modification faite parmi des centaines de vues peut être une épreuve. Pour documenter, le module connaissances est parfait. Nous vous conseillons de commencer par l'installer et créer un répertoire dédié aux documentations du code. Cela servira pour documenter les modifications des vues mais aussi les portions de code créées pour des champs personnalisés, des champs calculés ou des automatisations.

L'héritage

L'héritage consiste à créer une vue personnalisée et à indiquer à Odoo ou cette vue personnalisée va s'insérer dans le code standard ou bien quelle portion de code elle va remplacer.

Il est important pour cela de maîtriser la balise XPATH. En effet, cette balise va permettre de positionner notre code modifié au bon endroit dans le code standard.

Etape 1 : créer une vue héritée. 

  • Pour cela, aller dans la vue que l'on veut modifier via le menu Paramètres - Technique - Interface utilisateur - Vues
  • Aller dans l'onglet Vues héritées et cliquer sur ajouter une ligne
  • L'architecture de la vue héritée se compose ainsi : 
    • <data name="Order Options" inherit_id="sale.sale_order_portal_content">
          <xpath expr="//section[@id='details']//div[@id='prix change']" position="replace">
      ## Votre code ##
          </xpath>   
      </data>
    • la balise data se compose du nom de votre vue héritée (Order Options) et du nom de la vue dont elle hérite (sale.sale_order_portal_content)
    • la balise xpath indique ou et comment se positionne votre code. Ici, "expr" indique que le "ou" se trouve au niveau de la section de code qui a l'ID "details" et dans laquelle la balise div a l'ID "prix change". Elle indique que la position est "replace" donc que notre code va remplacer cette balise div.

Etape 2 : une fois votre vue héritée faite, il sera alors temps de créer un article dans la base de connaissances par exemple :

modif vue

Evidemment, ces modifications demandent de faire des tests, de valider que vos modifications fonctionnent etc...

Pour plus d'informations sur la syntaxe de Xpath, suivez le lien doc Xpath

Il peut arriver qu'il soit compliqué de trouver une balise dans le code standard qui soit unique ou facile d'accès ou que l'on pense que la moindre mise à jour va modifier cette balise. Il pourra alors être judicieux de créer votre propre balise dans le code standard. Ainsi le Xpath pointera directement dessus et le fait de créer une documentation dans le module connaissances permettra d'aller facilement recréer cette balise si elle est écrasée par une migration :

<div id="prix change">


Conclusion 

Modifier des vues dans Odoo est assez simple dès lors qu'on a le module Studio et de bonnes compétences en HTML / CSS / Qweb mais l'utilisation de l'héritage et du module connaissances peut éviter bien des problèmes lors des mises à jour

Se connecter pour laisser un commentaire.