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".
comment mettre une entête personnalisee dans le rapport sale oder
Je suis désolé mais d'une part, je ne travaille plus que sur la v8 et d'autre part, je n'utilise que les rapports Qweb (arrivés avec la v8)
comment afficher amount en format ‘ separateur de milliers avec espace ‘ exp: 15 355,46