Ga naar hoofdinhoud

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 BTW
  • vatRate — 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:

  1. De server laadt de actuele flow-configuratie uit de database
  2. Hij evalueert alle geselecteerde opties en zichtbaarheidsregels
  3. Hij berekent de totaalprijs opnieuw
  4. De uitkomst wordt opgeslagen in de Lead-record als pricingSnapshotJson

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:

ComponentBTW-tarief
Basisprijs variantIngegeven inclusief BTW, defaultRate uit flow-instellingen
Optie-delta'sPer regel instelbaar: 0%, 9% of 21%
Numerieke prijsInstelbaar 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.