File:Arbeitsentgelt SV LST Anteile Single 2015 bis 8000 AG brutto normiert.svg

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search

Original file (SVG file, nominally 1,600 × 800 pixels, file size: 349 KB)

Captions

Captions

Add a one-line explanation of what this file represents

Summary

[edit]
Description Prozentuale Anteile von Sozialversicherung und Lohnsteuer 2015 in Abhängigkeit vom Bruttoarbeitsentgelt (Deutschland) normiert auf Arbeitgeberbrutto als 100 Prozent.
Date
Source Own work
Author Udo.Brechtel
#-------------------------------------------------------------
# Script for gnuplot 4.6, Lizenz: CC-BY-SA-4.0 by Udo Brechtel
#-------------------------------------------------------------
reset
#-------------------------------------------------------------
#-------------------------------------------------------------
# Allgemeine Variablen:
#-------------------------------------------------------------
#Diagrammtitel-/Achsenbeschriftung:
lblTITEL  = "Arbeitsentgelt, Sozialversicherung und Lohnsteuer 2015 in Deutschland";
lblYACHSE = "Anteile"
lblXACHSE = "Bruttoarbeitsentgelt in Euro/Monat"
#Weitere Labels:
lbl201 = "Minijob";
lbl202 = "Midijob (Gleitzone)";
lbl203 = "Normalbeschäftigung";
lblLizenz = "CC-BY-SA 4.0, Udo Brechtel"; #Label 100

# Canvas (px):
xsize = 1600;     ysize = 800;
xleftmargin = 10; ytopmargin  = 5;
 
#x-/y-Achse:
xmin = 0;       xmax = 8000;     dx = 500; #xmax/10; # x = monatliches Bruttoarbeitsentgelt
ymin = 0;       ymax = 105;       dy = 10;

#Kennungen und Grenzen Arbeitsentgelt (AE) Minijob, Midijob
maxAEmini = 450; maxAEmidi = 850;
x1 = xmini = maxAEmini;
x2 = maxAEmidi;


SAMPLES = 2001;

#Ausgabedateien:
xmin_text = sprintf("%g",xmin);
xmax_text = sprintf("%g",xmax);
path = "svg2015/";
fn1           = path."SV_LST_2015_Euro_".xmin_text."_".xmax_text.".svg";
fn2_einzeln   = path."Arbeitsentgelt_SV_LST_Anteile_Single_2015_bis_".xmax_text."_AG_brutto_normiert.svg";
fn2_splitting = path."Arbeitsentgelt_SV_LST_Anteile_Paar_2015_bis_".xmax_text."_AG_brutto_normiert.svg";
fn3           = path."ESt_Tarif_2015_Betrag_".xmin_text."_".xmax_text.".svg";
fn4           = path."ESt_Tarif_2015_Satz_".xmin_text."_".xmax_text.".svg";
fn5           = path."Vorsorgepauschale_2015.svg";

path_dat = "dat/";
fn_dat_2_einzeln   = path_dat."prozentwerte_einzeln.dat";
fn_dat_2_splitting = path_dat."prozentwerte_splitting.dat";

#-------------------------------------------------------------
# Variablen/Funktionen 2015
#-----------------------------------------------------------------
#Math
Abrunden(zahl, kommastellen) = floor(zahl * 10 ** kommastellen) - floor(zahl);
Jahr = 2015;

KIND = 0; # 0 oder 1; entspricht nein oder ja
VERH = 1; # 0 oder 1; entspricht nein oder ja

lblUNTERTITEL(vh) = (vh==0) ? "Arbeitnehmer, Steuerklasse I oder IV" \
                            : "Arbeitnehmer, Steuerklasse III";

#.......................................................
#Sozialversicherung 2015:
#.......................................................
#Gesamtbeitragssatz (Prozent):
kv  = 0.146 ;   #Krankenversicherung 2015
pv  = 0.0235;   #Pflegeversicherung 2015
pvz = (KIND == 0) ? 0.0025 : 0.0; #Zuschlag Kinderlose 
rv  = 0.187 ;   #Rentenversicherung 2015
alv = 0.03  ;   #Arbeitslosenversicherung

