PAP Steuer umsetzen

Du hast eine Idee für ein Projekt?
Antworten
oldboyJR
User
Beiträge: 40
Registriert: Donnerstag 28. März 2024, 16:19

Man kann auf der Seite des Bundesfinanministeriums eine Steuerpap für 2023 aber auch 2024 herunterladen. Unter anderem werden Tabellen für den Altersentlastungsbetrag angeboten. Ich dachte ich automatisiere es in Python. Ich benutze eine Anaconda Instalation von Spider 5 ich habe aber den leichten verdacht das Module fehlen bzw. Funktionen eingeschränkt sind

Code: Alles auswählen

J = 0
Fak = 0.00
hoechs = 0.00
# hier folgen die  Tabellenwerte
KLIST2005 = [2005, 1, 0.4, 1900]
KLIST2006 = [2006, 2, 0.384, 1824]
KLIST2007 = [2007, 3, 0.368, 1748]
KLIST2008 = [2008, 4, 0.352, 1672]
KLIST2009 = [2009, 5, 0.336, 1596]
KLIST2010 = [2010, 6, 0.32, 1520]
KLIST2011 = [2011, 7, 0.304, 1444]
KLIST2012 = [2012, 8, 0.288, 1368]
KLIST2013 = [2013, 9, 0.272, 1292]
KLIST2014 = [2014, 10, 0.256, 1216]
KLIST2015 = [2015, 11, 0.24, 1140]
KLIST2016 = [2016, 12, 0.224, 1064]
KLIST2017 = [2017, 13, 0.208, 988]
KLIST2018 = [2018, 14, 0.192, 912]
KLIST2019 = [2019, 15, 0.176, 836]
KLIST2020 = [2020, 16, 0.16, 760]
KLIST2021 = [2021, 17, 0.152, 722]
KLIST2022 = [2022, 18, 0.144, 684]
KLIST2023 = [2023, 19, 0.136, 646]
KLIST2024 = [2024, 20, 0.128, 608]
KLIST2025 = [2025, 21, 0.12, 570]
KLIST2026 = [2026, 22, 0.112, 532]
KLIST2027 = [2027, 23, 0.104, 494]
KLIST2028 = [2028, 24, 0.096, 456]
KLIST2029 = [2029, 25, 0.088, 418]
KLIST2030 = [2030, 26, 0.08, 380]
KLIST2031 = [2031, 27, 0.072, 342]
KLIST2032 = [2032, 28, 0.064, 304]
KLIST2033 = [2033, 29, 0.056, 266]
KLIST2034 = [2034, 30, 0.048, 228]
KLIST2035 = [2035, 31, 0.04, 190]
KLIST2036 = [2036, 32, 0.032, 152]
KLIST2037 = [2037, 33, 0.024, 114]
KLIST2038 = [2038, 34, 0.016, 76]
KLIST2039 = [2039, 35, 0.008, 38]
KLIST2040 = [2040, 36, 0, 0]
# ich habe keine Routine gefunden  die aus einem String und einem int einen Aufruf des entsprechenden Listenabfrage macht aus früheren Versuchen melde das System vars brauch ein Element aus einer Dictionary .... hier also meine
zahljahrzuklistearg = {2005: KLIST2005, 2006: KLIST2006, 2007: KLIST2007, 
                       2008: KLIST2008, 2009: KLIST2009, 2010: KLIST2010,
                       2011: KLIST2011, 2012: KLIST2012, 2013: KLIST2013,
                       2014: KLIST2014, 2015: KLIST2015, 2016: KLIST2016,
                       2017: KLIST2017, 2018: KLIST2018, 2019: KLIST2019,
                       2020: KLIST2020, 
                       2021: KLIST2021, 2022: KLIST2022, 2023: KLIST2023,
                       2024: KLIST2024, 2025: KLIST2025, 2026: KLIST2026,
                       2027: KLIST2027, 2028: KLIST2028, 2029: KLIST2029,
                       2030: KLIST2030, 2040: KLIST2040,
                       2031: KLIST2031, 2032: KLIST2032, 2033: KLIST2033,
                       2034: KLIST2034, 2035: KLIST2035, 2036: KLIST2036,
                       2037: KLIST2037, 2038: KLIST2038, 2039: KLIST2039,}

def erzeugen():
    
    AJAHR = 0
    J = 0
    Fak = 0.00
    hoechs = 0.00
    list = [0, 0, 0, 0]
    Jahr1 = -1
    Jahr1 = int(input("geben sie das Jahr der ersten Rente ein ?"))
    
    while Jahr1 <= 2005:
        print("sie haben die vollen Tabellenwerte")
        Jahr1 = 2005
        print(zahljahrzuklistearg[Jahr1])
            
        if Jahr1 == 2040:
           print("keine Tabellenwerte anrechenbar")
           print(zahljahrzuklistearg[Jahr1])
    else:
           2006 >= Jahr1 and Jahr1 <= 2039
           print("sie haben reduzierte Tabellenwerte")
           print(zahljahrzuklistearg[Jahr1])
           myL = zahljahrzuklistearg[Jahr1] 
           myL[1] = AJAHR
           #ergebnisjTABwert[2] = J
           #ergebnisjTABwert[3] = Fak
           #ergebnisjTABwert[4] = hoechs
           print ("Ajahr = ", AJAHR)
           print ("J = ", J)
           print ("TAB2 Wert = ", Fak)
           print ("TAB3 Wert = ", hoechs)
           
erzeugen()
die Ausgabe bis hierher ist:
geben sie das Jahr der ersten rente ein2025 #hier habe ich den testwert eingegeben
sie haben reduzierte Tabellenwerte
[2025, 21, 0.12, 570]
Ajahr = 0
J = 0
TAB2 Wert = 0.0
TAB3 Wert = 0.0

das Problem : diese zeilen führen zu nichts und eine Variable myL taucht auch nicht in der Variablenliste auf
myL = zahljahrzuklistearg[Jahr1]
myL[1] = AJAHR
Benutzeravatar
grubenfox
User
Beiträge: 542
Registriert: Freitag 2. Dezember 2022, 15:49

Wann wo welche Variablenliste? Die Variable myL ist außerhalb der Funktion 'erzeugen' nicht existent.
oldboyJR
User
Beiträge: 40
Registriert: Donnerstag 28. März 2024, 16:19

Ich dachte ich müsse etwas umwandeln um weiter zu kommen. Ich suchte nach format() und kamm dann auf type(). Ich baute dann zwei type ein und stellte fest das beide abfragen die class list ergaben.
es mußte also das Problem in der nächsten Zeile sein. Witzig und einfach: die beiden Objekte um das = zu tauschen

Code: Alles auswählen




J = 0
Fak = 0.00
hoechs = 0
KLIST2005 = [2005, 1, 0.4, 1900, 1 ,]
KLIST2006 = [2006, 2, 0.384, 1824, 1 ,]
KLIST2007 = [2007, 3, 0.368, 1748, 1 ,]
KLIST2008 = [2008, 4, 0.352, 1672, 1 ,]
KLIST2009 = [2009, 5, 0.336, 1596, 1 ,]
KLIST2010 = [2010, 6, 0.32, 1520, 1 ,]
KLIST2011 = [2011, 7, 0.304, 1444, 1 ,]
KLIST2012 = [2012, 8, 0.288, 1368, 1 ,]
KLIST2013 = [2013, 9, 0.272, 1292, 1 ,]
KLIST2014 = [2014, 10, 0.256, 1216, 1 ,]
KLIST2015 = [2015, 11, 0.24, 1140, 1 ,]
KLIST2016 = [2016, 12, 0.224, 1064, 1 ,]
KLIST2017 = [2017, 13, 0.208, 988, 1 ,]
KLIST2018 = [2018, 14, 0.192, 912, 1 ,]
KLIST2019 = [2019, 15, 0.176, 836, 1 ,]
KLIST2020 = [2020, 16, 0.16, 760, 1 ,]
KLIST2021 = [2021, 17, 0.152, 722, 1 ,]
KLIST2022 = [2022, 18, 0.144, 684, 1 ,]
KLIST2023 = [2023, 19, 0.136, 646, 1 ,]
KLIST2024 = [2024, 20, 0.128, 608, 1 ,]
KLIST2025 = [2025, 21, 0.12, 570, 1 ,]
KLIST2026 = [2026, 22, 0.112, 532, 1 ,]
KLIST2027 = [2027, 23, 0.104, 494 , 1 ,]
KLIST2028 = [2028, 24, 0.096, 456, 1 ,]
KLIST2029 = [2029, 25, 0.088, 418, 1 ,]
KLIST2030 = [2030, 26, 0.08, 380, 1 ,]
KLIST2031 = [2031, 27, 0.072, 342, 1 ,]
KLIST2032 = [2032, 28, 0.064, 304, 1 ,]
KLIST2033 = [2033, 29, 0.056, 266, 1 ,]
KLIST2034 = [2034, 30, 0.048, 228, 1 ,]
KLIST2035 = [2035, 31, 0.04, 190, 1 ,]
KLIST2036 = [2036, 32, 0.032, 152, 1 ,]
KLIST2037 = [2037, 33, 0.024, 114, 1 ,]
KLIST2038 = [2038, 34, 0.016, 76, 1 ,]
KLIST2039 = [2039, 35, 0.008, 38, 1 ,]
KLIST2040 = [2040, 36, 0, 0, 1 ,]

zahljahrzuklistearg = {2005: KLIST2005, 2006: KLIST2006, 2007: KLIST2007, 
                       2008: KLIST2008, 2009: KLIST2009, 2010: KLIST2010,
                       2011: KLIST2011, 2012: KLIST2012, 2013: KLIST2013,
                       2014: KLIST2014, 2015: KLIST2015, 2016: KLIST2016,
                       2017: KLIST2017, 2018: KLIST2018, 2019: KLIST2019,
                       2020: KLIST2020, 
                       2021: KLIST2021, 2022: KLIST2022, 2023: KLIST2023,
                       2024: KLIST2024, 2025: KLIST2025, 2026: KLIST2026,
                       2027: KLIST2027, 2028: KLIST2028, 2029: KLIST2029,
                       2030: KLIST2030, 2040: KLIST2040,
                       2031: KLIST2031, 2032: KLIST2032, 2033: KLIST2033,
                       2034: KLIST2034, 2035: KLIST2035, 2036: KLIST2036,
                       2037: KLIST2037, 2038: KLIST2038, 2039: KLIST2039,}

def erzeugen():
    
    AJAHR = -1
    J = -1
    Fak = -1.00
    hoechs = 0

    Jahr1 = -1
    Jahr1 = int(input("geben sie das Jahr der ersten rente ein"))
    
    while Jahr1 < 1914:#für alle Personen max 110 Jahren
        print ( "ich sehe nach")
        if Jahr1 <=2005:
            print("sie haben die vollen Tabellenwerte")
            Jahr1 = 2005
            print(zahljahrzuklistearg[Jahr1])
            myL = zahljahrzuklistearg[Jahr1]
            AJAHR = myL[0]
            J = myL[1]
            Fak = myL[2]
            hoechs = myL[3]
            print ("Ajahr = ", AJAHR)
            print ("J = ", J)
            print ("TAB2 Wert = ", Fak)
            print ("TAB3 Wert = ", hoechs)
        if Jahr1 == 2040:
           print("keine Kabellenwerte anrechenbar")
           print(zahljahrzuklistearg[Jahr1])
           myL = zahljahrzuklistearg[Jahr1]
           AJAHR = myL[0]
           J = myL[1]
           Fak = myL[2]
           hoechs = myL[3]
           print ("Ajahr = ", AJAHR)
           print ("J = ", J)
           print ("TAB2 Wert = ", Fak)
           print ("TAB3 Wert = ", hoechs)
           
    else:
           2006 >= Jahr1 and Jahr1 <= 2039
           print("sie haben reduzierte Tabellenwerte")
           print(zahljahrzuklistearg[Jahr1])
           print(type(zahljahrzuklistearg[Jahr1]))
           myL = zahljahrzuklistearg[Jahr1]
           print(type(myL))
           AJAHR = myL[0]
           J = myL[1]
           Fak = myL[2]
           hoechs = myL[3]
           print ("Ajahr = ", AJAHR)
           print ("J = ", J)
           print ("TAB2 Wert = ", Fak)
           print ("TAB3 Wert = ", hoechs)
           
