Messbetrag & Hebesatz
Komposition aus Bundesmessbetrag und gemeindlichem Hebesatz. Zeigt Modul-Verrechnung über Quellen.
Gesetzlicher Rahmen
Das Modul bildet die Festsetzung der Gewerbesteuer in voller gesetzlicher Reihenfolge ab: vom Gewerbeertrag (§ 7, der Gewinn vermehrt um die Hinzurechnungen des § 8 und vermindert um die Kürzungen des § 9) über den Verlustabzug (§ 10a) und den Steuermessbetrag (§ 11, Messzahl 3,5 %) bis zur Anwendung des Hebesatzes der Gemeinde (§ 16). Der Gewinn aus Gewerbebetrieb geht als geprüfte Eingabe ein.
- 1 § 7 Satz 1 Gewerbeertrag (Gewinn + § 8 − § 9)
Gewerbeertrag - 2 § 10a Verlustabzug (Mindestbesteuerung)
Verlustabzug10a - 3 § 11 Abs. 1 Abrundung auf 100 € + Freibetrag
Freibetrag11 - 4 § 11 Abs. 2 Steuermessbetrag (Messzahl 3,5 %)
Steuermessbetrag11 - 5 § 16 × Hebesatz = Gewerbesteuer
Gewerbesteuer16
Messbetrag und Hebesatz · § 11, § 16
Auf den abgerundeten Gewerbeertrag abzüglich Freibetrag wendet § 11 die Steuermesszahl von 3,5 % an; das Ergebnis — der Steuermessbetrag — wird mit dem Hebesatz der Gemeinde multipliziert.
- Steuermesszahl § 11 Abs. 2 3,5 %
- Freibetrag (natürl. Person) § 11 Abs. 1 24.500 €
- Abrundung § 11 Abs. 1 auf 100 €
- Mindesthebesatz § 16 Abs. 4 200 %
@Quelle("§ 11 GewStG")
fn Steuermessbetrag11(
abgerundeterGewerbeertrag: EuroCent,
freibetrag: EuroCent,
messzahl: Prozent,
): EuroCent = (messzahl * (abgerundeterGewerbeertrag - freibetrag)) als EuroCent
// ===========================================================================
// § 16 GewStG — Hebesatz
// ===========================================================================
--
Anzuwendender Hebesatz nach **§ 16 Abs. 4 Satz 2 GewStG**: der von der
Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde
keinen höheren bestimmt, beträgt er 200 %).
@param hebesatz Von der Gemeinde bestimmter Hebesatz.
@rückgabe Anzuwendender Hebesatz (≥ 200 %).
--
@Quelle("§ 16 Absatz 4 Satz 2 GewStG")
fn AngewandterHebesatz16(hebesatz: Prozent): Prozent = wähle {
falls hebesatz < MINDEST_HEBESATZ_16 -> MINDEST_HEBESATZ_16
sonst -> hebesatz
}Die Gesamtberechnung · § 7 – § 16
Der Orchestrator fädelt die Stufen zusammen — inklusive der
Erhebungszeitraum-Schranke (§ 36 Abs. 4b, ein begründeter
abbruch vor EZ 2025) — und legt jede Zwischengröße
als eigenes Feld ab.
@Quelle("§ 7 GewStG")
fn BerechneGewerbesteuer(betrieb: Gewerbebetrieb): GewerbesteuerErgebnis = {
var h8: EuroCent = SummeHinzurechnungen8(betrieb.hinzurechnungen)
var k9: EuroCent = SummeKuerzungen9(
betrieb.kuerzungen,
betrieb.gewinnAusGewerbebetrieb,
betrieb.hinzurechnungen.ausgaben9Abs1Nr2KStG,
)
// Erhebungszeitraum-Schranke (§ 36 Abs. 4b GewStG) als nicht
// abfangbarer Abbruch in die erste genutzte Größe gefädelt.
var ertrag: EuroCent = wähle {
falls betrieb.erhebungszeitraum < FRUEHESTER_EZ -> abbruch("""
§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab;
EZ ${betrieb.erhebungszeitraum} ist nicht abgedeckt
""")
sonst -> Gewerbeertrag(
betrieb.gewinnAusGewerbebetrieb, betrieb.hinzurechnungen, betrieb.kuerzungen,
)
}
var abzug: EuroCent = Verlustabzug10a(ertrag, betrieb.gewerbeverlustVortrag)
var nachVerlust: EuroCent = ertrag - abzug
var abgerundet: EuroCent = wähle {
falls nachVerlust <= 0,00 -> 0,00
sonst -> nachVerlust.abrundenAuf(ABRUNDUNG_11)
}
var fb: EuroCent = Freibetrag11(betrieb.rechtsform, abgerundet)
var messzahl: Prozent = Steuermesszahl11(betrieb.messzahlermaessigung)
var bemessung: EuroCent = abgerundet - fb
var messbetrag: EuroCent = Steuermessbetrag11(abgerundet, fb, messzahl)
var heb: Prozent = AngewandterHebesatz16(betrieb.hebesatz)
var steuer: EuroCent = Gewerbesteuer16(messbetrag, heb)
GewerbesteuerErgebnis(
gewinn = betrieb.gewinnAusGewerbebetrieb,
summeHinzurechnungen = h8,
summeKuerzungen = k9,
gewerbeertrag = ertrag,
verlustabzug = abzug,
gewerbeertragNachVerlust = nachVerlust,
abgerundeterGewerbeertrag = abgerundet,
freibetrag = fb,
bemessungsgrundlage = bemessung,
steuermesszahl = messzahl,
steuermessbetrag = messbetrag,
angewandterHebesatz = heb,
gewerbesteuer = steuer,
)
}Das vollständige Modul
Die Hinzurechnungen des § 8, die Kürzungen des § 9 (inkl. Spenden-
Höchstbetrag § 9 Nr. 5), Verlustabzug, Freibeträge je Rechtsform und die
Gesamtberechnung — unverändert aus findsl/findsl übernommen.
Modul anzeigen gewst.findsl · 801 Zeilen
--
# Gewerbesteuer — Messbetrag und Steuer (§§ 7–11, 16 GewStG)
Bildet die Festsetzung der **Gewerbesteuer** nach dem
Gewerbesteuergesetz (GewStG, i.d.F. ab Erhebungszeitraum 2025 —
insbesondere § 9 Nr. 1 Satz 1 in der Fassung des Art. 9 G v. 2.12.2024,
§ 36 Abs. 4b GewStG) vollständig in der gesetzlichen Reihenfolge ab:
- **§ 6 GewStG** — Besteuerungsgrundlage ist der Gewerbeertrag.
- **§ 7 Satz 1 GewStG** — Gewerbeertrag ist der nach EStG/KStG zu
ermittelnde Gewinn aus Gewerbebetrieb, vermehrt um die § 8- und
vermindert um die § 9-Beträge.
- **§ 8 GewStG** — Hinzurechnungen: Nr. 1 (Viertel der Summe aus
a–f Finanzierungsanteilen, soweit über 200.000 €) sowie die
Nummern 4, 5, 8, 9, 10, 12 (die übrigen Nummern sind weggefallen).
- **§ 9 GewStG** — Kürzungen: Nr. 1 (Grundsteuer für Betriebs-
grundbesitz bzw. erweiterte Kürzung auf Antrag), Nr. 2/2a/2b/3/7/8
(Beteiligungs-/Betriebsstätten-Erträge) und Nr. 5 (Spenden bis
20 % des Gewinns oder 4 ‰ der Summe aus Umsätzen und Löhnen).
- **§ 10/§ 10a GewStG** — maßgebender Gewerbeertrag und Kürzung um
vortragsfähige Fehlbeträge (Mindestbesteuerung: bis 1 Mio. € voll,
darüber nur 60 %).
- **§ 11 GewStG** — Abrundung auf volle 100 €, Freibetrag (24.500 €
bzw. 5.000 € bzw. 0 € je Rechtsform) und Steuermesszahl 3,5 %
(ermäßigt 1,96 % bei Hausgewerbetreibenden, § 11 Abs. 3).
- **§ 16 GewStG** — Anwendung des Hebesatzes der hebeberechtigten
Gemeinde, mindestens 200 % (§ 16 Abs. 4 Satz 2).
**Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
Steuerbetragsberechnung):**
- Die Ermittlung des **Gewinns aus Gewerbebetrieb** selbst (§ 7 Satz 1:
„nach den Vorschriften des EStG oder KStG"). Er geht — wie das
Einkommen i.S.d. § 8 Abs. 1 KStG im KStG-Modul — als geprüfte
Eingabe ein. Ebenso die *Höhe* der einzelnen Hinzurechnungs-/
Kürzungsbeträge, die § 8/§ 9 aus EStG/KStG-Sachverhalten ableiten
(Nr. 4/5/8/9/10/12 bzw. Nr. 2/2a/2b/3/7/8): das GewStG schreibt nur
die Verrechnung vor — diese ist hier vollständig und exakt
implementiert.
- **Zerlegung (§§ 28–34 GewStG)** auf mehrere Gemeinden (Maßstab
Arbeitslöhne, Sonderfälle Windenergie/Solar/Speicher). Modelliert
ist der Regelfall **einer** hebeberechtigten Gemeinde.
- Verfahren §§ 14a/19–21 (Vorauszahlung, Festsetzung, Zerlegungs-
bescheid), § 35b (Änderung), abgekürzter Erhebungszeitraum
(§ 14 Satz 3), Steuerbefreiungen § 3, optierende Gesellschaft
§ 1a KStG (§ 2 Abs. 8).
- Erweiterte Kürzung § 9 Nr. 1 Satz 2 dem Grunde nach (Antrag,
Grundstücksunternehmens-Voraussetzungen) — die *Höhe* des auf den
eigenen Grundbesitz entfallenden Gewerbeertrags geht als Eingabe ein.
--
// ===========================================================================
// § 8 Nr. 1 GewStG — Anteile und Freibetrag der Finanzierungs-Hinzurechnung
// ===========================================================================
--
Anteil der Hinzurechnung nach § 8 Nr. 1 GewStG: „Ein Viertel der
Summe" der Finanzierungsanteile a–f wird hinzugerechnet, soweit die
Summe den Freibetrag übersteigt.
--
@Quelle("§ 8 Nummer 1 GewStG")
konst ANTEIL_8_1: Prozent = 25%
--
Freibetrag der Finanzierungs-Hinzurechnung: erst der **200.000 €
übersteigende** Teil der gewichteten Summe a–f wird zu einem Viertel
hinzugerechnet (§ 8 Nr. 1 letzter Halbsatz GewStG).
--
@Quelle("§ 8 Nummer 1 GewStG")
konst HINZURECHNUNG_FREIBETRAG_8_1: EuroCent = 200.000,00
--
Anteil der Miet-/Pachtzinsen (einschl. Leasingraten) für **bewegliche**
Wirtschaftsgüter des Anlagevermögens: ein Fünftel
(§ 8 Nr. 1 Buchst. d GewStG).
--
@Quelle("§ 8 Nummer 1 Buchstabe d GewStG")
konst ANTEIL_BEWEGLICH_8_1D: Prozent = 20%
--
Anteil der Miet-/Pachtzinsen für **unbewegliche** Wirtschaftsgüter des
Anlagevermögens: die Hälfte (§ 8 Nr. 1 Buchst. e GewStG).
--
@Quelle("§ 8 Nummer 1 Buchstabe e GewStG")
konst ANTEIL_UNBEWEGLICH_8_1E: Prozent = 50%
--
Anteil der Aufwendungen für die zeitlich befristete Überlassung von
Rechten (Konzessionen, Lizenzen): ein Viertel
(§ 8 Nr. 1 Buchst. f GewStG).
--
@Quelle("§ 8 Nummer 1 Buchstabe f GewStG")
konst ANTEIL_RECHTE_8_1F: Prozent = 25%
// ===========================================================================
// § 9 Nr. 5 GewStG — Spendenhöchstbeträge
// ===========================================================================
--
Spenden-Höchstsatz I (§ 9 Nr. 5 Satz 1 GewStG): 20 % des um die
Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb.
--
@Quelle("§ 9 Nummer 5 GewStG")
konst SPENDEN_SATZ_GEWINN_9_5: Prozent = 20%
--
Spenden-Höchstsatz II (§ 9 Nr. 5 Satz 1 GewStG): 4 Promille der Summe
der gesamten Umsätze und der im Wirtschaftsjahr aufgewendeten Löhne
und Gehälter. 4 ‰ = 0,4 %.
--
@Quelle("§ 9 Nummer 5 GewStG")
konst SPENDEN_PROMILLE_9_5: Prozent = 0,4%
// ===========================================================================
// § 10a GewStG — Gewerbeverlust (Mindestbesteuerung)
// ===========================================================================
--
Sockelbetrag des Verlustabzugs: der maßgebende Gewerbeertrag wird bis
zu **1 Mio. €** ungekürzt um Fehlbeträge gemindert
(§ 10a Satz 1 GewStG).
--
@Quelle("§ 10a Satz 1 GewStG")
konst VERLUST_SOCKEL_10A: EuroCent = 1.000.000,00
--
Mindestbesteuerungsquote: der 1 Mio. € übersteigende maßgebende
Gewerbeertrag ist nur bis zu **60 %** um Fehlbeträge zu kürzen
(§ 10a Satz 2 GewStG).
--
@Quelle("§ 10a Satz 2 GewStG")
konst VERLUST_QUOTE_10A: Prozent = 60%
// ===========================================================================
// § 11 GewStG — Abrundung, Freibeträge, Steuermesszahl
// ===========================================================================
--
Abrundungsstufe: der Gewerbeertrag ist auf volle **100 €** nach unten
abzurunden (§ 11 Abs. 1 Satz 3 GewStG).
--
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
konst ABRUNDUNG_11: EuroCent = 100,00
--
Freibetrag bei **natürlichen Personen und Personengesellschaften**:
24.500 €, höchstens in Höhe des abgerundeten Gewerbeertrags
(§ 11 Abs. 1 Satz 3 Nr. 1 GewStG).
--
@Quelle("§ 11 Absatz 1 Satz 3 Nummer 1 GewStG")
konst FREIBETRAG_NAT_PERSON_11: EuroCent = 24.500,00
--
Freibetrag bei sonstigen juristischen Personen des privaten Rechts und
Vereinen (§ 2 Abs. 3), Unternehmen i.S.d. § 3 Nr. 5/6/… sowie
juristischen Personen des öffentlichen Rechts: 5.000 €, höchstens in
Höhe des abgerundeten Gewerbeertrags (§ 11 Abs. 1 Satz 3 Nr. 2 GewStG).
--
@Quelle("§ 11 Absatz 1 Satz 3 Nummer 2 GewStG")
konst FREIBETRAG_VEREIN_11: EuroCent = 5.000,00
--
Steuermesszahl für den Gewerbeertrag: **3,5 %** (§ 11 Abs. 2 GewStG).
--
@Quelle("§ 11 Absatz 2 GewStG")
konst STEUERMESSZAHL_11: Prozent = 3,5%
--
Ermäßigte Steuermesszahl für Hausgewerbetreibende und Gleichgestellte:
die Messzahl ermäßigt sich auf **56 %** von 3,5 %, also **1,96 %**
(§ 11 Abs. 3 GewStG).
--
@Quelle("§ 11 Absatz 3 GewStG")
konst STEUERMESSZAHL_HAUSGEWERBE_11_3: Prozent = 1,96%
// ===========================================================================
// § 16 GewStG — Hebesatz
// ===========================================================================
--
Mindest-Hebesatz: beträgt 200 %, wenn die Gemeinde keinen höheren
Hebesatz bestimmt hat (§ 16 Abs. 4 Satz 2 GewStG).
--
@Quelle("§ 16 Absatz 4 Satz 2 GewStG")
konst MINDEST_HEBESATZ_16: Prozent = 200%
--
Frühester von diesem Modul abgebildeter Erhebungszeitraum. Die hier
implementierte Fassung gilt insbesondere für § 9 Nr. 1 Satz 1
(Grundsteuer-Fassung) erstmals für den Erhebungszeitraum 2025
(§ 36 Abs. 4b Satz 1 GewStG).
--
@Quelle("§ 36 Absatz 4b GewStG")
konst FRUEHESTER_EZ: Ganzzahl = 2025
// ===========================================================================
// Datenstrukturen
// ===========================================================================
--
Rechtsform des Steuerschuldners (§ 5 GewStG) — bestimmt den Freibetrag
nach § 11 Abs. 1 Satz 3 GewStG.
@param NatuerlichePersonPersonengesellschaft Einzelunternehmen oder
Personengesellschaft (Mitunternehmerschaft)
— Freibetrag 24.500 € (§ 11 Abs. 1 S. 3 Nr. 1 GewStG).
@param Kapitalgesellschaft Kapitalgesellschaft / Genossenschaft
(§ 2 Abs. 2 GewStG) — **kein** Freibetrag.
@param VereinJuristischePersonOerR Sonstige juristische Personen des
privaten Rechts, Vereine (§ 2 Abs. 3) und
juristische Personen des öffentlichen
Rechts — Freibetrag 5.000 € (§ 11 Abs. 1
S. 3 Nr. 2 GewStG).
--
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
aufzählung Rechtsform {
NatuerlichePersonPersonengesellschaft,
Kapitalgesellschaft,
VereinJuristischePersonOerR,
}
--
Ermäßigung der Steuermesszahl nach § 11 Abs. 3 GewStG.
@param Keine Regelmesszahl 3,5 % (§ 11 Abs. 2 GewStG).
@param Hausgewerbetreibender Hausgewerbetreibende und nach dem
Heimarbeitsgesetz Gleichgestellte —
ermäßigte Messzahl 1,96 % (§ 11 Abs. 3
GewStG).
--
@Quelle("§ 11 Absatz 3 GewStG")
aufzählung Messzahlermaessigung {
Keine,
Hausgewerbetreibender,
}
--
Hinzurechnungsbeträge nach § 8 GewStG. Die Beträge a–f der Nr. 1 sind
**vor** der gesetzlichen Gewichtung (20 %/50 %/25 %) und **vor** dem
Freibetrag/Viertel anzugeben — diese wendet `hinzurechnung8Nr1` an.
Die Nummern 4, 5, 8, 9, 10, 12 werden in voller Höhe hinzugerechnet
und sind als die bereits nach EStG/KStG ermittelten Beträge
einzutragen (Nr. 2/3/6/7/11 GewStG sind weggefallen).
@param entgelteSchulden § 8 Nr. 1 Buchst. a: Entgelte für Schulden
(Zinsen, Skonti, Diskontbeträge), 100 %.
@param rentenDauerndeLasten § 8 Nr. 1 Buchst. b: Renten und dauernde
Lasten, 100 %.
@param gewinnanteileStillerGesellschafter § 8 Nr. 1 Buchst. c:
Gewinnanteile des stillen Gesellschafters,
100 %.
@param mietePachtBeweglich § 8 Nr. 1 Buchst. d: Miet-/Pachtzinsen
(inkl. Leasing) für bewegliche WG des
Anlagevermögens — geht zu einem Fünftel ein.
@param mietePachtUnbeweglich § 8 Nr. 1 Buchst. e: Miet-/Pachtzinsen für
unbewegliche WG des Anlagevermögens — geht
zur Hälfte ein.
@param aufwendungenRechteUeberlassung § 8 Nr. 1 Buchst. f: Aufwendungen
für zeitlich befristete Rechteüberlassung —
geht zu einem Viertel ein.
@param gewinnanteilePhgKgaa § 8 Nr. 4: Gewinnanteile an persönlich
haftende Gesellschafter einer KGaA, 100 %.
@param steuerfreieDividenden § 8 Nr. 5: nach § 3 Nr. 40 EStG / § 8b
KStG außer Ansatz gebliebene Gewinnanteile
(Streubesitz), 100 %.
@param verlustanteileMitunternehmerschaft § 8 Nr. 8: Anteile am Verlust
einer Mitunternehmerschaft, 100 %.
@param ausgaben9Abs1Nr2KStG § 8 Nr. 9: Ausgaben i.S.d. § 9 Abs. 1
Nr. 2 KStG (abziehbare Zuwendungen), 100 %.
@param gewinnminderungenTeilwert § 8 Nr. 10: Gewinnminderungen durch
Teilwertansatz/Veräußerung von
Körperschaftsanteilen, 100 %.
@param auslaendischeSteuern § 8 Nr. 12: nach § 34c EStG abgezogene
ausländische Steuern, 100 %.
--
@Quelle("§ 8 GewStG")
datensatz Hinzurechnungen8(
entgelteSchulden: EuroCent = 0,00, // § 8 Nr. 1 a (100 %)
rentenDauerndeLasten: EuroCent = 0,00, // § 8 Nr. 1 b (100 %)
gewinnanteileStillerGesellschafter: EuroCent = 0,00, // § 8 Nr. 1 c (100 %)
mietePachtBeweglich: EuroCent = 0,00, // § 8 Nr. 1 d (1/5)
mietePachtUnbeweglich: EuroCent = 0,00, // § 8 Nr. 1 e (1/2)
aufwendungenRechteUeberlassung: EuroCent = 0,00, // § 8 Nr. 1 f (1/4)
gewinnanteilePhgKgaa: EuroCent = 0,00, // § 8 Nr. 4 (100 %)
steuerfreieDividenden: EuroCent = 0,00, // § 8 Nr. 5 (100 %)
verlustanteileMitunternehmerschaft: EuroCent = 0,00, // § 8 Nr. 8 (100 %)
ausgaben9Abs1Nr2KStG: EuroCent = 0,00, // § 8 Nr. 9 (100 %)
gewinnminderungenTeilwert: EuroCent = 0,00, // § 8 Nr. 10 (100 %)
auslaendischeSteuern: EuroCent = 0,00, // § 8 Nr. 12 (100 %)
)
--
Kürzungsbeträge nach § 9 GewStG. Die Spenden-Begrenzung (Nr. 5) und
die Wahl zwischen einfacher und erweiterter Grundbesitzkürzung (Nr. 1)
werden von den Funktionen angewandt; alle übrigen Nummern werden in
der angegebenen Höhe abgezogen.
@param grundsteuerBetriebsgrundbesitz § 9 Nr. 1 Satz 1: im
Erhebungszeitraum als Betriebsausgabe
erfasste Grundsteuer für zum
Betriebsvermögen gehörenden Grundbesitz.
@param erweiterteKuerzungBeantragt § 9 Nr. 1 Satz 2: Antrag auf
erweiterte Kürzung bei Grundstücks-
unternehmen (tritt an die Stelle von
Satz 1).
@param erweiterteKuerzungGrundbesitzertrag § 9 Nr. 1 Satz 2: Teil des
Gewerbeertrags, der auf die Verwaltung und
Nutzung des eigenen Grundbesitzes entfällt
(extern ermittelt; nur bei Antrag).
@param gewinnanteileMitunternehmerschaft § 9 Nr. 2: Anteile am Gewinn
einer Mitunternehmerschaft.
@param schachteldividendenInland § 9 Nr. 2a: Gewinne aus Anteilen an
inländischer Kapitalgesellschaft bei
Beteiligung ≥ 15 % zu Beginn des EZ.
@param kgaaGewinnanteile § 9 Nr. 2b: nach § 8 Nr. 4 dem
Gewerbeertrag einer KGaA hinzugerechnete
Gewinnanteile.
@param auslandsbetriebsstaette § 9 Nr. 3: Teil des Gewerbeertrags, der
auf eine nicht im Inland belegene
Betriebsstätte entfällt.
@param geleisteteSpenden § 9 Nr. 5: aus Betriebsmitteln geleistete
Zuwendungen für steuerbegünstigte Zwecke
(vor Höchstbetragsbegrenzung).
@param umsaetze § 9 Nr. 5: Summe der gesamten Umsätze
(Bemessung des 4-‰-Höchstsatzes).
@param loehneUndGehaelter § 9 Nr. 5: im Wirtschaftsjahr aufgewendete
Löhne und Gehälter (Bemessung des
4-‰-Höchstsatzes).
@param schachteldividendenAuslandNr7 § 9 Nr. 7: Gewinne aus Anteilen
an einer Kapitalgesellschaft außerhalb des
Geltungsbereichs, Beteiligung ≥ 15 %.
@param schachteldividendenDbaNr8 § 9 Nr. 8: nach DBA befreite Gewinne
aus Anteilen an einer ausländischen
Gesellschaft (Mindestbeteiligung).
--
@Quelle("§ 9 GewStG")
datensatz Kuerzungen9(
grundsteuerBetriebsgrundbesitz: EuroCent = 0,00, // § 9 Nr. 1 S. 1
erweiterteKuerzungBeantragt: Wahrheitswert = falsch, // § 9 Nr. 1 S. 2 (Antrag)
erweiterteKuerzungGrundbesitzertrag: EuroCent = 0,00, // § 9 Nr. 1 S. 2
gewinnanteileMitunternehmerschaft: EuroCent = 0,00, // § 9 Nr. 2
schachteldividendenInland: EuroCent = 0,00, // § 9 Nr. 2a
kgaaGewinnanteile: EuroCent = 0,00, // § 9 Nr. 2b
auslandsbetriebsstaette: EuroCent = 0,00, // § 9 Nr. 3
geleisteteSpenden: EuroCent = 0,00, // § 9 Nr. 5
umsaetze: EuroCent = 0,00, // § 9 Nr. 5 (4 ‰)
loehneUndGehaelter: EuroCent = 0,00, // § 9 Nr. 5 (4 ‰)
schachteldividendenAuslandNr7: EuroCent = 0,00, // § 9 Nr. 7
schachteldividendenDbaNr8: EuroCent = 0,00, // § 9 Nr. 8
)
--
Eingaben eines Gewerbesteuerfalls für **eine** hebeberechtigte
Gemeinde (Regelfall ohne Zerlegung).
@param gewinnAusGewerbebetrieb § 7 Satz 1 GewStG: der nach EStG/KStG
ermittelte Gewinn aus Gewerbebetrieb
(extern ermittelt; Bemessungsbasis vor
§§ 8/9).
@param rechtsform Rechtsform des Steuerschuldners — bestimmt
den Freibetrag nach § 11 GewStG.
@param erhebungszeitraum Kalenderjahr des Erhebungszeitraums
(§ 14 Satz 2 GewStG).
@param hinzurechnungen § 8 GewStG (siehe `Hinzurechnungen8`).
@param kuerzungen § 9 GewStG (siehe `Kuerzungen9`).
@param gewerbeverlustVortrag § 10a GewStG: zum Schluss des
vorangegangenen EZ gesondert festgestellte
vortragsfähige Fehlbeträge (§ 10a Satz 6).
@param messzahlermaessigung § 11 Abs. 3 GewStG.
@param hebesatz Von der Gemeinde bestimmter Hebesatz
(§ 16 GewStG); mindestens 200 % werden
angewandt (§ 16 Abs. 4 Satz 2).
--
@Quelle("§ 7 GewStG")
datensatz Gewerbebetrieb(
gewinnAusGewerbebetrieb: EuroCent, // § 7 S. 1 (nach EStG/KStG)
rechtsform: Rechtsform, // § 5/§ 11 GewStG
erhebungszeitraum: Ganzzahl, // § 14 S. 2 GewStG
hinzurechnungen: Hinzurechnungen8, // § 8 GewStG
kuerzungen: Kuerzungen9, // § 9 GewStG
gewerbeverlustVortrag: EuroCent = 0,00, // § 10a GewStG
messzahlermaessigung: Messzahlermaessigung = Keine, // § 11 Abs. 3 GewStG
hebesatz: Prozent = 200%, // § 16 GewStG
)
--
Vollständige, prüfbare Berechnungsdokumentation eines
Gewerbesteuerfalls — jede Zwischengröße der gesetzlichen
Reihenfolge ist einzeln ausgewiesen, damit die Festsetzung Schritt
für Schritt gegen das Gesetz auditierbar ist.
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb
(Eingabe, unverändert übernommen).
@param summeHinzurechnungen § 8 GewStG: Summe aller Hinzurechnungen.
@param summeKuerzungen § 9 GewStG: Summe aller Kürzungen.
@param gewerbeertrag § 7/§ 10 GewStG: Gewinn + § 8 − § 9.
@param verlustabzug § 10a GewStG: tatsächlich abgezogener
Fehlbetrag (Mindestbesteuerung beachtet).
@param gewerbeertragNachVerlust § 10a GewStG: maßgebender Gewerbeertrag
nach Verlustabzug (nicht negativ).
@param abgerundeterGewerbeertrag § 11 Abs. 1 Satz 3: auf volle 100 €
abgerundet.
@param freibetrag § 11 Abs. 1 Satz 3: angewandter Freibetrag.
@param bemessungsgrundlage Abgerundeter Gewerbeertrag − Freibetrag.
@param steuermesszahl § 11 Abs. 2/3 GewStG: angewandte Messzahl.
@param steuermessbetrag § 11 GewStG: Bemessungsgrundlage × Messzahl.
@param angewandterHebesatz § 16 GewStG: angewandter Hebesatz
(mindestens 200 %).
@param gewerbesteuer § 16 GewStG: Steuermessbetrag × Hebesatz.
--
@Quelle("§ 7 GewStG")
datensatz GewerbesteuerErgebnis(
gewinn: EuroCent, // § 7 S. 1 (Eingabe)
summeHinzurechnungen: EuroCent, // § 8 GewStG
summeKuerzungen: EuroCent, // § 9 GewStG
gewerbeertrag: EuroCent, // § 7/§ 10 GewStG
verlustabzug: EuroCent, // § 10a GewStG
gewerbeertragNachVerlust: EuroCent, // § 10a GewStG (≥ 0)
abgerundeterGewerbeertrag: EuroCent, // § 11 Abs. 1 S. 3
freibetrag: EuroCent, // § 11 Abs. 1 S. 3
bemessungsgrundlage: EuroCent, // abger. GE − Freibetrag
steuermesszahl: Prozent, // § 11 Abs. 2/3
steuermessbetrag: EuroCent, // § 11 GewStG
angewandterHebesatz: Prozent, // § 16 GewStG
gewerbesteuer: EuroCent, // § 16 GewStG
)
// ===========================================================================
// § 8 GewStG — Hinzurechnungen
// ===========================================================================
--
Hinzurechnung nach **§ 8 Nr. 1 GewStG**: Ein Viertel der Summe aus
den Finanzierungsanteilen a–f, soweit die Summe **200.000 €
übersteigt**. Buchst. a–c gehen zu 100 %, Buchst. d (bewegliche WG)
zu einem Fünftel, Buchst. e (unbewegliche WG) zur Hälfte, Buchst. f
(Rechteüberlassung) zu einem Viertel in die Summe ein. Liegt die
gewichtete Summe ≤ 200.000 €, ist die Hinzurechnung nach Nr. 1 = 0.
@param h Hinzurechnungsbeträge (siehe `Hinzurechnungen8`).
@rückgabe Hinzurechnungsbetrag nach § 8 Nr. 1 GewStG.
--
@Quelle("§ 8 Nummer 1 GewStG")
fn Hinzurechnung8Nr1(h: Hinzurechnungen8): EuroCent = {
var gewichteteSumme: EuroCent = h.entgelteSchulden
+ h.rentenDauerndeLasten
+ h.gewinnanteileStillerGesellschafter
+ (ANTEIL_BEWEGLICH_8_1D * h.mietePachtBeweglich) als EuroCent
+ (ANTEIL_UNBEWEGLICH_8_1E * h.mietePachtUnbeweglich) als EuroCent
+ (ANTEIL_RECHTE_8_1F * h.aufwendungenRechteUeberlassung) als EuroCent
var uebersteigend: EuroCent = (gewichteteSumme - HINZURECHNUNG_FREIBETRAG_8_1).mindestens(0,00)
var nr1: EuroCent = (ANTEIL_8_1 * uebersteigend) als EuroCent
nr1
}
--
Summe der Hinzurechnungen nach **§ 8 GewStG**: der Betrag nach Nr. 1
zuzüglich der in voller Höhe hinzuzurechnenden Nummern 4, 5, 8, 9, 10
und 12 (Nr. 2/3/6/7/11 GewStG sind weggefallen).
@param h Hinzurechnungsbeträge (siehe `Hinzurechnungen8`).
@rückgabe Summe der Hinzurechnungen nach § 8 GewStG.
--
@Quelle("§ 8 GewStG")
fn SummeHinzurechnungen8(h: Hinzurechnungen8): EuroCent = Hinzurechnung8Nr1(h)
+ h.gewinnanteilePhgKgaa
+ h.steuerfreieDividenden
+ h.verlustanteileMitunternehmerschaft
+ h.ausgaben9Abs1Nr2KStG
+ h.gewinnminderungenTeilwert
+ h.auslaendischeSteuern
// ===========================================================================
// § 9 GewStG — Kürzungen
// ===========================================================================
--
Höchstbetrag der Spenden-Kürzung nach **§ 9 Nr. 5 Satz 1 GewStG**:
der höhere Betrag aus
- 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus
Gewerbebetrieb und
- 4 ‰ (0,4 %) der Summe aus den gesamten Umsätzen und den im
Wirtschaftsjahr aufgewendeten Löhnen und Gehältern.
Ein negativer „20 %"-Wert (bei Verlust) wird durch die Maximum-Bildung
mit dem nicht-negativen 4-‰-Wert bzw. die Nicht-negativ-Kappung
abgefangen.
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
@param hinzurechnung8Nr9 § 8 Nr. 9: erhöht die 20-%-Bemessung.
@param umsaetze Summe der gesamten Umsätze.
@param loehneUndGehaelter Aufgewendete Löhne und Gehälter.
@rückgabe Höchstbetrag der nach § 9 Nr. 5 abziehbaren Spenden.
--
@Quelle("§ 9 Nummer 5 GewStG")
fn SpendenHoechstbetrag9Nr5(
gewinn: EuroCent,
hinzurechnung8Nr9: EuroCent,
umsaetze: EuroCent,
loehneUndGehaelter: EuroCent,
): EuroCent = {
var nachGewinn: EuroCent = (SPENDEN_SATZ_GEWINN_9_5 * (gewinn + hinzurechnung8Nr9)) als EuroCent
var nachUmsatzLohn: EuroCent = (SPENDEN_PROMILLE_9_5 * (umsaetze + loehneUndGehaelter)) als EuroCent
nachGewinn.mindestens(nachUmsatzLohn).mindestens(0,00)
}
--
Tatsächlich abziehbare Spenden-Kürzung nach § 9 Nr. 5 GewStG: die
geleisteten Zuwendungen, höchstens jedoch der Höchstbetrag nach
`spendenHoechstbetrag9Nr5`.
@param k Kürzungsbeträge (siehe `Kuerzungen9`).
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
@param hinzurechnung8Nr9 § 8 Nr. 9 (erhöht die 20-%-Bemessung).
@rückgabe Abziehbare Spenden nach § 9 Nr. 5 GewStG.
--
@Quelle("§ 9 Nummer 5 GewStG")
fn Kuerzung9Nr5(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent =
k.geleisteteSpenden.höchstens(
SpendenHoechstbetrag9Nr5(gewinn, hinzurechnung8Nr9, k.umsaetze, k.loehneUndGehaelter)
)
--
Kürzung nach **§ 9 Nr. 1 GewStG**: regulär die als Betriebsausgabe
erfasste Grundsteuer für Betriebsgrundbesitz (Satz 1). Auf Antrag
tritt bei Grundstücksunternehmen **an deren Stelle** die erweiterte
Kürzung um den auf die Verwaltung/Nutzung des eigenen Grundbesitzes
entfallenden Teil des Gewerbeertrags (Satz 2) — die beiden Kürzungen
sind Alternativen, nicht kumulativ.
@param k Kürzungsbeträge (siehe `Kuerzungen9`).
@rückgabe Kürzungsbetrag nach § 9 Nr. 1 GewStG.
--
@Quelle("§ 9 Nummer 1 GewStG")
fn Kuerzung9Nr1(k: Kuerzungen9): EuroCent = wähle {
falls k.erweiterteKuerzungBeantragt -> k.erweiterteKuerzungGrundbesitzertrag
sonst -> k.grundsteuerBetriebsgrundbesitz
}
--
Summe der Kürzungen nach **§ 9 GewStG**: Nr. 1 (einfach oder
erweitert), die Beteiligungs-/Betriebsstätten-Kürzungen Nr. 2, 2a,
2b, 3, 7 und 8 sowie die begrenzte Spenden-Kürzung Nr. 5.
@param k Kürzungsbeträge (siehe `Kuerzungen9`).
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb (für § 9 Nr. 5).
@param hinzurechnung8Nr9 § 8 Nr. 9 (für die § 9 Nr. 5-Bemessung).
@rückgabe Summe der Kürzungen nach § 9 GewStG.
--
@Quelle("§ 9 GewStG")
fn SummeKuerzungen9(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent =
Kuerzung9Nr1(k)
+ k.gewinnanteileMitunternehmerschaft
+ k.schachteldividendenInland
+ k.kgaaGewinnanteile
+ k.auslandsbetriebsstaette
+ Kuerzung9Nr5(k, gewinn, hinzurechnung8Nr9)
+ k.schachteldividendenAuslandNr7
+ k.schachteldividendenDbaNr8
// ===========================================================================
// § 7 / § 10 GewStG — (maßgebender) Gewerbeertrag
// ===========================================================================
--
Gewerbeertrag nach **§ 7 Satz 1 i.V.m. § 10 GewStG**: der Gewinn aus
Gewerbebetrieb, vermehrt um die Hinzurechnungen nach § 8 und
vermindert um die Kürzungen nach § 9. Kann negativ sein (Fehlbetrag);
die steuerliche Auswirkung regelt der Verlustabzug bzw. die
Steuerfestsetzung, nicht diese Größe.
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
@param h Hinzurechnungen (§ 8 GewStG).
@param k Kürzungen (§ 9 GewStG).
@rückgabe Gewerbeertrag (§ 7/§ 10 GewStG), ggf. negativ.
--
@Quelle("§ 7 GewStG")
fn Gewerbeertrag(gewinn: EuroCent, h: Hinzurechnungen8, k: Kuerzungen9): EuroCent =
gewinn
+ SummeHinzurechnungen8(h)
- SummeKuerzungen9(k, gewinn, h.ausgaben9Abs1Nr2KStG)
// ===========================================================================
// § 10a GewStG — Gewerbeverlust (Mindestbesteuerung)
// ===========================================================================
--
Höchstens abziehbarer Fehlbetrag nach **§ 10a Sätze 1, 2 GewStG**
(Mindestbesteuerung): bei einem maßgebenden Gewerbeertrag bis
1 Mio. € ist der gesamte Gewerbeertrag verrechenbar; der 1 Mio. €
übersteigende Teil nur zu 60 %. Bei einem Gewerbeertrag ≤ 0 ist kein
Verlustabzug möglich (es gibt keinen positiven Ertrag zu kürzen).
@param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
@rückgabe Obergrenze des im Erhebungszeitraum verrechenbaren
Fehlbetrags.
--
@Quelle("§ 10a GewStG")
fn VerlustVerrechnungsobergrenze10a(gewerbeertrag: EuroCent): EuroCent = wähle {
falls gewerbeertrag <= 0,00 -> 0,00
falls gewerbeertrag <= VERLUST_SOCKEL_10A -> gewerbeertrag
sonst -> VERLUST_SOCKEL_10A
+ (VERLUST_QUOTE_10A * (gewerbeertrag - VERLUST_SOCKEL_10A)) als EuroCent
}
--
Tatsächlich abgezogener Fehlbetrag nach **§ 10a GewStG**: der
vortragsfähige Fehlbetrag, höchstens jedoch die Verrechnungsobergrenze
nach Sätzen 1 und 2.
@param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
@param fehlbetrag Gesondert festgestellter vortragsfähiger
Fehlbetrag der Vorjahre (§ 10a Satz 6).
@rückgabe Im Erhebungszeitraum abgezogener Fehlbetrag.
--
@Quelle("§ 10a GewStG")
fn Verlustabzug10a(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent =
fehlbetrag.höchstens(VerlustVerrechnungsobergrenze10a(gewerbeertrag))
--
Maßgebender Gewerbeertrag **nach** dem Verlustabzug des § 10a GewStG.
Durch die Verrechnungsobergrenze ist das Ergebnis nie negativ.
@param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
@param fehlbetrag Vortragsfähiger Fehlbetrag der Vorjahre.
@rückgabe Gewerbeertrag nach Verlustabzug (≥ 0).
--
@Quelle("§ 10a GewStG")
fn GewerbeertragNachVerlust(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent =
gewerbeertrag
- Verlustabzug10a(gewerbeertrag, fehlbetrag)
// ===========================================================================
// § 11 GewStG — Steuermesszahl und Steuermessbetrag
// ===========================================================================
--
Roher Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG** je Rechtsform —
**vor** der Begrenzung „höchstens in Höhe des abgerundeten
Gewerbeertrags": 24.500 € (natürliche Personen/Personengesellschaften,
Nr. 1), 5.000 € (Vereine/jur. Personen öR, Nr. 2), 0 €
(Kapitalgesellschaften — kein Freibetrag).
@param rechtsform Rechtsform des Steuerschuldners.
@rückgabe Freibetrag der Rechtsform (vor Höhenbegrenzung).
--
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
fn FreibetragRoh11(rechtsform: Rechtsform): EuroCent = wähle (rechtsform) {
falls NatuerlichePersonPersonengesellschaft -> FREIBETRAG_NAT_PERSON_11
falls VereinJuristischePersonOerR -> FREIBETRAG_VEREIN_11
falls Kapitalgesellschaft -> 0,00
}
--
Anzuwendender Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG**: der
Freibetrag der Rechtsform, höchstens jedoch in Höhe des abgerundeten
Gewerbeertrags (der Freibetrag darf keinen negativen Messbetrag
erzeugen).
@param rechtsform Rechtsform des Steuerschuldners.
@param abgerundeterGewerbeertrag Auf 100 € abgerundeter Gewerbeertrag.
@rückgabe Anzuwendender Freibetrag.
--
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
fn Freibetrag11(rechtsform: Rechtsform, abgerundeterGewerbeertrag: EuroCent): EuroCent =
FreibetragRoh11(rechtsform).höchstens(abgerundeterGewerbeertrag.mindestens(0,00))
--
Anzuwendende Steuermesszahl nach **§ 11 Abs. 2/3 GewStG**: regulär
3,5 %; bei Hausgewerbetreibenden und Gleichgestellten ermäßigt auf
1,96 % (= 56 % von 3,5 %, § 11 Abs. 3 GewStG).
@param ermaessigung Messzahl-Ermäßigung nach § 11 Abs. 3 GewStG.
@rückgabe Anzuwendende Steuermesszahl.
--
@Quelle("§ 11 Absatz 2 GewStG")
fn Steuermesszahl11(ermaessigung: Messzahlermaessigung): Prozent = wähle (ermaessigung) {
falls Keine -> STEUERMESSZAHL_11
falls Hausgewerbetreibender -> STEUERMESSZAHL_HAUSGEWERBE_11_3
}
--
Steuermessbetrag nach **§ 11 GewStG**: die um den Freibetrag
verminderte, auf volle 100 € abgerundete Bemessungsgrundlage,
multipliziert mit der Steuermesszahl.
@param abgerundeterGewerbeertrag § 11 Abs. 1 Satz 3.
@param freibetrag § 11 Abs. 1 Satz 3 (anzuwendender Freibetrag).
@param messzahl § 11 Abs. 2/3 (anzuwendende Steuermesszahl).
@rückgabe Steuermessbetrag (§ 11 GewStG).
--
@Quelle("§ 11 GewStG")
fn Steuermessbetrag11(
abgerundeterGewerbeertrag: EuroCent,
freibetrag: EuroCent,
messzahl: Prozent,
): EuroCent = (messzahl * (abgerundeterGewerbeertrag - freibetrag)) als EuroCent
// ===========================================================================
// § 16 GewStG — Hebesatz
// ===========================================================================
--
Anzuwendender Hebesatz nach **§ 16 Abs. 4 Satz 2 GewStG**: der von der
Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde
keinen höheren bestimmt, beträgt er 200 %).
@param hebesatz Von der Gemeinde bestimmter Hebesatz.
@rückgabe Anzuwendender Hebesatz (≥ 200 %).
--
@Quelle("§ 16 Absatz 4 Satz 2 GewStG")
fn AngewandterHebesatz16(hebesatz: Prozent): Prozent = wähle {
falls hebesatz < MINDEST_HEBESATZ_16 -> MINDEST_HEBESATZ_16
sonst -> hebesatz
}
--
Festzusetzende Gewerbesteuer nach **§ 16 Abs. 1 GewStG**: der
Steuermessbetrag, multipliziert mit dem anzuwendenden Hebesatz.
@param steuermessbetrag § 11 GewStG.
@param hebesatz Anzuwendender Hebesatz (§ 16 GewStG).
@rückgabe Festzusetzende Gewerbesteuer.
--
@Quelle("§ 16 Absatz 1 GewStG")
fn Gewerbesteuer16(steuermessbetrag: EuroCent, hebesatz: Prozent): EuroCent =
(steuermessbetrag * hebesatz) als EuroCent
// ===========================================================================
// Gesamtberechnung
// ===========================================================================
--
Vollständige Festsetzung der Gewerbesteuer eines Steuerfalls in der
gesetzlichen Reihenfolge: § 7 Satz 1 (Gewinn) → § 8 (Hinzurechnungen)
→ § 9 (Kürzungen) → § 7/§ 10 (Gewerbeertrag) → § 10a (Verlustabzug,
Mindestbesteuerung) → § 11 Abs. 1 Satz 3 (Abrundung, Freibetrag) →
§ 11 Abs. 2/3 (Steuermesszahl, Messbetrag) → § 16 (Hebesatz).
Liefert alle Zwischengrößen für die Audit-Vorlage.
Ist der maßgebende Gewerbeertrag nach Verlustabzug **0 oder negativ**,
entsteht kein Steuermessbetrag und keine Gewerbesteuer (alle
nachfolgenden Größen sind 0); ein Verlustvortrag regelt § 10a, der
hier nicht fortgeschrieben wird.
Erhebungszeiträume **vor 2025** werden bewusst nicht berechnet:
§ 9 Nr. 1 Satz 1 (Grundsteuer-Fassung) gilt erst ab EZ 2025
(§ 36 Abs. 4b Satz 1 GewStG) — ein begründeter, nicht abfangbarer
Abbruch macht diese Konstellation im Audit sichtbar.
@param betrieb Eingaben des Steuerfalls (siehe `Gewerbebetrieb`).
@rückgabe Vollständig dokumentiertes Berechnungsergebnis.
--
@Quelle("§ 7 GewStG")
fn BerechneGewerbesteuer(betrieb: Gewerbebetrieb): GewerbesteuerErgebnis = {
var h8: EuroCent = SummeHinzurechnungen8(betrieb.hinzurechnungen)
var k9: EuroCent = SummeKuerzungen9(
betrieb.kuerzungen,
betrieb.gewinnAusGewerbebetrieb,
betrieb.hinzurechnungen.ausgaben9Abs1Nr2KStG,
)
// Erhebungszeitraum-Schranke (§ 36 Abs. 4b GewStG) als nicht
// abfangbarer Abbruch in die erste genutzte Größe gefädelt.
var ertrag: EuroCent = wähle {
falls betrieb.erhebungszeitraum < FRUEHESTER_EZ -> abbruch("""
§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab;
EZ ${betrieb.erhebungszeitraum} ist nicht abgedeckt
""")
sonst -> Gewerbeertrag(
betrieb.gewinnAusGewerbebetrieb, betrieb.hinzurechnungen, betrieb.kuerzungen,
)
}
var abzug: EuroCent = Verlustabzug10a(ertrag, betrieb.gewerbeverlustVortrag)
var nachVerlust: EuroCent = ertrag - abzug
var abgerundet: EuroCent = wähle {
falls nachVerlust <= 0,00 -> 0,00
sonst -> nachVerlust.abrundenAuf(ABRUNDUNG_11)
}
var fb: EuroCent = Freibetrag11(betrieb.rechtsform, abgerundet)
var messzahl: Prozent = Steuermesszahl11(betrieb.messzahlermaessigung)
var bemessung: EuroCent = abgerundet - fb
var messbetrag: EuroCent = Steuermessbetrag11(abgerundet, fb, messzahl)
var heb: Prozent = AngewandterHebesatz16(betrieb.hebesatz)
var steuer: EuroCent = Gewerbesteuer16(messbetrag, heb)
GewerbesteuerErgebnis(
gewinn = betrieb.gewinnAusGewerbebetrieb,
summeHinzurechnungen = h8,
summeKuerzungen = k9,
gewerbeertrag = ertrag,
verlustabzug = abzug,
gewerbeertragNachVerlust = nachVerlust,
abgerundeterGewerbeertrag = abgerundet,
freibetrag = fb,
bemessungsgrundlage = bemessung,
steuermesszahl = messzahl,
steuermessbetrag = messbetrag,
angewandterHebesatz = heb,
gewerbesteuer = steuer,
)
}examples/gewst Geprüft — die prüfe-Fälle
Die Sollwerte sind von Hand aus dem Gesetzeswortlaut gerechnet — der Viertel-Anteil des § 8 Nr. 1 samt 200.000-€-Freibetrag, die Mindestbesteuerung des § 10a, die Freibeträge je Rechtsform und der Mindesthebesatz.
Testdatei anzeigen gewst.test.findsl
--
# Akzeptanztests — Gewerbesteuer (§§ 7–11, 16 GewStG)
`prüfe`-Blöcke zur Datei `gewerbesteuer`. Alle Sollwerte sind von Hand
aus dem Gesetzeswortlaut gerechnet (GewStG, Fassung ab EZ 2025):
- § 8 Nr. 1: ¼ der Summe (a–c 100 %, d 1/5, e 1/2, f 1/4), soweit
über 200.000 €.
- § 9 Nr. 1: Grundsteuer bzw. erweiterte Kürzung (Antrag, alternativ);
Nr. 5: Spenden ≤ max(20 % Gewinn; 4 ‰ (Umsatz + Lohn)).
- § 10a: bis 1 Mio. € voll, darüber 60 % (Mindestbesteuerung).
- § 11: Abrundung auf 100 €, Freibetrag 24.500/5.000/0 €,
Messzahl 3,5 % (Hausgewerbe 1,96 %).
- § 16: Hebesatz, mindestens 200 %.
Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
--
verwende {
Hinzurechnung8Nr1,
SummeHinzurechnungen8,
SpendenHoechstbetrag9Nr5,
Kuerzung9Nr5,
Kuerzung9Nr1,
Gewerbeertrag,
VerlustVerrechnungsobergrenze10a,
Verlustabzug10a,
GewerbeertragNachVerlust,
FreibetragRoh11,
Freibetrag11,
Steuermesszahl11,
Steuermessbetrag11,
AngewandterHebesatz16,
Gewerbesteuer16,
BerechneGewerbesteuer,
Hinzurechnungen8,
Kuerzungen9,
Gewerbebetrieb,
GewerbesteuerErgebnis,
NatuerlichePersonPersonengesellschaft,
Kapitalgesellschaft,
VereinJuristischePersonOerR,
Keine,
Hausgewerbetreibender,
} aus "./gewst"
prüfe "§ 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)" {
testfall "Summe ≤ 200.000 € → keine Hinzurechnung" {
Hinzurechnung8Nr1(Hinzurechnungen8(entgelteSchulden = 100.000,00)) == 0,00
}
testfall "Summe genau 200.000 € → 0 (nur der übersteigende Teil zählt)" {
Hinzurechnung8Nr1(Hinzurechnungen8(entgelteSchulden = 200.000,00)) == 0,00
}
testfall "Buchst. a + e: 1.000.000 + ½·400.000 = 1.200.000; ¼·(1.200.000−200.000) = 250.000" {
Hinzurechnung8Nr1(Hinzurechnungen8(
entgelteSchulden = 1.000.000,00,
mietePachtUnbeweglich = 400.000,00,
)) == 250.000,00
}
testfall "Buchst. d (bewegliche WG, 1/5): 1/5·1.500.000 = 300.000; ¼·(300.000−200.000) = 25.000" {
Hinzurechnung8Nr1(Hinzurechnungen8(mietePachtBeweglich = 1.500.000,00)) == 25.000,00
}
testfall "Buchst. f (Rechte, 1/4): 1/4·1.000.000 = 250.000; ¼·(250.000−200.000) = 12.500" {
Hinzurechnung8Nr1(Hinzurechnungen8(aufwendungenRechteUeberlassung = 1.000.000,00)) == 12.500,00
}
}
prüfe "§ 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)" {
testfall "Nr. 1 (¼·800.000 = 200.000) + Nr. 4 (50.000) + Nr. 5 (30.000) = 280.000" {
SummeHinzurechnungen8(Hinzurechnungen8(
entgelteSchulden = 1.000.000,00,
gewinnanteilePhgKgaa = 50.000,00,
steuerfreieDividenden = 30.000,00,
)) == 280.000,00
}
testfall "leere Hinzurechnungen → 0" {
SummeHinzurechnungen8(Hinzurechnungen8()) == 0,00
}
}
prüfe "§ 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)" {
testfall "20 %·500.000 = 100.000 > 4 ‰·12.000.000 = 48.000 → 100.000" {
SpendenHoechstbetrag9Nr5(500.000,00, 0,00, 10.000.000,00, 2.000.000,00) == 100.000,00
}
testfall "kein Gewinn, 4 ‰·60.000.000 = 240.000 → 240.000" {
SpendenHoechstbetrag9Nr5(0,00, 0,00, 50.000.000,00, 10.000.000,00) == 240.000,00
}
testfall "§ 8 Nr. 9 erhöht die 20-%-Bemessung: 20 %·(400.000+100.000) = 100.000" {
SpendenHoechstbetrag9Nr5(400.000,00, 100.000,00, 1.000.000,00, 0,00) == 100.000,00
}
testfall "Spenden-Kürzung = min(geleistet, Höchstbetrag): 120.000 gedeckelt auf 100.000" {
Kuerzung9Nr5(
Kuerzungen9(
geleisteteSpenden = 120.000,00,
umsaetze = 10.000.000,00,
loehneUndGehaelter = 2.000.000,00,
),
500.000,00, 0,00,
) == 100.000,00
}
testfall "Spenden unter Höchstbetrag bleiben voll: 30.000" {
Kuerzung9Nr5(
Kuerzungen9(
geleisteteSpenden = 30.000,00,
umsaetze = 10.000.000,00,
loehneUndGehaelter = 2.000.000,00,
),
500.000,00, 0,00,
) == 30.000,00
}
}
prüfe "§ 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)" {
testfall "Satz 1: als Betriebsausgabe erfasste Grundsteuer" {
Kuerzung9Nr1(Kuerzungen9(grundsteuerBetriebsgrundbesitz = 3.000,00)) == 3.000,00
}
testfall "Satz 2: erweiterte Kürzung auf Antrag tritt an die Stelle von Satz 1" {
Kuerzung9Nr1(Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 3.000,00,
erweiterteKuerzungBeantragt = wahr,
erweiterteKuerzungGrundbesitzertrag = 50.000,00,
)) == 50.000,00
}
}
prüfe "§ 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)" {
testfall "800.000 + 75.000 (§ 8 Nr. 1) − 35.000 (§ 9) = 840.000" {
Gewerbeertrag(
800.000,00,
Hinzurechnungen8(entgelteSchulden = 500.000,00),
Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 5.000,00,
schachteldividendenInland = 30.000,00,
),
) == 840.000,00
}
}
prüfe "§ 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)" {
testfall "GE 3 Mio., Obergrenze = 1 Mio. + 60 %·2 Mio. = 2,2 Mio." {
VerlustVerrechnungsobergrenze10a(3.000.000,00) == 2.200.000,00
}
testfall "GE ≤ 1 Mio.: voll verrechenbar (Obergrenze = GE)" {
VerlustVerrechnungsobergrenze10a(800.000,00) == 800.000,00
}
testfall "GE ≤ 0: kein Verlustabzug" {
VerlustVerrechnungsobergrenze10a(-50.000,00) == 0,00
}
testfall "GE 3 Mio., Fehlbetrag 5 Mio. → Abzug 2,2 Mio., danach 800.000" {
GewerbeertragNachVerlust(3.000.000,00, 5.000.000,00) == 800.000,00
}
testfall "GE 500.000, Fehlbetrag 200.000 → Abzug 200.000, danach 300.000" {
Verlustabzug10a(500.000,00, 200.000,00) == 200.000,00
und GewerbeertragNachVerlust(500.000,00, 200.000,00) == 300.000,00
}
testfall "GE 800.000 (≤ 1 Mio.), Fehlbetrag 5 Mio. → Abzug nur 800.000, danach 0" {
GewerbeertragNachVerlust(800.000,00, 5.000.000,00) == 0,00
}
}
prüfe "§ 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform" {
testfall "natürliche Person/Personengesellschaft → 24.500 €" {
FreibetragRoh11(NatuerlichePersonPersonengesellschaft) == 24.500,00
}
testfall "Verein/jur. Person öR → 5.000 €" {
FreibetragRoh11(VereinJuristischePersonOerR) == 5.000,00
}
testfall "Kapitalgesellschaft → kein Freibetrag" {
FreibetragRoh11(Kapitalgesellschaft) == 0,00
}
testfall "höchstens in Höhe des abgerundeten Gewerbeertrags (10.000 < 24.500)" {
Freibetrag11(NatuerlichePersonPersonengesellschaft, 10.000,00) == 10.000,00
}
testfall "voller Freibetrag bei hohem Gewerbeertrag" {
Freibetrag11(NatuerlichePersonPersonengesellschaft, 197.000,00) == 24.500,00
}
}
prüfe "§ 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag" {
testfall "Regelmesszahl 3,5 %" {
Steuermesszahl11(Keine) == 3,5%
}
testfall "Hausgewerbetreibende: ermäßigt 1,96 % (= 56 % von 3,5 %)" {
Steuermesszahl11(Hausgewerbetreibender) == 1,96%
}
testfall "(197.000 − 24.500)·3,5 % = 172.500·3,5 % = 6.037,50" {
Steuermessbetrag11(197.000,00, 24.500,00, 3,5%) == 6.037,50
}
testfall "Kapitalgesellschaft ohne Freibetrag: 1.000.000·3,5 % = 35.000" {
Steuermessbetrag11(1.000.000,00, 0,00, 3,5%) == 35.000,00
}
}
prüfe "§ 16 GewStG — Hebesatz (mindestens 200 %)" {
testfall "Gemeinde-Hebesatz unter 200 % → 200 %" {
AngewandterHebesatz16(150%) == 200%
}
testfall "genau 200 % bleibt 200 %" {
AngewandterHebesatz16(200%) == 200%
}
testfall "höherer Hebesatz bleibt unverändert" {
AngewandterHebesatz16(450%) == 450%
}
testfall "Steuermessbetrag · Hebesatz: 6.037,50 · 400 % = 24.150" {
Gewerbesteuer16(6.037,50, 400%) == 24.150,00
}
}
prüfe "Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)" {
testfall "Personengesellschaft, EZ 2025, Gewinn 200.000, Hebesatz 400 %" {
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 200.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(entgelteSchulden = 100.000,00),
kuerzungen = Kuerzungen9(grundsteuerBetriebsgrundbesitz = 3.000,00),
hebesatz = 400%,
),
)
e.summeHinzurechnungen == 0,00
und e.summeKuerzungen == 3.000,00
und e.gewerbeertrag == 197.000,00
und e.gewerbeertragNachVerlust == 197.000,00
und e.abgerundeterGewerbeertrag == 197.000,00
und e.freibetrag == 24.500,00
und e.steuermessbetrag == 6.037,50
und e.angewandterHebesatz == 400%
und e.gewerbesteuer == 24.150,00
}
testfall "Kapitalgesellschaft, EZ 2025, Gewinn 1.000.000, Hebesatz 500 %, kein Freibetrag" {
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 1.000.000,00,
rechtsform = Kapitalgesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(),
hebesatz = 500%,
),
)
e.freibetrag == 0,00
und e.bemessungsgrundlage == 1.000.000,00
und e.steuermessbetrag == 35.000,00
und e.angewandterHebesatz == 500%
und e.gewerbesteuer == 175.000,00
}
testfall "Volle Kette: § 8-Excess + § 9 + § 10a + Hausgewerbe, Hebesatz 410 %" {
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 800.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(
entgelteSchulden = 600.000,00,
steuerfreieDividenden = 20.000,00,
),
kuerzungen = Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 10.000,00,
schachteldividendenInland = 50.000,00,
geleisteteSpenden = 5.000,00,
umsaetze = 2.000.000,00,
loehneUndGehaelter = 500.000,00,
),
gewerbeverlustVortrag = 100.000,00,
messzahlermaessigung = Hausgewerbetreibender,
hebesatz = 410%,
),
)
e.summeHinzurechnungen == 120.000,00
und e.summeKuerzungen == 65.000,00
und e.gewerbeertrag == 855.000,00
und e.verlustabzug == 100.000,00
und e.gewerbeertragNachVerlust == 755.000,00
und e.bemessungsgrundlage == 730.500,00
und e.steuermesszahl == 1,96%
und e.steuermessbetrag == 14.317,80
und e.gewerbesteuer == 58.702,98
}
testfall "Negativer Gewerbeertrag → kein Messbetrag, keine Steuer" {
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 50.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(grundsteuerBetriebsgrundbesitz = 100.000,00),
),
)
e.gewerbeertrag == -50.000,00
und e.abgerundeterGewerbeertrag == 0,00
und e.freibetrag == 0,00
und e.steuermessbetrag == 0,00
und e.gewerbesteuer == 0,00
}
testfall "Erhebungszeitraum vor 2025 wird abgelehnt (§ 36 Abs. 4b GewStG)" erwartet abbruch {
BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 100.000,00,
rechtsform = Kapitalgesellschaft,
erhebungszeitraum = 2024,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(),
),
)
}
}Generierte Artefakte
Aus demselben Modul erzeugt die Toolchain ohne weiteres Zutun ausführbaren Code, Dokumentation und Programmablaufpläne — die Steuerregel bleibt die einzige Quelle der Wahrheit.
-
findsl codegen→ typisierter Java-, TypeScript- oder JavaScript-Code mit exakter Dezimalarithmetik. -
findsl docgen→ HTML-, Markdown- und PDF-Doku mit Paragraphen-Verweisen aus den@Quelle-Annotationen. -
findsl papgen→ Programmablaufpläne je Funktion (Mermaid oder self-contained HTML).
Quelle und Generat
Alle Dateien dieses Beispiels nebeneinander: links die FinDSL-Module, daneben sämtliche Artefakte, die die Toolchain daraus erzeugt — Java, TypeScript, JavaScript, die Dokumentation (Markdown, HTML, PDF) und die Programmablaufpläne. Zum Editieren und Prüfen im Playground öffnen.
Quelle
Generiert
Java
TypeScript
JavaScript
Doku
Diagramm
--
# Gewerbesteuer — Messbetrag und Steuer (§§ 7–11, 16 GewStG)
Bildet die Festsetzung der **Gewerbesteuer** nach dem
Gewerbesteuergesetz (GewStG, i.d.F. ab Erhebungszeitraum 2025 —
insbesondere § 9 Nr. 1 Satz 1 in der Fassung des Art. 9 G v. 2.12.2024,
§ 36 Abs. 4b GewStG) vollständig in der gesetzlichen Reihenfolge ab:
- **§ 6 GewStG** — Besteuerungsgrundlage ist der Gewerbeertrag.
- **§ 7 Satz 1 GewStG** — Gewerbeertrag ist der nach EStG/KStG zu
ermittelnde Gewinn aus Gewerbebetrieb, vermehrt um die § 8- und
vermindert um die § 9-Beträge.
- **§ 8 GewStG** — Hinzurechnungen: Nr. 1 (Viertel der Summe aus
a–f Finanzierungsanteilen, soweit über 200.000 €) sowie die
Nummern 4, 5, 8, 9, 10, 12 (die übrigen Nummern sind weggefallen).
- **§ 9 GewStG** — Kürzungen: Nr. 1 (Grundsteuer für Betriebs-
grundbesitz bzw. erweiterte Kürzung auf Antrag), Nr. 2/2a/2b/3/7/8
(Beteiligungs-/Betriebsstätten-Erträge) und Nr. 5 (Spenden bis
20 % des Gewinns oder 4 ‰ der Summe aus Umsätzen und Löhnen).
- **§ 10/§ 10a GewStG** — maßgebender Gewerbeertrag und Kürzung um
vortragsfähige Fehlbeträge (Mindestbesteuerung: bis 1 Mio. € voll,
darüber nur 60 %).
- **§ 11 GewStG** — Abrundung auf volle 100 €, Freibetrag (24.500 €
bzw. 5.000 € bzw. 0 € je Rechtsform) und Steuermesszahl 3,5 %
(ermäßigt 1,96 % bei Hausgewerbetreibenden, § 11 Abs. 3).
- **§ 16 GewStG** — Anwendung des Hebesatzes der hebeberechtigten
Gemeinde, mindestens 200 % (§ 16 Abs. 4 Satz 2).
**Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
Steuerbetragsberechnung):**
- Die Ermittlung des **Gewinns aus Gewerbebetrieb** selbst (§ 7 Satz 1:
„nach den Vorschriften des EStG oder KStG"). Er geht — wie das
Einkommen i.S.d. § 8 Abs. 1 KStG im KStG-Modul — als geprüfte
Eingabe ein. Ebenso die *Höhe* der einzelnen Hinzurechnungs-/
Kürzungsbeträge, die § 8/§ 9 aus EStG/KStG-Sachverhalten ableiten
(Nr. 4/5/8/9/10/12 bzw. Nr. 2/2a/2b/3/7/8): das GewStG schreibt nur
die Verrechnung vor — diese ist hier vollständig und exakt
implementiert.
- **Zerlegung (§§ 28–34 GewStG)** auf mehrere Gemeinden (Maßstab
Arbeitslöhne, Sonderfälle Windenergie/Solar/Speicher). Modelliert
ist der Regelfall **einer** hebeberechtigten Gemeinde.
- Verfahren §§ 14a/19–21 (Vorauszahlung, Festsetzung, Zerlegungs-
bescheid), § 35b (Änderung), abgekürzter Erhebungszeitraum
(§ 14 Satz 3), Steuerbefreiungen § 3, optierende Gesellschaft
§ 1a KStG (§ 2 Abs. 8).
- Erweiterte Kürzung § 9 Nr. 1 Satz 2 dem Grunde nach (Antrag,
Grundstücksunternehmens-Voraussetzungen) — die *Höhe* des auf den
eigenen Grundbesitz entfallenden Gewerbeertrags geht als Eingabe ein.
--
// ===========================================================================
// § 8 Nr. 1 GewStG — Anteile und Freibetrag der Finanzierungs-Hinzurechnung
// ===========================================================================
--
Anteil der Hinzurechnung nach § 8 Nr. 1 GewStG: „Ein Viertel der
Summe" der Finanzierungsanteile a–f wird hinzugerechnet, soweit die
Summe den Freibetrag übersteigt.
--
@Quelle("§ 8 Nummer 1 GewStG")
konst ANTEIL_8_1: Prozent = 25%
--
Freibetrag der Finanzierungs-Hinzurechnung: erst der **200.000 €
übersteigende** Teil der gewichteten Summe a–f wird zu einem Viertel
hinzugerechnet (§ 8 Nr. 1 letzter Halbsatz GewStG).
--
@Quelle("§ 8 Nummer 1 GewStG")
konst HINZURECHNUNG_FREIBETRAG_8_1: EuroCent = 200.000,00
--
Anteil der Miet-/Pachtzinsen (einschl. Leasingraten) für **bewegliche**
Wirtschaftsgüter des Anlagevermögens: ein Fünftel
(§ 8 Nr. 1 Buchst. d GewStG).
--
@Quelle("§ 8 Nummer 1 Buchstabe d GewStG")
konst ANTEIL_BEWEGLICH_8_1D: Prozent = 20%
--
Anteil der Miet-/Pachtzinsen für **unbewegliche** Wirtschaftsgüter des
Anlagevermögens: die Hälfte (§ 8 Nr. 1 Buchst. e GewStG).
--
@Quelle("§ 8 Nummer 1 Buchstabe e GewStG")
konst ANTEIL_UNBEWEGLICH_8_1E: Prozent = 50%
--
Anteil der Aufwendungen für die zeitlich befristete Überlassung von
Rechten (Konzessionen, Lizenzen): ein Viertel
(§ 8 Nr. 1 Buchst. f GewStG).
--
@Quelle("§ 8 Nummer 1 Buchstabe f GewStG")
konst ANTEIL_RECHTE_8_1F: Prozent = 25%
// ===========================================================================
// § 9 Nr. 5 GewStG — Spendenhöchstbeträge
// ===========================================================================
--
Spenden-Höchstsatz I (§ 9 Nr. 5 Satz 1 GewStG): 20 % des um die
Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb.
--
@Quelle("§ 9 Nummer 5 GewStG")
konst SPENDEN_SATZ_GEWINN_9_5: Prozent = 20%
--
Spenden-Höchstsatz II (§ 9 Nr. 5 Satz 1 GewStG): 4 Promille der Summe
der gesamten Umsätze und der im Wirtschaftsjahr aufgewendeten Löhne
und Gehälter. 4 ‰ = 0,4 %.
--
@Quelle("§ 9 Nummer 5 GewStG")
konst SPENDEN_PROMILLE_9_5: Prozent = 0,4%
// ===========================================================================
// § 10a GewStG — Gewerbeverlust (Mindestbesteuerung)
// ===========================================================================
--
Sockelbetrag des Verlustabzugs: der maßgebende Gewerbeertrag wird bis
zu **1 Mio. €** ungekürzt um Fehlbeträge gemindert
(§ 10a Satz 1 GewStG).
--
@Quelle("§ 10a Satz 1 GewStG")
konst VERLUST_SOCKEL_10A: EuroCent = 1.000.000,00
--
Mindestbesteuerungsquote: der 1 Mio. € übersteigende maßgebende
Gewerbeertrag ist nur bis zu **60 %** um Fehlbeträge zu kürzen
(§ 10a Satz 2 GewStG).
--
@Quelle("§ 10a Satz 2 GewStG")
konst VERLUST_QUOTE_10A: Prozent = 60%
// ===========================================================================
// § 11 GewStG — Abrundung, Freibeträge, Steuermesszahl
// ===========================================================================
--
Abrundungsstufe: der Gewerbeertrag ist auf volle **100 €** nach unten
abzurunden (§ 11 Abs. 1 Satz 3 GewStG).
--
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
konst ABRUNDUNG_11: EuroCent = 100,00
--
Freibetrag bei **natürlichen Personen und Personengesellschaften**:
24.500 €, höchstens in Höhe des abgerundeten Gewerbeertrags
(§ 11 Abs. 1 Satz 3 Nr. 1 GewStG).
--
@Quelle("§ 11 Absatz 1 Satz 3 Nummer 1 GewStG")
konst FREIBETRAG_NAT_PERSON_11: EuroCent = 24.500,00
--
Freibetrag bei sonstigen juristischen Personen des privaten Rechts und
Vereinen (§ 2 Abs. 3), Unternehmen i.S.d. § 3 Nr. 5/6/… sowie
juristischen Personen des öffentlichen Rechts: 5.000 €, höchstens in
Höhe des abgerundeten Gewerbeertrags (§ 11 Abs. 1 Satz 3 Nr. 2 GewStG).
--
@Quelle("§ 11 Absatz 1 Satz 3 Nummer 2 GewStG")
konst FREIBETRAG_VEREIN_11: EuroCent = 5.000,00
--
Steuermesszahl für den Gewerbeertrag: **3,5 %** (§ 11 Abs. 2 GewStG).
--
@Quelle("§ 11 Absatz 2 GewStG")
konst STEUERMESSZAHL_11: Prozent = 3,5%
--
Ermäßigte Steuermesszahl für Hausgewerbetreibende und Gleichgestellte:
die Messzahl ermäßigt sich auf **56 %** von 3,5 %, also **1,96 %**
(§ 11 Abs. 3 GewStG).
--
@Quelle("§ 11 Absatz 3 GewStG")
konst STEUERMESSZAHL_HAUSGEWERBE_11_3: Prozent = 1,96%
// ===========================================================================
// § 16 GewStG — Hebesatz
// ===========================================================================
--
Mindest-Hebesatz: beträgt 200 %, wenn die Gemeinde keinen höheren
Hebesatz bestimmt hat (§ 16 Abs. 4 Satz 2 GewStG).
--
@Quelle("§ 16 Absatz 4 Satz 2 GewStG")
konst MINDEST_HEBESATZ_16: Prozent = 200%
--
Frühester von diesem Modul abgebildeter Erhebungszeitraum. Die hier
implementierte Fassung gilt insbesondere für § 9 Nr. 1 Satz 1
(Grundsteuer-Fassung) erstmals für den Erhebungszeitraum 2025
(§ 36 Abs. 4b Satz 1 GewStG).
--
@Quelle("§ 36 Absatz 4b GewStG")
konst FRUEHESTER_EZ: Ganzzahl = 2025
// ===========================================================================
// Datenstrukturen
// ===========================================================================
--
Rechtsform des Steuerschuldners (§ 5 GewStG) — bestimmt den Freibetrag
nach § 11 Abs. 1 Satz 3 GewStG.
@param NatuerlichePersonPersonengesellschaft Einzelunternehmen oder
Personengesellschaft (Mitunternehmerschaft)
— Freibetrag 24.500 € (§ 11 Abs. 1 S. 3 Nr. 1 GewStG).
@param Kapitalgesellschaft Kapitalgesellschaft / Genossenschaft
(§ 2 Abs. 2 GewStG) — **kein** Freibetrag.
@param VereinJuristischePersonOerR Sonstige juristische Personen des
privaten Rechts, Vereine (§ 2 Abs. 3) und
juristische Personen des öffentlichen
Rechts — Freibetrag 5.000 € (§ 11 Abs. 1
S. 3 Nr. 2 GewStG).
--
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
aufzählung Rechtsform {
NatuerlichePersonPersonengesellschaft,
Kapitalgesellschaft,
VereinJuristischePersonOerR,
}
--
Ermäßigung der Steuermesszahl nach § 11 Abs. 3 GewStG.
@param Keine Regelmesszahl 3,5 % (§ 11 Abs. 2 GewStG).
@param Hausgewerbetreibender Hausgewerbetreibende und nach dem
Heimarbeitsgesetz Gleichgestellte —
ermäßigte Messzahl 1,96 % (§ 11 Abs. 3
GewStG).
--
@Quelle("§ 11 Absatz 3 GewStG")
aufzählung Messzahlermaessigung {
Keine,
Hausgewerbetreibender,
}
--
Hinzurechnungsbeträge nach § 8 GewStG. Die Beträge a–f der Nr. 1 sind
**vor** der gesetzlichen Gewichtung (20 %/50 %/25 %) und **vor** dem
Freibetrag/Viertel anzugeben — diese wendet `hinzurechnung8Nr1` an.
Die Nummern 4, 5, 8, 9, 10, 12 werden in voller Höhe hinzugerechnet
und sind als die bereits nach EStG/KStG ermittelten Beträge
einzutragen (Nr. 2/3/6/7/11 GewStG sind weggefallen).
@param entgelteSchulden § 8 Nr. 1 Buchst. a: Entgelte für Schulden
(Zinsen, Skonti, Diskontbeträge), 100 %.
@param rentenDauerndeLasten § 8 Nr. 1 Buchst. b: Renten und dauernde
Lasten, 100 %.
@param gewinnanteileStillerGesellschafter § 8 Nr. 1 Buchst. c:
Gewinnanteile des stillen Gesellschafters,
100 %.
@param mietePachtBeweglich § 8 Nr. 1 Buchst. d: Miet-/Pachtzinsen
(inkl. Leasing) für bewegliche WG des
Anlagevermögens — geht zu einem Fünftel ein.
@param mietePachtUnbeweglich § 8 Nr. 1 Buchst. e: Miet-/Pachtzinsen für
unbewegliche WG des Anlagevermögens — geht
zur Hälfte ein.
@param aufwendungenRechteUeberlassung § 8 Nr. 1 Buchst. f: Aufwendungen
für zeitlich befristete Rechteüberlassung —
geht zu einem Viertel ein.
@param gewinnanteilePhgKgaa § 8 Nr. 4: Gewinnanteile an persönlich
haftende Gesellschafter einer KGaA, 100 %.
@param steuerfreieDividenden § 8 Nr. 5: nach § 3 Nr. 40 EStG / § 8b
KStG außer Ansatz gebliebene Gewinnanteile
(Streubesitz), 100 %.
@param verlustanteileMitunternehmerschaft § 8 Nr. 8: Anteile am Verlust
einer Mitunternehmerschaft, 100 %.
@param ausgaben9Abs1Nr2KStG § 8 Nr. 9: Ausgaben i.S.d. § 9 Abs. 1
Nr. 2 KStG (abziehbare Zuwendungen), 100 %.
@param gewinnminderungenTeilwert § 8 Nr. 10: Gewinnminderungen durch
Teilwertansatz/Veräußerung von
Körperschaftsanteilen, 100 %.
@param auslaendischeSteuern § 8 Nr. 12: nach § 34c EStG abgezogene
ausländische Steuern, 100 %.
--
@Quelle("§ 8 GewStG")
datensatz Hinzurechnungen8(
entgelteSchulden: EuroCent = 0,00, // § 8 Nr. 1 a (100 %)
rentenDauerndeLasten: EuroCent = 0,00, // § 8 Nr. 1 b (100 %)
gewinnanteileStillerGesellschafter: EuroCent = 0,00, // § 8 Nr. 1 c (100 %)
mietePachtBeweglich: EuroCent = 0,00, // § 8 Nr. 1 d (1/5)
mietePachtUnbeweglich: EuroCent = 0,00, // § 8 Nr. 1 e (1/2)
aufwendungenRechteUeberlassung: EuroCent = 0,00, // § 8 Nr. 1 f (1/4)
gewinnanteilePhgKgaa: EuroCent = 0,00, // § 8 Nr. 4 (100 %)
steuerfreieDividenden: EuroCent = 0,00, // § 8 Nr. 5 (100 %)
verlustanteileMitunternehmerschaft: EuroCent = 0,00, // § 8 Nr. 8 (100 %)
ausgaben9Abs1Nr2KStG: EuroCent = 0,00, // § 8 Nr. 9 (100 %)
gewinnminderungenTeilwert: EuroCent = 0,00, // § 8 Nr. 10 (100 %)
auslaendischeSteuern: EuroCent = 0,00, // § 8 Nr. 12 (100 %)
)
--
Kürzungsbeträge nach § 9 GewStG. Die Spenden-Begrenzung (Nr. 5) und
die Wahl zwischen einfacher und erweiterter Grundbesitzkürzung (Nr. 1)
werden von den Funktionen angewandt; alle übrigen Nummern werden in
der angegebenen Höhe abgezogen.
@param grundsteuerBetriebsgrundbesitz § 9 Nr. 1 Satz 1: im
Erhebungszeitraum als Betriebsausgabe
erfasste Grundsteuer für zum
Betriebsvermögen gehörenden Grundbesitz.
@param erweiterteKuerzungBeantragt § 9 Nr. 1 Satz 2: Antrag auf
erweiterte Kürzung bei Grundstücks-
unternehmen (tritt an die Stelle von
Satz 1).
@param erweiterteKuerzungGrundbesitzertrag § 9 Nr. 1 Satz 2: Teil des
Gewerbeertrags, der auf die Verwaltung und
Nutzung des eigenen Grundbesitzes entfällt
(extern ermittelt; nur bei Antrag).
@param gewinnanteileMitunternehmerschaft § 9 Nr. 2: Anteile am Gewinn
einer Mitunternehmerschaft.
@param schachteldividendenInland § 9 Nr. 2a: Gewinne aus Anteilen an
inländischer Kapitalgesellschaft bei
Beteiligung ≥ 15 % zu Beginn des EZ.
@param kgaaGewinnanteile § 9 Nr. 2b: nach § 8 Nr. 4 dem
Gewerbeertrag einer KGaA hinzugerechnete
Gewinnanteile.
@param auslandsbetriebsstaette § 9 Nr. 3: Teil des Gewerbeertrags, der
auf eine nicht im Inland belegene
Betriebsstätte entfällt.
@param geleisteteSpenden § 9 Nr. 5: aus Betriebsmitteln geleistete
Zuwendungen für steuerbegünstigte Zwecke
(vor Höchstbetragsbegrenzung).
@param umsaetze § 9 Nr. 5: Summe der gesamten Umsätze
(Bemessung des 4-‰-Höchstsatzes).
@param loehneUndGehaelter § 9 Nr. 5: im Wirtschaftsjahr aufgewendete
Löhne und Gehälter (Bemessung des
4-‰-Höchstsatzes).
@param schachteldividendenAuslandNr7 § 9 Nr. 7: Gewinne aus Anteilen
an einer Kapitalgesellschaft außerhalb des
Geltungsbereichs, Beteiligung ≥ 15 %.
@param schachteldividendenDbaNr8 § 9 Nr. 8: nach DBA befreite Gewinne
aus Anteilen an einer ausländischen
Gesellschaft (Mindestbeteiligung).
--
@Quelle("§ 9 GewStG")
datensatz Kuerzungen9(
grundsteuerBetriebsgrundbesitz: EuroCent = 0,00, // § 9 Nr. 1 S. 1
erweiterteKuerzungBeantragt: Wahrheitswert = falsch, // § 9 Nr. 1 S. 2 (Antrag)
erweiterteKuerzungGrundbesitzertrag: EuroCent = 0,00, // § 9 Nr. 1 S. 2
gewinnanteileMitunternehmerschaft: EuroCent = 0,00, // § 9 Nr. 2
schachteldividendenInland: EuroCent = 0,00, // § 9 Nr. 2a
kgaaGewinnanteile: EuroCent = 0,00, // § 9 Nr. 2b
auslandsbetriebsstaette: EuroCent = 0,00, // § 9 Nr. 3
geleisteteSpenden: EuroCent = 0,00, // § 9 Nr. 5
umsaetze: EuroCent = 0,00, // § 9 Nr. 5 (4 ‰)
loehneUndGehaelter: EuroCent = 0,00, // § 9 Nr. 5 (4 ‰)
schachteldividendenAuslandNr7: EuroCent = 0,00, // § 9 Nr. 7
schachteldividendenDbaNr8: EuroCent = 0,00, // § 9 Nr. 8
)
--
Eingaben eines Gewerbesteuerfalls für **eine** hebeberechtigte
Gemeinde (Regelfall ohne Zerlegung).
@param gewinnAusGewerbebetrieb § 7 Satz 1 GewStG: der nach EStG/KStG
ermittelte Gewinn aus Gewerbebetrieb
(extern ermittelt; Bemessungsbasis vor
§§ 8/9).
@param rechtsform Rechtsform des Steuerschuldners — bestimmt
den Freibetrag nach § 11 GewStG.
@param erhebungszeitraum Kalenderjahr des Erhebungszeitraums
(§ 14 Satz 2 GewStG).
@param hinzurechnungen § 8 GewStG (siehe `Hinzurechnungen8`).
@param kuerzungen § 9 GewStG (siehe `Kuerzungen9`).
@param gewerbeverlustVortrag § 10a GewStG: zum Schluss des
vorangegangenen EZ gesondert festgestellte
vortragsfähige Fehlbeträge (§ 10a Satz 6).
@param messzahlermaessigung § 11 Abs. 3 GewStG.
@param hebesatz Von der Gemeinde bestimmter Hebesatz
(§ 16 GewStG); mindestens 200 % werden
angewandt (§ 16 Abs. 4 Satz 2).
--
@Quelle("§ 7 GewStG")
datensatz Gewerbebetrieb(
gewinnAusGewerbebetrieb: EuroCent, // § 7 S. 1 (nach EStG/KStG)
rechtsform: Rechtsform, // § 5/§ 11 GewStG
erhebungszeitraum: Ganzzahl, // § 14 S. 2 GewStG
hinzurechnungen: Hinzurechnungen8, // § 8 GewStG
kuerzungen: Kuerzungen9, // § 9 GewStG
gewerbeverlustVortrag: EuroCent = 0,00, // § 10a GewStG
messzahlermaessigung: Messzahlermaessigung = Keine, // § 11 Abs. 3 GewStG
hebesatz: Prozent = 200%, // § 16 GewStG
)
--
Vollständige, prüfbare Berechnungsdokumentation eines
Gewerbesteuerfalls — jede Zwischengröße der gesetzlichen
Reihenfolge ist einzeln ausgewiesen, damit die Festsetzung Schritt
für Schritt gegen das Gesetz auditierbar ist.
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb
(Eingabe, unverändert übernommen).
@param summeHinzurechnungen § 8 GewStG: Summe aller Hinzurechnungen.
@param summeKuerzungen § 9 GewStG: Summe aller Kürzungen.
@param gewerbeertrag § 7/§ 10 GewStG: Gewinn + § 8 − § 9.
@param verlustabzug § 10a GewStG: tatsächlich abgezogener
Fehlbetrag (Mindestbesteuerung beachtet).
@param gewerbeertragNachVerlust § 10a GewStG: maßgebender Gewerbeertrag
nach Verlustabzug (nicht negativ).
@param abgerundeterGewerbeertrag § 11 Abs. 1 Satz 3: auf volle 100 €
abgerundet.
@param freibetrag § 11 Abs. 1 Satz 3: angewandter Freibetrag.
@param bemessungsgrundlage Abgerundeter Gewerbeertrag − Freibetrag.
@param steuermesszahl § 11 Abs. 2/3 GewStG: angewandte Messzahl.
@param steuermessbetrag § 11 GewStG: Bemessungsgrundlage × Messzahl.
@param angewandterHebesatz § 16 GewStG: angewandter Hebesatz
(mindestens 200 %).
@param gewerbesteuer § 16 GewStG: Steuermessbetrag × Hebesatz.
--
@Quelle("§ 7 GewStG")
datensatz GewerbesteuerErgebnis(
gewinn: EuroCent, // § 7 S. 1 (Eingabe)
summeHinzurechnungen: EuroCent, // § 8 GewStG
summeKuerzungen: EuroCent, // § 9 GewStG
gewerbeertrag: EuroCent, // § 7/§ 10 GewStG
verlustabzug: EuroCent, // § 10a GewStG
gewerbeertragNachVerlust: EuroCent, // § 10a GewStG (≥ 0)
abgerundeterGewerbeertrag: EuroCent, // § 11 Abs. 1 S. 3
freibetrag: EuroCent, // § 11 Abs. 1 S. 3
bemessungsgrundlage: EuroCent, // abger. GE − Freibetrag
steuermesszahl: Prozent, // § 11 Abs. 2/3
steuermessbetrag: EuroCent, // § 11 GewStG
angewandterHebesatz: Prozent, // § 16 GewStG
gewerbesteuer: EuroCent, // § 16 GewStG
)
// ===========================================================================
// § 8 GewStG — Hinzurechnungen
// ===========================================================================
--
Hinzurechnung nach **§ 8 Nr. 1 GewStG**: Ein Viertel der Summe aus
den Finanzierungsanteilen a–f, soweit die Summe **200.000 €
übersteigt**. Buchst. a–c gehen zu 100 %, Buchst. d (bewegliche WG)
zu einem Fünftel, Buchst. e (unbewegliche WG) zur Hälfte, Buchst. f
(Rechteüberlassung) zu einem Viertel in die Summe ein. Liegt die
gewichtete Summe ≤ 200.000 €, ist die Hinzurechnung nach Nr. 1 = 0.
@param h Hinzurechnungsbeträge (siehe `Hinzurechnungen8`).
@rückgabe Hinzurechnungsbetrag nach § 8 Nr. 1 GewStG.
--
@Quelle("§ 8 Nummer 1 GewStG")
fn Hinzurechnung8Nr1(h: Hinzurechnungen8): EuroCent = {
var gewichteteSumme: EuroCent = h.entgelteSchulden
+ h.rentenDauerndeLasten
+ h.gewinnanteileStillerGesellschafter
+ (ANTEIL_BEWEGLICH_8_1D * h.mietePachtBeweglich) als EuroCent
+ (ANTEIL_UNBEWEGLICH_8_1E * h.mietePachtUnbeweglich) als EuroCent
+ (ANTEIL_RECHTE_8_1F * h.aufwendungenRechteUeberlassung) als EuroCent
var uebersteigend: EuroCent = (gewichteteSumme - HINZURECHNUNG_FREIBETRAG_8_1).mindestens(0,00)
var nr1: EuroCent = (ANTEIL_8_1 * uebersteigend) als EuroCent
nr1
}
--
Summe der Hinzurechnungen nach **§ 8 GewStG**: der Betrag nach Nr. 1
zuzüglich der in voller Höhe hinzuzurechnenden Nummern 4, 5, 8, 9, 10
und 12 (Nr. 2/3/6/7/11 GewStG sind weggefallen).
@param h Hinzurechnungsbeträge (siehe `Hinzurechnungen8`).
@rückgabe Summe der Hinzurechnungen nach § 8 GewStG.
--
@Quelle("§ 8 GewStG")
fn SummeHinzurechnungen8(h: Hinzurechnungen8): EuroCent = Hinzurechnung8Nr1(h)
+ h.gewinnanteilePhgKgaa
+ h.steuerfreieDividenden
+ h.verlustanteileMitunternehmerschaft
+ h.ausgaben9Abs1Nr2KStG
+ h.gewinnminderungenTeilwert
+ h.auslaendischeSteuern
// ===========================================================================
// § 9 GewStG — Kürzungen
// ===========================================================================
--
Höchstbetrag der Spenden-Kürzung nach **§ 9 Nr. 5 Satz 1 GewStG**:
der höhere Betrag aus
- 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus
Gewerbebetrieb und
- 4 ‰ (0,4 %) der Summe aus den gesamten Umsätzen und den im
Wirtschaftsjahr aufgewendeten Löhnen und Gehältern.
Ein negativer „20 %"-Wert (bei Verlust) wird durch die Maximum-Bildung
mit dem nicht-negativen 4-‰-Wert bzw. die Nicht-negativ-Kappung
abgefangen.
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
@param hinzurechnung8Nr9 § 8 Nr. 9: erhöht die 20-%-Bemessung.
@param umsaetze Summe der gesamten Umsätze.
@param loehneUndGehaelter Aufgewendete Löhne und Gehälter.
@rückgabe Höchstbetrag der nach § 9 Nr. 5 abziehbaren Spenden.
--
@Quelle("§ 9 Nummer 5 GewStG")
fn SpendenHoechstbetrag9Nr5(
gewinn: EuroCent,
hinzurechnung8Nr9: EuroCent,
umsaetze: EuroCent,
loehneUndGehaelter: EuroCent,
): EuroCent = {
var nachGewinn: EuroCent = (SPENDEN_SATZ_GEWINN_9_5 * (gewinn + hinzurechnung8Nr9)) als EuroCent
var nachUmsatzLohn: EuroCent = (SPENDEN_PROMILLE_9_5 * (umsaetze + loehneUndGehaelter)) als EuroCent
nachGewinn.mindestens(nachUmsatzLohn).mindestens(0,00)
}
--
Tatsächlich abziehbare Spenden-Kürzung nach § 9 Nr. 5 GewStG: die
geleisteten Zuwendungen, höchstens jedoch der Höchstbetrag nach
`spendenHoechstbetrag9Nr5`.
@param k Kürzungsbeträge (siehe `Kuerzungen9`).
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
@param hinzurechnung8Nr9 § 8 Nr. 9 (erhöht die 20-%-Bemessung).
@rückgabe Abziehbare Spenden nach § 9 Nr. 5 GewStG.
--
@Quelle("§ 9 Nummer 5 GewStG")
fn Kuerzung9Nr5(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent =
k.geleisteteSpenden.höchstens(
SpendenHoechstbetrag9Nr5(gewinn, hinzurechnung8Nr9, k.umsaetze, k.loehneUndGehaelter)
)
--
Kürzung nach **§ 9 Nr. 1 GewStG**: regulär die als Betriebsausgabe
erfasste Grundsteuer für Betriebsgrundbesitz (Satz 1). Auf Antrag
tritt bei Grundstücksunternehmen **an deren Stelle** die erweiterte
Kürzung um den auf die Verwaltung/Nutzung des eigenen Grundbesitzes
entfallenden Teil des Gewerbeertrags (Satz 2) — die beiden Kürzungen
sind Alternativen, nicht kumulativ.
@param k Kürzungsbeträge (siehe `Kuerzungen9`).
@rückgabe Kürzungsbetrag nach § 9 Nr. 1 GewStG.
--
@Quelle("§ 9 Nummer 1 GewStG")
fn Kuerzung9Nr1(k: Kuerzungen9): EuroCent = wähle {
falls k.erweiterteKuerzungBeantragt -> k.erweiterteKuerzungGrundbesitzertrag
sonst -> k.grundsteuerBetriebsgrundbesitz
}
--
Summe der Kürzungen nach **§ 9 GewStG**: Nr. 1 (einfach oder
erweitert), die Beteiligungs-/Betriebsstätten-Kürzungen Nr. 2, 2a,
2b, 3, 7 und 8 sowie die begrenzte Spenden-Kürzung Nr. 5.
@param k Kürzungsbeträge (siehe `Kuerzungen9`).
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb (für § 9 Nr. 5).
@param hinzurechnung8Nr9 § 8 Nr. 9 (für die § 9 Nr. 5-Bemessung).
@rückgabe Summe der Kürzungen nach § 9 GewStG.
--
@Quelle("§ 9 GewStG")
fn SummeKuerzungen9(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent =
Kuerzung9Nr1(k)
+ k.gewinnanteileMitunternehmerschaft
+ k.schachteldividendenInland
+ k.kgaaGewinnanteile
+ k.auslandsbetriebsstaette
+ Kuerzung9Nr5(k, gewinn, hinzurechnung8Nr9)
+ k.schachteldividendenAuslandNr7
+ k.schachteldividendenDbaNr8
// ===========================================================================
// § 7 / § 10 GewStG — (maßgebender) Gewerbeertrag
// ===========================================================================
--
Gewerbeertrag nach **§ 7 Satz 1 i.V.m. § 10 GewStG**: der Gewinn aus
Gewerbebetrieb, vermehrt um die Hinzurechnungen nach § 8 und
vermindert um die Kürzungen nach § 9. Kann negativ sein (Fehlbetrag);
die steuerliche Auswirkung regelt der Verlustabzug bzw. die
Steuerfestsetzung, nicht diese Größe.
@param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
@param h Hinzurechnungen (§ 8 GewStG).
@param k Kürzungen (§ 9 GewStG).
@rückgabe Gewerbeertrag (§ 7/§ 10 GewStG), ggf. negativ.
--
@Quelle("§ 7 GewStG")
fn Gewerbeertrag(gewinn: EuroCent, h: Hinzurechnungen8, k: Kuerzungen9): EuroCent =
gewinn
+ SummeHinzurechnungen8(h)
- SummeKuerzungen9(k, gewinn, h.ausgaben9Abs1Nr2KStG)
// ===========================================================================
// § 10a GewStG — Gewerbeverlust (Mindestbesteuerung)
// ===========================================================================
--
Höchstens abziehbarer Fehlbetrag nach **§ 10a Sätze 1, 2 GewStG**
(Mindestbesteuerung): bei einem maßgebenden Gewerbeertrag bis
1 Mio. € ist der gesamte Gewerbeertrag verrechenbar; der 1 Mio. €
übersteigende Teil nur zu 60 %. Bei einem Gewerbeertrag ≤ 0 ist kein
Verlustabzug möglich (es gibt keinen positiven Ertrag zu kürzen).
@param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
@rückgabe Obergrenze des im Erhebungszeitraum verrechenbaren
Fehlbetrags.
--
@Quelle("§ 10a GewStG")
fn VerlustVerrechnungsobergrenze10a(gewerbeertrag: EuroCent): EuroCent = wähle {
falls gewerbeertrag <= 0,00 -> 0,00
falls gewerbeertrag <= VERLUST_SOCKEL_10A -> gewerbeertrag
sonst -> VERLUST_SOCKEL_10A
+ (VERLUST_QUOTE_10A * (gewerbeertrag - VERLUST_SOCKEL_10A)) als EuroCent
}
--
Tatsächlich abgezogener Fehlbetrag nach **§ 10a GewStG**: der
vortragsfähige Fehlbetrag, höchstens jedoch die Verrechnungsobergrenze
nach Sätzen 1 und 2.
@param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
@param fehlbetrag Gesondert festgestellter vortragsfähiger
Fehlbetrag der Vorjahre (§ 10a Satz 6).
@rückgabe Im Erhebungszeitraum abgezogener Fehlbetrag.
--
@Quelle("§ 10a GewStG")
fn Verlustabzug10a(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent =
fehlbetrag.höchstens(VerlustVerrechnungsobergrenze10a(gewerbeertrag))
--
Maßgebender Gewerbeertrag **nach** dem Verlustabzug des § 10a GewStG.
Durch die Verrechnungsobergrenze ist das Ergebnis nie negativ.
@param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
@param fehlbetrag Vortragsfähiger Fehlbetrag der Vorjahre.
@rückgabe Gewerbeertrag nach Verlustabzug (≥ 0).
--
@Quelle("§ 10a GewStG")
fn GewerbeertragNachVerlust(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent =
gewerbeertrag
- Verlustabzug10a(gewerbeertrag, fehlbetrag)
// ===========================================================================
// § 11 GewStG — Steuermesszahl und Steuermessbetrag
// ===========================================================================
--
Roher Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG** je Rechtsform —
**vor** der Begrenzung „höchstens in Höhe des abgerundeten
Gewerbeertrags": 24.500 € (natürliche Personen/Personengesellschaften,
Nr. 1), 5.000 € (Vereine/jur. Personen öR, Nr. 2), 0 €
(Kapitalgesellschaften — kein Freibetrag).
@param rechtsform Rechtsform des Steuerschuldners.
@rückgabe Freibetrag der Rechtsform (vor Höhenbegrenzung).
--
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
fn FreibetragRoh11(rechtsform: Rechtsform): EuroCent = wähle (rechtsform) {
falls NatuerlichePersonPersonengesellschaft -> FREIBETRAG_NAT_PERSON_11
falls VereinJuristischePersonOerR -> FREIBETRAG_VEREIN_11
falls Kapitalgesellschaft -> 0,00
}
--
Anzuwendender Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG**: der
Freibetrag der Rechtsform, höchstens jedoch in Höhe des abgerundeten
Gewerbeertrags (der Freibetrag darf keinen negativen Messbetrag
erzeugen).
@param rechtsform Rechtsform des Steuerschuldners.
@param abgerundeterGewerbeertrag Auf 100 € abgerundeter Gewerbeertrag.
@rückgabe Anzuwendender Freibetrag.
--
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
fn Freibetrag11(rechtsform: Rechtsform, abgerundeterGewerbeertrag: EuroCent): EuroCent =
FreibetragRoh11(rechtsform).höchstens(abgerundeterGewerbeertrag.mindestens(0,00))
--
Anzuwendende Steuermesszahl nach **§ 11 Abs. 2/3 GewStG**: regulär
3,5 %; bei Hausgewerbetreibenden und Gleichgestellten ermäßigt auf
1,96 % (= 56 % von 3,5 %, § 11 Abs. 3 GewStG).
@param ermaessigung Messzahl-Ermäßigung nach § 11 Abs. 3 GewStG.
@rückgabe Anzuwendende Steuermesszahl.
--
@Quelle("§ 11 Absatz 2 GewStG")
fn Steuermesszahl11(ermaessigung: Messzahlermaessigung): Prozent = wähle (ermaessigung) {
falls Keine -> STEUERMESSZAHL_11
falls Hausgewerbetreibender -> STEUERMESSZAHL_HAUSGEWERBE_11_3
}
--
Steuermessbetrag nach **§ 11 GewStG**: die um den Freibetrag
verminderte, auf volle 100 € abgerundete Bemessungsgrundlage,
multipliziert mit der Steuermesszahl.
@param abgerundeterGewerbeertrag § 11 Abs. 1 Satz 3.
@param freibetrag § 11 Abs. 1 Satz 3 (anzuwendender Freibetrag).
@param messzahl § 11 Abs. 2/3 (anzuwendende Steuermesszahl).
@rückgabe Steuermessbetrag (§ 11 GewStG).
--
@Quelle("§ 11 GewStG")
fn Steuermessbetrag11(
abgerundeterGewerbeertrag: EuroCent,
freibetrag: EuroCent,
messzahl: Prozent,
): EuroCent = (messzahl * (abgerundeterGewerbeertrag - freibetrag)) als EuroCent
// ===========================================================================
// § 16 GewStG — Hebesatz
// ===========================================================================
--
Anzuwendender Hebesatz nach **§ 16 Abs. 4 Satz 2 GewStG**: der von der
Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde
keinen höheren bestimmt, beträgt er 200 %).
@param hebesatz Von der Gemeinde bestimmter Hebesatz.
@rückgabe Anzuwendender Hebesatz (≥ 200 %).
--
@Quelle("§ 16 Absatz 4 Satz 2 GewStG")
fn AngewandterHebesatz16(hebesatz: Prozent): Prozent = wähle {
falls hebesatz < MINDEST_HEBESATZ_16 -> MINDEST_HEBESATZ_16
sonst -> hebesatz
}
--
Festzusetzende Gewerbesteuer nach **§ 16 Abs. 1 GewStG**: der
Steuermessbetrag, multipliziert mit dem anzuwendenden Hebesatz.
@param steuermessbetrag § 11 GewStG.
@param hebesatz Anzuwendender Hebesatz (§ 16 GewStG).
@rückgabe Festzusetzende Gewerbesteuer.
--
@Quelle("§ 16 Absatz 1 GewStG")
fn Gewerbesteuer16(steuermessbetrag: EuroCent, hebesatz: Prozent): EuroCent =
(steuermessbetrag * hebesatz) als EuroCent
// ===========================================================================
// Gesamtberechnung
// ===========================================================================
--
Vollständige Festsetzung der Gewerbesteuer eines Steuerfalls in der
gesetzlichen Reihenfolge: § 7 Satz 1 (Gewinn) → § 8 (Hinzurechnungen)
→ § 9 (Kürzungen) → § 7/§ 10 (Gewerbeertrag) → § 10a (Verlustabzug,
Mindestbesteuerung) → § 11 Abs. 1 Satz 3 (Abrundung, Freibetrag) →
§ 11 Abs. 2/3 (Steuermesszahl, Messbetrag) → § 16 (Hebesatz).
Liefert alle Zwischengrößen für die Audit-Vorlage.
Ist der maßgebende Gewerbeertrag nach Verlustabzug **0 oder negativ**,
entsteht kein Steuermessbetrag und keine Gewerbesteuer (alle
nachfolgenden Größen sind 0); ein Verlustvortrag regelt § 10a, der
hier nicht fortgeschrieben wird.
Erhebungszeiträume **vor 2025** werden bewusst nicht berechnet:
§ 9 Nr. 1 Satz 1 (Grundsteuer-Fassung) gilt erst ab EZ 2025
(§ 36 Abs. 4b Satz 1 GewStG) — ein begründeter, nicht abfangbarer
Abbruch macht diese Konstellation im Audit sichtbar.
@param betrieb Eingaben des Steuerfalls (siehe `Gewerbebetrieb`).
@rückgabe Vollständig dokumentiertes Berechnungsergebnis.
--
@Quelle("§ 7 GewStG")
fn BerechneGewerbesteuer(betrieb: Gewerbebetrieb): GewerbesteuerErgebnis = {
var h8: EuroCent = SummeHinzurechnungen8(betrieb.hinzurechnungen)
var k9: EuroCent = SummeKuerzungen9(
betrieb.kuerzungen,
betrieb.gewinnAusGewerbebetrieb,
betrieb.hinzurechnungen.ausgaben9Abs1Nr2KStG,
)
// Erhebungszeitraum-Schranke (§ 36 Abs. 4b GewStG) als nicht
// abfangbarer Abbruch in die erste genutzte Größe gefädelt.
var ertrag: EuroCent = wähle {
falls betrieb.erhebungszeitraum < FRUEHESTER_EZ -> abbruch("""
§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab;
EZ ${betrieb.erhebungszeitraum} ist nicht abgedeckt
""")
sonst -> Gewerbeertrag(
betrieb.gewinnAusGewerbebetrieb, betrieb.hinzurechnungen, betrieb.kuerzungen,
)
}
var abzug: EuroCent = Verlustabzug10a(ertrag, betrieb.gewerbeverlustVortrag)
var nachVerlust: EuroCent = ertrag - abzug
var abgerundet: EuroCent = wähle {
falls nachVerlust <= 0,00 -> 0,00
sonst -> nachVerlust.abrundenAuf(ABRUNDUNG_11)
}
var fb: EuroCent = Freibetrag11(betrieb.rechtsform, abgerundet)
var messzahl: Prozent = Steuermesszahl11(betrieb.messzahlermaessigung)
var bemessung: EuroCent = abgerundet - fb
var messbetrag: EuroCent = Steuermessbetrag11(abgerundet, fb, messzahl)
var heb: Prozent = AngewandterHebesatz16(betrieb.hebesatz)
var steuer: EuroCent = Gewerbesteuer16(messbetrag, heb)
GewerbesteuerErgebnis(
gewinn = betrieb.gewinnAusGewerbebetrieb,
summeHinzurechnungen = h8,
summeKuerzungen = k9,
gewerbeertrag = ertrag,
verlustabzug = abzug,
gewerbeertragNachVerlust = nachVerlust,
abgerundeterGewerbeertrag = abgerundet,
freibetrag = fb,
bemessungsgrundlage = bemessung,
steuermesszahl = messzahl,
steuermessbetrag = messbetrag,
angewandterHebesatz = heb,
gewerbesteuer = steuer,
)
}--
# Akzeptanztests — Gewerbesteuer (§§ 7–11, 16 GewStG)
`prüfe`-Blöcke zur Datei `gewerbesteuer`. Alle Sollwerte sind von Hand
aus dem Gesetzeswortlaut gerechnet (GewStG, Fassung ab EZ 2025):
- § 8 Nr. 1: ¼ der Summe (a–c 100 %, d 1/5, e 1/2, f 1/4), soweit
über 200.000 €.
- § 9 Nr. 1: Grundsteuer bzw. erweiterte Kürzung (Antrag, alternativ);
Nr. 5: Spenden ≤ max(20 % Gewinn; 4 ‰ (Umsatz + Lohn)).
- § 10a: bis 1 Mio. € voll, darüber 60 % (Mindestbesteuerung).
- § 11: Abrundung auf 100 €, Freibetrag 24.500/5.000/0 €,
Messzahl 3,5 % (Hausgewerbe 1,96 %).
- § 16: Hebesatz, mindestens 200 %.
Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
--
verwende {
Hinzurechnung8Nr1,
SummeHinzurechnungen8,
SpendenHoechstbetrag9Nr5,
Kuerzung9Nr5,
Kuerzung9Nr1,
Gewerbeertrag,
VerlustVerrechnungsobergrenze10a,
Verlustabzug10a,
GewerbeertragNachVerlust,
FreibetragRoh11,
Freibetrag11,
Steuermesszahl11,
Steuermessbetrag11,
AngewandterHebesatz16,
Gewerbesteuer16,
BerechneGewerbesteuer,
Hinzurechnungen8,
Kuerzungen9,
Gewerbebetrieb,
GewerbesteuerErgebnis,
NatuerlichePersonPersonengesellschaft,
Kapitalgesellschaft,
VereinJuristischePersonOerR,
Keine,
Hausgewerbetreibender,
} aus "./gewst"
prüfe "§ 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)" {
testfall "Summe ≤ 200.000 € → keine Hinzurechnung" {
Hinzurechnung8Nr1(Hinzurechnungen8(entgelteSchulden = 100.000,00)) == 0,00
}
testfall "Summe genau 200.000 € → 0 (nur der übersteigende Teil zählt)" {
Hinzurechnung8Nr1(Hinzurechnungen8(entgelteSchulden = 200.000,00)) == 0,00
}
testfall "Buchst. a + e: 1.000.000 + ½·400.000 = 1.200.000; ¼·(1.200.000−200.000) = 250.000" {
Hinzurechnung8Nr1(Hinzurechnungen8(
entgelteSchulden = 1.000.000,00,
mietePachtUnbeweglich = 400.000,00,
)) == 250.000,00
}
testfall "Buchst. d (bewegliche WG, 1/5): 1/5·1.500.000 = 300.000; ¼·(300.000−200.000) = 25.000" {
Hinzurechnung8Nr1(Hinzurechnungen8(mietePachtBeweglich = 1.500.000,00)) == 25.000,00
}
testfall "Buchst. f (Rechte, 1/4): 1/4·1.000.000 = 250.000; ¼·(250.000−200.000) = 12.500" {
Hinzurechnung8Nr1(Hinzurechnungen8(aufwendungenRechteUeberlassung = 1.000.000,00)) == 12.500,00
}
}
prüfe "§ 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)" {
testfall "Nr. 1 (¼·800.000 = 200.000) + Nr. 4 (50.000) + Nr. 5 (30.000) = 280.000" {
SummeHinzurechnungen8(Hinzurechnungen8(
entgelteSchulden = 1.000.000,00,
gewinnanteilePhgKgaa = 50.000,00,
steuerfreieDividenden = 30.000,00,
)) == 280.000,00
}
testfall "leere Hinzurechnungen → 0" {
SummeHinzurechnungen8(Hinzurechnungen8()) == 0,00
}
}
prüfe "§ 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)" {
testfall "20 %·500.000 = 100.000 > 4 ‰·12.000.000 = 48.000 → 100.000" {
SpendenHoechstbetrag9Nr5(500.000,00, 0,00, 10.000.000,00, 2.000.000,00) == 100.000,00
}
testfall "kein Gewinn, 4 ‰·60.000.000 = 240.000 → 240.000" {
SpendenHoechstbetrag9Nr5(0,00, 0,00, 50.000.000,00, 10.000.000,00) == 240.000,00
}
testfall "§ 8 Nr. 9 erhöht die 20-%-Bemessung: 20 %·(400.000+100.000) = 100.000" {
SpendenHoechstbetrag9Nr5(400.000,00, 100.000,00, 1.000.000,00, 0,00) == 100.000,00
}
testfall "Spenden-Kürzung = min(geleistet, Höchstbetrag): 120.000 gedeckelt auf 100.000" {
Kuerzung9Nr5(
Kuerzungen9(
geleisteteSpenden = 120.000,00,
umsaetze = 10.000.000,00,
loehneUndGehaelter = 2.000.000,00,
),
500.000,00, 0,00,
) == 100.000,00
}
testfall "Spenden unter Höchstbetrag bleiben voll: 30.000" {
Kuerzung9Nr5(
Kuerzungen9(
geleisteteSpenden = 30.000,00,
umsaetze = 10.000.000,00,
loehneUndGehaelter = 2.000.000,00,
),
500.000,00, 0,00,
) == 30.000,00
}
}
prüfe "§ 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)" {
testfall "Satz 1: als Betriebsausgabe erfasste Grundsteuer" {
Kuerzung9Nr1(Kuerzungen9(grundsteuerBetriebsgrundbesitz = 3.000,00)) == 3.000,00
}
testfall "Satz 2: erweiterte Kürzung auf Antrag tritt an die Stelle von Satz 1" {
Kuerzung9Nr1(Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 3.000,00,
erweiterteKuerzungBeantragt = wahr,
erweiterteKuerzungGrundbesitzertrag = 50.000,00,
)) == 50.000,00
}
}
prüfe "§ 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)" {
testfall "800.000 + 75.000 (§ 8 Nr. 1) − 35.000 (§ 9) = 840.000" {
Gewerbeertrag(
800.000,00,
Hinzurechnungen8(entgelteSchulden = 500.000,00),
Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 5.000,00,
schachteldividendenInland = 30.000,00,
),
) == 840.000,00
}
}
prüfe "§ 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)" {
testfall "GE 3 Mio., Obergrenze = 1 Mio. + 60 %·2 Mio. = 2,2 Mio." {
VerlustVerrechnungsobergrenze10a(3.000.000,00) == 2.200.000,00
}
testfall "GE ≤ 1 Mio.: voll verrechenbar (Obergrenze = GE)" {
VerlustVerrechnungsobergrenze10a(800.000,00) == 800.000,00
}
testfall "GE ≤ 0: kein Verlustabzug" {
VerlustVerrechnungsobergrenze10a(-50.000,00) == 0,00
}
testfall "GE 3 Mio., Fehlbetrag 5 Mio. → Abzug 2,2 Mio., danach 800.000" {
GewerbeertragNachVerlust(3.000.000,00, 5.000.000,00) == 800.000,00
}
testfall "GE 500.000, Fehlbetrag 200.000 → Abzug 200.000, danach 300.000" {
Verlustabzug10a(500.000,00, 200.000,00) == 200.000,00
und GewerbeertragNachVerlust(500.000,00, 200.000,00) == 300.000,00
}
testfall "GE 800.000 (≤ 1 Mio.), Fehlbetrag 5 Mio. → Abzug nur 800.000, danach 0" {
GewerbeertragNachVerlust(800.000,00, 5.000.000,00) == 0,00
}
}
prüfe "§ 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform" {
testfall "natürliche Person/Personengesellschaft → 24.500 €" {
FreibetragRoh11(NatuerlichePersonPersonengesellschaft) == 24.500,00
}
testfall "Verein/jur. Person öR → 5.000 €" {
FreibetragRoh11(VereinJuristischePersonOerR) == 5.000,00
}
testfall "Kapitalgesellschaft → kein Freibetrag" {
FreibetragRoh11(Kapitalgesellschaft) == 0,00
}
testfall "höchstens in Höhe des abgerundeten Gewerbeertrags (10.000 < 24.500)" {
Freibetrag11(NatuerlichePersonPersonengesellschaft, 10.000,00) == 10.000,00
}
testfall "voller Freibetrag bei hohem Gewerbeertrag" {
Freibetrag11(NatuerlichePersonPersonengesellschaft, 197.000,00) == 24.500,00
}
}
prüfe "§ 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag" {
testfall "Regelmesszahl 3,5 %" {
Steuermesszahl11(Keine) == 3,5%
}
testfall "Hausgewerbetreibende: ermäßigt 1,96 % (= 56 % von 3,5 %)" {
Steuermesszahl11(Hausgewerbetreibender) == 1,96%
}
testfall "(197.000 − 24.500)·3,5 % = 172.500·3,5 % = 6.037,50" {
Steuermessbetrag11(197.000,00, 24.500,00, 3,5%) == 6.037,50
}
testfall "Kapitalgesellschaft ohne Freibetrag: 1.000.000·3,5 % = 35.000" {
Steuermessbetrag11(1.000.000,00, 0,00, 3,5%) == 35.000,00
}
}
prüfe "§ 16 GewStG — Hebesatz (mindestens 200 %)" {
testfall "Gemeinde-Hebesatz unter 200 % → 200 %" {
AngewandterHebesatz16(150%) == 200%
}
testfall "genau 200 % bleibt 200 %" {
AngewandterHebesatz16(200%) == 200%
}
testfall "höherer Hebesatz bleibt unverändert" {
AngewandterHebesatz16(450%) == 450%
}
testfall "Steuermessbetrag · Hebesatz: 6.037,50 · 400 % = 24.150" {
Gewerbesteuer16(6.037,50, 400%) == 24.150,00
}
}
prüfe "Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)" {
testfall "Personengesellschaft, EZ 2025, Gewinn 200.000, Hebesatz 400 %" {
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 200.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(entgelteSchulden = 100.000,00),
kuerzungen = Kuerzungen9(grundsteuerBetriebsgrundbesitz = 3.000,00),
hebesatz = 400%,
),
)
e.summeHinzurechnungen == 0,00
und e.summeKuerzungen == 3.000,00
und e.gewerbeertrag == 197.000,00
und e.gewerbeertragNachVerlust == 197.000,00
und e.abgerundeterGewerbeertrag == 197.000,00
und e.freibetrag == 24.500,00
und e.steuermessbetrag == 6.037,50
und e.angewandterHebesatz == 400%
und e.gewerbesteuer == 24.150,00
}
testfall "Kapitalgesellschaft, EZ 2025, Gewinn 1.000.000, Hebesatz 500 %, kein Freibetrag" {
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 1.000.000,00,
rechtsform = Kapitalgesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(),
hebesatz = 500%,
),
)
e.freibetrag == 0,00
und e.bemessungsgrundlage == 1.000.000,00
und e.steuermessbetrag == 35.000,00
und e.angewandterHebesatz == 500%
und e.gewerbesteuer == 175.000,00
}
testfall "Volle Kette: § 8-Excess + § 9 + § 10a + Hausgewerbe, Hebesatz 410 %" {
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 800.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(
entgelteSchulden = 600.000,00,
steuerfreieDividenden = 20.000,00,
),
kuerzungen = Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 10.000,00,
schachteldividendenInland = 50.000,00,
geleisteteSpenden = 5.000,00,
umsaetze = 2.000.000,00,
loehneUndGehaelter = 500.000,00,
),
gewerbeverlustVortrag = 100.000,00,
messzahlermaessigung = Hausgewerbetreibender,
hebesatz = 410%,
),
)
e.summeHinzurechnungen == 120.000,00
und e.summeKuerzungen == 65.000,00
und e.gewerbeertrag == 855.000,00
und e.verlustabzug == 100.000,00
und e.gewerbeertragNachVerlust == 755.000,00
und e.bemessungsgrundlage == 730.500,00
und e.steuermesszahl == 1,96%
und e.steuermessbetrag == 14.317,80
und e.gewerbesteuer == 58.702,98
}
testfall "Negativer Gewerbeertrag → kein Messbetrag, keine Steuer" {
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 50.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(grundsteuerBetriebsgrundbesitz = 100.000,00),
),
)
e.gewerbeertrag == -50.000,00
und e.abgerundeterGewerbeertrag == 0,00
und e.freibetrag == 0,00
und e.steuermessbetrag == 0,00
und e.gewerbesteuer == 0,00
}
testfall "Erhebungszeitraum vor 2025 wird abgelehnt (§ 36 Abs. 4b GewStG)" erwartet abbruch {
BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 100.000,00,
rechtsform = Kapitalgesellschaft,
erhebungszeitraum = 2024,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(),
),
)
}
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.EuroCent;
import org.findsl.runtime.Prozent;
import org.findsl.runtime.Ganzzahl;
import org.findsl.runtime.Quelle;
import javax.annotation.processing.Generated;
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Gewerbesteuer — Messbetrag und Steuer (§§ 7–11, 16 GewStG)
*
* Bildet die Festsetzung der **Gewerbesteuer** nach dem
* Gewerbesteuergesetz (GewStG, i.d.F. ab Erhebungszeitraum 2025 —
* insbesondere § 9 Nr. 1 Satz 1 in der Fassung des Art. 9 G v. 2.12.2024,
* § 36 Abs. 4b GewStG) vollständig in der gesetzlichen Reihenfolge ab:
*
* - **§ 6 GewStG** — Besteuerungsgrundlage ist der Gewerbeertrag.
* - **§ 7 Satz 1 GewStG** — Gewerbeertrag ist der nach EStG/KStG zu
* ermittelnde Gewinn aus Gewerbebetrieb, vermehrt um die § 8- und
* vermindert um die § 9-Beträge.
* - **§ 8 GewStG** — Hinzurechnungen: Nr. 1 (Viertel der Summe aus
* a–f Finanzierungsanteilen, soweit über 200.000 €) sowie die
* Nummern 4, 5, 8, 9, 10, 12 (die übrigen Nummern sind weggefallen).
* - **§ 9 GewStG** — Kürzungen: Nr. 1 (Grundsteuer für Betriebs-
* grundbesitz bzw. erweiterte Kürzung auf Antrag), Nr. 2/2a/2b/3/7/8
* (Beteiligungs-/Betriebsstätten-Erträge) und Nr. 5 (Spenden bis
* 20 % des Gewinns oder 4 ‰ der Summe aus Umsätzen und Löhnen).
* - **§ 10/§ 10a GewStG** — maßgebender Gewerbeertrag und Kürzung um
* vortragsfähige Fehlbeträge (Mindestbesteuerung: bis 1 Mio. € voll,
* darüber nur 60 %).
* - **§ 11 GewStG** — Abrundung auf volle 100 €, Freibetrag (24.500 €
* bzw. 5.000 € bzw. 0 € je Rechtsform) und Steuermesszahl 3,5 %
* (ermäßigt 1,96 % bei Hausgewerbetreibenden, § 11 Abs. 3).
* - **§ 16 GewStG** — Anwendung des Hebesatzes der hebeberechtigten
* Gemeinde, mindestens 200 % (§ 16 Abs. 4 Satz 2).
*
* **Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
* Steuerbetragsberechnung):**
*
* - Die Ermittlung des **Gewinns aus Gewerbebetrieb** selbst (§ 7 Satz 1:
* „nach den Vorschriften des EStG oder KStG"). Er geht — wie das
* Einkommen i.S.d. § 8 Abs. 1 KStG im KStG-Modul — als geprüfte
* Eingabe ein. Ebenso die *Höhe* der einzelnen Hinzurechnungs-/
* Kürzungsbeträge, die § 8/§ 9 aus EStG/KStG-Sachverhalten ableiten
* (Nr. 4/5/8/9/10/12 bzw. Nr. 2/2a/2b/3/7/8): das GewStG schreibt nur
* die Verrechnung vor — diese ist hier vollständig und exakt
* implementiert.
* - **Zerlegung (§§ 28–34 GewStG)** auf mehrere Gemeinden (Maßstab
* Arbeitslöhne, Sonderfälle Windenergie/Solar/Speicher). Modelliert
* ist der Regelfall **einer** hebeberechtigten Gemeinde.
* - Verfahren §§ 14a/19–21 (Vorauszahlung, Festsetzung, Zerlegungs-
* bescheid), § 35b (Änderung), abgekürzter Erhebungszeitraum
* (§ 14 Satz 3), Steuerbefreiungen § 3, optierende Gesellschaft
* § 1a KStG (§ 2 Abs. 8).
* - Erweiterte Kürzung § 9 Nr. 1 Satz 2 dem Grunde nach (Antrag,
* Grundstücksunternehmens-Voraussetzungen) — die *Höhe* des auf den
* eigenen Grundbesitz entfallenden Gewerbeertrags geht als Eingabe ein.
*/
@Generated(value = "findsl.Generator")
public interface Gewst {
/**
* Hinzurechnung nach **§ 8 Nr. 1 GewStG**: Ein Viertel der Summe aus
* den Finanzierungsanteilen a–f, soweit die Summe **200.000 €
* übersteigt**. Buchst. a–c gehen zu 100 %, Buchst. d (bewegliche WG)
* zu einem Fünftel, Buchst. e (unbewegliche WG) zur Hälfte, Buchst. f
* (Rechteüberlassung) zu einem Viertel in die Summe ein. Liegt die
* gewichtete Summe ≤ 200.000 €, ist die Hinzurechnung nach Nr. 1 = 0.
*
* @param h Hinzurechnungsbeträge (siehe `Hinzurechnungen8`).
* @return Hinzurechnungsbetrag nach § 8 Nr. 1 GewStG.
*/
@Quelle("§ 8 Nummer 1 GewStG")
EuroCent hinzurechnung8Nr1(Hinzurechnungen8 h);
/**
* Summe der Hinzurechnungen nach **§ 8 GewStG**: der Betrag nach Nr. 1
* zuzüglich der in voller Höhe hinzuzurechnenden Nummern 4, 5, 8, 9, 10
* und 12 (Nr. 2/3/6/7/11 GewStG sind weggefallen).
*
* @param h Hinzurechnungsbeträge (siehe `Hinzurechnungen8`).
* @return Summe der Hinzurechnungen nach § 8 GewStG.
*/
@Quelle("§ 8 GewStG")
EuroCent summeHinzurechnungen8(Hinzurechnungen8 h);
/**
* Höchstbetrag der Spenden-Kürzung nach **§ 9 Nr. 5 Satz 1 GewStG**:
* der höhere Betrag aus
* - 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus
* Gewerbebetrieb und
* - 4 ‰ (0,4 %) der Summe aus den gesamten Umsätzen und den im
* Wirtschaftsjahr aufgewendeten Löhnen und Gehältern.
*
* Ein negativer „20 %"-Wert (bei Verlust) wird durch die Maximum-Bildung
* mit dem nicht-negativen 4-‰-Wert bzw. die Nicht-negativ-Kappung
* abgefangen.
*
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
* @param hinzurechnung8Nr9 § 8 Nr. 9: erhöht die 20-%-Bemessung.
* @param umsaetze Summe der gesamten Umsätze.
* @param loehneUndGehaelter Aufgewendete Löhne und Gehälter.
* @return Höchstbetrag der nach § 9 Nr. 5 abziehbaren Spenden.
*/
@Quelle("§ 9 Nummer 5 GewStG")
EuroCent spendenHoechstbetrag9Nr5(
EuroCent gewinn,
EuroCent hinzurechnung8Nr9,
EuroCent umsaetze,
EuroCent loehneUndGehaelter);
/**
* Tatsächlich abziehbare Spenden-Kürzung nach § 9 Nr. 5 GewStG: die
* geleisteten Zuwendungen, höchstens jedoch der Höchstbetrag nach
* `spendenHoechstbetrag9Nr5`.
*
* @param k Kürzungsbeträge (siehe `Kuerzungen9`).
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
* @param hinzurechnung8Nr9 § 8 Nr. 9 (erhöht die 20-%-Bemessung).
* @return Abziehbare Spenden nach § 9 Nr. 5 GewStG.
*/
@Quelle("§ 9 Nummer 5 GewStG")
EuroCent kuerzung9Nr5(Kuerzungen9 k, EuroCent gewinn, EuroCent hinzurechnung8Nr9);
/**
* Kürzung nach **§ 9 Nr. 1 GewStG**: regulär die als Betriebsausgabe
* erfasste Grundsteuer für Betriebsgrundbesitz (Satz 1). Auf Antrag
* tritt bei Grundstücksunternehmen **an deren Stelle** die erweiterte
* Kürzung um den auf die Verwaltung/Nutzung des eigenen Grundbesitzes
* entfallenden Teil des Gewerbeertrags (Satz 2) — die beiden Kürzungen
* sind Alternativen, nicht kumulativ.
*
* @param k Kürzungsbeträge (siehe `Kuerzungen9`).
* @return Kürzungsbetrag nach § 9 Nr. 1 GewStG.
*/
@Quelle("§ 9 Nummer 1 GewStG")
EuroCent kuerzung9Nr1(Kuerzungen9 k);
/**
* Summe der Kürzungen nach **§ 9 GewStG**: Nr. 1 (einfach oder
* erweitert), die Beteiligungs-/Betriebsstätten-Kürzungen Nr. 2, 2a,
* 2b, 3, 7 und 8 sowie die begrenzte Spenden-Kürzung Nr. 5.
*
* @param k Kürzungsbeträge (siehe `Kuerzungen9`).
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb (für § 9 Nr. 5).
* @param hinzurechnung8Nr9 § 8 Nr. 9 (für die § 9 Nr. 5-Bemessung).
* @return Summe der Kürzungen nach § 9 GewStG.
*/
@Quelle("§ 9 GewStG")
EuroCent summeKuerzungen9(Kuerzungen9 k, EuroCent gewinn, EuroCent hinzurechnung8Nr9);
/**
* Gewerbeertrag nach **§ 7 Satz 1 i.V.m. § 10 GewStG**: der Gewinn aus
* Gewerbebetrieb, vermehrt um die Hinzurechnungen nach § 8 und
* vermindert um die Kürzungen nach § 9. Kann negativ sein (Fehlbetrag);
* die steuerliche Auswirkung regelt der Verlustabzug bzw. die
* Steuerfestsetzung, nicht diese Größe.
*
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
* @param h Hinzurechnungen (§ 8 GewStG).
* @param k Kürzungen (§ 9 GewStG).
* @return Gewerbeertrag (§ 7/§ 10 GewStG), ggf. negativ.
*/
@Quelle("§ 7 GewStG")
EuroCent gewerbeertrag(EuroCent gewinn, Hinzurechnungen8 h, Kuerzungen9 k);
/**
* Höchstens abziehbarer Fehlbetrag nach **§ 10a Sätze 1, 2 GewStG**
* (Mindestbesteuerung): bei einem maßgebenden Gewerbeertrag bis
* 1 Mio. € ist der gesamte Gewerbeertrag verrechenbar; der 1 Mio. €
* übersteigende Teil nur zu 60 %. Bei einem Gewerbeertrag ≤ 0 ist kein
* Verlustabzug möglich (es gibt keinen positiven Ertrag zu kürzen).
*
* @param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
* @return Obergrenze des im Erhebungszeitraum verrechenbaren
* Fehlbetrags.
*/
@Quelle("§ 10a GewStG")
EuroCent verlustVerrechnungsobergrenze10a(EuroCent gewerbeertrag);
/**
* Tatsächlich abgezogener Fehlbetrag nach **§ 10a GewStG**: der
* vortragsfähige Fehlbetrag, höchstens jedoch die Verrechnungsobergrenze
* nach Sätzen 1 und 2.
*
* @param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
* @param fehlbetrag Gesondert festgestellter vortragsfähiger
* Fehlbetrag der Vorjahre (§ 10a Satz 6).
* @return Im Erhebungszeitraum abgezogener Fehlbetrag.
*/
@Quelle("§ 10a GewStG")
EuroCent verlustabzug10a(EuroCent gewerbeertrag, EuroCent fehlbetrag);
/**
* Maßgebender Gewerbeertrag **nach** dem Verlustabzug des § 10a GewStG.
* Durch die Verrechnungsobergrenze ist das Ergebnis nie negativ.
*
* @param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
* @param fehlbetrag Vortragsfähiger Fehlbetrag der Vorjahre.
* @return Gewerbeertrag nach Verlustabzug (≥ 0).
*/
@Quelle("§ 10a GewStG")
EuroCent gewerbeertragNachVerlust(EuroCent gewerbeertrag, EuroCent fehlbetrag);
/**
* Roher Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG** je Rechtsform —
* **vor** der Begrenzung „höchstens in Höhe des abgerundeten
* Gewerbeertrags": 24.500 € (natürliche Personen/Personengesellschaften,
* Nr. 1), 5.000 € (Vereine/jur. Personen öR, Nr. 2), 0 €
* (Kapitalgesellschaften — kein Freibetrag).
*
* @param rechtsform Rechtsform des Steuerschuldners.
* @return Freibetrag der Rechtsform (vor Höhenbegrenzung).
*/
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
EuroCent freibetragRoh11(Rechtsform rechtsform);
/**
* Anzuwendender Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG**: der
* Freibetrag der Rechtsform, höchstens jedoch in Höhe des abgerundeten
* Gewerbeertrags (der Freibetrag darf keinen negativen Messbetrag
* erzeugen).
*
* @param rechtsform Rechtsform des Steuerschuldners.
* @param abgerundeterGewerbeertrag Auf 100 € abgerundeter Gewerbeertrag.
* @return Anzuwendender Freibetrag.
*/
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
EuroCent freibetrag11(Rechtsform rechtsform, EuroCent abgerundeterGewerbeertrag);
/**
* Anzuwendende Steuermesszahl nach **§ 11 Abs. 2/3 GewStG**: regulär
* 3,5 %; bei Hausgewerbetreibenden und Gleichgestellten ermäßigt auf
* 1,96 % (= 56 % von 3,5 %, § 11 Abs. 3 GewStG).
*
* @param ermaessigung Messzahl-Ermäßigung nach § 11 Abs. 3 GewStG.
* @return Anzuwendende Steuermesszahl.
*/
@Quelle("§ 11 Absatz 2 GewStG")
Prozent steuermesszahl11(Messzahlermaessigung ermaessigung);
/**
* Steuermessbetrag nach **§ 11 GewStG**: die um den Freibetrag
* verminderte, auf volle 100 € abgerundete Bemessungsgrundlage,
* multipliziert mit der Steuermesszahl.
*
* @param abgerundeterGewerbeertrag § 11 Abs. 1 Satz 3.
* @param freibetrag § 11 Abs. 1 Satz 3 (anzuwendender Freibetrag).
* @param messzahl § 11 Abs. 2/3 (anzuwendende Steuermesszahl).
* @return Steuermessbetrag (§ 11 GewStG).
*/
@Quelle("§ 11 GewStG")
EuroCent steuermessbetrag11(EuroCent abgerundeterGewerbeertrag, EuroCent freibetrag, Prozent messzahl);
/**
* Anzuwendender Hebesatz nach **§ 16 Abs. 4 Satz 2 GewStG**: der von der
* Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde
* keinen höheren bestimmt, beträgt er 200 %).
*
* @param hebesatz Von der Gemeinde bestimmter Hebesatz.
* @return Anzuwendender Hebesatz (≥ 200 %).
*/
@Quelle("§ 16 Absatz 4 Satz 2 GewStG")
Prozent angewandterHebesatz16(Prozent hebesatz);
/**
* Festzusetzende Gewerbesteuer nach **§ 16 Abs. 1 GewStG**: der
* Steuermessbetrag, multipliziert mit dem anzuwendenden Hebesatz.
*
* @param steuermessbetrag § 11 GewStG.
* @param hebesatz Anzuwendender Hebesatz (§ 16 GewStG).
* @return Festzusetzende Gewerbesteuer.
*/
@Quelle("§ 16 Absatz 1 GewStG")
EuroCent gewerbesteuer16(EuroCent steuermessbetrag, Prozent hebesatz);
/**
* Vollständige Festsetzung der Gewerbesteuer eines Steuerfalls in der
* gesetzlichen Reihenfolge: § 7 Satz 1 (Gewinn) → § 8 (Hinzurechnungen)
* → § 9 (Kürzungen) → § 7/§ 10 (Gewerbeertrag) → § 10a (Verlustabzug,
* Mindestbesteuerung) → § 11 Abs. 1 Satz 3 (Abrundung, Freibetrag) →
* § 11 Abs. 2/3 (Steuermesszahl, Messbetrag) → § 16 (Hebesatz).
* Liefert alle Zwischengrößen für die Audit-Vorlage.
*
* Ist der maßgebende Gewerbeertrag nach Verlustabzug **0 oder negativ**,
* entsteht kein Steuermessbetrag und keine Gewerbesteuer (alle
* nachfolgenden Größen sind 0); ein Verlustvortrag regelt § 10a, der
* hier nicht fortgeschrieben wird.
*
* Erhebungszeiträume **vor 2025** werden bewusst nicht berechnet:
* § 9 Nr. 1 Satz 1 (Grundsteuer-Fassung) gilt erst ab EZ 2025
* (§ 36 Abs. 4b Satz 1 GewStG) — ein begründeter, nicht abfangbarer
* Abbruch macht diese Konstellation im Audit sichtbar.
*
* @param betrieb Eingaben des Steuerfalls (siehe `Gewerbebetrieb`).
* @return Vollständig dokumentiertes Berechnungsergebnis.
*/
@Quelle("§ 7 GewStG")
GewerbesteuerErgebnis berechneGewerbesteuer(Gewerbebetrieb betrieb);
/**
* Rechtsform des Steuerschuldners (§ 5 GewStG) — bestimmt den Freibetrag
* nach § 11 Abs. 1 Satz 3 GewStG.
*
* @param NatuerlichePersonPersonengesellschaft Einzelunternehmen oder
* Personengesellschaft (Mitunternehmerschaft)
* — Freibetrag 24.500 € (§ 11 Abs. 1 S. 3 Nr. 1 GewStG).
* @param Kapitalgesellschaft Kapitalgesellschaft / Genossenschaft
* (§ 2 Abs. 2 GewStG) — **kein** Freibetrag.
* @param VereinJuristischePersonOerR Sonstige juristische Personen des
* privaten Rechts, Vereine (§ 2 Abs. 3) und
* juristische Personen des öffentlichen
* Rechts — Freibetrag 5.000 € (§ 11 Abs. 1
* S. 3 Nr. 2 GewStG).
*/
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
public enum Rechtsform {
NatuerlichePersonPersonengesellschaft,
Kapitalgesellschaft,
VereinJuristischePersonOerR
}
/**
* Ermäßigung der Steuermesszahl nach § 11 Abs. 3 GewStG.
*
* @param Keine Regelmesszahl 3,5 % (§ 11 Abs. 2 GewStG).
* @param Hausgewerbetreibender Hausgewerbetreibende und nach dem
* Heimarbeitsgesetz Gleichgestellte —
* ermäßigte Messzahl 1,96 % (§ 11 Abs. 3
* GewStG).
*/
@Quelle("§ 11 Absatz 3 GewStG")
public enum Messzahlermaessigung {
Keine,
Hausgewerbetreibender
}
/**
* Hinzurechnungsbeträge nach § 8 GewStG. Die Beträge a–f der Nr. 1 sind
* **vor** der gesetzlichen Gewichtung (20 %/50 %/25 %) und **vor** dem
* Freibetrag/Viertel anzugeben — diese wendet `hinzurechnung8Nr1` an.
* Die Nummern 4, 5, 8, 9, 10, 12 werden in voller Höhe hinzugerechnet
* und sind als die bereits nach EStG/KStG ermittelten Beträge
* einzutragen (Nr. 2/3/6/7/11 GewStG sind weggefallen).
*
* @param entgelteSchulden § 8 Nr. 1 Buchst. a: Entgelte für Schulden
* (Zinsen, Skonti, Diskontbeträge), 100 %.
* @param rentenDauerndeLasten § 8 Nr. 1 Buchst. b: Renten und dauernde
* Lasten, 100 %.
* @param gewinnanteileStillerGesellschafter § 8 Nr. 1 Buchst. c:
* Gewinnanteile des stillen Gesellschafters,
* 100 %.
* @param mietePachtBeweglich § 8 Nr. 1 Buchst. d: Miet-/Pachtzinsen
* (inkl. Leasing) für bewegliche WG des
* Anlagevermögens — geht zu einem Fünftel ein.
* @param mietePachtUnbeweglich § 8 Nr. 1 Buchst. e: Miet-/Pachtzinsen für
* unbewegliche WG des Anlagevermögens — geht
* zur Hälfte ein.
* @param aufwendungenRechteUeberlassung § 8 Nr. 1 Buchst. f: Aufwendungen
* für zeitlich befristete Rechteüberlassung —
* geht zu einem Viertel ein.
* @param gewinnanteilePhgKgaa § 8 Nr. 4: Gewinnanteile an persönlich
* haftende Gesellschafter einer KGaA, 100 %.
* @param steuerfreieDividenden § 8 Nr. 5: nach § 3 Nr. 40 EStG / § 8b
* KStG außer Ansatz gebliebene Gewinnanteile
* (Streubesitz), 100 %.
* @param verlustanteileMitunternehmerschaft § 8 Nr. 8: Anteile am Verlust
* einer Mitunternehmerschaft, 100 %.
* @param ausgaben9Abs1Nr2KStG § 8 Nr. 9: Ausgaben i.S.d. § 9 Abs. 1
* Nr. 2 KStG (abziehbare Zuwendungen), 100 %.
* @param gewinnminderungenTeilwert § 8 Nr. 10: Gewinnminderungen durch
* Teilwertansatz/Veräußerung von
* Körperschaftsanteilen, 100 %.
* @param auslaendischeSteuern § 8 Nr. 12: nach § 34c EStG abgezogene
* ausländische Steuern, 100 %.
*/
@Quelle("§ 8 GewStG")
public record Hinzurechnungen8(
EuroCent entgelteSchulden,
EuroCent rentenDauerndeLasten,
EuroCent gewinnanteileStillerGesellschafter,
EuroCent mietePachtBeweglich,
EuroCent mietePachtUnbeweglich,
EuroCent aufwendungenRechteUeberlassung,
EuroCent gewinnanteilePhgKgaa,
EuroCent steuerfreieDividenden,
EuroCent verlustanteileMitunternehmerschaft,
EuroCent ausgaben9Abs1Nr2KStG,
EuroCent gewinnminderungenTeilwert,
EuroCent auslaendischeSteuern
) {}
/**
* Kürzungsbeträge nach § 9 GewStG. Die Spenden-Begrenzung (Nr. 5) und
* die Wahl zwischen einfacher und erweiterter Grundbesitzkürzung (Nr. 1)
* werden von den Funktionen angewandt; alle übrigen Nummern werden in
* der angegebenen Höhe abgezogen.
*
* @param grundsteuerBetriebsgrundbesitz § 9 Nr. 1 Satz 1: im
* Erhebungszeitraum als Betriebsausgabe
* erfasste Grundsteuer für zum
* Betriebsvermögen gehörenden Grundbesitz.
* @param erweiterteKuerzungBeantragt § 9 Nr. 1 Satz 2: Antrag auf
* erweiterte Kürzung bei Grundstücks-
* unternehmen (tritt an die Stelle von
* Satz 1).
* @param erweiterteKuerzungGrundbesitzertrag § 9 Nr. 1 Satz 2: Teil des
* Gewerbeertrags, der auf die Verwaltung und
* Nutzung des eigenen Grundbesitzes entfällt
* (extern ermittelt; nur bei Antrag).
* @param gewinnanteileMitunternehmerschaft § 9 Nr. 2: Anteile am Gewinn
* einer Mitunternehmerschaft.
* @param schachteldividendenInland § 9 Nr. 2a: Gewinne aus Anteilen an
* inländischer Kapitalgesellschaft bei
* Beteiligung ≥ 15 % zu Beginn des EZ.
* @param kgaaGewinnanteile § 9 Nr. 2b: nach § 8 Nr. 4 dem
* Gewerbeertrag einer KGaA hinzugerechnete
* Gewinnanteile.
* @param auslandsbetriebsstaette § 9 Nr. 3: Teil des Gewerbeertrags, der
* auf eine nicht im Inland belegene
* Betriebsstätte entfällt.
* @param geleisteteSpenden § 9 Nr. 5: aus Betriebsmitteln geleistete
* Zuwendungen für steuerbegünstigte Zwecke
* (vor Höchstbetragsbegrenzung).
* @param umsaetze § 9 Nr. 5: Summe der gesamten Umsätze
* (Bemessung des 4-‰-Höchstsatzes).
* @param loehneUndGehaelter § 9 Nr. 5: im Wirtschaftsjahr aufgewendete
* Löhne und Gehälter (Bemessung des
* 4-‰-Höchstsatzes).
* @param schachteldividendenAuslandNr7 § 9 Nr. 7: Gewinne aus Anteilen
* an einer Kapitalgesellschaft außerhalb des
* Geltungsbereichs, Beteiligung ≥ 15 %.
* @param schachteldividendenDbaNr8 § 9 Nr. 8: nach DBA befreite Gewinne
* aus Anteilen an einer ausländischen
* Gesellschaft (Mindestbeteiligung).
*/
@Quelle("§ 9 GewStG")
public record Kuerzungen9(
EuroCent grundsteuerBetriebsgrundbesitz,
boolean erweiterteKuerzungBeantragt,
EuroCent erweiterteKuerzungGrundbesitzertrag,
EuroCent gewinnanteileMitunternehmerschaft,
EuroCent schachteldividendenInland,
EuroCent kgaaGewinnanteile,
EuroCent auslandsbetriebsstaette,
EuroCent geleisteteSpenden,
EuroCent umsaetze,
EuroCent loehneUndGehaelter,
EuroCent schachteldividendenAuslandNr7,
EuroCent schachteldividendenDbaNr8
) {}
/**
* Eingaben eines Gewerbesteuerfalls für **eine** hebeberechtigte
* Gemeinde (Regelfall ohne Zerlegung).
*
* @param gewinnAusGewerbebetrieb § 7 Satz 1 GewStG: der nach EStG/KStG
* ermittelte Gewinn aus Gewerbebetrieb
* (extern ermittelt; Bemessungsbasis vor
* §§ 8/9).
* @param rechtsform Rechtsform des Steuerschuldners — bestimmt
* den Freibetrag nach § 11 GewStG.
* @param erhebungszeitraum Kalenderjahr des Erhebungszeitraums
* (§ 14 Satz 2 GewStG).
* @param hinzurechnungen § 8 GewStG (siehe `Hinzurechnungen8`).
* @param kuerzungen § 9 GewStG (siehe `Kuerzungen9`).
* @param gewerbeverlustVortrag § 10a GewStG: zum Schluss des
* vorangegangenen EZ gesondert festgestellte
* vortragsfähige Fehlbeträge (§ 10a Satz 6).
* @param messzahlermaessigung § 11 Abs. 3 GewStG.
* @param hebesatz Von der Gemeinde bestimmter Hebesatz
* (§ 16 GewStG); mindestens 200 % werden
* angewandt (§ 16 Abs. 4 Satz 2).
*/
@Quelle("§ 7 GewStG")
public record Gewerbebetrieb(
EuroCent gewinnAusGewerbebetrieb,
Rechtsform rechtsform,
Ganzzahl erhebungszeitraum,
Hinzurechnungen8 hinzurechnungen,
Kuerzungen9 kuerzungen,
EuroCent gewerbeverlustVortrag,
Messzahlermaessigung messzahlermaessigung,
Prozent hebesatz
) {}
/**
* Vollständige, prüfbare Berechnungsdokumentation eines
* Gewerbesteuerfalls — jede Zwischengröße der gesetzlichen
* Reihenfolge ist einzeln ausgewiesen, damit die Festsetzung Schritt
* für Schritt gegen das Gesetz auditierbar ist.
*
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb
* (Eingabe, unverändert übernommen).
* @param summeHinzurechnungen § 8 GewStG: Summe aller Hinzurechnungen.
* @param summeKuerzungen § 9 GewStG: Summe aller Kürzungen.
* @param gewerbeertrag § 7/§ 10 GewStG: Gewinn + § 8 − § 9.
* @param verlustabzug § 10a GewStG: tatsächlich abgezogener
* Fehlbetrag (Mindestbesteuerung beachtet).
* @param gewerbeertragNachVerlust § 10a GewStG: maßgebender Gewerbeertrag
* nach Verlustabzug (nicht negativ).
* @param abgerundeterGewerbeertrag § 11 Abs. 1 Satz 3: auf volle 100 €
* abgerundet.
* @param freibetrag § 11 Abs. 1 Satz 3: angewandter Freibetrag.
* @param bemessungsgrundlage Abgerundeter Gewerbeertrag − Freibetrag.
* @param steuermesszahl § 11 Abs. 2/3 GewStG: angewandte Messzahl.
* @param steuermessbetrag § 11 GewStG: Bemessungsgrundlage × Messzahl.
* @param angewandterHebesatz § 16 GewStG: angewandter Hebesatz
* (mindestens 200 %).
* @param gewerbesteuer § 16 GewStG: Steuermessbetrag × Hebesatz.
*/
@Quelle("§ 7 GewStG")
public record GewerbesteuerErgebnis(
EuroCent gewinn,
EuroCent summeHinzurechnungen,
EuroCent summeKuerzungen,
EuroCent gewerbeertrag,
EuroCent verlustabzug,
EuroCent gewerbeertragNachVerlust,
EuroCent abgerundeterGewerbeertrag,
EuroCent freibetrag,
EuroCent bemessungsgrundlage,
Prozent steuermesszahl,
EuroCent steuermessbetrag,
Prozent angewandterHebesatz,
EuroCent gewerbesteuer
) {}
/**
* Anteil der Hinzurechnung nach § 8 Nr. 1 GewStG: „Ein Viertel der
* Summe" der Finanzierungsanteile a–f wird hinzugerechnet, soweit die
* Summe den Freibetrag übersteigt.
*/
@Quelle("§ 8 Nummer 1 GewStG")
public static final Prozent ANTEIL_8_1 = Prozent.von(FinDslNumber.prozent("0.25"));
/**
* Freibetrag der Finanzierungs-Hinzurechnung: erst der **200.000 €
* übersteigende** Teil der gewichteten Summe a–f wird zu einem Viertel
* hinzugerechnet (§ 8 Nr. 1 letzter Halbsatz GewStG).
*/
@Quelle("§ 8 Nummer 1 GewStG")
public static final EuroCent HINZURECHNUNG_FREIBETRAG_8_1 = EuroCent.von(
FinDslNumber.dezimal("200000.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"HINZURECHNUNG_FREIBETRAG_8_1\""));
/**
* Anteil der Miet-/Pachtzinsen (einschl. Leasingraten) für **bewegliche**
* Wirtschaftsgüter des Anlagevermögens: ein Fünftel
* (§ 8 Nr. 1 Buchst. d GewStG).
*/
@Quelle("§ 8 Nummer 1 Buchstabe d GewStG")
public static final Prozent ANTEIL_BEWEGLICH_8_1D = Prozent.von(FinDslNumber.prozent("0.2"));
/**
* Anteil der Miet-/Pachtzinsen für **unbewegliche** Wirtschaftsgüter des
* Anlagevermögens: die Hälfte (§ 8 Nr. 1 Buchst. e GewStG).
*/
@Quelle("§ 8 Nummer 1 Buchstabe e GewStG")
public static final Prozent ANTEIL_UNBEWEGLICH_8_1E = Prozent.von(FinDslNumber.prozent("0.5"));
/**
* Anteil der Aufwendungen für die zeitlich befristete Überlassung von
* Rechten (Konzessionen, Lizenzen): ein Viertel
* (§ 8 Nr. 1 Buchst. f GewStG).
*/
@Quelle("§ 8 Nummer 1 Buchstabe f GewStG")
public static final Prozent ANTEIL_RECHTE_8_1F = Prozent.von(FinDslNumber.prozent("0.25"));
/**
* Spenden-Höchstsatz I (§ 9 Nr. 5 Satz 1 GewStG): 20 % des um die
* Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb.
*/
@Quelle("§ 9 Nummer 5 GewStG")
public static final Prozent SPENDEN_SATZ_GEWINN_9_5 = Prozent.von(FinDslNumber.prozent("0.2"));
/**
* Spenden-Höchstsatz II (§ 9 Nr. 5 Satz 1 GewStG): 4 Promille der Summe
* der gesamten Umsätze und der im Wirtschaftsjahr aufgewendeten Löhne
* und Gehälter. 4 ‰ = 0,4 %.
*/
@Quelle("§ 9 Nummer 5 GewStG")
public static final Prozent SPENDEN_PROMILLE_9_5 = Prozent.von(FinDslNumber.prozent("0.004"));
/**
* Sockelbetrag des Verlustabzugs: der maßgebende Gewerbeertrag wird bis
* zu **1 Mio. €** ungekürzt um Fehlbeträge gemindert
* (§ 10a Satz 1 GewStG).
*/
@Quelle("§ 10a Satz 1 GewStG")
public static final EuroCent VERLUST_SOCKEL_10A = EuroCent.von(
FinDslNumber.dezimal("1000000.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"VERLUST_SOCKEL_10A\""));
/**
* Mindestbesteuerungsquote: der 1 Mio. € übersteigende maßgebende
* Gewerbeertrag ist nur bis zu **60 %** um Fehlbeträge zu kürzen
* (§ 10a Satz 2 GewStG).
*/
@Quelle("§ 10a Satz 2 GewStG")
public static final Prozent VERLUST_QUOTE_10A = Prozent.von(FinDslNumber.prozent("0.6"));
/**
* Abrundungsstufe: der Gewerbeertrag ist auf volle **100 €** nach unten
* abzurunden (§ 11 Abs. 1 Satz 3 GewStG).
*/
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
public static final EuroCent ABRUNDUNG_11 = EuroCent.von(
FinDslNumber.dezimal("100.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"ABRUNDUNG_11\""));
/**
* Freibetrag bei **natürlichen Personen und Personengesellschaften**:
* 24.500 €, höchstens in Höhe des abgerundeten Gewerbeertrags
* (§ 11 Abs. 1 Satz 3 Nr. 1 GewStG).
*/
@Quelle("§ 11 Absatz 1 Satz 3 Nummer 1 GewStG")
public static final EuroCent FREIBETRAG_NAT_PERSON_11 = EuroCent.von(
FinDslNumber.dezimal("24500.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"FREIBETRAG_NAT_PERSON_11\""));
/**
* Freibetrag bei sonstigen juristischen Personen des privaten Rechts und
* Vereinen (§ 2 Abs. 3), Unternehmen i.S.d. § 3 Nr. 5/6/… sowie
* juristischen Personen des öffentlichen Rechts: 5.000 €, höchstens in
* Höhe des abgerundeten Gewerbeertrags (§ 11 Abs. 1 Satz 3 Nr. 2 GewStG).
*/
@Quelle("§ 11 Absatz 1 Satz 3 Nummer 2 GewStG")
public static final EuroCent FREIBETRAG_VEREIN_11 = EuroCent.von(
FinDslNumber.dezimal("5000.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"FREIBETRAG_VEREIN_11\""));
/**
* Steuermesszahl für den Gewerbeertrag: **3,5 %** (§ 11 Abs. 2 GewStG).
*/
@Quelle("§ 11 Absatz 2 GewStG")
public static final Prozent STEUERMESSZAHL_11 = Prozent.von(FinDslNumber.prozent("0.035"));
/**
* Ermäßigte Steuermesszahl für Hausgewerbetreibende und Gleichgestellte:
* die Messzahl ermäßigt sich auf **56 %** von 3,5 %, also **1,96 %**
* (§ 11 Abs. 3 GewStG).
*/
@Quelle("§ 11 Absatz 3 GewStG")
public static final Prozent STEUERMESSZAHL_HAUSGEWERBE_11_3 = Prozent.von(FinDslNumber.prozent("0.0196"));
/**
* Mindest-Hebesatz: beträgt 200 %, wenn die Gemeinde keinen höheren
* Hebesatz bestimmt hat (§ 16 Abs. 4 Satz 2 GewStG).
*/
@Quelle("§ 16 Absatz 4 Satz 2 GewStG")
public static final Prozent MINDEST_HEBESATZ_16 = Prozent.von(FinDslNumber.prozent("2"));
/**
* Frühester von diesem Modul abgebildeter Erhebungszeitraum. Die hier
* implementierte Fassung gilt insbesondere für § 9 Nr. 1 Satz 1
* (Grundsteuer-Fassung) erstmals für den Erhebungszeitraum 2025
* (§ 36 Abs. 4b Satz 1 GewStG).
*/
@Quelle("§ 36 Absatz 4b GewStG")
public static final Ganzzahl FRUEHESTER_EZ = Ganzzahl.von(FinDslNumber.ganzzahl("2025"));
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.FinDslAbort;
import org.findsl.runtime.FinDslRuntimeError;
import org.findsl.runtime.EuroCent;
import org.findsl.runtime.Prozent;
import org.findsl.runtime.Quelle;
import javax.annotation.processing.Generated;
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Gewerbesteuer — Messbetrag und Steuer (§§ 7–11, 16 GewStG)
*
* Bildet die Festsetzung der **Gewerbesteuer** nach dem
* Gewerbesteuergesetz (GewStG, i.d.F. ab Erhebungszeitraum 2025 —
* insbesondere § 9 Nr. 1 Satz 1 in der Fassung des Art. 9 G v. 2.12.2024,
* § 36 Abs. 4b GewStG) vollständig in der gesetzlichen Reihenfolge ab:
*
* - **§ 6 GewStG** — Besteuerungsgrundlage ist der Gewerbeertrag.
* - **§ 7 Satz 1 GewStG** — Gewerbeertrag ist der nach EStG/KStG zu
* ermittelnde Gewinn aus Gewerbebetrieb, vermehrt um die § 8- und
* vermindert um die § 9-Beträge.
* - **§ 8 GewStG** — Hinzurechnungen: Nr. 1 (Viertel der Summe aus
* a–f Finanzierungsanteilen, soweit über 200.000 €) sowie die
* Nummern 4, 5, 8, 9, 10, 12 (die übrigen Nummern sind weggefallen).
* - **§ 9 GewStG** — Kürzungen: Nr. 1 (Grundsteuer für Betriebs-
* grundbesitz bzw. erweiterte Kürzung auf Antrag), Nr. 2/2a/2b/3/7/8
* (Beteiligungs-/Betriebsstätten-Erträge) und Nr. 5 (Spenden bis
* 20 % des Gewinns oder 4 ‰ der Summe aus Umsätzen und Löhnen).
* - **§ 10/§ 10a GewStG** — maßgebender Gewerbeertrag und Kürzung um
* vortragsfähige Fehlbeträge (Mindestbesteuerung: bis 1 Mio. € voll,
* darüber nur 60 %).
* - **§ 11 GewStG** — Abrundung auf volle 100 €, Freibetrag (24.500 €
* bzw. 5.000 € bzw. 0 € je Rechtsform) und Steuermesszahl 3,5 %
* (ermäßigt 1,96 % bei Hausgewerbetreibenden, § 11 Abs. 3).
* - **§ 16 GewStG** — Anwendung des Hebesatzes der hebeberechtigten
* Gemeinde, mindestens 200 % (§ 16 Abs. 4 Satz 2).
*
* **Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
* Steuerbetragsberechnung):**
*
* - Die Ermittlung des **Gewinns aus Gewerbebetrieb** selbst (§ 7 Satz 1:
* „nach den Vorschriften des EStG oder KStG"). Er geht — wie das
* Einkommen i.S.d. § 8 Abs. 1 KStG im KStG-Modul — als geprüfte
* Eingabe ein. Ebenso die *Höhe* der einzelnen Hinzurechnungs-/
* Kürzungsbeträge, die § 8/§ 9 aus EStG/KStG-Sachverhalten ableiten
* (Nr. 4/5/8/9/10/12 bzw. Nr. 2/2a/2b/3/7/8): das GewStG schreibt nur
* die Verrechnung vor — diese ist hier vollständig und exakt
* implementiert.
* - **Zerlegung (§§ 28–34 GewStG)** auf mehrere Gemeinden (Maßstab
* Arbeitslöhne, Sonderfälle Windenergie/Solar/Speicher). Modelliert
* ist der Regelfall **einer** hebeberechtigten Gemeinde.
* - Verfahren §§ 14a/19–21 (Vorauszahlung, Festsetzung, Zerlegungs-
* bescheid), § 35b (Änderung), abgekürzter Erhebungszeitraum
* (§ 14 Satz 3), Steuerbefreiungen § 3, optierende Gesellschaft
* § 1a KStG (§ 2 Abs. 8).
* - Erweiterte Kürzung § 9 Nr. 1 Satz 2 dem Grunde nach (Antrag,
* Grundstücksunternehmens-Voraussetzungen) — die *Höhe* des auf den
* eigenen Grundbesitz entfallenden Gewerbeertrags geht als Eingabe ein.
*/
@Generated(value = "findsl.Generator")
class GewstImpl implements Gewst {
@Quelle("§ 8 Nummer 1 GewStG")
@Override
public EuroCent hinzurechnung8Nr1(Hinzurechnungen8 h) {
final FinDslNumber gewichteteSumme = h.entgelteSchulden()
.add(h.rentenDauerndeLasten())
.add(h.gewinnanteileStillerGesellschafter())
.add(ANTEIL_BEWEGLICH_8_1D.mul(h.mietePachtBeweglich()).cast(FinDslNumber.Type.EuroCent))
.add(ANTEIL_UNBEWEGLICH_8_1E.mul(h.mietePachtUnbeweglich()).cast(FinDslNumber.Type.EuroCent))
.add(ANTEIL_RECHTE_8_1F.mul(h.aufwendungenRechteUeberlassung()).cast(FinDslNumber.Type.EuroCent))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"gewichteteSumme\"");
final FinDslNumber uebersteigend = gewichteteSumme.sub(HINZURECHNUNG_FREIBETRAG_8_1)
.mindestens(FinDslNumber.dezimal("0.00"))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"uebersteigend\"");
final FinDslNumber nr1 = ANTEIL_8_1.mul(uebersteigend)
.cast(FinDslNumber.Type.EuroCent)
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"nr1\"");
return EuroCent.von(nr1);
}
@Quelle("§ 8 GewStG")
@Override
public EuroCent summeHinzurechnungen8(Hinzurechnungen8 h) {
return EuroCent.von(
hinzurechnung8Nr1(h)
.add(h.gewinnanteilePhgKgaa())
.add(h.steuerfreieDividenden())
.add(h.verlustanteileMitunternehmerschaft())
.add(h.ausgaben9Abs1Nr2KStG())
.add(h.gewinnminderungenTeilwert())
.add(h.auslaendischeSteuern()));
}
@Quelle("§ 9 Nummer 5 GewStG")
@Override
public EuroCent spendenHoechstbetrag9Nr5(
EuroCent gewinn,
EuroCent hinzurechnung8Nr9,
EuroCent umsaetze,
EuroCent loehneUndGehaelter) {
final FinDslNumber nachGewinn = SPENDEN_SATZ_GEWINN_9_5.mul(gewinn.add(hinzurechnung8Nr9))
.cast(FinDslNumber.Type.EuroCent)
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"nachGewinn\"");
final FinDslNumber nachUmsatzLohn = SPENDEN_PROMILLE_9_5.mul(umsaetze.add(loehneUndGehaelter))
.cast(FinDslNumber.Type.EuroCent)
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"nachUmsatzLohn\"");
return EuroCent.von(nachGewinn.mindestens(nachUmsatzLohn).mindestens(FinDslNumber.dezimal("0.00")));
}
@Quelle("§ 9 Nummer 5 GewStG")
@Override
public EuroCent kuerzung9Nr5(Kuerzungen9 k, EuroCent gewinn, EuroCent hinzurechnung8Nr9) {
return EuroCent.von(
k.geleisteteSpenden()
.hoechstens(
spendenHoechstbetrag9Nr5(
EuroCent.von(gewinn),
EuroCent.von(hinzurechnung8Nr9),
EuroCent.von(k.umsaetze()),
EuroCent.von(k.loehneUndGehaelter()))));
}
@Quelle("§ 9 Nummer 1 GewStG")
@Override
public EuroCent kuerzung9Nr1(Kuerzungen9 k) {
if (k.erweiterteKuerzungBeantragt()) {
return EuroCent.von(k.erweiterteKuerzungGrundbesitzertrag());
}
return EuroCent.von(k.grundsteuerBetriebsgrundbesitz());
}
@Quelle("§ 9 GewStG")
@Override
public EuroCent summeKuerzungen9(Kuerzungen9 k, EuroCent gewinn, EuroCent hinzurechnung8Nr9) {
return EuroCent.von(
kuerzung9Nr1(k)
.add(k.gewinnanteileMitunternehmerschaft())
.add(k.schachteldividendenInland())
.add(k.kgaaGewinnanteile())
.add(k.auslandsbetriebsstaette())
.add(kuerzung9Nr5(k, EuroCent.von(gewinn), EuroCent.von(hinzurechnung8Nr9)))
.add(k.schachteldividendenAuslandNr7())
.add(k.schachteldividendenDbaNr8()));
}
@Quelle("§ 7 GewStG")
@Override
public EuroCent gewerbeertrag(EuroCent gewinn, Hinzurechnungen8 h, Kuerzungen9 k) {
return EuroCent.von(
gewinn.add(summeHinzurechnungen8(h))
.sub(summeKuerzungen9(k, EuroCent.von(gewinn), EuroCent.von(h.ausgaben9Abs1Nr2KStG()))));
}
@Quelle("§ 10a GewStG")
@Override
public EuroCent verlustVerrechnungsobergrenze10a(EuroCent gewerbeertrag) {
if (gewerbeertrag.compareValue(FinDslNumber.dezimal("0.00")) <= 0) {
return EuroCent.von(FinDslNumber.dezimal("0.00"));
}
if (gewerbeertrag.compareValue(VERLUST_SOCKEL_10A) <= 0) {
return EuroCent.von(gewerbeertrag);
}
return EuroCent.von(
VERLUST_SOCKEL_10A.add(
VERLUST_QUOTE_10A.mul(gewerbeertrag.sub(VERLUST_SOCKEL_10A)).cast(FinDslNumber.Type.EuroCent)));
}
@Quelle("§ 10a GewStG")
@Override
public EuroCent verlustabzug10a(EuroCent gewerbeertrag, EuroCent fehlbetrag) {
return EuroCent.von(fehlbetrag.hoechstens(verlustVerrechnungsobergrenze10a(EuroCent.von(gewerbeertrag))));
}
@Quelle("§ 10a GewStG")
@Override
public EuroCent gewerbeertragNachVerlust(EuroCent gewerbeertrag, EuroCent fehlbetrag) {
return EuroCent.von(gewerbeertrag.sub(verlustabzug10a(EuroCent.von(gewerbeertrag), EuroCent.von(fehlbetrag))));
}
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
@Override
public EuroCent freibetragRoh11(Rechtsform rechtsform) {
if (rechtsform == Rechtsform.NatuerlichePersonPersonengesellschaft) {
return EuroCent.von(FREIBETRAG_NAT_PERSON_11);
}
if (rechtsform == Rechtsform.VereinJuristischePersonOerR) {
return EuroCent.von(FREIBETRAG_VEREIN_11);
}
if (rechtsform == Rechtsform.Kapitalgesellschaft) {
return EuroCent.von(FinDslNumber.dezimal("0.00"));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
@Quelle("§ 11 Absatz 1 Satz 3 GewStG")
@Override
public EuroCent freibetrag11(Rechtsform rechtsform, EuroCent abgerundeterGewerbeertrag) {
return EuroCent.von(
freibetragRoh11(rechtsform).hoechstens(abgerundeterGewerbeertrag.mindestens(FinDslNumber.dezimal("0.00"))));
}
@Quelle("§ 11 Absatz 2 GewStG")
@Override
public Prozent steuermesszahl11(Messzahlermaessigung ermaessigung) {
if (ermaessigung == Messzahlermaessigung.Keine) {
return Prozent.von(STEUERMESSZAHL_11);
}
if (ermaessigung == Messzahlermaessigung.Hausgewerbetreibender) {
return Prozent.von(STEUERMESSZAHL_HAUSGEWERBE_11_3);
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
@Quelle("§ 11 GewStG")
@Override
public EuroCent steuermessbetrag11(EuroCent abgerundeterGewerbeertrag, EuroCent freibetrag, Prozent messzahl) {
return EuroCent.von(messzahl.mul(abgerundeterGewerbeertrag.sub(freibetrag)).cast(FinDslNumber.Type.EuroCent));
}
@Quelle("§ 16 Absatz 4 Satz 2 GewStG")
@Override
public Prozent angewandterHebesatz16(Prozent hebesatz) {
if (hebesatz.compareValue(MINDEST_HEBESATZ_16) < 0) {
return Prozent.von(MINDEST_HEBESATZ_16);
}
return Prozent.von(hebesatz);
}
@Quelle("§ 16 Absatz 1 GewStG")
@Override
public EuroCent gewerbesteuer16(EuroCent steuermessbetrag, Prozent hebesatz) {
return EuroCent.von(steuermessbetrag.mul(hebesatz).cast(FinDslNumber.Type.EuroCent));
}
@Quelle("§ 7 GewStG")
@Override
public GewerbesteuerErgebnis berechneGewerbesteuer(Gewerbebetrieb betrieb) {
final FinDslNumber h8 = summeHinzurechnungen8(betrieb.hinzurechnungen())
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"h8\"");
final FinDslNumber k9 = summeKuerzungen9(
betrieb.kuerzungen(),
EuroCent.von(betrieb.gewinnAusGewerbebetrieb()),
EuroCent.von(betrieb.hinzurechnungen().ausgaben9Abs1Nr2KStG()))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"k9\"");
final FinDslNumber ertrag;
if (betrieb.erhebungszeitraum().compareValue(FRUEHESTER_EZ) < 0) {
throw new FinDslAbort(
"\n § 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebun"
+ "gszeitraum 2025 ab; \n EZ "
+ betrieb.erhebungszeitraum().asText()
+ " ist nicht abgedeckt\n ");
} else {
ertrag = gewerbeertrag(
EuroCent.von(betrieb.gewinnAusGewerbebetrieb()),
betrieb.hinzurechnungen(),
betrieb.kuerzungen())
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"ertrag\"");
}
final FinDslNumber abzug = verlustabzug10a(EuroCent.von(ertrag), EuroCent.von(betrieb.gewerbeverlustVortrag()))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"abzug\"");
final FinDslNumber nachVerlust = ertrag.sub(abzug)
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"nachVerlust\"");
final FinDslNumber abgerundet;
if (nachVerlust.compareValue(FinDslNumber.dezimal("0.00")) <= 0) {
abgerundet = FinDslNumber.dezimal("0.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"abgerundet\"");
} else {
abgerundet = nachVerlust.abrundenAuf(ABRUNDUNG_11)
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"abgerundet\"");
}
final FinDslNumber fb = freibetrag11(betrieb.rechtsform(), EuroCent.von(abgerundet))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"fb\"");
final FinDslNumber messzahl = steuermesszahl11(betrieb.messzahlermaessigung());
final FinDslNumber bemessung = abgerundet.sub(fb)
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"bemessung\"");
final FinDslNumber messbetrag = steuermessbetrag11(
EuroCent.von(abgerundet),
EuroCent.von(fb),
Prozent.von(messzahl))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"messbetrag\"");
final FinDslNumber heb = angewandterHebesatz16(Prozent.von(betrieb.hebesatz()));
final FinDslNumber steuer = gewerbesteuer16(EuroCent.von(messbetrag), Prozent.von(heb))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"steuer\"");
return new GewerbesteuerErgebnis(
EuroCent.von(betrieb.gewinnAusGewerbebetrieb()),
EuroCent.von(h8),
EuroCent.von(k9),
EuroCent.von(ertrag),
EuroCent.von(abzug),
EuroCent.von(nachVerlust),
EuroCent.von(abgerundet),
EuroCent.von(fb),
EuroCent.von(bemessung),
Prozent.von(messzahl),
EuroCent.von(messbetrag),
Prozent.von(heb),
EuroCent.von(steuer));
}
}import javax.annotation.processing.Generated;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.FinDslAbort;
import org.findsl.runtime.EuroCent;
import org.findsl.runtime.Prozent;
import org.findsl.runtime.Ganzzahl;
/**
* Generierte JUnit5-Akzeptanztests aus FinDSL-`prüfe` — NICHT
* manuell editieren. Soll-Verhalten = der FinDSL-Interpreter
* (`pruefe.ts runPruefeDecl`); pass/fail/abbruch bit-genau.
*
* # Akzeptanztests — Gewerbesteuer (§§ 7–11, 16 GewStG)
*
* `prüfe`-Blöcke zur Datei `gewerbesteuer`. Alle Sollwerte sind von Hand
* aus dem Gesetzeswortlaut gerechnet (GewStG, Fassung ab EZ 2025):
*
* - § 8 Nr. 1: ¼ der Summe (a–c 100 %, d 1/5, e 1/2, f 1/4), soweit
* über 200.000 €.
* - § 9 Nr. 1: Grundsteuer bzw. erweiterte Kürzung (Antrag, alternativ);
* Nr. 5: Spenden ≤ max(20 % Gewinn; 4 ‰ (Umsatz + Lohn)).
* - § 10a: bis 1 Mio. € voll, darüber 60 % (Mindestbesteuerung).
* - § 11: Abrundung auf 100 €, Freibetrag 24.500/5.000/0 €,
* Messzahl 3,5 % (Hausgewerbe 1,96 %).
* - § 16: Hebesatz, mindestens 200 %.
*
* Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
*/
@Generated(value = "findsl.Generator")
public final class GewstTest {
private final Gewst gewst = Factory.createGewst();
@Nested
@DisplayName("§ 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)")
class Pruefe_0 {
@Test
@DisplayName("Summe ≤ 200.000 € → keine Hinzurechnung")
void testfall_0() {
assertTrue(
gewst.hinzurechnung8Nr1(
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("100000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("0.00")));
}
@Test
@DisplayName("Summe genau 200.000 € → 0 (nur der übersteigende Teil zählt)")
void testfall_1() {
assertTrue(
gewst.hinzurechnung8Nr1(
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("200000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("0.00")));
}
@Test
@DisplayName("Buchst. a + e: 1.000.000 + ½·400.000 = 1.200.000; ¼·(1.200.000−200.000) = 250.000")
void testfall_2() {
assertTrue(
gewst.hinzurechnung8Nr1(
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("1000000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("400000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("250000.00")));
}
@Test
@DisplayName("Buchst. d (bewegliche WG, 1/5): 1/5·1.500.000 = 300.000; ¼·(300.000−200.000) = 25.000")
void testfall_3() {
assertTrue(
gewst.hinzurechnung8Nr1(
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("1500000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("25000.00")));
}
@Test
@DisplayName("Buchst. f (Rechte, 1/4): 1/4·1.000.000 = 250.000; ¼·(250.000−200.000) = 12.500")
void testfall_4() {
assertTrue(
gewst.hinzurechnung8Nr1(
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("1000000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("12500.00")));
}
}
@Nested
@DisplayName("§ 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)")
class Pruefe_1 {
@Test
@DisplayName("Nr. 1 (¼·800.000 = 200.000) + Nr. 4 (50.000) + Nr. 5 (30.000) = 280.000")
void testfall_0() {
assertTrue(
gewst.summeHinzurechnungen8(
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("1000000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("50000.00")),
EuroCent.von(FinDslNumber.dezimal("30000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("280000.00")));
}
@Test
@DisplayName("leere Hinzurechnungen → 0")
void testfall_1() {
assertTrue(
gewst.summeHinzurechnungen8(
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("0.00")));
}
}
@Nested
@DisplayName("§ 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)")
class Pruefe_2 {
@Test
@DisplayName("20 %·500.000 = 100.000 > 4 ‰·12.000.000 = 48.000 → 100.000")
void testfall_0() {
assertTrue(
gewst.spendenHoechstbetrag9Nr5(
EuroCent.von(FinDslNumber.dezimal("500000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("10000000.00")),
EuroCent.von(FinDslNumber.dezimal("2000000.00")))
.equalsValue(FinDslNumber.dezimal("100000.00")));
}
@Test
@DisplayName("kein Gewinn, 4 ‰·60.000.000 = 240.000 → 240.000")
void testfall_1() {
assertTrue(
gewst.spendenHoechstbetrag9Nr5(
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("50000000.00")),
EuroCent.von(FinDslNumber.dezimal("10000000.00")))
.equalsValue(FinDslNumber.dezimal("240000.00")));
}
@Test
@DisplayName("§ 8 Nr. 9 erhöht die 20-%-Bemessung: 20 %·(400.000+100.000) = 100.000")
void testfall_2() {
assertTrue(
gewst.spendenHoechstbetrag9Nr5(
EuroCent.von(FinDslNumber.dezimal("400000.00")),
EuroCent.von(FinDslNumber.dezimal("100000.00")),
EuroCent.von(FinDslNumber.dezimal("1000000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")))
.equalsValue(FinDslNumber.dezimal("100000.00")));
}
@Test
@DisplayName("Spenden-Kürzung = min(geleistet, Höchstbetrag): 120.000 gedeckelt auf 100.000")
void testfall_3() {
assertTrue(
gewst.kuerzung9Nr5(
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("0.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("120000.00")),
EuroCent.von(FinDslNumber.dezimal("10000000.00")),
EuroCent.von(FinDslNumber.dezimal("2000000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
EuroCent.von(FinDslNumber.dezimal("500000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")))
.equalsValue(FinDslNumber.dezimal("100000.00")));
}
@Test
@DisplayName("Spenden unter Höchstbetrag bleiben voll: 30.000")
void testfall_4() {
assertTrue(
gewst.kuerzung9Nr5(
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("0.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("30000.00")),
EuroCent.von(FinDslNumber.dezimal("10000000.00")),
EuroCent.von(FinDslNumber.dezimal("2000000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
EuroCent.von(FinDslNumber.dezimal("500000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")))
.equalsValue(FinDslNumber.dezimal("30000.00")));
}
}
@Nested
@DisplayName("§ 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)")
class Pruefe_3 {
@Test
@DisplayName("Satz 1: als Betriebsausgabe erfasste Grundsteuer")
void testfall_0() {
assertTrue(
gewst.kuerzung9Nr1(
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("3000.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("3000.00")));
}
@Test
@DisplayName("Satz 2: erweiterte Kürzung auf Antrag tritt an die Stelle von Satz 1")
void testfall_1() {
assertTrue(
gewst.kuerzung9Nr1(
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("3000.00")),
true,
EuroCent.von(FinDslNumber.dezimal("50000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("50000.00")));
}
}
@Nested
@DisplayName("§ 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)")
class Pruefe_4 {
@Test
@DisplayName("800.000 + 75.000 (§ 8 Nr. 1) − 35.000 (§ 9) = 840.000")
void testfall_0() {
assertTrue(
gewst.gewerbeertrag(
EuroCent.von(FinDslNumber.dezimal("800000.00")),
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("500000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("5000.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("30000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))))
.equalsValue(FinDslNumber.dezimal("840000.00")));
}
}
@Nested
@DisplayName("§ 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)")
class Pruefe_5 {
@Test
@DisplayName("GE 3 Mio., Obergrenze = 1 Mio. + 60 %·2 Mio. = 2,2 Mio.")
void testfall_0() {
assertTrue(
gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("3000000.00")))
.equalsValue(FinDslNumber.dezimal("2200000.00")));
}
@Test
@DisplayName("GE ≤ 1 Mio.: voll verrechenbar (Obergrenze = GE)")
void testfall_1() {
assertTrue(
gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("800000.00")))
.equalsValue(FinDslNumber.dezimal("800000.00")));
}
@Test
@DisplayName("GE ≤ 0: kein Verlustabzug")
void testfall_2() {
assertTrue(
gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("50000.00").neg()))
.equalsValue(FinDslNumber.dezimal("0.00")));
}
@Test
@DisplayName("GE 3 Mio., Fehlbetrag 5 Mio. → Abzug 2,2 Mio., danach 800.000")
void testfall_3() {
assertTrue(
gewst.gewerbeertragNachVerlust(
EuroCent.von(FinDslNumber.dezimal("3000000.00")),
EuroCent.von(FinDslNumber.dezimal("5000000.00")))
.equalsValue(FinDslNumber.dezimal("800000.00")));
}
@Test
@DisplayName("GE 500.000, Fehlbetrag 200.000 → Abzug 200.000, danach 300.000")
void testfall_4() {
assertTrue(
gewst.verlustabzug10a(
EuroCent.von(FinDslNumber.dezimal("500000.00")),
EuroCent.von(FinDslNumber.dezimal("200000.00")))
.equalsValue(FinDslNumber.dezimal("200000.00")));
assertTrue(
gewst.gewerbeertragNachVerlust(
EuroCent.von(FinDslNumber.dezimal("500000.00")),
EuroCent.von(FinDslNumber.dezimal("200000.00")))
.equalsValue(FinDslNumber.dezimal("300000.00")));
}
@Test
@DisplayName("GE 800.000 (≤ 1 Mio.), Fehlbetrag 5 Mio. → Abzug nur 800.000, danach 0")
void testfall_5() {
assertTrue(
gewst.gewerbeertragNachVerlust(
EuroCent.von(FinDslNumber.dezimal("800000.00")),
EuroCent.von(FinDslNumber.dezimal("5000000.00")))
.equalsValue(FinDslNumber.dezimal("0.00")));
}
}
@Nested
@DisplayName("§ 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform")
class Pruefe_6 {
@Test
@DisplayName("natürliche Person/Personengesellschaft → 24.500 €")
void testfall_0() {
assertTrue(
gewst.freibetragRoh11(Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft)
.equalsValue(FinDslNumber.dezimal("24500.00")));
}
@Test
@DisplayName("Verein/jur. Person öR → 5.000 €")
void testfall_1() {
assertTrue(
gewst.freibetragRoh11(Gewst.Rechtsform.VereinJuristischePersonOerR)
.equalsValue(FinDslNumber.dezimal("5000.00")));
}
@Test
@DisplayName("Kapitalgesellschaft → kein Freibetrag")
void testfall_2() {
assertTrue(
gewst.freibetragRoh11(Gewst.Rechtsform.Kapitalgesellschaft).equalsValue(FinDslNumber.dezimal("0.00")));
}
@Test
@DisplayName("höchstens in Höhe des abgerundeten Gewerbeertrags (10.000 < 24.500)")
void testfall_3() {
assertTrue(
gewst.freibetrag11(
Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft,
EuroCent.von(FinDslNumber.dezimal("10000.00")))
.equalsValue(FinDslNumber.dezimal("10000.00")));
}
@Test
@DisplayName("voller Freibetrag bei hohem Gewerbeertrag")
void testfall_4() {
assertTrue(
gewst.freibetrag11(
Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft,
EuroCent.von(FinDslNumber.dezimal("197000.00")))
.equalsValue(FinDslNumber.dezimal("24500.00")));
}
}
@Nested
@DisplayName("§ 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag")
class Pruefe_7 {
@Test
@DisplayName("Regelmesszahl 3,5 %")
void testfall_0() {
assertTrue(
gewst.steuermesszahl11(Gewst.Messzahlermaessigung.Keine).equalsValue(FinDslNumber.prozent("0.035")));
}
@Test
@DisplayName("Hausgewerbetreibende: ermäßigt 1,96 % (= 56 % von 3,5 %)")
void testfall_1() {
assertTrue(
gewst.steuermesszahl11(Gewst.Messzahlermaessigung.Hausgewerbetreibender)
.equalsValue(FinDslNumber.prozent("0.0196")));
}
@Test
@DisplayName("(197.000 − 24.500)·3,5 % = 172.500·3,5 % = 6.037,50")
void testfall_2() {
assertTrue(
gewst.steuermessbetrag11(
EuroCent.von(FinDslNumber.dezimal("197000.00")),
EuroCent.von(FinDslNumber.dezimal("24500.00")),
Prozent.von(FinDslNumber.prozent("0.035")))
.equalsValue(FinDslNumber.dezimal("6037.50")));
}
@Test
@DisplayName("Kapitalgesellschaft ohne Freibetrag: 1.000.000·3,5 % = 35.000")
void testfall_3() {
assertTrue(
gewst.steuermessbetrag11(
EuroCent.von(FinDslNumber.dezimal("1000000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
Prozent.von(FinDslNumber.prozent("0.035")))
.equalsValue(FinDslNumber.dezimal("35000.00")));
}
}
@Nested
@DisplayName("§ 16 GewStG — Hebesatz (mindestens 200 %)")
class Pruefe_8 {
@Test
@DisplayName("Gemeinde-Hebesatz unter 200 % → 200 %")
void testfall_0() {
assertTrue(
gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("1.5")))
.equalsValue(FinDslNumber.prozent("2")));
}
@Test
@DisplayName("genau 200 % bleibt 200 %")
void testfall_1() {
assertTrue(
gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("2")))
.equalsValue(FinDslNumber.prozent("2")));
}
@Test
@DisplayName("höherer Hebesatz bleibt unverändert")
void testfall_2() {
assertTrue(
gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("4.5")))
.equalsValue(FinDslNumber.prozent("4.5")));
}
@Test
@DisplayName("Steuermessbetrag · Hebesatz: 6.037,50 · 400 % = 24.150")
void testfall_3() {
assertTrue(
gewst.gewerbesteuer16(
EuroCent.von(FinDslNumber.dezimal("6037.50")),
Prozent.von(FinDslNumber.prozent("4")))
.equalsValue(FinDslNumber.dezimal("24150.00")));
}
}
@Nested
@DisplayName("Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)")
class Pruefe_9 {
@Test
@DisplayName("Personengesellschaft, EZ 2025, Gewinn 200.000, Hebesatz 400 %")
void testfall_0() {
final Gewst.GewerbesteuerErgebnis e = gewst.berechneGewerbesteuer(
new Gewst.Gewerbebetrieb(
EuroCent.von(FinDslNumber.dezimal("200000.00")),
Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft,
Ganzzahl.von(FinDslNumber.ganzzahl("2025")),
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("100000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("3000.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
EuroCent.von(FinDslNumber.dezimal("0.00")),
Gewst.Messzahlermaessigung.Keine,
Prozent.von(FinDslNumber.prozent("4"))));
assertTrue(e.summeHinzurechnungen().equalsValue(FinDslNumber.dezimal("0.00")));
assertTrue(e.summeKuerzungen().equalsValue(FinDslNumber.dezimal("3000.00")));
assertTrue(e.gewerbeertrag().equalsValue(FinDslNumber.dezimal("197000.00")));
assertTrue(e.gewerbeertragNachVerlust().equalsValue(FinDslNumber.dezimal("197000.00")));
assertTrue(e.abgerundeterGewerbeertrag().equalsValue(FinDslNumber.dezimal("197000.00")));
assertTrue(e.freibetrag().equalsValue(FinDslNumber.dezimal("24500.00")));
assertTrue(e.steuermessbetrag().equalsValue(FinDslNumber.dezimal("6037.50")));
assertTrue(e.angewandterHebesatz().equalsValue(FinDslNumber.prozent("4")));
assertTrue(e.gewerbesteuer().equalsValue(FinDslNumber.dezimal("24150.00")));
}
@Test
@DisplayName("Kapitalgesellschaft, EZ 2025, Gewinn 1.000.000, Hebesatz 500 %, kein Freibetrag")
void testfall_1() {
final Gewst.GewerbesteuerErgebnis e = gewst.berechneGewerbesteuer(
new Gewst.Gewerbebetrieb(
EuroCent.von(FinDslNumber.dezimal("1000000.00")),
Gewst.Rechtsform.Kapitalgesellschaft,
Ganzzahl.von(FinDslNumber.ganzzahl("2025")),
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("0.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
EuroCent.von(FinDslNumber.dezimal("0.00")),
Gewst.Messzahlermaessigung.Keine,
Prozent.von(FinDslNumber.prozent("5"))));
assertTrue(e.freibetrag().equalsValue(FinDslNumber.dezimal("0.00")));
assertTrue(e.bemessungsgrundlage().equalsValue(FinDslNumber.dezimal("1000000.00")));
assertTrue(e.steuermessbetrag().equalsValue(FinDslNumber.dezimal("35000.00")));
assertTrue(e.angewandterHebesatz().equalsValue(FinDslNumber.prozent("5")));
assertTrue(e.gewerbesteuer().equalsValue(FinDslNumber.dezimal("175000.00")));
}
@Test
@DisplayName("Volle Kette: § 8-Excess + § 9 + § 10a + Hausgewerbe, Hebesatz 410 %")
void testfall_2() {
final Gewst.GewerbesteuerErgebnis e = gewst.berechneGewerbesteuer(
new Gewst.Gewerbebetrieb(
EuroCent.von(FinDslNumber.dezimal("800000.00")),
Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft,
Ganzzahl.von(FinDslNumber.ganzzahl("2025")),
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("600000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("20000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("10000.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("50000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("5000.00")),
EuroCent.von(FinDslNumber.dezimal("2000000.00")),
EuroCent.von(FinDslNumber.dezimal("500000.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
EuroCent.von(FinDslNumber.dezimal("100000.00")),
Gewst.Messzahlermaessigung.Hausgewerbetreibender,
Prozent.von(FinDslNumber.prozent("4.1"))));
assertTrue(e.summeHinzurechnungen().equalsValue(FinDslNumber.dezimal("120000.00")));
assertTrue(e.summeKuerzungen().equalsValue(FinDslNumber.dezimal("65000.00")));
assertTrue(e.gewerbeertrag().equalsValue(FinDslNumber.dezimal("855000.00")));
assertTrue(e.verlustabzug().equalsValue(FinDslNumber.dezimal("100000.00")));
assertTrue(e.gewerbeertragNachVerlust().equalsValue(FinDslNumber.dezimal("755000.00")));
assertTrue(e.bemessungsgrundlage().equalsValue(FinDslNumber.dezimal("730500.00")));
assertTrue(e.steuermesszahl().equalsValue(FinDslNumber.prozent("0.0196")));
assertTrue(e.steuermessbetrag().equalsValue(FinDslNumber.dezimal("14317.80")));
assertTrue(e.gewerbesteuer().equalsValue(FinDslNumber.dezimal("58702.98")));
}
@Test
@DisplayName("Negativer Gewerbeertrag → kein Messbetrag, keine Steuer")
void testfall_3() {
final Gewst.GewerbesteuerErgebnis e = gewst.berechneGewerbesteuer(
new Gewst.Gewerbebetrieb(
EuroCent.von(FinDslNumber.dezimal("50000.00")),
Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft,
Ganzzahl.von(FinDslNumber.ganzzahl("2025")),
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("100000.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
EuroCent.von(FinDslNumber.dezimal("0.00")),
Gewst.Messzahlermaessigung.Keine,
Prozent.von(FinDslNumber.prozent("2"))));
assertTrue(e.gewerbeertrag().equalsValue(FinDslNumber.dezimal("50000.00").neg()));
assertTrue(e.abgerundeterGewerbeertrag().equalsValue(FinDslNumber.dezimal("0.00")));
assertTrue(e.freibetrag().equalsValue(FinDslNumber.dezimal("0.00")));
assertTrue(e.steuermessbetrag().equalsValue(FinDslNumber.dezimal("0.00")));
assertTrue(e.gewerbesteuer().equalsValue(FinDslNumber.dezimal("0.00")));
}
@Test
@DisplayName("Erhebungszeitraum vor 2025 wird abgelehnt (§ 36 Abs. 4b GewStG)")
void testfall_4() {
assertThrows(FinDslAbort.class, () -> {
gewst.berechneGewerbesteuer(
new Gewst.Gewerbebetrieb(
EuroCent.von(FinDslNumber.dezimal("100000.00")),
Gewst.Rechtsform.Kapitalgesellschaft,
Ganzzahl.von(FinDslNumber.ganzzahl("2024")),
new Gewst.Hinzurechnungen8(
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
new Gewst.Kuerzungen9(
EuroCent.von(FinDslNumber.dezimal("0.00")),
false,
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00")),
EuroCent.von(FinDslNumber.dezimal("0.00"))),
EuroCent.von(FinDslNumber.dezimal("0.00")),
Gewst.Messzahlermaessigung.Keine,
Prozent.von(FinDslNumber.prozent("2"))));
});
}
}
}import javax.annotation.processing.Generated;
/**
* Komposition-Wurzel (generiert) — erzeugt die Modul-Instanzen dieses
* Pakets und verdrahtet ihre Abhängigkeiten per Konstruktor-Injektion.
* Geteilte, prozessweite Singletons. NICHT manuell editieren.
*/
@Generated(value = "findsl.Generator")
public final class Factory {
private Factory() {}
private static final Gewst GEWST = new GewstImpl();
public static Gewst createGewst() {
return GEWST;
}
}import { FinDslNumber, FinDslRuntimeError, FinDslAbort, EuroCent, Prozent, Ganzzahl } from './runtime/index.js';
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Gewerbesteuer — Messbetrag und Steuer (§§ 7–11, 16 GewStG)
*
* Bildet die Festsetzung der **Gewerbesteuer** nach dem
* Gewerbesteuergesetz (GewStG, i.d.F. ab Erhebungszeitraum 2025 —
* insbesondere § 9 Nr. 1 Satz 1 in der Fassung des Art. 9 G v. 2.12.2024,
* § 36 Abs. 4b GewStG) vollständig in der gesetzlichen Reihenfolge ab:
*
* - **§ 6 GewStG** — Besteuerungsgrundlage ist der Gewerbeertrag.
* - **§ 7 Satz 1 GewStG** — Gewerbeertrag ist der nach EStG/KStG zu
* ermittelnde Gewinn aus Gewerbebetrieb, vermehrt um die § 8- und
* vermindert um die § 9-Beträge.
* - **§ 8 GewStG** — Hinzurechnungen: Nr. 1 (Viertel der Summe aus
* a–f Finanzierungsanteilen, soweit über 200.000 €) sowie die
* Nummern 4, 5, 8, 9, 10, 12 (die übrigen Nummern sind weggefallen).
* - **§ 9 GewStG** — Kürzungen: Nr. 1 (Grundsteuer für Betriebs-
* grundbesitz bzw. erweiterte Kürzung auf Antrag), Nr. 2/2a/2b/3/7/8
* (Beteiligungs-/Betriebsstätten-Erträge) und Nr. 5 (Spenden bis
* 20 % des Gewinns oder 4 ‰ der Summe aus Umsätzen und Löhnen).
* - **§ 10/§ 10a GewStG** — maßgebender Gewerbeertrag und Kürzung um
* vortragsfähige Fehlbeträge (Mindestbesteuerung: bis 1 Mio. € voll,
* darüber nur 60 %).
* - **§ 11 GewStG** — Abrundung auf volle 100 €, Freibetrag (24.500 €
* bzw. 5.000 € bzw. 0 € je Rechtsform) und Steuermesszahl 3,5 %
* (ermäßigt 1,96 % bei Hausgewerbetreibenden, § 11 Abs. 3).
* - **§ 16 GewStG** — Anwendung des Hebesatzes der hebeberechtigten
* Gemeinde, mindestens 200 % (§ 16 Abs. 4 Satz 2).
*
* **Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
* Steuerbetragsberechnung):**
*
* - Die Ermittlung des **Gewinns aus Gewerbebetrieb** selbst (§ 7 Satz 1:
* „nach den Vorschriften des EStG oder KStG"). Er geht — wie das
* Einkommen i.S.d. § 8 Abs. 1 KStG im KStG-Modul — als geprüfte
* Eingabe ein. Ebenso die *Höhe* der einzelnen Hinzurechnungs-/
* Kürzungsbeträge, die § 8/§ 9 aus EStG/KStG-Sachverhalten ableiten
* (Nr. 4/5/8/9/10/12 bzw. Nr. 2/2a/2b/3/7/8): das GewStG schreibt nur
* die Verrechnung vor — diese ist hier vollständig und exakt
* implementiert.
* - **Zerlegung (§§ 28–34 GewStG)** auf mehrere Gemeinden (Maßstab
* Arbeitslöhne, Sonderfälle Windenergie/Solar/Speicher). Modelliert
* ist der Regelfall **einer** hebeberechtigten Gemeinde.
* - Verfahren §§ 14a/19–21 (Vorauszahlung, Festsetzung, Zerlegungs-
* bescheid), § 35b (Änderung), abgekürzter Erhebungszeitraum
* (§ 14 Satz 3), Steuerbefreiungen § 3, optierende Gesellschaft
* § 1a KStG (§ 2 Abs. 8).
* - Erweiterte Kürzung § 9 Nr. 1 Satz 2 dem Grunde nach (Antrag,
* Grundstücksunternehmens-Voraussetzungen) — die *Höhe* des auf den
* eigenen Grundbesitz entfallenden Gewerbeertrags geht als Eingabe ein.
*/
/**
* Rechtsform des Steuerschuldners (§ 5 GewStG) — bestimmt den Freibetrag
* nach § 11 Abs. 1 Satz 3 GewStG.
*
* @param NatuerlichePersonPersonengesellschaft Einzelunternehmen oder
* Personengesellschaft (Mitunternehmerschaft)
* — Freibetrag 24.500 € (§ 11 Abs. 1 S. 3 Nr. 1 GewStG).
* @param Kapitalgesellschaft Kapitalgesellschaft / Genossenschaft
* (§ 2 Abs. 2 GewStG) — **kein** Freibetrag.
* @param VereinJuristischePersonOerR Sonstige juristische Personen des
* privaten Rechts, Vereine (§ 2 Abs. 3) und
* juristische Personen des öffentlichen
* Rechts — Freibetrag 5.000 € (§ 11 Abs. 1
* S. 3 Nr. 2 GewStG).
* @Quelle § 11 Absatz 1 Satz 3 GewStG
*/
export enum Rechtsform {
NatuerlichePersonPersonengesellschaft,
Kapitalgesellschaft,
VereinJuristischePersonOerR,
}
/**
* Ermäßigung der Steuermesszahl nach § 11 Abs. 3 GewStG.
*
* @param Keine Regelmesszahl 3,5 % (§ 11 Abs. 2 GewStG).
* @param Hausgewerbetreibender Hausgewerbetreibende und nach dem
* Heimarbeitsgesetz Gleichgestellte —
* ermäßigte Messzahl 1,96 % (§ 11 Abs. 3
* GewStG).
* @Quelle § 11 Absatz 3 GewStG
*/
export enum Messzahlermaessigung {
Keine,
Hausgewerbetreibender,
}
/**
* Hinzurechnungsbeträge nach § 8 GewStG. Die Beträge a–f der Nr. 1 sind
* **vor** der gesetzlichen Gewichtung (20 %/50 %/25 %) und **vor** dem
* Freibetrag/Viertel anzugeben — diese wendet `hinzurechnung8Nr1` an.
* Die Nummern 4, 5, 8, 9, 10, 12 werden in voller Höhe hinzugerechnet
* und sind als die bereits nach EStG/KStG ermittelten Beträge
* einzutragen (Nr. 2/3/6/7/11 GewStG sind weggefallen).
*
* @param entgelteSchulden § 8 Nr. 1 Buchst. a: Entgelte für Schulden
* (Zinsen, Skonti, Diskontbeträge), 100 %.
* @param rentenDauerndeLasten § 8 Nr. 1 Buchst. b: Renten und dauernde
* Lasten, 100 %.
* @param gewinnanteileStillerGesellschafter § 8 Nr. 1 Buchst. c:
* Gewinnanteile des stillen Gesellschafters,
* 100 %.
* @param mietePachtBeweglich § 8 Nr. 1 Buchst. d: Miet-/Pachtzinsen
* (inkl. Leasing) für bewegliche WG des
* Anlagevermögens — geht zu einem Fünftel ein.
* @param mietePachtUnbeweglich § 8 Nr. 1 Buchst. e: Miet-/Pachtzinsen für
* unbewegliche WG des Anlagevermögens — geht
* zur Hälfte ein.
* @param aufwendungenRechteUeberlassung § 8 Nr. 1 Buchst. f: Aufwendungen
* für zeitlich befristete Rechteüberlassung —
* geht zu einem Viertel ein.
* @param gewinnanteilePhgKgaa § 8 Nr. 4: Gewinnanteile an persönlich
* haftende Gesellschafter einer KGaA, 100 %.
* @param steuerfreieDividenden § 8 Nr. 5: nach § 3 Nr. 40 EStG / § 8b
* KStG außer Ansatz gebliebene Gewinnanteile
* (Streubesitz), 100 %.
* @param verlustanteileMitunternehmerschaft § 8 Nr. 8: Anteile am Verlust
* einer Mitunternehmerschaft, 100 %.
* @param ausgaben9Abs1Nr2KStG § 8 Nr. 9: Ausgaben i.S.d. § 9 Abs. 1
* Nr. 2 KStG (abziehbare Zuwendungen), 100 %.
* @param gewinnminderungenTeilwert § 8 Nr. 10: Gewinnminderungen durch
* Teilwertansatz/Veräußerung von
* Körperschaftsanteilen, 100 %.
* @param auslaendischeSteuern § 8 Nr. 12: nach § 34c EStG abgezogene
* ausländische Steuern, 100 %.
* @Quelle § 8 GewStG
*/
export class Hinzurechnungen8 {
constructor(
readonly entgelteSchulden: EuroCent,
readonly rentenDauerndeLasten: EuroCent,
readonly gewinnanteileStillerGesellschafter: EuroCent,
readonly mietePachtBeweglich: EuroCent,
readonly mietePachtUnbeweglich: EuroCent,
readonly aufwendungenRechteUeberlassung: EuroCent,
readonly gewinnanteilePhgKgaa: EuroCent,
readonly steuerfreieDividenden: EuroCent,
readonly verlustanteileMitunternehmerschaft: EuroCent,
readonly ausgaben9Abs1Nr2KStG: EuroCent,
readonly gewinnminderungenTeilwert: EuroCent,
readonly auslaendischeSteuern: EuroCent,
) {}
}
/**
* Kürzungsbeträge nach § 9 GewStG. Die Spenden-Begrenzung (Nr. 5) und
* die Wahl zwischen einfacher und erweiterter Grundbesitzkürzung (Nr. 1)
* werden von den Funktionen angewandt; alle übrigen Nummern werden in
* der angegebenen Höhe abgezogen.
*
* @param grundsteuerBetriebsgrundbesitz § 9 Nr. 1 Satz 1: im
* Erhebungszeitraum als Betriebsausgabe
* erfasste Grundsteuer für zum
* Betriebsvermögen gehörenden Grundbesitz.
* @param erweiterteKuerzungBeantragt § 9 Nr. 1 Satz 2: Antrag auf
* erweiterte Kürzung bei Grundstücks-
* unternehmen (tritt an die Stelle von
* Satz 1).
* @param erweiterteKuerzungGrundbesitzertrag § 9 Nr. 1 Satz 2: Teil des
* Gewerbeertrags, der auf die Verwaltung und
* Nutzung des eigenen Grundbesitzes entfällt
* (extern ermittelt; nur bei Antrag).
* @param gewinnanteileMitunternehmerschaft § 9 Nr. 2: Anteile am Gewinn
* einer Mitunternehmerschaft.
* @param schachteldividendenInland § 9 Nr. 2a: Gewinne aus Anteilen an
* inländischer Kapitalgesellschaft bei
* Beteiligung ≥ 15 % zu Beginn des EZ.
* @param kgaaGewinnanteile § 9 Nr. 2b: nach § 8 Nr. 4 dem
* Gewerbeertrag einer KGaA hinzugerechnete
* Gewinnanteile.
* @param auslandsbetriebsstaette § 9 Nr. 3: Teil des Gewerbeertrags, der
* auf eine nicht im Inland belegene
* Betriebsstätte entfällt.
* @param geleisteteSpenden § 9 Nr. 5: aus Betriebsmitteln geleistete
* Zuwendungen für steuerbegünstigte Zwecke
* (vor Höchstbetragsbegrenzung).
* @param umsaetze § 9 Nr. 5: Summe der gesamten Umsätze
* (Bemessung des 4-‰-Höchstsatzes).
* @param loehneUndGehaelter § 9 Nr. 5: im Wirtschaftsjahr aufgewendete
* Löhne und Gehälter (Bemessung des
* 4-‰-Höchstsatzes).
* @param schachteldividendenAuslandNr7 § 9 Nr. 7: Gewinne aus Anteilen
* an einer Kapitalgesellschaft außerhalb des
* Geltungsbereichs, Beteiligung ≥ 15 %.
* @param schachteldividendenDbaNr8 § 9 Nr. 8: nach DBA befreite Gewinne
* aus Anteilen an einer ausländischen
* Gesellschaft (Mindestbeteiligung).
* @Quelle § 9 GewStG
*/
export class Kuerzungen9 {
constructor(
readonly grundsteuerBetriebsgrundbesitz: EuroCent,
readonly erweiterteKuerzungBeantragt: boolean,
readonly erweiterteKuerzungGrundbesitzertrag: EuroCent,
readonly gewinnanteileMitunternehmerschaft: EuroCent,
readonly schachteldividendenInland: EuroCent,
readonly kgaaGewinnanteile: EuroCent,
readonly auslandsbetriebsstaette: EuroCent,
readonly geleisteteSpenden: EuroCent,
readonly umsaetze: EuroCent,
readonly loehneUndGehaelter: EuroCent,
readonly schachteldividendenAuslandNr7: EuroCent,
readonly schachteldividendenDbaNr8: EuroCent,
) {}
}
/**
* Eingaben eines Gewerbesteuerfalls für **eine** hebeberechtigte
* Gemeinde (Regelfall ohne Zerlegung).
*
* @param gewinnAusGewerbebetrieb § 7 Satz 1 GewStG: der nach EStG/KStG
* ermittelte Gewinn aus Gewerbebetrieb
* (extern ermittelt; Bemessungsbasis vor
* §§ 8/9).
* @param rechtsform Rechtsform des Steuerschuldners — bestimmt
* den Freibetrag nach § 11 GewStG.
* @param erhebungszeitraum Kalenderjahr des Erhebungszeitraums
* (§ 14 Satz 2 GewStG).
* @param hinzurechnungen § 8 GewStG (siehe `Hinzurechnungen8`).
* @param kuerzungen § 9 GewStG (siehe `Kuerzungen9`).
* @param gewerbeverlustVortrag § 10a GewStG: zum Schluss des
* vorangegangenen EZ gesondert festgestellte
* vortragsfähige Fehlbeträge (§ 10a Satz 6).
* @param messzahlermaessigung § 11 Abs. 3 GewStG.
* @param hebesatz Von der Gemeinde bestimmter Hebesatz
* (§ 16 GewStG); mindestens 200 % werden
* angewandt (§ 16 Abs. 4 Satz 2).
* @Quelle § 7 GewStG
*/
export class Gewerbebetrieb {
constructor(
readonly gewinnAusGewerbebetrieb: EuroCent,
readonly rechtsform: Rechtsform,
readonly erhebungszeitraum: Ganzzahl,
readonly hinzurechnungen: Hinzurechnungen8,
readonly kuerzungen: Kuerzungen9,
readonly gewerbeverlustVortrag: EuroCent,
readonly messzahlermaessigung: Messzahlermaessigung,
readonly hebesatz: Prozent,
) {}
}
/**
* Vollständige, prüfbare Berechnungsdokumentation eines
* Gewerbesteuerfalls — jede Zwischengröße der gesetzlichen
* Reihenfolge ist einzeln ausgewiesen, damit die Festsetzung Schritt
* für Schritt gegen das Gesetz auditierbar ist.
*
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb
* (Eingabe, unverändert übernommen).
* @param summeHinzurechnungen § 8 GewStG: Summe aller Hinzurechnungen.
* @param summeKuerzungen § 9 GewStG: Summe aller Kürzungen.
* @param gewerbeertrag § 7/§ 10 GewStG: Gewinn + § 8 − § 9.
* @param verlustabzug § 10a GewStG: tatsächlich abgezogener
* Fehlbetrag (Mindestbesteuerung beachtet).
* @param gewerbeertragNachVerlust § 10a GewStG: maßgebender Gewerbeertrag
* nach Verlustabzug (nicht negativ).
* @param abgerundeterGewerbeertrag § 11 Abs. 1 Satz 3: auf volle 100 €
* abgerundet.
* @param freibetrag § 11 Abs. 1 Satz 3: angewandter Freibetrag.
* @param bemessungsgrundlage Abgerundeter Gewerbeertrag − Freibetrag.
* @param steuermesszahl § 11 Abs. 2/3 GewStG: angewandte Messzahl.
* @param steuermessbetrag § 11 GewStG: Bemessungsgrundlage × Messzahl.
* @param angewandterHebesatz § 16 GewStG: angewandter Hebesatz
* (mindestens 200 %).
* @param gewerbesteuer § 16 GewStG: Steuermessbetrag × Hebesatz.
* @Quelle § 7 GewStG
*/
export class GewerbesteuerErgebnis {
constructor(
readonly gewinn: EuroCent,
readonly summeHinzurechnungen: EuroCent,
readonly summeKuerzungen: EuroCent,
readonly gewerbeertrag: EuroCent,
readonly verlustabzug: EuroCent,
readonly gewerbeertragNachVerlust: EuroCent,
readonly abgerundeterGewerbeertrag: EuroCent,
readonly freibetrag: EuroCent,
readonly bemessungsgrundlage: EuroCent,
readonly steuermesszahl: Prozent,
readonly steuermessbetrag: EuroCent,
readonly angewandterHebesatz: Prozent,
readonly gewerbesteuer: EuroCent,
) {}
}
/**
* Anteil der Hinzurechnung nach § 8 Nr. 1 GewStG: „Ein Viertel der
* Summe" der Finanzierungsanteile a–f wird hinzugerechnet, soweit die
* Summe den Freibetrag übersteigt.
* @Quelle § 8 Nummer 1 GewStG
*/
export const ANTEIL_8_1: Prozent = Prozent.von(FinDslNumber.prozent("0.25"));
/**
* Freibetrag der Finanzierungs-Hinzurechnung: erst der **200.000 €
* übersteigende** Teil der gewichteten Summe a–f wird zu einem Viertel
* hinzugerechnet (§ 8 Nr. 1 letzter Halbsatz GewStG).
* @Quelle § 8 Nummer 1 GewStG
*/
export const HINZURECHNUNG_FREIBETRAG_8_1: EuroCent = EuroCent.von(FinDslNumber.dezimal("200000.00").withMoneyAnnotation("EuroCent", "Konstante \"HINZURECHNUNG_FREIBETRAG_8_1\""));
/**
* Anteil der Miet-/Pachtzinsen (einschl. Leasingraten) für **bewegliche**
* Wirtschaftsgüter des Anlagevermögens: ein Fünftel
* (§ 8 Nr. 1 Buchst. d GewStG).
* @Quelle § 8 Nummer 1 Buchstabe d GewStG
*/
export const ANTEIL_BEWEGLICH_8_1D: Prozent = Prozent.von(FinDslNumber.prozent("0.2"));
/**
* Anteil der Miet-/Pachtzinsen für **unbewegliche** Wirtschaftsgüter des
* Anlagevermögens: die Hälfte (§ 8 Nr. 1 Buchst. e GewStG).
* @Quelle § 8 Nummer 1 Buchstabe e GewStG
*/
export const ANTEIL_UNBEWEGLICH_8_1E: Prozent = Prozent.von(FinDslNumber.prozent("0.5"));
/**
* Anteil der Aufwendungen für die zeitlich befristete Überlassung von
* Rechten (Konzessionen, Lizenzen): ein Viertel
* (§ 8 Nr. 1 Buchst. f GewStG).
* @Quelle § 8 Nummer 1 Buchstabe f GewStG
*/
export const ANTEIL_RECHTE_8_1F: Prozent = Prozent.von(FinDslNumber.prozent("0.25"));
/**
* Spenden-Höchstsatz I (§ 9 Nr. 5 Satz 1 GewStG): 20 % des um die
* Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb.
* @Quelle § 9 Nummer 5 GewStG
*/
export const SPENDEN_SATZ_GEWINN_9_5: Prozent = Prozent.von(FinDslNumber.prozent("0.2"));
/**
* Spenden-Höchstsatz II (§ 9 Nr. 5 Satz 1 GewStG): 4 Promille der Summe
* der gesamten Umsätze und der im Wirtschaftsjahr aufgewendeten Löhne
* und Gehälter. 4 ‰ = 0,4 %.
* @Quelle § 9 Nummer 5 GewStG
*/
export const SPENDEN_PROMILLE_9_5: Prozent = Prozent.von(FinDslNumber.prozent("0.004"));
/**
* Sockelbetrag des Verlustabzugs: der maßgebende Gewerbeertrag wird bis
* zu **1 Mio. €** ungekürzt um Fehlbeträge gemindert
* (§ 10a Satz 1 GewStG).
* @Quelle § 10a Satz 1 GewStG
*/
export const VERLUST_SOCKEL_10A: EuroCent = EuroCent.von(FinDslNumber.dezimal("1000000.00").withMoneyAnnotation("EuroCent", "Konstante \"VERLUST_SOCKEL_10A\""));
/**
* Mindestbesteuerungsquote: der 1 Mio. € übersteigende maßgebende
* Gewerbeertrag ist nur bis zu **60 %** um Fehlbeträge zu kürzen
* (§ 10a Satz 2 GewStG).
* @Quelle § 10a Satz 2 GewStG
*/
export const VERLUST_QUOTE_10A: Prozent = Prozent.von(FinDslNumber.prozent("0.6"));
/**
* Abrundungsstufe: der Gewerbeertrag ist auf volle **100 €** nach unten
* abzurunden (§ 11 Abs. 1 Satz 3 GewStG).
* @Quelle § 11 Absatz 1 Satz 3 GewStG
*/
export const ABRUNDUNG_11: EuroCent = EuroCent.von(FinDslNumber.dezimal("100.00").withMoneyAnnotation("EuroCent", "Konstante \"ABRUNDUNG_11\""));
/**
* Freibetrag bei **natürlichen Personen und Personengesellschaften**:
* 24.500 €, höchstens in Höhe des abgerundeten Gewerbeertrags
* (§ 11 Abs. 1 Satz 3 Nr. 1 GewStG).
* @Quelle § 11 Absatz 1 Satz 3 Nummer 1 GewStG
*/
export const FREIBETRAG_NAT_PERSON_11: EuroCent = EuroCent.von(FinDslNumber.dezimal("24500.00").withMoneyAnnotation("EuroCent", "Konstante \"FREIBETRAG_NAT_PERSON_11\""));
/**
* Freibetrag bei sonstigen juristischen Personen des privaten Rechts und
* Vereinen (§ 2 Abs. 3), Unternehmen i.S.d. § 3 Nr. 5/6/… sowie
* juristischen Personen des öffentlichen Rechts: 5.000 €, höchstens in
* Höhe des abgerundeten Gewerbeertrags (§ 11 Abs. 1 Satz 3 Nr. 2 GewStG).
* @Quelle § 11 Absatz 1 Satz 3 Nummer 2 GewStG
*/
export const FREIBETRAG_VEREIN_11: EuroCent = EuroCent.von(FinDslNumber.dezimal("5000.00").withMoneyAnnotation("EuroCent", "Konstante \"FREIBETRAG_VEREIN_11\""));
/**
* Steuermesszahl für den Gewerbeertrag: **3,5 %** (§ 11 Abs. 2 GewStG).
* @Quelle § 11 Absatz 2 GewStG
*/
export const STEUERMESSZAHL_11: Prozent = Prozent.von(FinDslNumber.prozent("0.035"));
/**
* Ermäßigte Steuermesszahl für Hausgewerbetreibende und Gleichgestellte:
* die Messzahl ermäßigt sich auf **56 %** von 3,5 %, also **1,96 %**
* (§ 11 Abs. 3 GewStG).
* @Quelle § 11 Absatz 3 GewStG
*/
export const STEUERMESSZAHL_HAUSGEWERBE_11_3: Prozent = Prozent.von(FinDslNumber.prozent("0.0196"));
/**
* Mindest-Hebesatz: beträgt 200 %, wenn die Gemeinde keinen höheren
* Hebesatz bestimmt hat (§ 16 Abs. 4 Satz 2 GewStG).
* @Quelle § 16 Absatz 4 Satz 2 GewStG
*/
export const MINDEST_HEBESATZ_16: Prozent = Prozent.von(FinDslNumber.prozent("2"));
/**
* Frühester von diesem Modul abgebildeter Erhebungszeitraum. Die hier
* implementierte Fassung gilt insbesondere für § 9 Nr. 1 Satz 1
* (Grundsteuer-Fassung) erstmals für den Erhebungszeitraum 2025
* (§ 36 Abs. 4b Satz 1 GewStG).
* @Quelle § 36 Absatz 4b GewStG
*/
export const FRUEHESTER_EZ: Ganzzahl = Ganzzahl.von(FinDslNumber.ganzzahl("2025"));
/**
* Hinzurechnung nach **§ 8 Nr. 1 GewStG**: Ein Viertel der Summe aus
* den Finanzierungsanteilen a–f, soweit die Summe **200.000 €
* übersteigt**. Buchst. a–c gehen zu 100 %, Buchst. d (bewegliche WG)
* zu einem Fünftel, Buchst. e (unbewegliche WG) zur Hälfte, Buchst. f
* (Rechteüberlassung) zu einem Viertel in die Summe ein. Liegt die
* gewichtete Summe ≤ 200.000 €, ist die Hinzurechnung nach Nr. 1 = 0.
*
* @param h Hinzurechnungsbeträge (siehe `Hinzurechnungen8`).
* @returns Hinzurechnungsbetrag nach § 8 Nr. 1 GewStG.
* @Quelle § 8 Nummer 1 GewStG
*/
export function hinzurechnung8Nr1(h: Hinzurechnungen8): EuroCent {
const gewichteteSumme: FinDslNumber = h.entgelteSchulden.add(h.rentenDauerndeLasten).add(h.gewinnanteileStillerGesellschafter).add(ANTEIL_BEWEGLICH_8_1D.mul(h.mietePachtBeweglich).cast("EuroCent")).add(ANTEIL_UNBEWEGLICH_8_1E.mul(h.mietePachtUnbeweglich).cast("EuroCent")).add(ANTEIL_RECHTE_8_1F.mul(h.aufwendungenRechteUeberlassung).cast("EuroCent")).withMoneyAnnotation("EuroCent", "var \"gewichteteSumme\"");
const uebersteigend: FinDslNumber = gewichteteSumme.sub(HINZURECHNUNG_FREIBETRAG_8_1).mindestens(FinDslNumber.dezimal("0.00")).withMoneyAnnotation("EuroCent", "var \"uebersteigend\"");
const nr1: FinDslNumber = ANTEIL_8_1.mul(uebersteigend).cast("EuroCent").withMoneyAnnotation("EuroCent", "var \"nr1\"");
return EuroCent.von(nr1);
}
/**
* Summe der Hinzurechnungen nach **§ 8 GewStG**: der Betrag nach Nr. 1
* zuzüglich der in voller Höhe hinzuzurechnenden Nummern 4, 5, 8, 9, 10
* und 12 (Nr. 2/3/6/7/11 GewStG sind weggefallen).
*
* @param h Hinzurechnungsbeträge (siehe `Hinzurechnungen8`).
* @returns Summe der Hinzurechnungen nach § 8 GewStG.
* @Quelle § 8 GewStG
*/
export function summeHinzurechnungen8(h: Hinzurechnungen8): EuroCent {
return EuroCent.von(hinzurechnung8Nr1(h).add(h.gewinnanteilePhgKgaa).add(h.steuerfreieDividenden).add(h.verlustanteileMitunternehmerschaft).add(h.ausgaben9Abs1Nr2KStG).add(h.gewinnminderungenTeilwert).add(h.auslaendischeSteuern));
}
/**
* Höchstbetrag der Spenden-Kürzung nach **§ 9 Nr. 5 Satz 1 GewStG**:
* der höhere Betrag aus
* - 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus
* Gewerbebetrieb und
* - 4 ‰ (0,4 %) der Summe aus den gesamten Umsätzen und den im
* Wirtschaftsjahr aufgewendeten Löhnen und Gehältern.
*
* Ein negativer „20 %"-Wert (bei Verlust) wird durch die Maximum-Bildung
* mit dem nicht-negativen 4-‰-Wert bzw. die Nicht-negativ-Kappung
* abgefangen.
*
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
* @param hinzurechnung8Nr9 § 8 Nr. 9: erhöht die 20-%-Bemessung.
* @param umsaetze Summe der gesamten Umsätze.
* @param loehneUndGehaelter Aufgewendete Löhne und Gehälter.
* @returns Höchstbetrag der nach § 9 Nr. 5 abziehbaren Spenden.
* @Quelle § 9 Nummer 5 GewStG
*/
export function spendenHoechstbetrag9Nr5(gewinn: EuroCent, hinzurechnung8Nr9: EuroCent, umsaetze: EuroCent, loehneUndGehaelter: EuroCent): EuroCent {
const nachGewinn: FinDslNumber = SPENDEN_SATZ_GEWINN_9_5.mul(gewinn.add(hinzurechnung8Nr9)).cast("EuroCent").withMoneyAnnotation("EuroCent", "var \"nachGewinn\"");
const nachUmsatzLohn: FinDslNumber = SPENDEN_PROMILLE_9_5.mul(umsaetze.add(loehneUndGehaelter)).cast("EuroCent").withMoneyAnnotation("EuroCent", "var \"nachUmsatzLohn\"");
return EuroCent.von(nachGewinn.mindestens(nachUmsatzLohn).mindestens(FinDslNumber.dezimal("0.00")));
}
/**
* Tatsächlich abziehbare Spenden-Kürzung nach § 9 Nr. 5 GewStG: die
* geleisteten Zuwendungen, höchstens jedoch der Höchstbetrag nach
* `spendenHoechstbetrag9Nr5`.
*
* @param k Kürzungsbeträge (siehe `Kuerzungen9`).
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
* @param hinzurechnung8Nr9 § 8 Nr. 9 (erhöht die 20-%-Bemessung).
* @returns Abziehbare Spenden nach § 9 Nr. 5 GewStG.
* @Quelle § 9 Nummer 5 GewStG
*/
export function kuerzung9Nr5(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent {
return EuroCent.von(k.geleisteteSpenden.hoechstens(spendenHoechstbetrag9Nr5(EuroCent.von(gewinn), EuroCent.von(hinzurechnung8Nr9), EuroCent.von(k.umsaetze), EuroCent.von(k.loehneUndGehaelter))));
}
/**
* Kürzung nach **§ 9 Nr. 1 GewStG**: regulär die als Betriebsausgabe
* erfasste Grundsteuer für Betriebsgrundbesitz (Satz 1). Auf Antrag
* tritt bei Grundstücksunternehmen **an deren Stelle** die erweiterte
* Kürzung um den auf die Verwaltung/Nutzung des eigenen Grundbesitzes
* entfallenden Teil des Gewerbeertrags (Satz 2) — die beiden Kürzungen
* sind Alternativen, nicht kumulativ.
*
* @param k Kürzungsbeträge (siehe `Kuerzungen9`).
* @returns Kürzungsbetrag nach § 9 Nr. 1 GewStG.
* @Quelle § 9 Nummer 1 GewStG
*/
export function kuerzung9Nr1(k: Kuerzungen9): EuroCent {
if (k.erweiterteKuerzungBeantragt) {
return EuroCent.von(k.erweiterteKuerzungGrundbesitzertrag);
}
return EuroCent.von(k.grundsteuerBetriebsgrundbesitz);
}
/**
* Summe der Kürzungen nach **§ 9 GewStG**: Nr. 1 (einfach oder
* erweitert), die Beteiligungs-/Betriebsstätten-Kürzungen Nr. 2, 2a,
* 2b, 3, 7 und 8 sowie die begrenzte Spenden-Kürzung Nr. 5.
*
* @param k Kürzungsbeträge (siehe `Kuerzungen9`).
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb (für § 9 Nr. 5).
* @param hinzurechnung8Nr9 § 8 Nr. 9 (für die § 9 Nr. 5-Bemessung).
* @returns Summe der Kürzungen nach § 9 GewStG.
* @Quelle § 9 GewStG
*/
export function summeKuerzungen9(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent {
return EuroCent.von(kuerzung9Nr1(k).add(k.gewinnanteileMitunternehmerschaft).add(k.schachteldividendenInland).add(k.kgaaGewinnanteile).add(k.auslandsbetriebsstaette).add(kuerzung9Nr5(k, EuroCent.von(gewinn), EuroCent.von(hinzurechnung8Nr9))).add(k.schachteldividendenAuslandNr7).add(k.schachteldividendenDbaNr8));
}
/**
* Gewerbeertrag nach **§ 7 Satz 1 i.V.m. § 10 GewStG**: der Gewinn aus
* Gewerbebetrieb, vermehrt um die Hinzurechnungen nach § 8 und
* vermindert um die Kürzungen nach § 9. Kann negativ sein (Fehlbetrag);
* die steuerliche Auswirkung regelt der Verlustabzug bzw. die
* Steuerfestsetzung, nicht diese Größe.
*
* @param gewinn § 7 Satz 1: Gewinn aus Gewerbebetrieb.
* @param h Hinzurechnungen (§ 8 GewStG).
* @param k Kürzungen (§ 9 GewStG).
* @returns Gewerbeertrag (§ 7/§ 10 GewStG), ggf. negativ.
* @Quelle § 7 GewStG
*/
export function gewerbeertrag(gewinn: EuroCent, h: Hinzurechnungen8, k: Kuerzungen9): EuroCent {
return EuroCent.von(gewinn.add(summeHinzurechnungen8(h)).sub(summeKuerzungen9(k, EuroCent.von(gewinn), EuroCent.von(h.ausgaben9Abs1Nr2KStG))));
}
/**
* Höchstens abziehbarer Fehlbetrag nach **§ 10a Sätze 1, 2 GewStG**
* (Mindestbesteuerung): bei einem maßgebenden Gewerbeertrag bis
* 1 Mio. € ist der gesamte Gewerbeertrag verrechenbar; der 1 Mio. €
* übersteigende Teil nur zu 60 %. Bei einem Gewerbeertrag ≤ 0 ist kein
* Verlustabzug möglich (es gibt keinen positiven Ertrag zu kürzen).
*
* @param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
* @returns Obergrenze des im Erhebungszeitraum verrechenbaren
* Fehlbetrags.
* @Quelle § 10a GewStG
*/
export function verlustVerrechnungsobergrenze10a(gewerbeertrag: EuroCent): EuroCent {
if (gewerbeertrag.compareValue(FinDslNumber.dezimal("0.00")) <= 0) {
return EuroCent.von(FinDslNumber.dezimal("0.00"));
}
if (gewerbeertrag.compareValue(VERLUST_SOCKEL_10A) <= 0) {
return EuroCent.von(gewerbeertrag);
}
return EuroCent.von(VERLUST_SOCKEL_10A.add(VERLUST_QUOTE_10A.mul(gewerbeertrag.sub(VERLUST_SOCKEL_10A)).cast("EuroCent")));
}
/**
* Tatsächlich abgezogener Fehlbetrag nach **§ 10a GewStG**: der
* vortragsfähige Fehlbetrag, höchstens jedoch die Verrechnungsobergrenze
* nach Sätzen 1 und 2.
*
* @param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
* @param fehlbetrag Gesondert festgestellter vortragsfähiger
* Fehlbetrag der Vorjahre (§ 10a Satz 6).
* @returns Im Erhebungszeitraum abgezogener Fehlbetrag.
* @Quelle § 10a GewStG
*/
export function verlustabzug10a(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent {
return EuroCent.von(fehlbetrag.hoechstens(verlustVerrechnungsobergrenze10a(EuroCent.von(gewerbeertrag))));
}
/**
* Maßgebender Gewerbeertrag **nach** dem Verlustabzug des § 10a GewStG.
* Durch die Verrechnungsobergrenze ist das Ergebnis nie negativ.
*
* @param gewerbeertrag Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG).
* @param fehlbetrag Vortragsfähiger Fehlbetrag der Vorjahre.
* @returns Gewerbeertrag nach Verlustabzug (≥ 0).
* @Quelle § 10a GewStG
*/
export function gewerbeertragNachVerlust(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent {
return EuroCent.von(gewerbeertrag.sub(verlustabzug10a(EuroCent.von(gewerbeertrag), EuroCent.von(fehlbetrag))));
}
/**
* Roher Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG** je Rechtsform —
* **vor** der Begrenzung „höchstens in Höhe des abgerundeten
* Gewerbeertrags": 24.500 € (natürliche Personen/Personengesellschaften,
* Nr. 1), 5.000 € (Vereine/jur. Personen öR, Nr. 2), 0 €
* (Kapitalgesellschaften — kein Freibetrag).
*
* @param rechtsform Rechtsform des Steuerschuldners.
* @returns Freibetrag der Rechtsform (vor Höhenbegrenzung).
* @Quelle § 11 Absatz 1 Satz 3 GewStG
*/
export function freibetragRoh11(rechtsform: Rechtsform): EuroCent {
if (rechtsform === Rechtsform.NatuerlichePersonPersonengesellschaft) {
return EuroCent.von(FREIBETRAG_NAT_PERSON_11);
}
if (rechtsform === Rechtsform.VereinJuristischePersonOerR) {
return EuroCent.von(FREIBETRAG_VEREIN_11);
}
if (rechtsform === Rechtsform.Kapitalgesellschaft) {
return EuroCent.von(FinDslNumber.dezimal("0.00"));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* Anzuwendender Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG**: der
* Freibetrag der Rechtsform, höchstens jedoch in Höhe des abgerundeten
* Gewerbeertrags (der Freibetrag darf keinen negativen Messbetrag
* erzeugen).
*
* @param rechtsform Rechtsform des Steuerschuldners.
* @param abgerundeterGewerbeertrag Auf 100 € abgerundeter Gewerbeertrag.
* @returns Anzuwendender Freibetrag.
* @Quelle § 11 Absatz 1 Satz 3 GewStG
*/
export function freibetrag11(rechtsform: Rechtsform, abgerundeterGewerbeertrag: EuroCent): EuroCent {
return EuroCent.von(freibetragRoh11(rechtsform).hoechstens(abgerundeterGewerbeertrag.mindestens(FinDslNumber.dezimal("0.00"))));
}
/**
* Anzuwendende Steuermesszahl nach **§ 11 Abs. 2/3 GewStG**: regulär
* 3,5 %; bei Hausgewerbetreibenden und Gleichgestellten ermäßigt auf
* 1,96 % (= 56 % von 3,5 %, § 11 Abs. 3 GewStG).
*
* @param ermaessigung Messzahl-Ermäßigung nach § 11 Abs. 3 GewStG.
* @returns Anzuwendende Steuermesszahl.
* @Quelle § 11 Absatz 2 GewStG
*/
export function steuermesszahl11(ermaessigung: Messzahlermaessigung): Prozent {
if (ermaessigung === Messzahlermaessigung.Keine) {
return Prozent.von(STEUERMESSZAHL_11);
}
if (ermaessigung === Messzahlermaessigung.Hausgewerbetreibender) {
return Prozent.von(STEUERMESSZAHL_HAUSGEWERBE_11_3);
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* Steuermessbetrag nach **§ 11 GewStG**: die um den Freibetrag
* verminderte, auf volle 100 € abgerundete Bemessungsgrundlage,
* multipliziert mit der Steuermesszahl.
*
* @param abgerundeterGewerbeertrag § 11 Abs. 1 Satz 3.
* @param freibetrag § 11 Abs. 1 Satz 3 (anzuwendender Freibetrag).
* @param messzahl § 11 Abs. 2/3 (anzuwendende Steuermesszahl).
* @returns Steuermessbetrag (§ 11 GewStG).
* @Quelle § 11 GewStG
*/
export function steuermessbetrag11(abgerundeterGewerbeertrag: EuroCent, freibetrag: EuroCent, messzahl: Prozent): EuroCent {
return EuroCent.von(messzahl.mul(abgerundeterGewerbeertrag.sub(freibetrag)).cast("EuroCent"));
}
/**
* Anzuwendender Hebesatz nach **§ 16 Abs. 4 Satz 2 GewStG**: der von der
* Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde
* keinen höheren bestimmt, beträgt er 200 %).
*
* @param hebesatz Von der Gemeinde bestimmter Hebesatz.
* @returns Anzuwendender Hebesatz (≥ 200 %).
* @Quelle § 16 Absatz 4 Satz 2 GewStG
*/
export function angewandterHebesatz16(hebesatz: Prozent): Prozent {
if (hebesatz.compareValue(MINDEST_HEBESATZ_16) < 0) {
return Prozent.von(MINDEST_HEBESATZ_16);
}
return Prozent.von(hebesatz);
}
/**
* Festzusetzende Gewerbesteuer nach **§ 16 Abs. 1 GewStG**: der
* Steuermessbetrag, multipliziert mit dem anzuwendenden Hebesatz.
*
* @param steuermessbetrag § 11 GewStG.
* @param hebesatz Anzuwendender Hebesatz (§ 16 GewStG).
* @returns Festzusetzende Gewerbesteuer.
* @Quelle § 16 Absatz 1 GewStG
*/
export function gewerbesteuer16(steuermessbetrag: EuroCent, hebesatz: Prozent): EuroCent {
return EuroCent.von(steuermessbetrag.mul(hebesatz).cast("EuroCent"));
}
/**
* Vollständige Festsetzung der Gewerbesteuer eines Steuerfalls in der
* gesetzlichen Reihenfolge: § 7 Satz 1 (Gewinn) → § 8 (Hinzurechnungen)
* → § 9 (Kürzungen) → § 7/§ 10 (Gewerbeertrag) → § 10a (Verlustabzug,
* Mindestbesteuerung) → § 11 Abs. 1 Satz 3 (Abrundung, Freibetrag) →
* § 11 Abs. 2/3 (Steuermesszahl, Messbetrag) → § 16 (Hebesatz).
* Liefert alle Zwischengrößen für die Audit-Vorlage.
*
* Ist der maßgebende Gewerbeertrag nach Verlustabzug **0 oder negativ**,
* entsteht kein Steuermessbetrag und keine Gewerbesteuer (alle
* nachfolgenden Größen sind 0); ein Verlustvortrag regelt § 10a, der
* hier nicht fortgeschrieben wird.
*
* Erhebungszeiträume **vor 2025** werden bewusst nicht berechnet:
* § 9 Nr. 1 Satz 1 (Grundsteuer-Fassung) gilt erst ab EZ 2025
* (§ 36 Abs. 4b Satz 1 GewStG) — ein begründeter, nicht abfangbarer
* Abbruch macht diese Konstellation im Audit sichtbar.
*
* @param betrieb Eingaben des Steuerfalls (siehe `Gewerbebetrieb`).
* @returns Vollständig dokumentiertes Berechnungsergebnis.
* @Quelle § 7 GewStG
*/
export function berechneGewerbesteuer(betrieb: Gewerbebetrieb): GewerbesteuerErgebnis {
const h8: FinDslNumber = summeHinzurechnungen8(betrieb.hinzurechnungen).withMoneyAnnotation("EuroCent", "var \"h8\"");
const k9: FinDslNumber = summeKuerzungen9(betrieb.kuerzungen, EuroCent.von(betrieb.gewinnAusGewerbebetrieb), EuroCent.von(betrieb.hinzurechnungen.ausgaben9Abs1Nr2KStG)).withMoneyAnnotation("EuroCent", "var \"k9\"");
let ertrag: FinDslNumber;
if (betrieb.erhebungszeitraum.compareValue(FRUEHESTER_EZ) < 0) {
throw new FinDslAbort("\n § 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab; \n EZ " + betrieb.erhebungszeitraum.asText() + " ist nicht abgedeckt\n ");
} else {
ertrag = gewerbeertrag(EuroCent.von(betrieb.gewinnAusGewerbebetrieb), betrieb.hinzurechnungen, betrieb.kuerzungen).withMoneyAnnotation("EuroCent", "var \"ertrag\"");
}
const abzug: FinDslNumber = verlustabzug10a(EuroCent.von(ertrag), EuroCent.von(betrieb.gewerbeverlustVortrag)).withMoneyAnnotation("EuroCent", "var \"abzug\"");
const nachVerlust: FinDslNumber = ertrag.sub(abzug).withMoneyAnnotation("EuroCent", "var \"nachVerlust\"");
let abgerundet: FinDslNumber;
if (nachVerlust.compareValue(FinDslNumber.dezimal("0.00")) <= 0) {
abgerundet = FinDslNumber.dezimal("0.00").withMoneyAnnotation("EuroCent", "var \"abgerundet\"");
} else {
abgerundet = nachVerlust.abrundenAuf(ABRUNDUNG_11).withMoneyAnnotation("EuroCent", "var \"abgerundet\"");
}
const fb: FinDslNumber = freibetrag11(betrieb.rechtsform, EuroCent.von(abgerundet)).withMoneyAnnotation("EuroCent", "var \"fb\"");
const messzahl: FinDslNumber = steuermesszahl11(betrieb.messzahlermaessigung);
const bemessung: FinDslNumber = abgerundet.sub(fb).withMoneyAnnotation("EuroCent", "var \"bemessung\"");
const messbetrag: FinDslNumber = steuermessbetrag11(EuroCent.von(abgerundet), EuroCent.von(fb), Prozent.von(messzahl)).withMoneyAnnotation("EuroCent", "var \"messbetrag\"");
const heb: FinDslNumber = angewandterHebesatz16(Prozent.von(betrieb.hebesatz));
const steuer: FinDslNumber = gewerbesteuer16(EuroCent.von(messbetrag), Prozent.von(heb)).withMoneyAnnotation("EuroCent", "var \"steuer\"");
return new GewerbesteuerErgebnis(EuroCent.von(betrieb.gewinnAusGewerbebetrieb), EuroCent.von(h8), EuroCent.von(k9), EuroCent.von(ertrag), EuroCent.von(abzug), EuroCent.von(nachVerlust), EuroCent.von(abgerundet), EuroCent.von(fb), EuroCent.von(bemessung), Prozent.von(messzahl), EuroCent.von(messbetrag), Prozent.von(heb), EuroCent.von(steuer));
}import { describe, it, expect } from 'vitest';
import { FinDslNumber, FinDslAbort, EuroCent, Prozent, Ganzzahl } from './runtime/index.js';
import * as Gewst from './Gewst.js';
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Akzeptanztests — Gewerbesteuer (§§ 7–11, 16 GewStG)
*
* `prüfe`-Blöcke zur Datei `gewerbesteuer`. Alle Sollwerte sind von Hand
* aus dem Gesetzeswortlaut gerechnet (GewStG, Fassung ab EZ 2025):
*
* - § 8 Nr. 1: ¼ der Summe (a–c 100 %, d 1/5, e 1/2, f 1/4), soweit
* über 200.000 €.
* - § 9 Nr. 1: Grundsteuer bzw. erweiterte Kürzung (Antrag, alternativ);
* Nr. 5: Spenden ≤ max(20 % Gewinn; 4 ‰ (Umsatz + Lohn)).
* - § 10a: bis 1 Mio. € voll, darüber 60 % (Mindestbesteuerung).
* - § 11: Abrundung auf 100 €, Freibetrag 24.500/5.000/0 €,
* Messzahl 3,5 % (Hausgewerbe 1,96 %).
* - § 16: Hebesatz, mindestens 200 %.
*
* Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
*/
describe("§ 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)", () => {
it("Summe ≤ 200.000 € → keine Hinzurechnung", () => {
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("100000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("Summe genau 200.000 € → 0 (nur der übersteigende Teil zählt)", () => {
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("200000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("Buchst. a + e: 1.000.000 + ½·400.000 = 1.200.000; ¼·(1.200.000−200.000) = 250.000", () => {
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("400000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("250000.00"))).toBe(true);
});
it("Buchst. d (bewegliche WG, 1/5): 1/5·1.500.000 = 300.000; ¼·(300.000−200.000) = 25.000", () => {
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("1500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("25000.00"))).toBe(true);
});
it("Buchst. f (Rechte, 1/4): 1/4·1.000.000 = 250.000; ¼·(250.000−200.000) = 12.500", () => {
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("12500.00"))).toBe(true);
});
});
describe("§ 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)", () => {
it("Nr. 1 (¼·800.000 = 200.000) + Nr. 4 (50.000) + Nr. 5 (30.000) = 280.000", () => {
expect(Gewst.summeHinzurechnungen8(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("50000.00")), EuroCent.von(FinDslNumber.dezimal("30000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("280000.00"))).toBe(true);
});
it("leere Hinzurechnungen → 0", () => {
expect(Gewst.summeHinzurechnungen8(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
});
describe("§ 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)", () => {
it("20 %·500.000 = 100.000 > 4 ‰·12.000.000 = 48.000 → 100.000", () => {
expect(Gewst.spendenHoechstbetrag9Nr5(EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("10000000.00")), EuroCent.von(FinDslNumber.dezimal("2000000.00"))).equalsValue(FinDslNumber.dezimal("100000.00"))).toBe(true);
});
it("kein Gewinn, 4 ‰·60.000.000 = 240.000 → 240.000", () => {
expect(Gewst.spendenHoechstbetrag9Nr5(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("50000000.00")), EuroCent.von(FinDslNumber.dezimal("10000000.00"))).equalsValue(FinDslNumber.dezimal("240000.00"))).toBe(true);
});
it("§ 8 Nr. 9 erhöht die 20-%-Bemessung: 20 %·(400.000+100.000) = 100.000", () => {
expect(Gewst.spendenHoechstbetrag9Nr5(EuroCent.von(FinDslNumber.dezimal("400000.00")), EuroCent.von(FinDslNumber.dezimal("100000.00")), EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))).equalsValue(FinDslNumber.dezimal("100000.00"))).toBe(true);
});
it("Spenden-Kürzung = min(geleistet, Höchstbetrag): 120.000 gedeckelt auf 100.000", () => {
expect(Gewst.kuerzung9Nr5(new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("0.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("120000.00")), EuroCent.von(FinDslNumber.dezimal("10000000.00")), EuroCent.von(FinDslNumber.dezimal("2000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))).equalsValue(FinDslNumber.dezimal("100000.00"))).toBe(true);
});
it("Spenden unter Höchstbetrag bleiben voll: 30.000", () => {
expect(Gewst.kuerzung9Nr5(new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("0.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("30000.00")), EuroCent.von(FinDslNumber.dezimal("10000000.00")), EuroCent.von(FinDslNumber.dezimal("2000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))).equalsValue(FinDslNumber.dezimal("30000.00"))).toBe(true);
});
});
describe("§ 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)", () => {
it("Satz 1: als Betriebsausgabe erfasste Grundsteuer", () => {
expect(Gewst.kuerzung9Nr1(new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("3000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("3000.00"))).toBe(true);
});
it("Satz 2: erweiterte Kürzung auf Antrag tritt an die Stelle von Satz 1", () => {
expect(Gewst.kuerzung9Nr1(new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("3000.00")), true, EuroCent.von(FinDslNumber.dezimal("50000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("50000.00"))).toBe(true);
});
});
describe("§ 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)", () => {
it("800.000 + 75.000 (§ 8 Nr. 1) − 35.000 (§ 9) = 840.000", () => {
expect(Gewst.gewerbeertrag(EuroCent.von(FinDslNumber.dezimal("800000.00")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("5000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("30000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("840000.00"))).toBe(true);
});
});
describe("§ 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)", () => {
it("GE 3 Mio., Obergrenze = 1 Mio. + 60 %·2 Mio. = 2,2 Mio.", () => {
expect(Gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("3000000.00"))).equalsValue(FinDslNumber.dezimal("2200000.00"))).toBe(true);
});
it("GE ≤ 1 Mio.: voll verrechenbar (Obergrenze = GE)", () => {
expect(Gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("800000.00"))).equalsValue(FinDslNumber.dezimal("800000.00"))).toBe(true);
});
it("GE ≤ 0: kein Verlustabzug", () => {
expect(Gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("50000.00").neg())).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("GE 3 Mio., Fehlbetrag 5 Mio. → Abzug 2,2 Mio., danach 800.000", () => {
expect(Gewst.gewerbeertragNachVerlust(EuroCent.von(FinDslNumber.dezimal("3000000.00")), EuroCent.von(FinDslNumber.dezimal("5000000.00"))).equalsValue(FinDslNumber.dezimal("800000.00"))).toBe(true);
});
it("GE 500.000, Fehlbetrag 200.000 → Abzug 200.000, danach 300.000", () => {
expect(Gewst.verlustabzug10a(EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("200000.00"))).equalsValue(FinDslNumber.dezimal("200000.00"))).toBe(true);
expect(Gewst.gewerbeertragNachVerlust(EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("200000.00"))).equalsValue(FinDslNumber.dezimal("300000.00"))).toBe(true);
});
it("GE 800.000 (≤ 1 Mio.), Fehlbetrag 5 Mio. → Abzug nur 800.000, danach 0", () => {
expect(Gewst.gewerbeertragNachVerlust(EuroCent.von(FinDslNumber.dezimal("800000.00")), EuroCent.von(FinDslNumber.dezimal("5000000.00"))).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
});
describe("§ 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform", () => {
it("natürliche Person/Personengesellschaft → 24.500 €", () => {
expect(Gewst.freibetragRoh11(Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft).equalsValue(FinDslNumber.dezimal("24500.00"))).toBe(true);
});
it("Verein/jur. Person öR → 5.000 €", () => {
expect(Gewst.freibetragRoh11(Gewst.Rechtsform.VereinJuristischePersonOerR).equalsValue(FinDslNumber.dezimal("5000.00"))).toBe(true);
});
it("Kapitalgesellschaft → kein Freibetrag", () => {
expect(Gewst.freibetragRoh11(Gewst.Rechtsform.Kapitalgesellschaft).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("höchstens in Höhe des abgerundeten Gewerbeertrags (10.000 < 24.500)", () => {
expect(Gewst.freibetrag11(Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, EuroCent.von(FinDslNumber.dezimal("10000.00"))).equalsValue(FinDslNumber.dezimal("10000.00"))).toBe(true);
});
it("voller Freibetrag bei hohem Gewerbeertrag", () => {
expect(Gewst.freibetrag11(Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, EuroCent.von(FinDslNumber.dezimal("197000.00"))).equalsValue(FinDslNumber.dezimal("24500.00"))).toBe(true);
});
});
describe("§ 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag", () => {
it("Regelmesszahl 3,5 %", () => {
expect(Gewst.steuermesszahl11(Gewst.Messzahlermaessigung.Keine).equalsValue(FinDslNumber.prozent("0.035"))).toBe(true);
});
it("Hausgewerbetreibende: ermäßigt 1,96 % (= 56 % von 3,5 %)", () => {
expect(Gewst.steuermesszahl11(Gewst.Messzahlermaessigung.Hausgewerbetreibender).equalsValue(FinDslNumber.prozent("0.0196"))).toBe(true);
});
it("(197.000 − 24.500)·3,5 % = 172.500·3,5 % = 6.037,50", () => {
expect(Gewst.steuermessbetrag11(EuroCent.von(FinDslNumber.dezimal("197000.00")), EuroCent.von(FinDslNumber.dezimal("24500.00")), Prozent.von(FinDslNumber.prozent("0.035"))).equalsValue(FinDslNumber.dezimal("6037.50"))).toBe(true);
});
it("Kapitalgesellschaft ohne Freibetrag: 1.000.000·3,5 % = 35.000", () => {
expect(Gewst.steuermessbetrag11(EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), Prozent.von(FinDslNumber.prozent("0.035"))).equalsValue(FinDslNumber.dezimal("35000.00"))).toBe(true);
});
});
describe("§ 16 GewStG — Hebesatz (mindestens 200 %)", () => {
it("Gemeinde-Hebesatz unter 200 % → 200 %", () => {
expect(Gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("1.5"))).equalsValue(FinDslNumber.prozent("2"))).toBe(true);
});
it("genau 200 % bleibt 200 %", () => {
expect(Gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("2"))).equalsValue(FinDslNumber.prozent("2"))).toBe(true);
});
it("höherer Hebesatz bleibt unverändert", () => {
expect(Gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("4.5"))).equalsValue(FinDslNumber.prozent("4.5"))).toBe(true);
});
it("Steuermessbetrag · Hebesatz: 6.037,50 · 400 % = 24.150", () => {
expect(Gewst.gewerbesteuer16(EuroCent.von(FinDslNumber.dezimal("6037.50")), Prozent.von(FinDslNumber.prozent("4"))).equalsValue(FinDslNumber.dezimal("24150.00"))).toBe(true);
});
});
describe("Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)", () => {
it("Personengesellschaft, EZ 2025, Gewinn 200.000, Hebesatz 400 %", () => {
const e: Gewst.GewerbesteuerErgebnis = Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("200000.00")), Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2025")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("100000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("3000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("0.00")), Gewst.Messzahlermaessigung.Keine, Prozent.von(FinDslNumber.prozent("4"))));
expect(e.summeHinzurechnungen.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.summeKuerzungen.equalsValue(FinDslNumber.dezimal("3000.00"))).toBe(true);
expect(e.gewerbeertrag.equalsValue(FinDslNumber.dezimal("197000.00"))).toBe(true);
expect(e.gewerbeertragNachVerlust.equalsValue(FinDslNumber.dezimal("197000.00"))).toBe(true);
expect(e.abgerundeterGewerbeertrag.equalsValue(FinDslNumber.dezimal("197000.00"))).toBe(true);
expect(e.freibetrag.equalsValue(FinDslNumber.dezimal("24500.00"))).toBe(true);
expect(e.steuermessbetrag.equalsValue(FinDslNumber.dezimal("6037.50"))).toBe(true);
expect(e.angewandterHebesatz.equalsValue(FinDslNumber.prozent("4"))).toBe(true);
expect(e.gewerbesteuer.equalsValue(FinDslNumber.dezimal("24150.00"))).toBe(true);
});
it("Kapitalgesellschaft, EZ 2025, Gewinn 1.000.000, Hebesatz 500 %, kein Freibetrag", () => {
const e: Gewst.GewerbesteuerErgebnis = Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("1000000.00")), Gewst.Rechtsform.Kapitalgesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2025")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("0.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("0.00")), Gewst.Messzahlermaessigung.Keine, Prozent.von(FinDslNumber.prozent("5"))));
expect(e.freibetrag.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.bemessungsgrundlage.equalsValue(FinDslNumber.dezimal("1000000.00"))).toBe(true);
expect(e.steuermessbetrag.equalsValue(FinDslNumber.dezimal("35000.00"))).toBe(true);
expect(e.angewandterHebesatz.equalsValue(FinDslNumber.prozent("5"))).toBe(true);
expect(e.gewerbesteuer.equalsValue(FinDslNumber.dezimal("175000.00"))).toBe(true);
});
it("Volle Kette: § 8-Excess + § 9 + § 10a + Hausgewerbe, Hebesatz 410 %", () => {
const e: Gewst.GewerbesteuerErgebnis = Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("800000.00")), Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2025")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("600000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("20000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("10000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("50000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("5000.00")), EuroCent.von(FinDslNumber.dezimal("2000000.00")), EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("100000.00")), Gewst.Messzahlermaessigung.Hausgewerbetreibender, Prozent.von(FinDslNumber.prozent("4.1"))));
expect(e.summeHinzurechnungen.equalsValue(FinDslNumber.dezimal("120000.00"))).toBe(true);
expect(e.summeKuerzungen.equalsValue(FinDslNumber.dezimal("65000.00"))).toBe(true);
expect(e.gewerbeertrag.equalsValue(FinDslNumber.dezimal("855000.00"))).toBe(true);
expect(e.verlustabzug.equalsValue(FinDslNumber.dezimal("100000.00"))).toBe(true);
expect(e.gewerbeertragNachVerlust.equalsValue(FinDslNumber.dezimal("755000.00"))).toBe(true);
expect(e.bemessungsgrundlage.equalsValue(FinDslNumber.dezimal("730500.00"))).toBe(true);
expect(e.steuermesszahl.equalsValue(FinDslNumber.prozent("0.0196"))).toBe(true);
expect(e.steuermessbetrag.equalsValue(FinDslNumber.dezimal("14317.80"))).toBe(true);
expect(e.gewerbesteuer.equalsValue(FinDslNumber.dezimal("58702.98"))).toBe(true);
});
it("Negativer Gewerbeertrag → kein Messbetrag, keine Steuer", () => {
const e: Gewst.GewerbesteuerErgebnis = Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("50000.00")), Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2025")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("100000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("0.00")), Gewst.Messzahlermaessigung.Keine, Prozent.von(FinDslNumber.prozent("2"))));
expect(e.gewerbeertrag.equalsValue(FinDslNumber.dezimal("50000.00").neg())).toBe(true);
expect(e.abgerundeterGewerbeertrag.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.freibetrag.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.steuermessbetrag.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.gewerbesteuer.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("Erhebungszeitraum vor 2025 wird abgelehnt (§ 36 Abs. 4b GewStG)", () => {
expect(() => {
Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("100000.00")), Gewst.Rechtsform.Kapitalgesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2024")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("0.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("0.00")), Gewst.Messzahlermaessigung.Keine, Prozent.von(FinDslNumber.prozent("2"))));
}).toThrow(FinDslAbort);
});
});import { FinDslNumber, FinDslRuntimeError, FinDslAbort, EuroCent, Prozent, Ganzzahl } from './runtime/index.js';
export var Rechtsform = /*#__PURE__*/ function(Rechtsform) {
Rechtsform[Rechtsform["NatuerlichePersonPersonengesellschaft"] = 0] = "NatuerlichePersonPersonengesellschaft";
Rechtsform[Rechtsform["Kapitalgesellschaft"] = 1] = "Kapitalgesellschaft";
Rechtsform[Rechtsform["VereinJuristischePersonOerR"] = 2] = "VereinJuristischePersonOerR";
return Rechtsform;
}({});
export var Messzahlermaessigung = /*#__PURE__*/ function(Messzahlermaessigung) {
Messzahlermaessigung[Messzahlermaessigung["Keine"] = 0] = "Keine";
Messzahlermaessigung[Messzahlermaessigung["Hausgewerbetreibender"] = 1] = "Hausgewerbetreibender";
return Messzahlermaessigung;
}({});
export class Hinzurechnungen8 {
entgelteSchulden;
rentenDauerndeLasten;
gewinnanteileStillerGesellschafter;
mietePachtBeweglich;
mietePachtUnbeweglich;
aufwendungenRechteUeberlassung;
gewinnanteilePhgKgaa;
steuerfreieDividenden;
verlustanteileMitunternehmerschaft;
ausgaben9Abs1Nr2KStG;
gewinnminderungenTeilwert;
auslaendischeSteuern;
constructor(entgelteSchulden, rentenDauerndeLasten, gewinnanteileStillerGesellschafter, mietePachtBeweglich, mietePachtUnbeweglich, aufwendungenRechteUeberlassung, gewinnanteilePhgKgaa, steuerfreieDividenden, verlustanteileMitunternehmerschaft, ausgaben9Abs1Nr2KStG, gewinnminderungenTeilwert, auslaendischeSteuern){
this.entgelteSchulden = entgelteSchulden;
this.rentenDauerndeLasten = rentenDauerndeLasten;
this.gewinnanteileStillerGesellschafter = gewinnanteileStillerGesellschafter;
this.mietePachtBeweglich = mietePachtBeweglich;
this.mietePachtUnbeweglich = mietePachtUnbeweglich;
this.aufwendungenRechteUeberlassung = aufwendungenRechteUeberlassung;
this.gewinnanteilePhgKgaa = gewinnanteilePhgKgaa;
this.steuerfreieDividenden = steuerfreieDividenden;
this.verlustanteileMitunternehmerschaft = verlustanteileMitunternehmerschaft;
this.ausgaben9Abs1Nr2KStG = ausgaben9Abs1Nr2KStG;
this.gewinnminderungenTeilwert = gewinnminderungenTeilwert;
this.auslaendischeSteuern = auslaendischeSteuern;
}
}
export class Kuerzungen9 {
grundsteuerBetriebsgrundbesitz;
erweiterteKuerzungBeantragt;
erweiterteKuerzungGrundbesitzertrag;
gewinnanteileMitunternehmerschaft;
schachteldividendenInland;
kgaaGewinnanteile;
auslandsbetriebsstaette;
geleisteteSpenden;
umsaetze;
loehneUndGehaelter;
schachteldividendenAuslandNr7;
schachteldividendenDbaNr8;
constructor(grundsteuerBetriebsgrundbesitz, erweiterteKuerzungBeantragt, erweiterteKuerzungGrundbesitzertrag, gewinnanteileMitunternehmerschaft, schachteldividendenInland, kgaaGewinnanteile, auslandsbetriebsstaette, geleisteteSpenden, umsaetze, loehneUndGehaelter, schachteldividendenAuslandNr7, schachteldividendenDbaNr8){
this.grundsteuerBetriebsgrundbesitz = grundsteuerBetriebsgrundbesitz;
this.erweiterteKuerzungBeantragt = erweiterteKuerzungBeantragt;
this.erweiterteKuerzungGrundbesitzertrag = erweiterteKuerzungGrundbesitzertrag;
this.gewinnanteileMitunternehmerschaft = gewinnanteileMitunternehmerschaft;
this.schachteldividendenInland = schachteldividendenInland;
this.kgaaGewinnanteile = kgaaGewinnanteile;
this.auslandsbetriebsstaette = auslandsbetriebsstaette;
this.geleisteteSpenden = geleisteteSpenden;
this.umsaetze = umsaetze;
this.loehneUndGehaelter = loehneUndGehaelter;
this.schachteldividendenAuslandNr7 = schachteldividendenAuslandNr7;
this.schachteldividendenDbaNr8 = schachteldividendenDbaNr8;
}
}
export class Gewerbebetrieb {
gewinnAusGewerbebetrieb;
rechtsform;
erhebungszeitraum;
hinzurechnungen;
kuerzungen;
gewerbeverlustVortrag;
messzahlermaessigung;
hebesatz;
constructor(gewinnAusGewerbebetrieb, rechtsform, erhebungszeitraum, hinzurechnungen, kuerzungen, gewerbeverlustVortrag, messzahlermaessigung, hebesatz){
this.gewinnAusGewerbebetrieb = gewinnAusGewerbebetrieb;
this.rechtsform = rechtsform;
this.erhebungszeitraum = erhebungszeitraum;
this.hinzurechnungen = hinzurechnungen;
this.kuerzungen = kuerzungen;
this.gewerbeverlustVortrag = gewerbeverlustVortrag;
this.messzahlermaessigung = messzahlermaessigung;
this.hebesatz = hebesatz;
}
}
export class GewerbesteuerErgebnis {
gewinn;
summeHinzurechnungen;
summeKuerzungen;
gewerbeertrag;
verlustabzug;
gewerbeertragNachVerlust;
abgerundeterGewerbeertrag;
freibetrag;
bemessungsgrundlage;
steuermesszahl;
steuermessbetrag;
angewandterHebesatz;
gewerbesteuer;
constructor(gewinn, summeHinzurechnungen, summeKuerzungen, gewerbeertrag, verlustabzug, gewerbeertragNachVerlust, abgerundeterGewerbeertrag, freibetrag, bemessungsgrundlage, steuermesszahl, steuermessbetrag, angewandterHebesatz, gewerbesteuer){
this.gewinn = gewinn;
this.summeHinzurechnungen = summeHinzurechnungen;
this.summeKuerzungen = summeKuerzungen;
this.gewerbeertrag = gewerbeertrag;
this.verlustabzug = verlustabzug;
this.gewerbeertragNachVerlust = gewerbeertragNachVerlust;
this.abgerundeterGewerbeertrag = abgerundeterGewerbeertrag;
this.freibetrag = freibetrag;
this.bemessungsgrundlage = bemessungsgrundlage;
this.steuermesszahl = steuermesszahl;
this.steuermessbetrag = steuermessbetrag;
this.angewandterHebesatz = angewandterHebesatz;
this.gewerbesteuer = gewerbesteuer;
}
}
export const ANTEIL_8_1 = Prozent.von(FinDslNumber.prozent("0.25"));
export const HINZURECHNUNG_FREIBETRAG_8_1 = EuroCent.von(FinDslNumber.dezimal("200000.00").withMoneyAnnotation("EuroCent", "Konstante \"HINZURECHNUNG_FREIBETRAG_8_1\""));
export const ANTEIL_BEWEGLICH_8_1D = Prozent.von(FinDslNumber.prozent("0.2"));
export const ANTEIL_UNBEWEGLICH_8_1E = Prozent.von(FinDslNumber.prozent("0.5"));
export const ANTEIL_RECHTE_8_1F = Prozent.von(FinDslNumber.prozent("0.25"));
export const SPENDEN_SATZ_GEWINN_9_5 = Prozent.von(FinDslNumber.prozent("0.2"));
export const SPENDEN_PROMILLE_9_5 = Prozent.von(FinDslNumber.prozent("0.004"));
export const VERLUST_SOCKEL_10A = EuroCent.von(FinDslNumber.dezimal("1000000.00").withMoneyAnnotation("EuroCent", "Konstante \"VERLUST_SOCKEL_10A\""));
export const VERLUST_QUOTE_10A = Prozent.von(FinDslNumber.prozent("0.6"));
export const ABRUNDUNG_11 = EuroCent.von(FinDslNumber.dezimal("100.00").withMoneyAnnotation("EuroCent", "Konstante \"ABRUNDUNG_11\""));
export const FREIBETRAG_NAT_PERSON_11 = EuroCent.von(FinDslNumber.dezimal("24500.00").withMoneyAnnotation("EuroCent", "Konstante \"FREIBETRAG_NAT_PERSON_11\""));
export const FREIBETRAG_VEREIN_11 = EuroCent.von(FinDslNumber.dezimal("5000.00").withMoneyAnnotation("EuroCent", "Konstante \"FREIBETRAG_VEREIN_11\""));
export const STEUERMESSZAHL_11 = Prozent.von(FinDslNumber.prozent("0.035"));
export const STEUERMESSZAHL_HAUSGEWERBE_11_3 = Prozent.von(FinDslNumber.prozent("0.0196"));
export const MINDEST_HEBESATZ_16 = Prozent.von(FinDslNumber.prozent("2"));
export const FRUEHESTER_EZ = Ganzzahl.von(FinDslNumber.ganzzahl("2025"));
export function hinzurechnung8Nr1(h) {
const gewichteteSumme = h.entgelteSchulden.add(h.rentenDauerndeLasten).add(h.gewinnanteileStillerGesellschafter).add(ANTEIL_BEWEGLICH_8_1D.mul(h.mietePachtBeweglich).cast("EuroCent")).add(ANTEIL_UNBEWEGLICH_8_1E.mul(h.mietePachtUnbeweglich).cast("EuroCent")).add(ANTEIL_RECHTE_8_1F.mul(h.aufwendungenRechteUeberlassung).cast("EuroCent")).withMoneyAnnotation("EuroCent", "var \"gewichteteSumme\"");
const uebersteigend = gewichteteSumme.sub(HINZURECHNUNG_FREIBETRAG_8_1).mindestens(FinDslNumber.dezimal("0.00")).withMoneyAnnotation("EuroCent", "var \"uebersteigend\"");
const nr1 = ANTEIL_8_1.mul(uebersteigend).cast("EuroCent").withMoneyAnnotation("EuroCent", "var \"nr1\"");
return EuroCent.von(nr1);
}
export function summeHinzurechnungen8(h) {
return EuroCent.von(hinzurechnung8Nr1(h).add(h.gewinnanteilePhgKgaa).add(h.steuerfreieDividenden).add(h.verlustanteileMitunternehmerschaft).add(h.ausgaben9Abs1Nr2KStG).add(h.gewinnminderungenTeilwert).add(h.auslaendischeSteuern));
}
export function spendenHoechstbetrag9Nr5(gewinn, hinzurechnung8Nr9, umsaetze, loehneUndGehaelter) {
const nachGewinn = SPENDEN_SATZ_GEWINN_9_5.mul(gewinn.add(hinzurechnung8Nr9)).cast("EuroCent").withMoneyAnnotation("EuroCent", "var \"nachGewinn\"");
const nachUmsatzLohn = SPENDEN_PROMILLE_9_5.mul(umsaetze.add(loehneUndGehaelter)).cast("EuroCent").withMoneyAnnotation("EuroCent", "var \"nachUmsatzLohn\"");
return EuroCent.von(nachGewinn.mindestens(nachUmsatzLohn).mindestens(FinDslNumber.dezimal("0.00")));
}
export function kuerzung9Nr5(k, gewinn, hinzurechnung8Nr9) {
return EuroCent.von(k.geleisteteSpenden.hoechstens(spendenHoechstbetrag9Nr5(EuroCent.von(gewinn), EuroCent.von(hinzurechnung8Nr9), EuroCent.von(k.umsaetze), EuroCent.von(k.loehneUndGehaelter))));
}
export function kuerzung9Nr1(k) {
if (k.erweiterteKuerzungBeantragt) {
return EuroCent.von(k.erweiterteKuerzungGrundbesitzertrag);
}
return EuroCent.von(k.grundsteuerBetriebsgrundbesitz);
}
export function summeKuerzungen9(k, gewinn, hinzurechnung8Nr9) {
return EuroCent.von(kuerzung9Nr1(k).add(k.gewinnanteileMitunternehmerschaft).add(k.schachteldividendenInland).add(k.kgaaGewinnanteile).add(k.auslandsbetriebsstaette).add(kuerzung9Nr5(k, EuroCent.von(gewinn), EuroCent.von(hinzurechnung8Nr9))).add(k.schachteldividendenAuslandNr7).add(k.schachteldividendenDbaNr8));
}
export function gewerbeertrag(gewinn, h, k) {
return EuroCent.von(gewinn.add(summeHinzurechnungen8(h)).sub(summeKuerzungen9(k, EuroCent.von(gewinn), EuroCent.von(h.ausgaben9Abs1Nr2KStG))));
}
export function verlustVerrechnungsobergrenze10a(gewerbeertrag) {
if (gewerbeertrag.compareValue(FinDslNumber.dezimal("0.00")) <= 0) {
return EuroCent.von(FinDslNumber.dezimal("0.00"));
}
if (gewerbeertrag.compareValue(VERLUST_SOCKEL_10A) <= 0) {
return EuroCent.von(gewerbeertrag);
}
return EuroCent.von(VERLUST_SOCKEL_10A.add(VERLUST_QUOTE_10A.mul(gewerbeertrag.sub(VERLUST_SOCKEL_10A)).cast("EuroCent")));
}
export function verlustabzug10a(gewerbeertrag, fehlbetrag) {
return EuroCent.von(fehlbetrag.hoechstens(verlustVerrechnungsobergrenze10a(EuroCent.von(gewerbeertrag))));
}
export function gewerbeertragNachVerlust(gewerbeertrag, fehlbetrag) {
return EuroCent.von(gewerbeertrag.sub(verlustabzug10a(EuroCent.von(gewerbeertrag), EuroCent.von(fehlbetrag))));
}
export function freibetragRoh11(rechtsform) {
if (rechtsform === 0) {
return EuroCent.von(FREIBETRAG_NAT_PERSON_11);
}
if (rechtsform === 2) {
return EuroCent.von(FREIBETRAG_VEREIN_11);
}
if (rechtsform === 1) {
return EuroCent.von(FinDslNumber.dezimal("0.00"));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
export function freibetrag11(rechtsform, abgerundeterGewerbeertrag) {
return EuroCent.von(freibetragRoh11(rechtsform).hoechstens(abgerundeterGewerbeertrag.mindestens(FinDslNumber.dezimal("0.00"))));
}
export function steuermesszahl11(ermaessigung) {
if (ermaessigung === 0) {
return Prozent.von(STEUERMESSZAHL_11);
}
if (ermaessigung === 1) {
return Prozent.von(STEUERMESSZAHL_HAUSGEWERBE_11_3);
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
export function steuermessbetrag11(abgerundeterGewerbeertrag, freibetrag, messzahl) {
return EuroCent.von(messzahl.mul(abgerundeterGewerbeertrag.sub(freibetrag)).cast("EuroCent"));
}
export function angewandterHebesatz16(hebesatz) {
if (hebesatz.compareValue(MINDEST_HEBESATZ_16) < 0) {
return Prozent.von(MINDEST_HEBESATZ_16);
}
return Prozent.von(hebesatz);
}
export function gewerbesteuer16(steuermessbetrag, hebesatz) {
return EuroCent.von(steuermessbetrag.mul(hebesatz).cast("EuroCent"));
}
export function berechneGewerbesteuer(betrieb) {
const h8 = summeHinzurechnungen8(betrieb.hinzurechnungen).withMoneyAnnotation("EuroCent", "var \"h8\"");
const k9 = summeKuerzungen9(betrieb.kuerzungen, EuroCent.von(betrieb.gewinnAusGewerbebetrieb), EuroCent.von(betrieb.hinzurechnungen.ausgaben9Abs1Nr2KStG)).withMoneyAnnotation("EuroCent", "var \"k9\"");
let ertrag;
if (betrieb.erhebungszeitraum.compareValue(FRUEHESTER_EZ) < 0) {
throw new FinDslAbort("\n § 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab; \n EZ " + betrieb.erhebungszeitraum.asText() + " ist nicht abgedeckt\n ");
} else {
ertrag = gewerbeertrag(EuroCent.von(betrieb.gewinnAusGewerbebetrieb), betrieb.hinzurechnungen, betrieb.kuerzungen).withMoneyAnnotation("EuroCent", "var \"ertrag\"");
}
const abzug = verlustabzug10a(EuroCent.von(ertrag), EuroCent.von(betrieb.gewerbeverlustVortrag)).withMoneyAnnotation("EuroCent", "var \"abzug\"");
const nachVerlust = ertrag.sub(abzug).withMoneyAnnotation("EuroCent", "var \"nachVerlust\"");
let abgerundet;
if (nachVerlust.compareValue(FinDslNumber.dezimal("0.00")) <= 0) {
abgerundet = FinDslNumber.dezimal("0.00").withMoneyAnnotation("EuroCent", "var \"abgerundet\"");
} else {
abgerundet = nachVerlust.abrundenAuf(ABRUNDUNG_11).withMoneyAnnotation("EuroCent", "var \"abgerundet\"");
}
const fb = freibetrag11(betrieb.rechtsform, EuroCent.von(abgerundet)).withMoneyAnnotation("EuroCent", "var \"fb\"");
const messzahl = steuermesszahl11(betrieb.messzahlermaessigung);
const bemessung = abgerundet.sub(fb).withMoneyAnnotation("EuroCent", "var \"bemessung\"");
const messbetrag = steuermessbetrag11(EuroCent.von(abgerundet), EuroCent.von(fb), Prozent.von(messzahl)).withMoneyAnnotation("EuroCent", "var \"messbetrag\"");
const heb = angewandterHebesatz16(Prozent.von(betrieb.hebesatz));
const steuer = gewerbesteuer16(EuroCent.von(messbetrag), Prozent.von(heb)).withMoneyAnnotation("EuroCent", "var \"steuer\"");
return new GewerbesteuerErgebnis(EuroCent.von(betrieb.gewinnAusGewerbebetrieb), EuroCent.von(h8), EuroCent.von(k9), EuroCent.von(ertrag), EuroCent.von(abzug), EuroCent.von(nachVerlust), EuroCent.von(abgerundet), EuroCent.von(fb), EuroCent.von(bemessung), Prozent.von(messzahl), EuroCent.von(messbetrag), Prozent.von(heb), EuroCent.von(steuer));
}import { describe, it, expect } from 'vitest';
import { FinDslNumber, FinDslAbort, EuroCent, Prozent, Ganzzahl } from './runtime/index.js';
import * as Gewst from './Gewst.js';
describe("§ 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)", ()=>{
it("Summe ≤ 200.000 € → keine Hinzurechnung", ()=>{
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("100000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("Summe genau 200.000 € → 0 (nur der übersteigende Teil zählt)", ()=>{
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("200000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("Buchst. a + e: 1.000.000 + ½·400.000 = 1.200.000; ¼·(1.200.000−200.000) = 250.000", ()=>{
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("400000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("250000.00"))).toBe(true);
});
it("Buchst. d (bewegliche WG, 1/5): 1/5·1.500.000 = 300.000; ¼·(300.000−200.000) = 25.000", ()=>{
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("1500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("25000.00"))).toBe(true);
});
it("Buchst. f (Rechte, 1/4): 1/4·1.000.000 = 250.000; ¼·(250.000−200.000) = 12.500", ()=>{
expect(Gewst.hinzurechnung8Nr1(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("12500.00"))).toBe(true);
});
});
describe("§ 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)", ()=>{
it("Nr. 1 (¼·800.000 = 200.000) + Nr. 4 (50.000) + Nr. 5 (30.000) = 280.000", ()=>{
expect(Gewst.summeHinzurechnungen8(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("50000.00")), EuroCent.von(FinDslNumber.dezimal("30000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("280000.00"))).toBe(true);
});
it("leere Hinzurechnungen → 0", ()=>{
expect(Gewst.summeHinzurechnungen8(new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
});
describe("§ 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)", ()=>{
it("20 %·500.000 = 100.000 > 4 ‰·12.000.000 = 48.000 → 100.000", ()=>{
expect(Gewst.spendenHoechstbetrag9Nr5(EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("10000000.00")), EuroCent.von(FinDslNumber.dezimal("2000000.00"))).equalsValue(FinDslNumber.dezimal("100000.00"))).toBe(true);
});
it("kein Gewinn, 4 ‰·60.000.000 = 240.000 → 240.000", ()=>{
expect(Gewst.spendenHoechstbetrag9Nr5(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("50000000.00")), EuroCent.von(FinDslNumber.dezimal("10000000.00"))).equalsValue(FinDslNumber.dezimal("240000.00"))).toBe(true);
});
it("§ 8 Nr. 9 erhöht die 20-%-Bemessung: 20 %·(400.000+100.000) = 100.000", ()=>{
expect(Gewst.spendenHoechstbetrag9Nr5(EuroCent.von(FinDslNumber.dezimal("400000.00")), EuroCent.von(FinDslNumber.dezimal("100000.00")), EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))).equalsValue(FinDslNumber.dezimal("100000.00"))).toBe(true);
});
it("Spenden-Kürzung = min(geleistet, Höchstbetrag): 120.000 gedeckelt auf 100.000", ()=>{
expect(Gewst.kuerzung9Nr5(new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("0.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("120000.00")), EuroCent.von(FinDslNumber.dezimal("10000000.00")), EuroCent.von(FinDslNumber.dezimal("2000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))).equalsValue(FinDslNumber.dezimal("100000.00"))).toBe(true);
});
it("Spenden unter Höchstbetrag bleiben voll: 30.000", ()=>{
expect(Gewst.kuerzung9Nr5(new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("0.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("30000.00")), EuroCent.von(FinDslNumber.dezimal("10000000.00")), EuroCent.von(FinDslNumber.dezimal("2000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))).equalsValue(FinDslNumber.dezimal("30000.00"))).toBe(true);
});
});
describe("§ 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)", ()=>{
it("Satz 1: als Betriebsausgabe erfasste Grundsteuer", ()=>{
expect(Gewst.kuerzung9Nr1(new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("3000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("3000.00"))).toBe(true);
});
it("Satz 2: erweiterte Kürzung auf Antrag tritt an die Stelle von Satz 1", ()=>{
expect(Gewst.kuerzung9Nr1(new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("3000.00")), true, EuroCent.von(FinDslNumber.dezimal("50000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("50000.00"))).toBe(true);
});
});
describe("§ 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)", ()=>{
it("800.000 + 75.000 (§ 8 Nr. 1) − 35.000 (§ 9) = 840.000", ()=>{
expect(Gewst.gewerbeertrag(EuroCent.von(FinDslNumber.dezimal("800000.00")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("5000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("30000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")))).equalsValue(FinDslNumber.dezimal("840000.00"))).toBe(true);
});
});
describe("§ 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)", ()=>{
it("GE 3 Mio., Obergrenze = 1 Mio. + 60 %·2 Mio. = 2,2 Mio.", ()=>{
expect(Gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("3000000.00"))).equalsValue(FinDslNumber.dezimal("2200000.00"))).toBe(true);
});
it("GE ≤ 1 Mio.: voll verrechenbar (Obergrenze = GE)", ()=>{
expect(Gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("800000.00"))).equalsValue(FinDslNumber.dezimal("800000.00"))).toBe(true);
});
it("GE ≤ 0: kein Verlustabzug", ()=>{
expect(Gewst.verlustVerrechnungsobergrenze10a(EuroCent.von(FinDslNumber.dezimal("50000.00").neg())).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("GE 3 Mio., Fehlbetrag 5 Mio. → Abzug 2,2 Mio., danach 800.000", ()=>{
expect(Gewst.gewerbeertragNachVerlust(EuroCent.von(FinDslNumber.dezimal("3000000.00")), EuroCent.von(FinDslNumber.dezimal("5000000.00"))).equalsValue(FinDslNumber.dezimal("800000.00"))).toBe(true);
});
it("GE 500.000, Fehlbetrag 200.000 → Abzug 200.000, danach 300.000", ()=>{
expect(Gewst.verlustabzug10a(EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("200000.00"))).equalsValue(FinDslNumber.dezimal("200000.00"))).toBe(true);
expect(Gewst.gewerbeertragNachVerlust(EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("200000.00"))).equalsValue(FinDslNumber.dezimal("300000.00"))).toBe(true);
});
it("GE 800.000 (≤ 1 Mio.), Fehlbetrag 5 Mio. → Abzug nur 800.000, danach 0", ()=>{
expect(Gewst.gewerbeertragNachVerlust(EuroCent.von(FinDslNumber.dezimal("800000.00")), EuroCent.von(FinDslNumber.dezimal("5000000.00"))).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
});
describe("§ 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform", ()=>{
it("natürliche Person/Personengesellschaft → 24.500 €", ()=>{
expect(Gewst.freibetragRoh11(Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft).equalsValue(FinDslNumber.dezimal("24500.00"))).toBe(true);
});
it("Verein/jur. Person öR → 5.000 €", ()=>{
expect(Gewst.freibetragRoh11(Gewst.Rechtsform.VereinJuristischePersonOerR).equalsValue(FinDslNumber.dezimal("5000.00"))).toBe(true);
});
it("Kapitalgesellschaft → kein Freibetrag", ()=>{
expect(Gewst.freibetragRoh11(Gewst.Rechtsform.Kapitalgesellschaft).equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("höchstens in Höhe des abgerundeten Gewerbeertrags (10.000 < 24.500)", ()=>{
expect(Gewst.freibetrag11(Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, EuroCent.von(FinDslNumber.dezimal("10000.00"))).equalsValue(FinDslNumber.dezimal("10000.00"))).toBe(true);
});
it("voller Freibetrag bei hohem Gewerbeertrag", ()=>{
expect(Gewst.freibetrag11(Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, EuroCent.von(FinDslNumber.dezimal("197000.00"))).equalsValue(FinDslNumber.dezimal("24500.00"))).toBe(true);
});
});
describe("§ 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag", ()=>{
it("Regelmesszahl 3,5 %", ()=>{
expect(Gewst.steuermesszahl11(Gewst.Messzahlermaessigung.Keine).equalsValue(FinDslNumber.prozent("0.035"))).toBe(true);
});
it("Hausgewerbetreibende: ermäßigt 1,96 % (= 56 % von 3,5 %)", ()=>{
expect(Gewst.steuermesszahl11(Gewst.Messzahlermaessigung.Hausgewerbetreibender).equalsValue(FinDslNumber.prozent("0.0196"))).toBe(true);
});
it("(197.000 − 24.500)·3,5 % = 172.500·3,5 % = 6.037,50", ()=>{
expect(Gewst.steuermessbetrag11(EuroCent.von(FinDslNumber.dezimal("197000.00")), EuroCent.von(FinDslNumber.dezimal("24500.00")), Prozent.von(FinDslNumber.prozent("0.035"))).equalsValue(FinDslNumber.dezimal("6037.50"))).toBe(true);
});
it("Kapitalgesellschaft ohne Freibetrag: 1.000.000·3,5 % = 35.000", ()=>{
expect(Gewst.steuermessbetrag11(EuroCent.von(FinDslNumber.dezimal("1000000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), Prozent.von(FinDslNumber.prozent("0.035"))).equalsValue(FinDslNumber.dezimal("35000.00"))).toBe(true);
});
});
describe("§ 16 GewStG — Hebesatz (mindestens 200 %)", ()=>{
it("Gemeinde-Hebesatz unter 200 % → 200 %", ()=>{
expect(Gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("1.5"))).equalsValue(FinDslNumber.prozent("2"))).toBe(true);
});
it("genau 200 % bleibt 200 %", ()=>{
expect(Gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("2"))).equalsValue(FinDslNumber.prozent("2"))).toBe(true);
});
it("höherer Hebesatz bleibt unverändert", ()=>{
expect(Gewst.angewandterHebesatz16(Prozent.von(FinDslNumber.prozent("4.5"))).equalsValue(FinDslNumber.prozent("4.5"))).toBe(true);
});
it("Steuermessbetrag · Hebesatz: 6.037,50 · 400 % = 24.150", ()=>{
expect(Gewst.gewerbesteuer16(EuroCent.von(FinDslNumber.dezimal("6037.50")), Prozent.von(FinDslNumber.prozent("4"))).equalsValue(FinDslNumber.dezimal("24150.00"))).toBe(true);
});
});
describe("Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)", ()=>{
it("Personengesellschaft, EZ 2025, Gewinn 200.000, Hebesatz 400 %", ()=>{
const e = Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("200000.00")), Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2025")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("100000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("3000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("0.00")), Gewst.Messzahlermaessigung.Keine, Prozent.von(FinDslNumber.prozent("4"))));
expect(e.summeHinzurechnungen.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.summeKuerzungen.equalsValue(FinDslNumber.dezimal("3000.00"))).toBe(true);
expect(e.gewerbeertrag.equalsValue(FinDslNumber.dezimal("197000.00"))).toBe(true);
expect(e.gewerbeertragNachVerlust.equalsValue(FinDslNumber.dezimal("197000.00"))).toBe(true);
expect(e.abgerundeterGewerbeertrag.equalsValue(FinDslNumber.dezimal("197000.00"))).toBe(true);
expect(e.freibetrag.equalsValue(FinDslNumber.dezimal("24500.00"))).toBe(true);
expect(e.steuermessbetrag.equalsValue(FinDslNumber.dezimal("6037.50"))).toBe(true);
expect(e.angewandterHebesatz.equalsValue(FinDslNumber.prozent("4"))).toBe(true);
expect(e.gewerbesteuer.equalsValue(FinDslNumber.dezimal("24150.00"))).toBe(true);
});
it("Kapitalgesellschaft, EZ 2025, Gewinn 1.000.000, Hebesatz 500 %, kein Freibetrag", ()=>{
const e = Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("1000000.00")), Gewst.Rechtsform.Kapitalgesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2025")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("0.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("0.00")), Gewst.Messzahlermaessigung.Keine, Prozent.von(FinDslNumber.prozent("5"))));
expect(e.freibetrag.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.bemessungsgrundlage.equalsValue(FinDslNumber.dezimal("1000000.00"))).toBe(true);
expect(e.steuermessbetrag.equalsValue(FinDslNumber.dezimal("35000.00"))).toBe(true);
expect(e.angewandterHebesatz.equalsValue(FinDslNumber.prozent("5"))).toBe(true);
expect(e.gewerbesteuer.equalsValue(FinDslNumber.dezimal("175000.00"))).toBe(true);
});
it("Volle Kette: § 8-Excess + § 9 + § 10a + Hausgewerbe, Hebesatz 410 %", ()=>{
const e = Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("800000.00")), Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2025")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("600000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("20000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("10000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("50000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("5000.00")), EuroCent.von(FinDslNumber.dezimal("2000000.00")), EuroCent.von(FinDslNumber.dezimal("500000.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("100000.00")), Gewst.Messzahlermaessigung.Hausgewerbetreibender, Prozent.von(FinDslNumber.prozent("4.1"))));
expect(e.summeHinzurechnungen.equalsValue(FinDslNumber.dezimal("120000.00"))).toBe(true);
expect(e.summeKuerzungen.equalsValue(FinDslNumber.dezimal("65000.00"))).toBe(true);
expect(e.gewerbeertrag.equalsValue(FinDslNumber.dezimal("855000.00"))).toBe(true);
expect(e.verlustabzug.equalsValue(FinDslNumber.dezimal("100000.00"))).toBe(true);
expect(e.gewerbeertragNachVerlust.equalsValue(FinDslNumber.dezimal("755000.00"))).toBe(true);
expect(e.bemessungsgrundlage.equalsValue(FinDslNumber.dezimal("730500.00"))).toBe(true);
expect(e.steuermesszahl.equalsValue(FinDslNumber.prozent("0.0196"))).toBe(true);
expect(e.steuermessbetrag.equalsValue(FinDslNumber.dezimal("14317.80"))).toBe(true);
expect(e.gewerbesteuer.equalsValue(FinDslNumber.dezimal("58702.98"))).toBe(true);
});
it("Negativer Gewerbeertrag → kein Messbetrag, keine Steuer", ()=>{
const e = Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("50000.00")), Gewst.Rechtsform.NatuerlichePersonPersonengesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2025")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("100000.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("0.00")), Gewst.Messzahlermaessigung.Keine, Prozent.von(FinDslNumber.prozent("2"))));
expect(e.gewerbeertrag.equalsValue(FinDslNumber.dezimal("50000.00").neg())).toBe(true);
expect(e.abgerundeterGewerbeertrag.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.freibetrag.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.steuermessbetrag.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
expect(e.gewerbesteuer.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("Erhebungszeitraum vor 2025 wird abgelehnt (§ 36 Abs. 4b GewStG)", ()=>{
expect(()=>{
Gewst.berechneGewerbesteuer(new Gewst.Gewerbebetrieb(EuroCent.von(FinDslNumber.dezimal("100000.00")), Gewst.Rechtsform.Kapitalgesellschaft, Ganzzahl.von(FinDslNumber.ganzzahl("2024")), new Gewst.Hinzurechnungen8(EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), new Gewst.Kuerzungen9(EuroCent.von(FinDslNumber.dezimal("0.00")), false, EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00")), EuroCent.von(FinDslNumber.dezimal("0.00"))), EuroCent.von(FinDslNumber.dezimal("0.00")), Gewst.Messzahlermaessigung.Keine, Prozent.von(FinDslNumber.prozent("2"))));
}).toThrow(FinDslAbort);
});
});Gewerbesteuer — Messbetrag und Steuer (§§ 7–11, 16 GewStG)
Bildet die Festsetzung der Gewerbesteuer nach dem Gewerbesteuergesetz (GewStG, i.d.F.
Inhalt
- gewst
- Konstanten
- konst ANTEIL_8_1
- konst HINZURECHNUNG_FREIBETRAG_8_1
- konst ANTEIL_BEWEGLICH_8_1D
- konst ANTEIL_UNBEWEGLICH_8_1E
- konst ANTEIL_RECHTE_8_1F
- konst SPENDEN_SATZ_GEWINN_9_5
- konst SPENDEN_PROMILLE_9_5
- konst VERLUST_SOCKEL_10A
- konst VERLUST_QUOTE_10A
- konst ABRUNDUNG_11
- konst FREIBETRAG_NAT_PERSON_11
- konst FREIBETRAG_VEREIN_11
- konst STEUERMESSZAHL_11
- konst STEUERMESSZAHL_HAUSGEWERBE_11_3
- konst MINDEST_HEBESATZ_16
- konst FRUEHESTER_EZ
- Datensätze
- Aufzählungen
- Funktionen
- fn Hinzurechnung8Nr1
- fn SummeHinzurechnungen8
- fn SpendenHoechstbetrag9Nr5
- fn Kuerzung9Nr5
- fn Kuerzung9Nr1
- fn SummeKuerzungen9
- fn Gewerbeertrag
- fn VerlustVerrechnungsobergrenze10a
- fn Verlustabzug10a
- fn GewerbeertragNachVerlust
- fn FreibetragRoh11
- fn Freibetrag11
- fn Steuermesszahl11
- fn Steuermessbetrag11
- fn AngewandterHebesatz16
- fn Gewerbesteuer16
- fn BerechneGewerbesteuer
- Konstanten
- gewst.test
- Prüfungen
- prüfe § 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)
- prüfe § 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)
- prüfe § 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)
- prüfe § 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)
- prüfe § 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)
- prüfe § 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)
- prüfe § 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform
- prüfe § 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag
- prüfe § 16 GewStG — Hebesatz (mindestens 200 %)
- prüfe Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)
- Prüfungen
gewst
gewst.findsl
Gewerbesteuer — Messbetrag und Steuer (§§ 7–11, 16 GewStG)
Bildet die Festsetzung der Gewerbesteuer nach dem Gewerbesteuergesetz (GewStG, i.d.F. ab Erhebungszeitraum 2025 — insbesondere § 9 Nr. 1 Satz 1 in der Fassung des Art. 9 G v. 2.12.2024, § 36 Abs. 4b GewStG) vollständig in der gesetzlichen Reihenfolge ab:
- § 6 GewStG — Besteuerungsgrundlage ist der Gewerbeertrag.
- § 7 Satz 1 GewStG — Gewerbeertrag ist der nach EStG/KStG zu ermittelnde Gewinn aus Gewerbebetrieb, vermehrt um die § 8- und vermindert um die § 9-Beträge.
- § 8 GewStG — Hinzurechnungen: Nr. 1 (Viertel der Summe aus a–f Finanzierungsanteilen, soweit über 200.000 €) sowie die Nummern 4, 5, 8, 9, 10, 12 (die übrigen Nummern sind weggefallen).
- § 9 GewStG — Kürzungen: Nr. 1 (Grundsteuer für Betriebs- grundbesitz bzw. erweiterte Kürzung auf Antrag), Nr. 2/2a/2b/3/7/8 (Beteiligungs-/Betriebsstätten-Erträge) und Nr. 5 (Spenden bis 20 % des Gewinns oder 4 ‰ der Summe aus Umsätzen und Löhnen).
- § 10/§ 10a GewStG — maßgebender Gewerbeertrag und Kürzung um vortragsfähige Fehlbeträge (Mindestbesteuerung: bis 1 Mio. € voll, darüber nur 60 %).
- § 11 GewStG — Abrundung auf volle 100 €, Freibetrag (24.500 € bzw. 5.000 € bzw. 0 € je Rechtsform) und Steuermesszahl 3,5 % (ermäßigt 1,96 % bei Hausgewerbetreibenden, § 11 Abs. 3).
- § 16 GewStG — Anwendung des Hebesatzes der hebeberechtigten Gemeinde, mindestens 200 % (§ 16 Abs. 4 Satz 2).
Bewusst nicht modelliert (dokumentiert, außerhalb der reinen Steuerbetragsberechnung):
- Die Ermittlung des Gewinns aus Gewerbebetrieb selbst (§ 7 Satz 1: „nach den Vorschriften des EStG oder KStG"). Er geht — wie das Einkommen i.S.d. § 8 Abs. 1 KStG im KStG-Modul — als geprüfte Eingabe ein. Ebenso die Höhe der einzelnen Hinzurechnungs-/ Kürzungsbeträge, die § 8/§ 9 aus EStG/KStG-Sachverhalten ableiten (Nr. 4/5/8/9/10/12 bzw. Nr. 2/2a/2b/3/7/8): das GewStG schreibt nur die Verrechnung vor — diese ist hier vollständig und exakt implementiert.
- Zerlegung (§§ 28–34 GewStG) auf mehrere Gemeinden (Maßstab Arbeitslöhne, Sonderfälle Windenergie/Solar/Speicher). Modelliert ist der Regelfall einer hebeberechtigten Gemeinde.
- Verfahren §§ 14a/19–21 (Vorauszahlung, Festsetzung, Zerlegungs- bescheid), § 35b (Änderung), abgekürzter Erhebungszeitraum (§ 14 Satz 3), Steuerbefreiungen § 3, optierende Gesellschaft § 1a KStG (§ 2 Abs. 8).
- Erweiterte Kürzung § 9 Nr. 1 Satz 2 dem Grunde nach (Antrag, Grundstücksunternehmens-Voraussetzungen) — die Höhe des auf den eigenen Grundbesitz entfallenden Gewerbeertrags geht als Eingabe ein.
Konstanten
konst ANTEIL_8_1
konst ANTEIL_8_1: Prozent = 25%
Anteil der Hinzurechnung nach § 8 Nr. 1 GewStG: „Ein Viertel der Summe" der Finanzierungsanteile a–f wird hinzugerechnet, soweit die Summe den Freibetrag übersteigt.
Quelle: § 8 Nummer 1 GewStG — § 8 GewStG
konst HINZURECHNUNG_FREIBETRAG_8_1
konst HINZURECHNUNG_FREIBETRAG_8_1: EuroCent = 200.000,00
Freibetrag der Finanzierungs-Hinzurechnung: erst der 200.000 € übersteigende Teil der gewichteten Summe a–f wird zu einem Viertel hinzugerechnet (§ 8 Nr. 1 letzter Halbsatz GewStG).
Quelle: § 8 Nummer 1 GewStG — § 8 GewStG
konst ANTEIL_BEWEGLICH_8_1D
konst ANTEIL_BEWEGLICH_8_1D: Prozent = 20%
Anteil der Miet-/Pachtzinsen (einschl. Leasingraten) für bewegliche Wirtschaftsgüter des Anlagevermögens: ein Fünftel (§ 8 Nr. 1 Buchst. d GewStG).
Quelle: § 8 Nummer 1 Buchstabe d GewStG — § 8 GewStG
konst ANTEIL_UNBEWEGLICH_8_1E
konst ANTEIL_UNBEWEGLICH_8_1E: Prozent = 50%
Anteil der Miet-/Pachtzinsen für unbewegliche Wirtschaftsgüter des Anlagevermögens: die Hälfte (§ 8 Nr. 1 Buchst. e GewStG).
Quelle: § 8 Nummer 1 Buchstabe e GewStG — § 8 GewStG
konst ANTEIL_RECHTE_8_1F
konst ANTEIL_RECHTE_8_1F: Prozent = 25%
Anteil der Aufwendungen für die zeitlich befristete Überlassung von Rechten (Konzessionen, Lizenzen): ein Viertel (§ 8 Nr. 1 Buchst. f GewStG).
Quelle: § 8 Nummer 1 Buchstabe f GewStG — § 8 GewStG
konst SPENDEN_SATZ_GEWINN_9_5
konst SPENDEN_SATZ_GEWINN_9_5: Prozent = 20%
Spenden-Höchstsatz I (§ 9 Nr. 5 Satz 1 GewStG): 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb.
Quelle: § 9 Nummer 5 GewStG — § 9 GewStG
konst SPENDEN_PROMILLE_9_5
konst SPENDEN_PROMILLE_9_5: Prozent = 0,4%
Spenden-Höchstsatz II (§ 9 Nr. 5 Satz 1 GewStG): 4 Promille der Summe der gesamten Umsätze und der im Wirtschaftsjahr aufgewendeten Löhne und Gehälter. 4 ‰ = 0,4 %.
Quelle: § 9 Nummer 5 GewStG — § 9 GewStG
konst VERLUST_SOCKEL_10A
konst VERLUST_SOCKEL_10A: EuroCent = 1.000.000,00
Sockelbetrag des Verlustabzugs: der maßgebende Gewerbeertrag wird bis zu 1 Mio. € ungekürzt um Fehlbeträge gemindert (§ 10a Satz 1 GewStG).
Quelle: § 10a Satz 1 GewStG — § 10a GewStG
konst VERLUST_QUOTE_10A
konst VERLUST_QUOTE_10A: Prozent = 60%
Mindestbesteuerungsquote: der 1 Mio. € übersteigende maßgebende Gewerbeertrag ist nur bis zu 60 % um Fehlbeträge zu kürzen (§ 10a Satz 2 GewStG).
Quelle: § 10a Satz 2 GewStG — § 10a GewStG
konst ABRUNDUNG_11
konst ABRUNDUNG_11: EuroCent = 100,00
Abrundungsstufe: der Gewerbeertrag ist auf volle 100 € nach unten abzurunden (§ 11 Abs. 1 Satz 3 GewStG).
Quelle: § 11 Absatz 1 Satz 3 GewStG — § 11 GewStG
konst FREIBETRAG_NAT_PERSON_11
konst FREIBETRAG_NAT_PERSON_11: EuroCent = 24.500,00
Freibetrag bei natürlichen Personen und Personengesellschaften: 24.500 €, höchstens in Höhe des abgerundeten Gewerbeertrags (§ 11 Abs. 1 Satz 3 Nr. 1 GewStG).
Quelle: § 11 Absatz 1 Satz 3 Nummer 1 GewStG — § 11 GewStG
konst FREIBETRAG_VEREIN_11
konst FREIBETRAG_VEREIN_11: EuroCent = 5.000,00
Freibetrag bei sonstigen juristischen Personen des privaten Rechts und Vereinen (§ 2 Abs. 3), Unternehmen i.S.d. § 3 Nr. 5/6/… sowie juristischen Personen des öffentlichen Rechts: 5.000 €, höchstens in Höhe des abgerundeten Gewerbeertrags (§ 11 Abs. 1 Satz 3 Nr. 2 GewStG).
Quelle: § 11 Absatz 1 Satz 3 Nummer 2 GewStG — § 11 GewStG
konst STEUERMESSZAHL_11
konst STEUERMESSZAHL_11: Prozent = 3,5%
Steuermesszahl für den Gewerbeertrag: 3,5 % (§ 11 Abs. 2 GewStG).
Quelle: § 11 Absatz 2 GewStG — § 11 GewStG
konst STEUERMESSZAHL_HAUSGEWERBE_11_3
konst STEUERMESSZAHL_HAUSGEWERBE_11_3: Prozent = 1,96%
Ermäßigte Steuermesszahl für Hausgewerbetreibende und Gleichgestellte: die Messzahl ermäßigt sich auf 56 % von 3,5 %, also 1,96 % (§ 11 Abs. 3 GewStG).
Quelle: § 11 Absatz 3 GewStG — § 11 GewStG
konst MINDEST_HEBESATZ_16
konst MINDEST_HEBESATZ_16: Prozent = 200%
Mindest-Hebesatz: beträgt 200 %, wenn die Gemeinde keinen höheren Hebesatz bestimmt hat (§ 16 Abs. 4 Satz 2 GewStG).
Quelle: § 16 Absatz 4 Satz 2 GewStG — § 16 GewStG
konst FRUEHESTER_EZ
konst FRUEHESTER_EZ: Ganzzahl = 2025
Frühester von diesem Modul abgebildeter Erhebungszeitraum. Die hier implementierte Fassung gilt insbesondere für § 9 Nr. 1 Satz 1 (Grundsteuer-Fassung) erstmals für den Erhebungszeitraum 2025 (§ 36 Abs. 4b Satz 1 GewStG).
Quelle: § 36 Absatz 4b GewStG — § 36 GewStG
Datensätze
datensatz Hinzurechnungen8
datensatz Hinzurechnungen8(
entgelteSchulden: EuroCent = 0,00, // § 8 Nr. 1 a (100 %)
rentenDauerndeLasten: EuroCent = 0,00, // § 8 Nr. 1 b (100 %)
gewinnanteileStillerGesellschafter: EuroCent = 0,00, // § 8 Nr. 1 c (100 %)
mietePachtBeweglich: EuroCent = 0,00, // § 8 Nr. 1 d (1/5)
mietePachtUnbeweglich: EuroCent = 0,00, // § 8 Nr. 1 e (1/2)
aufwendungenRechteUeberlassung: EuroCent = 0,00, // § 8 Nr. 1 f (1/4)
gewinnanteilePhgKgaa: EuroCent = 0,00, // § 8 Nr. 4 (100 %)
steuerfreieDividenden: EuroCent = 0,00, // § 8 Nr. 5 (100 %)
verlustanteileMitunternehmerschaft: EuroCent = 0,00, // § 8 Nr. 8 (100 %)
ausgaben9Abs1Nr2KStG: EuroCent = 0,00, // § 8 Nr. 9 (100 %)
gewinnminderungenTeilwert: EuroCent = 0,00, // § 8 Nr. 10 (100 %)
auslaendischeSteuern: EuroCent = 0,00, // § 8 Nr. 12 (100 %)
)
Hinzurechnungsbeträge nach § 8 GewStG. Die Beträge a–f der Nr. 1 sind
vor der gesetzlichen Gewichtung (20 %/50 %/25 %) und vor dem
Freibetrag/Viertel anzugeben — diese wendet hinzurechnung8Nr1 an.
Die Nummern 4, 5, 8, 9, 10, 12 werden in voller Höhe hinzugerechnet
und sind als die bereits nach EStG/KStG ermittelten Beträge
einzutragen (Nr. 2/3/6/7/11 GewStG sind weggefallen).
| Feld | Typ | Bedeutung |
|---|---|---|
entgelteSchulden |
EuroCent |
§ 8 Nr. 1 Buchst. a: Entgelte für Schulden (Zinsen, Skonti, Diskontbeträge), 100 %. |
rentenDauerndeLasten |
EuroCent |
§ 8 Nr. 1 Buchst. b: Renten und dauernde Lasten, 100 %. |
gewinnanteileStillerGesellschafter |
EuroCent |
§ 8 Nr. 1 Buchst. c: Gewinnanteile des stillen Gesellschafters, 100 %. |
mietePachtBeweglich |
EuroCent |
§ 8 Nr. 1 Buchst. d: Miet-/Pachtzinsen (inkl. Leasing) für bewegliche WG des Anlagevermögens — geht zu einem Fünftel ein. |
mietePachtUnbeweglich |
EuroCent |
§ 8 Nr. 1 Buchst. e: Miet-/Pachtzinsen für unbewegliche WG des Anlagevermögens — geht zur Hälfte ein. |
aufwendungenRechteUeberlassung |
EuroCent |
§ 8 Nr. 1 Buchst. f: Aufwendungen für zeitlich befristete Rechteüberlassung — geht zu einem Viertel ein. |
gewinnanteilePhgKgaa |
EuroCent |
§ 8 Nr. 4: Gewinnanteile an persönlich haftende Gesellschafter einer KGaA, 100 %. |
steuerfreieDividenden |
EuroCent |
§ 8 Nr. 5: nach § 3 Nr. 40 EStG / § 8b KStG außer Ansatz gebliebene Gewinnanteile (Streubesitz), 100 %. |
verlustanteileMitunternehmerschaft |
EuroCent |
§ 8 Nr. 8: Anteile am Verlust einer Mitunternehmerschaft, 100 %. |
ausgaben9Abs1Nr2KStG |
EuroCent |
§ 8 Nr. 9: Ausgaben i.S.d. § 9 Abs. 1 Nr. 2 KStG (abziehbare Zuwendungen), 100 %. |
gewinnminderungenTeilwert |
EuroCent |
§ 8 Nr. 10: Gewinnminderungen durch Teilwertansatz/Veräußerung von Körperschaftsanteilen, 100 %. |
auslaendischeSteuern |
EuroCent |
§ 8 Nr. 12: nach § 34c EStG abgezogene ausländische Steuern, 100 %. |
Quelle: § 8 GewStG — § 8 GewStG
datensatz Kuerzungen9
datensatz Kuerzungen9(
grundsteuerBetriebsgrundbesitz: EuroCent = 0,00, // § 9 Nr. 1 S. 1
erweiterteKuerzungBeantragt: Wahrheitswert = falsch, // § 9 Nr. 1 S. 2 (Antrag)
erweiterteKuerzungGrundbesitzertrag: EuroCent = 0,00, // § 9 Nr. 1 S. 2
gewinnanteileMitunternehmerschaft: EuroCent = 0,00, // § 9 Nr. 2
schachteldividendenInland: EuroCent = 0,00, // § 9 Nr. 2a
kgaaGewinnanteile: EuroCent = 0,00, // § 9 Nr. 2b
auslandsbetriebsstaette: EuroCent = 0,00, // § 9 Nr. 3
geleisteteSpenden: EuroCent = 0,00, // § 9 Nr. 5
umsaetze: EuroCent = 0,00, // § 9 Nr. 5 (4 ‰)
loehneUndGehaelter: EuroCent = 0,00, // § 9 Nr. 5 (4 ‰)
schachteldividendenAuslandNr7: EuroCent = 0,00, // § 9 Nr. 7
schachteldividendenDbaNr8: EuroCent = 0,00, // § 9 Nr. 8
)
Kürzungsbeträge nach § 9 GewStG. Die Spenden-Begrenzung (Nr. 5) und die Wahl zwischen einfacher und erweiterter Grundbesitzkürzung (Nr. 1) werden von den Funktionen angewandt; alle übrigen Nummern werden in der angegebenen Höhe abgezogen.
| Feld | Typ | Bedeutung |
|---|---|---|
grundsteuerBetriebsgrundbesitz |
EuroCent |
§ 9 Nr. 1 Satz 1: im Erhebungszeitraum als Betriebsausgabe erfasste Grundsteuer für zum Betriebsvermögen gehörenden Grundbesitz. |
erweiterteKuerzungBeantragt |
Wahrheitswert |
§ 9 Nr. 1 Satz 2: Antrag auf erweiterte Kürzung bei Grundstücks- unternehmen (tritt an die Stelle von Satz 1). |
erweiterteKuerzungGrundbesitzertrag |
EuroCent |
§ 9 Nr. 1 Satz 2: Teil des Gewerbeertrags, der auf die Verwaltung und Nutzung des eigenen Grundbesitzes entfällt (extern ermittelt; nur bei Antrag). |
gewinnanteileMitunternehmerschaft |
EuroCent |
§ 9 Nr. 2: Anteile am Gewinn einer Mitunternehmerschaft. |
schachteldividendenInland |
EuroCent |
§ 9 Nr. 2a: Gewinne aus Anteilen an inländischer Kapitalgesellschaft bei Beteiligung ≥ 15 % zu Beginn des EZ. |
kgaaGewinnanteile |
EuroCent |
§ 9 Nr. 2b: nach § 8 Nr. 4 dem Gewerbeertrag einer KGaA hinzugerechnete Gewinnanteile. |
auslandsbetriebsstaette |
EuroCent |
§ 9 Nr. 3: Teil des Gewerbeertrags, der auf eine nicht im Inland belegene Betriebsstätte entfällt. |
geleisteteSpenden |
EuroCent |
§ 9 Nr. 5: aus Betriebsmitteln geleistete Zuwendungen für steuerbegünstigte Zwecke (vor Höchstbetragsbegrenzung). |
umsaetze |
EuroCent |
§ 9 Nr. 5: Summe der gesamten Umsätze (Bemessung des 4-‰-Höchstsatzes). |
loehneUndGehaelter |
EuroCent |
§ 9 Nr. 5: im Wirtschaftsjahr aufgewendete Löhne und Gehälter (Bemessung des 4-‰-Höchstsatzes). |
schachteldividendenAuslandNr7 |
EuroCent |
§ 9 Nr. 7: Gewinne aus Anteilen an einer Kapitalgesellschaft außerhalb des Geltungsbereichs, Beteiligung ≥ 15 %. |
schachteldividendenDbaNr8 |
EuroCent |
§ 9 Nr. 8: nach DBA befreite Gewinne aus Anteilen an einer ausländischen Gesellschaft (Mindestbeteiligung). |
Quelle: § 9 GewStG — § 9 GewStG
datensatz Gewerbebetrieb
datensatz Gewerbebetrieb(
gewinnAusGewerbebetrieb: EuroCent, // § 7 S. 1 (nach EStG/KStG)
rechtsform: Rechtsform, // § 5/§ 11 GewStG
erhebungszeitraum: Ganzzahl, // § 14 S. 2 GewStG
hinzurechnungen: Hinzurechnungen8, // § 8 GewStG
kuerzungen: Kuerzungen9, // § 9 GewStG
gewerbeverlustVortrag: EuroCent = 0,00, // § 10a GewStG
messzahlermaessigung: Messzahlermaessigung = Keine, // § 11 Abs. 3 GewStG
hebesatz: Prozent = 200%, // § 16 GewStG
)
Eingaben eines Gewerbesteuerfalls für eine hebeberechtigte Gemeinde (Regelfall ohne Zerlegung).
| Feld | Typ | Bedeutung |
|---|---|---|
gewinnAusGewerbebetrieb |
EuroCent |
§ 7 Satz 1 GewStG: der nach EStG/KStG ermittelte Gewinn aus Gewerbebetrieb (extern ermittelt; Bemessungsbasis vor §§ 8/9). |
rechtsform |
Rechtsform |
Rechtsform des Steuerschuldners — bestimmt den Freibetrag nach § 11 GewStG. |
erhebungszeitraum |
Ganzzahl |
Kalenderjahr des Erhebungszeitraums (§ 14 Satz 2 GewStG). |
hinzurechnungen |
Hinzurechnungen8 |
§ 8 GewStG (siehe Hinzurechnungen8). |
kuerzungen |
Kuerzungen9 |
§ 9 GewStG (siehe Kuerzungen9). |
gewerbeverlustVortrag |
EuroCent |
§ 10a GewStG: zum Schluss des vorangegangenen EZ gesondert festgestellte vortragsfähige Fehlbeträge (§ 10a Satz 6). |
messzahlermaessigung |
Messzahlermaessigung |
§ 11 Abs. 3 GewStG. |
hebesatz |
Prozent |
Von der Gemeinde bestimmter Hebesatz (§ 16 GewStG); mindestens 200 % werden angewandt (§ 16 Abs. 4 Satz 2). |
Quelle: § 7 GewStG — § 7 GewStG
datensatz GewerbesteuerErgebnis
datensatz GewerbesteuerErgebnis(
gewinn: EuroCent, // § 7 S. 1 (Eingabe)
summeHinzurechnungen: EuroCent, // § 8 GewStG
summeKuerzungen: EuroCent, // § 9 GewStG
gewerbeertrag: EuroCent, // § 7/§ 10 GewStG
verlustabzug: EuroCent, // § 10a GewStG
gewerbeertragNachVerlust: EuroCent, // § 10a GewStG (≥ 0)
abgerundeterGewerbeertrag: EuroCent, // § 11 Abs. 1 S. 3
freibetrag: EuroCent, // § 11 Abs. 1 S. 3
bemessungsgrundlage: EuroCent, // abger. GE − Freibetrag
steuermesszahl: Prozent, // § 11 Abs. 2/3
steuermessbetrag: EuroCent, // § 11 GewStG
angewandterHebesatz: Prozent, // § 16 GewStG
gewerbesteuer: EuroCent, // § 16 GewStG
)
Vollständige, prüfbare Berechnungsdokumentation eines Gewerbesteuerfalls — jede Zwischengröße der gesetzlichen Reihenfolge ist einzeln ausgewiesen, damit die Festsetzung Schritt für Schritt gegen das Gesetz auditierbar ist.
| Feld | Typ | Bedeutung |
|---|---|---|
gewinn |
EuroCent |
§ 7 Satz 1: Gewinn aus Gewerbebetrieb (Eingabe, unverändert übernommen). |
summeHinzurechnungen |
EuroCent |
§ 8 GewStG: Summe aller Hinzurechnungen. |
summeKuerzungen |
EuroCent |
§ 9 GewStG: Summe aller Kürzungen. |
gewerbeertrag |
EuroCent |
§ 7/§ 10 GewStG: Gewinn + § 8 − § 9. |
verlustabzug |
EuroCent |
§ 10a GewStG: tatsächlich abgezogener Fehlbetrag (Mindestbesteuerung beachtet). |
gewerbeertragNachVerlust |
EuroCent |
§ 10a GewStG: maßgebender Gewerbeertrag nach Verlustabzug (nicht negativ). |
abgerundeterGewerbeertrag |
EuroCent |
§ 11 Abs. 1 Satz 3: auf volle 100 € abgerundet. |
freibetrag |
EuroCent |
§ 11 Abs. 1 Satz 3: angewandter Freibetrag. |
bemessungsgrundlage |
EuroCent |
Abgerundeter Gewerbeertrag − Freibetrag. |
steuermesszahl |
Prozent |
§ 11 Abs. 2/3 GewStG: angewandte Messzahl. |
steuermessbetrag |
EuroCent |
§ 11 GewStG: Bemessungsgrundlage × Messzahl. |
angewandterHebesatz |
Prozent |
§ 16 GewStG: angewandter Hebesatz (mindestens 200 %). |
gewerbesteuer |
EuroCent |
§ 16 GewStG: Steuermessbetrag × Hebesatz. |
Quelle: § 7 GewStG — § 7 GewStG
Aufzählungen
aufzählung Rechtsform
aufzählung Rechtsform {
NatuerlichePersonPersonengesellschaft,
Kapitalgesellschaft,
VereinJuristischePersonOerR,
}
Rechtsform des Steuerschuldners (§ 5 GewStG) — bestimmt den Freibetrag nach § 11 Abs. 1 Satz 3 GewStG.
Parameter
| Name | Beschreibung |
|---|---|
NatuerlichePersonPersonengesellschaft |
Einzelunternehmen oder Personengesellschaft (Mitunternehmerschaft) — Freibetrag 24.500 € (§ 11 Abs. 1 S. 3 Nr. 1 GewStG). |
Kapitalgesellschaft |
Kapitalgesellschaft / Genossenschaft (§ 2 Abs. 2 GewStG) — kein Freibetrag. |
VereinJuristischePersonOerR |
Sonstige juristische Personen des privaten Rechts, Vereine (§ 2 Abs. 3) und juristische Personen des öffentlichen Rechts — Freibetrag 5.000 € (§ 11 Abs. 1 S. 3 Nr. 2 GewStG). |
Werte: NatuerlichePersonPersonengesellschaft, Kapitalgesellschaft, VereinJuristischePersonOerR
Quelle: § 11 Absatz 1 Satz 3 GewStG — § 11 GewStG
aufzählung Messzahlermaessigung
aufzählung Messzahlermaessigung {
Keine,
Hausgewerbetreibender,
}
Ermäßigung der Steuermesszahl nach § 11 Abs. 3 GewStG.
Parameter
| Name | Beschreibung |
|---|---|
Keine |
Regelmesszahl 3,5 % (§ 11 Abs. 2 GewStG). |
Hausgewerbetreibender |
Hausgewerbetreibende und nach dem Heimarbeitsgesetz Gleichgestellte — ermäßigte Messzahl 1,96 % (§ 11 Abs. 3 GewStG). |
Werte: Keine, Hausgewerbetreibender
Quelle: § 11 Absatz 3 GewStG — § 11 GewStG
Funktionen
fn Hinzurechnung8Nr1
fn Hinzurechnung8Nr1(h: Hinzurechnungen8): EuroCent
Hinzurechnung nach § 8 Nr. 1 GewStG: Ein Viertel der Summe aus den Finanzierungsanteilen a–f, soweit die Summe 200.000 € übersteigt. Buchst. a–c gehen zu 100 %, Buchst. d (bewegliche WG) zu einem Fünftel, Buchst. e (unbewegliche WG) zur Hälfte, Buchst. f (Rechteüberlassung) zu einem Viertel in die Summe ein. Liegt die gewichtete Summe ≤ 200.000 €, ist die Hinzurechnung nach Nr. 1 = 0.
Parameter
| Name | Beschreibung |
|---|---|
h |
Hinzurechnungsbeträge (siehe Hinzurechnungen8). |
Rückgabe — Hinzurechnungsbetrag nach § 8 Nr. 1 GewStG.
Quelle: § 8 Nummer 1 GewStG — § 8 GewStG
fn SummeHinzurechnungen8
fn SummeHinzurechnungen8(h: Hinzurechnungen8): EuroCent
Summe der Hinzurechnungen nach § 8 GewStG: der Betrag nach Nr. 1 zuzüglich der in voller Höhe hinzuzurechnenden Nummern 4, 5, 8, 9, 10 und 12 (Nr. 2/3/6/7/11 GewStG sind weggefallen).
Parameter
| Name | Beschreibung |
|---|---|
h |
Hinzurechnungsbeträge (siehe Hinzurechnungen8). |
Rückgabe — Summe der Hinzurechnungen nach § 8 GewStG.
Quelle: § 8 GewStG — § 8 GewStG
fn SpendenHoechstbetrag9Nr5
fn SpendenHoechstbetrag9Nr5(
gewinn: EuroCent,
hinzurechnung8Nr9: EuroCent,
umsaetze: EuroCent,
loehneUndGehaelter: EuroCent,
): EuroCent
Höchstbetrag der Spenden-Kürzung nach § 9 Nr. 5 Satz 1 GewStG: der höhere Betrag aus
- 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb und
- 4 ‰ (0,4 %) der Summe aus den gesamten Umsätzen und den im Wirtschaftsjahr aufgewendeten Löhnen und Gehältern.
Ein negativer „20 %"-Wert (bei Verlust) wird durch die Maximum-Bildung mit dem nicht-negativen 4-‰-Wert bzw. die Nicht-negativ-Kappung abgefangen.
Parameter
| Name | Beschreibung |
|---|---|
gewinn |
§ 7 Satz 1: Gewinn aus Gewerbebetrieb. |
hinzurechnung8Nr9 |
§ 8 Nr. 9: erhöht die 20-%-Bemessung. |
umsaetze |
Summe der gesamten Umsätze. |
loehneUndGehaelter |
Aufgewendete Löhne und Gehälter. |
Rückgabe — Höchstbetrag der nach § 9 Nr. 5 abziehbaren Spenden.
Quelle: § 9 Nummer 5 GewStG — § 9 GewStG
fn Kuerzung9Nr5
fn Kuerzung9Nr5(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent
Tatsächlich abziehbare Spenden-Kürzung nach § 9 Nr. 5 GewStG: die
geleisteten Zuwendungen, höchstens jedoch der Höchstbetrag nach
spendenHoechstbetrag9Nr5.
Parameter
| Name | Beschreibung |
|---|---|
k |
Kürzungsbeträge (siehe Kuerzungen9). |
gewinn |
§ 7 Satz 1: Gewinn aus Gewerbebetrieb. |
hinzurechnung8Nr9 |
§ 8 Nr. 9 (erhöht die 20-%-Bemessung). |
Rückgabe — Abziehbare Spenden nach § 9 Nr. 5 GewStG.
Quelle: § 9 Nummer 5 GewStG — § 9 GewStG
fn Kuerzung9Nr1
fn Kuerzung9Nr1(k: Kuerzungen9): EuroCent
Kürzung nach § 9 Nr. 1 GewStG: regulär die als Betriebsausgabe erfasste Grundsteuer für Betriebsgrundbesitz (Satz 1). Auf Antrag tritt bei Grundstücksunternehmen an deren Stelle die erweiterte Kürzung um den auf die Verwaltung/Nutzung des eigenen Grundbesitzes entfallenden Teil des Gewerbeertrags (Satz 2) — die beiden Kürzungen sind Alternativen, nicht kumulativ.
Parameter
| Name | Beschreibung |
|---|---|
k |
Kürzungsbeträge (siehe Kuerzungen9). |
Rückgabe — Kürzungsbetrag nach § 9 Nr. 1 GewStG.
Quelle: § 9 Nummer 1 GewStG — § 9 GewStG
fn SummeKuerzungen9
fn SummeKuerzungen9(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent
Summe der Kürzungen nach § 9 GewStG: Nr. 1 (einfach oder erweitert), die Beteiligungs-/Betriebsstätten-Kürzungen Nr. 2, 2a, 2b, 3, 7 und 8 sowie die begrenzte Spenden-Kürzung Nr. 5.
Parameter
| Name | Beschreibung |
|---|---|
k |
Kürzungsbeträge (siehe Kuerzungen9). |
gewinn |
§ 7 Satz 1: Gewinn aus Gewerbebetrieb (für § 9 Nr. 5). |
hinzurechnung8Nr9 |
§ 8 Nr. 9 (für die § 9 Nr. 5-Bemessung). |
Rückgabe — Summe der Kürzungen nach § 9 GewStG.
Quelle: § 9 GewStG — § 9 GewStG
fn Gewerbeertrag
fn Gewerbeertrag(gewinn: EuroCent, h: Hinzurechnungen8, k: Kuerzungen9): EuroCent
Gewerbeertrag nach § 7 Satz 1 i.V.m. § 10 GewStG: der Gewinn aus Gewerbebetrieb, vermehrt um die Hinzurechnungen nach § 8 und vermindert um die Kürzungen nach § 9. Kann negativ sein (Fehlbetrag); die steuerliche Auswirkung regelt der Verlustabzug bzw. die Steuerfestsetzung, nicht diese Größe.
Parameter
| Name | Beschreibung |
|---|---|
gewinn |
§ 7 Satz 1: Gewinn aus Gewerbebetrieb. |
h |
Hinzurechnungen (§ 8 GewStG). |
k |
Kürzungen (§ 9 GewStG). |
Rückgabe — Gewerbeertrag (§ 7/§ 10 GewStG), ggf. negativ.
Quelle: § 7 GewStG — § 7 GewStG
fn VerlustVerrechnungsobergrenze10a
fn VerlustVerrechnungsobergrenze10a(gewerbeertrag: EuroCent): EuroCent
Höchstens abziehbarer Fehlbetrag nach § 10a Sätze 1, 2 GewStG (Mindestbesteuerung): bei einem maßgebenden Gewerbeertrag bis 1 Mio. € ist der gesamte Gewerbeertrag verrechenbar; der 1 Mio. € übersteigende Teil nur zu 60 %. Bei einem Gewerbeertrag ≤ 0 ist kein Verlustabzug möglich (es gibt keinen positiven Ertrag zu kürzen).
Parameter
| Name | Beschreibung |
|---|---|
gewerbeertrag |
Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG). |
Rückgabe — Obergrenze des im Erhebungszeitraum verrechenbaren Fehlbetrags.
Quelle: § 10a GewStG — § 10a GewStG
fn Verlustabzug10a
fn Verlustabzug10a(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent
Tatsächlich abgezogener Fehlbetrag nach § 10a GewStG: der vortragsfähige Fehlbetrag, höchstens jedoch die Verrechnungsobergrenze nach Sätzen 1 und 2.
Parameter
| Name | Beschreibung |
|---|---|
gewerbeertrag |
Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG). |
fehlbetrag |
Gesondert festgestellter vortragsfähiger Fehlbetrag der Vorjahre (§ 10a Satz 6). |
Rückgabe — Im Erhebungszeitraum abgezogener Fehlbetrag.
Quelle: § 10a GewStG — § 10a GewStG
fn GewerbeertragNachVerlust
fn GewerbeertragNachVerlust(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent
Maßgebender Gewerbeertrag nach dem Verlustabzug des § 10a GewStG. Durch die Verrechnungsobergrenze ist das Ergebnis nie negativ.
Parameter
| Name | Beschreibung |
|---|---|
gewerbeertrag |
Maßgebender Gewerbeertrag (§ 7/§ 10 GewStG). |
fehlbetrag |
Vortragsfähiger Fehlbetrag der Vorjahre. |
Rückgabe — Gewerbeertrag nach Verlustabzug (≥ 0).
Quelle: § 10a GewStG — § 10a GewStG
fn FreibetragRoh11
fn FreibetragRoh11(rechtsform: Rechtsform): EuroCent
Roher Freibetrag nach § 11 Abs. 1 Satz 3 GewStG je Rechtsform — vor der Begrenzung „höchstens in Höhe des abgerundeten Gewerbeertrags": 24.500 € (natürliche Personen/Personengesellschaften, Nr. 1), 5.000 € (Vereine/jur. Personen öR, Nr. 2), 0 € (Kapitalgesellschaften — kein Freibetrag).
Parameter
| Name | Beschreibung |
|---|---|
rechtsform |
Rechtsform des Steuerschuldners. |
Rückgabe — Freibetrag der Rechtsform (vor Höhenbegrenzung).
Quelle: § 11 Absatz 1 Satz 3 GewStG — § 11 GewStG
fn Freibetrag11
fn Freibetrag11(rechtsform: Rechtsform, abgerundeterGewerbeertrag: EuroCent): EuroCent
Anzuwendender Freibetrag nach § 11 Abs. 1 Satz 3 GewStG: der Freibetrag der Rechtsform, höchstens jedoch in Höhe des abgerundeten Gewerbeertrags (der Freibetrag darf keinen negativen Messbetrag erzeugen).
Parameter
| Name | Beschreibung |
|---|---|
rechtsform |
Rechtsform des Steuerschuldners. |
abgerundeterGewerbeertrag |
Auf 100 € abgerundeter Gewerbeertrag. |
Rückgabe — Anzuwendender Freibetrag.
Quelle: § 11 Absatz 1 Satz 3 GewStG — § 11 GewStG
fn Steuermesszahl11
fn Steuermesszahl11(ermaessigung: Messzahlermaessigung): Prozent
Anzuwendende Steuermesszahl nach § 11 Abs. 2/3 GewStG: regulär 3,5 %; bei Hausgewerbetreibenden und Gleichgestellten ermäßigt auf 1,96 % (= 56 % von 3,5 %, § 11 Abs. 3 GewStG).
Parameter
| Name | Beschreibung |
|---|---|
ermaessigung |
Messzahl-Ermäßigung nach § 11 Abs. 3 GewStG. |
Rückgabe — Anzuwendende Steuermesszahl.
Quelle: § 11 Absatz 2 GewStG — § 11 GewStG
fn Steuermessbetrag11
fn Steuermessbetrag11(
abgerundeterGewerbeertrag: EuroCent,
freibetrag: EuroCent,
messzahl: Prozent,
): EuroCent
Steuermessbetrag nach § 11 GewStG: die um den Freibetrag verminderte, auf volle 100 € abgerundete Bemessungsgrundlage, multipliziert mit der Steuermesszahl.
Parameter
| Name | Beschreibung |
|---|---|
abgerundeterGewerbeertrag |
§ 11 Abs. 1 Satz 3. |
freibetrag |
§ 11 Abs. 1 Satz 3 (anzuwendender Freibetrag). |
messzahl |
§ 11 Abs. 2/3 (anzuwendende Steuermesszahl). |
Rückgabe — Steuermessbetrag (§ 11 GewStG).
Quelle: § 11 GewStG — § 11 GewStG
fn AngewandterHebesatz16
fn AngewandterHebesatz16(hebesatz: Prozent): Prozent
Anzuwendender Hebesatz nach § 16 Abs. 4 Satz 2 GewStG: der von der Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde keinen höheren bestimmt, beträgt er 200 %).
Parameter
| Name | Beschreibung |
|---|---|
hebesatz |
Von der Gemeinde bestimmter Hebesatz. |
Rückgabe — Anzuwendender Hebesatz (≥ 200 %).
Quelle: § 16 Absatz 4 Satz 2 GewStG — § 16 GewStG
fn Gewerbesteuer16
fn Gewerbesteuer16(steuermessbetrag: EuroCent, hebesatz: Prozent): EuroCent
Festzusetzende Gewerbesteuer nach § 16 Abs. 1 GewStG: der Steuermessbetrag, multipliziert mit dem anzuwendenden Hebesatz.
Parameter
| Name | Beschreibung |
|---|---|
steuermessbetrag |
§ 11 GewStG. |
hebesatz |
Anzuwendender Hebesatz (§ 16 GewStG). |
Rückgabe — Festzusetzende Gewerbesteuer.
Quelle: § 16 Absatz 1 GewStG — § 16 GewStG
fn BerechneGewerbesteuer
fn BerechneGewerbesteuer(betrieb: Gewerbebetrieb): GewerbesteuerErgebnis
Vollständige Festsetzung der Gewerbesteuer eines Steuerfalls in der gesetzlichen Reihenfolge: § 7 Satz 1 (Gewinn) → § 8 (Hinzurechnungen) → § 9 (Kürzungen) → § 7/§ 10 (Gewerbeertrag) → § 10a (Verlustabzug, Mindestbesteuerung) → § 11 Abs. 1 Satz 3 (Abrundung, Freibetrag) → § 11 Abs. 2/3 (Steuermesszahl, Messbetrag) → § 16 (Hebesatz). Liefert alle Zwischengrößen für die Audit-Vorlage.
Ist der maßgebende Gewerbeertrag nach Verlustabzug 0 oder negativ, entsteht kein Steuermessbetrag und keine Gewerbesteuer (alle nachfolgenden Größen sind 0); ein Verlustvortrag regelt § 10a, der hier nicht fortgeschrieben wird.
Erhebungszeiträume vor 2025 werden bewusst nicht berechnet: § 9 Nr. 1 Satz 1 (Grundsteuer-Fassung) gilt erst ab EZ 2025 (§ 36 Abs. 4b Satz 1 GewStG) — ein begründeter, nicht abfangbarer Abbruch macht diese Konstellation im Audit sichtbar.
Parameter
| Name | Beschreibung |
|---|---|
betrieb |
Eingaben des Steuerfalls (siehe Gewerbebetrieb). |
Rückgabe — Vollständig dokumentiertes Berechnungsergebnis.
Quelle: § 7 GewStG — § 7 GewStG
Explizit ausgeschlossene Konstellationen
| In | Stelle | Begründung |
|---|---|---|
BerechneGewerbesteuer |
Z. 765 |
§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab;
EZ ${betrieb.erhebungszeitraum} ist nicht abgedeckt
· Quelle: § 7 GewStG |
gewst.test
gewst.test.findsl
Akzeptanztests — Gewerbesteuer (§§ 7–11, 16 GewStG)
prüfe-Blöcke zur Datei gewerbesteuer. Alle Sollwerte sind von Hand
aus dem Gesetzeswortlaut gerechnet (GewStG, Fassung ab EZ 2025):
- § 8 Nr. 1: ¼ der Summe (a–c 100 %, d 1/5, e 1/2, f 1/4), soweit über 200.000 €.
- § 9 Nr. 1: Grundsteuer bzw. erweiterte Kürzung (Antrag, alternativ); Nr. 5: Spenden ≤ max(20 % Gewinn; 4 ‰ (Umsatz + Lohn)).
- § 10a: bis 1 Mio. € voll, darüber 60 % (Mindestbesteuerung).
- § 11: Abrundung auf 100 €, Freibetrag 24.500/5.000/0 €, Messzahl 3,5 % (Hausgewerbe 1,96 %).
- § 16: Hebesatz, mindestens 200 %.
Diese Datei enthält ausschließlich die prüfe-Blöcke.
Prüfungen
prüfe § 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)
prüfe "§ 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)"
Testfall — Summe ≤ 200.000 € → keine Hinzurechnung
Hinzurechnung8Nr1(Hinzurechnungen8(entgelteSchulden = 100.000,00)) == 0,00
Testfall — Summe genau 200.000 € → 0 (nur der übersteigende Teil zählt)
Hinzurechnung8Nr1(Hinzurechnungen8(entgelteSchulden = 200.000,00)) == 0,00
Testfall — Buchst. a + e: 1.000.000 + ½·400.000 = 1.200.000; ¼·(1.200.000−200.000) = 250.000
Hinzurechnung8Nr1(Hinzurechnungen8(
entgelteSchulden = 1.000.000,00,
mietePachtUnbeweglich = 400.000,00,
)) == 250.000,00
Testfall — Buchst. d (bewegliche WG, 1/5): 1/5·1.500.000 = 300.000; ¼·(300.000−200.000) = 25.000
Hinzurechnung8Nr1(Hinzurechnungen8(mietePachtBeweglich = 1.500.000,00)) == 25.000,00
Testfall — Buchst. f (Rechte, 1/4): 1/4·1.000.000 = 250.000; ¼·(250.000−200.000) = 12.500
Hinzurechnung8Nr1(Hinzurechnungen8(aufwendungenRechteUeberlassung = 1.000.000,00)) == 12.500,00
prüfe § 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)
prüfe "§ 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)"
Testfall — Nr. 1 (¼·800.000 = 200.000) + Nr. 4 (50.000) + Nr. 5 (30.000) = 280.000
SummeHinzurechnungen8(Hinzurechnungen8(
entgelteSchulden = 1.000.000,00,
gewinnanteilePhgKgaa = 50.000,00,
steuerfreieDividenden = 30.000,00,
)) == 280.000,00
Testfall — leere Hinzurechnungen → 0
SummeHinzurechnungen8(Hinzurechnungen8()) == 0,00
prüfe § 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)
prüfe "§ 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)"
Testfall — 20 %·500.000 = 100.000 > 4 ‰·12.000.000 = 48.000 → 100.000
SpendenHoechstbetrag9Nr5(500.000,00, 0,00, 10.000.000,00, 2.000.000,00) == 100.000,00
Testfall — kein Gewinn, 4 ‰·60.000.000 = 240.000 → 240.000
SpendenHoechstbetrag9Nr5(0,00, 0,00, 50.000.000,00, 10.000.000,00) == 240.000,00
Testfall — § 8 Nr. 9 erhöht die 20-%-Bemessung: 20 %·(400.000+100.000) = 100.000
SpendenHoechstbetrag9Nr5(400.000,00, 100.000,00, 1.000.000,00, 0,00) == 100.000,00
Testfall — Spenden-Kürzung = min(geleistet, Höchstbetrag): 120.000 gedeckelt auf 100.000
Kuerzung9Nr5(
Kuerzungen9(
geleisteteSpenden = 120.000,00,
umsaetze = 10.000.000,00,
loehneUndGehaelter = 2.000.000,00,
),
500.000,00, 0,00,
) == 100.000,00
Testfall — Spenden unter Höchstbetrag bleiben voll: 30.000
Kuerzung9Nr5(
Kuerzungen9(
geleisteteSpenden = 30.000,00,
umsaetze = 10.000.000,00,
loehneUndGehaelter = 2.000.000,00,
),
500.000,00, 0,00,
) == 30.000,00
prüfe § 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)
prüfe "§ 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)"
Testfall — Satz 1: als Betriebsausgabe erfasste Grundsteuer
Kuerzung9Nr1(Kuerzungen9(grundsteuerBetriebsgrundbesitz = 3.000,00)) == 3.000,00
Testfall — Satz 2: erweiterte Kürzung auf Antrag tritt an die Stelle von Satz 1
Kuerzung9Nr1(Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 3.000,00,
erweiterteKuerzungBeantragt = wahr,
erweiterteKuerzungGrundbesitzertrag = 50.000,00,
)) == 50.000,00
prüfe § 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)
prüfe "§ 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)"
Testfall — 800.000 + 75.000 (§ 8 Nr. 1) − 35.000 (§ 9) = 840.000
Gewerbeertrag(
800.000,00,
Hinzurechnungen8(entgelteSchulden = 500.000,00),
Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 5.000,00,
schachteldividendenInland = 30.000,00,
),
) == 840.000,00
prüfe § 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)
prüfe "§ 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)"
Testfall — GE 3 Mio., Obergrenze = 1 Mio. + 60 %·2 Mio. = 2,2 Mio.
VerlustVerrechnungsobergrenze10a(3.000.000,00) == 2.200.000,00
Testfall — GE ≤ 1 Mio.: voll verrechenbar (Obergrenze = GE)
VerlustVerrechnungsobergrenze10a(800.000,00) == 800.000,00
Testfall — GE ≤ 0: kein Verlustabzug
VerlustVerrechnungsobergrenze10a(-50.000,00) == 0,00
Testfall — GE 3 Mio., Fehlbetrag 5 Mio. → Abzug 2,2 Mio., danach 800.000
GewerbeertragNachVerlust(3.000.000,00, 5.000.000,00) == 800.000,00
Testfall — GE 500.000, Fehlbetrag 200.000 → Abzug 200.000, danach 300.000
Verlustabzug10a(500.000,00, 200.000,00) == 200.000,00
und GewerbeertragNachVerlust(500.000,00, 200.000,00) == 300.000,00
Testfall — GE 800.000 (≤ 1 Mio.), Fehlbetrag 5 Mio. → Abzug nur 800.000, danach 0
GewerbeertragNachVerlust(800.000,00, 5.000.000,00) == 0,00
prüfe § 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform
prüfe "§ 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform"
Testfall — natürliche Person/Personengesellschaft → 24.500 €
FreibetragRoh11(NatuerlichePersonPersonengesellschaft) == 24.500,00
Testfall — Verein/jur. Person öR → 5.000 €
FreibetragRoh11(VereinJuristischePersonOerR) == 5.000,00
Testfall — Kapitalgesellschaft → kein Freibetrag
FreibetragRoh11(Kapitalgesellschaft) == 0,00
Testfall — höchstens in Höhe des abgerundeten Gewerbeertrags (10.000 < 24.500)
Freibetrag11(NatuerlichePersonPersonengesellschaft, 10.000,00) == 10.000,00
Testfall — voller Freibetrag bei hohem Gewerbeertrag
Freibetrag11(NatuerlichePersonPersonengesellschaft, 197.000,00) == 24.500,00
prüfe § 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag
prüfe "§ 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag"
Testfall — Regelmesszahl 3,5 %
Steuermesszahl11(Keine) == 3,5%
Testfall — Hausgewerbetreibende: ermäßigt 1,96 % (= 56 % von 3,5 %)
Steuermesszahl11(Hausgewerbetreibender) == 1,96%
Testfall — (197.000 − 24.500)·3,5 % = 172.500·3,5 % = 6.037,50
Steuermessbetrag11(197.000,00, 24.500,00, 3,5%) == 6.037,50
Testfall — Kapitalgesellschaft ohne Freibetrag: 1.000.000·3,5 % = 35.000
Steuermessbetrag11(1.000.000,00, 0,00, 3,5%) == 35.000,00
prüfe § 16 GewStG — Hebesatz (mindestens 200 %)
prüfe "§ 16 GewStG — Hebesatz (mindestens 200 %)"
Testfall — Gemeinde-Hebesatz unter 200 % → 200 %
AngewandterHebesatz16(150%) == 200%
Testfall — genau 200 % bleibt 200 %
AngewandterHebesatz16(200%) == 200%
Testfall — höherer Hebesatz bleibt unverändert
AngewandterHebesatz16(450%) == 450%
Testfall — Steuermessbetrag · Hebesatz: 6.037,50 · 400 % = 24.150
Gewerbesteuer16(6.037,50, 400%) == 24.150,00
prüfe Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)
prüfe "Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)"
Testfall — Personengesellschaft, EZ 2025, Gewinn 200.000, Hebesatz 400 %
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 200.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(entgelteSchulden = 100.000,00),
kuerzungen = Kuerzungen9(grundsteuerBetriebsgrundbesitz = 3.000,00),
hebesatz = 400%,
),
)
e.summeHinzurechnungen == 0,00
und e.summeKuerzungen == 3.000,00
und e.gewerbeertrag == 197.000,00
und e.gewerbeertragNachVerlust == 197.000,00
und e.abgerundeterGewerbeertrag == 197.000,00
und e.freibetrag == 24.500,00
und e.steuermessbetrag == 6.037,50
und e.angewandterHebesatz == 400%
und e.gewerbesteuer == 24.150,00
Testfall — Kapitalgesellschaft, EZ 2025, Gewinn 1.000.000, Hebesatz 500 %, kein Freibetrag
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 1.000.000,00,
rechtsform = Kapitalgesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(),
hebesatz = 500%,
),
)
e.freibetrag == 0,00
und e.bemessungsgrundlage == 1.000.000,00
und e.steuermessbetrag == 35.000,00
und e.angewandterHebesatz == 500%
und e.gewerbesteuer == 175.000,00
Testfall — Volle Kette: § 8-Excess + § 9 + § 10a + Hausgewerbe, Hebesatz 410 %
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 800.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(
entgelteSchulden = 600.000,00,
steuerfreieDividenden = 20.000,00,
),
kuerzungen = Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 10.000,00,
schachteldividendenInland = 50.000,00,
geleisteteSpenden = 5.000,00,
umsaetze = 2.000.000,00,
loehneUndGehaelter = 500.000,00,
),
gewerbeverlustVortrag = 100.000,00,
messzahlermaessigung = Hausgewerbetreibender,
hebesatz = 410%,
),
)
e.summeHinzurechnungen == 120.000,00
und e.summeKuerzungen == 65.000,00
und e.gewerbeertrag == 855.000,00
und e.verlustabzug == 100.000,00
und e.gewerbeertragNachVerlust == 755.000,00
und e.bemessungsgrundlage == 730.500,00
und e.steuermesszahl == 1,96%
und e.steuermessbetrag == 14.317,80
und e.gewerbesteuer == 58.702,98
Testfall — Negativer Gewerbeertrag → kein Messbetrag, keine Steuer
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 50.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(grundsteuerBetriebsgrundbesitz = 100.000,00),
),
)
e.gewerbeertrag == -50.000,00
und e.abgerundeterGewerbeertrag == 0,00
und e.freibetrag == 0,00
und e.steuermessbetrag == 0,00
und e.gewerbesteuer == 0,00
Testfall — Erhebungszeitraum vor 2025 wird abgelehnt (§ 36 Abs. 4b GewStG) (erwartet abbruch)
BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 100.000,00,
rechtsform = Kapitalgesellschaft,
erhebungszeitraum = 2024,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(),
),
)
# Gewerbesteuer — Messbetrag und Steuer (§§ 7–11, 16 GewStG)
*Bildet die Festsetzung der Gewerbesteuer nach dem Gewerbesteuergesetz (GewStG, i.d.F.*
## Inhalt
- [gewst](#gewst)
- Konstanten
- [konst ANTEIL_8_1](#konst-anteil-8-1)
- [konst HINZURECHNUNG_FREIBETRAG_8_1](#konst-hinzurechnung-freibetrag-8-1)
- [konst ANTEIL_BEWEGLICH_8_1D](#konst-anteil-beweglich-8-1d)
- [konst ANTEIL_UNBEWEGLICH_8_1E](#konst-anteil-unbeweglich-8-1e)
- [konst ANTEIL_RECHTE_8_1F](#konst-anteil-rechte-8-1f)
- [konst SPENDEN_SATZ_GEWINN_9_5](#konst-spenden-satz-gewinn-9-5)
- [konst SPENDEN_PROMILLE_9_5](#konst-spenden-promille-9-5)
- [konst VERLUST_SOCKEL_10A](#konst-verlust-sockel-10a)
- [konst VERLUST_QUOTE_10A](#konst-verlust-quote-10a)
- [konst ABRUNDUNG_11](#konst-abrundung-11)
- [konst FREIBETRAG_NAT_PERSON_11](#konst-freibetrag-nat-person-11)
- [konst FREIBETRAG_VEREIN_11](#konst-freibetrag-verein-11)
- [konst STEUERMESSZAHL_11](#konst-steuermesszahl-11)
- [konst STEUERMESSZAHL_HAUSGEWERBE_11_3](#konst-steuermesszahl-hausgewerbe-11-3)
- [konst MINDEST_HEBESATZ_16](#konst-mindest-hebesatz-16)
- [konst FRUEHESTER_EZ](#konst-fruehester-ez)
- Datensätze
- [datensatz Hinzurechnungen8](#datensatz-hinzurechnungen8)
- [datensatz Kuerzungen9](#datensatz-kuerzungen9)
- [datensatz Gewerbebetrieb](#datensatz-gewerbebetrieb)
- [datensatz GewerbesteuerErgebnis](#datensatz-gewerbesteuerergebnis)
- Aufzählungen
- [aufzählung Rechtsform](#aufzählung-rechtsform)
- [aufzählung Messzahlermaessigung](#aufzählung-messzahlermaessigung)
- Funktionen
- [fn Hinzurechnung8Nr1](#fn-hinzurechnung8nr1)
- [fn SummeHinzurechnungen8](#fn-summehinzurechnungen8)
- [fn SpendenHoechstbetrag9Nr5](#fn-spendenhoechstbetrag9nr5)
- [fn Kuerzung9Nr5](#fn-kuerzung9nr5)
- [fn Kuerzung9Nr1](#fn-kuerzung9nr1)
- [fn SummeKuerzungen9](#fn-summekuerzungen9)
- [fn Gewerbeertrag](#fn-gewerbeertrag)
- [fn VerlustVerrechnungsobergrenze10a](#fn-verlustverrechnungsobergrenze10a)
- [fn Verlustabzug10a](#fn-verlustabzug10a)
- [fn GewerbeertragNachVerlust](#fn-gewerbeertragnachverlust)
- [fn FreibetragRoh11](#fn-freibetragroh11)
- [fn Freibetrag11](#fn-freibetrag11)
- [fn Steuermesszahl11](#fn-steuermesszahl11)
- [fn Steuermessbetrag11](#fn-steuermessbetrag11)
- [fn AngewandterHebesatz16](#fn-angewandterhebesatz16)
- [fn Gewerbesteuer16](#fn-gewerbesteuer16)
- [fn BerechneGewerbesteuer](#fn-berechnegewerbesteuer)
- [gewst.test](#gewst-test)
- Prüfungen
- [prüfe § 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)](#prüfe-8-nr-1-gewstg-finanzierungs-hinzurechnung-¼-über-200-000)
- [prüfe § 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)](#prüfe-8-gewstg-summe-der-hinzurechnungen-nr-1-nr-4-5-8-9-10-12)
- [prüfe § 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)](#prüfe-9-nr-5-gewstg-spendenhöchstbetrag-max-aus-20-und-4)
- [prüfe § 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)](#prüfe-9-nr-1-gewstg-grundbesitzkürzung-einfach-vs-erweitert)
- [prüfe § 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)](#prüfe-7-10-gewstg-gewerbeertrag-gewinn-8-9)
- [prüfe § 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)](#prüfe-10a-gewstg-gewerbeverlust-mindestbesteuerung-1-mio-60)
- [prüfe § 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform](#prüfe-11-abs-1-satz-3-gewstg-freibetrag-je-rechtsform)
- [prüfe § 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag](#prüfe-11-abs-2-3-gewstg-steuermesszahl-und-steuermessbetrag)
- [prüfe § 16 GewStG — Hebesatz (mindestens 200 %)](#prüfe-16-gewstg-hebesatz-mindestens-200)
- [prüfe Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)](#prüfe-gesamtberechnung-7-8-9-10a-11-16-gewstg)
## `gewst`
*`gewst.findsl`*
#### Gewerbesteuer — Messbetrag und Steuer (§[§ 7–11, 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__7.html))
Bildet die Festsetzung der **Gewerbesteuer** nach dem
Gewerbesteuergesetz (GewStG, i.d.F. ab Erhebungszeitraum 2025 —
insbesondere [§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html) Nr. 1 Satz 1 in der Fassung des Art. 9 G v. 2.12.2024,
[§ 36 Abs. 4b GewStG](https://www.gesetze-im-internet.de/gewstg/__36.html)) vollständig in der gesetzlichen Reihenfolge ab:
- **[§ 6 GewStG](https://www.gesetze-im-internet.de/gewstg/__6.html)** — Besteuerungsgrundlage ist der Gewerbeertrag.
- **[§ 7 Satz 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__7.html)** — Gewerbeertrag ist der nach EStG/KStG zu
ermittelnde Gewinn aus Gewerbebetrieb, vermehrt um die [§ 8](https://www.gesetze-im-internet.de/gewstg/__8.html)- und
vermindert um die [§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html)-Beträge.
- **[§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)** — Hinzurechnungen: Nr. 1 (Viertel der Summe aus
a–f Finanzierungsanteilen, soweit über 200.000 €) sowie die
Nummern 4, 5, 8, 9, 10, 12 (die übrigen Nummern sind weggefallen).
- **[§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)** — Kürzungen: Nr. 1 (Grundsteuer für Betriebs-
grundbesitz bzw. erweiterte Kürzung auf Antrag), Nr. 2/2a/2b/3/7/8
(Beteiligungs-/Betriebsstätten-Erträge) und Nr. 5 (Spenden bis
20 % des Gewinns oder 4 ‰ der Summe aus Umsätzen und Löhnen).
- **[§ 10](https://www.gesetze-im-internet.de/gewstg/__10.html)/[§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)** — maßgebender Gewerbeertrag und Kürzung um
vortragsfähige Fehlbeträge (Mindestbesteuerung: bis 1 Mio. € voll,
darüber nur 60 %).
- **[§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)** — Abrundung auf volle 100 €, Freibetrag (24.500 €
bzw. 5.000 € bzw. 0 € je Rechtsform) und Steuermesszahl 3,5 %
(ermäßigt 1,96 % bei Hausgewerbetreibenden, [§ 11](https://www.gesetze-im-internet.de/gewstg/__11.html) Abs. 3).
- **[§ 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)** — Anwendung des Hebesatzes der hebeberechtigten
Gemeinde, mindestens 200 % ([§ 16](https://www.gesetze-im-internet.de/estg/__16.html) Abs. 4 Satz 2).
**Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
Steuerbetragsberechnung):**
- Die Ermittlung des **Gewinns aus Gewerbebetrieb** selbst ([§ 7 Satz 1: „nach den Vorschriften des EStG](https://www.gesetze-im-internet.de/estg/__7.html) oder KStG"). Er geht — wie das
Einkommen i.S.d. [§ 8 Abs. 1 KStG](https://www.gesetze-im-internet.de/kstg_1977/__8.html) im KStG-Modul — als geprüfte
Eingabe ein. Ebenso die *Höhe* der einzelnen Hinzurechnungs-/
Kürzungsbeträge, die [§ 8](https://www.gesetze-im-internet.de/estg/__8.html)/[§ 9 aus EStG](https://www.gesetze-im-internet.de/estg/__9.html)/KStG-Sachverhalten ableiten
(Nr. 4/5/8/9/10/12 bzw. Nr. 2/2a/2b/3/7/8): das GewStG schreibt nur
die Verrechnung vor — diese ist hier vollständig und exakt
implementiert.
- **Zerlegung (§[§ 28–34 GewStG](https://www.gesetze-im-internet.de/gewstg/__28.html))** auf mehrere Gemeinden (Maßstab
Arbeitslöhne, Sonderfälle Windenergie/Solar/Speicher). Modelliert
ist der Regelfall **einer** hebeberechtigten Gemeinde.
- Verfahren §[§ 14a](https://www.gesetze-im-internet.de/kstg_1977/__14a.html)/[19](https://www.gesetze-im-internet.de/kstg_1977/__19.html)–21 (Vorauszahlung, Festsetzung, Zerlegungs-
bescheid), [§ 35b](https://www.gesetze-im-internet.de/kstg_1977/__35b.html) (Änderung), abgekürzter Erhebungszeitraum
([§ 14](https://www.gesetze-im-internet.de/kstg_1977/__14.html) Satz 3), Steuerbefreiungen [§ 3](https://www.gesetze-im-internet.de/kstg_1977/__3.html), optierende Gesellschaft
[§ 1a KStG](https://www.gesetze-im-internet.de/kstg_1977/__1a.html) (§ 2 Abs. 8).
- Erweiterte Kürzung § 9 Nr. 1 Satz 2 dem Grunde nach (Antrag,
Grundstücksunternehmens-Voraussetzungen) — die *Höhe* des auf den
eigenen Grundbesitz entfallenden Gewerbeertrags geht als Eingabe ein.
### Konstanten
#### konst `ANTEIL_8_1`
```findsl
konst ANTEIL_8_1: Prozent = 25%
```
Anteil der Hinzurechnung nach [§ 8 Nr. 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html): „Ein Viertel der
Summe" der Finanzierungsanteile a–f wird hinzugerechnet, soweit die
Summe den Freibetrag übersteigt.
> Quelle: § 8 Nummer 1 GewStG — [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)
#### konst `HINZURECHNUNG_FREIBETRAG_8_1`
```findsl
konst HINZURECHNUNG_FREIBETRAG_8_1: EuroCent = 200.000,00
```
Freibetrag der Finanzierungs-Hinzurechnung: erst der **200.000 €
übersteigende** Teil der gewichteten Summe a–f wird zu einem Viertel
hinzugerechnet ([§ 8 Nr. 1 letzter Halbsatz GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)).
> Quelle: § 8 Nummer 1 GewStG — [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)
#### konst `ANTEIL_BEWEGLICH_8_1D`
```findsl
konst ANTEIL_BEWEGLICH_8_1D: Prozent = 20%
```
Anteil der Miet-/Pachtzinsen (einschl. Leasingraten) für **bewegliche**
Wirtschaftsgüter des Anlagevermögens: ein Fünftel
([§ 8 Nr. 1 Buchst. d GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)).
> Quelle: § 8 Nummer 1 Buchstabe d GewStG — [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)
#### konst `ANTEIL_UNBEWEGLICH_8_1E`
```findsl
konst ANTEIL_UNBEWEGLICH_8_1E: Prozent = 50%
```
Anteil der Miet-/Pachtzinsen für **unbewegliche** Wirtschaftsgüter des
Anlagevermögens: die Hälfte ([§ 8 Nr. 1 Buchst. e GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)).
> Quelle: § 8 Nummer 1 Buchstabe e GewStG — [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)
#### konst `ANTEIL_RECHTE_8_1F`
```findsl
konst ANTEIL_RECHTE_8_1F: Prozent = 25%
```
Anteil der Aufwendungen für die zeitlich befristete Überlassung von
Rechten (Konzessionen, Lizenzen): ein Viertel
([§ 8 Nr. 1 Buchst. f GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)).
> Quelle: § 8 Nummer 1 Buchstabe f GewStG — [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)
#### konst `SPENDEN_SATZ_GEWINN_9_5`
```findsl
konst SPENDEN_SATZ_GEWINN_9_5: Prozent = 20%
```
Spenden-Höchstsatz I ([§ 9 Nr. 5 Satz 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)): 20 % des um die
Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb.
> Quelle: § 9 Nummer 5 GewStG — [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)
#### konst `SPENDEN_PROMILLE_9_5`
```findsl
konst SPENDEN_PROMILLE_9_5: Prozent = 0,4%
```
Spenden-Höchstsatz II ([§ 9 Nr. 5 Satz 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)): 4 Promille der Summe
der gesamten Umsätze und der im Wirtschaftsjahr aufgewendeten Löhne
und Gehälter. 4 ‰ = 0,4 %.
> Quelle: § 9 Nummer 5 GewStG — [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)
#### konst `VERLUST_SOCKEL_10A`
```findsl
konst VERLUST_SOCKEL_10A: EuroCent = 1.000.000,00
```
Sockelbetrag des Verlustabzugs: der maßgebende Gewerbeertrag wird bis
zu **1 Mio. €** ungekürzt um Fehlbeträge gemindert
([§ 10a Satz 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)).
> Quelle: § 10a Satz 1 GewStG — [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)
#### konst `VERLUST_QUOTE_10A`
```findsl
konst VERLUST_QUOTE_10A: Prozent = 60%
```
Mindestbesteuerungsquote: der 1 Mio. € übersteigende maßgebende
Gewerbeertrag ist nur bis zu **60 %** um Fehlbeträge zu kürzen
([§ 10a Satz 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)).
> Quelle: § 10a Satz 2 GewStG — [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)
#### konst `ABRUNDUNG_11`
```findsl
konst ABRUNDUNG_11: EuroCent = 100,00
```
Abrundungsstufe: der Gewerbeertrag ist auf volle **100 €** nach unten
abzurunden ([§ 11 Abs. 1 Satz 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)).
> Quelle: § 11 Absatz 1 Satz 3 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### konst `FREIBETRAG_NAT_PERSON_11`
```findsl
konst FREIBETRAG_NAT_PERSON_11: EuroCent = 24.500,00
```
Freibetrag bei **natürlichen Personen und Personengesellschaften**:
24.500 €, höchstens in Höhe des abgerundeten Gewerbeertrags
([§ 11 Abs. 1 Satz 3 Nr. 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)).
> Quelle: § 11 Absatz 1 Satz 3 Nummer 1 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### konst `FREIBETRAG_VEREIN_11`
```findsl
konst FREIBETRAG_VEREIN_11: EuroCent = 5.000,00
```
Freibetrag bei sonstigen juristischen Personen des privaten Rechts und
Vereinen ([§ 2](https://www.gesetze-im-internet.de/gewstg/__2.html) Abs. 3), Unternehmen i.S.d. [§ 3](https://www.gesetze-im-internet.de/gewstg/__3.html) Nr. 5/6/… sowie
juristischen Personen des öffentlichen Rechts: 5.000 €, höchstens in
Höhe des abgerundeten Gewerbeertrags ([§ 11 Abs. 1 Satz 3 Nr. 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)).
> Quelle: § 11 Absatz 1 Satz 3 Nummer 2 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### konst `STEUERMESSZAHL_11`
```findsl
konst STEUERMESSZAHL_11: Prozent = 3,5%
```
Steuermesszahl für den Gewerbeertrag: **3,5 %** ([§ 11 Abs. 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)).
> Quelle: § 11 Absatz 2 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### konst `STEUERMESSZAHL_HAUSGEWERBE_11_3`
```findsl
konst STEUERMESSZAHL_HAUSGEWERBE_11_3: Prozent = 1,96%
```
Ermäßigte Steuermesszahl für Hausgewerbetreibende und Gleichgestellte:
die Messzahl ermäßigt sich auf **56 %** von 3,5 %, also **1,96 %**
([§ 11 Abs. 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)).
> Quelle: § 11 Absatz 3 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### konst `MINDEST_HEBESATZ_16`
```findsl
konst MINDEST_HEBESATZ_16: Prozent = 200%
```
Mindest-Hebesatz: beträgt 200 %, wenn die Gemeinde keinen höheren
Hebesatz bestimmt hat ([§ 16 Abs. 4 Satz 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)).
> Quelle: § 16 Absatz 4 Satz 2 GewStG — [§ 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)
#### konst `FRUEHESTER_EZ`
```findsl
konst FRUEHESTER_EZ: Ganzzahl = 2025
```
Frühester von diesem Modul abgebildeter Erhebungszeitraum. Die hier
implementierte Fassung gilt insbesondere für [§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html) Nr. 1 Satz 1
(Grundsteuer-Fassung) erstmals für den Erhebungszeitraum 2025
([§ 36 Abs. 4b Satz 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__36.html)).
> Quelle: § 36 Absatz 4b GewStG — [§ 36 GewStG](https://www.gesetze-im-internet.de/gewstg/__36.html)
### Datensätze
#### datensatz `Hinzurechnungen8`
```findsl
datensatz Hinzurechnungen8(
entgelteSchulden: EuroCent = 0,00, // § 8 Nr. 1 a (100 %)
rentenDauerndeLasten: EuroCent = 0,00, // § 8 Nr. 1 b (100 %)
gewinnanteileStillerGesellschafter: EuroCent = 0,00, // § 8 Nr. 1 c (100 %)
mietePachtBeweglich: EuroCent = 0,00, // § 8 Nr. 1 d (1/5)
mietePachtUnbeweglich: EuroCent = 0,00, // § 8 Nr. 1 e (1/2)
aufwendungenRechteUeberlassung: EuroCent = 0,00, // § 8 Nr. 1 f (1/4)
gewinnanteilePhgKgaa: EuroCent = 0,00, // § 8 Nr. 4 (100 %)
steuerfreieDividenden: EuroCent = 0,00, // § 8 Nr. 5 (100 %)
verlustanteileMitunternehmerschaft: EuroCent = 0,00, // § 8 Nr. 8 (100 %)
ausgaben9Abs1Nr2KStG: EuroCent = 0,00, // § 8 Nr. 9 (100 %)
gewinnminderungenTeilwert: EuroCent = 0,00, // § 8 Nr. 10 (100 %)
auslaendischeSteuern: EuroCent = 0,00, // § 8 Nr. 12 (100 %)
)
```
Hinzurechnungsbeträge nach [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html). Die Beträge a–f der Nr. 1 sind
**vor** der gesetzlichen Gewichtung (20 %/50 %/25 %) und **vor** dem
Freibetrag/Viertel anzugeben — diese wendet `hinzurechnung8Nr1` an.
Die Nummern 4, 5, 8, 9, 10, 12 werden in voller Höhe hinzugerechnet
und sind als die bereits nach EStG/KStG ermittelten Beträge
einzutragen (Nr. 2/3/6/7/11 GewStG sind weggefallen).
| Feld | Typ | Bedeutung |
| --- | --- | --- |
| `entgelteSchulden` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 1 Buchst. a: Entgelte für Schulden (Zinsen, Skonti, Diskontbeträge), 100 %. |
| `rentenDauerndeLasten` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 1 Buchst. b: Renten und dauernde Lasten, 100 %. |
| `gewinnanteileStillerGesellschafter` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 1 Buchst. c: Gewinnanteile des stillen Gesellschafters, 100 %. |
| `mietePachtBeweglich` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 1 Buchst. d: Miet-/Pachtzinsen (inkl. Leasing) für bewegliche WG des Anlagevermögens — geht zu einem Fünftel ein. |
| `mietePachtUnbeweglich` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 1 Buchst. e: Miet-/Pachtzinsen für unbewegliche WG des Anlagevermögens — geht zur Hälfte ein. |
| `aufwendungenRechteUeberlassung` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 1 Buchst. f: Aufwendungen für zeitlich befristete Rechteüberlassung — geht zu einem Viertel ein. |
| `gewinnanteilePhgKgaa` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 4: Gewinnanteile an persönlich haftende Gesellschafter einer KGaA, 100 %. |
| `steuerfreieDividenden` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 5: nach [§ 3 Nr. 40 EStG](https://www.gesetze-im-internet.de/estg/__3.html) / [§ 8b KStG](https://www.gesetze-im-internet.de/kstg_1977/__8b.html) außer Ansatz gebliebene Gewinnanteile (Streubesitz), 100 %. |
| `verlustanteileMitunternehmerschaft` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/kstg_1977/__8.html) Nr. 8: Anteile am Verlust einer Mitunternehmerschaft, 100 %. |
| `ausgaben9Abs1Nr2KStG` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/kstg_1977/__8.html) Nr. 9: Ausgaben i.S.d. [§ 9 Abs. 1 Nr. 2 KStG](https://www.gesetze-im-internet.de/kstg_1977/__9.html) (abziehbare Zuwendungen), 100 %. |
| `gewinnminderungenTeilwert` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 10: Gewinnminderungen durch Teilwertansatz/Veräußerung von Körperschaftsanteilen, 100 %. |
| `auslaendischeSteuern` | `EuroCent` | [§ 8](https://www.gesetze-im-internet.de/estg/__8.html) Nr. 12: nach [§ 34c EStG](https://www.gesetze-im-internet.de/estg/__34c.html) abgezogene ausländische Steuern, 100 %. |
> Quelle: § 8 GewStG — [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)
#### datensatz `Kuerzungen9`
```findsl
datensatz Kuerzungen9(
grundsteuerBetriebsgrundbesitz: EuroCent = 0,00, // § 9 Nr. 1 S. 1
erweiterteKuerzungBeantragt: Wahrheitswert = falsch, // § 9 Nr. 1 S. 2 (Antrag)
erweiterteKuerzungGrundbesitzertrag: EuroCent = 0,00, // § 9 Nr. 1 S. 2
gewinnanteileMitunternehmerschaft: EuroCent = 0,00, // § 9 Nr. 2
schachteldividendenInland: EuroCent = 0,00, // § 9 Nr. 2a
kgaaGewinnanteile: EuroCent = 0,00, // § 9 Nr. 2b
auslandsbetriebsstaette: EuroCent = 0,00, // § 9 Nr. 3
geleisteteSpenden: EuroCent = 0,00, // § 9 Nr. 5
umsaetze: EuroCent = 0,00, // § 9 Nr. 5 (4 ‰)
loehneUndGehaelter: EuroCent = 0,00, // § 9 Nr. 5 (4 ‰)
schachteldividendenAuslandNr7: EuroCent = 0,00, // § 9 Nr. 7
schachteldividendenDbaNr8: EuroCent = 0,00, // § 9 Nr. 8
)
```
Kürzungsbeträge nach [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html). Die Spenden-Begrenzung (Nr. 5) und
die Wahl zwischen einfacher und erweiterter Grundbesitzkürzung (Nr. 1)
werden von den Funktionen angewandt; alle übrigen Nummern werden in
der angegebenen Höhe abgezogen.
| Feld | Typ | Bedeutung |
| --- | --- | --- |
| `grundsteuerBetriebsgrundbesitz` | `EuroCent` | § 9 Nr. 1 Satz 1: im Erhebungszeitraum als Betriebsausgabe erfasste Grundsteuer für zum Betriebsvermögen gehörenden Grundbesitz. |
| `erweiterteKuerzungBeantragt` | `Wahrheitswert` | § 9 Nr. 1 Satz 2: Antrag auf erweiterte Kürzung bei Grundstücks- unternehmen (tritt an die Stelle von Satz 1). |
| `erweiterteKuerzungGrundbesitzertrag` | `EuroCent` | § 9 Nr. 1 Satz 2: Teil des Gewerbeertrags, der auf die Verwaltung und Nutzung des eigenen Grundbesitzes entfällt (extern ermittelt; nur bei Antrag). |
| `gewinnanteileMitunternehmerschaft` | `EuroCent` | § 9 Nr. 2: Anteile am Gewinn einer Mitunternehmerschaft. |
| `schachteldividendenInland` | `EuroCent` | § 9 Nr. 2a: Gewinne aus Anteilen an inländischer Kapitalgesellschaft bei Beteiligung ≥ 15 % zu Beginn des EZ. |
| `kgaaGewinnanteile` | `EuroCent` | § 9 Nr. 2b: nach § 8 Nr. 4 dem Gewerbeertrag einer KGaA hinzugerechnete Gewinnanteile. |
| `auslandsbetriebsstaette` | `EuroCent` | § 9 Nr. 3: Teil des Gewerbeertrags, der auf eine nicht im Inland belegene Betriebsstätte entfällt. |
| `geleisteteSpenden` | `EuroCent` | § 9 Nr. 5: aus Betriebsmitteln geleistete Zuwendungen für steuerbegünstigte Zwecke (vor Höchstbetragsbegrenzung). |
| `umsaetze` | `EuroCent` | § 9 Nr. 5: Summe der gesamten Umsätze (Bemessung des 4-‰-Höchstsatzes). |
| `loehneUndGehaelter` | `EuroCent` | § 9 Nr. 5: im Wirtschaftsjahr aufgewendete Löhne und Gehälter (Bemessung des 4-‰-Höchstsatzes). |
| `schachteldividendenAuslandNr7` | `EuroCent` | § 9 Nr. 7: Gewinne aus Anteilen an einer Kapitalgesellschaft außerhalb des Geltungsbereichs, Beteiligung ≥ 15 %. |
| `schachteldividendenDbaNr8` | `EuroCent` | § 9 Nr. 8: nach DBA befreite Gewinne aus Anteilen an einer ausländischen Gesellschaft (Mindestbeteiligung). |
> Quelle: § 9 GewStG — [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)
#### datensatz `Gewerbebetrieb`
```findsl
datensatz Gewerbebetrieb(
gewinnAusGewerbebetrieb: EuroCent, // § 7 S. 1 (nach EStG/KStG)
rechtsform: Rechtsform, // § 5/§ 11 GewStG
erhebungszeitraum: Ganzzahl, // § 14 S. 2 GewStG
hinzurechnungen: Hinzurechnungen8, // § 8 GewStG
kuerzungen: Kuerzungen9, // § 9 GewStG
gewerbeverlustVortrag: EuroCent = 0,00, // § 10a GewStG
messzahlermaessigung: Messzahlermaessigung = Keine, // § 11 Abs. 3 GewStG
hebesatz: Prozent = 200%, // § 16 GewStG
)
```
Eingaben eines Gewerbesteuerfalls für **eine** hebeberechtigte
Gemeinde (Regelfall ohne Zerlegung).
| Feld | Typ | Bedeutung |
| --- | --- | --- |
| `gewinnAusGewerbebetrieb` | `EuroCent` | [§ 7 Satz 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__7.html): der nach EStG/KStG ermittelte Gewinn aus Gewerbebetrieb (extern ermittelt; Bemessungsbasis vor §[§ 8](https://www.gesetze-im-internet.de/gewstg/__8.html)/[9](https://www.gesetze-im-internet.de/gewstg/__9.html)). |
| `rechtsform` | `Rechtsform` | Rechtsform des Steuerschuldners — bestimmt den Freibetrag nach [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html). |
| `erhebungszeitraum` | `Ganzzahl` | Kalenderjahr des Erhebungszeitraums ([§ 14 Satz 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__14.html)). |
| `hinzurechnungen` | `Hinzurechnungen8` | [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html) (siehe `Hinzurechnungen8`). |
| `kuerzungen` | `Kuerzungen9` | [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html) (siehe `Kuerzungen9`). |
| `gewerbeverlustVortrag` | `EuroCent` | [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html): zum Schluss des vorangegangenen EZ gesondert festgestellte vortragsfähige Fehlbeträge ([§ 10a](https://www.gesetze-im-internet.de/gewstg/__10a.html) Satz 6). |
| `messzahlermaessigung` | `Messzahlermaessigung` | [§ 11 Abs. 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html). |
| `hebesatz` | `Prozent` | Von der Gemeinde bestimmter Hebesatz ([§ 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)); mindestens 200 % werden angewandt (§ 16 Abs. 4 Satz 2). |
> Quelle: § 7 GewStG — [§ 7 GewStG](https://www.gesetze-im-internet.de/gewstg/__7.html)
#### datensatz `GewerbesteuerErgebnis`
```findsl
datensatz GewerbesteuerErgebnis(
gewinn: EuroCent, // § 7 S. 1 (Eingabe)
summeHinzurechnungen: EuroCent, // § 8 GewStG
summeKuerzungen: EuroCent, // § 9 GewStG
gewerbeertrag: EuroCent, // § 7/§ 10 GewStG
verlustabzug: EuroCent, // § 10a GewStG
gewerbeertragNachVerlust: EuroCent, // § 10a GewStG (≥ 0)
abgerundeterGewerbeertrag: EuroCent, // § 11 Abs. 1 S. 3
freibetrag: EuroCent, // § 11 Abs. 1 S. 3
bemessungsgrundlage: EuroCent, // abger. GE − Freibetrag
steuermesszahl: Prozent, // § 11 Abs. 2/3
steuermessbetrag: EuroCent, // § 11 GewStG
angewandterHebesatz: Prozent, // § 16 GewStG
gewerbesteuer: EuroCent, // § 16 GewStG
)
```
Vollständige, prüfbare Berechnungsdokumentation eines
Gewerbesteuerfalls — jede Zwischengröße der gesetzlichen
Reihenfolge ist einzeln ausgewiesen, damit die Festsetzung Schritt
für Schritt gegen das Gesetz auditierbar ist.
| Feld | Typ | Bedeutung |
| --- | --- | --- |
| `gewinn` | `EuroCent` | [§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html) Satz 1: Gewinn aus Gewerbebetrieb (Eingabe, unverändert übernommen). |
| `summeHinzurechnungen` | `EuroCent` | [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html): Summe aller Hinzurechnungen. |
| `summeKuerzungen` | `EuroCent` | [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html): Summe aller Kürzungen. |
| `gewerbeertrag` | `EuroCent` | [§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html)/[§ 10 GewStG](https://www.gesetze-im-internet.de/gewstg/__10.html): Gewinn + [§ 8](https://www.gesetze-im-internet.de/gewstg/__8.html) − [§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html). |
| `verlustabzug` | `EuroCent` | [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html): tatsächlich abgezogener Fehlbetrag (Mindestbesteuerung beachtet). |
| `gewerbeertragNachVerlust` | `EuroCent` | [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html): maßgebender Gewerbeertrag nach Verlustabzug (nicht negativ). |
| `abgerundeterGewerbeertrag` | `EuroCent` | [§ 11](https://www.gesetze-im-internet.de/gewstg/__11.html) Abs. 1 Satz 3: auf volle 100 € abgerundet. |
| `freibetrag` | `EuroCent` | [§ 11](https://www.gesetze-im-internet.de/gewstg/__11.html) Abs. 1 Satz 3: angewandter Freibetrag. |
| `bemessungsgrundlage` | `EuroCent` | Abgerundeter Gewerbeertrag − Freibetrag. |
| `steuermesszahl` | `Prozent` | [§ 11 Abs. 2/3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html): angewandte Messzahl. |
| `steuermessbetrag` | `EuroCent` | [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html): Bemessungsgrundlage × Messzahl. |
| `angewandterHebesatz` | `Prozent` | [§ 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html): angewandter Hebesatz (mindestens 200 %). |
| `gewerbesteuer` | `EuroCent` | [§ 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html): Steuermessbetrag × Hebesatz. |
> Quelle: § 7 GewStG — [§ 7 GewStG](https://www.gesetze-im-internet.de/gewstg/__7.html)
### Aufzählungen
#### aufzählung `Rechtsform`
```findsl
aufzählung Rechtsform {
NatuerlichePersonPersonengesellschaft,
Kapitalgesellschaft,
VereinJuristischePersonOerR,
}
```
Rechtsform des Steuerschuldners ([§ 5 GewStG](https://www.gesetze-im-internet.de/gewstg/__5.html)) — bestimmt den Freibetrag
nach [§ 11 Abs. 1 Satz 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `NatuerlichePersonPersonengesellschaft` | Einzelunternehmen oder Personengesellschaft (Mitunternehmerschaft) — Freibetrag 24.500 € ([§ 11 Abs. 1 S. 3 Nr. 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)). |
| `Kapitalgesellschaft` | Kapitalgesellschaft / Genossenschaft ([§ 2 Abs. 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__2.html)) — **kein** Freibetrag. |
| `VereinJuristischePersonOerR` | Sonstige juristische Personen des privaten Rechts, Vereine ([§ 2](https://www.gesetze-im-internet.de/gewstg/__2.html) Abs. 3) und juristische Personen des öffentlichen Rechts — Freibetrag 5.000 € ([§ 11 Abs. 1 S. 3 Nr. 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)). |
**Werte:** `NatuerlichePersonPersonengesellschaft`, `Kapitalgesellschaft`, `VereinJuristischePersonOerR`
> Quelle: § 11 Absatz 1 Satz 3 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### aufzählung `Messzahlermaessigung`
```findsl
aufzählung Messzahlermaessigung {
Keine,
Hausgewerbetreibender,
}
```
Ermäßigung der Steuermesszahl nach [§ 11 Abs. 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `Keine` | Regelmesszahl 3,5 % ([§ 11 Abs. 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)). |
| `Hausgewerbetreibender` | Hausgewerbetreibende und nach dem Heimarbeitsgesetz Gleichgestellte — ermäßigte Messzahl 1,96 % ([§ 11 Abs. 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)). |
**Werte:** `Keine`, `Hausgewerbetreibender`
> Quelle: § 11 Absatz 3 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
### Funktionen
#### fn `Hinzurechnung8Nr1`
```findsl
fn Hinzurechnung8Nr1(h: Hinzurechnungen8): EuroCent
```
Hinzurechnung nach **[§ 8 Nr. 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)**: Ein Viertel der Summe aus
den Finanzierungsanteilen a–f, soweit die Summe **200.000 €
übersteigt**. Buchst. a–c gehen zu 100 %, Buchst. d (bewegliche WG)
zu einem Fünftel, Buchst. e (unbewegliche WG) zur Hälfte, Buchst. f
(Rechteüberlassung) zu einem Viertel in die Summe ein. Liegt die
gewichtete Summe ≤ 200.000 €, ist die Hinzurechnung nach Nr. 1 = 0.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `h` | Hinzurechnungsbeträge (siehe `Hinzurechnungen8`). |
**Rückgabe** — Hinzurechnungsbetrag nach [§ 8 Nr. 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html).
> Quelle: § 8 Nummer 1 GewStG — [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)
#### fn `SummeHinzurechnungen8`
```findsl
fn SummeHinzurechnungen8(h: Hinzurechnungen8): EuroCent
```
Summe der Hinzurechnungen nach **[§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)**: der Betrag nach Nr. 1
zuzüglich der in voller Höhe hinzuzurechnenden Nummern 4, 5, 8, 9, 10
und 12 (Nr. 2/3/6/7/11 GewStG sind weggefallen).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `h` | Hinzurechnungsbeträge (siehe `Hinzurechnungen8`). |
**Rückgabe** — Summe der Hinzurechnungen nach [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html).
> Quelle: § 8 GewStG — [§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)
#### fn `SpendenHoechstbetrag9Nr5`
```findsl
fn SpendenHoechstbetrag9Nr5(
gewinn: EuroCent,
hinzurechnung8Nr9: EuroCent,
umsaetze: EuroCent,
loehneUndGehaelter: EuroCent,
): EuroCent
```
Höchstbetrag der Spenden-Kürzung nach **[§ 9 Nr. 5 Satz 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)**:
der höhere Betrag aus
- 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus
Gewerbebetrieb und
- 4 ‰ (0,4 %) der Summe aus den gesamten Umsätzen und den im
Wirtschaftsjahr aufgewendeten Löhnen und Gehältern.
Ein negativer „20 %"-Wert (bei Verlust) wird durch die Maximum-Bildung
mit dem nicht-negativen 4-‰-Wert bzw. die Nicht-negativ-Kappung
abgefangen.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `gewinn` | § 7 Satz 1: Gewinn aus Gewerbebetrieb. |
| `hinzurechnung8Nr9` | § 8 Nr. 9: erhöht die 20-%-Bemessung. |
| `umsaetze` | Summe der gesamten Umsätze. |
| `loehneUndGehaelter` | Aufgewendete Löhne und Gehälter. |
**Rückgabe** — Höchstbetrag der nach § 9 Nr. 5 abziehbaren Spenden.
> Quelle: § 9 Nummer 5 GewStG — [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)
#### fn `Kuerzung9Nr5`
```findsl
fn Kuerzung9Nr5(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent
```
Tatsächlich abziehbare Spenden-Kürzung nach [§ 9 Nr. 5 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html): die
geleisteten Zuwendungen, höchstens jedoch der Höchstbetrag nach
`spendenHoechstbetrag9Nr5`.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `k` | Kürzungsbeträge (siehe `Kuerzungen9`). |
| `gewinn` | [§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html) Satz 1: Gewinn aus Gewerbebetrieb. |
| `hinzurechnung8Nr9` | [§ 8](https://www.gesetze-im-internet.de/gewstg/__8.html) Nr. 9 (erhöht die 20-%-Bemessung). |
**Rückgabe** — Abziehbare Spenden nach [§ 9 Nr. 5 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html).
> Quelle: § 9 Nummer 5 GewStG — [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)
#### fn `Kuerzung9Nr1`
```findsl
fn Kuerzung9Nr1(k: Kuerzungen9): EuroCent
```
Kürzung nach **[§ 9 Nr. 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)**: regulär die als Betriebsausgabe
erfasste Grundsteuer für Betriebsgrundbesitz (Satz 1). Auf Antrag
tritt bei Grundstücksunternehmen **an deren Stelle** die erweiterte
Kürzung um den auf die Verwaltung/Nutzung des eigenen Grundbesitzes
entfallenden Teil des Gewerbeertrags (Satz 2) — die beiden Kürzungen
sind Alternativen, nicht kumulativ.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `k` | Kürzungsbeträge (siehe `Kuerzungen9`). |
**Rückgabe** — Kürzungsbetrag nach [§ 9 Nr. 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html).
> Quelle: § 9 Nummer 1 GewStG — [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)
#### fn `SummeKuerzungen9`
```findsl
fn SummeKuerzungen9(k: Kuerzungen9, gewinn: EuroCent, hinzurechnung8Nr9: EuroCent): EuroCent
```
Summe der Kürzungen nach **[§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)**: Nr. 1 (einfach oder
erweitert), die Beteiligungs-/Betriebsstätten-Kürzungen Nr. 2, 2a,
2b, 3, 7 und 8 sowie die begrenzte Spenden-Kürzung Nr. 5.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `k` | Kürzungsbeträge (siehe `Kuerzungen9`). |
| `gewinn` | [§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html) Satz 1: Gewinn aus Gewerbebetrieb (für [§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html) Nr. 5). |
| `hinzurechnung8Nr9` | [§ 8](https://www.gesetze-im-internet.de/gewstg/__8.html) Nr. 9 (für die [§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html) Nr. 5-Bemessung). |
**Rückgabe** — Summe der Kürzungen nach [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html).
> Quelle: § 9 GewStG — [§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)
#### fn `Gewerbeertrag`
```findsl
fn Gewerbeertrag(gewinn: EuroCent, h: Hinzurechnungen8, k: Kuerzungen9): EuroCent
```
Gewerbeertrag nach **[§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html) Satz 1 i.V.m. [§ 10 GewStG](https://www.gesetze-im-internet.de/gewstg/__10.html)**: der Gewinn aus
Gewerbebetrieb, vermehrt um die Hinzurechnungen nach [§ 8](https://www.gesetze-im-internet.de/gewstg/__8.html) und
vermindert um die Kürzungen nach [§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html). Kann negativ sein (Fehlbetrag);
die steuerliche Auswirkung regelt der Verlustabzug bzw. die
Steuerfestsetzung, nicht diese Größe.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `gewinn` | [§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html) Satz 1: Gewinn aus Gewerbebetrieb. |
| `h` | Hinzurechnungen ([§ 8 GewStG](https://www.gesetze-im-internet.de/gewstg/__8.html)). |
| `k` | Kürzungen ([§ 9 GewStG](https://www.gesetze-im-internet.de/gewstg/__9.html)). |
**Rückgabe** — Gewerbeertrag ([§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html)/[§ 10 GewStG](https://www.gesetze-im-internet.de/gewstg/__10.html)), ggf. negativ.
> Quelle: § 7 GewStG — [§ 7 GewStG](https://www.gesetze-im-internet.de/gewstg/__7.html)
#### fn `VerlustVerrechnungsobergrenze10a`
```findsl
fn VerlustVerrechnungsobergrenze10a(gewerbeertrag: EuroCent): EuroCent
```
Höchstens abziehbarer Fehlbetrag nach **[§ 10a Sätze 1, 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)**
(Mindestbesteuerung): bei einem maßgebenden Gewerbeertrag bis
1 Mio. € ist der gesamte Gewerbeertrag verrechenbar; der 1 Mio. €
übersteigende Teil nur zu 60 %. Bei einem Gewerbeertrag ≤ 0 ist kein
Verlustabzug möglich (es gibt keinen positiven Ertrag zu kürzen).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `gewerbeertrag` | Maßgebender Gewerbeertrag ([§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html)/[§ 10 GewStG](https://www.gesetze-im-internet.de/gewstg/__10.html)). |
**Rückgabe** — Obergrenze des im Erhebungszeitraum verrechenbaren Fehlbetrags.
> Quelle: § 10a GewStG — [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)
#### fn `Verlustabzug10a`
```findsl
fn Verlustabzug10a(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent
```
Tatsächlich abgezogener Fehlbetrag nach **[§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)**: der
vortragsfähige Fehlbetrag, höchstens jedoch die Verrechnungsobergrenze
nach Sätzen 1 und 2.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `gewerbeertrag` | Maßgebender Gewerbeertrag ([§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html)/[§ 10 GewStG](https://www.gesetze-im-internet.de/gewstg/__10.html)). |
| `fehlbetrag` | Gesondert festgestellter vortragsfähiger Fehlbetrag der Vorjahre (§ 10a Satz 6). |
**Rückgabe** — Im Erhebungszeitraum abgezogener Fehlbetrag.
> Quelle: § 10a GewStG — [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)
#### fn `GewerbeertragNachVerlust`
```findsl
fn GewerbeertragNachVerlust(gewerbeertrag: EuroCent, fehlbetrag: EuroCent): EuroCent
```
Maßgebender Gewerbeertrag **nach** dem Verlustabzug des [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html).
Durch die Verrechnungsobergrenze ist das Ergebnis nie negativ.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `gewerbeertrag` | Maßgebender Gewerbeertrag ([§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html)/[§ 10 GewStG](https://www.gesetze-im-internet.de/gewstg/__10.html)). |
| `fehlbetrag` | Vortragsfähiger Fehlbetrag der Vorjahre. |
**Rückgabe** — Gewerbeertrag nach Verlustabzug (≥ 0).
> Quelle: § 10a GewStG — [§ 10a GewStG](https://www.gesetze-im-internet.de/gewstg/__10a.html)
#### fn `FreibetragRoh11`
```findsl
fn FreibetragRoh11(rechtsform: Rechtsform): EuroCent
```
Roher Freibetrag nach **[§ 11 Abs. 1 Satz 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)** je Rechtsform —
**vor** der Begrenzung „höchstens in Höhe des abgerundeten
Gewerbeertrags": 24.500 € (natürliche Personen/Personengesellschaften,
Nr. 1), 5.000 € (Vereine/jur. Personen öR, Nr. 2), 0 €
(Kapitalgesellschaften — kein Freibetrag).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `rechtsform` | Rechtsform des Steuerschuldners. |
**Rückgabe** — Freibetrag der Rechtsform (vor Höhenbegrenzung).
> Quelle: § 11 Absatz 1 Satz 3 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### fn `Freibetrag11`
```findsl
fn Freibetrag11(rechtsform: Rechtsform, abgerundeterGewerbeertrag: EuroCent): EuroCent
```
Anzuwendender Freibetrag nach **[§ 11 Abs. 1 Satz 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)**: der
Freibetrag der Rechtsform, höchstens jedoch in Höhe des abgerundeten
Gewerbeertrags (der Freibetrag darf keinen negativen Messbetrag
erzeugen).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `rechtsform` | Rechtsform des Steuerschuldners. |
| `abgerundeterGewerbeertrag` | Auf 100 € abgerundeter Gewerbeertrag. |
**Rückgabe** — Anzuwendender Freibetrag.
> Quelle: § 11 Absatz 1 Satz 3 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### fn `Steuermesszahl11`
```findsl
fn Steuermesszahl11(ermaessigung: Messzahlermaessigung): Prozent
```
Anzuwendende Steuermesszahl nach **[§ 11 Abs. 2/3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)**: regulär
3,5 %; bei Hausgewerbetreibenden und Gleichgestellten ermäßigt auf
1,96 % (= 56 % von 3,5 %, [§ 11 Abs. 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `ermaessigung` | Messzahl-Ermäßigung nach [§ 11 Abs. 3 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html). |
**Rückgabe** — Anzuwendende Steuermesszahl.
> Quelle: § 11 Absatz 2 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### fn `Steuermessbetrag11`
```findsl
fn Steuermessbetrag11(
abgerundeterGewerbeertrag: EuroCent,
freibetrag: EuroCent,
messzahl: Prozent,
): EuroCent
```
Steuermessbetrag nach **[§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)**: die um den Freibetrag
verminderte, auf volle 100 € abgerundete Bemessungsgrundlage,
multipliziert mit der Steuermesszahl.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `abgerundeterGewerbeertrag` | [§ 11](https://www.gesetze-im-internet.de/gewstg/__11.html) Abs. 1 Satz 3. |
| `freibetrag` | [§ 11](https://www.gesetze-im-internet.de/gewstg/__11.html) Abs. 1 Satz 3 (anzuwendender Freibetrag). |
| `messzahl` | [§ 11](https://www.gesetze-im-internet.de/gewstg/__11.html) Abs. 2/3 (anzuwendende Steuermesszahl). |
**Rückgabe** — Steuermessbetrag ([§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)).
> Quelle: § 11 GewStG — [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html)
#### fn `AngewandterHebesatz16`
```findsl
fn AngewandterHebesatz16(hebesatz: Prozent): Prozent
```
Anzuwendender Hebesatz nach **[§ 16 Abs. 4 Satz 2 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)**: der von der
Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde
keinen höheren bestimmt, beträgt er 200 %).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `hebesatz` | Von der Gemeinde bestimmter Hebesatz. |
**Rückgabe** — Anzuwendender Hebesatz (≥ 200 %).
> Quelle: § 16 Absatz 4 Satz 2 GewStG — [§ 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)
#### fn `Gewerbesteuer16`
```findsl
fn Gewerbesteuer16(steuermessbetrag: EuroCent, hebesatz: Prozent): EuroCent
```
Festzusetzende Gewerbesteuer nach **[§ 16 Abs. 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)**: der
Steuermessbetrag, multipliziert mit dem anzuwendenden Hebesatz.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `steuermessbetrag` | [§ 11 GewStG](https://www.gesetze-im-internet.de/gewstg/__11.html). |
| `hebesatz` | Anzuwendender Hebesatz ([§ 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)). |
**Rückgabe** — Festzusetzende Gewerbesteuer.
> Quelle: § 16 Absatz 1 GewStG — [§ 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__16.html)
#### fn `BerechneGewerbesteuer`
```findsl
fn BerechneGewerbesteuer(betrieb: Gewerbebetrieb): GewerbesteuerErgebnis
```
Vollständige Festsetzung der Gewerbesteuer eines Steuerfalls in der
gesetzlichen Reihenfolge: [§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html) Satz 1 (Gewinn) → [§ 8](https://www.gesetze-im-internet.de/gewstg/__8.html) (Hinzurechnungen)
→ [§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html) (Kürzungen) → [§ 7](https://www.gesetze-im-internet.de/gewstg/__7.html)/[§ 10](https://www.gesetze-im-internet.de/gewstg/__10.html) (Gewerbeertrag) → [§ 10a](https://www.gesetze-im-internet.de/gewstg/__10a.html) (Verlustabzug,
Mindestbesteuerung) → [§ 11](https://www.gesetze-im-internet.de/gewstg/__11.html) Abs. 1 Satz 3 (Abrundung, Freibetrag) →
[§ 11](https://www.gesetze-im-internet.de/gewstg/__11.html) Abs. 2/3 (Steuermesszahl, Messbetrag) → [§ 16](https://www.gesetze-im-internet.de/gewstg/__16.html) (Hebesatz).
Liefert alle Zwischengrößen für die Audit-Vorlage.
Ist der maßgebende Gewerbeertrag nach Verlustabzug **0 oder negativ**,
entsteht kein Steuermessbetrag und keine Gewerbesteuer (alle
nachfolgenden Größen sind 0); ein Verlustvortrag regelt [§ 10a](https://www.gesetze-im-internet.de/gewstg/__10a.html), der
hier nicht fortgeschrieben wird.
Erhebungszeiträume **vor 2025** werden bewusst nicht berechnet:
[§ 9](https://www.gesetze-im-internet.de/gewstg/__9.html) Nr. 1 Satz 1 (Grundsteuer-Fassung) gilt erst ab EZ 2025
([§ 36 Abs. 4b Satz 1 GewStG](https://www.gesetze-im-internet.de/gewstg/__36.html)) — ein begründeter, nicht abfangbarer
Abbruch macht diese Konstellation im Audit sichtbar.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `betrieb` | Eingaben des Steuerfalls (siehe `Gewerbebetrieb`). |
**Rückgabe** — Vollständig dokumentiertes Berechnungsergebnis.
> Quelle: § 7 GewStG — [§ 7 GewStG](https://www.gesetze-im-internet.de/gewstg/__7.html)
### Explizit ausgeschlossene Konstellationen
| In | Stelle | Begründung |
| --- | --- | --- |
| `BerechneGewerbesteuer` | Z. 765 |
§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab;
EZ ${betrieb.erhebungszeitraum} ist nicht abgedeckt
· Quelle: § 7 GewStG |
## `gewst.test`
*`gewst.test.findsl`*
#### Akzeptanztests — Gewerbesteuer (§[§ 7–11, 16 GewStG](https://www.gesetze-im-internet.de/gewstg/__7.html))
`prüfe`-Blöcke zur Datei `gewerbesteuer`. Alle Sollwerte sind von Hand
aus dem Gesetzeswortlaut gerechnet (GewStG, Fassung ab EZ 2025):
- § 8 Nr. 1: ¼ der Summe (a–c 100 %, d 1/5, e 1/2, f 1/4), soweit
über 200.000 €.
- § 9 Nr. 1: Grundsteuer bzw. erweiterte Kürzung (Antrag, alternativ);
Nr. 5: Spenden ≤ max(20 % Gewinn; 4 ‰ (Umsatz + Lohn)).
- § 10a: bis 1 Mio. € voll, darüber 60 % (Mindestbesteuerung).
- § 11: Abrundung auf 100 €, Freibetrag 24.500/5.000/0 €,
Messzahl 3,5 % (Hausgewerbe 1,96 %).
- § 16: Hebesatz, mindestens 200 %.
Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
### Prüfungen
#### prüfe `§ 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)`
```findsl
prüfe "§ 8 Nr. 1 GewStG — Finanzierungs-Hinzurechnung (¼ über 200.000 €)"
```
**Testfall — Summe ≤ 200.000 € → keine Hinzurechnung**
```findsl
Hinzurechnung8Nr1(Hinzurechnungen8(entgelteSchulden = 100.000,00)) == 0,00
```
**Testfall — Summe genau 200.000 € → 0 (nur der übersteigende Teil zählt)**
```findsl
Hinzurechnung8Nr1(Hinzurechnungen8(entgelteSchulden = 200.000,00)) == 0,00
```
**Testfall — Buchst. a + e: 1.000.000 + ½·400.000 = 1.200.000; ¼·(1.200.000−200.000) = 250.000**
```findsl
Hinzurechnung8Nr1(Hinzurechnungen8(
entgelteSchulden = 1.000.000,00,
mietePachtUnbeweglich = 400.000,00,
)) == 250.000,00
```
**Testfall — Buchst. d (bewegliche WG, 1/5): 1/5·1.500.000 = 300.000; ¼·(300.000−200.000) = 25.000**
```findsl
Hinzurechnung8Nr1(Hinzurechnungen8(mietePachtBeweglich = 1.500.000,00)) == 25.000,00
```
**Testfall — Buchst. f (Rechte, 1/4): 1/4·1.000.000 = 250.000; ¼·(250.000−200.000) = 12.500**
```findsl
Hinzurechnung8Nr1(Hinzurechnungen8(aufwendungenRechteUeberlassung = 1.000.000,00)) == 12.500,00
```
#### prüfe `§ 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)`
```findsl
prüfe "§ 8 GewStG — Summe der Hinzurechnungen (Nr. 1 + Nr. 4/5/8/9/10/12)"
```
**Testfall — Nr. 1 (¼·800.000 = 200.000) + Nr. 4 (50.000) + Nr. 5 (30.000) = 280.000**
```findsl
SummeHinzurechnungen8(Hinzurechnungen8(
entgelteSchulden = 1.000.000,00,
gewinnanteilePhgKgaa = 50.000,00,
steuerfreieDividenden = 30.000,00,
)) == 280.000,00
```
**Testfall — leere Hinzurechnungen → 0**
```findsl
SummeHinzurechnungen8(Hinzurechnungen8()) == 0,00
```
#### prüfe `§ 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)`
```findsl
prüfe "§ 9 Nr. 5 GewStG — Spendenhöchstbetrag (max aus 20 % und 4 ‰)"
```
**Testfall — 20 %·500.000 = 100.000 > 4 ‰·12.000.000 = 48.000 → 100.000**
```findsl
SpendenHoechstbetrag9Nr5(500.000,00, 0,00, 10.000.000,00, 2.000.000,00) == 100.000,00
```
**Testfall — kein Gewinn, 4 ‰·60.000.000 = 240.000 → 240.000**
```findsl
SpendenHoechstbetrag9Nr5(0,00, 0,00, 50.000.000,00, 10.000.000,00) == 240.000,00
```
**Testfall — § 8 Nr. 9 erhöht die 20-%-Bemessung: 20 %·(400.000+100.000) = 100.000**
```findsl
SpendenHoechstbetrag9Nr5(400.000,00, 100.000,00, 1.000.000,00, 0,00) == 100.000,00
```
**Testfall — Spenden-Kürzung = min(geleistet, Höchstbetrag): 120.000 gedeckelt auf 100.000**
```findsl
Kuerzung9Nr5(
Kuerzungen9(
geleisteteSpenden = 120.000,00,
umsaetze = 10.000.000,00,
loehneUndGehaelter = 2.000.000,00,
),
500.000,00, 0,00,
) == 100.000,00
```
**Testfall — Spenden unter Höchstbetrag bleiben voll: 30.000**
```findsl
Kuerzung9Nr5(
Kuerzungen9(
geleisteteSpenden = 30.000,00,
umsaetze = 10.000.000,00,
loehneUndGehaelter = 2.000.000,00,
),
500.000,00, 0,00,
) == 30.000,00
```
#### prüfe `§ 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)`
```findsl
prüfe "§ 9 Nr. 1 GewStG — Grundbesitzkürzung (einfach vs. erweitert)"
```
**Testfall — Satz 1: als Betriebsausgabe erfasste Grundsteuer**
```findsl
Kuerzung9Nr1(Kuerzungen9(grundsteuerBetriebsgrundbesitz = 3.000,00)) == 3.000,00
```
**Testfall — Satz 2: erweiterte Kürzung auf Antrag tritt an die Stelle von Satz 1**
```findsl
Kuerzung9Nr1(Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 3.000,00,
erweiterteKuerzungBeantragt = wahr,
erweiterteKuerzungGrundbesitzertrag = 50.000,00,
)) == 50.000,00
```
#### prüfe `§ 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)`
```findsl
prüfe "§ 7/§ 10 GewStG — Gewerbeertrag (Gewinn + § 8 − § 9)"
```
**Testfall — 800.000 + 75.000 (§ 8 Nr. 1) − 35.000 (§ 9) = 840.000**
```findsl
Gewerbeertrag(
800.000,00,
Hinzurechnungen8(entgelteSchulden = 500.000,00),
Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 5.000,00,
schachteldividendenInland = 30.000,00,
),
) == 840.000,00
```
#### prüfe `§ 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)`
```findsl
prüfe "§ 10a GewStG — Gewerbeverlust (Mindestbesteuerung 1 Mio. + 60 %)"
```
**Testfall — GE 3 Mio., Obergrenze = 1 Mio. + 60 %·2 Mio. = 2,2 Mio.**
```findsl
VerlustVerrechnungsobergrenze10a(3.000.000,00) == 2.200.000,00
```
**Testfall — GE ≤ 1 Mio.: voll verrechenbar (Obergrenze = GE)**
```findsl
VerlustVerrechnungsobergrenze10a(800.000,00) == 800.000,00
```
**Testfall — GE ≤ 0: kein Verlustabzug**
```findsl
VerlustVerrechnungsobergrenze10a(-50.000,00) == 0,00
```
**Testfall — GE 3 Mio., Fehlbetrag 5 Mio. → Abzug 2,2 Mio., danach 800.000**
```findsl
GewerbeertragNachVerlust(3.000.000,00, 5.000.000,00) == 800.000,00
```
**Testfall — GE 500.000, Fehlbetrag 200.000 → Abzug 200.000, danach 300.000**
```findsl
Verlustabzug10a(500.000,00, 200.000,00) == 200.000,00
und GewerbeertragNachVerlust(500.000,00, 200.000,00) == 300.000,00
```
**Testfall — GE 800.000 (≤ 1 Mio.), Fehlbetrag 5 Mio. → Abzug nur 800.000, danach 0**
```findsl
GewerbeertragNachVerlust(800.000,00, 5.000.000,00) == 0,00
```
#### prüfe `§ 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform`
```findsl
prüfe "§ 11 Abs. 1 Satz 3 GewStG — Freibetrag je Rechtsform"
```
**Testfall — natürliche Person/Personengesellschaft → 24.500 €**
```findsl
FreibetragRoh11(NatuerlichePersonPersonengesellschaft) == 24.500,00
```
**Testfall — Verein/jur. Person öR → 5.000 €**
```findsl
FreibetragRoh11(VereinJuristischePersonOerR) == 5.000,00
```
**Testfall — Kapitalgesellschaft → kein Freibetrag**
```findsl
FreibetragRoh11(Kapitalgesellschaft) == 0,00
```
**Testfall — höchstens in Höhe des abgerundeten Gewerbeertrags (10.000 < 24.500)**
```findsl
Freibetrag11(NatuerlichePersonPersonengesellschaft, 10.000,00) == 10.000,00
```
**Testfall — voller Freibetrag bei hohem Gewerbeertrag**
```findsl
Freibetrag11(NatuerlichePersonPersonengesellschaft, 197.000,00) == 24.500,00
```
#### prüfe `§ 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag`
```findsl
prüfe "§ 11 Abs. 2/3 GewStG — Steuermesszahl und Steuermessbetrag"
```
**Testfall — Regelmesszahl 3,5 %**
```findsl
Steuermesszahl11(Keine) == 3,5%
```
**Testfall — Hausgewerbetreibende: ermäßigt 1,96 % (= 56 % von 3,5 %)**
```findsl
Steuermesszahl11(Hausgewerbetreibender) == 1,96%
```
**Testfall — (197.000 − 24.500)·3,5 % = 172.500·3,5 % = 6.037,50**
```findsl
Steuermessbetrag11(197.000,00, 24.500,00, 3,5%) == 6.037,50
```
**Testfall — Kapitalgesellschaft ohne Freibetrag: 1.000.000·3,5 % = 35.000**
```findsl
Steuermessbetrag11(1.000.000,00, 0,00, 3,5%) == 35.000,00
```
#### prüfe `§ 16 GewStG — Hebesatz (mindestens 200 %)`
```findsl
prüfe "§ 16 GewStG — Hebesatz (mindestens 200 %)"
```
**Testfall — Gemeinde-Hebesatz unter 200 % → 200 %**
```findsl
AngewandterHebesatz16(150%) == 200%
```
**Testfall — genau 200 % bleibt 200 %**
```findsl
AngewandterHebesatz16(200%) == 200%
```
**Testfall — höherer Hebesatz bleibt unverändert**
```findsl
AngewandterHebesatz16(450%) == 450%
```
**Testfall — Steuermessbetrag · Hebesatz: 6.037,50 · 400 % = 24.150**
```findsl
Gewerbesteuer16(6.037,50, 400%) == 24.150,00
```
#### prüfe `Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)`
```findsl
prüfe "Gesamtberechnung (§ 7 → § 8 → § 9 → § 10a → § 11 → § 16 GewStG)"
```
**Testfall — Personengesellschaft, EZ 2025, Gewinn 200.000, Hebesatz 400 %**
```findsl
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 200.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(entgelteSchulden = 100.000,00),
kuerzungen = Kuerzungen9(grundsteuerBetriebsgrundbesitz = 3.000,00),
hebesatz = 400%,
),
)
e.summeHinzurechnungen == 0,00
und e.summeKuerzungen == 3.000,00
und e.gewerbeertrag == 197.000,00
und e.gewerbeertragNachVerlust == 197.000,00
und e.abgerundeterGewerbeertrag == 197.000,00
und e.freibetrag == 24.500,00
und e.steuermessbetrag == 6.037,50
und e.angewandterHebesatz == 400%
und e.gewerbesteuer == 24.150,00
```
**Testfall — Kapitalgesellschaft, EZ 2025, Gewinn 1.000.000, Hebesatz 500 %, kein Freibetrag**
```findsl
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 1.000.000,00,
rechtsform = Kapitalgesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(),
hebesatz = 500%,
),
)
e.freibetrag == 0,00
und e.bemessungsgrundlage == 1.000.000,00
und e.steuermessbetrag == 35.000,00
und e.angewandterHebesatz == 500%
und e.gewerbesteuer == 175.000,00
```
**Testfall — Volle Kette: § 8-Excess + § 9 + § 10a + Hausgewerbe, Hebesatz 410 %**
```findsl
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 800.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(
entgelteSchulden = 600.000,00,
steuerfreieDividenden = 20.000,00,
),
kuerzungen = Kuerzungen9(
grundsteuerBetriebsgrundbesitz = 10.000,00,
schachteldividendenInland = 50.000,00,
geleisteteSpenden = 5.000,00,
umsaetze = 2.000.000,00,
loehneUndGehaelter = 500.000,00,
),
gewerbeverlustVortrag = 100.000,00,
messzahlermaessigung = Hausgewerbetreibender,
hebesatz = 410%,
),
)
e.summeHinzurechnungen == 120.000,00
und e.summeKuerzungen == 65.000,00
und e.gewerbeertrag == 855.000,00
und e.verlustabzug == 100.000,00
und e.gewerbeertragNachVerlust == 755.000,00
und e.bemessungsgrundlage == 730.500,00
und e.steuermesszahl == 1,96%
und e.steuermessbetrag == 14.317,80
und e.gewerbesteuer == 58.702,98
```
**Testfall — Negativer Gewerbeertrag → kein Messbetrag, keine Steuer**
```findsl
var e: GewerbesteuerErgebnis = BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 50.000,00,
rechtsform = NatuerlichePersonPersonengesellschaft,
erhebungszeitraum = 2025,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(grundsteuerBetriebsgrundbesitz = 100.000,00),
),
)
e.gewerbeertrag == -50.000,00
und e.abgerundeterGewerbeertrag == 0,00
und e.freibetrag == 0,00
und e.steuermessbetrag == 0,00
und e.gewerbesteuer == 0,00
```
**Testfall — Erhebungszeitraum vor 2025 wird abgelehnt (§ 36 Abs. 4b GewStG)** _(erwartet abbruch)_
```findsl
BerechneGewerbesteuer(
Gewerbebetrieb(
gewinnAusGewerbebetrieb = 100.000,00,
rechtsform = Kapitalgesellschaft,
erhebungszeitraum = 2024,
hinzurechnungen = Hinzurechnungen8(),
kuerzungen = Kuerzungen9(),
),
)
```Programmablaufpläne — gewst
Hinzurechnung8Nr1
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Hinzurechnung8Nr1_n0("Hinzurechnung8Nr1<br/><br/>⟨§ 8 Nummer 1 GewStG⟩")
Hinzurechnung8Nr1_n1[/"h: Hinzurechnungen8"/]
Hinzurechnung8Nr1_n2["gewichteteSumme ← h.entgelteSchulden +<br/>h.rentenDauerndeLasten +<br/>h.gewinnanteileStillerGesellschafter +<br/>(ANTEIL_BEWEGLICH_8_1D *<br/>h.mietePachtBeweglich) als EuroCent +<br/>(ANTEIL_UNBEWEGLICH_8_1E *<br/>h.mietePachtUnbeweglich) als EuroCent +<br/>(ANTEIL_RECHTE_8_1F *<br/>h.aufwendungenRechteUeberlassung) als EuroCent"]
Hinzurechnung8Nr1_n3["uebersteigend ← (gewichteteSumme -<br/>HINZURECHNUNG_FREIBETRAG_8_1).mindestens(…)"]
Hinzurechnung8Nr1_n4["nr1 ← (ANTEIL_8_1 *<br/>uebersteigend) als EuroCent"]
Hinzurechnung8Nr1_n5["nr1"]
Hinzurechnung8Nr1_n6("Ergebnis: EuroCent")
Hinzurechnung8Nr1_n1 --> Hinzurechnung8Nr1_n0
Hinzurechnung8Nr1_n2 --> Hinzurechnung8Nr1_n3
Hinzurechnung8Nr1_n3 --> Hinzurechnung8Nr1_n4
Hinzurechnung8Nr1_n4 --> Hinzurechnung8Nr1_n5
Hinzurechnung8Nr1_n0 --> Hinzurechnung8Nr1_n2
Hinzurechnung8Nr1_n5 --> Hinzurechnung8Nr1_n6
click Hinzurechnung8Nr1_n0 href "https://www.gesetze-im-internet.de/gewstg/__8.html" "Hinzurechnung nach **§ 8 Nr. 1 GewStG**: Ein Viertel der Summe aus den Finanzierungsanteilen a–f, soweit die Summe **200.000 € übersteigt**. Buchst. a–c gehen zu 100 %, Buchst. d (bewegliche WG) zu einem Fünftel, Buchst. e (unbewegliche WG) zur Hälfte, Buchst. f (Rechteüberlassung) zu einem Viertel in die Summe ein. Liegt die gewichtete Summe ≤ 200.000 €, ist die Hinzurechnung nach Nr. 1 = 0." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Hinzurechnung8Nr1_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Hinzurechnung8Nr1_n1 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Hinzurechnung8Nr1_n2,Hinzurechnung8Nr1_n3,Hinzurechnung8Nr1_n4,Hinzurechnung8Nr1_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Hinzurechnung8Nr1_n6 ende
SummeHinzurechnungen8
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
SummeHinzurechnungen8_n0("SummeHinzurechnungen8<br/><br/>⟨§ 8 GewStG⟩")
SummeHinzurechnungen8_n1[/"h: Hinzurechnungen8"/]
SummeHinzurechnungen8_n2["Hinzurechnung8Nr1(…) +<br/>h.gewinnanteilePhgKgaa +<br/>h.steuerfreieDividenden +<br/>h.verlustanteileMitunternehmerschaft +<br/>h.ausgaben9Abs1Nr2KStG +<br/>h.gewinnminderungenTeilwert +<br/>h.auslaendischeSteuern"]
SummeHinzurechnungen8_n3("Ergebnis: EuroCent")
SummeHinzurechnungen8_n1 --> SummeHinzurechnungen8_n0
SummeHinzurechnungen8_n0 --> SummeHinzurechnungen8_n2
SummeHinzurechnungen8_n2 --> SummeHinzurechnungen8_n3
click SummeHinzurechnungen8_n0 href "https://www.gesetze-im-internet.de/gewstg/__8.html" "Summe der Hinzurechnungen nach **§ 8 GewStG**: der Betrag nach Nr. 1 zuzüglich der in voller Höhe hinzuzurechnenden Nummern 4, 5, 8, 9, 10 und 12 (Nr. 2/3/6/7/11 GewStG sind weggefallen)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SummeHinzurechnungen8_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SummeHinzurechnungen8_n1 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SummeHinzurechnungen8_n2 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SummeHinzurechnungen8_n3 ende
SpendenHoechstbetrag9Nr5
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
SpendenHoechstbetrag9Nr5_n0("SpendenHoechstbetrag9Nr5<br/><br/>⟨§ 9 Nummer 5 GewStG⟩")
SpendenHoechstbetrag9Nr5_n1[/"gewinn: EuroCent"/]
SpendenHoechstbetrag9Nr5_n2[/"hinzurechnung8Nr9: EuroCent"/]
SpendenHoechstbetrag9Nr5_n3[/"umsaetze: EuroCent"/]
SpendenHoechstbetrag9Nr5_n4[/"loehneUndGehaelter: EuroCent"/]
SpendenHoechstbetrag9Nr5_n5["nachGewinn ← (SPENDEN_SATZ_GEWINN_9_5 *<br/>(gewinn +<br/>hinzurechnung8Nr9)) als EuroCent"]
SpendenHoechstbetrag9Nr5_n6["nachUmsatzLohn ← (SPENDEN_PROMILLE_9_5 *<br/>(umsaetze +<br/>loehneUndGehaelter)) als EuroCent"]
SpendenHoechstbetrag9Nr5_n7[["nachGewinn.mindestens(…).mindestens(…)"]]
SpendenHoechstbetrag9Nr5_n8("Ergebnis: EuroCent")
SpendenHoechstbetrag9Nr5_n1 --> SpendenHoechstbetrag9Nr5_n0
SpendenHoechstbetrag9Nr5_n2 --> SpendenHoechstbetrag9Nr5_n0
SpendenHoechstbetrag9Nr5_n3 --> SpendenHoechstbetrag9Nr5_n0
SpendenHoechstbetrag9Nr5_n4 --> SpendenHoechstbetrag9Nr5_n0
SpendenHoechstbetrag9Nr5_n5 --> SpendenHoechstbetrag9Nr5_n6
SpendenHoechstbetrag9Nr5_n6 --> SpendenHoechstbetrag9Nr5_n7
SpendenHoechstbetrag9Nr5_n0 --> SpendenHoechstbetrag9Nr5_n5
SpendenHoechstbetrag9Nr5_n7 --> SpendenHoechstbetrag9Nr5_n8
click SpendenHoechstbetrag9Nr5_n0 href "https://www.gesetze-im-internet.de/gewstg/__9.html" "Höchstbetrag der Spenden-Kürzung nach **§ 9 Nr. 5 Satz 1 GewStG**: der höhere Betrag aus - 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb und - 4 ‰ (0,4 %) der Summe aus den gesamten Umsätzen und den im Wirtschaftsjahr aufgewendeten Löhnen und Gehältern. Ein negativer „20 %'-Wert (bei Verlust) wird durch die Maximum-Bildung mit dem nicht-negativen 4-‰-Wert bzw. die Nicht-negativ-Kappung abgefangen." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n1,SpendenHoechstbetrag9Nr5_n2,SpendenHoechstbetrag9Nr5_n3,SpendenHoechstbetrag9Nr5_n4 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n5,SpendenHoechstbetrag9Nr5_n6 operation
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n7 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n8 ende
Kuerzung9Nr5
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Kuerzung9Nr5_n0("Kuerzung9Nr5<br/><br/>⟨§ 9 Nummer 5 GewStG⟩")
Kuerzung9Nr5_n1[/"k: Kuerzungen9"/]
Kuerzung9Nr5_n2[/"gewinn: EuroCent"/]
Kuerzung9Nr5_n3[/"hinzurechnung8Nr9: EuroCent"/]
Kuerzung9Nr5_n4[["k.geleisteteSpenden.höchstens(…)"]]
Kuerzung9Nr5_n5("Ergebnis: EuroCent")
Kuerzung9Nr5_n1 --> Kuerzung9Nr5_n0
Kuerzung9Nr5_n2 --> Kuerzung9Nr5_n0
Kuerzung9Nr5_n3 --> Kuerzung9Nr5_n0
Kuerzung9Nr5_n0 --> Kuerzung9Nr5_n4
Kuerzung9Nr5_n4 --> Kuerzung9Nr5_n5
click Kuerzung9Nr5_n0 href "https://www.gesetze-im-internet.de/gewstg/__9.html" "Tatsächlich abziehbare Spenden-Kürzung nach § 9 Nr. 5 GewStG: die geleisteten Zuwendungen, höchstens jedoch der Höchstbetrag nach `spendenHoechstbetrag9Nr5`." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Kuerzung9Nr5_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Kuerzung9Nr5_n1,Kuerzung9Nr5_n2,Kuerzung9Nr5_n3 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class Kuerzung9Nr5_n4 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Kuerzung9Nr5_n5 ende
Kuerzung9Nr1
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Kuerzung9Nr1_n0("Kuerzung9Nr1<br/><br/>⟨§ 9 Nummer 1 GewStG⟩")
Kuerzung9Nr1_n1[/"k: Kuerzungen9"/]
Kuerzung9Nr1_n2{"k.erweiterteKuerzungBeantragt"}
Kuerzung9Nr1_n3["k.erweiterteKuerzungGrundbesitzertrag"]
Kuerzung9Nr1_n4["k.grundsteuerBetriebsgrundbesitz"]
Kuerzung9Nr1_n5("Ergebnis: EuroCent")
Kuerzung9Nr1_n1 --> Kuerzung9Nr1_n0
Kuerzung9Nr1_n2 -->|"ja"| Kuerzung9Nr1_n3
Kuerzung9Nr1_n2 -->|"nein"| Kuerzung9Nr1_n4
Kuerzung9Nr1_n0 --> Kuerzung9Nr1_n2
Kuerzung9Nr1_n3 --> Kuerzung9Nr1_n5
Kuerzung9Nr1_n4 --> Kuerzung9Nr1_n5
click Kuerzung9Nr1_n0 href "https://www.gesetze-im-internet.de/gewstg/__9.html" "Kürzung nach **§ 9 Nr. 1 GewStG**: regulär die als Betriebsausgabe erfasste Grundsteuer für Betriebsgrundbesitz (Satz 1). Auf Antrag tritt bei Grundstücksunternehmen **an deren Stelle** die erweiterte Kürzung um den auf die Verwaltung/Nutzung des eigenen Grundbesitzes entfallenden Teil des Gewerbeertrags (Satz 2) — die beiden Kürzungen sind Alternativen, nicht kumulativ." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n2 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n3,Kuerzung9Nr1_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n5 ende
SummeKuerzungen9
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
SummeKuerzungen9_n0("SummeKuerzungen9<br/><br/>⟨§ 9 GewStG⟩")
SummeKuerzungen9_n1[/"k: Kuerzungen9"/]
SummeKuerzungen9_n2[/"gewinn: EuroCent"/]
SummeKuerzungen9_n3[/"hinzurechnung8Nr9: EuroCent"/]
SummeKuerzungen9_n4["Kuerzung9Nr1(…) +<br/>k.gewinnanteileMitunternehmerschaft +<br/>k.schachteldividendenInland +<br/>k.kgaaGewinnanteile +<br/>k.auslandsbetriebsstaette +<br/>Kuerzung9Nr5(…) +<br/>k.schachteldividendenAuslandNr7 +<br/>k.schachteldividendenDbaNr8"]
SummeKuerzungen9_n5("Ergebnis: EuroCent")
SummeKuerzungen9_n1 --> SummeKuerzungen9_n0
SummeKuerzungen9_n2 --> SummeKuerzungen9_n0
SummeKuerzungen9_n3 --> SummeKuerzungen9_n0
SummeKuerzungen9_n0 --> SummeKuerzungen9_n4
SummeKuerzungen9_n4 --> SummeKuerzungen9_n5
click SummeKuerzungen9_n0 href "https://www.gesetze-im-internet.de/gewstg/__9.html" "Summe der Kürzungen nach **§ 9 GewStG**: Nr. 1 (einfach oder erweitert), die Beteiligungs-/Betriebsstätten-Kürzungen Nr. 2, 2a, 2b, 3, 7 und 8 sowie die begrenzte Spenden-Kürzung Nr. 5." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SummeKuerzungen9_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SummeKuerzungen9_n1,SummeKuerzungen9_n2,SummeKuerzungen9_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SummeKuerzungen9_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SummeKuerzungen9_n5 ende
Gewerbeertrag
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Gewerbeertrag_n0("Gewerbeertrag<br/><br/>⟨§ 7 GewStG⟩")
Gewerbeertrag_n1[/"gewinn: EuroCent"/]
Gewerbeertrag_n2[/"h: Hinzurechnungen8"/]
Gewerbeertrag_n3[/"k: Kuerzungen9"/]
Gewerbeertrag_n4["gewinn +<br/>SummeHinzurechnungen8(…) -<br/>SummeKuerzungen9(…)"]
Gewerbeertrag_n5("Ergebnis: EuroCent")
Gewerbeertrag_n1 --> Gewerbeertrag_n0
Gewerbeertrag_n2 --> Gewerbeertrag_n0
Gewerbeertrag_n3 --> Gewerbeertrag_n0
Gewerbeertrag_n0 --> Gewerbeertrag_n4
Gewerbeertrag_n4 --> Gewerbeertrag_n5
click Gewerbeertrag_n0 href "https://www.gesetze-im-internet.de/gewstg/__7.html" "Gewerbeertrag nach **§ 7 Satz 1 i.V.m. § 10 GewStG**: der Gewinn aus Gewerbebetrieb, vermehrt um die Hinzurechnungen nach § 8 und vermindert um die Kürzungen nach § 9. Kann negativ sein (Fehlbetrag); die steuerliche Auswirkung regelt der Verlustabzug bzw. die Steuerfestsetzung, nicht diese Größe." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Gewerbeertrag_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Gewerbeertrag_n1,Gewerbeertrag_n2,Gewerbeertrag_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Gewerbeertrag_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Gewerbeertrag_n5 ende
VerlustVerrechnungsobergrenze10a
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
VerlustVerrechnungsobergrenze10a_n0("VerlustVerrechnungsobergrenze10a<br/><br/>⟨§ 10a GewStG⟩")
VerlustVerrechnungsobergrenze10a_n1[/"gewerbeertrag: EuroCent"/]
VerlustVerrechnungsobergrenze10a_n2{"gewerbeertrag #lt;= 0,00"}
VerlustVerrechnungsobergrenze10a_n3["0,00"]
VerlustVerrechnungsobergrenze10a_n4{"gewerbeertrag #lt;= VERLUST_SOCKEL_10A"}
VerlustVerrechnungsobergrenze10a_n5["gewerbeertrag"]
VerlustVerrechnungsobergrenze10a_n6["VERLUST_SOCKEL_10A +<br/>(VERLUST_QUOTE_10A *<br/>(gewerbeertrag -<br/>VERLUST_SOCKEL_10A)) als EuroCent"]
VerlustVerrechnungsobergrenze10a_n7("Ergebnis: EuroCent")
VerlustVerrechnungsobergrenze10a_n1 --> VerlustVerrechnungsobergrenze10a_n0
VerlustVerrechnungsobergrenze10a_n2 -->|"ja"| VerlustVerrechnungsobergrenze10a_n3
VerlustVerrechnungsobergrenze10a_n2 -->|"nein"| VerlustVerrechnungsobergrenze10a_n4
VerlustVerrechnungsobergrenze10a_n4 -->|"ja"| VerlustVerrechnungsobergrenze10a_n5
VerlustVerrechnungsobergrenze10a_n4 -->|"nein"| VerlustVerrechnungsobergrenze10a_n6
VerlustVerrechnungsobergrenze10a_n0 --> VerlustVerrechnungsobergrenze10a_n2
VerlustVerrechnungsobergrenze10a_n3 --> VerlustVerrechnungsobergrenze10a_n7
VerlustVerrechnungsobergrenze10a_n5 --> VerlustVerrechnungsobergrenze10a_n7
VerlustVerrechnungsobergrenze10a_n6 --> VerlustVerrechnungsobergrenze10a_n7
click VerlustVerrechnungsobergrenze10a_n0 href "https://www.gesetze-im-internet.de/gewstg/__10a.html" "Höchstens abziehbarer Fehlbetrag nach **§ 10a Sätze 1, 2 GewStG** (Mindestbesteuerung): bei einem maßgebenden Gewerbeertrag bis 1 Mio. € ist der gesamte Gewerbeertrag verrechenbar; der 1 Mio. € übersteigende Teil nur zu 60 %. Bei einem Gewerbeertrag ≤ 0 ist kein Verlustabzug möglich (es gibt keinen positiven Ertrag zu kürzen)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n2,VerlustVerrechnungsobergrenze10a_n4 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n3,VerlustVerrechnungsobergrenze10a_n5,VerlustVerrechnungsobergrenze10a_n6 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n7 ende
Verlustabzug10a
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Verlustabzug10a_n0("Verlustabzug10a<br/><br/>⟨§ 10a GewStG⟩")
Verlustabzug10a_n1[/"gewerbeertrag: EuroCent"/]
Verlustabzug10a_n2[/"fehlbetrag: EuroCent"/]
Verlustabzug10a_n3[["fehlbetrag.höchstens(…)"]]
Verlustabzug10a_n4("Ergebnis: EuroCent")
Verlustabzug10a_n1 --> Verlustabzug10a_n0
Verlustabzug10a_n2 --> Verlustabzug10a_n0
Verlustabzug10a_n0 --> Verlustabzug10a_n3
Verlustabzug10a_n3 --> Verlustabzug10a_n4
click Verlustabzug10a_n0 href "https://www.gesetze-im-internet.de/gewstg/__10a.html" "Tatsächlich abgezogener Fehlbetrag nach **§ 10a GewStG**: der vortragsfähige Fehlbetrag, höchstens jedoch die Verrechnungsobergrenze nach Sätzen 1 und 2." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Verlustabzug10a_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Verlustabzug10a_n1,Verlustabzug10a_n2 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class Verlustabzug10a_n3 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Verlustabzug10a_n4 ende
GewerbeertragNachVerlust
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
GewerbeertragNachVerlust_n0("GewerbeertragNachVerlust<br/><br/>⟨§ 10a GewStG⟩")
GewerbeertragNachVerlust_n1[/"gewerbeertrag: EuroCent"/]
GewerbeertragNachVerlust_n2[/"fehlbetrag: EuroCent"/]
GewerbeertragNachVerlust_n3["gewerbeertrag -<br/>Verlustabzug10a(…)"]
GewerbeertragNachVerlust_n4("Ergebnis: EuroCent")
GewerbeertragNachVerlust_n1 --> GewerbeertragNachVerlust_n0
GewerbeertragNachVerlust_n2 --> GewerbeertragNachVerlust_n0
GewerbeertragNachVerlust_n0 --> GewerbeertragNachVerlust_n3
GewerbeertragNachVerlust_n3 --> GewerbeertragNachVerlust_n4
click GewerbeertragNachVerlust_n0 href "https://www.gesetze-im-internet.de/gewstg/__10a.html" "Maßgebender Gewerbeertrag **nach** dem Verlustabzug des § 10a GewStG. Durch die Verrechnungsobergrenze ist das Ergebnis nie negativ." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class GewerbeertragNachVerlust_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class GewerbeertragNachVerlust_n1,GewerbeertragNachVerlust_n2 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class GewerbeertragNachVerlust_n3 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class GewerbeertragNachVerlust_n4 ende
FreibetragRoh11
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
FreibetragRoh11_n0("FreibetragRoh11<br/><br/>⟨§ 11 Absatz 1 Satz 3 GewStG⟩")
FreibetragRoh11_n1[/"rechtsform: Rechtsform"/]
FreibetragRoh11_n2{{"wähle rechtsform"}}
FreibetragRoh11_n3["FREIBETRAG_NAT_PERSON_11"]
FreibetragRoh11_n4["FREIBETRAG_VEREIN_11"]
FreibetragRoh11_n5["0,00"]
FreibetragRoh11_n6("Ergebnis: EuroCent")
FreibetragRoh11_n1 --> FreibetragRoh11_n0
FreibetragRoh11_n2 -->|"NatuerlichePersonPersonengesellschaft"| FreibetragRoh11_n3
FreibetragRoh11_n2 -->|"VereinJuristischePersonOerR"| FreibetragRoh11_n4
FreibetragRoh11_n2 -->|"Kapitalgesellschaft"| FreibetragRoh11_n5
FreibetragRoh11_n0 --> FreibetragRoh11_n2
FreibetragRoh11_n3 --> FreibetragRoh11_n6
FreibetragRoh11_n4 --> FreibetragRoh11_n6
FreibetragRoh11_n5 --> FreibetragRoh11_n6
click FreibetragRoh11_n0 href "https://www.gesetze-im-internet.de/gewstg/__11.html" "Roher Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG** je Rechtsform — **vor** der Begrenzung „höchstens in Höhe des abgerundeten Gewerbeertrags': 24.500 € (natürliche Personen/Personengesellschaften, Nr. 1), 5.000 € (Vereine/jur. Personen öR, Nr. 2), 0 € (Kapitalgesellschaften — kein Freibetrag)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n1 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n2 case
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n3,FreibetragRoh11_n4,FreibetragRoh11_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n6 ende
Freibetrag11
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Freibetrag11_n0("Freibetrag11<br/><br/>⟨§ 11 Absatz 1 Satz 3 GewStG⟩")
Freibetrag11_n1[/"rechtsform: Rechtsform"/]
Freibetrag11_n2[/"abgerundeterGewerbeertrag: EuroCent"/]
Freibetrag11_n3[["FreibetragRoh11(…).höchstens(…)"]]
Freibetrag11_n4("Ergebnis: EuroCent")
Freibetrag11_n1 --> Freibetrag11_n0
Freibetrag11_n2 --> Freibetrag11_n0
Freibetrag11_n0 --> Freibetrag11_n3
Freibetrag11_n3 --> Freibetrag11_n4
click Freibetrag11_n0 href "https://www.gesetze-im-internet.de/gewstg/__11.html" "Anzuwendender Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG**: der Freibetrag der Rechtsform, höchstens jedoch in Höhe des abgerundeten Gewerbeertrags (der Freibetrag darf keinen negativen Messbetrag erzeugen)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Freibetrag11_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Freibetrag11_n1,Freibetrag11_n2 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class Freibetrag11_n3 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Freibetrag11_n4 ende
Steuermesszahl11
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Steuermesszahl11_n0("Steuermesszahl11<br/><br/>⟨§ 11 Absatz 2 GewStG⟩")
Steuermesszahl11_n1[/"ermaessigung: Messzahlermaessigung"/]
Steuermesszahl11_n2{{"wähle ermaessigung"}}
Steuermesszahl11_n3["STEUERMESSZAHL_11"]
Steuermesszahl11_n4["STEUERMESSZAHL_HAUSGEWERBE_11_3"]
Steuermesszahl11_n5("Ergebnis: Prozent")
Steuermesszahl11_n1 --> Steuermesszahl11_n0
Steuermesszahl11_n2 -->|"Keine"| Steuermesszahl11_n3
Steuermesszahl11_n2 -->|"Hausgewerbetreibender"| Steuermesszahl11_n4
Steuermesszahl11_n0 --> Steuermesszahl11_n2
Steuermesszahl11_n3 --> Steuermesszahl11_n5
Steuermesszahl11_n4 --> Steuermesszahl11_n5
click Steuermesszahl11_n0 href "https://www.gesetze-im-internet.de/gewstg/__11.html" "Anzuwendende Steuermesszahl nach **§ 11 Abs. 2/3 GewStG**: regulär 3,5 %; bei Hausgewerbetreibenden und Gleichgestellten ermäßigt auf 1,96 % (= 56 % von 3,5 %, § 11 Abs. 3 GewStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n1 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n2 case
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n3,Steuermesszahl11_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n5 ende
Steuermessbetrag11
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Steuermessbetrag11_n0("Steuermessbetrag11<br/><br/>⟨§ 11 GewStG⟩")
Steuermessbetrag11_n1[/"abgerundeterGewerbeertrag: EuroCent"/]
Steuermessbetrag11_n2[/"freibetrag: EuroCent"/]
Steuermessbetrag11_n3[/"messzahl: Prozent"/]
Steuermessbetrag11_n4["(messzahl *<br/>(abgerundeterGewerbeertrag -<br/>freibetrag)) als EuroCent"]
Steuermessbetrag11_n5("Ergebnis: EuroCent")
Steuermessbetrag11_n1 --> Steuermessbetrag11_n0
Steuermessbetrag11_n2 --> Steuermessbetrag11_n0
Steuermessbetrag11_n3 --> Steuermessbetrag11_n0
Steuermessbetrag11_n0 --> Steuermessbetrag11_n4
Steuermessbetrag11_n4 --> Steuermessbetrag11_n5
click Steuermessbetrag11_n0 href "https://www.gesetze-im-internet.de/gewstg/__11.html" "Steuermessbetrag nach **§ 11 GewStG**: die um den Freibetrag verminderte, auf volle 100 € abgerundete Bemessungsgrundlage, multipliziert mit der Steuermesszahl." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Steuermessbetrag11_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Steuermessbetrag11_n1,Steuermessbetrag11_n2,Steuermessbetrag11_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Steuermessbetrag11_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Steuermessbetrag11_n5 ende
AngewandterHebesatz16
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
AngewandterHebesatz16_n0("AngewandterHebesatz16<br/><br/>⟨§ 16 Absatz 4 Satz 2 GewStG⟩")
AngewandterHebesatz16_n1[/"hebesatz: Prozent"/]
AngewandterHebesatz16_n2{"hebesatz #lt; MINDEST_HEBESATZ_16"}
AngewandterHebesatz16_n3["MINDEST_HEBESATZ_16"]
AngewandterHebesatz16_n4["hebesatz"]
AngewandterHebesatz16_n5("Ergebnis: Prozent")
AngewandterHebesatz16_n1 --> AngewandterHebesatz16_n0
AngewandterHebesatz16_n2 -->|"ja"| AngewandterHebesatz16_n3
AngewandterHebesatz16_n2 -->|"nein"| AngewandterHebesatz16_n4
AngewandterHebesatz16_n0 --> AngewandterHebesatz16_n2
AngewandterHebesatz16_n3 --> AngewandterHebesatz16_n5
AngewandterHebesatz16_n4 --> AngewandterHebesatz16_n5
click AngewandterHebesatz16_n0 href "https://www.gesetze-im-internet.de/gewstg/__16.html" "Anzuwendender Hebesatz nach **§ 16 Abs. 4 Satz 2 GewStG**: der von der Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde keinen höheren bestimmt, beträgt er 200 %)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n2 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n3,AngewandterHebesatz16_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n5 ende
Gewerbesteuer16
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Gewerbesteuer16_n0("Gewerbesteuer16<br/><br/>⟨§ 16 Absatz 1 GewStG⟩")
Gewerbesteuer16_n1[/"steuermessbetrag: EuroCent"/]
Gewerbesteuer16_n2[/"hebesatz: Prozent"/]
Gewerbesteuer16_n3["(steuermessbetrag *<br/>hebesatz) als EuroCent"]
Gewerbesteuer16_n4("Ergebnis: EuroCent")
Gewerbesteuer16_n1 --> Gewerbesteuer16_n0
Gewerbesteuer16_n2 --> Gewerbesteuer16_n0
Gewerbesteuer16_n0 --> Gewerbesteuer16_n3
Gewerbesteuer16_n3 --> Gewerbesteuer16_n4
click Gewerbesteuer16_n0 href "https://www.gesetze-im-internet.de/gewstg/__16.html" "Festzusetzende Gewerbesteuer nach **§ 16 Abs. 1 GewStG**: der Steuermessbetrag, multipliziert mit dem anzuwendenden Hebesatz." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Gewerbesteuer16_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Gewerbesteuer16_n1,Gewerbesteuer16_n2 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Gewerbesteuer16_n3 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Gewerbesteuer16_n4 ende
BerechneGewerbesteuer
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
BerechneGewerbesteuer_n0("BerechneGewerbesteuer<br/><br/>⟨§ 7 GewStG⟩")
BerechneGewerbesteuer_n1[/"betrieb: Gewerbebetrieb"/]
BerechneGewerbesteuer_n2[["h8 ← SummeHinzurechnungen8(…)"]]
BerechneGewerbesteuer_n3[["k9 ← SummeKuerzungen9(…)"]]
BerechneGewerbesteuer_n4["ertrag ←"]
BerechneGewerbesteuer_n5{"betrieb.erhebungszeitraum #lt; FRUEHESTER_EZ"}
BerechneGewerbesteuer_n6("abbruch<br/>§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhe…")
BerechneGewerbesteuer_n7[["Gewerbeertrag(…)"]]
BerechneGewerbesteuer_n8[["abzug ← Verlustabzug10a(…)"]]
BerechneGewerbesteuer_n9["nachVerlust ← ertrag -<br/>abzug"]
BerechneGewerbesteuer_n10["abgerundet ←"]
BerechneGewerbesteuer_n11{"nachVerlust #lt;= 0,00"}
BerechneGewerbesteuer_n12["0,00"]
BerechneGewerbesteuer_n13[["nachVerlust.abrundenAuf(…)"]]
BerechneGewerbesteuer_n14[["fb ← Freibetrag11(…)"]]
BerechneGewerbesteuer_n15[["messzahl ← Steuermesszahl11(…)"]]
BerechneGewerbesteuer_n16["bemessung ← abgerundet -<br/>fb"]
BerechneGewerbesteuer_n17[["messbetrag ← Steuermessbetrag11(…)"]]
BerechneGewerbesteuer_n18[["heb ← AngewandterHebesatz16(…)"]]
BerechneGewerbesteuer_n19[["steuer ← Gewerbesteuer16(…)"]]
BerechneGewerbesteuer_n20[["GewerbesteuerErgebnis(…)"]]
BerechneGewerbesteuer_n21("Ergebnis: GewerbesteuerErgebnis")
BerechneGewerbesteuer_n1 --> BerechneGewerbesteuer_n0
BerechneGewerbesteuer_n2 --> BerechneGewerbesteuer_n3
BerechneGewerbesteuer_n5 -->|"ja"| BerechneGewerbesteuer_n6
BerechneGewerbesteuer_n5 -->|"nein"| BerechneGewerbesteuer_n7
BerechneGewerbesteuer_n4 --> BerechneGewerbesteuer_n5
BerechneGewerbesteuer_n3 --> BerechneGewerbesteuer_n4
BerechneGewerbesteuer_n7 --> BerechneGewerbesteuer_n8
BerechneGewerbesteuer_n8 --> BerechneGewerbesteuer_n9
BerechneGewerbesteuer_n11 -->|"ja"| BerechneGewerbesteuer_n12
BerechneGewerbesteuer_n11 -->|"nein"| BerechneGewerbesteuer_n13
BerechneGewerbesteuer_n10 --> BerechneGewerbesteuer_n11
BerechneGewerbesteuer_n9 --> BerechneGewerbesteuer_n10
BerechneGewerbesteuer_n12 --> BerechneGewerbesteuer_n14
BerechneGewerbesteuer_n13 --> BerechneGewerbesteuer_n14
BerechneGewerbesteuer_n14 --> BerechneGewerbesteuer_n15
BerechneGewerbesteuer_n15 --> BerechneGewerbesteuer_n16
BerechneGewerbesteuer_n16 --> BerechneGewerbesteuer_n17
BerechneGewerbesteuer_n17 --> BerechneGewerbesteuer_n18
BerechneGewerbesteuer_n18 --> BerechneGewerbesteuer_n19
BerechneGewerbesteuer_n19 --> BerechneGewerbesteuer_n20
BerechneGewerbesteuer_n0 --> BerechneGewerbesteuer_n2
BerechneGewerbesteuer_n20 --> BerechneGewerbesteuer_n21
click BerechneGewerbesteuer_n0 href "https://www.gesetze-im-internet.de/gewstg/__7.html" "Vollständige Festsetzung der Gewerbesteuer eines Steuerfalls in der gesetzlichen Reihenfolge: § 7 Satz 1 (Gewinn) → § 8 (Hinzurechnungen) → § 9 (Kürzungen) → § 7/§ 10 (Gewerbeertrag) → § 10a (Verlustabzug, Mindestbesteuerung) → § 11 Abs. 1 Satz 3 (Abrundung, Freibetrag) → § 11 Abs. 2/3 (Steuermesszahl, Messbetrag) → § 16 (Hebesatz). Liefert alle Zwischengrößen für die Audit-Vorlage. Ist der maßgebende Gewerbeertrag nach Verlustabzug **0 oder negativ**, entsteht kein Steuermessbetrag und keine Gewerbesteuer (alle nachfolgenden Größen sind 0); ein Verlustvortrag regelt § 10a, der hier nicht fortgeschrieben wird. Erhebungszeiträume **vor 2025** werden bewusst nicht berechnet: § 9 Nr. 1 Satz 1 (Grundsteuer-Fassung) gilt erst ab EZ 2025 (§ 36 Abs. 4b Satz 1 GewStG) — ein begründeter, nicht abfangbarer Abbruch macht diese Konstellation im Audit sichtbar." _blank
click BerechneGewerbesteuer_n6 href "https://www.gesetze-im-internet.de/gewstg/__36.html" "§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab; EZ ${betrieb.erhebungszeitraum} ist nicht abgedeckt" _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n1 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n2,BerechneGewerbesteuer_n3,BerechneGewerbesteuer_n7,BerechneGewerbesteuer_n8,BerechneGewerbesteuer_n13,BerechneGewerbesteuer_n14,BerechneGewerbesteuer_n15,BerechneGewerbesteuer_n17,BerechneGewerbesteuer_n18,BerechneGewerbesteuer_n19,BerechneGewerbesteuer_n20 subprogram
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n4,BerechneGewerbesteuer_n9,BerechneGewerbesteuer_n10,BerechneGewerbesteuer_n12,BerechneGewerbesteuer_n16 operation
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n5,BerechneGewerbesteuer_n11 decision
classDef abbruch fill:#fdecea,stroke:#f1b0a8,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n6 abbruch
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n21 ende
# Programmablaufpläne — gewst
## Hinzurechnung8Nr1
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Hinzurechnung8Nr1_n0("Hinzurechnung8Nr1<br/><br/>⟨§ 8 Nummer 1 GewStG⟩")
Hinzurechnung8Nr1_n1[/"h: Hinzurechnungen8"/]
Hinzurechnung8Nr1_n2["gewichteteSumme ← h.entgelteSchulden +<br/>h.rentenDauerndeLasten +<br/>h.gewinnanteileStillerGesellschafter +<br/>(ANTEIL_BEWEGLICH_8_1D *<br/>h.mietePachtBeweglich) als EuroCent +<br/>(ANTEIL_UNBEWEGLICH_8_1E *<br/>h.mietePachtUnbeweglich) als EuroCent +<br/>(ANTEIL_RECHTE_8_1F *<br/>h.aufwendungenRechteUeberlassung) als EuroCent"]
Hinzurechnung8Nr1_n3["uebersteigend ← (gewichteteSumme -<br/>HINZURECHNUNG_FREIBETRAG_8_1).mindestens(…)"]
Hinzurechnung8Nr1_n4["nr1 ← (ANTEIL_8_1 *<br/>uebersteigend) als EuroCent"]
Hinzurechnung8Nr1_n5["nr1"]
Hinzurechnung8Nr1_n6("Ergebnis: EuroCent")
Hinzurechnung8Nr1_n1 --> Hinzurechnung8Nr1_n0
Hinzurechnung8Nr1_n2 --> Hinzurechnung8Nr1_n3
Hinzurechnung8Nr1_n3 --> Hinzurechnung8Nr1_n4
Hinzurechnung8Nr1_n4 --> Hinzurechnung8Nr1_n5
Hinzurechnung8Nr1_n0 --> Hinzurechnung8Nr1_n2
Hinzurechnung8Nr1_n5 --> Hinzurechnung8Nr1_n6
click Hinzurechnung8Nr1_n0 href "https://www.gesetze-im-internet.de/gewstg/__8.html" "Hinzurechnung nach **§ 8 Nr. 1 GewStG**: Ein Viertel der Summe aus den Finanzierungsanteilen a–f, soweit die Summe **200.000 € übersteigt**. Buchst. a–c gehen zu 100 %, Buchst. d (bewegliche WG) zu einem Fünftel, Buchst. e (unbewegliche WG) zur Hälfte, Buchst. f (Rechteüberlassung) zu einem Viertel in die Summe ein. Liegt die gewichtete Summe ≤ 200.000 €, ist die Hinzurechnung nach Nr. 1 = 0." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Hinzurechnung8Nr1_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Hinzurechnung8Nr1_n1 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Hinzurechnung8Nr1_n2,Hinzurechnung8Nr1_n3,Hinzurechnung8Nr1_n4,Hinzurechnung8Nr1_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Hinzurechnung8Nr1_n6 ende
```
## SummeHinzurechnungen8
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
SummeHinzurechnungen8_n0("SummeHinzurechnungen8<br/><br/>⟨§ 8 GewStG⟩")
SummeHinzurechnungen8_n1[/"h: Hinzurechnungen8"/]
SummeHinzurechnungen8_n2["Hinzurechnung8Nr1(…) +<br/>h.gewinnanteilePhgKgaa +<br/>h.steuerfreieDividenden +<br/>h.verlustanteileMitunternehmerschaft +<br/>h.ausgaben9Abs1Nr2KStG +<br/>h.gewinnminderungenTeilwert +<br/>h.auslaendischeSteuern"]
SummeHinzurechnungen8_n3("Ergebnis: EuroCent")
SummeHinzurechnungen8_n1 --> SummeHinzurechnungen8_n0
SummeHinzurechnungen8_n0 --> SummeHinzurechnungen8_n2
SummeHinzurechnungen8_n2 --> SummeHinzurechnungen8_n3
click SummeHinzurechnungen8_n0 href "https://www.gesetze-im-internet.de/gewstg/__8.html" "Summe der Hinzurechnungen nach **§ 8 GewStG**: der Betrag nach Nr. 1 zuzüglich der in voller Höhe hinzuzurechnenden Nummern 4, 5, 8, 9, 10 und 12 (Nr. 2/3/6/7/11 GewStG sind weggefallen)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SummeHinzurechnungen8_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SummeHinzurechnungen8_n1 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SummeHinzurechnungen8_n2 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SummeHinzurechnungen8_n3 ende
```
## SpendenHoechstbetrag9Nr5
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
SpendenHoechstbetrag9Nr5_n0("SpendenHoechstbetrag9Nr5<br/><br/>⟨§ 9 Nummer 5 GewStG⟩")
SpendenHoechstbetrag9Nr5_n1[/"gewinn: EuroCent"/]
SpendenHoechstbetrag9Nr5_n2[/"hinzurechnung8Nr9: EuroCent"/]
SpendenHoechstbetrag9Nr5_n3[/"umsaetze: EuroCent"/]
SpendenHoechstbetrag9Nr5_n4[/"loehneUndGehaelter: EuroCent"/]
SpendenHoechstbetrag9Nr5_n5["nachGewinn ← (SPENDEN_SATZ_GEWINN_9_5 *<br/>(gewinn +<br/>hinzurechnung8Nr9)) als EuroCent"]
SpendenHoechstbetrag9Nr5_n6["nachUmsatzLohn ← (SPENDEN_PROMILLE_9_5 *<br/>(umsaetze +<br/>loehneUndGehaelter)) als EuroCent"]
SpendenHoechstbetrag9Nr5_n7[["nachGewinn.mindestens(…).mindestens(…)"]]
SpendenHoechstbetrag9Nr5_n8("Ergebnis: EuroCent")
SpendenHoechstbetrag9Nr5_n1 --> SpendenHoechstbetrag9Nr5_n0
SpendenHoechstbetrag9Nr5_n2 --> SpendenHoechstbetrag9Nr5_n0
SpendenHoechstbetrag9Nr5_n3 --> SpendenHoechstbetrag9Nr5_n0
SpendenHoechstbetrag9Nr5_n4 --> SpendenHoechstbetrag9Nr5_n0
SpendenHoechstbetrag9Nr5_n5 --> SpendenHoechstbetrag9Nr5_n6
SpendenHoechstbetrag9Nr5_n6 --> SpendenHoechstbetrag9Nr5_n7
SpendenHoechstbetrag9Nr5_n0 --> SpendenHoechstbetrag9Nr5_n5
SpendenHoechstbetrag9Nr5_n7 --> SpendenHoechstbetrag9Nr5_n8
click SpendenHoechstbetrag9Nr5_n0 href "https://www.gesetze-im-internet.de/gewstg/__9.html" "Höchstbetrag der Spenden-Kürzung nach **§ 9 Nr. 5 Satz 1 GewStG**: der höhere Betrag aus - 20 % des um die Hinzurechnungen nach § 8 Nr. 9 erhöhten Gewinns aus Gewerbebetrieb und - 4 ‰ (0,4 %) der Summe aus den gesamten Umsätzen und den im Wirtschaftsjahr aufgewendeten Löhnen und Gehältern. Ein negativer „20 %'-Wert (bei Verlust) wird durch die Maximum-Bildung mit dem nicht-negativen 4-‰-Wert bzw. die Nicht-negativ-Kappung abgefangen." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n1,SpendenHoechstbetrag9Nr5_n2,SpendenHoechstbetrag9Nr5_n3,SpendenHoechstbetrag9Nr5_n4 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n5,SpendenHoechstbetrag9Nr5_n6 operation
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n7 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SpendenHoechstbetrag9Nr5_n8 ende
```
## Kuerzung9Nr5
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Kuerzung9Nr5_n0("Kuerzung9Nr5<br/><br/>⟨§ 9 Nummer 5 GewStG⟩")
Kuerzung9Nr5_n1[/"k: Kuerzungen9"/]
Kuerzung9Nr5_n2[/"gewinn: EuroCent"/]
Kuerzung9Nr5_n3[/"hinzurechnung8Nr9: EuroCent"/]
Kuerzung9Nr5_n4[["k.geleisteteSpenden.höchstens(…)"]]
Kuerzung9Nr5_n5("Ergebnis: EuroCent")
Kuerzung9Nr5_n1 --> Kuerzung9Nr5_n0
Kuerzung9Nr5_n2 --> Kuerzung9Nr5_n0
Kuerzung9Nr5_n3 --> Kuerzung9Nr5_n0
Kuerzung9Nr5_n0 --> Kuerzung9Nr5_n4
Kuerzung9Nr5_n4 --> Kuerzung9Nr5_n5
click Kuerzung9Nr5_n0 href "https://www.gesetze-im-internet.de/gewstg/__9.html" "Tatsächlich abziehbare Spenden-Kürzung nach § 9 Nr. 5 GewStG: die geleisteten Zuwendungen, höchstens jedoch der Höchstbetrag nach `spendenHoechstbetrag9Nr5`." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Kuerzung9Nr5_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Kuerzung9Nr5_n1,Kuerzung9Nr5_n2,Kuerzung9Nr5_n3 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class Kuerzung9Nr5_n4 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Kuerzung9Nr5_n5 ende
```
## Kuerzung9Nr1
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Kuerzung9Nr1_n0("Kuerzung9Nr1<br/><br/>⟨§ 9 Nummer 1 GewStG⟩")
Kuerzung9Nr1_n1[/"k: Kuerzungen9"/]
Kuerzung9Nr1_n2{"k.erweiterteKuerzungBeantragt"}
Kuerzung9Nr1_n3["k.erweiterteKuerzungGrundbesitzertrag"]
Kuerzung9Nr1_n4["k.grundsteuerBetriebsgrundbesitz"]
Kuerzung9Nr1_n5("Ergebnis: EuroCent")
Kuerzung9Nr1_n1 --> Kuerzung9Nr1_n0
Kuerzung9Nr1_n2 -->|"ja"| Kuerzung9Nr1_n3
Kuerzung9Nr1_n2 -->|"nein"| Kuerzung9Nr1_n4
Kuerzung9Nr1_n0 --> Kuerzung9Nr1_n2
Kuerzung9Nr1_n3 --> Kuerzung9Nr1_n5
Kuerzung9Nr1_n4 --> Kuerzung9Nr1_n5
click Kuerzung9Nr1_n0 href "https://www.gesetze-im-internet.de/gewstg/__9.html" "Kürzung nach **§ 9 Nr. 1 GewStG**: regulär die als Betriebsausgabe erfasste Grundsteuer für Betriebsgrundbesitz (Satz 1). Auf Antrag tritt bei Grundstücksunternehmen **an deren Stelle** die erweiterte Kürzung um den auf die Verwaltung/Nutzung des eigenen Grundbesitzes entfallenden Teil des Gewerbeertrags (Satz 2) — die beiden Kürzungen sind Alternativen, nicht kumulativ." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n2 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n3,Kuerzung9Nr1_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Kuerzung9Nr1_n5 ende
```
## SummeKuerzungen9
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
SummeKuerzungen9_n0("SummeKuerzungen9<br/><br/>⟨§ 9 GewStG⟩")
SummeKuerzungen9_n1[/"k: Kuerzungen9"/]
SummeKuerzungen9_n2[/"gewinn: EuroCent"/]
SummeKuerzungen9_n3[/"hinzurechnung8Nr9: EuroCent"/]
SummeKuerzungen9_n4["Kuerzung9Nr1(…) +<br/>k.gewinnanteileMitunternehmerschaft +<br/>k.schachteldividendenInland +<br/>k.kgaaGewinnanteile +<br/>k.auslandsbetriebsstaette +<br/>Kuerzung9Nr5(…) +<br/>k.schachteldividendenAuslandNr7 +<br/>k.schachteldividendenDbaNr8"]
SummeKuerzungen9_n5("Ergebnis: EuroCent")
SummeKuerzungen9_n1 --> SummeKuerzungen9_n0
SummeKuerzungen9_n2 --> SummeKuerzungen9_n0
SummeKuerzungen9_n3 --> SummeKuerzungen9_n0
SummeKuerzungen9_n0 --> SummeKuerzungen9_n4
SummeKuerzungen9_n4 --> SummeKuerzungen9_n5
click SummeKuerzungen9_n0 href "https://www.gesetze-im-internet.de/gewstg/__9.html" "Summe der Kürzungen nach **§ 9 GewStG**: Nr. 1 (einfach oder erweitert), die Beteiligungs-/Betriebsstätten-Kürzungen Nr. 2, 2a, 2b, 3, 7 und 8 sowie die begrenzte Spenden-Kürzung Nr. 5." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SummeKuerzungen9_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SummeKuerzungen9_n1,SummeKuerzungen9_n2,SummeKuerzungen9_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SummeKuerzungen9_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SummeKuerzungen9_n5 ende
```
## Gewerbeertrag
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Gewerbeertrag_n0("Gewerbeertrag<br/><br/>⟨§ 7 GewStG⟩")
Gewerbeertrag_n1[/"gewinn: EuroCent"/]
Gewerbeertrag_n2[/"h: Hinzurechnungen8"/]
Gewerbeertrag_n3[/"k: Kuerzungen9"/]
Gewerbeertrag_n4["gewinn +<br/>SummeHinzurechnungen8(…) -<br/>SummeKuerzungen9(…)"]
Gewerbeertrag_n5("Ergebnis: EuroCent")
Gewerbeertrag_n1 --> Gewerbeertrag_n0
Gewerbeertrag_n2 --> Gewerbeertrag_n0
Gewerbeertrag_n3 --> Gewerbeertrag_n0
Gewerbeertrag_n0 --> Gewerbeertrag_n4
Gewerbeertrag_n4 --> Gewerbeertrag_n5
click Gewerbeertrag_n0 href "https://www.gesetze-im-internet.de/gewstg/__7.html" "Gewerbeertrag nach **§ 7 Satz 1 i.V.m. § 10 GewStG**: der Gewinn aus Gewerbebetrieb, vermehrt um die Hinzurechnungen nach § 8 und vermindert um die Kürzungen nach § 9. Kann negativ sein (Fehlbetrag); die steuerliche Auswirkung regelt der Verlustabzug bzw. die Steuerfestsetzung, nicht diese Größe." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Gewerbeertrag_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Gewerbeertrag_n1,Gewerbeertrag_n2,Gewerbeertrag_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Gewerbeertrag_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Gewerbeertrag_n5 ende
```
## VerlustVerrechnungsobergrenze10a
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
VerlustVerrechnungsobergrenze10a_n0("VerlustVerrechnungsobergrenze10a<br/><br/>⟨§ 10a GewStG⟩")
VerlustVerrechnungsobergrenze10a_n1[/"gewerbeertrag: EuroCent"/]
VerlustVerrechnungsobergrenze10a_n2{"gewerbeertrag #lt;= 0,00"}
VerlustVerrechnungsobergrenze10a_n3["0,00"]
VerlustVerrechnungsobergrenze10a_n4{"gewerbeertrag #lt;= VERLUST_SOCKEL_10A"}
VerlustVerrechnungsobergrenze10a_n5["gewerbeertrag"]
VerlustVerrechnungsobergrenze10a_n6["VERLUST_SOCKEL_10A +<br/>(VERLUST_QUOTE_10A *<br/>(gewerbeertrag -<br/>VERLUST_SOCKEL_10A)) als EuroCent"]
VerlustVerrechnungsobergrenze10a_n7("Ergebnis: EuroCent")
VerlustVerrechnungsobergrenze10a_n1 --> VerlustVerrechnungsobergrenze10a_n0
VerlustVerrechnungsobergrenze10a_n2 -->|"ja"| VerlustVerrechnungsobergrenze10a_n3
VerlustVerrechnungsobergrenze10a_n2 -->|"nein"| VerlustVerrechnungsobergrenze10a_n4
VerlustVerrechnungsobergrenze10a_n4 -->|"ja"| VerlustVerrechnungsobergrenze10a_n5
VerlustVerrechnungsobergrenze10a_n4 -->|"nein"| VerlustVerrechnungsobergrenze10a_n6
VerlustVerrechnungsobergrenze10a_n0 --> VerlustVerrechnungsobergrenze10a_n2
VerlustVerrechnungsobergrenze10a_n3 --> VerlustVerrechnungsobergrenze10a_n7
VerlustVerrechnungsobergrenze10a_n5 --> VerlustVerrechnungsobergrenze10a_n7
VerlustVerrechnungsobergrenze10a_n6 --> VerlustVerrechnungsobergrenze10a_n7
click VerlustVerrechnungsobergrenze10a_n0 href "https://www.gesetze-im-internet.de/gewstg/__10a.html" "Höchstens abziehbarer Fehlbetrag nach **§ 10a Sätze 1, 2 GewStG** (Mindestbesteuerung): bei einem maßgebenden Gewerbeertrag bis 1 Mio. € ist der gesamte Gewerbeertrag verrechenbar; der 1 Mio. € übersteigende Teil nur zu 60 %. Bei einem Gewerbeertrag ≤ 0 ist kein Verlustabzug möglich (es gibt keinen positiven Ertrag zu kürzen)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n2,VerlustVerrechnungsobergrenze10a_n4 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n3,VerlustVerrechnungsobergrenze10a_n5,VerlustVerrechnungsobergrenze10a_n6 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class VerlustVerrechnungsobergrenze10a_n7 ende
```
## Verlustabzug10a
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Verlustabzug10a_n0("Verlustabzug10a<br/><br/>⟨§ 10a GewStG⟩")
Verlustabzug10a_n1[/"gewerbeertrag: EuroCent"/]
Verlustabzug10a_n2[/"fehlbetrag: EuroCent"/]
Verlustabzug10a_n3[["fehlbetrag.höchstens(…)"]]
Verlustabzug10a_n4("Ergebnis: EuroCent")
Verlustabzug10a_n1 --> Verlustabzug10a_n0
Verlustabzug10a_n2 --> Verlustabzug10a_n0
Verlustabzug10a_n0 --> Verlustabzug10a_n3
Verlustabzug10a_n3 --> Verlustabzug10a_n4
click Verlustabzug10a_n0 href "https://www.gesetze-im-internet.de/gewstg/__10a.html" "Tatsächlich abgezogener Fehlbetrag nach **§ 10a GewStG**: der vortragsfähige Fehlbetrag, höchstens jedoch die Verrechnungsobergrenze nach Sätzen 1 und 2." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Verlustabzug10a_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Verlustabzug10a_n1,Verlustabzug10a_n2 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class Verlustabzug10a_n3 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Verlustabzug10a_n4 ende
```
## GewerbeertragNachVerlust
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
GewerbeertragNachVerlust_n0("GewerbeertragNachVerlust<br/><br/>⟨§ 10a GewStG⟩")
GewerbeertragNachVerlust_n1[/"gewerbeertrag: EuroCent"/]
GewerbeertragNachVerlust_n2[/"fehlbetrag: EuroCent"/]
GewerbeertragNachVerlust_n3["gewerbeertrag -<br/>Verlustabzug10a(…)"]
GewerbeertragNachVerlust_n4("Ergebnis: EuroCent")
GewerbeertragNachVerlust_n1 --> GewerbeertragNachVerlust_n0
GewerbeertragNachVerlust_n2 --> GewerbeertragNachVerlust_n0
GewerbeertragNachVerlust_n0 --> GewerbeertragNachVerlust_n3
GewerbeertragNachVerlust_n3 --> GewerbeertragNachVerlust_n4
click GewerbeertragNachVerlust_n0 href "https://www.gesetze-im-internet.de/gewstg/__10a.html" "Maßgebender Gewerbeertrag **nach** dem Verlustabzug des § 10a GewStG. Durch die Verrechnungsobergrenze ist das Ergebnis nie negativ." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class GewerbeertragNachVerlust_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class GewerbeertragNachVerlust_n1,GewerbeertragNachVerlust_n2 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class GewerbeertragNachVerlust_n3 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class GewerbeertragNachVerlust_n4 ende
```
## FreibetragRoh11
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
FreibetragRoh11_n0("FreibetragRoh11<br/><br/>⟨§ 11 Absatz 1 Satz 3 GewStG⟩")
FreibetragRoh11_n1[/"rechtsform: Rechtsform"/]
FreibetragRoh11_n2{{"wähle rechtsform"}}
FreibetragRoh11_n3["FREIBETRAG_NAT_PERSON_11"]
FreibetragRoh11_n4["FREIBETRAG_VEREIN_11"]
FreibetragRoh11_n5["0,00"]
FreibetragRoh11_n6("Ergebnis: EuroCent")
FreibetragRoh11_n1 --> FreibetragRoh11_n0
FreibetragRoh11_n2 -->|"NatuerlichePersonPersonengesellschaft"| FreibetragRoh11_n3
FreibetragRoh11_n2 -->|"VereinJuristischePersonOerR"| FreibetragRoh11_n4
FreibetragRoh11_n2 -->|"Kapitalgesellschaft"| FreibetragRoh11_n5
FreibetragRoh11_n0 --> FreibetragRoh11_n2
FreibetragRoh11_n3 --> FreibetragRoh11_n6
FreibetragRoh11_n4 --> FreibetragRoh11_n6
FreibetragRoh11_n5 --> FreibetragRoh11_n6
click FreibetragRoh11_n0 href "https://www.gesetze-im-internet.de/gewstg/__11.html" "Roher Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG** je Rechtsform — **vor** der Begrenzung „höchstens in Höhe des abgerundeten Gewerbeertrags': 24.500 € (natürliche Personen/Personengesellschaften, Nr. 1), 5.000 € (Vereine/jur. Personen öR, Nr. 2), 0 € (Kapitalgesellschaften — kein Freibetrag)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n1 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n2 case
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n3,FreibetragRoh11_n4,FreibetragRoh11_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class FreibetragRoh11_n6 ende
```
## Freibetrag11
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Freibetrag11_n0("Freibetrag11<br/><br/>⟨§ 11 Absatz 1 Satz 3 GewStG⟩")
Freibetrag11_n1[/"rechtsform: Rechtsform"/]
Freibetrag11_n2[/"abgerundeterGewerbeertrag: EuroCent"/]
Freibetrag11_n3[["FreibetragRoh11(…).höchstens(…)"]]
Freibetrag11_n4("Ergebnis: EuroCent")
Freibetrag11_n1 --> Freibetrag11_n0
Freibetrag11_n2 --> Freibetrag11_n0
Freibetrag11_n0 --> Freibetrag11_n3
Freibetrag11_n3 --> Freibetrag11_n4
click Freibetrag11_n0 href "https://www.gesetze-im-internet.de/gewstg/__11.html" "Anzuwendender Freibetrag nach **§ 11 Abs. 1 Satz 3 GewStG**: der Freibetrag der Rechtsform, höchstens jedoch in Höhe des abgerundeten Gewerbeertrags (der Freibetrag darf keinen negativen Messbetrag erzeugen)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Freibetrag11_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Freibetrag11_n1,Freibetrag11_n2 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class Freibetrag11_n3 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Freibetrag11_n4 ende
```
## Steuermesszahl11
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Steuermesszahl11_n0("Steuermesszahl11<br/><br/>⟨§ 11 Absatz 2 GewStG⟩")
Steuermesszahl11_n1[/"ermaessigung: Messzahlermaessigung"/]
Steuermesszahl11_n2{{"wähle ermaessigung"}}
Steuermesszahl11_n3["STEUERMESSZAHL_11"]
Steuermesszahl11_n4["STEUERMESSZAHL_HAUSGEWERBE_11_3"]
Steuermesszahl11_n5("Ergebnis: Prozent")
Steuermesszahl11_n1 --> Steuermesszahl11_n0
Steuermesszahl11_n2 -->|"Keine"| Steuermesszahl11_n3
Steuermesszahl11_n2 -->|"Hausgewerbetreibender"| Steuermesszahl11_n4
Steuermesszahl11_n0 --> Steuermesszahl11_n2
Steuermesszahl11_n3 --> Steuermesszahl11_n5
Steuermesszahl11_n4 --> Steuermesszahl11_n5
click Steuermesszahl11_n0 href "https://www.gesetze-im-internet.de/gewstg/__11.html" "Anzuwendende Steuermesszahl nach **§ 11 Abs. 2/3 GewStG**: regulär 3,5 %; bei Hausgewerbetreibenden und Gleichgestellten ermäßigt auf 1,96 % (= 56 % von 3,5 %, § 11 Abs. 3 GewStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n1 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n2 case
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n3,Steuermesszahl11_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Steuermesszahl11_n5 ende
```
## Steuermessbetrag11
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Steuermessbetrag11_n0("Steuermessbetrag11<br/><br/>⟨§ 11 GewStG⟩")
Steuermessbetrag11_n1[/"abgerundeterGewerbeertrag: EuroCent"/]
Steuermessbetrag11_n2[/"freibetrag: EuroCent"/]
Steuermessbetrag11_n3[/"messzahl: Prozent"/]
Steuermessbetrag11_n4["(messzahl *<br/>(abgerundeterGewerbeertrag -<br/>freibetrag)) als EuroCent"]
Steuermessbetrag11_n5("Ergebnis: EuroCent")
Steuermessbetrag11_n1 --> Steuermessbetrag11_n0
Steuermessbetrag11_n2 --> Steuermessbetrag11_n0
Steuermessbetrag11_n3 --> Steuermessbetrag11_n0
Steuermessbetrag11_n0 --> Steuermessbetrag11_n4
Steuermessbetrag11_n4 --> Steuermessbetrag11_n5
click Steuermessbetrag11_n0 href "https://www.gesetze-im-internet.de/gewstg/__11.html" "Steuermessbetrag nach **§ 11 GewStG**: die um den Freibetrag verminderte, auf volle 100 € abgerundete Bemessungsgrundlage, multipliziert mit der Steuermesszahl." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Steuermessbetrag11_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Steuermessbetrag11_n1,Steuermessbetrag11_n2,Steuermessbetrag11_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Steuermessbetrag11_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Steuermessbetrag11_n5 ende
```
## AngewandterHebesatz16
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
AngewandterHebesatz16_n0("AngewandterHebesatz16<br/><br/>⟨§ 16 Absatz 4 Satz 2 GewStG⟩")
AngewandterHebesatz16_n1[/"hebesatz: Prozent"/]
AngewandterHebesatz16_n2{"hebesatz #lt; MINDEST_HEBESATZ_16"}
AngewandterHebesatz16_n3["MINDEST_HEBESATZ_16"]
AngewandterHebesatz16_n4["hebesatz"]
AngewandterHebesatz16_n5("Ergebnis: Prozent")
AngewandterHebesatz16_n1 --> AngewandterHebesatz16_n0
AngewandterHebesatz16_n2 -->|"ja"| AngewandterHebesatz16_n3
AngewandterHebesatz16_n2 -->|"nein"| AngewandterHebesatz16_n4
AngewandterHebesatz16_n0 --> AngewandterHebesatz16_n2
AngewandterHebesatz16_n3 --> AngewandterHebesatz16_n5
AngewandterHebesatz16_n4 --> AngewandterHebesatz16_n5
click AngewandterHebesatz16_n0 href "https://www.gesetze-im-internet.de/gewstg/__16.html" "Anzuwendender Hebesatz nach **§ 16 Abs. 4 Satz 2 GewStG**: der von der Gemeinde bestimmte Hebesatz, mindestens jedoch 200 % (hat die Gemeinde keinen höheren bestimmt, beträgt er 200 %)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n2 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n3,AngewandterHebesatz16_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class AngewandterHebesatz16_n5 ende
```
## Gewerbesteuer16
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
Gewerbesteuer16_n0("Gewerbesteuer16<br/><br/>⟨§ 16 Absatz 1 GewStG⟩")
Gewerbesteuer16_n1[/"steuermessbetrag: EuroCent"/]
Gewerbesteuer16_n2[/"hebesatz: Prozent"/]
Gewerbesteuer16_n3["(steuermessbetrag *<br/>hebesatz) als EuroCent"]
Gewerbesteuer16_n4("Ergebnis: EuroCent")
Gewerbesteuer16_n1 --> Gewerbesteuer16_n0
Gewerbesteuer16_n2 --> Gewerbesteuer16_n0
Gewerbesteuer16_n0 --> Gewerbesteuer16_n3
Gewerbesteuer16_n3 --> Gewerbesteuer16_n4
click Gewerbesteuer16_n0 href "https://www.gesetze-im-internet.de/gewstg/__16.html" "Festzusetzende Gewerbesteuer nach **§ 16 Abs. 1 GewStG**: der Steuermessbetrag, multipliziert mit dem anzuwendenden Hebesatz." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Gewerbesteuer16_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Gewerbesteuer16_n1,Gewerbesteuer16_n2 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Gewerbesteuer16_n3 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Gewerbesteuer16_n4 ende
```
## BerechneGewerbesteuer
```mermaid
%%{init: {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'themeVariables': {'fontFamily': 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace', 'fontSize': '13px', 'lineColor': '#c8ccd1'}, 'flowchart': {'curve': 'basis', 'padding': 10, 'nodeSpacing': 45, 'rankSpacing': 45}}}%%
flowchart TD
BerechneGewerbesteuer_n0("BerechneGewerbesteuer<br/><br/>⟨§ 7 GewStG⟩")
BerechneGewerbesteuer_n1[/"betrieb: Gewerbebetrieb"/]
BerechneGewerbesteuer_n2[["h8 ← SummeHinzurechnungen8(…)"]]
BerechneGewerbesteuer_n3[["k9 ← SummeKuerzungen9(…)"]]
BerechneGewerbesteuer_n4["ertrag ←"]
BerechneGewerbesteuer_n5{"betrieb.erhebungszeitraum #lt; FRUEHESTER_EZ"}
BerechneGewerbesteuer_n6("abbruch<br/>§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhe…")
BerechneGewerbesteuer_n7[["Gewerbeertrag(…)"]]
BerechneGewerbesteuer_n8[["abzug ← Verlustabzug10a(…)"]]
BerechneGewerbesteuer_n9["nachVerlust ← ertrag -<br/>abzug"]
BerechneGewerbesteuer_n10["abgerundet ←"]
BerechneGewerbesteuer_n11{"nachVerlust #lt;= 0,00"}
BerechneGewerbesteuer_n12["0,00"]
BerechneGewerbesteuer_n13[["nachVerlust.abrundenAuf(…)"]]
BerechneGewerbesteuer_n14[["fb ← Freibetrag11(…)"]]
BerechneGewerbesteuer_n15[["messzahl ← Steuermesszahl11(…)"]]
BerechneGewerbesteuer_n16["bemessung ← abgerundet -<br/>fb"]
BerechneGewerbesteuer_n17[["messbetrag ← Steuermessbetrag11(…)"]]
BerechneGewerbesteuer_n18[["heb ← AngewandterHebesatz16(…)"]]
BerechneGewerbesteuer_n19[["steuer ← Gewerbesteuer16(…)"]]
BerechneGewerbesteuer_n20[["GewerbesteuerErgebnis(…)"]]
BerechneGewerbesteuer_n21("Ergebnis: GewerbesteuerErgebnis")
BerechneGewerbesteuer_n1 --> BerechneGewerbesteuer_n0
BerechneGewerbesteuer_n2 --> BerechneGewerbesteuer_n3
BerechneGewerbesteuer_n5 -->|"ja"| BerechneGewerbesteuer_n6
BerechneGewerbesteuer_n5 -->|"nein"| BerechneGewerbesteuer_n7
BerechneGewerbesteuer_n4 --> BerechneGewerbesteuer_n5
BerechneGewerbesteuer_n3 --> BerechneGewerbesteuer_n4
BerechneGewerbesteuer_n7 --> BerechneGewerbesteuer_n8
BerechneGewerbesteuer_n8 --> BerechneGewerbesteuer_n9
BerechneGewerbesteuer_n11 -->|"ja"| BerechneGewerbesteuer_n12
BerechneGewerbesteuer_n11 -->|"nein"| BerechneGewerbesteuer_n13
BerechneGewerbesteuer_n10 --> BerechneGewerbesteuer_n11
BerechneGewerbesteuer_n9 --> BerechneGewerbesteuer_n10
BerechneGewerbesteuer_n12 --> BerechneGewerbesteuer_n14
BerechneGewerbesteuer_n13 --> BerechneGewerbesteuer_n14
BerechneGewerbesteuer_n14 --> BerechneGewerbesteuer_n15
BerechneGewerbesteuer_n15 --> BerechneGewerbesteuer_n16
BerechneGewerbesteuer_n16 --> BerechneGewerbesteuer_n17
BerechneGewerbesteuer_n17 --> BerechneGewerbesteuer_n18
BerechneGewerbesteuer_n18 --> BerechneGewerbesteuer_n19
BerechneGewerbesteuer_n19 --> BerechneGewerbesteuer_n20
BerechneGewerbesteuer_n0 --> BerechneGewerbesteuer_n2
BerechneGewerbesteuer_n20 --> BerechneGewerbesteuer_n21
click BerechneGewerbesteuer_n0 href "https://www.gesetze-im-internet.de/gewstg/__7.html" "Vollständige Festsetzung der Gewerbesteuer eines Steuerfalls in der gesetzlichen Reihenfolge: § 7 Satz 1 (Gewinn) → § 8 (Hinzurechnungen) → § 9 (Kürzungen) → § 7/§ 10 (Gewerbeertrag) → § 10a (Verlustabzug, Mindestbesteuerung) → § 11 Abs. 1 Satz 3 (Abrundung, Freibetrag) → § 11 Abs. 2/3 (Steuermesszahl, Messbetrag) → § 16 (Hebesatz). Liefert alle Zwischengrößen für die Audit-Vorlage. Ist der maßgebende Gewerbeertrag nach Verlustabzug **0 oder negativ**, entsteht kein Steuermessbetrag und keine Gewerbesteuer (alle nachfolgenden Größen sind 0); ein Verlustvortrag regelt § 10a, der hier nicht fortgeschrieben wird. Erhebungszeiträume **vor 2025** werden bewusst nicht berechnet: § 9 Nr. 1 Satz 1 (Grundsteuer-Fassung) gilt erst ab EZ 2025 (§ 36 Abs. 4b Satz 1 GewStG) — ein begründeter, nicht abfangbarer Abbruch macht diese Konstellation im Audit sichtbar." _blank
click BerechneGewerbesteuer_n6 href "https://www.gesetze-im-internet.de/gewstg/__36.html" "§ 36 Abs. 4b GewStG: dieses Modul bildet die Fassung ab Erhebungszeitraum 2025 ab; EZ ${betrieb.erhebungszeitraum} ist nicht abgedeckt" _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n1 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n2,BerechneGewerbesteuer_n3,BerechneGewerbesteuer_n7,BerechneGewerbesteuer_n8,BerechneGewerbesteuer_n13,BerechneGewerbesteuer_n14,BerechneGewerbesteuer_n15,BerechneGewerbesteuer_n17,BerechneGewerbesteuer_n18,BerechneGewerbesteuer_n19,BerechneGewerbesteuer_n20 subprogram
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n4,BerechneGewerbesteuer_n9,BerechneGewerbesteuer_n10,BerechneGewerbesteuer_n12,BerechneGewerbesteuer_n16 operation
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n5,BerechneGewerbesteuer_n11 decision
classDef abbruch fill:#fdecea,stroke:#f1b0a8,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n6 abbruch
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class BerechneGewerbesteuer_n21 ende
```