login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Wiskunde > Belasting berekenen

Belasting berekenen

Auteur: Maarten - 14 november 2005 - 22:20 - Gekeurd door: Maarten - Hits: 21044 - Aantal punten: 3.10 (5 stemmen)



Vandaag in economie gezien hoe je directe belastingen berekent (dus belastingen die je moet betalen op je loon), en dat is nogal een heel gedoe waar je gemakkelijk fouten maakt en zo, en natuurlijk doen ze dat op de belastingen ook wel met computers en zo, maar ik heb toch even een PHP functie geschreven die het doet.
Ik heb hem getest met de 3 oefeningen die we gemaakt hadden en hij klopt voor alle 3 de oefeningen.

Gebruik:
1ste paramater: Je jaarlijks BRUTO inkomen
2de parameter: Het aantal kinderen ten laste. LET OP! Een gehandicapt kind telt voor 2 kinderen (bij de belastingen dan toch eh )
3de parameter: Of je gehuwd bent. 0 is nee, al de rest is ja.

De eerste parameter is verplicht, de tweede en derde niet. Er wordt dan vanuitgegaan dat je niet gehuwd bent en geen kinderen hebt.

Output:
Een array met 3 gegevens:
return['inkomen']: Je inkomen (de eerste parameter dus)
return['bInkomen']: Je belastbaar inkomen, m.a.w. het inkomen waarop de belastingen gehoffen worden (je krijgt voordeel met die kids en getrouwd-zijn)
return['voordeel']: Hoeveel euro voordeel je geniet. Dit is dus simpelweg het verschil tussen je inkomen het belastbaar inkomen.
return['belasting']: Hetgeen dat de hele functie uiteindelijk berekent: hoeveel euro belasting je mag afstaan aan vadertje staat.

