Meer- en minderwerk verrekenen (UAV 2012)
Beschrijving
Verreken meer- en minderwerk volgens UAV 2012: saldo, de 10%-vergoeding bij een overschot aan minderwerk (par. 35 lid 5) en de nieuwe contractsom. Toetst ook de 15%- en 10%-grens van par. 36 lid 3.
Invoer velden
Resultaten
Met deze tool verreken je meer- en minderwerk volgens de UAV 2012. Je ziet het saldo, de nieuwe contractsom en of de aannemer recht heeft op de 10%-vergoeding over het overschot aan minderwerk.
Volgens paragraaf 35 lid 5 krijgt de aannemer 10% van het verschil als bij de eindafrekening het totale minderwerk groter is dan het totale meerwerk. Minderwerk dat de aannemer zelf heeft gevraagd telt niet mee. Onder meer- en minderwerk vallen bestekswijzigingen, stelposten en verrekenbare hoeveelheden (lid 1). Daarnaast toetst de tool paragraaf 36 lid 3: de aannemer moet wijzigingen uitvoeren zolang meer- en minderwerk elk niet meer dan 15% van de aanneemsom zijn, dan wel het saldo niet meer dan 10%.
Neem de bedragen uit je meer- en minderwerkstaat en vul ze positief in, alle met dezelfde btw-basis. Bij UAV-GC of een eigen regeling vul je het percentage uit je contract in.
Bron: UAV 2012, paragraaf 35 en 36. Contract en bestek zijn leidend; opdrachtgevers wijken in de bijzondere bepalingen soms af. Volgende stap: reken een vertraging of indexatie apart door.
Formulas:
-
h_v_verzoek = if(contractvorm == 'uav2012', if(min_verzoek > 0, min_verzoek, 0), 0)
-
h_v_pct = if(contractvorm == 'uav2012', 10, if(eigen_pct > 0, eigen_pct, 0))
-
h_meer = if(meerwerk > 0, meerwerk, 0)
-
h_minder = if(minderwerk > 0, minderwerk, 0)
-
h_min_telt = if(h_v_verzoek < h_minder, h_minder - h_v_verzoek, 0)
-
h_overschot = if(h_min_telt > h_meer, h_min_telt - h_meer, 0)
-
h_verg = h_overschot * h_v_pct / 100
-
h_som = if(aanneemsom > 0, aanneemsom, 0)
-
h_p_meer = if(h_som > 0, h_meer / h_som * 100, 0)
-
h_p_minder = if(h_som > 0, h_minder / h_som * 100, 0)
-
h_p_saldo = if(h_som > 0, abs(h_meer - h_minder) / h_som * 100, 0)
-
h_t_over = concat(if(round(h_overschot, 0) < 0, '-', ''), if(floor(abs(round(h_overschot, 0)) / 1000000) > 0, concat(format(floor(abs(round(h_overschot, 0)) / 1000000), '0'), '.', concat(if(floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) < 100, if(floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) < 10, '00', '0'), ''), format(floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000), '0')), '.', concat(if((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000 - floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) * 1000) < 100, if((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000 - floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) * 1000) < 10, '00', '0'), ''), format((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000 - floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) * 1000), '0'))), if(floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) > 0, concat(format(floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000), '0'), '.', concat(if((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000 - floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) * 1000) < 100, if((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000 - floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) * 1000) < 10, '00', '0'), ''), format((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000 - floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) * 1000), '0'))), format((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000 - floor((abs(round(h_overschot, 0)) - floor(abs(round(h_overschot, 0)) / 1000000) * 1000000) / 1000) * 1000), '0'))))
-
h_t_verg = concat(if(round(h_verg, 0) < 0, '-', ''), if(floor(abs(round(h_verg, 0)) / 1000000) > 0, concat(format(floor(abs(round(h_verg, 0)) / 1000000), '0'), '.', concat(if(floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) < 100, if(floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) < 10, '00', '0'), ''), format(floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000), '0')), '.', concat(if((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000 - floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) * 1000) < 100, if((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000 - floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) * 1000) < 10, '00', '0'), ''), format((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000 - floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) * 1000), '0'))), if(floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) > 0, concat(format(floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000), '0'), '.', concat(if((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000 - floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) * 1000) < 100, if((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000 - floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) * 1000) < 10, '00', '0'), ''), format((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000 - floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) * 1000), '0'))), format((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000 - floor((abs(round(h_verg, 0)) - floor(abs(round(h_verg, 0)) / 1000000) * 1000000) / 1000) * 1000), '0'))))
-
h_t_pct = if(round(h_v_pct * 10, 0) - 10 * floor(round(h_v_pct * 10, 0) / 10) > 0, concat(format(floor(round(h_v_pct * 10, 0) / 10), '0'), ',', format(round(h_v_pct * 10, 0) - 10 * floor(round(h_v_pct * 10, 0) / 10), '0')), format(floor(round(h_v_pct * 10, 0) / 10), '0'))
-
h_ok15 = if(h_p_meer <= 15 && h_p_minder <= 15, 1, 0)
-
h_ok10 = if(h_p_saldo <= 10, 1, 0)
-
saldo = round(h_meer - h_minder, 0)
Meerwerk min minderwerk. Positief: er komt per saldo geld bij de aanneemsom. Negatief: er gaat per saldo geld af (par. 35 lid 2: bijbetaling en inhouding). -
overschot = round(h_overschot, 0)
Minderwerk min meerwerk, als het minderwerk groter is. Bij UAV 2012 telt minderwerk op verzoek van de aannemer niet mee (par. 35 lid 5, slotzin). Anders 0. -
vergoeding = round(h_verg, 0)
UAV 2012 par. 35 lid 5: 10% van het verschil als bij de eindafrekening het totale minderwerk het totale meerwerk overtreft. Bij een andere regeling: het percentage uit je contract. -
nieuwe_som = round(h_som + h_meer - h_minder + h_verg, 0)
Aanneemsom plus meerwerk, min minderwerk, plus de vergoeding over het overschot aan minderwerk. Indexatie (loon- en prijsstijging) en boetes zitten hier niet in. -
pct_meer = round(h_p_meer, 1)
Totaal meerwerk gedeeld door de aanneemsom. UAV 2012 par. 36 lid 3 noemt 15% als grens voor bijbetalingen. -
pct_minder = round(h_p_minder, 1)
Totaal minderwerk gedeeld door de aanneemsom. UAV 2012 par. 36 lid 3 noemt 15% als grens voor inhoudingen. -
pct_saldo = round(h_p_saldo, 1)
Het saldo (positief of negatief) gedeeld door de aanneemsom. UAV 2012 par. 36 lid 3 noemt 10% als grens voor het saldo. -
oordeel_10 = if(h_overschot <= 0, 'Geen overschot aan minderwerk dat meetelt: er is geen vergoeding voor de aannemer.', if(contractvorm == 'uav2012', concat('10%-regel van toepassing (UAV 2012 par. 35 lid 5): 10% van € ', h_t_over, ' overschot = € ', h_t_verg, ' voor de aannemer, bij de eindafrekening.'), if(h_v_pct > 0, concat('Volgens je contract: ', h_t_pct, '% van € ', h_t_over, ' overschot = € ', h_t_verg, ' voor de opdrachtnemer.'), concat('Overschot minderwerk € ', h_t_over, '. Je contract geeft hiervoor geen vergoeding (0% ingevuld); de 10% van UAV 2012 geldt dan niet.'))))
UAV 2012 par. 35 lid 5: overtreft het totaal minderwerk het totaal meerwerk, dan krijgt de aannemer 10% van het verschil. Lid 6: bij aanneming in massa of meerjarig onderhoud tellen de percelen of jaren samen. -
oordeel_36 = if(h_som <= 0, 'Vul de aanneemsom in om de grenzen van par. 36 lid 3 te toetsen.', if(contractvorm == 'uavgc' || contractvorm == 'eigen', 'UAV 2012 par. 36 lid 3 geldt hier niet vanzelf. Kijk in je contract tot welke omvang de opdrachtnemer wijzigingen moet uitvoeren.', if(h_ok15 == 1 && h_ok10 == 1, 'Voldoet aan par. 36 lid 3: meer- en minderwerk elk max. 15% en saldo max. 10%. De aannemer moet de wijzigingen uitvoeren.', if(h_ok15 == 0 && h_ok10 == 0, 'Voldoet niet aan par. 36 lid 3: meer- of minderwerk boven 15% en saldo boven 10%. De aannemer hoeft verdere wijzigingen niet zonder meer uit te voeren.', 'Eén grens van par. 36 lid 3 overschreden. Volgens de tekst (dan wel) is één grens genoeg voor de plicht; leg twijfel vast in overleg.'))))
UAV 2012 par. 36 lid 3: de aannemer voert bestekswijzigingen uit zolang bijbetalingen en inhoudingen elk max. 15% van de aanneemsom zijn dan wel het saldo max. 10%. Strikt gaat dit alleen over bestekswijzigingen; de tool telt al het ingevulde meer- en minderwerk. Bij meerjarig onderhoud per jaar toetsen (lid 7).
Berekening informatie
Meer over bouwkosten
Ontdek meer tools gerelateerd aan bouwkosten