0) { $ztabfb = $ztabfb + $kfb; mlstjahr(); $jbmg = $st; } else $jbmg = $lstjahr; msolz(); $jre4 = $jre4 + $jsonstb; // nicht im PAP, berücksichtigt schon abgerechnete Einmalbezüge/Jahr msonst(); mvmt(); } function mre4lzz() { //Freibetraege fuer Versorgungsbezuege, Altersentlastungsbetrag (§39b Abs. 2 Satz 2 EStG) PAP Seite 10 global $re4, $vbez, $vbezm, $vbezs, $vbs, $vjahr, $vkapa, $vmt, $wfundf, $zmvb, $jvbez, $vjahr, $lzz, $sterbe, $vkapa, $vbezb, $fvbz, $fvb, $anteil2, $alter1, $ajahr, $alte, $lzz, $jw, $anteil1, $anteil2; $tab1 = Array (0, 0.4, 0.384, 0.368, 0.352, 0.336, 0.32, 0.304, 0.288, 0.272, 0.256, 0.24, 0.224, 0.208, 0.192, 0.176, 0.16, 0.152, 0.144, 0.136, 0.128, 0.12, 0.112, 0.104, 0.096, 0.088, 0.08, 0.072, 0.064, 0.056, 0.048, 0.04, 0.032, 0.024, 0.016, 0.008, 0); $tab2 = Array (0, 3000, 2880, 2760, 2640, 2520, 2400, 2280, 2160, 2040, 1920, 1800, 1680, 1560, 1440, 1320, 1200, 1140, 1080, 1020, 960, 900, 840, 780, 720, 660, 600, 540, 480, 420, 360, 300, 240, 180, 120, 60, 0); $tab3= Array (0, 900, 864, 828, 792, 756, 720, 684, 648, 612, 576, 540, 504, 468, 432, 396, 360, 342, 324, 306, 288, 270, 252, 234, 216, 198, 180, 162, 144, 126, 108, 90, 72, 54, 36, 18, 0); $tab4 = $tab1; $tab5 = Array (0,1900, 1824, 1748, 1672, 1596, 1520, 1444, 1368, 1292, 1216, 1140, 1064, 988, 912, 836, 760, 722, 684, 646, 608, 570, 532, 494, 456, 418, 380, 342, 304, 266, 228, 190, 152, 114, 76, 38, 0); if ($vbez == 0) { $fvbz = 0; $fvb = 0; } else { if ($vjahr < 2006) $j = 1; else { if ($vjahr < 2040) $j = $vjahr - 2004; else $j = 36; } if ($lzz == 1) { if ($sterbe + $vkapa > 0) { $vbezb = $vbezm * $zmvb + $vbezs; $hfvb = $tab2[$j] * 100; $fvbz = $tab3[$j]; } else { $vbezb = $vbezm * $zmvb + $vbezs; $hfvb = $tab2[$j] / 12 * $zmvb * 100; $fvbz = ceil($tab3[$j] / 12 * $zmvb); } } else { $vbezb = $vbezm * 12 + $vbezs; $hfvb = $tab2[$j] * 100; $fvbz = $tab3[$j]; } $fvb = ceil($vbezb * $tab1[$j]); if ($fvb > $hfvb) $fvb = $hfvb; $jw = $fvb; upanteil(); $fvb = $anteil2; } if ($alter1 == 0) $alte = 0; else { if ($ajahr < 2006) $k = 1; else { if ($ajahr < 2040) $k = $ajahr - 2004; else $k = 36; } $bmg = $re4 - $vbez; //echo "
".$re4." - ".$vbez; $alte = max(0,ceil($bmg * $tab4[$k])); $jw = $tab5[$k] * 100; upanteil(); if ($alte > $anteil2) $alte = $anteil2; } } function mre4() { //Massgeblicher Arbeitslohn fuer die Jahreslohnsteuer PAP Seite 12 //mit Zufügen eine Jahreshochrechnungsfaktors (Sinn?) global $lzz, $zre4, $zre4vp, $zvbez, $vbez, $fvb, $zre4, $re4lzz, $re4lzzv; if ($lzz == 1) { $zre4 = floor($re4lzz) / 100; $zre4vp = floor($re4lzzv) / 100; $zvbez = floor($vbez - $fvb) / 100; } if ($lzz == 2) { $zre4 = floor(($re4lzz + 0.67) * 12)/100; $zre4vp = floor(($re4lzzv + 0.67) * 12)/100; $zvbez = floor(($vbez - $fvb + 0.67) * 12)/100; } if ($lzz == 3) { $zre4 = floor(($re4lzz + 0.89) * 360 / 7)/100; $zre4vp = floor(($re4lzzv + 0.89) * 360 / 7)/100; $zvbez = floor(($vbez - $fvb + 0.89) * 360 / 7)/100; } if ($lzz == 4) { $zre4 = floor(($re4lzz + 0.56) * 360)/100; $zre4vp = floor(($re4lzzv + 0.56) * 360)/100; $zvbez = floor(($vbez - $fvb + 0.56) * 360)/100; } if ($zre4 < 0) $zre4 = 0; if ($zvbez <=0 || $vbez<=0) //abweichend vom PAP $zvbez = 0; } function mztabfb() { //Ermittlung der festen Tabellenfreibetraege (ohne Vorsorgepauschale) PAP Seite 13 global $kfb, $vbez, $zvbez, $fvbz, $zre4, $anp, $stkl, $zkf, $ztabfb, $kztab; $efa = 0; $sap = 0; $kfb = 0; $anp = 0; if ($vbez > 0) { if ($zvbez < $fvbz) $fvbz = $zvbez; } if ($stkl < 6) { if ($zvbez > 0) { if ($zvbez - $fvbz < 102) $anp = $zvbez - $fvbz; else $anp = 102; } } if ($stkl < 6) { if ($zre4 > $zvbez) { if ($zre4 - $zvbez < 920) $anp = $anp + $zre4 - $zvbez; else $anp = $anp + 920; } } $kztab = 1; if ($stkl == 1) { $sap = 36; $kfb = $zkf * 5808; } if ($stkl == 2) { $efa = 1308; $sap = 36; $kfb = $zkf * 5808; } if ($stkl == 3) { $kztab = 2; $sap = 72; $kfb = $zkf * 5808; } if ($stkl == 4) { $sap = 36; $kfb = $zkf * 2904; } if ($stkl == 5) $kfb = 0; if ($stkl == 6) $kfb = 0; $ztabfb = $efa + $anp + $sap + $fvbz; } function mlstjahr() { //Ermittlung der Jahreslohnsteuer, PAP S. 14 global $zve, $stkl, $zre4, $ztabfb, $vsp, $kztab, $x; if ($stkl < 5) upevp(); else $vsp = 0; $zve = $zre4 - $ztabfb - $vsp; if ($zve < 1) { $zve = 0; $x = 0; } else $x = floor($zve / $kztab); // auf Euro abrunden if ($stkl < 5) uptab05(); else mst5_6(); } function upevp() { // Vorsorgepauschale (§39b Abs. 2 Satz 6 Nr 3 EStG)PAP Seite 15 global $krv, $zre4vp, $kztab, $vsp; if ($krv == 1) $vsp1 = 0; else { if ($zre4vp > 63000) $zre4vp = 63000; $vsp1 = 0.24 * $zre4vp; $vsp1 = $vsp1 * 0.0975; } $vsp2 = 0.11 * $zre4vp; $vhb = 1500 * $kztab; if ($vsp2 > $vhb) $vsp2 = $vhb; $vspn = ceil($vsp1 + $vsp2); //auf Euro aufrunden mvsp(); if ($vspn > $vsp) $vsp = $vspn; } function mvsp() { //Vorsorgepauschale (§39b Abs. 2 Satz 6 Nr 3 EStG) Vergleichsberechnung //fuer Guenstigerpruefung PAP Seite 16 global $kennz, $zre4vp1, $zre4vp, $kztab, $krv, $vspvor, $vspmax1, $vspmax2, $vspo; if ($kennz == 1) $vspo = $zre4vp1 * 0.2; else $vspo = $zre4vp * 0.2; $vspvor = 3068 * $kztab; $vspmax1 = 1334 * $kztab; $vspmax2 = 667 * $kztab; $vspkurz = 1134 * $kztab; if ($krv == 1) { if ($vspo > $vspkurz) $vsp = $vspkurz; else $vsp = ceil($vspo); // auf Euro aufrunden } else umvsp(); } function umvsp() { //Vorsorgepauschale, PAP 2006, S. 17 global $kennz, $zre4vp1, $zre4vp, $kztab, $krv, $vspvor, $vspmax1, $vspmax2, $vspo, $vsp; if ($kennz == 1) $vspvor = $vspvor - $zre4vp1 * 0.16; else $vspvor = $vspvor - $zre4vp * 0.16; if ($vspvor < 0) $vspvor = 0; if ($vspo > $vspvor) { $vsp = $vspvor; $vsprest = $vspo - $vspvor; if ($vsprest > $vspmax1) { $vsp = $vsp + $vspmax1; $vsprest = ceil(($vsprest - $vspmax1)*100) / 200; //auf Cent aufrunden if ($vsprest > $vspmax2) $vsp = ceil($vsp + $vspmax2); //auf Euro aufrunden else $vsp = ceil($vsp + $vsprest); //auf Euro aufrunden } else $vsp = ceil($vsp + $vsprest); //auf Euro aufrunden } else $vsp = ceil($vspo); // auf Euro aufrunden } function mst5_6() { // Lohnsteuer fuer die Steuerklassen V und VI (§ 39b Abs. 2 Satz 8 EStG) PAP Seite 18 global $zx, $x, $st; $zzx = $x; if ($zzx > 25812) { $zx = 25812; up5_6(); $st = floor($st + ($zzx - 25812) * 0.42); } else { $zx = $zzx; up5_6(); if ($zzx > 9144) { $vergl = $st; $zx = 9144; up5_6(); $hoch = floor($st + ($zzx - 9144) * 0.42); if ($hoch < $vergl) $st = $hoch; else $st = $vergl; } } } function up5_6() { global $x,$zx, $st; $x = $zx * 1.25; uptab05(); $st1 = $st; $x = $zx * 0.75; uptab05(); $st2 = $st; $diff = ($st1 - $st2) * 2; $mist = floor($zx * 0.15); if ($mist > $diff) $st = $mist; else $st = $diff; } function msolz() { // Solidaritätszuschlag, PAP S. 19 global $kztab, $jbmg, $jw, $anteil1, $solzlzz, $bk, $r; $solzfrei = 972 * $kztab; if ($jbmg > $solzfrei) { $solzj = $jbmg * 5.5 / 100; $solzmin = ($jbmg - $solzfrei) * 20 / 100; if ($solzmin < $solzj) $solzj = $solzmin; $jw = $solzj * 100; upanteil(); $solzlzz = $anteil1; } else $solzlzz = 0; if ($r > 0){ $jw = $jbmg * 100; upanteil(); $bk = $anteil1; } else $bk = 0; } function upanteil() { // Anteil der Jahresbeiträge für einen LZZ // PAP 2006, S. 20 // anteil1 abrunden, anteil2 aufrunden global $lzz, $jw, $anteil1, $anteil2; if ($lzz == 1) { $anteil1 = $jw; $anteil2 = $jw; } if ($lzz == 2) { $anteil1 = floor($jw / 12); $anteil2 = ceil($jw / 12); } if ($lzz == 3) { $anteil1 = floor($jw * 7 / 360); $anteil2 = ceil($jw * 7 / 360); } if ($lzz == 4) { $anteil1 = floor($jw / 360); $anteil2 = ceil($jw / 360); } } function msonst() { // Berechnung sonstiger Bezüge, PAP 2006, S. 21 global $ajahr,$alte, $anp, $alter1, $anteil1, $anteil2, $bks, $fvb, $fvb, $fvbz, $jfreib, $jhinzu, $jre4, $jvbez, $jw, $lzz, $r, $re4, $re4lzz, $re4lzzv, $solzs, $sonstb, $st, $sterbe, $sts, $vbez, $vbezb, $vbezm, $vbezs, $vbs, $vjahr, $vkapa, $vmt, $zmvb, $zre4, $zre4vp, $zvbez; if ($sonstb > 0) { $lzz = 1; $vbez = $jvbez; $re4 = $jre4; mre4lzz(); mre4lzz2(); mlstjahr(); $lst1 = $st * 100; $vbs = $vbs + $sterbe; //zugefügt, Fehler im PAP $vbez = $jvbez + $vbs ; $re4 = $jre4 + $sonstb; $vbezs = $vbezs + $sterbe; mre4lzz(); mre4lzz2(); mlstjahr(); $lst2 = $st * 100; $sts = $lst2 - $lst1; $solzs = floor($sts * 5.5 / 100); if ($r > 0) $bks = $sts; else $bks = 0; } else { $sts = 0; $solzs = 0; $bks = 0; } } function mre4lzz2() { global $re4lzz, $re4lzzv, $re4, $fvb, $alte, $jfreib, $jhinzu; $re4lzz = $re4 - $fvb - $alte - $jfreib + $jhinzu; $re4lzzv = $re4 - $fvb - $alte; mre4(); mztabfb(); } function mvmt() { // Berechnung der Vergütung für mehrjährige Tätigkeit // PAP 2006, S. 22 global $ajahr,$alte, $alte, $alter1, $anteil1, $anteil2, $bkv, $fvb, $fvb, $fvbz, $jfreib, $jhinzu, $jre4, $jvbez, $jw, $lzz, $r, $re4, $re4lzz, $re4lzzv, $solzv, $sonstb, $st, $sterbe, $stv, $vbez, $vbezb, $vbezm, $vbezs, $vbs, $vjahr, $vkapa, $vmt, $zmvb, $zre4, $zre4vp, $zvbez; if ($vmt + $vkapa > 0) { $lzz = 1; $vbez = $jvbez + $vbs; $re4 = $jre4 + $sonstb; mre4lzz(); mre4lzz2(); mlstjahr(); $lst1 = $st * 100; $vmt = $vmt + $vkapa; $vbezs = $vbezs + $vkapa; $vbez = $vbez + $vkapa; $re4 = $jre4 + $sonstb + $vmt; mre4lzz(); mre4lzz2(); $kennz = 1; $zre4vp1 = $zre4vp; mlstjahr(); $lst3 = $st * 100; $vbez = $vbez - $vkapa; $re4 = $jre4 + $sonstb; mre4lzz(); if ($re4 - $jfreib + $jhinzu < 0) { $re4 = $re4 - $jfreib + $jhinzu; $jfreib = 0; $jhinzu = 0; $re4 = ($re4 + $vmt) / 5; mre4lzz2(); mlstjahr(); $lst2 = $st * 100; $stv = $lst2 * 5; } else { $re4 = $re4 + $vmt / 5; mre4lzz2(); mlstjahr(); $lst2 = $st * 100; $stv = ($lst2 - $lst1) * 5; } $lst3 = $lst3 - $lst1; if ($lst3 < $stv) $stv = $lst3; $solzv = floor($stv * 5.5 / 100); if ($r > 0) $bkv = $stv; else $bkv = 0; } else { $stv = 0; $solzv = 0; $bkv = 0; } } function uptab05() { //Tarifliche Einkommensteuer, PAP 2006, S. 23 global $x, $st, $kztab; if ($x < 7665) $st = 0; else { if ($x < 12740) { $y = ($x - 7664) / 10000; $rw = $y * 883.74; $rw = $rw + 1500; $st = floor($rw * $y); } else { if ($x < 52152) { $y = ($x - 12739) / 10000; $rw = $y * 228.74; $rw = $rw + 2397; $rw = $rw * $y; $st = floor($rw + 989); } else $st = floor($x * 0.42 - 7914); } } $st = $st * $kztab; } //------------------------------- Parameterübergabe ----------------------- function jahranteil() { // Berechnung Jahreslohn aus LZZ-Lohn // (nicht im PAP enthalten) // für Berechnung sonstige bzw. mehrjährige Bezüge notwendig. global $lzz, $jw, $anteil1; if ($lzz == 1) $anteil1 = $jw; if ($lzz == 2) $anteil1 = $jw * 12; if ($lzz == 3) $anteil1 = $jw * 360 / 7; if ($lzz == 4) $anteil1 = $jw * 360; } $ajahr = $_POST['ajahr']; if($ajahr>2004) $alter1=1; $stkl = $_POST['stkl']; $zkf = $_POST['zkf']; $land = $_POST['bundesland']; if($land < 3) $kist = 8; else $kist = 9; $r = $_POST['r']; $krv = $_POST['krv']; $lzz = $_POST['lzz']; $re4 = str_replace(",",".",($_POST['re4']))*100; $re4ret = $re4; $jw = $re4; jahranteil(); $jre4 = $anteil1; $sonstb = str_replace(",",".",($_POST['sonstb']))*100; $jsonstb = ($_POST['jsonstb'])*100; $vmt = ($_POST['vmt'])*100; $jfreib = ($_POST['jfreib'])*100; $jw = $jfreib; upanteil(); $wfundf = $anteil1; $jhinzu = ($_POST['jhinzu'])*100; $jw = $jhinzu; upanteil(); $hinzur = $anteil1; $vbez = str_replace(",",".",($_POST['vbez']))*100; $zmvb = $_POST['zmvb']; if($lzz==1) $jvbez = $vbez; if($lzz==2) $jvbez = $vbez * 12; $vbezs = str_replace(",",".",($_POST['vbezs']))*100; $sterbe = str_replace(",",".",($_POST['sterbe']))*100; $vkapa = ($_POST['vkapa'])*100; $vjahr = $_POST['vjahr']; $vbezm = str_replace(",",".",($_POST['vbezm']))*100; $re4soz = ($jre4 + $sonstb + $jsonstb)/100; $lzzsoz = $lzz; $brutto = komma(($re4+$sonstb+$vmt+$vkapa)/100); lst2006(); //Berechnung // ------------------ Ausgabe ------------------------------ function komma($wert) { $laenge = strlen($wert); $pos = strrpos($wert,"."); if($pos == false) $wert = $wert.".00"; elseif ($laenge - $pos == 2) $wert = $wert."0"; return $wert; } echo "
"; echo "
"; //print_r($_POST); // zur überprüfung der übergebenen Parameter $steuer = komma(floor($lstlzz+$stv+$sts)/100); $soli = komma(floor($solzlzz+$solzs+$solzv)/100); $kirche = komma(floor(($bk+$bkv+$bks)*$kist/100)/100); $stges = $steuer+$soli+$kirche; echo "Bruttolohn: ".$brutto." Euro"; echo"
"; echo "
Lohnsteuer:   ".$steuer." Euro"; echo "
davon Steuer für laufenden Lohn ".komma($lstlzz/100)." Euro"; echo "
davon Steuer für Einmalbezug   ".komma($sts/100)." Euro"; echo "
davon Steuer für Vergütung mehrjäriger Tätigkeit   ".komma($stv/100)." Euro"; echo "

