OpenERP 7 – gestion dynamique du contenu d’un rapport SXW/RML (4/6)

La gestion dynamique du contenu d'un rapport repose sur les éléments suivants :


 - les expressions booléennes python
      ex: [[
(o.partner_invoice_id and o.partner_invoice_id.title and
o.partner_invoice_id.title.name) or '' ]]

- les objets et variables :

  • objects : les objets contiennent la liste des documents à imprimer ;
  • data : les données proviennent de l'assistant qui lance le rapport ;
  • user : contient l'utilisateur courant (browse_record, comme renvoyé par browse()) ;
  • time : le temps donne accès au module de temps Python ;

  - les fonctions prédéfinies :

  • repeatIn(list, 'var', 'tag') répète l'élément parent actuel nommé tag pour chaque objet dans la list, ce qui rend l'objet disponible comme var lors de chaque boucle ;
  • setTag('tag1', 'tag2') remplace le parent RML tag1 avec tag2 ;
  • removeParentNode('tag') supprime le parent RML de l'élément tag ;
  • formatLang(value, digits=2, date=False, date_time=False, grouping=True, monetary=False) peut être utilisé pour formater une date, l'heure ou le montant selon la localisation ;
  • setLang('lang_code') définit le langage courant et la localisation pour les traductions.
  • display_address()
  • etc ...

Un rapport concerne un objet (ex: sale.order).

La clause [[repeatIn(objects,'o')]] permet d'affecter cet objet à [[o]].

L'accès à tout attribut se fait simplement par [[o.attribut]] , par exemple : [[o.name]]

L'accès à une relation many2one (ex: relation "partner_id" entre sale.order et res.partner) se fait par : [[o.partner_id.name]]

L'accès à une relation one2many (ex: relation "order_line" caractérisant les lignes de commande d'une commande) se fera ainsi :
   - [[repeatIn(o.order_line,'line')]] permet de boucler sur les lignes de commande
   - [[line.name]] permet de récupérer la désignation de la ligne de commande

Pour en savoir plus, je vous invite à prendre connaissance du rapport "sale.order".

3 réflexions sur « OpenERP 7 – gestion dynamique du contenu d’un rapport SXW/RML (4/6) »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *