Prijslogica
Hoe de prijs berekend wordt
De totaalprijs is opgebouwd uit drie componenten:
Totaalprijs incl. BTW =
Basisprijs variant (incl. BTW)
+ Som van alle optie-deltas (incl. BTW)
+ Numerieke prijs (prijs per eenheid × waarde, incl. BTW)
Basisprijs variant
De geselecteerde variant bepaalt de startprijs. De basisprijs wordt ingegeven inclusief BTW in de Flow Builder.
Optie-deltas
Elke geselecteerde optie met een of meer prijsregels voegt een bedrag toe:
deltaAmount— het bedrag exclusief BTWvatRate— het BTW-percentage (0, 9 of 21)- Effectief bedrag =
deltaAmount × (1 + vatRate / 100)
Conditionele prijsregels
Een prijsregel met voorwaarden (selectionConditions) telt alleen mee als de klant de juiste opties in de opgegeven stappen heeft geselecteerd. Dit wordt zowel in de browser als op de server geëvalueerd.
Numerieke prijs
Voor stappen van het type numeric:
prijs = pricePerUnit × ingevoerde waarde
pricePerUnit is exclusief BTW; het vatRate-veld op de numerieke configuratie bepaalt het toe te passen tarief.
Anti-manipulatie: server-side herberekening
De prijs die de klant in de browser ziet is indicatief. Bij het verzenden van een aanvraag berekent de server de prijs opnieuw, onafhankelijk van de browser:
- De server laadt de actuele flow-configuratie uit de database
- Hij evalueert alle geselecteerde opties en zichtbaarheidsregels
- Hij berekent de totaalprijs opnieuw
- De uitkomst wordt opgeslagen in de
Lead-record alspricingSnapshotJson
Als er een afwijking is tussen de browser-prijs en de server-prijs, wint de server-prijs altijd. Dit voorkomt dat kwaadwillende gebruikers de prijs kunnen aanpassen via de browser developer tools.
Zichtbaarheidsregels en de prijs
Stappen en opties die niet zichtbaar zijn (door zichtbaarheidsregels) tellen niet mee in de prijsberekening. Dit geldt zowel in de browser als bij de server-side herberekening.
BTW-uitsplitsing
De prijs wordt uitgesplitst naar BTW-tarief:
| Component | BTW-tarief |
|---|---|
| Basisprijs variant | Ingegeven inclusief BTW, defaultRate uit flow-instellingen |
| Optie-delta's | Per regel instelbaar: 0%, 9% of 21% |
| Numerieke prijs | Instelbaar op de stap: 0%, 9% of 21% |
Het factuuroverzicht in de aanvraag-samenvatting toont totalen per BTW-tarief.
Implementatie
De prijslogica is geïmplementeerd in twee locaties die exact gelijk moeten zijn:
- Browser:
src/engine/priceEngine.ts(frontend) - Server:
src/api/configurator-leads/services/configurator-leads.ts(backend)
Bij wijzigingen in de prijslogica moeten beide bestanden synchroon worden bijgewerkt.