Making total with forloop.last

Hi,

i’m making a total of some calculations but my forloop.last doesn’t seem to work.

I can’t find the misstake. Here is my code:

**_Ontrekkingen:_**

|Boekjaar                     | Onttrekking |                  | Onttrekking reserve      | Ontrekking uitg. belasting |
|--20%------------------------|-----20%-----|40%---------------|-------------------------:|--:+{% fori onttrekking in custom[meerwaarde.key] %}
|{% input onttrekking.date as:date %}{% stripnewlines %}
|Reserve <br> Uitg. belasting
|{{ gespreidemw | currency }} x {% input onttrekking.afschrijving as:currency default:'0' %} / {% input onttrekking.wederbelegging as:currency placeholder_default:wederbelegging %} 
<br>
{{ gespreide_ub | currency }} x {% input onttrekking.afschrijving as:currency default:'0' %} / {% input onttrekking.wederbelegging as:currency placeholder_default:wederbelegging %}
|{% assign ontrekkingreserve = (gespreidemw*onttrekking.afschrijving/onttrekking.wederbelegging)*-1 %} {{ ontrekkingreserve | currency }}{% $3+ ontrekkingreserve %}
|<br>{% assign ontrekkinguitgesteldebelasting = (gespreide_ub*onttrekking.afschrijving/onttrekking.wederbelegging)*-1 %} {{ ontrekkinguitgesteldebelasting | currency }}{% $4+ ontrekkinguitgesteldebelasting %}
{% endstripnewlines %}{% if forloop.last %}
||**Totaal onttrekkingen**||**{{ $3 |currency }}**|{{ $4 |currency }}{% endif %}{% endfori %}

Hi Wim

There are two changes that have to be made to solve this problem.

  1. Normally, registers ($) are only used for inputs. for example in this way:

{% $1+input onttrekking.wederbelegging as:currency placeholder_default:wederbelegging %}

In your case, the best thing you can do is change your registers to variables and do this:

{% assign totaal_ontrekkingreserve = totaal_ontrekkingreserve+ontrekkingreserve %}
{% assign totaal_ontrekkinguitgesteldebelasting = totaal_ontrekkinguitgesteldebelasting+ontrekkinguitgesteldebelasting %}

They names of the variables you can pick yourself of course. Don’t forget to change the registers in the totals to the variables you have just set.

  1. When you fill in a row, a new one appears, the last row will always show a “-”, which is an undefined variable. When you try to at something undefined to a variable, the variable itself becomes undefined too.

That’s why it’s best to not add the last row to your total. You can do this by using the following code.

{% unless forloop.last %}{% assign totaal_ontrekkingreserve = totaal_ontrekkingreserve+ontrekkingreserve %}{% endunless %}
{% unless forloop.last %}{% assign totaal_ontrekkinguitgesteldebelasting = totaal_ontrekkinguitgesteldebelasting+ontrekkinguitgesteldebelasting %}{% endunless %}

Hopefully this helps

Sam

Thanks! this solved my problem.

Hi,

I ran into a different problem. In input mode the calculations are correct but in export they don’t work. they doens’t seem to take last one in export mode.

there’s something wrong with the unless :upside_down_face:

In the first line of the code i reset the values like:

{% fori meerwaarde in custom.meerwaardes %} {% assign $2 = 0 %}{% assign totaal_ontrekkinguitgesteldebelasting = 0 %}{% assign totaal_ontrekkingreserve = 0 %}

**_Ontrekkingen:_**