erzeugen()




Benutzeravatar
sparrow
User
Beiträge: 4371
Registriert: Freitag 17. April 2009, 10:28

Im ehrlich zu sein: Der Code lässt sich so schlecht, dass ich nicht tiefer einsteigen werde.

Namen werden in Python klein_mit_unterstrich geschrieben. Ausgenommen sind Klassen (PascalCase) und Konstanten (KOMPLETT_GROSS).

Wasgsrnichtgehtsindeinfaachaneinandergereihtewörter. Findet man aber bei dir.

Benennung ist wichtig! Variablennamen sollen.sprechend sein. Eibzchstabihe Variablen gehen höchstens als Zählvariablen (üblicherweise i und j in Schleifen oder do etwas wie x und y bei Koordinaten.
J, Fak und hoechs sagen nun wirklich gar nichts aus. Man nummeriert Variablen nicht durch. Jahr1? Warum die 1?
Warum myL? Warum brauchst du ein L? Wo ist yourL? Oder herL? Und wer ist dieser L eigentlich?

Bring deine Variablennamen in Ordnung, dann schauen wir weiter.
Benutzeravatar
grubenfox
User
Beiträge: 542
Registriert: Freitag 2. Dezember 2022, 15:49

ich bin zwar nur ein unbeteiligter Dritter, aber ich glaube ich kann stellvertretend für oldboyJR antworten....

einfach mal nach PAP Lohnsteuer suchen (hatte ich letzte Nacht unvorsichtigerweise gemacht) oder dem Link hier folgen: :roll: :roll: :roll:
Programmablaufplan für die maschinelle Berechnung der vom Arbeitslohn einzubehaltenden Lohnsteuer, des Solidaritätszuschlags und der Maßstabssteuer für die Kirchenlohnsteuer 2024
:shock:

Wir übernehmen aber keine Verantwortung für psychhische und/oder physische Schäden die beim Betrachten des Ablaufplans entstehen... (ich konnte knapp vermeiden mit dem Kopf auf die Tischplatte zu knallen, ob ich den geistigen Schaden irgendwann verkraften werde... ;) )
Zu den gewählten Variablennamen kann ich nun nichts sagen, aber lustigerweise gibt es in dem Ablaufplan auch die internen Felder X und Y.
X bedeutet 'natürlich': "Zu versteuerndes Einkommen gem. § 32a Absatz 1 und 5 EStG in Euro, Cent (2 Dezimalstellen)"
und Y ist: "Gem. § 32a Absatz 1 EStG (6 Dezimalstellen)"
Sirius3
User
Beiträge: 18054
Registriert: Sonntag 21. Oktober 2012, 17:20

Die vielen KLIST-Variablen sind unnötig. Man würde besser alles in eine Liste packen. Da der erste Eintrag das Jahr ist, lässt sich das Wörterbuch daraus einfach erstellen:

Code: Alles auswählen

RENTEN_ENTLASTUNG_NACH_JAHR = {
    eintrag[0]: Eintrag
    for eintrag in KLISTE
}
Es sieht so aus, als ob Du Variablen deklarieren möchtest, in dem Du ihnen den Wert -1 gibst. Macht man nicht, löschen die Zeilen einfach.
Die while-Schleife ist falsch, weil das Jahr selten kleiner 1904 ist.
Du hast dreimal den selben Code in den drei if-Blöcken. Das reicht also einmal nach dem letzten Block.

Mir ist nicht ganz die Frage klar. Was möchtest Du erreichen? Wie soll das Ergebnis aussehen und wie weicht es vom aktuellen Stand ab?
Benutzeravatar
__blackjack__
User
Beiträge: 13583
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

(Der Beitrag war eine Weile in Bearbeitung, darum gibt es Überschneidungen mit bereits geschriebenen.)

@oldboyJR: Anmerkungen zum Quelltext:

Eingerückt wird per Konvention vier Leerzeichen pro Ebene.

Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.

Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).

Namen sollten keine kryptischen Abkürzungen enthalten oder gar nur daraus bestehen. Der Name soll dem Leser vermitteln was der Wert dahinter im Programm bedeutet, nicht zum rätseln zwingen.

Man nummeriert keine Namen. Dann will man sich entweder bessere Namen überlegen, oder gar keine Einzelnamen/-werte verwenden, sondern eine Datenstruktur. Oft eine Liste.

Grunddatentypen haben nichts in Namen verloren. Den Typen ändert man gar nicht so selten mal während der Programmentwicklung und dann muss man überall im Programm die betroffenen Namen ändern, oder man hat falsche, irreführende Namen im Quelltext.

`J`, `Fak`, und `hoechs` auf Modulebene werden nirgends verwendet.

Die ganzen `KLIST*`-Namen sind nicht nur nummeriert, sondern die Namen enthalten Daten die in den Listen noch mal als Werte wiederholt werden. Die ganzen Namen kann man sich sparen wenn man die Listen selbst einfach in eine Liste steckt:

Code: Alles auswählen

KS = [
    [2005, 1, 0.4, 1900],
    [2006, 2, 0.384, 1824],
    [2007, 3, 0.368, 1748],
    [2008, 4, 0.352, 1672],
    [2009, 5, 0.336, 1596],
    [2010, 6, 0.32, 1520],
    [2011, 7, 0.304, 1444],
    [2012, 8, 0.288, 1368],
    [2013, 9, 0.272, 1292],
    [2014, 10, 0.256, 1216],
    [2015, 11, 0.24, 1140],
    [2016, 12, 0.224, 1064],
    [2017, 13, 0.208, 988],
    [2018, 14, 0.192, 912],
    [2019, 15, 0.176, 836],
    [2020, 16, 0.16, 760],
    [2021, 17, 0.152, 722],
    [2022, 18, 0.144, 684],
    [2023, 19, 0.136, 646],
    [2024, 20, 0.128, 608],
    [2025, 21, 0.12, 570],
    [2026, 22, 0.112, 532],
    [2027, 23, 0.104, 494],
    [2028, 24, 0.096, 456],
    [2029, 25, 0.088, 418],
    [2030, 26, 0.08, 380],
    [2031, 27, 0.072, 342],
    [2032, 28, 0.064, 304],
    [2033, 29, 0.056, 266],
    [2034, 30, 0.048, 228],
    [2035, 31, 0.04, 190],
    [2036, 32, 0.032, 152],
    [2037, 33, 0.024, 114],
    [2038, 34, 0.016, 76],
    [2039, 35, 0.008, 38],
    [2040, 36, 0, 0],
]
Die Abbildung von Jahr auf diese Listen kann man dann einfach mit einer Schleife oder einer „dict comprehension“ erzeugen:

Code: Alles auswählen

JAHR_ZU_DATENSATZ = {datensatz[0]: datensatz for datensatz in KS}
Oder man spart sich die Aufteilung in zwei Schritte und schreibt gleich das Wörterbuch in den Quelltext:

Code: Alles auswählen

JAHR_ZU_DATENSATZ = {
    2005: [2005, 1, 0.4, 1900],
    2006: [2006, 2, 0.384, 1824],
    2007: [2007, 3, 0.368, 1748],
    2008: [2008, 4, 0.352, 1672],
    2009: [2009, 5, 0.336, 1596],
    2010: [2010, 6, 0.32, 1520],
    2011: [2011, 7, 0.304, 1444],
    2012: [2012, 8, 0.288, 1368],
    2013: [2013, 9, 0.272, 1292],
    2014: [2014, 10, 0.256, 1216],
    2015: [2015, 11, 0.24, 1140],
    2016: [2016, 12, 0.224, 1064],
    2017: [2017, 13, 0.208, 988],
    2018: [2018, 14, 0.192, 912],
    2019: [2019, 15, 0.176, 836],
    2020: [2020, 16, 0.16, 760],
    2021: [2021, 17, 0.152, 722],
    2022: [2022, 18, 0.144, 684],
    2023: [2023, 19, 0.136, 646],
    2024: [2024, 20, 0.128, 608],
    2025: [2025, 21, 0.12, 570],
    2026: [2026, 22, 0.112, 532],
    2027: [2027, 23, 0.104, 494],
    2028: [2028, 24, 0.096, 456],
    2029: [2029, 25, 0.088, 418],
    2030: [2030, 26, 0.08, 380],
    2031: [2031, 27, 0.072, 342],
    2032: [2032, 28, 0.064, 304],
    2033: [2033, 29, 0.056, 266],
    2034: [2034, 30, 0.048, 228],
    2035: [2035, 31, 0.04, 190],
    2036: [2036, 32, 0.032, 152],
    2037: [2037, 33, 0.024, 114],
    2038: [2038, 34, 0.016, 76],
    2039: [2039, 35, 0.008, 38],
    2040: [2040, 36, 0, 0],
}
Was hier jetzt auf den ersten Blick auffällt, ist das die Jahreszahl da immer zweimal drin steht. Das muss nicht sein, denn die Jahreszahl hat man ja bereits, sonst könnte man darüber nicht auf die dazugehörigen Daten zugreifen:

Code: Alles auswählen

JAHR_ZU_DATENSATZ = {
    2005: [1, 0.4, 1900],
    2006: [2, 0.384, 1824],
    2007: [3, 0.368, 1748],
    2008: [4, 0.352, 1672],
    2009: [5, 0.336, 1596],
    2010: [6, 0.32, 1520],
    2011: [7, 0.304, 1444],
    2012: [8, 0.288, 1368],
    2013: [9, 0.272, 1292],
    2014: [10, 0.256, 1216],
    2015: [11, 0.24, 1140],
    2016: [12, 0.224, 1064],
    2017: [13, 0.208, 988],
    2018: [14, 0.192, 912],
    2019: [15, 0.176, 836],
    2020: [16, 0.16, 760],
    2021: [17, 0.152, 722],
    2022: [18, 0.144, 684],
    2023: [19, 0.136, 646],
    2024: [20, 0.128, 608],
    2025: [21, 0.12, 570],
    2026: [22, 0.112, 532],
    2027: [23, 0.104, 494],
    2028: [24, 0.096, 456],
    2029: [25, 0.088, 418],
    2030: [26, 0.08, 380],
    2031: [27, 0.072, 342],
    2032: [28, 0.064, 304],
    2033: [29, 0.056, 266],
    2034: [30, 0.048, 228],
    2035: [31, 0.04, 190],
    2036: [32, 0.032, 152],
    2037: [33, 0.024, 114],
    2038: [34, 0.016, 76],
    2039: [35, 0.008, 38],
    2040: [36, 0, 0],
}
Immer noch recht offensichtlich kann man den ersten Wert jeder Liste trivial aus der Jahreszahl ermitteln. Das ist ja einfach ``jahr - 2005 + 1``. Die ganzen Werte muss man da nicht in den Code schreiben:

Code: Alles auswählen

