Rekenen en Vergelijkingen: verschil tussen versies

Uit ZaaksysteemWiki
Ga naar: navigatie, zoeken
(Voorbeelden)
(Voorbeelden)
Regel 161: Regel 161:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
!style="width: 400px;"|Situatie
+
!width="400px;"|Situatie
 
!Implementatie
 
!Implementatie
|- style="vertical-alignment:top;"
+
!Voorbeeld
|Een totaalprijs bestaat uit meerdere onderdelen. De prijzen voor deze onderdelen worden in de zaak vastgelegd, maar niet de totaalprijs. Op het sjabloon moet echter wel de totaalprijs genoemd worden.
+
|- style="vertical-align:top;"
|[[bestand:rekenen_voorbeeld_magicstring.png]]
+
|Een zaaktype parkeervergunning, waarin vastgelegd wordt wat de prijs van het type vergunning is en het aantal bezoekersvergunningen dat additioneel aangeschaft wordt. In het sjabloon moet de prijs per onderdeel (parkeervergunning en bezoekersvergunning) uitgesplitst weergegeven worden, plus de totaalprijs.
 +
|Voor deze implementatie kan het rekenen in magicstrings gebruikt worden, door de prijzentabel alsvolgt op te stellen:
 +
{| class="wikitable"
 
|-
 
|-
|Een totaalprijs bestaat uit meerdere onderdelen. De prijzen voor deze onderdelen worden in de zaak vastgelegd, alsmede de totaalprijs. Het is echter onwenselijk dat een medewerker deze totaalprijs handmatig berekent, daarom wordt dit met een regelformule gedaan.
+
!Onderdeel
|[[bestand:rekenen_voorbeeld_regels_1a.png]]<br>
+
!Prijs
[[bestand:rekenen_voorbeeld_regels_1b.png]]<br>
 
[[bestand:rekenen_voorbeeld_regels_1c.png]]
 
 
|-
 
|-
|Wanneer de totaalprijs van de verschillende onderdelen boven een bepaalde waarde uitkomt moet een extra paragraaf getoond worden.
+
|Parkeervergunning
|[[bestand:rekenen_voorbeeld_zttscript_1.png]]
+
|<nowiki>[[ prijs_parkeervergunning ]]</nowiki>
 
|-
 
|-
|Wanneer ...situatie... moet een paragraaf verborgen worden.
+
|Bezoekersvergunning
|[[bestand:rekenen_voorbeeld_zttscript_2.png]]
+
|<nowiki>[[ aantal_bezoekersvergunningen * 8 ]]</nowiki>
 
|-
 
|-
|
+
|Totaalprijs
|
+
|<nowiki>[[ prijs_parkeervergunning + aantal_bezoekersvergunningen * 8 ]]</nowiki>
 +
|}
 +
|[[bestand:rekenen_voorbeeld_magicstring.png|thumb|Voorbeeld rekenen in magicstring]]
 +
|- style="vertical-align:top;"
 +
|Bovenstaande is niet geheel realistisch, want het is uiteraard veel wenselijker om de prijzen van de onderdelen in de zaak zelf vast te leggen, alsmede de totaalprijs.
 +
|Voor deze implementatie zijn kenmerken nodig om de prijs in op te slaan, en regels van het type 'Vul waarde in met formule' die de waarde er in plaatsen.
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
!Kenmerk
+
!Kenmerken
!Waarde
+
!Regels
!Regel
+
|-
|- style="vertical-alignment:top;"
+
|Parkeergebied
 +
|Als 'Parkeergebied' is 'Centrum', dan Vul waarde in "24,00" (geen formule nodig)<br>
 +
Als 'Parkeergebied' is 'Schil', dan Vul waarde in "12,00" (geen formule nodig)<br>
 +
Als 'Parkeergebied' is <gevuld>, dan Vul waarde in met formule (kenmerk:Totaalprijs, waarde: "attribute.prijs_parkeervergunning + attribute.prijs_bezoekersvergunningen")
 +
|-
 
|Prijs parkeervergunning
 
|Prijs parkeervergunning
|24,00
+
|
|Vul waarde in: 24,00
+
|-
|- style="vertical-alignment:top;"
+
|Bezoekersvergunningen
 +
|Als 'Bezoekersvergunningen' = 'Ja', dan Vul waarde in met formule (kenmerk:Prijs bezoekersvergunningen, waarde: "attribute.aantal_bezoekersvergunningen * 8"
 +
|-
 
|Aantal bezoekersvergunningen
 
|Aantal bezoekersvergunningen
|5
 
 
|
 
|
|- style="vertical-alignment:top;"
+
|-
 
|Prijs bezoekersvergunningen
 
|Prijs bezoekersvergunningen
|40,00
+
|
|Vul waarde in: attribute.aantal_bezoekersvergunningen * 8,00
 
 
|-
 
|-
 
|Totaalprijs
 
|Totaalprijs
|64,00
+
|
|Vul waarde in: attribute.prijs_parkeervergunning + attribute.aantal_bezoekersvergunningen
 
 
|}
 
|}
 +
|[[bestand:rekenen_voorbeeld_regels_1a.png|thumb|Voorbeeld rekenen met regels 1/3]]
 +
[[bestand:rekenen_voorbeeld_regels_1b.png|thumb|Voorbeeld rekenen met regels 2/3]]
 +
[[bestand:rekenen_voorbeeld_regels_1c.png|thumb|Voorbeeld rekenen met regels 3/3]]
 +
