Neue Grundsteuer-Rechner

Berechnung der neuen Grundsteuer ab 2022 in Deutschland

z.B. 2022, 2029


Berechnung des Grundsteuerwerts im Ertragswertverfahren (nach Bundesmodell)

Grundsteuerwert

Art

Bodenrichtwert

Liegenschaftszinssatz

Ermittlung des kapitalisierten Reinertrags
Gebäude
Restnutzungsdauer

Baujahr

Alter des Gebäudes im Hauptfeststellungszeitpunkt

Wirtschaftliche Gesamtnutzungsdauer gemäß

Anlage 38 zum BewG

80 Jahre

- Alter des Gebäudes im Hauptfeststellungszeitpunkt

Restnutzungsdauer im Hauptfeststellungszeitpunkt

Rohertrag gemäß
Anlage 39 zum BewG

für das

mit dem Baujahr

im Land

Wohnung mit einer Wohnfläche von 100 m² und mehr

Gesamte Wohn-/Nutzfläche

Monatliche Nettokaltmiete

X angepasste monatliche Nettokaltmiete

Monatliche Nettokaltmiete für die Wohnung

Monatliche Nettokaltmiete für das Gebäude

X 12 ergibt den jährlichen Rohertrag

Garagenstellplätze (Einzelgarage/Tiefgarage) gemäß
Anlage 39 zum BewG

Anzahl Garagenstellplätze

Monatliche Nettokaltmiete

X angepasste monatliche Nettokaltmiete

Monatliche Nettokaltmiete für die Garagenstellplätze

X 12 ergibt den jährlichen Rohertrag

Rohertrag des Grundstücks

Jährlicher Rohertrag der Wohnungen

+ jährlicher Rohertrag der Garagenstellplätze

Rohertrag des Grundstücks

Reinertrag des Grundstücks

Rohertrag des Grundstücks

- Bewirtschaftungskosten gemäß
Anlage 40 zum BewG

Reinertrag des Grundstücks

Kapitalisierter Reinertrag des Grundstücks

Reinertrag des Grundstücks

X Vervielfältiger gemäß

für den Liegenschaftszinssatz von

für die Restnutzungsdauer von

Kapitalisierter Reinertrag des Grundstücks

Ermittlung des abgezinsten Bodenwerts
Umrechnungskoeffizient wegen
abweichender Grundstücksgröße gemäß
Anlage 36 zum BewG
bei einer maßgebenden

Grundstücksgröße >=

Abzinsungsfaktor gemäß Anlage 41 zum BewG
Anlage 41 zum BewG

bei einem Liegenschaftszinssatz von

und einer Restnutzungsdauer von

Fläche

X Bodenrichtwert

X Umrechnungskoeffizient

Bodenwert vor Abzinsung

X Abzinsungsfaktor

abgezinster Bodenwert

Ermittlung des Grundsteuerwerts
Grundsteuerwert im Ertragswertverfahren

Kapitalisierter Reinertrag des Grundstücks

+ abgezinster Bodenwert

Grundsteuerwert im Ertragswertverfahren

Prüfung des Mindestwerts

Bodenwert vor Abzinsung

davon 75%

Grundsteuerwert im Ertragswertverfahren

maßgeblich ist der höhere der beiden Werte

Grundsteuerwert, abgerundet auf volle 100 €

Berechnung des Steuermessbetrages

Grundsteuerwert

X Steuermesszahl

Steuermessbetrag

Test NKM