JAHR_ZU_DATENSATZ = {
    2005: [0.4, 1900],
    2006: [0.384, 1824],
    2007: [0.368, 1748],
    2008: [0.352, 1672],
    2009: [0.336, 1596],
    2010: [0.32, 1520],
    2011: [0.304, 1444],
    2012: [0.288, 1368],
    2013: [0.272, 1292],
    2014: [0.256, 1216],
    2015: [0.24, 1140],
    2016: [0.224, 1064],
    2017: [0.208, 988],
    2018: [0.192, 912],
    2019: [0.176, 836],
    2020: [0.16, 760],
    2021: [0.152, 722],
    2022: [0.144, 684],
    2023: [0.136, 646],
    2024: [0.128, 608],
    2025: [0.12, 570],
    2026: [0.112, 532],
    2027: [0.104, 494],
    2028: [0.096, 456],
    2029: [0.088, 418],
    2030: [0.08, 380],
    2031: [0.072, 342],
    2032: [0.064, 304],
    2033: [0.056, 266],
    2034: [0.048, 228],
    2035: [0.04, 190],
    2036: [0.032, 152],
    2037: [0.024, 114],
    2038: [0.016, 76],
    2039: [0.008, 38],
    2040: [0, 0],
}
Nicht ganz so offensichtlich, aber auch diese Daten lassen sich aus der Jahreszahl einfach ausrechnen.

Code: Alles auswählen

START_JAHR = 2005
END_JAHR = 2040
START_FAKTOR = 0.4
START_HOECHSTBETRAG = 1900
FAKTOR_DELTA = 0.016
HOECHSTBETRAG_DELTA = 76
HALBIERUNG_NACH = 15  # in Jahren.


def berechne_wert(startwert, jahre_voll, jahre_halb, delta):
    return startwert - jahre_voll * delta - jahre_halb * delta / 2


def berechne_datensatz(jahr):
    jahre = jahr - START_JAHR
    jahre_voll = min(jahre, HALBIERUNG_NACH)
    jahre_halb = max(jahre - HALBIERUNG_NACH, 0)
    return (
        round(
            berechne_wert(START_FAKTOR, jahre_voll, jahre_halb, FAKTOR_DELTA),
            4,
        ),
        berechne_wert(
            START_HOECHSTBETRAG, jahre_voll, jahre_halb, HOECHSTBETRAG_DELTA
        ),
    )


assert berechne_datensatz(END_JAHR) == (0, 0)
Damit zum testen das Wörterbuch erstellt:

Code: Alles auswählen

In [330]: {jahr: berechne_datensatz(jahr) for jahr in range(START_JAHR, END_JAHR + 1)}
Out[330]: 
{2005: (0.4, 1900.0),
 2006: (0.384, 1824.0),
 2007: (0.368, 1748.0),
 2008: (0.352, 1672.0),
 2009: (0.336, 1596.0),
 2010: (0.32, 1520.0),
 2011: (0.304, 1444.0),
 2012: (0.288, 1368.0),
 2013: (0.272, 1292.0),
 2014: (0.256, 1216.0),
 2015: (0.24, 1140.0),
 2016: (0.224, 1064.0),
 2017: (0.208, 988.0),
 2018: (0.192, 912.0),
 2019: (0.176, 836.0),
 2020: (0.16, 760.0),
 2021: (0.152, 722.0),
 2022: (0.144, 684.0),
 2023: (0.136, 646.0),
 2024: (0.128, 608.0),
 2025: (0.12, 570.0),
 2026: (0.112, 532.0),
 2027: (0.104, 494.0),
 2028: (0.096, 456.0),
 2029: (0.088, 418.0),
 2030: (0.08, 380.0),
 2031: (0.072, 342.0),
 2032: (0.064, 304.0),
 2033: (0.056, 266.0),
 2034: (0.048, 228.0),
 2035: (0.04, 190.0),
 2036: (0.032, 152.0),
 2037: (0.024, 114.0),
 2038: (0.016, 76.0),
 2039: (0.008, 38.0),
 2040: (0.0, 0.0)}

Zur `erstellen()`-Funktion: Man definiert keine Namen am Anfang mit irgendwelchen Dummy-Werten die nie irgendwo verwendet werden. Namen werden dann eingeführt wenn man sie braucht und gleich mit sinnvollen Werten belegt wo immer das geht.

`list` ist der Name des Datentyps für Listen, den sollte man nicht an etwas anderes binden.

``while``, ``if``, und ``else`` ist so falsch. Das ``while`` sollte wohl ein ``if`` sein, denn `Jahr1` wird nirgends verändert im Schleifenkörper, womit das eine Endlosschleife ist. Das ``else`` ist so eingerückt das es zum ``while`` gehört, es sollte aber wohl zu dem ``if`` gehören was so eingerückt ist, dass es zum Schleifenkörper gehört. Die erste Anweisung im ``else``-Zweig ist ein Ausdruck der einen Wahrheitswert ergibt, mit dem dann aber nichts gemacht wird. Das sollte also wohl kein ``else`` sondern ein ``elif`` sein, mit dieser Bedingung.

Letztlich könnte man sich das aber auch alles sparen und die eingegebene Jahreszahl mit `min()` und `max()` auf den Tabellenbereich bringen.

Ungetestet:

Code: Alles auswählen

#!/usr/bin/env python3

START_JAHR = 2005
END_JAHR = 2040
START_FAKTOR = 0.4
START_HOECHSTBETRAG = 1900
FAKTOR_DELTA = 0.016
HOECHSTBETRAG_DELTA = 76
HALBIERUNG_NACH = 15  # in Jahren.


def berechne_wert(startwert, jahre_voll, jahre_halb, delta):
    return startwert - jahre_voll * delta - jahre_halb * delta / 2


def berechne_datensatz(jahr):
    jahre = jahr - START_JAHR
    jahre_voll = min(jahre, HALBIERUNG_NACH)
    jahre_halb = max(jahre - HALBIERUNG_NACH, 0)
    return (
        round(
            berechne_wert(START_FAKTOR, jahre_voll, jahre_halb, FAKTOR_DELTA),
            4,
        ),
        berechne_wert(
            START_HOECHSTBETRAG, jahre_voll, jahre_halb, HOECHSTBETRAG_DELTA
        ),
    )


assert berechne_datensatz(END_JAHR) == (0, 0)


def main():
    erstes_rentenjahr = int(input("geben sie das Jahr der ersten Rente ein ?"))

    a_jahr = min(max(erstes_rentenjahr, START_JAHR), END_JAHR)
    j = START_JAHR - a_jahr + 1
    faktor, hoechstbetrag = berechne_datensatz(a_jahr)

    if faktor == 0 and hoechstbetrag == 0:
        print("Keine Tabellenwerte anrechenbar.")
    elif faktor == START_FAKTOR and hoechstbetrag == START_HOECHSTBETRAG:
        print("Sie haben die vollen Tabellenwerte.")

    print("    Ajahr =", a_jahr)
    print("        J =", j)
    print("TAB2 Wert =", faktor)
    print("TAB3 Wert =", hoechstbetrag)


if __name__ == "__main__":
    main()
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
oldboyJR
User
Beiträge: 40
Registriert: Donnerstag 28. März 2024, 16:19

Ich glaube eine Nummerierung eines Namens ist dann sinnvoll wenn man Zwischenwerte greifbar machen möchte. Die Schreibweise einer Globalen variable (alles groß geschrieben ist ja gefährlich und führt zu ungewollten Ergebnissen ?) Für mich sind die Namen der PAP Globale Namen
oldboyJR
User
Beiträge: 40
Registriert: Donnerstag 28. März 2024, 16:19

Damit alle den Namensgebungen folgen können!! Und bekommt keine Kopfschmerzen!!!


class STEUERPAP():
KLIST2005 = (1, 0.4, 1900)
KLIST2006 = (2, 0.384, 1824)
KLIST2007 = (3, 0.368, 1748)
KLIST2008 = (4, 0.352, 1672)
KLIST2009 = (5, 0.336, 1596)
KLIST2010 = (6, 0.32, 1520)
KLIST2011 = (7, 0.304, 1444)
KLIST2012 = (8, 0.288, 1368)
KLIST2013 = (9, 0.272, 1292)
KLIST2014 = (10, 0.256, 1216)
KLIST2015 = (11, 0.24, 1140)
KLIST2016 = (12, 0.224, 1064)
KLIST2017 = (13, 0.208, 988)
KLIST2018 = (14, 0.192, 912)
KLIST2019 = (15, 0.176, 836)
KLIST2020 = (16, 0.16, 760)
KLIST2021 = (17, 0.152, 722)
KLIST2022 = (18, 0.144, 684)
KLIST2023 = (19, 0.136, 646)
KLIST2024 = (20, 0.128, 608)
KLIST2025 = (21, 0.12, 570)
KLIST2026 = (22, 0.112, 532)
KLIST2027 = (23, 0.104, 494)
KLIST2028 = (24, 0.096, 456)
KLIST2029 = (25, 0.088, 418)
KLIST2030 = (26, 0.08, 380)
KLIST2031 = (27, 0.072, 342)
KLIST2032 = (28, 0.064, 304)
KLIST2033 = (29, 0.056, 266)
KLIST2034 = (30, 0.048, 228)
KLIST2035 = (31, 0.04, 190)
KLIST2036 = (32, 0.032, 152)
KLIST2037 = (33, 0.024, 114)
KLIST2038 = (34, 0.016, 76)
KLIST2039 = (35, 0.008, 38)
KLIST2040 = (36, 0, 0)