|- style="vertical-align:top;"
 +
|
 +
|
 +
|[[bestand:rekenen_voorbeeld_zttscript_1.png]]
 +
|-
 +
|
 +
|
 +
|[[bestand:rekenen_voorbeeld_zttscript_2.png]]
 
|}
 
|}

Versie van 9 nov 2015 om 12:36

Algemeen

Rekenen en vergelijkingen kunnen op meerdere plekken in het systeem gebruikt worden, namelijk:

Constanten

De volgende constanten kunnen gebruikt worden bij het rekenen of vergelijken:

Simpele notatie Complexe notatie Waarde
:pi constant("pi") 3.141592653...

Rekenen

Met formules kan de output aangepast worden door te rekenen met de kenmerkwaarde(n):

  • Met elk type kenmerk kan gerekend worden, zolang de waarde een correct getal is
  • Waardes die geen getal zijn worden als 0 geïnterpreteerd
  • Delen door 0 geeft geen output

Rekentekens

De rekentekens die gebruikt kunnen worden zijn:

Naam Teken Voorbeeldformule Output
haakjes () 6 * ( 2 + 2 ) 24
keer/maal * 6 * 2 12
gedeeld door / 6 / 2 3
plus + 6 + 2 8
min - 6 - 2 4

De volgorde waarin de rekentekens verwerkt worden is alsvolgt: Haakjes wegwerken -> Keer/delen (van links naar rechts), Plus/min (van links naar rechts).

5 + 4 / (3 - attribute.voorbeeld_kenmerk) * attribute.example_kenmerk
5 + 4 / (3 - 1) * 7
5 + 4 / 2 * 7
5 + 2 * 7
5 + 14
19
[[ voorbeeld_kenmerk + 6 / 3 * example_kenmerk ]]
[[ 4 + 6 / 3 * 2 ]]
[[ 4 + 2 * 2]]
[[ 4 + 4 ]]
[[ 8 ]]
8

Afronding

De output wordt alsvolgt afgerond:

Formule Output formule Output in valutakenmerk Output in overige kenmerken
6 / 3 2 2,00 2.00
5 / 3 1.6666666667 1,67 1.67

Tip: Gebruik eventueel Kenmerkformatting om de getallen af te ronden op gehele waarden.

Vergelijken

Met vergelijkingen kan gecontroleerd wordt of een waarde aan een bepaalde conditie voldoet. De output is dan "1" als de conditie waar is en "" als de conditie niet waar is. In deze vergelijkingen kunnen ook berekeningen opgenomen worden.

Operators

De operators die gebruikt kunnen worden zijn:

Naam Teken Voorbeeld Antwoord
is gelijk aan == 2 + 2 == 4 Waar
is niet gelijk aan != 2 + 2 != 5 Waar
groter dan > 5 > 5 Niet waar
kleiner dan < 1 < 1.1 Waar
groter of gelijk aan >= 5 >= 5 Waar
kleiner of gelijk aan <= 1 <= 1.1 Waar
bevat tekst ~= "eks" in "tekst" Waar
komt voor in in 5 in [ 1, 2, 3, 4 ]

5 in array( 1, 2, 3, 4 )

Niet waar

Voorbeelden

Situatie Implementatie Voorbeeld
Een zaaktype parkeervergunning, waarin vastgelegd wordt wat de prijs van het type vergunning is en het aantal bezoekersvergunningen dat additioneel aangeschaft wordt. In het sjabloon moet de prijs per onderdeel (parkeervergunning en bezoekersvergunning) uitgesplitst weergegeven worden, plus de totaalprijs. Voor deze implementatie kan het rekenen in magicstrings gebruikt worden, door de prijzentabel alsvolgt op te stellen:
Onderdeel Prijs
Parkeervergunning [[ prijs_parkeervergunning ]]
Bezoekersvergunning [[ aantal_bezoekersvergunningen * 8 ]]
Totaalprijs [[ prijs_parkeervergunning + aantal_bezoekersvergunningen * 8 ]]
Voorbeeld rekenen in magicstring
Bovenstaande is niet geheel realistisch, want het is uiteraard veel wenselijker om de prijzen van de onderdelen in de zaak zelf vast te leggen, alsmede de totaalprijs. Voor deze implementatie zijn kenmerken nodig om de prijs in op te slaan, en regels van het type 'Vul waarde in met formule' die de waarde er in plaatsen.
Kenmerken Regels
Parkeergebied Als 'Parkeergebied' is 'Centrum', dan Vul waarde in "24,00" (geen formule nodig)

Als 'Parkeergebied' is 'Schil', dan Vul waarde in "12,00" (geen formule nodig)
Als 'Parkeergebied' is <gevuld>, dan Vul waarde in met formule (kenmerk:Totaalprijs, waarde: "attribute.prijs_parkeervergunning + attribute.prijs_bezoekersvergunningen")

Prijs parkeervergunning
Bezoekersvergunningen Als 'Bezoekersvergunningen' = 'Ja', dan Vul waarde in met formule (kenmerk:Prijs bezoekersvergunningen, waarde: "attribute.aantal_bezoekersvergunningen * 8"
Aantal bezoekersvergunningen
Prijs bezoekersvergunningen
Totaalprijs
Voorbeeld rekenen met regels 1/3
Voorbeeld rekenen met regels 2/3
Voorbeeld rekenen met regels 3/3
Rekenen voorbeeld zttscript 1.png
Rekenen voorbeeld zttscript 2.png