Waarom BrutoNet?
Lonen berekenen lijkt eenvoudig: een brutoloon, wat bijdragen eraf, een nettoloon. Wie er ooit in gedoken is, weet beter. Belgische lonen zijn een van de meest complexe ter wereld: RSZ, werkbonus, bedrijfsvoorheffing met zijn schalen en verminderingen, de bijzondere bijdrage voor de sociale zekerheid, voordelen van alle aard zoals de bedrijfswagen, maaltijdcheques, paritaire comités met hun eigen loonschalen en premies. En dan de aangiften: Dimona, DmfA, de aangifte van de bedrijfsvoorheffing, de fiscale fiches.
Met BrutoNet ga ik na hoe een loonmotor eruitziet als je vandaag van een wit blad begint.
Wat
Een robuuste loonmotor voor Belgische werkgevers, klein en groot:
- Van bruto tot netto, met de loonbrief als resultaat, en met de aangiften aan de RSZ en de FOD Financiën die eruit volgen.
- Schaalbaar: een miljoen loonbrieven per maand moet vlot gaan. Niet door er een grotere machine tegenaan te gooien, maar door het ontwerp: een berekening per tewerkstelling die op zichzelf staat, en die dus naast duizenden andere tegelijk kan lopen.
- Bruikbaar voor kleine en grote werkgevers: een bvba met een bedrijfsleider en twee bedienden, of een werkgever met duizenden werknemers, afdelingen en functies. Meerdere werkgevers vanaf de eerste dag.
- Uitbreidbaar: de wettelijke parameters, codelijsten en looncodes zijn gegevens met een datum en een wettelijke bron. Een nieuw paritair comité of een nieuwe indexering vraagt nieuwe gegevens, geen nieuwe software.
- Controleerbaar: elke loonbrief bewaart wat hij gebruikte. Achteraf weet je altijd waarom een bedrag is wat het is, ook als de regels intussen veranderden.
Waarom
Moderne technologie verkennen. De lonen van veel Belgische werknemers worden nog berekend op een mainframe. De werktitel van dit project was dan ook NoMF: No Mainframe. Hoe ziet zo’n systeem eruit met de technologie van vandaag? Java 25 en Spring Boot, een modulaire applicatie (Spring Modulith), event sourcing en CQRS, een client in Kotlin voor het web en Android. Ik wil weten of die aanpak houdt wat hij belooft voor een domein dat zo veel regels, historiek en controle vraagt als lonen.
Bewijzen dat het geen project van miljoenen hoeft te zijn. Een nieuwe loonmotor bouwen klinkt als een meerjarenproject met een groot team en een budget van miljoenen. Ik denk dat dat niet hoeft. De regels zijn complex, maar ze zijn goed gedocumenteerd: de RSZ en de FOD Financiën publiceren hun instructies, schalen en technische specificaties. Met een helder ontwerp, de regels als gegevens en veel automatische tests komt een kleine ploeg ver.
Het moment is goed. De overheid vernieuwt haar aangiften. Met LTDS komt er een aangifte per loonberekening bij de RSZ, vrijwillig vanaf 2027 en verplicht vanaf 2028, en Belcotax-on-web 2.0 werkt vanaf 2027 alleen nog met JSON Lines. Wie nu een loonmotor bouwt, kan die meteen rond die nieuwe modellen ontwerpen in plaats van ze er later aan te moeten vastmaken.
Hoe
Eerst de regels, dan de code. Elke regel wordt eerst beschreven, met zijn wettelijke bron en vanaf wanneer hij geldt, en pas daarna gebouwd. De berekening wordt getoetst aan echte loonbrieven. De eerste werkgever heeft een bedrijfsleider en bedienden in paritair comité 200; de rest volgt stap voor stap.
Op deze blog hou ik bij hoe het vordert.