|Boekjaar                     | Onttrekking    |                  | Onttrekking<br>reserve| Onttrekking uitg. belasting |
|--10%------------------------|-----25%--------|----40%-----------|----------------------:|------------------------:{% capture onttrekking_key = %}onttrekking_{{ meerwaarde.key }}{% endcapture %}{% fori onttrekking in custom[onttrekking_key] %}
|{% input onttrekking.date as:date %}{% stripnewlines %}
|Reserve <br> Uitg. belasting
|{{ gespreidemw | currency }} x {% input onttrekking.afschrijving as:currency default:'0' %} / {% input onttrekking.wederbelegging as:currency placeholder_default:wederbelegging %} 
<br>
{{ gespreide_ub | currency }} x {{onttrekking.afschrijving |currency}} / {{ onttrekking.wederbelegging |currency }}
|{% assign ontrekkingreserve = (gespreidemw*onttrekking.afschrijving/onttrekking.wederbelegging) %} {{ ontrekkingreserve | currency }}
{% unless forloop.last %}{% assign totaal_ontrekkingreserve = totaal_ontrekkingreserve+ontrekkingreserve %}
{% comment %}Bereken totaal van alle onttrekkingen reserves!{% endcomment %}{% assign totaalrek_ontrekkingreserve = totaalrek_ontrekkingreserve+ontrekkingreserve %}{% endunless %}
|<br>{% assign ontrekkinguitgesteldebelasting = (gespreide_ub*onttrekking.afschrijving/onttrekking.wederbelegging) %} {{ ontrekkinguitgesteldebelasting | currency }}
{% unless forloop.last %}{% assign totaal_ontrekkinguitgesteldebelasting = totaal_ontrekkinguitgesteldebelasting+ontrekkinguitgesteldebelasting %}
{% comment %}Bereken totaal van alle onttrekkingen UB!{% endcomment %}{% assign totaalrek_ontrekkinguitgesteldebelasting = totaalrek_ontrekkinguitgesteldebelasting+ontrekkinguitgesteldebelasting %}{% endunless %}
{% endstripnewlines %}{% if forloop.last %}
|**Totaal onttrekkingen**|||**{{ totaal_ontrekkingreserve |currency }}**|**{{ totaal_ontrekkinguitgesteldebelasting |currency }}**{% endif %}{% endfori %}

I have the same problem as Wim. Last line of the foriloop is not shown on the export.

Just putting the total outside the fori loop should solve the problem. Then you don’t need the forloop.last either…

@SamVanEenoo

I can’t get it to work…

input:

Ouput:

Code:

|---------|----:+
|**Belastingsvrije reserve** {% input custom.account_132.numbers as:account_collection range:132 default:132 accounts_var:accounts %}|{%for account_132 in accounts %}{% $0+ -1*account_132.value %}{% endfor %}**{{ $0 | currency }}**{% for account_132 in accounts %}
|{{account_132.number}} {{ account_132.name }}|{{ -1*account_132.value | currency }}{% endfor %}
|**Uitgestelde belasting** {% input custom.account_168.numbers as:account_collection range:168 default:168 accounts_var:accounts %}|{%for account_168 in accounts %}{% $1+ -1*account_168.value %}{% endfor %}**{{ $1 | currency }}**{% for account_168 in accounts %}
|{{account_168.number}} {{ account_168.name }}|{{ -1*account_168.value | currency }}{% endfor %}
|**Onttrekking uitgestelde belasting** {% input custom.account_780.numbers as:account_collection range:780 default:780 accounts_var:accounts %}|{%for account_780 in accounts %}{% $2+ -1*account_780.value %}{% endfor %}**{{ $2 | currency }}**{% for account_780 in accounts %}
|{{account_780.number}} {{ account_780.name }}|{{ -1*account_780.value | currency }}{% endfor %}
|**Onttrekking belastingsvrije reserver** {% input custom.account_789.numbers as:account_collection range:789 default:789 accounts_var:accounts %}|{%for account_789 in accounts %}{% $3+ -1*account_789.value %}{% endfor %}**{{ $3 | currency }}**{% for account_789 in accounts %}
|{{account_789.number}} {{ account_789.name }}|{{ -1*account_789.value | currency }}{% endfor %}

{% fori meerwaarde in custom.meerwaardes %}

{% comment %} Meerwaarde {% endcomment %}{% assign $5 = 0 %}
{% comment %} Wederbeleggingen {% endcomment %}{% assign $6 = 0 %}
{% comment %} onttrekking_789.huidig {% endcomment %}{% assign $7 = 0 %}
{% comment %} onttrekking_780.huidig {% endcomment %}{% assign $8 = 0 %}

|**{% input meerwaarde.omschrijving %}**
|---+

