Forum CMS Made Simple FR

Version complète : [Résolu] LISE - Math in template
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour,

Au sein d'un gabarit de sommaire, je souhaite effectuer la somme de tous les montants repris dans un champs d'une instance LISE. Pour ce faire, j'appelle une variable et y ajoute le montant à chaque itération.
Pensant que cela venait du format texte du champs, j'ai tenté en vain de la convertir en variable numérique via '(float)x+(float)y', ...  Angry

Valeurs du champs montant : 100, 100 et 55
Code utilisé :

Code :
{if $items|@count > 0}
{assign var='sum' value=0.00}
{assign var='desc' value=''}

{foreach from=$items item=item}
{assign var='add' value=$item->fielddefs.montant}
{math equation='x+y' x=$sum y=$add assign='sum'}
{if $item@first}{assign var='desc' value=$add}{else}{assign var='desc' value=$desc|cat:'+'|cat:$add}{/if}
{/foreach}

{$sum} ({$desc})
{/if}

Résultat attendu : 255 (100+100+55)
Résultat obtenu : 0 (100+100+55)

Merci pour votre aide !
Bonjour,

pour la valeur d'un champ, il faut passer par $item->fielddefs.montant->value car $item->fielddefs.montant est un objet et non une valeur directement. Même s'il y a des cas où on peut l'afficher directement, cela reste une rustine.

Tente ainsi ?
A noter aussi que :
Code :
{assign var='add' value=$item->fielddefs.montant->value}

Peut être remplacé par la notation :
Code :
{$add=$item->fielddefs.montant->value}

Tiens-nous au courant Wink
Cela fonctionne en effet mieux ainsi :

Code :
{if $items|@count > 0}
{assign var='sum' value=0.00}
{assign var='desc' value=''}

{foreach from=$items item=item}
{assign var='add' value=$item->fielddefs.montant->value}
{math equation='x+y' x=$sum y=$add assign='sum'}
{if $item@first}{assign var='desc' value=$add}{else}{assign var='desc' value=$desc|cat:'+'|cat:$add}{/if}
{/foreach}
{$sum} ({$desc})
{/if}

Un tout grand merci.