Code:
  1. <?php
  2. /*
  3. BELASTING BEREKENEN
  4. ===================
  5. De directe belasting wordt (in Belgi๋ althans) als volgt berekend:
  6. (recente schaalindelingen en bedragen op 14/11/2005)
  7.  
  8. - Zowieso krijgt iedereen een vrijgesteld bedrag van € 5780 ($vd['vast'])
  9. - Voor kinderen krijg je ook een belastingsvoordeel. Dit gaat als volgt:
  10. Aantal kinderen Voordeel
  11. 1 € 1230
  12. 2 € 3160
  13. 3 € 7080
  14. 4 € 11450
  15.  
  16. Meer: € 4370/kind
  17.  
  18. Het laatste bedrag gaat dus in vanaf je 5de kind.
  19. Dus, 6 kinderen = 11450 + (2* 4370) = 20190
  20. OPGELET: als dit systeem ooit veranderd, dan moet je in de functie $vd['kind'] uitbreiden / inkorten
  21. Het systeem telt toch het aantal vastgelegde bedragen, dus het zal nog steeds werken
  22.  
  23. - Indien je gehuwd bent krijg je nogmaals € 5780 onbelastbaar inkomen erbij
  24.  
  25. Vervolgens moet je het inkomen in de juiste schijf duwen.
  26. Inkomen Percentage belasting
  27. 0 - 7100 25%
  28. 7100 - 10100 30%
  29. 10100 - 16830 40%
  30. 16830 - 30840 45%
  31. 30840 - ... 50%
  32.  
  33.  
  34. Sidenote: als je 7 kinderen hebt hoef je trouwens geen BTW te betalen (indirecte belastingen dus)
  35. dus begin er maar aan ;-)
  36. */
  37. function belasting($iInkomen,$iKinderen=0,$iGehuwd=0) {
  38. $vd = array();
  39. $vd['vast'] = 5780;
  40. $vd['kind'][1] = 1230;
  41. $vd['kind'][2] = 3160;
  42. $vd['kind'][3] = 7080;
  43. $vd['kind'][4] = 11450;
  44. $vd['kind']['+'] = 4370;
  45. $vd['gehuwd'] = 5780;
  46.  
  47. $iBelastbaar = $iInkomen;
  48. $iBelastbaar -= $vd['vast'];
  49. // Vrijgesteld van belasting
  50.  
  51. if($iGehuwd != 0) {
  52. $iBelastbaar -= $vd['gehuwd'];
  53. }
  54.  
  55. $iMaxVast = count($vd['kind'])-1;
  56. // Het maximum aantal vastgelegde bedragen. De '+' telt natuurlijk niet mee, dus -1
  57. if($iKinderen > 0 && $iKinderen < $iMaxVast) {
  58. $iBelastbaar -= $vd['kind'][$iKinderen];
  59. // Happa, voordeel dankzij de kids :D
  60. } elseif($iKinderen >= $iMaxVast) {
  61. $iBelastbaar -= $vd['kind'][$iMaxVast];
  62. // Eerst en vooral krijg je voor de eerste 5 kids als vrijstelling
  63. $iBelastbaar -= ($vd['kind']['+']*($iMaxVast-$iKinderen));
  64. // De overige kids * vrijstelling er nog eens van
  65. }
  66.  
  67. // We hebben nu het belastbaar inkomen. Nu even het verschil met het inkomen vastleggen
  68. $iVerschil = $iInkomen-$iBelastbaar;
  69.  
  70. // Nu komt het moeilijkste: het bedrag in de juiste schijf pompen en de berekening maken.
  71. $aSchil = array();
  72. $aSchil[0]['start'] = 0; $aSchil[0]['per'] = 25;
  73. $aSchil[1]['start'] = 7100; $aSchil[1]['per'] = 30;
  74. $aSchil[2]['start'] = 10100; $aSchil[2]['per'] = 40;
  75. $aSchil[3]['start'] = 16830; $aSchil[3]['per'] = 45;
  76. $aSchil[4]['start'] = 30840; $aSchil[4]['per'] = 50;
  77.  
  78. for($i = 0; $i < count($aSchil); $i++) {
  79. if(($i+1) == count($aSchil)) {
  80. $iEind = microtime()*microtime();
  81. // Hier moeten we een immens groot getal zetten
  82. // Als je dit verdient, dan hou je je echt niet bezig met
  83. // zooi als dit :)
  84. } else {
  85. $iEind = $aSchil[$i+1]['start'];
  86. }
  87. // $aSchil[$i+1] bevat het eindbedrag van de schil
  88. // aangezien dit het begin van een nieuwe is ;-)
  89. $iPercentage = $aSchil[$i]['per']/100;
  90. // We kunnen nu gemakkelijk het te belasten bedrag hiermee
  91. // vermenigvuldigen :)
  92. $iStart = $aSchil[$i]['start'];
  93. // Gewoon omdat dit korter is om te schrijven :p
  94. if($i == 0) {
  95. // Voor de eerste schil moeten we even het $iVerschil er nog uithalen
  96. $iBelast = $iEind - $iVerschil;
  97. // Het bedrag dat we gaan belasten
  98. if($iBelast <= 0) {
  99. $iBelasting = 0;
  100. // Als het een negatief verschil betreft ben je voor deze schil
  101. // vrijgesteld van belasting
  102. $minSchijf2 = $iBelast;
  103. // Even onthouden dat we dan in de tweede schijf het negatieve verschil
  104. // er even afhalen!
  105. } else {
  106. $iBelasting = ($iBelast*$iPercentage);
  107. // Weg ermee, niet meer nodig
  108. }
  109. } elseif($i == 1 && isset($minSchijf2)) {
  110. // Als we in de tweede "ronde zitten" moeten we eventueel
  111. // het negatieve $iBelast er af halen
  112. $iBelast = $iEind-$iStart+$minSchijf2;
  113. // $minSchijf2 is negatief, dus tellen we dat erbij op
  114. // waardoor het er van getrokken wordt (basiskennis wiskunde :p)
  115.  
  116. // Nu kunnen we hierop dus het percentage heffen
  117. // en dit toevoegen aan de belasting
  118. $iBelasting += ($iBelast*$iPercentage);
  119. } else {
  120. if($iInkomen < $iEind) {
  121. $iBelast = $iInkomen-$iStart;
  122. } else {
  123. $iBelast = $iEind-$iStart;
  124. }
  125.  
  126. if($iBelast > 0) {
  127. $iBelasting += ($iBelast*$iPercentage);
  128. }
  129. }
  130. }
  131. $ret['inkomen'] = $iInkomen;
  132. $ret['bInkomen'] = $iBelastbaar;
  133. $ret['voordeel'] = $iVerschil;
  134. $ret['belasting'] = $iBelasting;
  135. return $ret;
  136.  
  137. }
  138. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (8)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.033s