JLIST2005 = (1, 0.4, 3000, 900)
JLIST2006 = (2, 0.384, 2880, 864)
JLIST2007 = (3, 0.368, 2760, 828)
JLIST2008 = (4, 0.352, 2640, 792)
JLIST2009 = (5, 0.336, 2520, 756)
JLIST2010 = (6, 0.32, 2400, 720)
JLIST2011 = (7, 0.304, 2280, 684)
JLIST2012 = (8, 0.288, 2160, 648)
JLIST2013 = (9, 0.272, 2040, 612)
JLIST2014 = (10, 0.256, 1920, 576)
JLIST2015 = (11, 0.24, 1800, 540)
JLIST2016 = (12, 0.224, 1680, 504)
JLIST2017 = (13, 0.208, 1560, 468)
JLIST2018 = (14, 0.192, 1440, 432)
JLIST2019 = (15, 0.176, 1320, 396)
JLIST2020 = (16, 0.16, 1200, 360)
JLIST2021 = (17, 0.152, 1140, 342)
JLIST2022 = (18, 0.144, 1080, 324)
JLIST2023 = (19, 0.136, 1020, 306)
JLIST2024 = (20, 0.128, 960, 288)
JLIST2025 = (21, 0.12, 900, 270)
JLIST2026 = (22, 0.112, 840, 252)
JLIST2027 = (23, 0.104, 780, 234)
JLIST2028 = (24, 0.096, 720, 216)
JLIST2029 = (25, 0.088, 660, 198)
JLIST2030 = (26, 0.08, 600, 180)
JLIST2031 = (27, 0.072, 540, 162)
JLIST2032 = (28, 0.064, 480, 144)
JLIST2033 = (29, 0.056, 420, 126)
JLIST2034 = (30, 0.048, 360, 108)
JLIST2035 = (31, 0.04, 300, 90)
JLIST2036 = (32, 0.032, 240, 72)
JLIST2037 = (33, 0.024, 180, 54)
JLIST2038 = (34, 0.016, 120, 36)
JLIST2039 = (35, 0.008, 60, 18)
JLIST2040 = (36, 0, 0, 0)
AF = 0
#1, wenn die Anwendung des Faktorverfahrens gewählt wurde (nur in Steuerklasse IV)
AJAHR = 2021
#Auf die Vollendung des 64. Lebensjahres folgendes #Kalenderjahr
#(erforderlich, wenn ALTER1=1)
ALTER1 = 1
#1, wenn das 64. Lebensjahr vor Beginn des Kalenderjahres vollendet
#wurde, in dem der Lohnzahlungszeitraum endet (§ 24a EStG), sonst = 0
ENTSCH = 0
#In VKAPA und VMT enthaltene Entschädigungen nach § 24
#Nummer 1 EStG sowie tarifermäßigt zu besteuernde Vorteile bei #Vermögensbeteiligungen (§ 19a #Absatz 4 EStG) in Cent
F = 0
#eingetragener Faktor mit drei Nachkommastellen
JFREIB = 0.000
#Jahresfreibetrag für die Ermittlung der Lohnsteuer für die sonstigen
#Bezüge sowie für Vermögensbeteiligungen nach § 19a Absatz 1 und 4 EStG nach #Maßgabe der #elektronischen
#Lohnsteuerabzugsmerkmale nach § 39e EStG oder der Eintragung auf der Bescheinigung #für den #Lohnsteuerabzug 2023 in Cent (ggf. 0)
JHINZU = 0
#Jahreshinzurechnungsbetrag für die Ermittlung der Lohnsteuer für
#die sonstigen Bezüge sowie für Vermögensbeteiligungen nach § 19a Absatz 1 und 4 #EStG nach #Maßgabe der elektronischen Lohnsteuerabzugsmerkmale nach § 39e EStG #oder der Eintragung auf #der Bescheinigung für den Lohnsteuerabzug 2023 in Cent #(ggf. 0)
JRE4 = 0
#Voraussichtlicher Jahresarbeitslohn ohne sonstige Bezüge (d.h.
#auch ohne Vergütung für mehrjährige Tätigkeit und ohne die zu besteuernden #Vorteile bei #Vermögensbeteiligungen, § 19a Absatz 4 EStG) in Cent. Anmerkung: Die #Eingabe dieses Feldes #(ggf. 0) ist erforderlich bei Eingaben zu sonstigen Bezügen #(Felder SONSTB, VMT oder VKAPA).
#Sind in einem vorangegangenen Abrechnungszeitraum bereits sonstige Bezüge gezahlt #worden, so #sind sie dem voraussichtlichen Jahresarbeitslohn hinzuzurechnen. #Gleiches gilt für zu besteuernde #Vorteile bei Vermögensbeteiligungen (§ 19a #Absatz 4 EStG). Vergütungen für mehrjährige Tätigkeit #aus einem vorangegangenen #Abrechnungszeitraum werden in voller Höhe hinzugerechnet.
JRE4ENT = 0
#In JRE4 enthaltene Entschädigungen nach § 24 Nummer 1 EStG
#und zu besteuernde Vorteile bei Vermögensbeteiligungen (§ 19a Absatz 4 EStG in #Cent
JVBEZ = 0
#In JRE4 enthaltene Versorgungsbezüge in Cent (ggf. 0)
KRV = 0
#Merker für die Vorsorgepauschale
#0 = der Arbeitnehmer ist in der gesetzlichen Rentenversicherung oder einer #berufsständischen #Versorgungseinrichtung pflichtversichert oder bei Befreiung von #der Versicherungspflicht freiwillig #versichert; es gilt die allgemeine #Beitragsbemessungsgrenze (BBG West)
#1 = der Arbeitnehmer ist in der gesetzlichen Rentenversicherung oder einer #berufsständischen #Versorgungseinrichtung pflichtversichert oder bei Befreiung von #der Versicherungspflicht freiwillig #versichert; es gilt die #Beitragsbemessungsgrenze Ost (BBG Ost)
#2 = wenn nicht 0 oder 1
KVZ = 0
#Kassenindividueller Zusatzbeitragssatz bei einem gesetzlich
#krankenversicherten Arbeitnehmer in Prozent (bspw. 1,60 für 1,60 %) mit 2 #Dezimalstellen. Es ist der #volle Zusatzbeitragssatz anzugeben. Die Aufteilung in #Arbeitnehmer- und Arbeitgeberanteil erfolgt im #Programmablauf.
#Siehe i.Ü. auch Erläuterungen unter Pkt. 2.4.
LZZ = 0
#Lohnzahlungszeitraum:
#1 = Jahr
#2 = Monat
#3 = Woche
#4 = Tag
LZZFREIB = 0
#Der als elektronisches Lohnsteuerabzugsmerkmal für den
#Arbeitgeber nach § 39e EStG festgestellte oder in der Bescheinigung für den #Lohnsteuerabzug 2023 #eingetragene Freibetrag für den Lohnzahlungszeitraum in Cent
LZZHINZU = 0
#Der als elektronisches Lohnsteuerabzugsmerkmal für den
#Arbeitgeber nach § 39e EStG festgestellte oder in der Bescheinigung für den #Lohnsteuerabzug 2023 #eingetragene Hinzurechnungsbetrag für den #Lohnzahlungszeitraum in Cent
MBV = 0
#Nicht zu besteuernde Vorteile bei Vermögensbeteiligungen (§ 19a
#Absatz 1 Satz 4 EStG) in Cent
PKPV = 0
#Dem Arbeitgeber mitgeteilte Beiträge des Arbeitnehmers für eine
#private Basiskranken- bzw. Pflege-Pflichtversicherung im Sinne des
#§ 10 Absatz 1 Nummer 3 EStG in Cent; der Wert ist unabhängig vom #Lohnzahlungszeitraum immer #als Monatsbetrag anzugeben
PKV = 0
#0 = gesetzlich krankenversicherte Arbeitnehmer
#1 = ausschließlich privat krankenversicherte Arbeitnehmer ohne Arbeitgeberzuschuss
#2 = ausschließlich privat krankenversicherte Arbeitnehmer mit Arbeitgeberzuschuss
PVS = 0
#1, wenn bei der sozialen Pflegeversicherung die Besonderheiten in
#Sachsen zu berücksichtigen sind bzw. zu berücksichtigen wären
PVZ = 0
#1, wenn der Arbeitnehmer den Zuschlag zur sozialen
#Pflegeversicherung zu zahlen hat
R = 0
#Religionsgemeinschaft des Arbeitnehmers lt. elektronischer
#Lohnsteuerabzugsmerkmale oder der Bescheinigung für den Lohnsteuerabzug 2023 (bei #keiner #Religionszugehörigkeit = 0)
RE4 = 0
#Steuerpflichtiger Arbeitslohn für den Lohnzahlungszeitraum vor
#Berücksichtigung des Versorgungsfreibetrags und des Zuschlags zum #Versorgungsfreibetrag, des #Altersentlastungsbetrags und des als elektronisches #Lohnsteuerabzugsmerkmal festgestellten oder #in der Bescheinigung für den #Lohnsteuerabzug 2023 für den Lohnzahlungszeitraum eingetragenen #Freibetrags bzw. #Hinzurechnungsbetrags in Cent
SONSTB = 0
#Sonstige Bezüge (ohne Vergütung aus mehrjähriger Tätigkeit)
#einschließlich nicht tarifermäßigt zu besteuernde Vorteile bei #Vermögensbeteiligungen und #Sterbegeld bei Versorgungsbezügen sowie #Kapitalauszahlungen/Abfindungen, soweit es sich nicht #um Bezüge für mehrere Jahre #handelt, in Cent (ggf. 0)
SONSTENT = 0
#In SONSTB enthaltene Entschädigungen nach § 24 Nummer 1 EStG
#sowie nicht tarifermäßigt zu besteuernde Vorteile bei Vermögensbeteiligungen in Cent
STERBE = 0
#Sterbegeld bei Versorgungsbezügen sowie
#Kapitalauszahlungen/Abfindungen, soweit es sich nicht um Bezüge für mehrere Jahre #handelt (in #SONSTB enthalten), in Cent
STKL = 3
#Steuerklasse:
#1 = I
#2 = II
#3 = III
#4 = IV
#5 = V
#6 = VI
VBEZ = 0
#In RE4 enthaltene Versorgungsbezüge in Cent (ggf. 0) ggf. unter
#Berücksichtigung einer geänderten Bemessungsgrundlage nach § 19 Absatz 2 Satz 10 #und 11 EStG
VBEZM = 0
#Versorgungsbezug im Januar 2005 bzw. für den ersten vollen Monat,
#wenn der Versorgungsbezug erstmalig nach Januar 2005 gewährt wurde, in Cent
VBEZS = 0
#Voraussichtliche Sonderzahlungen von Versorgungsbezügen im
#Kalenderjahr des Versorgungsbeginns bei Versorgungsempfängern ohne Sterbegeld, #Kapitalauszahlungen/Abfindungen in Cent
VBS = 0
#In SONSTB enthaltene Versorgungsbezüge einschließlich
#Sterbegeld in Cent (ggf. 0)
VJAHR = 2021
#Jahr, in dem der Versorgungsbezug erstmalig gewährt wurde;
#werden mehrere Versorgungsbezüge gezahlt, wird aus Vereinfachungsgründen für die #Berechnung #das Jahr des ältesten erstmaligen Bezugs herangezogen; auf die #Möglichkeit der getrennten #Abrechnung verschiedenartiger Bezüge (§ 39e Absatz 5a #EStG) wird im Übrigen verwiesen
VKAPA = 0
#Entschädigungen/Kapitalauszahlungen/Abfindungen/
#Nachzahlungen bei Versorgungsbezügen für mehrere Jahre in Cent (ggf. 0)
VMT = 0
#Entschädigungen und Vergütung für mehrjährige Tätigkeit sowie
#tarifermäßigt zu besteuernde Vorteile bei Vermögensbeteiligungen (§ 19a Absatz 4 #Satz 2 EStG) #ohne Kapitalauszahlungen und ohne Abfindungen bei Versorgungsbezügen #in Cent (ggf. 0)
ZKF = 0
#Zahl der Freibeträge für Kinder (eine Dezimalstelle, nur bei
#Steuerklassen I, II, III und IV)
ZMVB = 0
#Zahl der Monate, für die im Kalenderjahr Versorgungsbezüge
#gezahlt werden [nur erforderlich bei Jahresberechnung (LZZ = 1)]
#3.2 Ausgangsparameter
#Als Ergebnis stellt das Programm folgende Ausgangsparameter zur Verfügung:
BK = 0
#Bemessungsgrundlage für die Kirchenlohnsteuer in Cent
BKS = 0
#Bemessungsgrundlage der sonstigen Bezüge (ohne Vergütung für
#mehrjährige Tätigkeit) für die Kirchenlohnsteuer in Cent.
#Hinweis: Negativbeträge, die aus nicht zu besteuernden Vorteilen bei #Vermögensbeteiligungen (§ #19a Absatz 1 Satz 4 EStG) resultieren, mindern BK #(maximal bis 0). Der Sonderausgabenabzug für #tatsächlich erbrachte #Vorsorgeaufwendungen im Rahmen der Veranlagung zur Einkommensteuer #bleibt #unberührt.