kvz = 0.009 ;   #Zusatzbeitrag Durchschnitt 2015
kve = 0.07  ;   #erm. Satz für Vorsorgepauschale (VSP)

#Beitragsbemessungsgrenze (BBG) 2015:
BBG_KV = 4125; #monatlich
BBG_RV = 6050; #monatlich, West

KV_AG(x) = (x > BBG_KV) ? BBG_KV *  kv/2  : x *  kv/2;
KV_AN(x) = (x > BBG_KV) ? BBG_KV * (kv/2) : x * (kv/2);
PV_AG(x) = (x > BBG_KV) ? BBG_KV *  pv/2  : x *  pv/2;
PV_AN(x) = (x > BBG_KV) ? BBG_KV * (pv/2) : x * (pv/2);

RV_AG(x)  = (x > BBG_RV) ? BBG_RV * rv/2   : x * rv/2;
RV_AN(x)  = (x > BBG_RV) ? BBG_RV * rv/2   : x * rv/2;
ALV_AG(x) = (x > BBG_RV) ? BBG_RV * alv/2 : x * alv/2;
ALV_AN(x) = (x > BBG_RV) ? BBG_RV * alv/2 : x * alv/2;

KV_ANerm(x) = (x > BBG_KV) ? BBG_KV * (kve + kvz) : x * (kve + kvz); #für VSP

#Gesamtbeiträge:
KVPV(x)   = KV_AG(x) + KV_AN(x) + PV_AG(x) + PV_AN(x);
RVALV(x)  = RV_AG(x) + RV_AN(x) + ALV_AG(x) + ALV_AN(x);
#Zusatzbeitrag AN:
KVZPVZ(x) = (x > BBG_KV) ? BBG_KV * (kvz + pvz) : x * (kvz + pvz);
print("----------------------------------------------------------------");
sv_ges_ag = (kv + pv + rv + alv) / 2;            print(sv_ges_ag*100.0);
sv_ges_an = sv_ges_ag + (kvz + pvz*(KIND==0));   print(sv_ges_an*100.0);
sv_ges    = sv_ges_ag + sv_ges_an;               print(sv_ges   *100.0);
print("----------------------------------------------------------------");

#Gleitzone (Midi) 2015
F = 0.7585;
GE(x) = (x > 450 && x <= 850) ? 450 * F + (2.125 - 1.125 * F) * (x - 450) : -10;
sv_midi_ag  = (kv + pv + rv + alv) / 2;              print(sv_midi_ag*100.0);
sv_midi_ges = (kv + pv + rv + alv + kvz + pvz);      print(sv_midi_ges*100.0);
print("----------------------------------------------------------------");

#SV Minijob privat:
kv_mini_priv_ag = 0.05; rv_mini_priv_ag = 0.05; st_priv_ag = 0.02;
                        rv_mini_priv_an = 0.137;
               
#SV Minijob gewerblich:
kv_mini_ag = 0.13; rv_mini_ag = 0.15;
                   rv_mini_an = 0.037;

sv_mini_ag =  kv_mini_ag + rv_mini_ag;  print(sv_mini_ag *100.0);
sv_mini_an =               rv_mini_an;  print(sv_mini_an *100.0);
sv_mini_ges = sv_mini_ag + sv_mini_an;  print(sv_mini_ges*100.0);
print("----------------------------------------------------------------");

#Umlagen Arbeitgeber (Prozent):
u1_mini = 0.007 ; u2_mini = 0.0024; u3_mini = 0.0015;
u1_midi = 0.02; u2_midi = 0.0038; u3_midi = 0.0015; # U1,U2 = #(Beispiel DAK Gesundheit 2015)
uv_mini = 0.016;

#Gesetzl. Unfallversicherung 
#(Beispiel BG Energie Textil Elektro Medienerzeugnisse, BG ETEM, 2015)
uv_gkl  = 2.7;             #Gefahrklasse (mittel)
uv_bfs  = 0.00318;         #Beitragsfuß bzw. Umlageziffer
uv      = uv_gkl * uv_bfs;
UV_JAVH = 84000;           #Jahresarbeitsverdienst-Höchstgrenze