Solidaritätszuschlag: ".$soli." Euro"; echo "
".$kist."% Kirchensteuer: ".$kirche." Euro"; echo "
"; function soz() { global $re4, $jre4, $re4soz, $re4ret, $lzzsoz, $land, $re4, $sonstb, $jsonstb, $krv, $lzz, $kinderlos, $kvsatz, $anteil2, $jw, $rentewert, $rentewertag, $kvwert, $kvwertag, $pflegewert, $pflegewertag, $aloswert, $aloswertag; $lzz = $lzzsoz; if($krv==1) $re4soz=0; $pflege = 0.85; $pflege_ag = $pflege; if($land==13) { $pflege = 1.35; $pflege_ag = 0.35; } $pvzusatz = 0; if ($kinderlos == 1) $pvzusatz = 0.25; if($kvsatz<=10.4) $kvsatz=0; else $kvsatz = floor($kvsatz*10)/10; $bemesk= min(42750,$re4soz); if ($land==4||$land==8||$land==13||$land==14||$land==16) $bemesr = min(52800,$re4soz); else $bemesr = min(63000,$re4soz); if($bemesk-$jsonstb/100 <= 0) $bemesk=0; if($bemesk>=$re4soz){ $bemesk = $re4ret/100 + $sonstb/100; } else { $restsonstb = max($bemesk-($jre4 + $jsonstb)/100,0); $jw = min($jre4/100,$bemesk); upanteil(); $bemesk = $restsonstb + $anteil2; } if($bemesr-$jsonstb/100 <= 0) $bemesr=0; if($bemesr>=$re4soz) $bemesr = $re4ret/100 + $sonstb/100; else { $restsonstb = max($bemesr-($jre4 + $jsonstb)/100,0); $jw = min($jre4/100,$bemesr); upanteil(); $bemesr = $restsonstb + $anteil2; } if($re4soz<=0) {$bemesk=0;$bemesr=0;} $rente = 9.75; $alos = 3.25; $kzahn = 0.9; if ($kvsatz==0) $bemesk=0; $rentewert=round($bemesr*$rente)/100; $rentewertag=$rentewert; $kvwert=round($bemesk*$kvsatz/2 + $bemesk*$kzahn)/100; $kvwertag=round($bemesk*$kvsatz/2)/100; $pflegewert=round($bemesk*$pflege + $bemesk*$pvzusatz)/100; $pflegewertag=round($bemesk*$pflege_ag)/100; $aloswert=round($bemesr*$alos)/100; $aloswertag=$aloswert; } //--------------- Auswertung und Ausgabe -------------------- $kinderlos = $_POST['kinderlos']; echo "
"; $kvsatz = str_replace(",",".",$_POST['kvsatz']); // print_r($_POST); soz(); if($re4soz>0) { echo "
"; echo "Arbeitnehmeranteil Sozialversicherung:
"; echo "Krankenversicherung: ".komma($kvwert)." Euro
"; echo "Pflegeversicherung: ".komma($pflegewert)." Euro
"; echo "Rentenversicherung: ".komma($rentewert)." Euro
"; echo "Arbeitslosenversicherung: ".komma($aloswert)." Euro
"; echo "
"; echo"
"; echo "
"; echo "Arbeitgeberanteil Sozialversicherung:
"; echo "Krankenversicherung: ".komma($kvwertag)." Euro
"; echo "Pflegeversicherung: ".komma($pflegewertag)." Euro
"; echo "Rentenversicherung: ".komma($rentewertag)." Euro
"; echo "Arbeitslosenversicherung: ".komma($aloswertag)." Euro
"; echo "
"; } echo "
"; echo "
"; echo "Summe der Steuern: ".komma($stges)." Euro"; $sozges = komma($kvwert+$pflegewert+$rentewert+$aloswert); echo"
Summe Sozialversicherung: ".komma($sozges)." Euro"; $netto = komma($brutto-($stges+$sozges)); echo "
Nettoverdienst: ".$netto." Euro"; echo "
"; echo "

zurück"; echo ""; // diese Statuszeile kann man dann löschen ?>