BKV = 0
#Bemessungsgrundlage der Vergütung für mehrjährige Tätigkeit und
#der tarifermäßigt zu besteuernden Vorteile bei Vermögensbeteiligungen für die #Kirchenlohnsteuer in #Cent
LSTLZZ = 0
#Für den Lohnzahlungszeitraum einzubehaltende Lohnsteuer in Cent
SOLZLZZ = 0
#Für den Lohnzahlungszeitraum einzubehaltender
#Solidaritätszuschlag in Cent
SOLZS = 0
#Solidaritätszuschlag für sonstige Bezüge (ohne Vergütung für
#mehrjährige Tätigkeit in Cent.
#Hinweis: Negativbeträge, die aus nicht zu besteuernden Vorteilen bei #Vermögensbeteiligungen (§ #19a Absatz 1 Satz 4 EStG) resultieren, mindern SOLZLZZ #(maximal bis 0). Der #Sonderausgabenabzug für tatsächlich erbrachte #Vorsorgeaufwendungen im Rahmen der #Veranlagung zur Einkommensteuer bleibt #unberührt.
SOLZV = 0
#Solidaritätszuschlag für die Vergütung für mehrjährige Tätigkeit und
#der tarifermäßigt zu besteuernden Vorteile bei Vermögensbeteiligungen in Cent
STS = 0
#Lohnsteuer für sonstige Bezüge (ohne Vergütung für mehrjährige
#Tätigkeit und ohne tarifermäßigt zu besteuernde Vorteile bei #Vermögensbeteiligungen) in Cent
#Hinweis: Negativbeträge, die aus nicht zu besteuernden Vorteilen bei #Vermögensbeteiligungen (§ #19a Absatz 1 Satz 4 EStG) resultieren, mindern LSTLZZ #(maximal bis 0). Der Sonderausgabenabzug #für tatsächlich erbrachte #Vorsorgeaufwendungen im Rahmen der Veranlagung zur Einkommensteuer #bleibt #unberührt.
STV = 0
#Lohnsteuer für die Vergütung für mehrjährige Tätigkeit und der
#tarifermäßigt zu besteuernden Vorteile bei Vermögensbeteiligungen in Cent
VKVLZZ = 0
#Für den Lohnzahlungszeitraum berücksichtigte Beiträge des
#Arbeitnehmers zur privaten Basis-Krankenversicherung und privaten Pflege-#Pflichtversicherung (ggf. #auch die Mindestvorsorgepauschale) in Cent beim #laufenden Arbeitslohn. Für Zwecke der #Lohnsteuerbescheinigung sind die einzelnen #Ausgabewerte außerhalb des eigentlichen #Lohnsteuerberechnungsprogramms zu #addieren; hinzuzurechnen sind auch die Ausgabewerte #VKVSONST.
VKVSONST = 0
#Für den Lohnzahlungszeitraum berücksichtigte Beiträge des
#Arbeitnehmers zur privaten Basis-Krankenversicherung und privaten Pflege-#Pflichtversicherung (ggf. #auch die Mindestvorsorgepauschale) in Cent bei #sonstigen Bezügen. Der Ausgabewert kann auch #negativ sein. Für tarifermäßigt zu #besteuernde Vergütungen für mehrjährige Tätigkeiten enthält der #PAP keinen #entsprechenden Ausgabewert.
VFRB = 0
#Verbrauchter Freibetrag bei Berechnung des laufenden Arbeitslohns,
#in Cent
VFRBS1 = 0
#Verbrauchter Freibetrag bei Berechnung des voraussichtlichen
#Jahresarbeitslohns, in Cent
VFRBS2 = 0
#Verbrauchter Freibetrag bei Berechnung der sonstigen Bezüge, in
#Cent
WVFRB = 0
#Für die weitergehende Berücksichtigung des Steuerfreibetrags nach
#dem DBA Türkei verfügbares ZVE über dem Grundfreibetrag bei der Berechnung des laufenden #Arbeitslohns, in Cent
WVFRBM = 0
#Für die weitergehende Berücksichtigung des Steuerfreibetrags nach
#dem DBA Türkei verfügbares ZVE über dem Grundfreibetrag bei der Berechnung der sonstigen #Bezüge, in Cent
WVFRBO = 0
#Für die weitergehende Berücksichtigung des Steuerfreibetrags nach
#dem DBA Türkei verfügbares ZVE über dem Grundfreibetrag bei der Berechnung des #voraussichtlichen Jahresarbeitslohns, in Cent
ALTE = 0
#Altersentlastungsbetrag in Euro, Cent (2 Dezimalstellen)
ANP = 0
#Arbeitnehmer-Pauschbetrag/Werbungskosten-Pauschbetrag in Euro
ANTEIL1 = 0
#Auf den Lohnzahlungszeitraum entfallender Anteil von Jahreswerten
#auf ganze Cent abgerundet
BBGKVPV = 0
#Beitragsbemessungsgrenze in der gesetzlichen
#Krankenversicherung und der sozialen Pflegeversicherung in Euro
BBGRV = 0
#Allgemeine Beitragsbemessungsgrenze in der allgemeinen
#Rentenversicherung in Euro
BMG = 0
#Bemessungsgrundlage für Altersentlastungsbetrag in Euro, Cent
#(2 Dezimalstellen)
#Differenz zwischen ST1 und ST2 in Euro
EFA = 0
#Entlastungsbetrag für Alleinerziehende in Euro
FVB = 0
#Versorgungsfreibetrag in Euro, Cent (2 Dezimalstellen)
FVBSO = 0
#Versorgungsfreibetrag in Euro, Cent (2 Dezimalstellen) für die
#Berechnung der Lohnsteuer für den sonstigen Bezug
FVBZ = 0
#Zuschlag zum Versorgungsfreibetrag in Euro
FVBZSO = 0
#Zuschlag zum Versorgungsfreibetrag in Euro für die Berechnung der
#Lohnsteuer beim sonstigen Bezug
GFB = 0
#Grundfreibetrag in Euro
HBALTE = 0
#Maximaler Altersentlastungsbetrag in Euro
HFVB = 0
#Maßgeblicher maximaler Versorgungsfreibetrag in Euro
HFVBZ = 0
#Maßgeblicher maximaler Zuschlag zum Versorgungsfreibetrag in
#Euro, Cent (2 Dezimalstellen)
FVBZSO = 0
#Maßgeblicher maximaler Zuschlag zum Versorgungsfreibetrag in
#Euro, Cent (2 Dezimalstellen) für die Berechnung der Lohnsteuer für den sonstigen Bezug
HOCH = 0
#Zwischenfeld zu X für die Berechnung der Steuer nach § 39b
#Absatz 2 Satz 7 EStG in Euro
J = 0
#Nummer der Tabellenwerte für Versorgungsparameter
JBMG = 0
#Jahressteuer nach § 51a EStG, aus der Solidaritätszuschlag und
#Bemessungsgrundlage für die Kirchenlohnsteuer ermittelt werden, in Euro
JLFREIB = 0
#Auf einen Jahreslohn hochgerechneter LZZFREIB in Euro, Cent
#(2 Dezimalstellen)
JLHINZU = 0
#Auf einen Jahreslohn hochgerechneter LZZHINZU in Euro, Cent
#(2 Dezimalstellen)
JW = 0
#Jahreswert, dessen Anteil für einen Lohnzahlungszeitraum in
#UPANTEIL errechnet werden soll, in Cent
K = 0
#Nummer der Tabellenwerte für Parameter bei
#Altersentlastungsbetrag
KENNVMT = 0
#Merker für Berechnung Lohnsteuer für mehrjährige Tätigkeit
#0 = normale Steuerberechnung
#1 = Steuerberechnung für mehrjährige Tätigkeit
#2 = Ermittlung der Vorsorgepauschale ohne Entschädigungen i.S.d. § 24 Nummer 1 EStG
KFB = 0
#Summe der Freibeträge für Kinder in Euro
KVSATZAG = 0
#Beitragssatz des Arbeitgebers zur Krankenversicherung unter
#Berücksichtigung des durchschnittlichen Zusatzbeitragssatzes für die Ermittlung des #Arbeitgeberzuschusses (5 Dezimalstellen)
KVSATZAN = 0
#Beitragssatz des Arbeitnehmers zur Krankenversicherung
#(5 Dezimalstellen)
KZTAB = 2
#Kennzahl für die Einkommensteuer-Tarifarten:
#1 = Grundtarif
#2 = Splittingverfahren
LSTJAHR = 0
#Jahreslohnsteuer in Euro
LST1 = 0
LST2 = 0
LST3 = 0
LSTOSO = 0
LSTSO = 0
#Zwischenfelder der Jahreslohnsteuer in Cent
MIST = 0
#Mindeststeuer für die Steuerklassen V und VI in Euro
PVSATZAG = 0
#Beitragssatz des Arbeitgebers zur Pflegeversicherung
#(6 Dezimalstellen)
PVSATZAN = 0
#Beitragssatz des Arbeitnehmers zur Pflegeversicherung
#(6 Dezimalstellen)
RVSATZAN = 0
#Beitragssatz des Arbeitnehmers in der allgemeinen gesetzlichen
#Rentenversicherung (4 Dezimalstellen)
RW = 0
#Rechenwert in Gleitkommadarstellung
SAP = 0
#Sonderausgaben-Pauschbetrag in Euro
SOLZFREI = 0
#Freigrenze für den Solidaritätszuschlag in Euro
SOLZJ = 0
#Solidaritätszuschlag auf die Jahreslohnsteuer in Euro, Cent
#(2 Dezimalstellen)
SOLZMIN = 0
#Zwischenwert für den Solidaritätszuschlag auf die Jahreslohnsteuer
#in Euro, Cent (2 Dezimalstellen)
SOLZSBMG = 0
#Bemessungsgrundlage des Solidaritätszuschlags zur Prüfung der
#Freigrenze beim Solidaritätszuschlag für sonstige Bezüge (ohne Vergütung für #mehrjährige Tätigkeit) #in Euro
SOLZSZVE = 0
#Zu versteuerndes Einkommen für die Ermittlung der
#Bemessungsgrundlage des Solidaritätszuschlags zur Prüfung der Freigrenze beim #Solidaritätszuschlag für sonstige Bezüge (ohne Vergütung für mehrjährige #Tätigkeit) in Euro, Cent (2 #Dezimalstellen) Seite 11 von 41
SOLZVBMG = 0
#Bemessungsgrundlage des Solidaritätszuschlags für die Prüfung der
#Freigrenze beim Solidaritätszuschlag für die Vergütung für mehrjährige Tätigkeit #in Euro
ST = 0
#Tarifliche Einkommensteuer in Euro
ST1 = 0
#Tarifliche Einkommensteuer auf das 1,25-fache ZX in Euro
ST2 = 0
#Tarifliche Einkommensteuer auf das 0,75-fache ZX in Euro
STOVMT = 0
#Zwischenfeld zur Ermittlung der Steuer auf Vergütungen für
#mehrjährige Tätigkeit in Euro
TAB1 = 0
#Tabelle für die Prozentsätze des Versorgungsfreibetrags
TAB2 = 0
#Tabelle für die Höchstbeträge des Versorgungsfreibetrags
TAB3 = 0
#Tabelle für die Zuschläge zum Versorgungsfreibetrag
TAB4 = 0
#Tabelle für die Prozentsätze des Altersentlastungsbetrags
TAB5 = 0
#Tabelle für die Höchstbeträge des Altersentlastungsbetrags
TBSVORV = 0
#Teilbetragssatz der Vorsorgepauschale für die Rentenversicherung
#(2 Dezimalstellen)
VBEZB = 0
#Bemessungsgrundlage für den Versorgungsfreibetrag in Cent
VBEZBSO = 0
#Bemessungsgrundlage für den Versorgungsfreibetrag in Cent für
#den sonstigen Bezug
VERGL = 0
#Zwischenfeld zu X für die Berechnung der Steuer nach § 39b
#Absatz 2 Satz 7 EStG in Euro
VHB = 0
#Höchstbetrag der Mindestvorsorgepauschale für die Kranken- und
#Pflegeversicherung in Euro, Cent(2 Dezimalstellen)
VKV = 0
#Jahreswert der berücksichtigten Beiträge zur privaten Basis-
#Krankenversicherung und privaten Pflege-Pflichtversicherung (ggf. auch die #Mindestvorsorgepauschale) in Cent
VSP = 0
#Vorsorgepauschale mit Teilbeträgen für die Rentenversicherung
#sowie die gesetzliche Kranken- und soziale Pflegeversicherung nach fiktiven #Beträgen oder ggf. für #die private Basiskrankenversicherung und private Pflege-#Pflichtversicherung in Euro, Cent (2 #Dezimalstellen)
VSPN = 0
#Vorsorgepauschale mit Teilbeträgen für die Rentenversicherung
#sowie der Mindestvorsorgepauschale für die Kranken- und Pflegeversicherung in #Euro, Cent (2 #Dezimalstellen)
VSP1 = 0
#Zwischenwert 1 bei der Berechnung der Vorsorgepauschale in Euro,
#Cent (2 Dezimalstellen)
VSP2 = 0
#Zwischenwert 2 bei der Berechnung der Vorsorgepauschale in Eur
#Cent (2 Dezimalstellen)
VSP3 = 0
#Vorsorgepauschale mit Teilbeträgen für die gesetzliche Kranken-
#und soziale Pflegeversicherung nach fiktiven Beträgen oder ggf. fü die private #Basiskrankenversicherung und private PflegePflichtversicherung in Euro, Cent (2 #Dezimalstellen)
W1STKL5 = 0
#Erster Grenzwert in Steuerklasse V/VI in Euro
W2STKL5 = 0
#Zweiter Grenzwert in Steuerklasse V/VI in Euro
W3STKL5 = 0
#Dritter Grenzwert in Steuerklasse V/VI in Euro
X = 0
#Zu versteuerndes Einkommen gem. § 32a Absatz 1 und 5 EStG in
#Euro, Cent(2 Dezimalstellen)
Y = 0
#Gem. § 32a Absatz 1 EStG (6 Dezimalstellen)
ZRE4 = 0
#Auf einen Jahreslohn hochgerechnetes RE4 in Euro, Cent
#(2 Dezimalstellen) nach Abzug der Freibeträge nach § 39b Absatz Satz 3 und 4 EStG
ZRE4J = 0
#Auf einen Jahreslohn hochgerechnetes RE4 in Euro, Cent
#(2 Dezimalstellen)
ZRE4VP = 0
#Auf einen Jahreslohn hochgerechnetes RE4, ggf. nach Abzug der
#Entschädigungen i.S.d. § 24 Nummer 1 EStG in Euro, Cent (2 Dezimalstellen)
ZTABFB = 0
#Feste Tabellenfreibeträge (ohne Vorsorgepauschale) in Euro, Cent
#(2 Dezimalstellen)
ZVBEZ = 0
#Auf einen Jahreslohn hochgerechnetes VBEZ abzüglich FVB in
#Euro, Cent (2 Dezimalstellen)
ZVBEZJ = 0
#Auf einen Jahreslohn hochgerechnetes VBEZ in Euro, Cent
#(2 Dezimalstellen)
ZVE = 0
#Zu versteuerndes Einkommen in Euro, Cent (2 Dezimalstellen)
ZX = 0
#Zwischenfeld zu X für die Berechnung der Steuer nach § 39b
#Absatz 2 Satz 7 EStG in Euro
ZZX = 0
#Zwischenfeld zu X für die Berechnung der #Steuer nach § 39b
#Absatz 2 Satz 7 EStG in Euro
#Stand: 19.6.2023 (endgültig)
STEUERPAP()
Benutzeravatar
__blackjack__
User
Beiträge: 13583
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@oldboyJR: Nein auch für Zwischenwerte ist die Nummerierung von Namen nicht sinnvoll. Die Zwischenwerte haben ja auch eine Bedeutung und *die* sollte der Name widergeben, nicht eine nichtssagende Nummer.

