Expressions et fonctions dans les templates
Les expressions calculent des valeurs directement dans vos templates. Plutôt que de calculer les totaux ou de formater les données avant l’appel à l’API, vous le faites dans le template, avec des fonctions et des opérateurs simples.
Opérateurs arithmétiques
Section intitulée « Opérateurs arithmétiques »Les opérateurs mathématiques classiques fonctionnent dans n’importe quel bloc de variable {{ }} :
| Opérateur | Exemple | Résultat |
|---|---|---|
+ | {{price + tax}} | Addition |
- | {{total - discount}} | Soustraction |
* | {{items.qty * items.price}} | Multiplication |
/ | {{amount / 2}} | Division |
Par exemple, pour afficher le total d’une ligne dans le tableau d’une facture :
{{items.qty * items.unit_price}}La quantité est multipliée par le prix unitaire, automatiquement, pour chaque ligne.
Fonctions intégrées
Section intitulée « Fonctions intégrées »Fonctions par ligne
Section intitulée « Fonctions par ligne »Ces fonctions portent sur des valeurs individuelles. Appliquées à des champs de liste (comme items.qty), elles se répètent automatiquement pour chaque ligne.
| Fonction | Syntaxe | Rôle |
|---|---|---|
mul | {{mul(a, b)}} | Multiplie deux valeurs |
add | {{add(a, b, c)}} | Additionne plusieurs valeurs |
sub | {{sub(a, b)}} | Soustrait b de a |
div | {{div(a, b)}} | Divise a par b |
Exemple : le total d’une ligne, remise déduite :
{{sub(mul(items.qty, items.unit_price), items.discount)}}Fonctions d’agrégation
Section intitulée « Fonctions d’agrégation »Ces fonctions portent sur une liste entière et renvoient une seule valeur. Elles ne déclenchent pas la répétition des lignes.
| Fonction | Syntaxe | Rôle |
|---|---|---|
sum | {{sum(items.amount)}} | Somme de toutes les valeurs d’un champ |
sumproduct | {{sumproduct(items, 'qty', 'price')}} | Multiplie deux champs ligne par ligne, puis additionne les résultats |
count | {{count(items)}} | Nombre d’éléments d’une liste |
avg | {{avg(items.price)}} | Moyenne d’un champ |
min | {{min(items.price)}} | Plus petite valeur |
max | {{max(items.price)}} | Plus grande valeur |
Exemple : le total de la facture :
{{sum(items.amount)}}Sumproduct
Section intitulée « Sumproduct »sumproduct multiplie deux champs ligne par ligne, puis additionne les résultats, exactement comme SOMMEPROD dans un tableur. La fonction prend la liste, puis le nom des deux champs entre guillemets :
{{sumproduct(items, 'qty', 'price')}}L’écriture {{sum(mul(items.qty, items.price))}} donne le même résultat.
Pour chaque élément, la fonction calcule qty × price, puis additionne tous les totaux de ligne. C’est la façon habituelle d’obtenir le sous-total d’une facture quand vos données ne contiennent que la quantité et le prix unitaire.
Les filtres transforment une valeur une fois qu’elle est calculée. Appliquez un filtre avec le symbole |.
Formater des nombres
Section intitulée « Formater des nombres »| Filtre | Exemple | Résultat |
|---|---|---|
round(n) | {{total | round(2)}} | 19.57 |
int | {{value | int}} | 42 |
float | {{value | float}} | 3.14 |
abs | {{value | abs}} | 5 (à partir de -5) |
Un filtre s’applique à la valeur placée juste avant lui. Pour arrondir le résultat d’un calcul, mettez le calcul entre parenthèses :
{{(items.qty * items.unit_price) | round(2)}}Sans parenthèses, {{items.qty * items.unit_price | round(2)}} arrondit seulement items.unit_price, avant la multiplication.
Formater du texte
Section intitulée « Formater du texte »| Filtre | Exemple | Résultat |
|---|---|---|
upper | {{name | upper}} | JOHN DOE |
lower | {{name | lower}} | john doe |
capitalize | {{name | capitalize}} | John doe |
title | {{name | title}} | John Doe |
Travailler avec des listes
Section intitulée « Travailler avec des listes »| Filtre | Exemple | Rôle |
|---|---|---|
length | {{items | length}} | Nombre d’éléments |
first | {{items | first}} | Premier élément |
last | {{items | last}} | Dernier élément |
join(", ") | {{tags | join(", ")}} | Réunit les éléments en une chaîne |
sort | {{tags | sort}} | Trie une liste de textes ou de nombres |
reverse | {{items | reverse}} | Inverse l’ordre |
Conditions
Section intitulée « Conditions »Affichez ou masquez du contenu selon une condition :
{% if payment_status == "paid" %} Payé ✓{% else %} Paiement en attente{% endif %}Pour enchaîner plusieurs conditions, utilisez elif :
{% if total > 1000 %} Commande premium{% elif total > 500 %} Commande standard{% else %} Petite commande{% endif %}Opérateurs de comparaison disponibles : ==, !=, <, >, <=, >=
Opérateurs logiques : and, or, not
Exemples pratiques
Section intitulée « Exemples pratiques »Sous-total, TVA et total d’une facture
Section intitulée « Sous-total, TVA et total d’une facture »Sous-total : {{sumproduct(items, 'qty', 'unit_price') | round(2)}}TVA (10 %) : {{(sumproduct(items, 'qty', 'unit_price') * 0.1) | round(2)}}Total : {{(sumproduct(items, 'qty', 'unit_price') * 1.1) | round(2)}}Nombre d’articles
Section intitulée « Nombre d’articles »{{count(items)}} articles dans cette commandeMessage conditionnel
Section intitulée « Message conditionnel »{% if count(items) > 10 %} Commande en volume : merci !{% endif %}Bon à savoir
Section intitulée « Bon à savoir »- Une variable manquante s’affiche vide ; dans un calcul, elle compte pour zéro.
- Avec
div(a, b), une division par zéro renvoie une valeur vide. - Les erreurs d’arrondi en virgule flottante sont corrigées automatiquement (par exemple,
48.18000000000001devient48.18). - Les fonctions d’agrégation (
sum,avg,min,max,count) ne déclenchent jamais la répétition des lignes. Les fonctions par ligne (mul,add,sub,div) la déclenchent quand elles portent sur des champs de liste.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Liaison de données — définir des variables et envoyer des données à vos templates
- Tableaux — des tableaux dynamiques qui s’allongent avec vos données
- Variables système — les variables intégrées pour les dates et les numéros de page