|--50%-|--25%---:
|Verkoop dd. {% input meerwaarde.datum as:date %} | {% input meerwaarde.verkoop_bedrag as:currency %}
|Aanschaffingswaarde | {% input meerwaarde.aanschaffingswaarde as:currency %}
|Afschrijvingen | {% input meerwaarde.afschrijvingen as:currency %}
|Boekwaarde | {{ meerwaarde.aanschaffingswaarde-meerwaarde.afschrijvingen | currency }}
|
|Boekhoudkundige meerwaarde | {{ meerwaarde.verkoop_bedrag-meerwaarde.aanschaffingswaarde+meerwaarde.afschrijvingen | currency }}
|Verkoopkosten | {% input meerwaarde.verkoopkosten as:currency %}
|Meerwaarde | {%=$5+ meerwaarde.verkoop_bedrag-meerwaarde.aanschaffingswaarde+meerwaarde.afschrijvingen-meerwaarde.verkoopkosten %}
|

**Herbeleggingen**

{% capture wederbelegging_key = %}wederbelegging_{{ meerwaarde.key }}{% endcapture %}

|--85%--|--:+
|Te herbeleggen vóór {% input meerwaarde.herb_rg_datum as:date placeholder:'datum' %} in roerende goederen vóór {% input meerwaarde.herb_og_datum as:date placeholder:'datum' %} in onroerende goederen:| {{ meerwaarde.verkoop_bedrag | currency }}{% fori wederbelegging in custom[wederbelegging_key] %}
|{% input wederbelegging.boekjaar as:date %}   {% input wederbelegging.omschrijving %} | {% $6+input wederbelegging.bedrag as:currency %}{% endfori %}
|Nog te herbeleggen | {{ meerwaarde.verkoop_bedrag-$6 | currency }}
|

**Ontrekkingen**

{% capture onttrekking_789_key = %}onttrekking_789{{ meerwaarde.key }}{% endcapture %}
{% capture onttrekking_780_key = %}onttrekking_780{{ meerwaarde.key }}{% endcapture %}
{% if meerwaarde.meerwaarde_a_nieuw == blank %}{% assign meerwaarde_a = $5 %}{% else %}{% assign meerwaarde_a = $5-meerwaarde.meerwaarde_a_nieuw %}{% endif %}
{% if meerwaarde.meerwaarde_b_nieuw == blank %}{% assign meerwaarde_b = $5 %}{% else %}{% assign meerwaarde_b = $5-meerwaarde.meerwaarde_b_nieuw %}{% endif %}