UV_AG(x) = (x > UV_JAVH/12) ? uv * UV_JAVH/12 : uv * x;

#Umlagen gesamt AG
#UML_AG(x) = (x > maxAEmidi) ? x * (u1_midi + u2_midi + u3_midi)          + UV_AG(x) \
          #: (x > maxAEmini) ? x * (u1_midi + u2_midi + u3_midi)          + UV_AG(x) \
          #:                   x * (u1_mini + u2_mini + u3_mini + uv_mini);
UML_AG(x) = (x > maxAEmidi) ? x * (u1_midi + u2_midi + u3_midi)           \
          : (x > maxAEmini) ? x * (u1_midi + u2_midi + u3_midi)           \
          :  0 ;

#Bruttoarbeitsentgelt:
BAE(x) = x;
#SV-Beitrag monatlich:
SVB_ges(x) = (x > maxAEmidi) ? KVPV(x) + KVZPVZ(x) + RVALV(x) \
           : (x > maxAEmini) ? GE(x) * sv_midi_ges         \
           :                   x     * sv_mini_ges;
SVB_AG(x)  = (x > maxAEmidi) ? KVPV(x) / 2 + RVALV(x) / 2  \
           : (x > maxAEmini) ? x     * sv_midi_ag     \
           :                   x     * sv_mini_ag; #+ Umlagen + UV
SVB_AN(x)  = SVB_ges(x) - SVB_AG(x); 

print("----------------------------------------------------------------");
TESTBRUTTO=2500;
print(SVB_AG(TESTBRUTTO)/TESTBRUTTO);     
print(SVB_AN(TESTBRUTTO)/TESTBRUTTO);     
print(SVB_ges(TESTBRUTTO)/TESTBRUTTO);
print("----------------------------------------------------------------");
print(kv);print(pv);print(rv);print(alv);
print(kvz);print(pvz);
print("----------------------------------------------------------------");

#SV-Beitragssätze:
svbs_ges(x) = SVB_ges(x) / x;
svbs_an(x) = SVB_AN(x) / x;
svbs_ag(x) = SVB_AG(x) / x;

#-----------------------------------------------------------------
#Lohn-/Einkommensteuer 2015
#-----------------------------------------------------------------
# Freibeträge:
#-----------------------------------------------------------------
ANP    = 1000; #Arbeitnehmerpauschale (Werbungskosten)
SAP    =   36; #Sonderausgabenpauschale
#Vorsorgepauschale (abhängig vom Brutto) 2015:
## liefert VSP(x) jährlich
## mit x = Brutto monatlich
a(Jahr) = (20 + 4 * (Jahr - 2005)) / 100.0;
VSP1(x)  =  12 * RV_AN(x) * a(Jahr);
  VHB(vh) = (vh==0) ? 1900 : 3000;
  VSP2(x,vh) = (12*x*0.12 > VHB(vh)) ? VHB(vh) : 12*x*0.12; #mindestens
  MVSP(x) =  12 * (KV_ANerm(x) + PV_AN(x));
VSP3(x,vh)  = (VSP2(x,vh) > MVSP(x)) ? VSP2(x,vh) : MVSP(x);
VSP(x,vh)  = ceil(VSP1(x) + VSP3(x,vh)); # aufgerundet, pro Jahr!
#-----------------------------------------------------------------
# Einkommensteuer-Tarif
#-----------------------------------------------------------------
EST_2015(zvE) = (zvE > 250730) ? zvE * 0.45 - 15761 \
              : (zvE >  52881) ? zvE * 0.42 - 8239 \
              : (zvE >  13469) ? (228.74e-8 * (zvE - 13469) + 0.2397) * (zvE - 13469) + 971 \
              : (zvE >   8354) ? (974.58e-8 * (zvE -  8354) + 0.1400) * (zvE -  8354) \
              : 0;