packages = ["pandas"] import pandas as pd from pyodide.http import open_url #from pyodide import create_proxy from pyodide.ffi import create_proxy import asyncio import js from js import console from js import document pyscript.write("Hinweis","Nicht benötigte Felder bitte als Wert Null eintragen!") def button_click(event): #pd.set_option('display.max_rows', None) #url_content = open_url("http://majo2000.bplaced.net/python/gewst ges.csv") url_content = open_url("gewst ges.csv") df = pd.read_csv(url_content) #print(df) GEM = Element('gemeinde').element.value df = df[(df.Gemeinde == GEM) & (df.Jahr == 2021)] #print(df) #HS = df.loc[df.index[0], 'GrundsteuerB'] /100 HS = int(df.at[df.index[0], 'GrundsteuerB']) /100 #MNS = df.loc[df.index[0], 'Mietniveaustufe'] MNS = int(df.at[df.index[0], 'Mietniveaustufe']) #print(HS,MNS) BodenRW = int(Element('BRW').element.value) #print(BodenRW) dBRW = int(Element('dBRW').element.value) GRUNDFL = int(Element('GFL').element.value) WFL = int(Element('WFL').element.value) BL = (Element('select').element.value) #HS = int(Element('subject').element.value) / 100 #hebesatz Grundstuecksart = Element('Grdstart').element.value if BL == "Bayern": BodenRW = 1 else: BodenRW = int(Element('BRW').element.value) #Ermittlung Mietniveaustufe #MNS = int(Element('room').element.value) #MNS = int(Element('mns').element.value) if MNS == 1: MNSP = -0.225 elif MNS == 2: MNSP = -0.1 elif MNS == 3: MNSP = 0 elif MNS == 4: MNSP = 0.1 elif MNS == 5: MNSP = 0.2 elif MNS > 5: MNSP = 0.325 GAR = int(Element('GAR').element.value) #monatliche Nettokaltmiete nach Anlage 39 I zu § 254 BewG #if BL == "Berlin": # mNKM = 6.49 #elif BL == "Brandenburg" and Grundstuecksart == "EFH" and WFL >100: # mNKM = 10.09 #elif BL == "Nordrhein-Westfalen": # mNKM = 6.12 # elif BL == "Sachsen": # mNKM = 5.37 # elif BL == "Sachsen-Anhalt": # mNKM = 5.09 # else: # mNKM = 1 #url_content2 = open_url("http://majo2000.bplaced.net/python/NKM.csv") url_content2 = open_url("NKM.csv") dfNKM = pd.read_csv(url_content2) #print(dfNKM) ART1 = Element('Grdstart').element.value if ART1 == "EFH": ART = "Einfamilienhaus" elif ART1 == "ZFH": ART = "Zweifamilienhaus" else: ART = "Mietwohngrundstück" BL = (Element('select').element.value) dfNKM = dfNKM[(dfNKM.Gebäudeart == ART) & (dfNKM.Land == BL)] #print(dfNKM) bj = Element('bj').element.value WFL = Element('WFL').element.value #print(bj) #print(WFL) WFL = int(WFL) bj = int(bj) if WFL < 60: i = 0 elif ((WFL > 59) and (WFL < 100)): i = 1 else: i = 2 if bj < 1949: dfNKM = dfNKM.loc[dfNKM.index[i], 'bis 1948'] #io alleine elif ((bj > 1948) and (bj < 1979)): dfNKM = dfNKM.loc[dfNKM.index[i], 'bis 1978'] elif ((bj > 1978) and (bj < 1991)): dfNKM = dfNKM.loc[dfNKM.index[i], 'bis 1990'] elif ((bj > 1990) and (bj < 2000)): dfNKM = dfNKM.loc[dfNKM.index[i], 'bis 2000'] else: dfNKM = dfNKM.loc[dfNKM.index[i], 'ab 2001'] #io alleine document.getElementById("NKM_DF_ber").innerHTML = str(dfNKM) #print(dfNKM) mNKM = dfNKM #print(mNKM, dfNKM) #Rohertrag = (WFL * mNKM + int(Element('WFL').element.value) * mNKM * MNSP + GAR * 35 * MNSP) * 12 Rohertrag = round(WFL * round(mNKM*MNSP + mNKM,2),2) * 12 + (35 + 35 * MNSP) * GAR * 12 Rohertrag2 = f"{Rohertrag:02,.2f}" Alter = int(Element('FJ').element.value) - int(Element('bj').element.value) RND = max(80 - Alter, 24) BewFaktor = 0 #if Grundstuecksart == "EFH" or Grundstuecksart == "Zweifamilienhaus": if RND > 60: BewFaktor = 0.18 elif 40 <= RND <= 59: BewFaktor = 0.21 elif 20 <= RND <= 39: BewFaktor = 0.25 else: BewFaktor = 0.27 Bewirtschaftung = Rohertrag * BewFaktor Bewirtschaftung2 = f"{Bewirtschaftung:02,.2f}" Bodenwert = GRUNDFL * BodenRW * 1.0 #Umrechnungskoeffizient nach Anlage 36 BewG Bodenwert2 = f"{Bodenwert:02,.2f}" #Ermittlung Liegenschaftszinssatz nach § 256 BewG if Grundstuecksart == "EFH": LZ = 0.025 elif Grundstuecksart == "Wohneigentum" and BL != "Bayern": LZ = 0.03 elif Grundstuecksart == "Mietwohngrundstück bis 6 Wohnungen": LZ = 0.04 elif Grundstuecksart == "Mietwohngrundstück über Wohnungen": LZ = 0.045 elif BL == "Bayern": LZ = 0 else: LZ = 0.045 abzFaktor = 1 / (0.025 + 1) ** RND abzFaktor2 = round(abzFaktor, 4) abzBodenwert = Bodenwert * abzFaktor2 abzBodenwert2 = f"{abzBodenwert:02,.2f}" if BL == "Bayern": Reinertrag = GRUNDFL * 0.04 + (WFL * 0.5) *0.7 else: Reinertrag = Rohertrag - Bewirtschaftung Reinertrag2 = f"{Reinertrag:02,.2f}" if BL == "Bayern": VV = 1 else: VV = ((LZ + 1) ** RND - 1) / ((LZ + 1) ** RND * LZ) VV2 = round(VV, 2) #kapReinertrag = round(Reinertrag * VV2, 2) kapReinertrag = round((round(WFL * round(mNKM*MNSP + mNKM,2),2)*12 + (35 + 35 * MNSP) * GAR * 12 - round(Bewirtschaftung,2)) * VV2,2) if BL == "Bayern" and Grundstuecksart == "EFH": GrdstWert = GRUNDFL * 0.04 + (WFL * 0.5) *0.7 elif BL == "Bayern" and Grundstuecksart == "unbebautes Grundstück": GrdstWert = GRUNDFL * 0.04 elif BL == "Bayern" and Grundstuecksart == "Wohneigentum": GrdstWert = GRUNDFL * 0.04 + (WFL * 0.5) *0.7 elif BL == "Bayern" and Grundstuecksart == "Mietwohngrundstück über 6 Wohnungen": GrdstWert = GRUNDFL * 0.04 + (WFL * 0.5) *0.7 elif BL == "Niedersachsen": Lagefaktor = dBRW / 320 #nur Durchschnitt Hannover GrdstWert = GRUNDFL * 0.04 + WFL * 0.5 * Lagefaktor elif Grundstuecksart == "unbebautes Grundstück" and BL != "Bayern": GrdstWert = GRUNDFL * BodenRW else: GrdstWert = round(kapReinertrag + abzBodenwert, -2) #GrdstWert2 = f"{GrdstWert:02,.2f}" GrdstWert2 = (GrdstWert/100 - 1)* 100 if Grundstuecksart == "EFH" and BL != "Bayern" and BL != "Niedersachsen": STMZ = 0.00031 elif Grundstuecksart == "unbebautes Grundstück" and BL != "Bayern": STMZ = 0.00034 elif BL == "Bayern": STMZ = 1 elif BL == "Niedersachsen": STMZ = 1 else: STMZ = 0.00031 Steuermessbetrag = round(GrdstWert2 * STMZ, 2) #STMB = int(Element('STMB').element.value) #result = HS * STMB result = HS * Steuermessbetrag result2 = f"{result:02,.2f}" #result2 = result2.replace('.',',') #result2 = ("%.2f"%result).replace('.',',') kapRein = round((round(WFL * round(mNKM*MNSP + mNKM,2),2)*12 + (35 + 35 * MNSP) * GAR * 12 - round(Bewirtschaftung,2)) * VV2,2) #Ermittlung Umrechnungskoeffizient nach der Grundstücksgröße nach Anlage 36 BewG if GRUNDFL < 250: UMRKO = 1.24 UMRKOGG = 0 elif GRUNDFL >= 250 and GRUNDFL < 300: UMRKO = 1.19 UMRKOGG = 250 elif GRUNDFL >= 300 and GRUNDFL < 350: UMRKO = 1.14 UMRKOGG = 300 elif GRUNDFL >= 350 and GRUNDFL < 400: UMRKO = 1.1 UMRKOGG = 350 elif GRUNDFL >= 400 and GRUNDFL < 450: UMRKO = 1.06 UMRKOGG = 400 elif GRUNDFL >= 450 and GRUNDFL < 500: UMRKO = 1.03 UMRKOGG = 450 elif GRUNDFL >= 500 and GRUNDFL < 550: UMRKO = 1 UMRKOGG = 500 elif GRUNDFL >= 550 and GRUNDFL < 600: UMRKO = 0.98 UMRKOGG = 550 elif GRUNDFL >= 600 and GRUNDFL < 650: UMRKO = 0.95 UMRKOGG = 600 elif GRUNDFL >= 650 and GRUNDFL < 700: UMRKO = 0.94 UMRKOGG = 650 elif GRUNDFL >= 700 and GRUNDFL < 750: UMRKO = 0.92 UMRKOGG = 700 elif GRUNDFL >= 750 and GRUNDFL < 800: UMRKO = 0.90 UMRKOGG = 750 elif GRUNDFL >= 800 and GRUNDFL < 850: UMRKO = 0.89 UMRKOGG = 800 elif GRUNDFL >= 850 and GRUNDFL < 900: UMRKO = 0.87 UMRKOGG = 850 elif GRUNDFL >= 900 and GRUNDFL < 950: UMRKO = 0.86 UMRKOGG = 900 elif GRUNDFL >= 950 and GRUNDFL < 1000: UMRKO = 0.85 UMRKOGG = 950 elif GRUNDFL >= 1000 and GRUNDFL < 1050: UMRKO = 0.84 UMRKOGG = 1000 elif GRUNDFL >= 1050 and GRUNDFL < 1100: UMRKO = 0.83 UMRKOGG = 1050 elif GRUNDFL >= 1100 and GRUNDFL < 1150: UMRKO = 0.82 UMRKOGG = 1100 elif GRUNDFL >= 1150 and GRUNDFL < 1200: UMRKO = 0.81 UMRKOGG = 1150 elif GRUNDFL >= 1200 and GRUNDFL < 1250: UMRKO = 0.80 UMRKOGG = 1200 elif GRUNDFL >= 1250 and GRUNDFL < 1300: UMRKO = 0.79 UMRKOGG = 1250 elif GRUNDFL >= 1300 and GRUNDFL < 1350: UMRKO = 0.78 UMRKOGG = 1300 elif GRUNDFL >= 1350 and GRUNDFL < 1400: UMRKO = 0.77 UMRKOGG = 1350 elif GRUNDFL >= 1400 and GRUNDFL < 1450: UMRKO = 0.76 UMRKOGG = 1400 elif GRUNDFL >= 1450 and GRUNDFL < 1500: UMRKO = 0.75 UMRKOGG = 1450 elif GRUNDFL >= 1500 and GRUNDFL < 1550: UMRKO = 0.74 UMRKOGG = 1500 elif GRUNDFL >= 1550 and GRUNDFL < 1600: UMRKO = 0.73 UMRKOGG = 1550 elif GRUNDFL >= 1600 and GRUNDFL < 1650: UMRKO = 0.72 UMRKOGG = 1600 elif GRUNDFL >= 1650 and GRUNDFL < 1700: UMRKO = 0.71 UMRKOGG = 1650 elif GRUNDFL >= 1700 and GRUNDFL < 1750: UMRKO = 0.70 UMRKOGG = 1700 elif GRUNDFL >= 1750 and GRUNDFL < 1800: UMRKO = 0.69 UMRKOGG = 1750 elif GRUNDFL >= 1800 and GRUNDFL < 1850: UMRKO = 0.68 UMRKOGG = 1800 elif GRUNDFL >= 1850 and GRUNDFL < 1900: UMRKO = 0.67 UMRKOGG = 1850 elif GRUNDFL >= 1900 and GRUNDFL < 1950: UMRKO = 0.66 UMRKOGG = 1900 elif GRUNDFL >= 1950 and GRUNDFL < 2000: UMRKO = 0.65 UMRKOGG = 1950 else: UMRKO = 0.64 UMRKOGG = 2000 setup() #document.getElementById("msg").innerHTML = 'Die voraussichtliche Grundsteuer beträgt: ' + str(result2) + ' Euro' + ' - monatliche Nettokaltmiete: ' + str(mNKM) + ' - Rohertrag: ' + str(Rohertrag2) + ' - Alter: ' + str(Alter) + ' - Restnutzungsdauer: ' + str(RND) + ' - Bewirtschaftungskosten: ' + str(Bewirtschaftung2) + ' - Bodenwert: ' + str(Bodenwert2) + ' - abgezinster Bodenwert: ' + str(abzBodenwert2) + ' - Reinertrag: ' + str(Reinertrag2) + ' - Vervielfältiger: ' + str(VV2) + ' - kapitalisierter Reinertrag: ' + str(kapReinertrag) + ' - Grundsteuerwert: ' + str(GrdstWert2) + ' - Steuermesszahl: ' + str(STMZ) + ' - Grundsteuermessbetrag: ' + str(Steuermessbetrag) document.getElementById("grdstwert_ber").innerHTML = str(f"{(round((GRUNDFL * BodenRW * abzFaktor2 + kapRein)/100 - 1 ,0) * 100):,.2f}" ) + ' €' document.getElementById("art_ber").innerHTML = str(Grundstuecksart) document.getElementById("BRW_ber").innerHTML = str(BodenRW) + ' €/m²' document.getElementById("LZ_ber").innerHTML = str(LZ*100) + '% nach § 256 BewG' document.getElementById("BJ_ber").innerHTML = str(int(Element('bj').element.value) ) document.getElementById("Alter_ber").innerHTML = str(Alter) + ' Jahre nach § 253 Abs. 2 BewG' document.getElementById("Alter2_ber").innerHTML = str(Alter) + ' Jahre nach § 253 Abs. 2 BewG' document.getElementById("RND_ber").innerHTML = str(RND) + ' Jahre' document.getElementById("art2_ber").innerHTML = str(Grundstuecksart) document.getElementById("BJ2_ber").innerHTML = str(int(Element('bj').element.value) ) document.getElementById("BL_ber").innerHTML = str((Element('select').element.value)) document.getElementById("WFL_ber").innerHTML = str(WFL) + ' m²' document.getElementById("mNKM_ber").innerHTML = str(mNKM) + ' €/m² nach Anlage 39 Nr. I BewG' if MNSP > 0: document.getElementById("MNSP_ber").innerHTML = '+ ' + str(MNSP*100) + '%' document.getElementById("ZUAB_ber").innerHTML = 'Zuschlag nach Anlage 39 Nr. II BewG' document.getElementById("MNSP2_ber").innerHTML = '+ ' + str(MNSP*100) + '%' document.getElementById("ZUAB3_ber").innerHTML = 'Zuschlag nach Anlage 39 Nr. II BewG' else: document.getElementById("MNSP_ber").innerHTML = ' ' + str(MNSP*100) + '%' document.getElementById("ZUAB_ber").innerHTML = 'Abschlag nach Anlage 39 Nr. II BewG' document.getElementById("MNSP2_ber").innerHTML = ' ' + str(MNSP*100) + '%' document.getElementById("ZUAB4_ber").innerHTML = 'Abschlag nach Anlage 39 Nr. II BewG' document.getElementById("MNS_ber").innerHTML = 'für die Mietniveaustufe ' + str(MNS) ZUAB = round(mNKM * MNSP,2) document.getElementById("ZUAB2_ber").innerHTML = str(f"{ZUAB:,.2f}") + ' €/m²' amNKM = round(mNKM + ZUAB,2) document.getElementById("amNKM_ber").innerHTML = str(amNKM) + ' €/m²' mNKMW = round(WFL * amNKM,2) document.getElementById("mNKMW_ber").innerHTML = str(f"{mNKMW:,.2f}") + ' € nach Anlage 39 Nr. I BewG' document.getElementById("mNKMW2_ber").innerHTML = str(f"{mNKMW:,.2f}") + ' €' jRE = round(mNKMW * 12,2) document.getElementById("jRE_ber").innerHTML = str(f"{jRE:,.2f}") + ' € nach § 254 BewG' document.getElementById("GAR_ber").innerHTML = str(GAR) if GAR == 0: document.getElementById("GAR2_ber").innerHTML = '0,00 €' else: document.getElementById("GAR2_ber").innerHTML = '35,00 €' document.getElementById("MNS2_ber").innerHTML = 'für die Mietniveaustufe ' + str(MNS) ZUAB4 = round(35 * MNSP,2) document.getElementById("ZUAB4_ber").innerHTML = str(f"{ZUAB4:,.2f}") + ' €' amNKMGAR = 35 + ZUAB4 document.getElementById("amNKM2_ber").innerHTML = str(f"{amNKMGAR:,.2f}") + ' €' amNKMGAR2 = GAR * amNKMGAR document.getElementById("amNKM3_ber").innerHTML = str(f"{amNKMGAR2:,.2f}") + ' €' jRE2 = round(amNKMGAR2 * 12,2) document.getElementById("jRE2_ber").innerHTML = str(f"{jRE2:,.2f}") + ' €' document.getElementById("jRE3_ber").innerHTML = str(f"{jRE:,.2f}") + ' €' document.getElementById("jRE4_ber").innerHTML = str(f"{jRE2:,.2f}") + ' €' jRE5 = jRE + jRE2 document.getElementById("jRE5_ber").innerHTML = str(f"{jRE5:,.2f}") + ' €' document.getElementById("jRE6_ber").innerHTML = str(f"{jRE5:,.2f}") + ' €' document.getElementById("BWK_ber").innerHTML = str(BewFaktor*100) + '% vom Rohertrag' document.getElementById("BWK2_ber").innerHTML = str(f"{round(Bewirtschaftung,2):,.2f}") + ' €' REG = round(jRE5 - Bewirtschaftung,2) document.getElementById("REG_ber").innerHTML = str(f"{REG:,.2f}") + ' €' document.getElementById("REG2_ber").innerHTML = str(f"{REG:,.2f}") + ' €' document.getElementById("VV_ber").innerHTML = str(VV2) + ' €' document.getElementById("LZ2_ber").innerHTML = str(LZ*100) + '%' document.getElementById("RND2_ber").innerHTML = str(RND) + ' Jahren' document.getElementById("kapRein_ber").innerHTML = str(f"{kapRein:,.2f}") + ' €' document.getElementById("UMRKOGG_ber").innerHTML = str(UMRKOGG) + ' m²' document.getElementById("UMRKO_ber").innerHTML = str(UMRKO) document.getElementById("LZ3_ber").innerHTML = str(LZ*100) + '% ' document.getElementById("RND3_ber").innerHTML = str(RND) + ' Jahren' document.getElementById("AZF_ber").innerHTML = str(abzFaktor2) document.getElementById("GF_ber").innerHTML = str(GRUNDFL) + ' m²' document.getElementById("BRW2_ber").innerHTML = str(BodenRW) + ' €/m²' document.getElementById("UMRKO2_ber").innerHTML = str(UMRKO) document.getElementById("BWvAZ_ber").innerHTML = str(GRUNDFL * BodenRW) + ' €' document.getElementById("AZF2_ber").innerHTML = str(abzFaktor2) document.getElementById("AZBW_ber").innerHTML = str(f"{round(GRUNDFL * BodenRW * abzFaktor2,2):,.2f}") + ' €' document.getElementById("kapRein2_ber").innerHTML = str(f"{kapRein:,.2f}") + ' €' document.getElementById("AZBW2_ber").innerHTML = str(f"{round(GRUNDFL * BodenRW * abzFaktor2,2):,.2f}") + ' €' document.getElementById("Grdstw_ber").innerHTML = str(f"{round(GRUNDFL * BodenRW * abzFaktor2 + kapRein,2):,.2f}") + ' €' document.getElementById("BWvAZ2_ber").innerHTML = str(f"{GRUNDFL * BodenRW:,.2f}") + ' €' document.getElementById("BWvAZ75_ber").innerHTML = str(f"{(GRUNDFL * BodenRW * 0.75):,.2f}") + ' €' document.getElementById("Grdstw2_ber").innerHTML = str(f"{(round(GRUNDFL * BodenRW * abzFaktor2 + kapRein,2)):,.2f}") + ' €' maxW = max(round(GRUNDFL * BodenRW * abzFaktor2 + kapRein,2), GRUNDFL * BodenRW * 0.75) document.getElementById("Grdstw3_ber").innerHTML = str(f"{(round(GRUNDFL * BodenRW * abzFaktor2 + kapRein,2)):,.2f}") + ' €' document.getElementById("Grdstw4_ber").innerHTML = str(f"{(round((GRUNDFL * BodenRW * abzFaktor2 + kapRein)/100 - 1 ,0) * 100):,.2f}" ) + ' €' document.getElementById("Grdstw5_ber").innerHTML = str(f"{(round((GRUNDFL * BodenRW * abzFaktor2 + kapRein)/100 - 1 ,0) * 100):,.2f}" ) + ' €' document.getElementById("STMZ_ber").innerHTML = str(STMZ*1000) + ' v.T.' document.getElementById("STMB_ber").innerHTML = str(f"{round(STMZ*round((GRUNDFL * BodenRW * abzFaktor2 + kapRein)/100 - 1 ,0) * 100,2):,.2f}") + ' €' #f"{value:,.2f}" document.getElementById("Grdst").innerHTML = 'Die voraussichtliche Grundsteuer beträgt ' + str(f"{round(round(round((GRUNDFL * BodenRW * abzFaktor2 + kapRein)/100 - 1 ,0) * 100 * STMZ,2) * HS, 2):,.2f}") + ' €' #url_content = open_url("http://majo2000.bplaced.net/python/gewst ges.csv") url_content = open_url("gewst ges.csv") df = pd.read_csv(url_content) #GEM = Element('section').element.value GEM = Element('gemeinde').element.value df = df[(df.Gemeinde == GEM) & (df.Jahr == 2021)] df = df.loc[df.index[0], 'GrundsteuerB'] Mietniveau = df.loc[df.index[0], 'Mietniveaustufe'] #document.getElementById("HSSuche").innerHTML = "Der Hebesatz von " + str(GEM) + " beträgt " + str(HSresult) + "%." + " Die Mietniveaustufe ist " + str(Mietniveau) +"." document.getElementById("hebesatz").innerHTML = str(HSresult) document.getElementById("mns").innerHTML = str(Mietniveau) # document.getElementById("Ergebnis").innerHTML = 'Die voraussichtliche Grundsteuer beträgt: ' + str(result2) + ' Euro' def setup(): # The page is ready, clear the "page loading" #document.getElementById("msg").innerHTML = '' #aufgrund Fehler ausgeklammert, da Ausgabe auch weg # Create a JsProxy for the callback function click_proxy = create_proxy(button_click) # Set the listener to the callback e = document.getElementById("button") e.addEventListener("click", click_proxy) setup() def my_function(*args, **kwargs): result = '' #BL = int(Element('select').element.value) multiplicand = int(Element('multiplicand').element.value) multiplier = int(Element('multiplier').element.value) bj = int(Element('m3').element.value) #HS = int(Element('subject').element.value) / 100 #hebesatz #monatliche Nettokaltmiete STMB = int(Element('STMB').element.value) for x in range(1,multiplier+1): node = document.createElement("div"); node.setAttribute("id", f"output-"); output = document.getElementById("test-output") output.appendChild(node); output.style.marginTop = "10px"; output.style.padding= "5px"; out = Element(f"output-") result = "{:,.2f}".format(STMB * HS) out.write(f' voraussichtliche Grundsteuer {result} Euro') async def main(): try: await asyncio.sleep(1) #url_content = open_url("http://majo2000.bplaced.net/python/gewst ges.csv") url_content = open_url("gewst ges.csv") df = pd.read_csv(url_content) await asyncio.sleep(15) GEM = Element('gemeinde').element.value df = df[(df.Gemeinde == GEM) & (df.Jahr == 2021)] HSresult = df.loc[df.index[0], 'GrundsteuerB'] Mietniveau = df.loc[df.index[0], 'Mietniveaustufe'] document.getElementById("hebesatz").innerHTML = str(HSresult) document.getElementById("mns").innerHTML = str(Mietniveau) except IndexError as e: print("Caught an IndexError:", e) print("Please reload your browser and try again.") # Handle the error or perform additional logging except Exception as e: print("Caught an unexpected error:", e ) print("Please reload your browser and try again.") # Handle other unexpected exceptions asyncio.ensure_future(main())