03 - Berekende Velden
Je kent nu de functies om te rekenen, afronden en opmaken. In deze slide combineren we alles tot de berekeningen die op vrijwel elke factuur voorkomen: regeltotalen, subtotalen, BTW en eindtotalen.
Dit is het moment waarop het rapport echt bruikbaar wordt als bedrijfsdocument — het principe design + data = resultaat in zijn meest complete vorm.
De opbouw van een factuurberekening
Een factuur rekent van detail naar totaal in vier stappen:
Regeltotaal → Subtotaal → BTW → Eindtotaal
(per rij) (alle rijen) (over subtotaal) (subtotaal + BTW) Stap 1 — Regeltotaal (in de DataBand)
Per factuurregel bereken je het regeltotaal:
{Round(Lines.Quantity * Lines.Price, 2)} Dit tekstvak staat in de DataBand en wordt per rij berekend.
Stap 2 — Subtotaal (in de ReportSummary)
Het subtotaal is de som van alle regeltotalen. Je kent Sum() al uit sessie 4:
{Round(Sum(Lines.Quantity * Lines.Price), 2)} Dit tekstvak staat in de ReportSummary en berekent de som over alle rijen.
Stap 3 — BTW (in de ReportSummary)
Het BTW-bedrag bereken je over het subtotaal. Bij 21% BTW:
{Round(Sum(Lines.Quantity * Lines.Price) * 0.21, 2)} Let op: de BTW wordt berekend over het subtotaal, niet per regel. Hiermee voorkom je afrondingsverschillen die ontstaan als je per regel afrondt en dan optelt.
Stap 4 — Eindtotaal (in de ReportSummary)
Het eindtotaal is subtotaal + BTW:
{Round(Sum(Lines.Quantity * Lines.Price) * 1.21, 2)} Of uitgeschreven:
{Round(Sum(Lines.Quantity * Lines.Price) + Sum(Lines.Quantity * Lines.Price) * 0.21, 2)} De korte versie (× 1.21) is equivalent en leesbaarder.
Concreet voorbeeld
| Omschrijving | Aantal | Prijs | Regeltotaal |
|---|---|---|---|
| Vleeskruiden mix | 25 | € 4.50 | € 112.50 |
| Pekelmengsel | 10 | € 7.80 | € 78.00 |
| Rookzout | 15 | € 3.20 | € 48.00 |
| Bedrag | |
|---|---|
| Subtotaal | € 238.50 |
| BTW 21% | € 50.09 |
| Eindtotaal | € 288.59 |
Meerdere BTW-tarieven
In Nederland zijn er meerdere BTW-tarieven (0%, 9%, 21%). Als je rapport regels met verschillende tarieven heeft, moet je per tarief een apart subtotaal en BTW-bedrag berekenen. Dit vereist groepering op BTW-tarief — een combinatie van de technieken uit sessie 4 en deze sessie.
Rekenen met Money-velden
Sommige bedragen in ReflexBlue zijn geen gewone decimalen maar Money-objecten — waarden met een valuta. Je herkent ze in het woordenboek aan het type ReflexBlue.DomainLanguage.Money.
Met gewone rekenoperatoren (+, -, *, /) kun je niet rechtstreeks op Money-objecten rekenen. ReflexBlue biedt daarvoor speciale functies in Functies > Money:
| Functie | Wat het doet | Voorbeeld |
|---|---|---|
SumM(a, b) | Optellen | {SumM(Lines.Amount, Lines.VatAmount)} |
SubM(a, b) | Aftrekken | {SubM(Lines.GrossAmount, Lines.Amount)} |
MulM(a, b) | Vermenigvuldigen | {MulM(Lines.Price, Lines.Quantity)} |
DivM(a, b) | Delen | {DivM(Lines.Amount, 2)} |
RoundM(bedrag, n) | Afronden | {RoundM(Lines.Amount, 2)} |
Elke functie heeft overloads voor Money×Money, Money×decimal en decimal×Money.
Twee extra functies voor het tonen van Money-waarden:
| Functie | Wat het doet |
|---|---|
ConvertToSymbol(bedrag) | Geeft het valutasymbool (€, $, £) |
Formattable(bedrag) | Maakt het Money-object opmaakbaar via de TextFormat-eigenschap |
Vuistregel: zie je in het woordenboek dat een veld van type Money is? Gebruik dan de Money-functies. Is het een gewone decimal? Gebruik dan de standaard rekenoperatoren.
Samenvatting
- Factuurberekeningen gaan van regel → subtotaal → BTW → eindtotaal
- Gebruik
Round()bij elke berekening om afrondingsverschillen te voorkomen - Bereken BTW over het subtotaal, niet per regel
- Plaats regeltotalen in de DataBand, subtotalen en eindtotalen in de ReportSummary
- Bij meerdere BTW-tarieven: groepeer op tarief
- Voor Money-velden gebruik je
SumM(),SubM(),MulM(),DivM()enRoundM()
Meer in deze rubriek
- 01 - Geavanceerde Expressies
- 02 - Oefening Geavanceerde Expressies
- 03 - Berekende Velden
- 04 - Oefening Berekeningen
- 05 - Systeemvariabelen
- 06 - Oefening Systeemvariabelen
- 07 - Subrapporten
- 08 - Oefening Subrapporten
- 09 - Afdrukken en Exporteren
- 10 - Oefening Exporteren
- 11 - Factuur Bouwen
- 12 - Oefening Factuur