zvE(x,vh) = 12.0*x - VSP(x,vh) - ANP - SAP;
                                  #Grundtarif               #Splittingtarif
LSTmonat(x, vh) = (vh == 0) ? EST_2015(zvE(x,vh)) / 12.0 : 2 * EST_2015(zvE(x,vh) / 2) / 12.0;

#-----------------------------------------------------------------
# Solidaritaetszuschlag
#-----------------------------------------------------------------
SOLZgrenz(vh)  = (vh == 0) ? 972 : 1944;
SOLZ_1(STB)      = Abrunden(0.055 * STB, 2); #normal 5,5 % des Steuerbetrags
SOLZ_2(STB,vh) = (STB > SOLZgrenz(vh)) ? (STB - SOLZgrenz(vh)) * 0.2 : 0;  #max 20 % des Unterschiedes
SOLZ(STB, vh)  = (SOLZ_1(STB) > SOLZ_2(STB,vh)) ? SOLZ_2(STB,vh) : SOLZ_1(STB);

SOLZmonat(STB, vh) = SOLZ(STB, vh) / 12.0;

s_eff(x, vh) = LSTmonat(x, vh) * 100.0 / x;

LST_AG(x)   = (x > maxAEmini) ? 0.0 : x * 0.02; #Pauschalsteuer
s_eff_ag(x) = LST_AG(x) * 100.0 / x;

sg(zvE) = (zvE > 250730) ? 0.45 \
        : (zvE >  52881) ? 0.42 \
        : (zvE >  13469) ? 2 * 228.74e-8 * (zvE - 13469) + 0.2397 \
        : (zvE >   8354) ? 2 * 974.58e-8 * (zvE -  8354) + 0.1400 \
        : 0;
sg_eff(x, vh) = (vh==0) ? sg(zvE(x,vh)) * 100.0 : sg(zvE(x,vh)/2) * 100.0;
#------------------
# Summen:
#------------------

# AG-Brutto = 100%
# ohne gesetzliche Unfallversicherung
Brutto_AG3(x)      = Brutto_AG1(x) + LST_AG(x);
Brutto_AG2(x)      = Brutto_AG1(x) + UML_AG(x);
Brutto_AG1(x)      = BAE(x) + SVB_AG(x);
Brutto(x)          = BAE(x);
Netto_AN1(x)       = BAE(x) - SVB_AN(x);
Netto_AN2(x,vh)    = Netto_AN1(x) - LSTmonat(x,vh) - SOLZmonat(LSTmonat(x,vh), vh);

brutto_ag3(x)      = 100.0;
brutto_ag2(x)      = Brutto_AG2(x) * 100.0 / Brutto_AG3(x);
#brutto_ag3(x)      = 100.0;
brutto_ag1(x)      = Brutto_AG1(x) * 100.0 / Brutto_AG3(x);
brutto(x)          = Brutto(x)     * 100.0 / Brutto_AG3(x);
netto_an1(x)       = Netto_AN1(x)    * 100.0 / Brutto_AG3(x);
netto_an2(x,vh)    = Netto_AN2(x,vh) * 100.0 / Brutto_AG3(x);

#----------------------------------------------------------------------------
# Settings
#----------------------------------------------------------------------------
Arial_8       = "Arial,  8";
Arial_10      = "Arial, 10";
Arial_12      = "Arial, 12";
Arial_Bold_10 = "Arial Bold, 10";
Arial_Bold_12 = "Arial Bold, 12";
Arial_Bold_14 = "Arial Bold, 14";
Arial_Bold_16 = "Arial Bold, 16";
Arial_Bold_18 = "Arial Bold, 18";
Arial_Bold_24 = "Arial Bold, 24";
 
#Linienstyles
set style line 12999 lt 1 lw 1.0 lc rgb "black";

