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;
$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)
uptab07();
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.28 * $zre4vp;
$vsp1 = $vsp1 * 0.0995;
}
$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 = floor($vspo); // auf Euro abrunden
}
else
umvsp();
}
function umvsp() { //Vorsorgepauschale, PAP 2007, 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 = floor(($vsprest - $vspmax1)*100) / 200; //auf Cent aufrunden
if ($vsprest > $vspmax2)
$vsp = floor($vsp + $vspmax2); //auf Euro abrunden
else
$vsp = floor($vsp + $vsprest); //auf Euro abrunden
}
else
$vsp = floor($vsp + $vsprest); //auf Euro abrunden
}
else
$vsp = floor($vspo); // auf Euro abfrunden
}
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();
if ($zzx > 200000){
$st = $st + (200000 - 25812) * 0.42;
$st = floor($st + ($zzx - 200000) * 0.45);
}
else
$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;
uptab07();
$st1 = $st;
$x = $zx * 0.75;
uptab07();
$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 2007, 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 2007, 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 2007, S. 22
global $ajahr,$alte, $alte, $alter1, $anteil1, $anteil2, $bkv, $fvb, $fvb, $fvbz, $jfreib, $jhinzu, $jre4, $jvbez, $jw, $kennz, $lzz, $r, $re4, $re4lzz, $re4lzzv, $solzv, $sonstb, $st, $sterbe, $stv, $vbez, $vbezb, $vbezm, $vbezs, $vbs, $vjahr, $vkapa, $vmt, $zmvb, $zre4, $zre4vp, $zre4vp1, $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;
$vbezs = $vbezs - $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 uptab07() { //Tarifliche Einkommensteuer, PAP 2007, 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 {
if( $x < 250001)
$st = floor($x * 0.42 - 7914);
else
$st = floor($x * 0.45 - 15414);
}
}
}
$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, $anteil2;
if ($lzz == 1){
$anteil1 = $jw;
$anteil2 = $anteil1;
}
if ($lzz == 2){
$anteil1 = $jw * 12;
$anteil2 = $jw/12;
}
if ($lzz == 3){
$anteil1 = $jw * 360 / 7;
$anteil2 = $jw * 7/360;
}
if ($lzz == 4){
$anteil1 = $jw * 360;
$anteil2 = $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);
lst2007(); //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 "
Ergebnis PHP-Gehaltsrecher"; 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 " |
";
if($pkv>0)
echo "Anteil private Krankenversicherung: ".komma($kvwert)." Euro "; else { echo "Krankenversicherung: ".komma($kvwert)." Euro "; echo "Pflegeversicherung: ".komma($pflegewert)." Euro "; } echo "Rentenversicherung: ".komma($rentewert)." Euro "; echo "Arbeitslosenversicherung: ".komma($aloswert)." Euro "; 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 "Arbeitgeberanteil: "; if($pkv>0) echo "Zuschuss zur privaten Krankenversicherung: ".komma($kvwertag)." Euro "; if($kvsatz>0) { echo "Krankenversicherung: ".komma($kvwertag)." Euro "; echo "Pflegeversicherung: ".komma($pflegewertag)." Euro "; } if($re4soz>0){ echo "Rentenversicherung: ".komma($rentewertag)." Euro "; echo "Arbeitslosenversicherung: ".komma($aloswertag)." Euro "; } if($u1>0) { $jw = 4275000; jahranteil(); $umlwert=min($re4ret,$anteil2); echo "Umlage U1: ".komma(floor($umlwert*$u1)/100)." Euro "; echo "Umlage U2: ".komma(floor($umlwert*$u2)/100)." Euro "; } echo " "; if($pkv>0) $pflegewert=0; $agsumme=$kvwertag+$pflegewertag+$aloswertag+$rentewertag+$brutto+floor($umlwert*$u1)/100+ floor($umlwert*$u2)/100; echo "Arbeitgeber Gesamtbelastung: ".komma($agsumme)." Euro "; echo " |
zurück"; echo ""; // diese Statuszeile kann man dann löschen ?>