An globalen Variablen ist nicht die Grossschreibung das Problem sondern das es eine globale Variable ist. So etwas sollte es nicht geben. Variablen sind lokal oder keine Variablen sondern Konstanten.

Die Namen aus dem Steuer-PAP sind alle schlecht, weil so ziemlich alles eine kryptische Abkürzung ist die einen Kommentar zur Erklärung braucht. Programmablaufpläne und solche Namen waren mal bei Fortran- oder Cobol-Programmen ”modern”. Wo Gründe für solche Namen Programmiersprachen waren bei denen die Anzahl der signifikanten Zeichen bei Variablennamen auf wenige Zeichen beschränkt war, und es keinen Unterschied zwischen Gross- und Kleinschreibung gab, und nicht alle Systeme Kleinbuchstaben überhaupt konnten. Die Namen sind maximal 8 Zeichen lang. Es gibt antike Sprachen/Implementierungen wo dass die maximale Länge von Bezeichnern war.

Auch auf einer Klasse haben Variablen nichts zu suchen, denn das macht sie auch zu globalen Variablen. Und es macht keinen Sinn alle Variablen vorher mit 0 zu initialisieren. Man definiert Variablen dann wenn man sie braucht, nicht alle am Anfang mal auf ”Vorrat”.

Selbst wenn das alles Konstanten wären: 203 sind ein bisschen zu viel um das noch überblicken zu können. Zudem sind da Namen dabei die es nur geben muss wenn bestimmte Bedingungen erfüllt sind.

Kommentare werden per Konvention *vor* dem Code geschrieben der kommentiert wird. Und Kommentare sollten der semantischen Einrückung folgen, damit diese visuelle Hilfe den Code zu verstehen nicht zerstört wird.

Man missbraucht nicht 0 und 1 für Wahrheitswerte. Python hat da einen eigenen Datentyp (`bool`) mit den Werten `True` und `False`.

Ebenso sollte man auch keine ”magischen” Zahlen verwenden wenn es mehr Werte als 0 und 1 gibt, oder wenn die nicht für einen Wahrheitswert stehen. Dafür gibt es in den meisten Programmiersprachen Aufzählungstypen. In Python im `enum`-Modul.

Den Programmablaufplan aus dem PDF 1:1 so umsetzen wie er da steht wird in keiner modernen Sprache zu einem idiomatischen, verständlichen Quelltext führen.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Benutzeravatar
grubenfox
User
Beiträge: 542
Registriert: Freitag 2. Dezember 2022, 15:49

