Aller au contenu

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.

Les opérateurs mathématiques classiques fonctionnent dans n’importe quel bloc de variable {{ }} :

OpérateurExempleRé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.

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.

FonctionSyntaxeRô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)}}

Ces fonctions portent sur une liste entière et renvoient une seule valeur. Elles ne déclenchent pas la répétition des lignes.

FonctionSyntaxeRô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 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 |.

FiltreExempleRé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.

FiltreExempleRésultat
upper{{name | upper}}JOHN DOE
lower{{name | lower}}john doe
capitalize{{name | capitalize}}John doe
title{{name | title}}John Doe
FiltreExempleRô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

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

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)}}
{{count(items)}} articles dans cette commande
{% if count(items) > 10 %}
Commande en volume : merci !
{% endif %}
  • 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.18000000000001 devient 48.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.
  • 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