set style line 13000 lt 1 lw 3.5 lc rgb "black";
set style line 13001 lt 1 lw 1.0 lc rgb "red";
set style line 13002 lt 1 lw 1.0 lc rgb "yellow";
set style line 13003 lt 1 lw 1.0 lc rgb "green";
set style line 13004 lt 1 lw 1.0 lc rgb "#0F0" #"blue";
set style line 130044 lt 1 lw 1.0 lc rgb "#020" #"dark-blue";
set style line 13005 lt 1 lw 0.7 lc rgb "black";
set style line 13006 lt 1 lw 1.0 lc rgb "violet-blue";
set style line 13011 lt 4 lw 2.5 lc rgb "red";
set style line 13012 lt 1 lw 6 lc rgb "red";

#-----------------------------------------------------------------
# Beginn Script zum Plotten
#-----------------------------------------------------------------
set encoding utf8;
set terminal svg size xsize,ysize font Arial_12 dashed linewidth 1.0 background rgb "white"

set noborder;
set zeroaxis;
 
set sample SAMPLES;
 
set lmargin xleftmargin
set tmargin ytopmargin
set bmargin ytopmargin
 
#Diagrammtitel
set title lblTITEL offset 0,1 font Arial_Bold_24
set label 1 at xmax/2,ymax center lblUNTERTITEL(VERH) font Arial_Bold_18;
 
#Legende Position/Breite:
xkey = xmax*2/3; ykey = 45; wkey = 1;
#Legende (key) setzen
set key at xkey,ykey left Left spacing 1.2 width wkey height 0.75 box 1
set key opaque reverse   vertical maxrows 8
set key font Arial_Bold_14
 
#y-Achse:
set yzeroaxis ls 12999;
set yrange [ymin:ymax];
set format y "%.0f %%";
set ytics out nomirror ymin,dy font Arial_Bold_16;
set ytics add ("0" 0);
 
#x-Achse:
set xzeroaxis ls 12999;
set xrange [xmin:xmax];
set format x "%g";
set xtics out nomirror xmin,dx font Arial_Bold_16;

set xlabel lblXACHSE offset 2,0 font Arial_Bold_18;

#Labels:
x201 = (xmin + maxAEmini) / 2.0;       y201 = 45;
x202 = (maxAEmini + maxAEmidi) / 2.0;  y202 = 45;
x203 =  xmax/3;                 y203 = 35;
set label 201 at x201,y201 rotate center lbl201 font Arial_Bold_16;
set label 202 at x202,y202 rotate center lbl202 font Arial_Bold_16;
set label 203 at x203,y203   right    lbl203 font Arial_Bold_18;
set label 100 at -xmax*35/1000,-10    left lblLizenz font Arial_10;
set label 101 at -xmax*35/1000,ymax+6 left lblYACHSE font Arial_Bold_18;

#Gitternetz:
set grid xtics mxtics ytics mytics lw 0.3, lw 0.1;
 
 
#Fläche
set style fill solid 0.25 border lc rgb "black"

#-----------------------------------------------------------------


#Titel, Legendetext
t1 = "Arbeitgeberanteil SV";
t2 = "Bruttoarbeitsentgelt";
t3 = "Arbeitnehmeranteil SV";
t4 = "Auszahlung netto";
t4a = "Auszahlung netto + ALG II";
t5 = "Lohnsteuer + Solidaritätszuschlag"
tps = "Pauschalsteuer"
#tuv = "Unfallversicherung* + Umlagen"

#-----------------------------------------------------------------------
# Plotting
#-----------------------------------------------------------------------
ymini = (BAE(xmini) + SVB_AG(xmini) + UML_AG(xmini))*100.0/xmini;
#print(ymini);