|--25%--|--60%--|--:+
|Belastingsvrije reserve: | {{ meerwaarde_a | currency }} x {% input meerwaarde.perc_belastingsvrij_res placeholder:0 as:percentage %}|{% assign belastingsvrije_reserve = meerwaarde_a*meerwaarde.perc_belastingsvrij_res | round %}{{ belastingsvrije_reserve | currency }}
|{% ifi meerwaarde.meerwaarde_a_nieuw != blank %}Belastingsvrije reserve: | {% input meerwaarde.meerwaarde_a_nieuw as:currency placeholder:'bedrag' %} x {% input meerwaarde.perc_belastingsvrij_res_nieuw placeholder:0 as:percentage %}|{% assign belastingsvrije_reserve_nieuw = meerwaarde.meerwaarde_a_nieuw*meerwaarde.perc_belastingsvrij_res_nieuw | round %}{{ belastingsvrije_reserve_nieuw | currency }}{% endifi %}{% fori onttrekking_789 in custom[onttrekking_789_key] %}{% capture b %}{% if period.year_end_date-onttrekking_789.boekjaar == 0 %}*{% endif %}{% endcapture %}
{% stripnewlines %}
|{{b}}{% input onttrekking_789.boekjaar as:date %}{{b}} 
|{{b}}({% input onttrekking_789.bedrag as:currency %} x {% input onttrekking_789.meerwaarde as:currency %} / {% input onttrekking_789.reeds_herbelegd as:currency %}) x {% input onttrekking_789.percentage as:percentage %}{{b}}
|{% capture onttrekking_789_huidig %}{{ (onttrekking_789.bedrag*onttrekking_789.meerwaarde/onttrekking_789.reeds_herbelegd)*onttrekking_789.percentage | round }}{% endcapture %}
{% unless forloop.last %}{{b}}{% $7+input onttrekking_789.huidig as:currency default:onttrekking_789_huidig %}{{b}}{% endunless %}
{% if period.year_end_date-onttrekking_789.boekjaar == 0 %}{% $10+$7 %}{% endif %}{% endstripnewlines %}{% endfori %}
|||{% assign saldo_belastingsvrije_reserve = belastingsvrije_reserve+belastingsvrije_reserve_nieuw-$7 %}**{%=$12+ saldo_belastingsvrije_reserve as:currency %}**
|
|Uitgestelde belasting: | {{ meerwaarde_b | currency }} x {% input meerwaarde.perc_uitgestelde_bel placeholder:0 as:percentage %}|{% assign uitgestelde_bel = meerwaarde_b*meerwaarde.perc_uitgestelde_bel | round %}{{ uitgestelde_bel | currency }}
|{% ifi meerwaarde.meerwaarde_b_nieuw != blank %}Uitgestelde belasting: | {% input meerwaarde.meerwaarde_b_nieuw as:currency placeholder:'bedrag' %} x {% input meerwaarde.perc_uitgestelde_bel_nieuw placeholder:0 as:percentage %}|{% assign uitgestelde_bel_nieuw = meerwaarde.meerwaarde_b_nieuw*meerwaarde.perc_uitgestelde_bel_nieuw | round %}{{ uitgestelde_bel_nieuw | currency }}{% endifi%}{% fori onttrekking_780 in custom[onttrekking_780_key] %}{% capture b %}{% if period.year_end_date-onttrekking_780.boekjaar == 0 %}*{% endif %}{% endcapture %}
{% stripnewlines %}
|{{b}}{% input onttrekking_780.boekjaar as:date %}{{b}} 
|{{b}}({% input onttrekking_780.bedrag as:currency %} x {% input onttrekking_780.meerwaarde as:currency %} / {% input onttrekking_780.reeds_herbelegd as:currency %}) x {% input onttrekking_780.percentage as:percentage %}{{b}}
|{% capture onttrekking_780_huidig %}{{ (onttrekking_780.bedrag*onttrekking_780.meerwaarde/onttrekking_780.reeds_herbelegd)*onttrekking_780.percentage | round }}{% endcapture %}
{% unless forloop.last %}{{b}}{% $8+input onttrekking_780.huidig as:currency default:onttrekking_780_huidig %}{{b}}{% endunless %}
{% if period.year_end_date-onttrekking_780.boekjaar == 0 %}{% $11+$8 %}{% endif %}{% endstripnewlines %}{% endfori %}
|||{% assign saldo_uitgestelde_bel = uitgestelde_bel+uitgestelde_bel_nieuw-$8 %}**{%=$14+ saldo_uitgestelde_bel as:currency %}**
|
{% endfori %} 

|--60%--|--10%--:
|Totale belastingsvrije reserves |{% unexplained $12-$0 as:indicator %} {{ $12 | currency}}
|Totale uitgestelde belastingen |{% unexplained $14-$1 as:indicator %} {{ $14 | currency}}
|Totale onttrekking aan de belastingsvrije reserves dit jaar |{% unexplained $10-$3 as:indicator %} {{ $10 | currency}}
|Totale onttrekking aan de uitgestelde belastingen dit jaar |{% unexplained $11-$2 as:indicator %} {{ $11 | currency}}

I thought about it and realized this might not be the ideal way to handle this problem.
I still suggest to set the totals out of the forloop but instead of using a forloop.last,
you have to check if the denominator of your division is blank or zero. If it is, don’t show the calculation.
In @Wim 's case it will look like this.

{% if onttrekking.wederbelegging != blank and onttrekking.wederbelegging != 0 %}
{% assign ontrekkinguitgesteldebelasting = (gespreide_ubonttrekking.afschrijving/onttrekking.wederbelegging)-1 %} {{ ontrekkinguitgesteldebelasting | currency }}{% $4+ ontrekkinguitgesteldebelasting %}
{% endif %}

@thijs, you could do the same in your case. :slight_smile:

@sven worked like a charm!

Thx, this worked perfectly.