und wie __blackjack__ schon schrieb: das ganze KLIST...-Zeug und das JLIST...-Zeug gehört in Listen oder Dictionaries. So wie es jetzt ist, führt das nur zu übler Migräne... :(
Benutzeravatar
grubenfox
User
Beiträge: 542
Registriert: Freitag 2. Dezember 2022, 15:49

__blackjack__ hat geschrieben: Montag 1. April 2024, 12:06 Den Programmablaufplan aus dem PDF 1:1 so umsetzen wie er da steht wird in keiner modernen Sprache zu einem idiomatischen, verständlichen Quelltext führen.
Aber man könnte es wohl als Grundlage für eine Lehrstunde in Sachen "Refactoring" nutzen...
Benutzeravatar
__blackjack__
User
Beiträge: 13583
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Vor allem ist sind die Daten in KLIST und JLIST in dem PDF tatsächlich Tabellen/Arrays und keine einzelnen Variablen. Das ist also nochmal eine Verschlecherung gegenüber der Vorlage.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
oldboyJR
User
Beiträge: 40
Registriert: Donnerstag 28. März 2024, 16:19

Sagen wir es mal so. auch die PaP ist nicht Benutzerfreundlich und wenn das die Durchführungsordnung widerspiegelt soll uns nicht wundern wenn Finanzbeamte nie einen ordentliche Bescheid erstellen. Sie berücksichtigt aber nicht z.B. Arbeitnehmer die gleichzeitig Rentner sind. Sie werden einfach hinzuaddiert. Das Rentner ihre Pflegeversicherung selber zahlen müsssen; verplichtet sie doch nicht das sie es für den Hinzuverdienst auch die Plegeversicherung komplett bezahlen müssen. oder? Ich sehe auch keine Unterschiedsbehandlung für Arbeitnehmer die bei Überschreitung der Bemessungsgrenze für Versicherungspflicht weiter in der freiwillig gesetzlichen Krankenkasse bleiben. Oder der Arbeitgeber nur den allgem. Krankenkassensatz (nicht die Hälfte) bezahlt. Ich sehe auch kein Feld wo festgehalten ist steuerfreier Zuschlag laut Tarif, von denen man in letzter Zeit so häufig bei den Tarifabschlüssen hört. So wie ich das sehe wird das in der Einkommenssteuer nachträglich mit 50% versteuert. Und das nicht sofort alle Euro cent = BigDezimal deklariert ist muß mich auch wundern.
Aber hier gerne noch den Kommentar getauscht. Als doc wegen Länge aber teilweise unbrauchbar.
#1, wenn die Anwendung des Faktorverfahrens gewählt wurde (nur in Steuerklasse IV)
AF = 0
#Auf die Vollendung des 64. Lebensjahres folgendes #Kalenderjahr
#(erforderlich, wenn ALTER1=1)
AJAHR = 1
#1, wenn das 64. Lebensjahr vor Beginn des Kalenderjahres vollendet
#wurde, in dem der Lohnzahlungszeitraum endet (§ 24a EStG), sonst = 0
ALTER1 = 1
#In VKAPA und VMT enthaltene Entschädigungen nach § 24
#Nummer 1 EStG sowie tarifermäßigt zu besteuernde Vorteile bei #Vermögensbeteiligungen (§ 19a #Absatz 4 EStG) in Cent
ENTSCH = 0
#eingetragener Faktor mit drei Nachkommastellen
F = 0
#Jahresfreibetrag für die Ermittlung der Lohnsteuer für die sonstigen
#Bezüge sowie für Vermögensbeteiligungen nach § 19a Absatz 1 und 4 EStG nach #Maßgabe der #elektronischen
#Lohnsteuerabzugsmerkmale nach § 39e EStG oder der Eintragung auf der Bescheinigung #für den #Lohnsteuerabzug 2023 in Cent (ggf. 0)
JFREIB = 0.000
#Jahreshinzurechnungsbetrag für die Ermittlung der Lohnsteuer für
#die sonstigen Bezüge sowie für Vermögensbeteiligungen nach § 19a Absatz 1 und 4 #EStG nach #Maßgabe der elektronischen Lohnsteuerabzugsmerkmale nach § 39e EStG #oder der Eintragung auf #der Bescheinigung für den Lohnsteuerabzug 2023 in Cent #(ggf. 0)
JHINZU = 0
#Voraussichtlicher Jahresarbeitslohn ohne sonstige Bezüge (d.h.
#auch ohne Vergütung für mehrjährige Tätigkeit und ohne die zu besteuernden #Vorteile bei #Vermögensbeteiligungen, § 19a Absatz 4 EStG) in Cent. Anmerkung: Die #Eingabe dieses Feldes #(ggf. 0) ist erforderlich bei Eingaben zu sonstigen Bezügen #(Felder SONSTB, VMT oder VKAPA).
#Sind in einem vorangegangenen Abrechnungszeitraum bereits sonstige Bezüge gezahlt #worden, so #sind sie dem voraussichtlichen Jahresarbeitslohn hinzuzurechnen. #Gleiches gilt für zu besteuernde #Vorteile bei Vermögensbeteiligungen (§ 19a #Absatz 4 EStG). Vergütungen für mehrjährige Tätigkeit #aus einem vorangegangenen #Abrechnungszeitraum werden in voller Höhe hinzugerechnet.
JRE4 = 0
#In JRE4 enthaltene Entschädigungen nach § 24 Nummer 1 EStG
#und zu besteuernde Vorteile bei Vermögensbeteiligungen (§ 19a Absatz 4 EStG in #Cent
JRE4ENT = 0
#In JRE4 enthaltene Versorgungsbezüge in Cent (ggf. 0)
KRV = 0
#Merker für die Vorsorgepauschale
#0 = der Arbeitnehmer ist in der gesetzlichen Rentenversicherung oder einer #berufsständischen #Versorgungseinrichtung pflichtversichert oder bei Befreiung von #der #Versicherungspflicht freiwillig #versichert; es gilt die allgemeine #Beitragsbemessungsgrenze (BBG West)
#1 = der Arbeitnehmer ist in der gesetzlichen Rentenversicherung oder einer #berufsständischen #Versorgungseinrichtung pflichtversichert oder bei Befreiung von #der Versicherungspflicht freiwillig #versichert; es gilt die #Beitragsbemessungsgrenze Ost
#(BBG Ost)
#2 = wenn nicht 0 oder 1
JVBEZ = 0
#Kassenindividueller Zusatzbeitragssatz bei einem gesetzlich
#krankenversicherten Arbeitnehmer in Prozent (bspw. 1,60 für 1,60 %) mit 2 #Dezimalstellen. Es ist der #volle Zusatzbeitragssatz anzugeben. Die Aufteilung in #Arbeitnehmer- und Arbeitgeberanteil erfolgt im #Programmablauf.
#Siehe i.Ü. auch Erläuterungen unter Pkt. 2.4.
KVZ = 0
#Lohnzahlungszeitraum:
#1 = Jahr
#2 = Monat
#3 = Woche
#4 = Tag
LZZ = 0
#Der als elektronisches Lohnsteuerabzugsmerkmal für den
#Arbeitgeber nach § 39e EStG festgestellte oder in der Bescheinigung für den #Lohnsteuerabzug 2023 #eingetragene Freibetrag für den Lohnzahlungszeitraum in Cent
LZZFREIB = 0
#Der als elektronisches Lohnsteuerabzugsmerkmal für den
#Arbeitgeber nach § 39e EStG festgestellte oder in der Bescheinigung für den #Lohnsteuerabzug 2023 #eingetragene Hinzurechnungsbetrag für den #Lohnzahlungszeitraum in Cent
LZZHINZU = 0
#Nicht zu besteuernde Vorteile bei Vermögensbeteiligungen (§ 19a
#Absatz 1 Satz 4 EStG) in Cent
MBV = 0
#Dem Arbeitgeber mitgeteilte Beiträge des Arbeitnehmers für eine
#private Basiskranken- bzw. Pflege-Pflichtversicherung im Sinne des
#§ 10 Absatz 1 Nummer 3 EStG in Cent; der Wert ist unabhängig vom #Lohnzahlungszeitraum immer #als Monatsbetrag anzugeben
PKPV = 0
#0 = gesetzlich krankenversicherte Arbeitnehmer
#1 = ausschließlich privat krankenversicherte Arbeitnehmer ohne Arbeitgeberzuschuss
#2 = ausschließlich privat krankenversicherte Arbeitnehmer mit Arbeitgeberzuschuss
PKV = 0
#1, wenn bei der sozialen Pflegeversicherung die Besonderheiten in
#Sachsen zu berücksichtigen sind bzw. zu berücksichtigen wären
PVS = 0
#1, wenn der Arbeitnehmer den Zuschlag zur sozialen
#Pflegeversicherung zu zahlen hat
PVZ = 0
#Religionsgemeinschaft des Arbeitnehmers lt. elektronischer
#Lohnsteuerabzugsmerkmale oder der Bescheinigung für den Lohnsteuerabzug 2023 (bei #keiner #Religionszugehörigkeit = 0)
R = 0
#Steuerpflichtiger Arbeitslohn für den Lohnzahlungszeitraum vor
#Berücksichtigung des Versorgungsfreibetrags und des Zuschlags zum #Versorgungsfreibetrag, des #Altersentlastungsbetrags und des als elektronisches #Lohnsteuerabzugsmerkmal festgestellten oder #in der Bescheinigung für den #Lohnsteuerabzug 2023 für den Lohnzahlungszeitraum eingetragenen #Freibetrags bzw. #Hinzurechnungsbetrags in Cent
RE4 = 0
#Sonstige Bezüge (ohne Vergütung aus mehrjähriger Tätigkeit)
#einschließlich nicht tarifermäßigt zu besteuernde Vorteile bei #Vermögensbeteiligungen und #Sterbegeld bei Versorgungsbezügen sowie #Kapitalauszahlungen/Abfindungen, soweit es sich nicht #um Bezüge für mehrere Jahre #handelt, in Cent (ggf. 0)
SONSTB = 0
#In SONSTB enthaltene Entschädigungen nach § 24 Nummer 1 EStG
#sowie nicht tarifermäßigt zu besteuernde Vorteile bei Vermögensbeteiligungen in Cent
SONSTENT = 0
#Sterbegeld bei Versorgungsbezügen sowie
#Kapitalauszahlungen/Abfindungen, soweit es sich nicht um Bezüge für mehrere Jahre #handelt (in #SONSTB enthalten), in Cent
STERBE = 0
#Steuerklasse:
#1 = I
#2 = II
#3 = III
#4 = IV
#5 = V
#6 = VI
STKL = 3
#In RE4 enthaltene Versorgungsbezüge in Cent (ggf. 0) ggf. unter
#Berücksichtigung einer geänderten Bemessungsgrundlage nach § 19 Absatz 2 Satz 10 #und 11 EStG
VBEZ = 0
#Versorgungsbezug im Januar 2005 bzw. für den ersten vollen Monat,
#wenn der Versorgungsbezug erstmalig nach Januar 2005 gewährt wurde, in Cent
VBEZM = 0
#Voraussichtliche Sonderzahlungen von Versorgungsbezügen im
#Kalenderjahr des Versorgungsbeginns bei Versorgungsempfängern ohne Sterbegeld,
#Kapitalauszahlungen/Abfindungen in Cent
VBEZS = 0
#In SONSTB enthaltene Versorgungsbezüge einschließlich
#Sterbegeld in Cent (ggf. 0)
VBS = 0
#Jahr, in dem der Versorgungsbezug erstmalig gewährt wurde;
#werden mehrere Versorgungsbezüge gezahlt, wird aus Vereinfachungsgründen für die #Berechnung
#das Jahr des ältesten erstmaligen Bezugs herangezogen; auf die #Möglichkeit der getrennten
#Abrechnung verschiedenartiger Bezüge (§ 39e Absatz 5a #EStG) wird im Übrigen verwiesen
VJAHR = 0
#Entschädigungen/Kapitalauszahlungen/Abfindungen/
#Nachzahlungen bei Versorgungsbezügen für mehrere Jahre in Cent (ggf. 0)
VKAPA = 0
#Entschädigungen und Vergütung für mehrjährige Tätigkeit sowie
#tarifermäßigt zu besteuernde Vorteile bei Vermögensbeteiligungen (§ 19a Absatz 4 #Satz 2 EStG)
##ohne Kapitalauszahlungen und ohne Abfindungen bei Versorgungsbezügen #in Cent (ggf. 0)
VMT = 0
#Zahl der Freibeträge für Kinder (eine Dezimalstelle, nur bei
#Steuerklassen I, II, III und IV)
ZKF = 0
#Zahl der Monate, für die im Kalenderjahr Versorgungsbezüge
#gezahlt werden [nur erforderlich bei Jahresberechnung (LZZ = 1)]
#3.2 Ausgangsparameter
#Als Ergebnis stellt das Programm folgende Ausgangsparameter zur Verfügung:
ZMVB = 0
#Bemessungsgrundlage für die Kirchenlohnsteuer in Cent
BK = 0
#Bemessungsgrundlage der sonstigen Bezüge (ohne Vergütung für
#mehrjährige Tätigkeit) für die Kirchenlohnsteuer in Cent.
#Hinweis: Negativbeträge, die aus nicht zu besteuernden Vorteilen bei
#Vermögensbeteiligungen (§ #19a Absatz 1 Satz 4 EStG) resultieren, mindern BK
#(maximal bis 0). Der Sonderausgabenabzug für #tatsächlich erbrachte
#Vorsorgeaufwendungen im Rahmen der Veranlagung zur Einkommensteuer bleibt unberührt.
BKS = 0
#Bemessungsgrundlage der Vergütung für mehrjährige Tätigkeit und
#der tarifermäßigt zu besteuernden Vorteile bei Vermögensbeteiligungen für die #Kirchenlohnsteuer in #Cent
BKV = 0
#Für den Lohnzahlungszeitraum einzubehaltende Lohnsteuer in Cent
LSTLZZ = 0
#Für den Lohnzahlungszeitraum einzubehaltender
#Solidaritätszuschlag in Cent
SOLZLZZ = 0
#Solidaritätszuschlag für sonstige Bezüge (ohne Vergütung für
#mehrjährige Tätigkeit in Cent.
#Hinweis: Negativbeträge, die aus nicht zu besteuernden Vorteilen bei #Vermögensbeteiligungen
#(§ #19a Absatz 1 Satz 4 EStG) resultieren, mindern SOLZLZZ #(maximal bis 0).
#Der Sonderausgabenabzug für tatsächlich erbrachte #Vorsorgeaufwendungen im Rahmen der
##Veranlagung zur Einkommensteuer bleibt #unberührt.
SOLZS = 0
#Solidaritätszuschlag für die Vergütung für mehrjährige Tätigkeit und
#der tarifermäßigt zu besteuernden Vorteile bei Vermögensbeteiligungen in Cent
SOLZV = 0
#Lohnsteuer für sonstige Bezüge (ohne Vergütung für mehrjährige
#Tätigkeit und ohne tarifermäßigt zu besteuernde Vorteile bei #Vermögensbeteiligungen) in Cent
#Hinweis: Negativbeträge, die aus nicht zu besteuernden Vorteilen bei
#Vermögensbeteiligungen (§ #19a Absatz 1 Satz 4 EStG) resultieren, mindern LSTLZZ
##(maximal bis 0). Der Sonderausgabenabzug #für tatsächlich erbrachte #Vorsorgeaufwendungen
#im Rahmen der Veranlagung zur Einkommensteuer #bleibt #unberührt.
STS = 0
#Lohnsteuer für die Vergütung für mehrjährige Tätigkeit und der
#tarifermäßigt zu besteuernden Vorteile bei Vermögensbeteiligungen in Cent
STV = 0
#Für den Lohnzahlungszeitraum berücksichtigte Beiträge des
#Arbeitnehmers zur privaten Basis-Krankenversicherung und privaten Pflege-#Pflichtversicherung
#(ggf. #auch die Mindestvorsorgepauschale) in Cent beim #laufenden Arbeitslohn.
#Für Zwecke der #Lohnsteuerbescheinigung sind die einzelnen #Ausgabewerte außerhalb des
#eigentlichen #Lohnsteuerberechnungsprogramms zu #addieren; hinzuzurechnen sind auch die Ausgabewerte #VKVSONST.
VKVLZZ = 0
#Für den Lohnzahlungszeitraum berücksichtigte Beiträge des
#Arbeitnehmers zur privaten Basis-Krankenversicherung und privaten Pflege-#Pflichtversicherung
#(ggf. #auch die Mindestvorsorgepauschale) in Cent bei #sonstigen Bezügen. Der Ausgabewert kann auch
##negativ sein. Für tarifermäßigt zu #besteuernde Vergütungen für mehrjährige Tätigkeiten enthält der
##PAP keinen #entsprechenden Ausgabewert.
VKVSONST = 0
#Verbrauchter Freibetrag bei Berechnung des laufenden Arbeitslohns,
#in Cent
VFRB = 0
#Verbrauchter Freibetrag bei Berechnung des voraussichtlichen
#Jahresarbeitslohns, in Cent
VFRBS1 = 0
#Verbrauchter Freibetrag bei Berechnung der sonstigen Bezüge, in
#Cent
VFRBS2 = 0
#Für die weitergehende Berücksichtigung des Steuerfreibetrags nach
#dem DBA Türkei verfügbares ZVE über dem Grundfreibetrag bei der Berechnung des laufenden #Arbeitslohns, in Cent
WVFRB = 0
#Für die weitergehende Berücksichtigung des Steuerfreibetrags nach
#dem DBA Türkei verfügbares ZVE über dem Grundfreibetrag bei der Berechnung der sonstigen #Bezüge, in Cent
WVFRBM = 0
#Für die weitergehende Berücksichtigung des Steuerfreibetrags nach
#dem DBA Türkei verfügbares ZVE über dem Grundfreibetrag bei der Berechnung des #voraussichtlichen Jahresarbeitslohns, in Cent
WVFRBO = 0
#Altersentlastungsbetrag in Euro, Cent (2 Dezimalstellen)
ALTE = 0
#Arbeitnehmer-Pauschbetrag/Werbungskosten-Pauschbetrag in Euro
ANP = 0
#Auf den Lohnzahlungszeitraum entfallender Anteil von Jahreswerten
#auf ganze Cent abgerundet
ANTEIL1 = 0
#Beitragsbemessungsgrenze in der gesetzlichen
#Krankenversicherung und der sozialen Pflegeversicherung in Euro
BBGKVPV = 0
#Allgemeine Beitragsbemessungsgrenze in der allgemeinen
#Rentenversicherung in Euro
BBGRV = 0
#Bemessungsgrundlage für Altersentlastungsbetrag in Euro, Cent
#(2 Dezimalstellen)
#Differenz zwischen ST1 und ST2 in Euro
BMG = 0
#Entlastungsbetrag für Alleinerziehende in Euro
EFA = 0
#Versorgungsfreibetrag in Euro, Cent (2 Dezimalstellen)
FVB = 0
#Versorgungsfreibetrag in Euro, Cent (2 Dezimalstellen) für die
#Berechnung der Lohnsteuer für den sonstigen Bezug
FVBSO = 0
#Zuschlag zum Versorgungsfreibetrag in Euro
FVBZ = 0
#Zuschlag zum Versorgungsfreibetrag in Euro für die Berechnung der
#Lohnsteuer beim sonstigen Bezug
FVBZSO = 0
#Grundfreibetrag in Euro
GFB = 0
#Maximaler Altersentlastungsbetrag in Euro
HBALTE = 0
#Maßgeblicher maximaler Versorgungsfreibetrag in Euro
HFVB = 0
#Maßgeblicher maximaler Zuschlag zum Versorgungsfreibetrag in
#Euro, Cent (2 Dezimalstellen)
HFVBZ = 0
#Maßgeblicher maximaler Zuschlag zum Versorgungsfreibetrag in
#Euro, Cent (2 Dezimalstellen) für die Berechnung der Lohnsteuer für den sonstigen Bezug
HFVBZSO = 0
#Zwischenfeld zu X für die Berechnung der Steuer nach § 39b
#Absatz 2 Satz 7 EStG in Euro
HOCH = 0
#Nummer der Tabellenwerte für Versorgungsparameter
J = 0
#Jahressteuer nach § 51a EStG, aus der Solidaritätszuschlag und
#Bemessungsgrundlage für die Kirchenlohnsteuer ermittelt werden, in Euro
JBMG = 0
#Auf einen Jahreslohn hochgerechneter LZZFREIB in Euro, Cent
#(2 Dezimalstellen)
JLFREIB = 0
#Auf einen Jahreslohn hochgerechneter LZZHINZU in Euro, Cent
#(2 Dezimalstellen)
JLHINZU = 0
#Jahreswert, dessen Anteil für einen Lohnzahlungszeitraum in
#UPANTEIL errechnet werden soll, in Cent
JW = 0
#Nummer der Tabellenwerte für Parameter bei
#Altersentlastungsbetrag
K = 0
#Merker für Berechnung Lohnsteuer für mehrjährige Tätigkeit
#0 = normale Steuerberechnung
#1 = Steuerberechnung für mehrjährige Tätigkeit
#2 = Ermittlung der Vorsorgepauschale ohne Entschädigungen i.S.d. § 24 Nummer 1 EStG
KENNVMT = 0
#Summe der Freibeträge für Kinder in Euro
KFB = 0
#Beitragssatz des Arbeitgebers zur Krankenversicherung unter
#Berücksichtigung des durchschnittlichen Zusatzbeitragssatzes für die Ermittlung des #Arbeitgeberzuschusses (5 Dezimalstellen)
KVSATZAG = 0
#Beitragssatz des Arbeitnehmers zur Krankenversicherung
#(5 Dezimalstellen)
KVSATZAN = 0
#Kennzahl für die Einkommensteuer-Tarifarten:
#1 = Grundtarif
#2 = Splittingverfahren
KZTAB = 2
#Jahreslohnsteuer in Euro
LSTJAHR = 0
#Zwischenfelder der Jahreslohnsteuer in Cent
LST1 = 0
#Zwischenfelder der Jahreslohnsteuer in Cent
LST2 = 0
#Zwischenfelder der Jahreslohnsteuer in Cent
LST3 = 0
#Zwischenfelder der Jahreslohnsteuer in Cent
LSTOSO = 0
#Zwischenfelder der Jahreslohnsteuer in Cent
LSTSO = 0
#Mindeststeuer für die Steuerklassen V und VI in Euro
MIST = 0
#Beitragssatz des Arbeitgebers zur Pflegeversicherung
#(6 Dezimalstellen)
PVSATZAG = 0
#Beitragssatz des Arbeitnehmers zur Pflegeversicherung
#(6 Dezimalstellen)
PVSATZAN = 0
#Beitragssatz des Arbeitnehmers in der allgemeinen gesetzlichen
#Rentenversicherung (4 Dezimalstellen)
RVSATZAN = 0
#Rechenwert in Gleitkommadarstellung
RW = 0
#Sonderausgaben-Pauschbetrag in Euro
SAP = 0
#Freigrenze für den Solidaritätszuschlag in Euro
SOLZFREI = 0
#Solidaritätszuschlag auf die Jahreslohnsteuer in Euro, Cent
#(2 Dezimalstellen)
SOLZJ = 0
#Zwischenwert für den Solidaritätszuschlag auf die Jahreslohnsteuer
#in Euro, Cent (2 Dezimalstellen)
SOLZMIN = 0
#Bemessungsgrundlage des Solidaritätszuschlags zur Prüfung der
#Freigrenze beim Solidaritätszuschlag für sonstige Bezüge (ohne Vergütung für #mehrjährige Tätigkeit) #in Euro
SOLZSBMG = 0
#Zu versteuerndes Einkommen für die Ermittlung der
#Bemessungsgrundlage des Solidaritätszuschlags zur Prüfung der Freigrenze beim #Solidaritätszuschlag für sonstige Bezüge (ohne Vergütung für mehrjährige #Tätigkeit) in Euro, Cent (2 #Dezimalstellen) Seite 11 von 41
SOLZSZVE = 0
#Bemessungsgrundlage des Solidaritätszuschlags für die Prüfung der
#Freigrenze beim Solidaritätszuschlag für die Vergütung für mehrjährige Tätigkeit #in Euro
SOLZVBMG = 0
#Tarifliche Einkommensteuer in Euro
ST = 0
#Tarifliche Einkommensteuer auf das 1,25-fache ZX in Euro
ST1 = 0
#Tarifliche Einkommensteuer auf das 0,75-fache ZX in Euro
ST2 = 0
#Zwischenfeld zur Ermittlung der Steuer auf Vergütungen für
#mehrjährige Tätigkeit in Euro
STOVMT = 0
#Tabelle für die Prozentsätze des Versorgungsfreibetrags
TAB1 = 0
#Tabelle für die Höchstbeträge des Versorgungsfreibetrags
TAB2 = 0
#Tabelle für die Zuschläge zum Versorgungsfreibetrag
TAB3 = 0
#Tabelle für die Prozentsätze des Altersentlastungsbetrags
TAB4 = 0
#Tabelle für die Höchstbeträge des Altersentlastungsbetrags
TAB5 = 0
#Teilbetragssatz der Vorsorgepauschale für die Rentenversicherung
#(2 Dezimalstellen)
TBSVORV = 0
#Bemessungsgrundlage für den Versorgungsfreibetrag in Cent
VBEZB = 0
#Bemessungsgrundlage für den Versorgungsfreibetrag in Cent für
#den sonstigen Bezug
VBEZBSO = 0
#Zwischenfeld zu X für die Berechnung der Steuer nach § 39b
#Absatz 2 Satz 7 EStG in Euro
VERGL = 0
#Höchstbetrag der Mindestvorsorgepauschale für die Kranken- und
#Pflegeversicherung in Euro, Cent(2 Dezimalstellen)
VHB = 0
#Jahreswert der berücksichtigten Beiträge zur privaten Basis-
#Krankenversicherung und privaten Pflege-Pflichtversicherung (ggf. auch die #Mindestvorsorgepauschale) in Cent
VKV = 0
#Vorsorgepauschale mit Teilbeträgen für die Rentenversicherung
#sowie die gesetzliche Kranken- und soziale Pflegeversicherung nach fiktiven
##Beträgen oder ggf. für #die private Basiskrankenversicherung und private
#Pflege-#Pflichtversicherung in Euro, Cent (2 #Dezimalstellen)
VSP = 0
#Vorsorgepauschale mit Teilbeträgen für die Rentenversicherung
#sowie der Mindestvorsorgepauschale für die Kranken- und Pflegeversicherung in
#Euro, Cent (2 #Dezimalstellen)
VSPN = 0
#Zwischenwert 1 bei der Berechnung der Vorsorgepauschale in Euro,
#Cent (2 Dezimalstellen)
VSP1 = 0
#Zwischenwert 2 bei der Berechnung der Vorsorgepauschale in Eur
#Cent (2 Dezimalstellen)
VSP2 = 0
#Vorsorgepauschale mit Teilbeträgen für die gesetzliche Kranken-
#und soziale Pflegeversicherung nach fiktiven Beträgen oder ggf. für die private #
#Basiskrankenversicherung und private PflegePflichtversicherung in Euro, Cent (2 #Dezimalstellen)
VSP3 = 0
#Erster Grenzwert in Steuerklasse V/VI in Euro
W1STKL5 = 0
#Zweiter Grenzwert in Steuerklasse V/VI in Euro
W2STKL5 = 0
#Dritter Grenzwert in Steuerklasse V/VI in Euro
W3STKL5 = 0
#Zu versteuerndes Einkommen gem. § 32a Absatz 1 und 5 EStG in
#Euro, Cent(2 Dezimalstellen)
X = 0
#Gem. § 32a Absatz 1 EStG (6 Dezimalstellen)
Y = 0
#Auf einen Jahreslohn hochgerechnetes RE4 in Euro, Cent
#(2 Dezimalstellen) nach Abzug der Freibeträge nach § 39b Absatz Satz 3 und 4 EStG
ZRE4 = 0
#Auf einen Jahreslohn hochgerechnetes RE4 in Euro, Cent
#(2 Dezimalstellen)
ZRE4J = 0
#Auf einen Jahreslohn hochgerechnetes RE4, ggf. nach Abzug der
#Entschädigungen i.S.d. § 24 Nummer 1 EStG in Euro, Cent (2 Dezimalstellen)
ZRE4VP = 0
#Feste Tabellenfreibeträge (ohne Vorsorgepauschale) in Euro, Cent
#(2 Dezimalstellen)
ZTABFB = 0
#Auf einen Jahreslohn hochgerechnetes VBEZ abzüglich FVB in
#Euro, Cent (2 Dezimalstellen)
ZVBEZ = 0
#Auf einen Jahreslohn hochgerechnetes VBEZ in Euro, Cent
#(2 Dezimalstellen)
ZVBEZJ = 0
#Zu versteuerndes Einkommen in Euro, Cent (2 Dezimalstellen)
ZVE = 0
#Zwischenfeld zu X für die Berechnung der Steuer nach § 39b
#Absatz 2 Satz 7 EStG in Euro
ZX = 0
#Zwischenfeld zu X für die Berechnung der #Steuer nach § 39b
#Absatz 2 Satz 7 EStG in Euro
#Stand: 19.6.2023 (endgültig)
ZZX = 0
Benutzeravatar
pillmuncher
User
Beiträge: 1511
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@oldboyJR: Wenn du vernünftige Namen verwended würdest, könntest du dir die Kommentare sparen und dein Programm wäre deutlich lesbarer.

Im Übrigen: Einrückungen sind in Python wichtig. Deswegen bitte Code im Vollständigen Editor mittels </> einfügen.
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
__blackjack__
User
Beiträge: 13583
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde da einfach eine andere Programmiersprache als Python verwenden. Eine wo der PAP mit den ganzen globalen Variablen besser zu passt. Fortran, Cobol, Pascal, irgendwas aus der Ära der PAPs. 🤓
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Antworten