<?php
/*
BELASTING BEREKENEN
===================
De directe belasting wordt (in Belgi๋ althans) als volgt berekend:
(recente schaalindelingen en bedragen op 14/11/2005)
- Zowieso krijgt iedereen een vrijgesteld bedrag van 5780 ($vd['vast'])
- Voor kinderen krijg je ook een belastingsvoordeel. Dit gaat als volgt:
Aantal kinderen Voordeel
1 1230
2 3160
3 7080
4 11450
Meer: 4370/kind
Het laatste bedrag gaat dus in vanaf je 5de kind.
Dus, 6 kinderen = 11450 + (2* 4370) = 20190
OPGELET: als dit systeem ooit veranderd, dan moet je in de functie $vd['kind'] uitbreiden / inkorten
Het systeem telt toch het aantal vastgelegde bedragen, dus het zal nog steeds werken
- Indien je gehuwd bent krijg je nogmaals 5780 onbelastbaar inkomen erbij
Vervolgens moet je het inkomen in de juiste schijf duwen.
Inkomen Percentage belasting
0 - 7100 25%
7100 - 10100 30%
10100 - 16830 40%
16830 - 30840 45%
30840 - ... 50%
Sidenote: als je 7 kinderen hebt hoef je trouwens geen BTW te betalen (indirecte belastingen dus)
dus begin er maar aan ;-)
*/
function belasting($iInkomen,$iKinderen=0,$iGehuwd=0) {
$vd['vast'] = 5780;
$vd['kind'][1] = 1230;
$vd['kind'][2] = 3160;
$vd['kind'][3] = 7080;
$vd['kind'][4] = 11450;
$vd['kind']['+'] = 4370;
$vd['gehuwd'] = 5780;
$iBelastbaar = $iInkomen;
$iBelastbaar -= $vd['vast'];
// Vrijgesteld van belasting
if($iGehuwd != 0) {
$iBelastbaar -= $vd['gehuwd'];
}
$iMaxVast = count($vd['kind'])-1; // Het maximum aantal vastgelegde bedragen. De '+' telt natuurlijk niet mee, dus -1
if($iKinderen > 0 && $iKinderen < $iMaxVast) {
$iBelastbaar -= $vd['kind'][$iKinderen];
// Happa, voordeel dankzij de kids :D
} elseif($iKinderen >= $iMaxVast) {
$iBelastbaar -= $vd['kind'][$iMaxVast];
// Eerst en vooral krijg je voor de eerste 5 kids als vrijstelling
$iBelastbaar -= ($vd['kind']['+']*($iMaxVast-$iKinderen));
// De overige kids * vrijstelling er nog eens van
}
// We hebben nu het belastbaar inkomen. Nu even het verschil met het inkomen vastleggen
$iVerschil = $iInkomen-$iBelastbaar;
// Nu komt het moeilijkste: het bedrag in de juiste schijf pompen en de berekening maken.
$aSchil[0]['start'] = 0; $aSchil[0]['per'] = 25;
$aSchil[1]['start'] = 7100; $aSchil[1]['per'] = 30;
$aSchil[2]['start'] = 10100; $aSchil[2]['per'] = 40;
$aSchil[3]['start'] = 16830; $aSchil[3]['per'] = 45;
$aSchil[4]['start'] = 30840; $aSchil[4]['per'] = 50;
for($i = 0; $i < count($aSchil); $i++) { if(($i+1) == count($aSchil)) { // Hier moeten we een immens groot getal zetten
// Als je dit verdient, dan hou je je echt niet bezig met
// zooi als dit :)
} else {
$iEind = $aSchil[$i+1]['start'];
}
// $aSchil[$i+1] bevat het eindbedrag van de schil
// aangezien dit het begin van een nieuwe is ;-)
$iPercentage = $aSchil[$i]['per']/100;
// We kunnen nu gemakkelijk het te belasten bedrag hiermee
// vermenigvuldigen :)
$iStart = $aSchil[$i]['start'];
// Gewoon omdat dit korter is om te schrijven :p
if($i == 0) {
// Voor de eerste schil moeten we even het $iVerschil er nog uithalen
$iBelast = $iEind - $iVerschil;
// Het bedrag dat we gaan belasten
if($iBelast <= 0) {
$iBelasting = 0;
// Als het een negatief verschil betreft ben je voor deze schil
// vrijgesteld van belasting
$minSchijf2 = $iBelast;
// Even onthouden dat we dan in de tweede schijf het negatieve verschil
// er even afhalen!
} else {
$iBelasting = ($iBelast*$iPercentage);
// Weg ermee, niet meer nodig
}
} elseif($i == 1 && isset($minSchijf2)) { // Als we in de tweede "ronde zitten" moeten we eventueel
// het negatieve $iBelast er af halen
$iBelast = $iEind-$iStart+$minSchijf2;
// $minSchijf2 is negatief, dus tellen we dat erbij op
// waardoor het er van getrokken wordt (basiskennis wiskunde :p)
// Nu kunnen we hierop dus het percentage heffen
// en dit toevoegen aan de belasting
$iBelasting += ($iBelast*$iPercentage);
} else {
if($iInkomen < $iEind) {
$iBelast = $iInkomen-$iStart;
} else {
$iBelast = $iEind-$iStart;
}
if($iBelast > 0) {
$iBelasting += ($iBelast*$iPercentage);
}
}
}
$ret['inkomen'] = $iInkomen;
$ret['bInkomen'] = $iBelastbaar;
$ret['voordeel'] = $iVerschil;
$ret['belasting'] = $iBelasting;
return $ret;
}
?>