#------------------------------------------------------------------------------
# print data files
#------------------------------------------------------------------------------
set print fn_dat_2_einzeln;
VERH = 0;
print "b; bag3; bag2; bag1; b; nan1; nan2; brel";
do for [i = 1:SAMPLES] {b = i * xmax/SAMPLES; bag3 = brutto_ag3(b); bag2 = brutto_ag2(b); bag1 = brutto_ag1(b); nan1 = netto_an1(b); nan2 = netto_an2(b,VERH); brel = brutto(b);
  print b, "; ", bag3, "; ", bag2, "; ", bag1, "; ", b, "; ", nan1, "; ", nan2, "; ", brel; 
}
unset print;
set print fn_dat_2_splitting;
VERH = 1;
print "b; bag3; bag2; bag1; b; nan1; nan2; brel";
do for [i = 1:SAMPLES] {b = i * xmax/SAMPLES; bag3 = brutto_ag3(b); bag2 = brutto_ag2(b); bag1 = brutto_ag1(b); nan1 = netto_an1(b); nan2 = netto_an2(b,VERH); brel = brutto(b);
  print b, "; ", bag3, "; ", bag2, "; ", bag1, "; ", b, "; ", nan1, "; ", nan2, "; ", brel;
}
unset print;

#--------------------------------------------------------------------------
# Diagramm Anteile in Prozent plotten
#--------------------------------------------------------------------------    
#y-Achse (Anteile in Prozent):
# Trennlinien Minijob/Midijob (rot):

set arrow 901 from x1,ymin to x1,ymax nohead filled ls 13011;
set arrow 902 from x2,ymin to x2,ymax nohead filled ls 13011;

# Plot Einzeln StKl I oder IV
VERH = 0;
set label 1 at xmax/2,ymax+3 center lblUNTERTITEL(VERH) font Arial_Bold_18;
set output fn2_einzeln;
print(fn2_einzeln);

plot brutto_ag2(x) / (x < 450)  with filledcurve y1=100 ls 130044 t tps, \
     brutto_ag3(x)                                      ls 13005 notitle, \
     brutto_ag1(x)                                      ls 13005 notitle, \
     fn_dat_2_splitting u 1:4:8 with filledcurve        ls 13001 t t1, \
     brutto(x)                                          ls 13000 t t2, \
     fn_dat_2_einzeln u 1:6:8   with filledcurve        ls 13002 t t3, \
     fn_dat_2_einzeln u 1:6:7   with filledcurve        ls 13004 t t5, \
     netto_an2(x,VERH)          with filledcurve x1     ls 13003 t t4, \
     netto_an2(x,VERH)                                  ls 13005 notitle, \
     netto_an1(x)                                       ls 13005 notitle;

#plot netto_an1(x), brutto(x)    with filledcurve  ls 13005 t "xyz";
     
        
unset output;

# Plot Splitting StKl III
VERH = 1;
set label 1 at xmax/2,ymax+3 center lblUNTERTITEL(VERH) font Arial_Bold_18;
set output fn2_splitting;
print(fn2_splitting);

plot brutto_ag2(x) / (x < 450) with filledcurve y1=100 ls 130044 t tps, \
     brutto_ag3(x)                                     ls 13005 notitle, \
     brutto_ag1(x)                                     ls 13005 notitle, \
     fn_dat_2_splitting u 1:4:8   with filledcurve     ls 13001 t t1, \
     brutto(x)                                         ls 13000 t t2, \
     fn_dat_2_splitting u 1:6:8   with filledcurve     ls 13002 t t3, \
     fn_dat_2_splitting u 1:6:7  with filledcurve      ls 13004 t t5, \
     netto_an2(x,VERH)         with filledcurve x1     ls 13003 t t4, \
     netto_an2(x,VERH)                                 ls 13005 notitle, \
     netto_an1(x)                                      ls 13005 notitle;
        
unset output;

# END

Licensing

[edit]
I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current20:04, 19 March 2021Thumbnail for version as of 20:04, 19 March 20211,600 × 800 (349 KB)Udo.Brechtel (talk | contribs){{Information |Description=Prozentuale Anteile von Sozialversicherung und Lohnsteuer 2015 in Abhängigkeit vom Bruttoarbeitsentgelt (Deutschland) normiert auf Arbeitgeberbrutto als 100 Prozent. |Source={{own}} |Date=2021-03-19 |Author= Udo.Brechtel |Permission= |other_versions= }} <source lang="gnuplot"> #------------------------------------------------------------- # Script for gnuplot 4.6, Lizenz: CC-BY-SA-4.0 by Udo Brechtel #-------------------------------------------...

There are no pages that use this file.

Metadata