Pkw-Tarif · CO₂ + Hubraum
Mehrdimensionaler Tarif: Antriebsart, Schadstoffklasse, Hubraum, CO₂. Realistische wähle-Tiefe.
Gesetzlicher Rahmen
Das Modul bildet die Jahressteuer nach §§ 8, 9 KraftStG vollständig ab: § 8 wählt anhand der Fahrzeugart die Bemessungsgrundlage (Hubraum, CO₂ oder Gesamtgewicht), § 9 Abs. 1 liefert den Tarifbetrag, Abs. 2 die 50-%-Ermäßigung für Elektro-Nutzfahrzeuge, und §§ 3a / 3d regeln Vergünstigung und Befreiung. Progressive Tarife rechnen je angefangene 200-kg-Stufe — die kumulierten Stufenbeträge sind als auditierbare Konstanten abgeleitet.
- 1 § 9 Abs. 1 Tarifbetrag nach Fahrzeugart (§ 8)
TarifNach9Abs1 - 2 § 9 Abs. 2 50 % für Elektro-Nutzfahrzeuge
_Anwende9Abs2 - 3 § 3a / § 3d Schwerbehinderte / Elektro-Befreiung
_AnwendeVerguenstigung
Tarifauswahl · § 9 Abs. 1
Ein wähle-Ausdruck über die Fahrzeugart bestimmt die
einschlägige Nummer des § 9 Abs. 1 und delegiert an die zuständige
Tariffunktion:
- Krafträder Nr. 1
SteuerKraftrad - Personenkraftwagen Nr. 2
SteuerPkw - Wohnmobile Nr. 2a
SteuerWohnmobil - dreirädr. / leichte vierr. Kfz Nr. 2b
SteuerDreiLeichtvier - andere Kfz ≤ 3.500 kg Nr. 3
SteuerNr3 - andere Kfz > 3.500 kg Nr. 4
SteuerNr4 - Anhänger Nr. 5
SteuerAnhaenger
@Quelle("§ 9 Absatz 1 KraftStG")
fn TarifNach9Abs1(f: Fahrzeug): EuroCent = wähle (f.art) {
falls Kraftrad -> SteuerKraftrad(f.hubraumCcm)
falls Pkw -> SteuerPkw(f)
falls Wohnmobil -> SteuerWohnmobil(f.gesamtgewichtKg, f.wohnmobilklasse)
falls DreiLeichtvier -> SteuerDreiLeichtvier(f.hubraumCcm, f.dreiradGrenzwerte, f.antrieb)
falls AndereBis3500 -> SteuerNr3(f.gesamtgewichtKg)
falls AndereUeber3500 -> SteuerNr4(f.gesamtgewichtKg, f.nfzklasse)
falls Anhaenger -> SteuerAnhaenger(f.gesamtgewichtKg)
}Die Gesamtberechnung · § 9
Der Orchestrator wendet Tarif, Elektro-Ermäßigung und Vergünstigung in gesetzlicher Reihenfolge an und legt jede Zwischengröße als eigenes Feld ab.
@Quelle("§ 9 KraftStG")
fn BerechneKraftfahrzeugsteuer(f: Fahrzeug): KraftfahrzeugsteuerErgebnis {
var tarif: EuroCent = TarifNach9Abs1(f)
var nachE: EuroCent = _Anwende9Abs2(f, tarif)
var jahr: EuroCent = _AnwendeVerguenstigung(f, nachE)
KraftfahrzeugsteuerErgebnis(
tarifbetrag = tarif,
nachElektro = nachE,
jahressteuer = jahr,
)
}Das vollständige Modul
Die Implementierung ist auf vier kohäsive Dateien aufgeteilt (azyklischer
Modul-Graph: typen ← Tariffunktionen ← Einstieg) — unverändert
aus findsl/findsl übernommen.
Einstieg · § 9 Orchestrierung kraftst.findsl · 183 Zeilen
--
# Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§§ 8, 9 KraftStG)
Bildet die **Jahressteuer** nach dem Kraftfahrzeugsteuergesetz
(KraftStG 2002, i.d.g.F.) vollständig ab:
- **§ 8 KraftStG** — Bemessungsgrundlage (Hubraum / CO₂ / zulässiges
Gesamtgewicht je nach Fahrzeugart) → Auswahl des Tarifs.
- **§ 9 Abs. 1 KraftStG** — Steuersatz, alle Nummern:
Nr. 1 Krafträder · Nr. 2 a/b/c Personenkraftwagen (Erstzulassung
bis 30.6.2009 / 1.7.2009–31.12.2020 / ab 1.1.2021) · Nr. 2a
Wohnmobile · Nr. 2b dreirädrige/leichte vierrädrige Kfz · Nr. 3
andere Kfz ≤ 3.500 kg · Nr. 4 a/b/c/d Kfz > 3.500 kg · Nr. 5
Anhänger.
- **§ 9 Abs. 2 KraftStG** — 50 % Ermäßigung für Elektrofahrzeuge
(nur Beträge nach Abs. 1 Nr. 3 oder Nr. 4 Buchst. a).
- **§ 9 Abs. 3 KraftStG** — Tagessteuer für ausländische Fahrzeuge.
- **§ 9 Abs. 4 KraftStG** — Jahressteuer für rote / Oldtimer-Kennzeichen.
- **§ 3a KraftStG** — Vergünstigungen für Schwerbehinderte
(Abs. 1 volle Befreiung · Abs. 2 50 % Ermäßigung).
- **§ 3d KraftStG** — Steuerbefreiung für Elektrofahrzeuge
(Erstzulassung 18.5.2011–31.12.2030: 10 Jahre, längstens bis
31.12.2035).
- **§ 9a KraftStG** — Diesel-Zuschlag: ausgelaufen (galt nur
1.4.2007–31.3.2011); wird nicht mehr angewandt (dokumentiert).
**Progressive Tarife** (Nr. 2a/3/4) werden je angefangene 200-kg-Stufe
in der jeweiligen Gewichtsspanne berechnet; die kumulierten
Stufenbeträge sind als auditierbare Konstanten aus den Stufensätzen
abgeleitet (keine handsummierten Werte). „Je angefangene Einheit"
nutzt das Stdlib-Builtin `aufrunden`.
**Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
Steuerbetragsberechnung):** Verfahren §§ 11/12 (Entrichtung,
Festsetzung), Mindestdauer/anteilige Berechnung § 5, Ausnahmekatalog
§ 3, widerrechtliche Benutzung. Die Zuordnung der Schadstoff-/
Geräusch-/Erstzulassungsklasse trifft nach § 2 Abs. 2 Nr. 2 KraftStG
**verbindlich die Zulassungsbehörde** — sie geht hier als geprüfte
Eingabe ein (nicht aus EU-Richtlinien hergeleitet).
--
// ===========================================================================
// Modul-Struktur (Implementierung auf mehrere Dateien aufgeteilt)
// ===========================================================================
// Diese Datei ist die öffentliche Einstiegsdatei (Orchestrierung der
// gesetzlichen Reihenfolge § 9 Abs. 1 Auswahl → Abs. 2 → § 3a/§ 3d →
// Gesamt) plus die § 9 Abs. 4-Konstanten (rote/Oldtimer-Kennzeichen).
// Die Tarifdetails liegen in kohäsiven Geschwisterdateien:
// - kraftstg-typen.fin Aufzählungen, Datensätze, Helfer
// - kraftstg-tarif-leicht.fin § 9 Abs. 1 Nr. 1/2/2a/2b (Konst.+Fn.)
// - kraftstg-tarif-nutzfahrzeug.fin § 9 Abs. 1 Nr. 3/4/5 (Konst.+Fn.)
// Modul-Graph (azyklisch): kraftstg-typen ← {kraftstg-tarif-leicht,
// kraftstg-tarif-nutzfahrzeug} ← kraftstg-steuer.
verwende {
Fahrzeug,
KraftfahrzeugsteuerErgebnis,
Kraftrad,
Pkw,
Wohnmobil,
DreiLeichtvier,
AndereBis3500,
AndereUeber3500,
Anhaenger,
Elektro,
MindestensS2,
Befreit3aAbs1,
Ermaessigt3aAbs2,
} aus "./kraftstg-typen"
verwende {
SteuerKraftrad,
SteuerPkw,
SteuerWohnmobil,
SteuerDreiLeichtvier,
} aus "./kraftstg-tarif-leicht"
verwende {
SteuerNr3,
SteuerNr4,
SteuerAnhaenger,
} aus "./kraftstg-tarif-nutzfahrzeug"
// ===========================================================================
// § 9 Abs. 4 — rote / Oldtimer-Kennzeichen
// ===========================================================================
-- Rotes/Oldtimer-Kennzeichen, nur für Krafträder gültig (Jahressteuer). --
@Quelle("§ 9 Absatz 4 Nummer 1 KraftStG")
konst KZ_NUR_KRAD: EuroCent = 46,02
-- Rotes/Oldtimer-Kennzeichen, im Übrigen (Jahressteuer). --
@Quelle("§ 9 Absatz 4 Nummer 2 KraftStG")
konst KZ_UEBRIGE: EuroCent = 191,73
// ===========================================================================
// § 9 Abs. 1 — Tarifauswahl nach Fahrzeugart (§ 8 KraftStG)
// ===========================================================================
--
Tarifbetrag nach § 9 Abs. 1 KraftStG: wählt anhand der Fahrzeugart
(§ 8 KraftStG) die einschlägige Nummer.
@param f Fahrzeug-Eingaben.
@rückgabe Steuer nach § 9 Abs. 1 KraftStG (vor Abs. 2 / § 3a / § 3d).
--
@Quelle("§ 9 Absatz 1 KraftStG")
fn TarifNach9Abs1(f: Fahrzeug): EuroCent = wähle (f.art) {
falls Kraftrad -> SteuerKraftrad(f.hubraumCcm)
falls Pkw -> SteuerPkw(f)
falls Wohnmobil -> SteuerWohnmobil(f.gesamtgewichtKg, f.wohnmobilklasse)
falls DreiLeichtvier -> SteuerDreiLeichtvier(f.hubraumCcm, f.dreiradGrenzwerte, f.antrieb)
falls AndereBis3500 -> SteuerNr3(f.gesamtgewichtKg)
falls AndereUeber3500 -> SteuerNr4(f.gesamtgewichtKg, f.nfzklasse)
falls Anhaenger -> SteuerAnhaenger(f.gesamtgewichtKg)
}
// ===========================================================================
// § 9 Abs. 2 — Elektrofahrzeug-Ermäßigung; § 3a / § 3d — Vergünstigungen
// ===========================================================================
--
50 %-Ermäßigung für Elektrofahrzeuge nach § 9 Abs. 2 KraftStG — gilt
ausschließlich für Beträge nach § 9 Abs. 1 Nr. 3 oder Nr. 4 Buchst. a
(Nutzfahrzeuge). Für alle anderen Fahrzeugarten/Klassen bleibt der
Betrag unverändert (reine Elektro-PKW sind regelmäßig nach § 3d
befreit).
@param f Fahrzeug-Eingaben.
@param betrag Tarifbetrag nach § 9 Abs. 1 KraftStG.
@rückgabe Betrag nach § 9 Abs. 2 KraftStG.
--
@Quelle("§ 9 Absatz 2 KraftStG")
fn _Anwende9Abs2(f: Fahrzeug, betrag: EuroCent): EuroCent = wähle {
falls f.antrieb == Elektro und f.art == AndereBis3500 -> (betrag / 2) als EuroCent
falls f.antrieb == Elektro und f.art == AndereUeber3500
und f.nfzklasse == MindestensS2 -> (betrag / 2) als EuroCent
sonst -> betrag
}
--
Anwendung der Schwerbehinderten-Vergünstigung (§ 3a KraftStG) und der
Elektrofahrzeug-Befreiung (§ 3d KraftStG) auf den Steuerbetrag.
Reihenfolge: § 3d-Befreiung und § 3a Abs. 1-Befreiung setzen die
Steuer auf 0; § 3a Abs. 2 halbiert.
@param f Fahrzeug-Eingaben.
@param betrag Betrag nach § 9 Abs. 1/2 KraftStG.
@rückgabe Festgesetzte Jahressteuer (0 bei Befreiung).
--
@Quelle("§ 3a KraftStG")
fn _AnwendeVerguenstigung(f: Fahrzeug, betrag: EuroCent): EuroCent = wähle {
falls f.elektroBefreitNach3d -> 0,00
falls f.behinderung == Befreit3aAbs1 -> 0,00
falls f.behinderung == Ermaessigt3aAbs2 -> (betrag / 2) als EuroCent
sonst -> betrag
}
// ===========================================================================
// Gesamtberechnung
// ===========================================================================
--
Vollständige Festsetzung der Kraftfahrzeug-Jahressteuer in der
gesetzlichen Reihenfolge: § 8 (Tarifauswahl) → § 9 Abs. 1
(Tarifbetrag) → § 9 Abs. 2 (Elektro-Ermäßigung) → § 3a / § 3d
(Vergünstigung/Befreiung). Liefert alle Zwischengrößen.
@param f Fahrzeug-Eingaben.
@rückgabe Vollständig dokumentiertes Berechnungsergebnis.
--
@Quelle("§ 9 KraftStG")
fn BerechneKraftfahrzeugsteuer(f: Fahrzeug): KraftfahrzeugsteuerErgebnis {
var tarif: EuroCent = TarifNach9Abs1(f)
var nachE: EuroCent = _Anwende9Abs2(f, tarif)
var jahr: EuroCent = _AnwendeVerguenstigung(f, nachE)
KraftfahrzeugsteuerErgebnis(
tarifbetrag = tarif,
nachElektro = nachE,
jahressteuer = jahr,
)
}Aufzählungen, Datensätze, Helfer kraftstg-typen.findsl · 225 Zeilen
--
# Kraftfahrzeugsteuer — gemeinsame Typen und Helfer
Geteiltes Vokabular des KraftStG-Moduls (aus `kraftstg-steuer`
herausgelöst, damit die Hauptdatei nicht überlang wird): die
Fahrzeug-Klassifizierungs-Aufzählungen (§§ 8, 9, 3a KraftStG), der
Eingabe-Datensatz `Fahrzeug`, der Ergebnis-Datensatz
`KraftfahrzeugsteuerErgebnis` sowie die allgemeinen Berechnungshelfer
`einheiten` (je angefangene Einheit, § 9 KraftStG) und `begrenze`
(Höchstbetrags-Kappung, § 9 Abs. 1 KraftStG).
Importiert nichts (Blatt des Modul-Graphen); wird von den Tarif-Dateien
`kraftstg-tarif-leicht`, `kraftstg-tarif-nutzfahrzeug` und vom Orchestrator
`kraftstg-steuer` genutzt.
--
// ===========================================================================
// Datenstrukturen
// ===========================================================================
--
Fahrzeugart i.S.d. § 8 / § 9 Abs. 1 KraftStG — bestimmt, welcher
Tarif (welche Nummer des § 9 Abs. 1) anzuwenden ist.
@param Kraftrad § 9 Abs. 1 Nr. 1: Krafträder (Hubkolbenmotor).
@param Pkw § 9 Abs. 1 Nr. 2: Personenkraftwagen (M1) mit
Hubkolbenmotor.
@param Wohnmobil § 9 Abs. 1 Nr. 2a: Wohnmobile.
@param DreiLeichtvier § 9 Abs. 1 Nr. 2b: dreirädrige und leichte
vierrädrige Kraftfahrzeuge.
@param AndereBis3500 § 9 Abs. 1 Nr. 3: andere Kfz bis 3.500 kg.
@param AndereUeber3500 § 9 Abs. 1 Nr. 4: Kfz über 3.500 kg.
@param Anhaenger § 9 Abs. 1 Nr. 5: Kraftfahrzeuganhänger.
--
@Quelle("§ 8 KraftStG")
aufzählung Fahrzeugart {
Kraftrad,
Pkw,
Wohnmobil,
DreiLeichtvier,
AndereBis3500,
AndereUeber3500,
Anhaenger,
}
--
Antriebsart. § 9 unterscheidet Fremdzündungsmotor (Ottomotor/Benzin)
und Selbstzündungsmotor (Dieselmotor); `Elektro` steuert die
Ermäßigung/Befreiung (§ 9 Abs. 2, § 3d KraftStG).
@param Fremdzuendung Fremdzündungsmotor (Ottomotor).
@param Selbstzuendung Selbstzündungsmotor (Dieselmotor).
@param Elektro Elektrofahrzeug i.S.d. § 9 Abs. 2 KraftStG.
--
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
aufzählung Antrieb {
Fremdzuendung,
Selbstzuendung,
Elektro,
}
--
Erstzulassungs-Regime des PKW — wählt den Buchstaben des
§ 9 Abs. 1 Nr. 2 KraftStG.
@param BisJuni2009 Erstzulassung bis 30.6.2009 (Buchst. a, Hubraum
+ Schadstoffstufe aa–ee).
@param JuliBisDez2020 Erstzulassung 1.7.2009–31.12.2020 (Buchst. b,
Hubraum + CO₂ über datumsabhängiger Freigrenze).
@param AbJan2021 Erstzulassung ab 1.1.2021 (Buchst. c, Hubraum +
progressiver CO₂-Aufschlag ab 95 g/km).
--
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
aufzählung Erstzulassungsregime {
BisJuni2009,
JuliBisDez2020,
AbJan2021,
}
--
Schadstoffstufe aa–ee für PKW mit Erstzulassung bis 30.6.2009
(§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG). Die Einstufung trifft nach
§ 2 Abs. 2 Nr. 2 KraftStG verbindlich die Zulassungsbehörde.
@param Aa Doppelbuchst. aa (günstigste Stufe).
@param Bb Doppelbuchst. bb.
@param Cc Doppelbuchst. cc.
@param Dd Doppelbuchst. dd.
@param Ee Doppelbuchst. ee (höchste Stufe, keine Voraussetzungen).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
aufzählung PkwSchadstoffstufe {
Aa,
Bb,
Cc,
Dd,
Ee,
}
--
Schadstoffklasse für Wohnmobile (§ 9 Abs. 1 Nr. 2a KraftStG).
@param MindestensS4 mindestens Schadstoffklasse S 4 (Buchst. a).
@param S1bisS3 Schadstoffklasse S 3, S 2 oder S 1 (Buchst. b).
@param WomoSonst Voraussetzungen a/b nicht erfüllt (Buchst. c).
--
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
aufzählung WohnmobilKlasse {
MindestensS4,
S1bisS3,
WomoSonst,
}
--
Schadstoff-/Geräuschklasse für Kfz > 3.500 kg
(§ 9 Abs. 1 Nr. 4 KraftStG). Verbindliche Feststellung der
Zulassungsbehörde (§ 2 Abs. 2 Nr. 2 KraftStG).
@param MindestensS2 mindestens Schadstoffklasse S 2 (Buchst. a).
@param S1 Schadstoffklasse S 1 (Buchst. b).
@param G1 Geräuschklasse G 1 (Buchst. c).
@param NfzSonst Voraussetzungen a/b/c nicht erfüllt (Buchst. d).
--
@Quelle("§ 9 Absatz 1 Nummer 4 KraftStG")
aufzählung NfzKlasse {
MindestensS2,
S1,
G1,
NfzSonst,
}
--
Schwerbehinderten-Vergünstigung nach § 3a KraftStG.
@param Keine keine Vergünstigung.
@param Befreit3aAbs1 volle Steuerbefreiung (Merkzeichen H, Bl, aG —
§ 3a Abs. 1 KraftStG).
@param Ermaessigt3aAbs2 50 % Ermäßigung (orangefarbener Aufdruck,
§ 3a Abs. 2 KraftStG).
--
@Quelle("§ 3a KraftStG")
aufzählung Behinderung {
Keine,
Befreit3aAbs1,
Ermaessigt3aAbs2,
}
--
Eingaben eines Fahrzeugs für die Jahressteuer-Berechnung. Nicht jedes
Feld ist für jede Fahrzeugart relevant — maßgeblich ist `art`
(§ 8 KraftStG); die übrigen Felder gelten nur im jeweiligen Tarif.
@param art Fahrzeugart (§ 8 KraftStG) — wählt den Tarif.
@param antrieb Antriebsart (Fremd-/Selbstzündung/Elektro).
@param hubraumCcm Hubraum in cm³ (Nr. 1, Nr. 2, Nr. 2b).
@param co2GrammProKm CO₂-Emission in g/km (Nr. 2 Buchst. b/c).
@param gesamtgewichtKg verkehrsrechtlich zulässiges Gesamtgewicht
in kg (Nr. 2a, 3, 4, 5).
@param erstzulassung Erstzulassungs-Regime des PKW (Nr. 2 a/b/c).
@param pkwStufe Schadstoffstufe aa–ee (Nr. 2 Buchst. a).
@param co2FreigrenzeNr2b datumsabhängige CO₂-Freigrenze g/km für
Nr. 2 Buchst. b (120 bis 31.12.2011 / 110
ab 1.1.2012 / 95 ab 1.1.2014).
@param dreiradGrenzwerte Dreirad/leichtes Vierrad: Grenzwerte
eingehalten? (Nr. 2b a vs. b).
@param wohnmobilklasse Schadstoffklasse des Wohnmobils (Nr. 2a).
@param nfzklasse Schadstoff-/Geräuschklasse > 3.500 kg (Nr. 4).
@param behinderung Schwerbehinderten-Vergünstigung (§ 3a).
@param elektroBefreitNach3d Steuerbefreiung nach § 3d KraftStG aktiv?
(datumsabhängig — verbindlich extern
festgestellt).
--
@Quelle("§ 8 KraftStG")
datensatz Fahrzeug(
art: Fahrzeugart, // § 8 KraftStG: Tarifauswahl
antrieb: Antrieb, // Fremd-/Selbstzündung/Elektro
hubraumCcm: Ganzzahl = 0, // cm³ (Nr. 1, 2, 2b)
co2GrammProKm: Ganzzahl = 0, // g/km (Nr. 2 b/c)
gesamtgewichtKg: Ganzzahl = 0, // kg (Nr. 2a, 3, 4, 5)
erstzulassung: Erstzulassungsregime = AbJan2021, // PKW: § 9 Nr. 2 a/b/c
pkwStufe: PkwSchadstoffstufe = Ee, // PKW Nr. 2a: Stufe aa–ee
co2FreigrenzeNr2b: Ganzzahl = 95, // PKW Nr. 2b: Freigrenze g/km
dreiradGrenzwerte: Wahrheitswert = falsch, // Nr. 2b: Grenzwerte eingehalten?
wohnmobilklasse: WohnmobilKlasse = WomoSonst, // Nr. 2a: Schadstoffklasse
nfzklasse: NfzKlasse = NfzSonst, // Nr. 4: Schadstoff-/Geräuschklasse
behinderung: Behinderung = Keine, // § 3a KraftStG
elektroBefreitNach3d: Wahrheitswert = falsch, // § 3d KraftStG aktiv?
)
--
Vollständige, prüfbare Berechnung der Kraftfahrzeug-Jahressteuer.
@param tarifbetrag Steuer nach § 9 Abs. 1 KraftStG (vor § 9
Abs. 2 / § 3a / § 3d).
@param nachElektro nach Anwendung der 50 %-Ermäßigung für
Elektrofahrzeuge (§ 9 Abs. 2 KraftStG).
@param jahressteuer festgesetzte Jahressteuer nach Anwendung von
§ 3a / § 3d KraftStG (0 bei Befreiung).
--
@Quelle("§ 9 KraftStG")
datensatz KraftfahrzeugsteuerErgebnis(
tarifbetrag: EuroCent, // § 9 Abs. 1 KraftStG
nachElektro: EuroCent, // § 9 Abs. 2 KraftStG
jahressteuer: EuroCent, // nach § 3a / § 3d KraftStG
)
// ===========================================================================
// Allgemeine Helfer
// ===========================================================================
--
Anzahl angefangener Einheiten: `wert` geteilt durch `schritt`,
aufgerundet (§ 9 KraftStG: „für je … oder einen Teil davon").
@param wert zu zerlegende Menge (cm³ bzw. kg).
@param teiler Einheitengröße (25 / 100 / 200).
@rückgabe Anzahl angefangener Einheiten (≥ 0).
--
@Quelle("§ 9 Absatz 1 KraftStG")
fn Einheiten(wert: Ganzzahl, teiler: Ganzzahl): Ganzzahl = wähle {
falls wert <= 0 -> 0
sonst -> ((wert / teiler) als Dezimal).aufrunden()
}§ 9 Abs. 1 Nr. 1/2/2a/2b kraftstg-tarif-leicht.findsl · 429 Zeilen
--
# Kraftfahrzeugsteuer — Tarif leichte Fahrzeuge (§ 9 Abs. 1 Nr. 1/2/2a/2b)
Konstanten **und** Tarif-Funktionen für Krafträder (Nr. 1),
Personenkraftwagen (Nr. 2 Buchst. a/b/c), Wohnmobile (Nr. 2a) und
dreirädrige/leichte vierrädrige Kfz (Nr. 2b) — aus `kraftstg-steuer`
herausgelöst. Konstanten und Logik liegen bewusst zusammen (ein
Rechtsbereich = eine Datei, minimale modulübergreifende Importe).
Einstiegsfunktionen `steuerKraftrad`, `steuerPkw`, `steuerWohnmobil`,
`steuerDreiLeichtvier` wählt der Orchestrator `kraftstg-steuer`
nach Fahrzeugart (§ 8 KraftStG) aus.
--
verwende {
Fahrzeug,
Antrieb,
PkwSchadstoffstufe,
WohnmobilKlasse,
Einheiten,
Fremdzuendung,
Selbstzuendung,
Elektro,
BisJuni2009,
JuliBisDez2020,
AbJan2021,
Aa,
Bb,
Cc,
Dd,
Ee,
MindestensS4,
S1bisS3,
WomoSonst,
} aus "./kraftstg-typen"
// ===========================================================================
// § 9 Abs. 1 Nr. 1 — Krafträder
// ===========================================================================
-- Kraftrad: je angefangene 25 cm³ Hubraum 1,84 € (§ 9 Abs. 1 Nr. 1 KraftStG). --
@Quelle("§ 9 Absatz 1 Nummer 1 KraftStG")
konst KRAD_JE_25CCM: EuroCent = 1,84
// ===========================================================================
// § 9 Abs. 1 Nr. 2 — Personenkraftwagen
// ===========================================================================
-- PKW Nr. 2c (Erstzulassung ab 1.1.2021): Sockel je 100 cm³, Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_HUBRAUM_OTTO: EuroCent = 2,00
-- PKW Nr. 2c: Sockel je 100 cm³, Selbstzündung (Diesel). --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_HUBRAUM_DIESEL: EuroCent = 9,50
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 95 bis 115 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_95_115: EuroCent = 2,00
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 115 bis 135 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_115_135: EuroCent = 2,20
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 135 bis 155 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_135_155: EuroCent = 2,50
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 155 bis 175 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_155_175: EuroCent = 2,90
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 175 bis 195 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_175_195: EuroCent = 3,40
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 195 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_UEBER_195: EuroCent = 4,00
-- CO₂-Freibetrag: erst Emissionen ÜBER 95 g/km sind aufschlagspflichtig (Nr. 2c). --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_FREI: Ganzzahl = 95
-- PKW Nr. 2b (Erstzulassung 1.7.2009–31.12.2020): Sockel je 100 cm³ Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
konst PKW_B_HUBRAUM_OTTO: EuroCent = 2,00
-- PKW Nr. 2b: Sockel je 100 cm³ Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
konst PKW_B_HUBRAUM_DIESEL: EuroCent = 9,50
-- PKW Nr. 2b: CO₂-Aufschlag je g/km über der (datumsabhängigen) Freigrenze. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
konst PKW_B_CO2_JE_GRAMM: EuroCent = 2,00
-- PKW Nr. 2a (Erstzulassung bis 30.6.2009), je 100 cm³, Stufe aa — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG")
konst PKW_A_AA_OTTO: EuroCent = 6,75
-- Stufe aa — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG")
konst PKW_A_AA_DIESEL: EuroCent = 15,44
-- Stufe bb — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG")
konst PKW_A_BB_OTTO: EuroCent = 7,36
-- Stufe bb — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG")
konst PKW_A_BB_DIESEL: EuroCent = 16,05
-- Stufe cc — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG")
konst PKW_A_CC_OTTO: EuroCent = 15,13
-- Stufe cc — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG")
konst PKW_A_CC_DIESEL: EuroCent = 27,35
-- Stufe dd — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG")
konst PKW_A_DD_OTTO: EuroCent = 21,07
-- Stufe dd — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG")
konst PKW_A_DD_DIESEL: EuroCent = 33,29
-- Stufe ee (höchste, keine Voraussetzungen erfüllt) — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG")
konst PKW_A_EE_OTTO: EuroCent = 25,36
-- Stufe ee — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG")
konst PKW_A_EE_DIESEL: EuroCent = 37,58
// ===========================================================================
// § 9 Abs. 1 Nr. 2b — dreirädrige / leichte vierrädrige Kraftfahrzeuge
// ===========================================================================
-- Dreirad/leichtes Vierrad, Grenzwerte eingehalten, Fremdzündung (je 100 cm³). --
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe a KraftStG")
konst DREIRAD_GW_OTTO: EuroCent = 21,07
-- Grenzwerte eingehalten, Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe a KraftStG")
konst DREIRAD_GW_DIESEL: EuroCent = 33,29
-- Grenzwerte nicht eingehalten, Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe b KraftStG")
konst DREIRAD_SONST_OTTO: EuroCent = 25,36
-- Grenzwerte nicht eingehalten, Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe b KraftStG")
konst DREIRAD_SONST_DIESEL: EuroCent = 37,58
// ===========================================================================
// § 9 Abs. 1 Nr. 2a — Wohnmobile (je angefangene 200 kg Gesamtgewicht)
// ===========================================================================
-- Wohnmobil ≥ Schadstoffklasse S4: bis 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
konst WOMO_S4_BIS_2000: EuroCent = 16,00
-- Wohnmobil ≥ S4: über 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
konst WOMO_S4_UEBER_2000: EuroCent = 10,00
-- Wohnmobil ≥ S4: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
konst WOMO_S4_MAX: EuroCent = 800,00
-- Wohnmobil S3/S2/S1: bis 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
konst WOMO_S1_BIS_2000: EuroCent = 24,00
-- Wohnmobil S3/S2/S1: über 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
konst WOMO_S1_UEBER_2000: EuroCent = 10,00
-- Wohnmobil S3/S2/S1: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
konst WOMO_S1_MAX: EuroCent = 1.000,00
-- Wohnmobil sonst: bis 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
konst WOMO_SONST_BIS_2000: EuroCent = 40,00
-- Wohnmobil sonst: über 2.000 bis 5.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
konst WOMO_SONST_2000_5000: EuroCent = 10,00
-- Wohnmobil sonst: über 5.000 bis 12.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
konst WOMO_SONST_5000_12000: EuroCent = 15,00
-- Wohnmobil sonst: über 12.000 kg je 200 kg (kein Höchstbetrag). --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
konst WOMO_SONST_UEBER_12000: EuroCent = 25,00
// ===========================================================================
// § 9 Abs. 1 Nr. 1 — Krafträder
// ===========================================================================
--
Jahressteuer für Krafträder: je angefangene 25 cm³ Hubraum 1,84 €
(§ 9 Abs. 1 Nr. 1 KraftStG).
@param hubraumCcm Hubraum in cm³.
@rückgabe Jahressteuer des Kraftrads.
--
@Quelle("§ 9 Absatz 1 Nummer 1 KraftStG")
fn SteuerKraftrad(hubraumCcm: Ganzzahl): EuroCent =
KRAD_JE_25CCM * Einheiten(hubraumCcm, 25)
// ===========================================================================
// § 9 Abs. 1 Nr. 2 Buchst. c — PKW Erstzulassung ab 1.1.2021
// ===========================================================================
--
Progressiver CO₂-Aufschlag für PKW nach § 9 Abs. 1 Nr. 2 Buchst. c
KraftStG: für jedes Gramm CO₂/km über 95 g/km, gestaffelt nach dem
Emissionswert (marginal je Spanne).
@param co2 CO₂-Emission in g/km.
@rückgabe CO₂-Aufschlag (0, wenn ≤ 95 g/km).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
fn _Co2AufschlagNr2c(co2: Ganzzahl): EuroCent = wähle {
falls co2 <= 95 -> 0,00
falls co2 <= 115 -> PKW_C_CO2_95_115 * (co2 - 95)
falls co2 <= 135 -> PKW_C_CO2_95_115 * 20
+ PKW_C_CO2_115_135 * (co2 - 115)
falls co2 <= 155 -> PKW_C_CO2_95_115 * 20 + PKW_C_CO2_115_135 * 20
+ PKW_C_CO2_135_155 * (co2 - 135)
falls co2 <= 175 -> PKW_C_CO2_95_115 * 20 + PKW_C_CO2_115_135 * 20
+ PKW_C_CO2_135_155 * 20
+ PKW_C_CO2_155_175 * (co2 - 155)
falls co2 <= 195 -> PKW_C_CO2_95_115 * 20 + PKW_C_CO2_115_135 * 20
+ PKW_C_CO2_135_155 * 20 + PKW_C_CO2_155_175 * 20
+ PKW_C_CO2_175_195 * (co2 - 175)
sonst -> PKW_C_CO2_95_115 * 20 + PKW_C_CO2_115_135 * 20
+ PKW_C_CO2_135_155 * 20 + PKW_C_CO2_155_175 * 20
+ PKW_C_CO2_175_195 * 20
+ PKW_C_CO2_UEBER_195 * (co2 - 195)
}
--
PKW-Hubraum-Sockel nach Antrieb (§ 9 Abs. 1 Nr. 2 Buchst. b/c
KraftStG): je angefangene 100 cm³ 2,00 € (Fremdzündung) bzw. 9,50 €
(Selbstzündung).
@param hubraumCcm Hubraum in cm³.
@param antrieb Antriebsart.
@rückgabe Hubraum-Sockelbetrag.
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
fn _PkwHubraumSockel(hubraumCcm: Ganzzahl, antrieb: Antrieb): EuroCent =
wähle (antrieb) {
falls Selbstzuendung -> PKW_C_HUBRAUM_DIESEL * Einheiten(hubraumCcm, 100)
falls Fremdzuendung, Elektro -> PKW_C_HUBRAUM_OTTO * Einheiten(hubraumCcm, 100)
}
--
PKW Nr. 2 Buchst. c (Erstzulassung ab 1.1.2021): Hubraum-Sockel
zuzüglich progressivem CO₂-Aufschlag (§ 9 Abs. 1 Nr. 2 Buchst. c
KraftStG).
@param hubraumCcm Hubraum in cm³.
@param co2 CO₂-Emission in g/km.
@param antrieb Antriebsart.
@rückgabe Jahressteuer des PKW (Buchst. c).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
fn _SteuerPkwC(hubraumCcm: Ganzzahl, co2: Ganzzahl, antrieb: Antrieb): EuroCent =
_PkwHubraumSockel(hubraumCcm, antrieb) + _Co2AufschlagNr2c(co2)
--
PKW Nr. 2 Buchst. b (Erstzulassung 1.7.2009–31.12.2020):
Hubraum-Sockel zuzüglich 2,00 € je g/km CO₂ über der
datumsabhängigen Freigrenze (120 / 110 / 95 g/km).
@param hubraumCcm Hubraum in cm³.
@param co2 CO₂-Emission in g/km.
@param freigrenze maßgebliche CO₂-Freigrenze (g/km).
@param antrieb Antriebsart.
@rückgabe Jahressteuer des PKW (Buchst. b).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
fn _SteuerPkwB(
hubraumCcm: Ganzzahl,
co2: Ganzzahl,
freigrenze: Ganzzahl,
antrieb: Antrieb,
): EuroCent =
_PkwHubraumSockel(hubraumCcm, antrieb)
+ wähle {
falls co2 <= freigrenze -> 0,00
sonst -> PKW_B_CO2_JE_GRAMM * (co2 - freigrenze)
}
--
PKW Nr. 2 Buchst. a (Erstzulassung bis 30.6.2009): je angefangene
100 cm³ ein nach Schadstoffstufe (aa–ee) und Antrieb gestaffelter
Satz (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG).
@param hubraumCcm Hubraum in cm³.
@param stufe Schadstoffstufe aa–ee.
@param antrieb Antriebsart.
@rückgabe Jahressteuer des PKW (Buchst. a).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
fn _SteuerPkwA(hubraumCcm: Ganzzahl, stufe: PkwSchadstoffstufe, antrieb: Antrieb): EuroCent =
_SatzPkwA(stufe, antrieb) * Einheiten(hubraumCcm, 100)
--
Stufensatz je 100 cm³ für PKW Nr. 2 Buchst. a nach Schadstoffstufe
und Antrieb. (Elektro wird wie Fremdzündung behandelt — relevant
wird der Wert für reine E-PKW ohnehin nicht, da diese nach § 3d
befreit sind.)
@param stufe Schadstoffstufe aa–ee.
@param antrieb Antriebsart.
@rückgabe Satz je angefangene 100 cm³.
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
fn _SatzPkwA(stufe: PkwSchadstoffstufe, antrieb: Antrieb): EuroCent =
wähle (antrieb) {
falls Selbstzuendung -> wähle (stufe) {
falls Aa -> PKW_A_AA_DIESEL
falls Bb -> PKW_A_BB_DIESEL
falls Cc -> PKW_A_CC_DIESEL
falls Dd -> PKW_A_DD_DIESEL
falls Ee -> PKW_A_EE_DIESEL
}
falls Fremdzuendung, Elektro -> wähle (stufe) {
falls Aa -> PKW_A_AA_OTTO
falls Bb -> PKW_A_BB_OTTO
falls Cc -> PKW_A_CC_OTTO
falls Dd -> PKW_A_DD_OTTO
falls Ee -> PKW_A_EE_OTTO
}
}
--
Personenkraftwagen nach § 9 Abs. 1 Nr. 2 KraftStG: wählt anhand des
Erstzulassungs-Regimes Buchst. a, b oder c.
@param f Fahrzeug-Eingaben.
@rückgabe Jahressteuer des PKW.
--
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
fn SteuerPkw(f: Fahrzeug): EuroCent = wähle (f.erstzulassung) {
falls BisJuni2009 -> _SteuerPkwA(f.hubraumCcm, f.pkwStufe, f.antrieb)
falls JuliBisDez2020 -> _SteuerPkwB(f.hubraumCcm, f.co2GrammProKm, f.co2FreigrenzeNr2b, f.antrieb)
falls AbJan2021 -> _SteuerPkwC(f.hubraumCcm, f.co2GrammProKm, f.antrieb)
}
// ===========================================================================
// § 9 Abs. 1 Nr. 2b — dreirädrige / leichte vierrädrige Kraftfahrzeuge
// ===========================================================================
--
Dreirädrige und leichte vierrädrige Kraftfahrzeuge
(§ 9 Abs. 1 Nr. 2b KraftStG): je angefangene 100 cm³ ein nach
Grenzwert-Einhaltung und Antrieb gestaffelter Satz.
@param hubraumCcm Hubraum in cm³.
@param grenzwerte Grenzwerte (RL 97/24/EG Zeile A 2003) eingehalten?
@param antrieb Antriebsart.
@rückgabe Jahressteuer des Fahrzeugs.
--
@Quelle("§ 9 Absatz 1 Nummer 2b KraftStG")
fn SteuerDreiLeichtvier(hubraumCcm: Ganzzahl, grenzwerte: Wahrheitswert, antrieb: Antrieb): EuroCent =
_SatzDreiLeichtvier(grenzwerte, antrieb) * Einheiten(hubraumCcm, 100)
--
Stufensatz je 100 cm³ für § 9 Abs. 1 Nr. 2b KraftStG.
@param grenzwerte Grenzwerte eingehalten?
@param antrieb Antriebsart.
@rückgabe Satz je angefangene 100 cm³.
--
@Quelle("§ 9 Absatz 1 Nummer 2b KraftStG")
fn _SatzDreiLeichtvier(grenzwerte: Wahrheitswert, antrieb: Antrieb): EuroCent =
wähle {
falls grenzwerte und antrieb == Selbstzuendung -> DREIRAD_GW_DIESEL
falls grenzwerte -> DREIRAD_GW_OTTO
falls antrieb == Selbstzuendung -> DREIRAD_SONST_DIESEL
sonst -> DREIRAD_SONST_OTTO
}
// ===========================================================================
// § 9 Abs. 1 Nr. 2a — Wohnmobile
// ===========================================================================
--
Wohnmobil nach § 9 Abs. 1 Nr. 2a KraftStG: je angefangene 200 kg
Gesamtgewicht, progressiv nach Gewichtsspanne und Schadstoffklasse,
mit Höchstbetrag (Buchst. a/b) bzw. ohne (Buchst. c).
@param gesamtgewichtKg verkehrsrechtlich zulässiges Gesamtgewicht (kg).
@param klasse Schadstoffklasse des Wohnmobils.
@rückgabe Jahressteuer des Wohnmobils.
--
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
fn SteuerWohnmobil(gesamtgewichtKg: Ganzzahl, klasse: WohnmobilKlasse): EuroCent =
wähle (klasse) {
falls MindestensS4 -> _WomoZweiStufen(gesamtgewichtKg, WOMO_S4_BIS_2000, WOMO_S4_UEBER_2000).höchstens(WOMO_S4_MAX)
falls S1bisS3 -> _WomoZweiStufen(gesamtgewichtKg, WOMO_S1_BIS_2000, WOMO_S1_UEBER_2000).höchstens(WOMO_S1_MAX)
falls WomoSonst -> _SteuerWohnmobilSonst(gesamtgewichtKg)
}
--
Zwei-Stufen-Wohnmobiltarif (Buchst. a/b): bis 2.000 kg `satzBis`,
darüber `satzUeber`, je angefangene 200 kg.
@param g Gesamtgewicht (kg).
@param satzBis Satz je 200 kg bis 2.000 kg.
@param satzUeber Satz je 200 kg über 2.000 kg.
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
fn _WomoZweiStufen(g: Ganzzahl, satzBis: EuroCent, satzUeber: EuroCent): EuroCent =
wähle {
falls g <= 2000 -> satzBis * Einheiten(g, 200)
sonst -> satzBis * 10 + satzUeber * Einheiten(g - 2000, 200)
}
--
Wohnmobil Buchst. c (Voraussetzungen a/b nicht erfüllt, kein
Höchstbetrag): bis 2.000 kg 40 €, über 2.000–5.000 kg 10 €, über
5.000–12.000 kg 15 €, über 12.000 kg 25 € — je angefangene 200 kg.
@param g Gesamtgewicht (kg).
@rückgabe Jahressteuer des Wohnmobils (Buchst. c).
--
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
fn _SteuerWohnmobilSonst(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> WOMO_SONST_BIS_2000 * Einheiten(g, 200)
falls g <= 5000 -> WOMO_SONST_BIS_2000 * 10
+ WOMO_SONST_2000_5000 * Einheiten(g - 2000, 200)
falls g <= 12000 -> WOMO_SONST_BIS_2000 * 10 + WOMO_SONST_2000_5000 * 15
+ WOMO_SONST_5000_12000 * Einheiten(g - 5000, 200)
sonst -> WOMO_SONST_BIS_2000 * 10 + WOMO_SONST_2000_5000 * 15
+ WOMO_SONST_5000_12000 * 35
+ WOMO_SONST_UEBER_12000 * Einheiten(g - 12000, 200)
}§ 9 Abs. 1 Nr. 3/4/5 kraftstg-tarif-nutzfahrzeug.findsl · 463 Zeilen
--
# Kraftfahrzeugsteuer — Tarif Nutzfahrzeuge (§ 9 Abs. 1 Nr. 3/4/5)
Konstanten **und** Tarif-Funktionen für andere Kfz ≤ 3.500 kg (Nr. 3),
Kfz > 3.500 kg (Nr. 4 Buchst. a/b/c/d — progressive 200-kg-Stufen mit
Höchstbetrag) und Kraftfahrzeuganhänger (Nr. 5) — aus
`kraftstg-steuer` herausgelöst. Konstanten und Logik liegen bewusst
zusammen.
Einstiegsfunktionen `steuerNr3`, `steuerNr4`, `steuerAnhaenger`
wählt der Orchestrator `kraftstg-steuer` nach Fahrzeugart aus.
--
verwende {
NfzKlasse,
Einheiten,
MindestensS2,
S1,
G1,
NfzSonst,
} aus "./kraftstg-typen"
// ===========================================================================
// § 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (je 200 kg, progressiv)
// ===========================================================================
-- Nr. 3: bis 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_BIS_2000: EuroCent = 11,25
-- Nr. 3: über 2.000 bis 3.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_2000_3000: EuroCent = 12,02
-- Nr. 3: über 3.000 bis 3.500 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_3000_3500: EuroCent = 12,78
-- Nr. 3: kumulierter Betrag bei genau 2.000 kg (10 Stufen × Satz). --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_KUM_2000: EuroCent = NR3_BIS_2000 * 10
-- Nr. 3: kumulierter Betrag bei genau 3.000 kg. --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_KUM_3000: EuroCent = NR3_KUM_2000 + NR3_2000_3000 * 5
// ===========================================================================
// § 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (je 200 kg, progressiv, mit Höchstbetrag)
// a) ≥ S2 b) S1 c) G1 d) sonst — 1.000-kg-Stufen = je 5 × 200 kg
// ===========================================================================
-- Nr. 4a (≥ S2): Stufensätze je 200 kg, Gewichtsspannen 2.000…> 12.000 kg. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_1: EuroCent = 6,42
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_2: EuroCent = 6,88
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_3: EuroCent = 7,31
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_4: EuroCent = 7,75
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_5: EuroCent = 8,18
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_6: EuroCent = 8,62
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_7: EuroCent = 9,36
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_8: EuroCent = 10,07
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_9: EuroCent = 10,97
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_10: EuroCent = 11,84
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_11: EuroCent = 13,01
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_12: EuroCent = 14,32
-- Nr. 4a: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_MAX: EuroCent = 556,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_2000: EuroCent = NR4A_1 * 10
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_3000: EuroCent = NR4A_KUM_2000 + NR4A_2 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_4000: EuroCent = NR4A_KUM_3000 + NR4A_3 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_5000: EuroCent = NR4A_KUM_4000 + NR4A_4 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_6000: EuroCent = NR4A_KUM_5000 + NR4A_5 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_7000: EuroCent = NR4A_KUM_6000 + NR4A_6 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_8000: EuroCent = NR4A_KUM_7000 + NR4A_7 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_9000: EuroCent = NR4A_KUM_8000 + NR4A_8 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_10000: EuroCent = NR4A_KUM_9000 + NR4A_9 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_11000: EuroCent = NR4A_KUM_10000 + NR4A_10 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_12000: EuroCent = NR4A_KUM_11000 + NR4A_11 * 5
-- Nr. 4d (Voraussetzungen a/b/c nicht erfüllt): Stufensätze je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_1: EuroCent = 11,25
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_2: EuroCent = 12,02
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_3: EuroCent = 12,78
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_4: EuroCent = 13,55
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_5: EuroCent = 14,32
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_6: EuroCent = 15,08
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_7: EuroCent = 16,36
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_8: EuroCent = 17,64
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_9: EuroCent = 19,17
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_10: EuroCent = 20,71
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_11: EuroCent = 22,75
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_12: EuroCent = 25,05
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_13: EuroCent = 27,61
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_14: EuroCent = 45,50
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_15: EuroCent = 63,40
-- Nr. 4d: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_MAX: EuroCent = 1.681,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_2000: EuroCent = NR4D_1 * 10
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_3000: EuroCent = NR4D_KUM_2000 + NR4D_2 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_4000: EuroCent = NR4D_KUM_3000 + NR4D_3 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_5000: EuroCent = NR4D_KUM_4000 + NR4D_4 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_6000: EuroCent = NR4D_KUM_5000 + NR4D_5 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_7000: EuroCent = NR4D_KUM_6000 + NR4D_6 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_8000: EuroCent = NR4D_KUM_7000 + NR4D_7 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_9000: EuroCent = NR4D_KUM_8000 + NR4D_8 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_10000: EuroCent = NR4D_KUM_9000 + NR4D_9 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_11000: EuroCent = NR4D_KUM_10000 + NR4D_10 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_12000: EuroCent = NR4D_KUM_11000 + NR4D_11 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_13000: EuroCent = NR4D_KUM_12000 + NR4D_12 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_14000: EuroCent = NR4D_KUM_13000 + NR4D_13 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_15000: EuroCent = NR4D_KUM_14000 + NR4D_14 * 5
-- Nr. 4b (Schadstoffklasse S1): Stufensätze je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_1: EuroCent = 6,42
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_2: EuroCent = 6,88
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_3: EuroCent = 7,31
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_4: EuroCent = 7,75
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_5: EuroCent = 8,18
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_6: EuroCent = 8,62
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_7: EuroCent = 9,36
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_8: EuroCent = 10,07
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_9: EuroCent = 10,97
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_10: EuroCent = 11,84
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_11: EuroCent = 13,01
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_12: EuroCent = 14,32
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_13: EuroCent = 15,77
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_14: EuroCent = 26,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_15: EuroCent = 36,23
-- Nr. 4b: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_MAX: EuroCent = 914,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_2000: EuroCent = NR4B_1 * 10
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_3000: EuroCent = NR4B_KUM_2000 + NR4B_2 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_4000: EuroCent = NR4B_KUM_3000 + NR4B_3 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_5000: EuroCent = NR4B_KUM_4000 + NR4B_4 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_6000: EuroCent = NR4B_KUM_5000 + NR4B_5 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_7000: EuroCent = NR4B_KUM_6000 + NR4B_6 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_8000: EuroCent = NR4B_KUM_7000 + NR4B_7 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_9000: EuroCent = NR4B_KUM_8000 + NR4B_8 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_10000: EuroCent = NR4B_KUM_9000 + NR4B_9 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_11000: EuroCent = NR4B_KUM_10000 + NR4B_10 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_12000: EuroCent = NR4B_KUM_11000 + NR4B_11 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_13000: EuroCent = NR4B_KUM_12000 + NR4B_12 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_14000: EuroCent = NR4B_KUM_13000 + NR4B_13 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_15000: EuroCent = NR4B_KUM_14000 + NR4B_14 * 5
-- Nr. 4c (Geräuschklasse G1): Stufensätze je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_1: EuroCent = 9,64
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_2: EuroCent = 10,30
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_3: EuroCent = 10,97
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_4: EuroCent = 11,61
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_5: EuroCent = 12,27
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_6: EuroCent = 12,94
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_7: EuroCent = 14,03
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_8: EuroCent = 15,11
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_9: EuroCent = 16,44
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_10: EuroCent = 17,74
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_11: EuroCent = 19,51
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_12: EuroCent = 21,47
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_13: EuroCent = 23,67
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_14: EuroCent = 39,01
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_15: EuroCent = 54,35
-- Nr. 4c: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_MAX: EuroCent = 1.425,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_2000: EuroCent = NR4C_1 * 10
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_3000: EuroCent = NR4C_KUM_2000 + NR4C_2 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_4000: EuroCent = NR4C_KUM_3000 + NR4C_3 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_5000: EuroCent = NR4C_KUM_4000 + NR4C_4 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_6000: EuroCent = NR4C_KUM_5000 + NR4C_5 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_7000: EuroCent = NR4C_KUM_6000 + NR4C_6 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_8000: EuroCent = NR4C_KUM_7000 + NR4C_7 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_9000: EuroCent = NR4C_KUM_8000 + NR4C_8 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_10000: EuroCent = NR4C_KUM_9000 + NR4C_9 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_11000: EuroCent = NR4C_KUM_10000 + NR4C_10 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_12000: EuroCent = NR4C_KUM_11000 + NR4C_11 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_13000: EuroCent = NR4C_KUM_12000 + NR4C_12 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_14000: EuroCent = NR4C_KUM_13000 + NR4C_13 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_15000: EuroCent = NR4C_KUM_14000 + NR4C_14 * 5
// ===========================================================================
// § 9 Abs. 1 Nr. 5 — Kraftfahrzeuganhänger
// ===========================================================================
-- Anhänger: je angefangene 200 kg Gesamtgewicht 7,46 €. --
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
konst ANH_JE_200KG: EuroCent = 7,46
-- Anhänger: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
konst ANH_MAX: EuroCent = 373,24
// ===========================================================================
// § 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg
// ===========================================================================
--
Andere Kraftfahrzeuge bis 3.500 kg (§ 9 Abs. 1 Nr. 3 KraftStG):
je angefangene 200 kg, progressiv nach Gewichtsspanne (kein
Höchstbetrag).
@param g Gesamtgewicht (kg).
@rückgabe Jahressteuer.
--
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
fn SteuerNr3(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR3_BIS_2000 * Einheiten(g, 200)
falls g <= 3000 -> NR3_KUM_2000 + NR3_2000_3000 * Einheiten(g - 2000, 200)
sonst -> NR3_KUM_3000 + NR3_3000_3500 * Einheiten(g - 3000, 200)
}
// ===========================================================================
// § 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg
// ===========================================================================
--
Kfz über 3.500 kg (§ 9 Abs. 1 Nr. 4 KraftStG): je angefangene 200 kg,
progressiv in 1.000-kg-Spannen, nach Schadstoff-/Geräuschklasse, mit
jeweils eigenem Höchstbetrag. Alle vier Buchstaben sind eigenständig
modelliert: a (≥ S2, Spannen bis > 12.000 kg, max 556 €), b (S1,
max 914 €), c (G1, max 1.425 €), d (sonst, max 1.681 €).
@param g Gesamtgewicht (kg).
@param klasse Schadstoff-/Geräuschklasse.
@rückgabe Jahressteuer.
--
@Quelle("§ 9 Absatz 1 Nummer 4 KraftStG")
fn SteuerNr4(g: Ganzzahl, klasse: NfzKlasse): EuroCent = wähle (klasse) {
falls MindestensS2 -> _Nr4a(g).höchstens(NR4A_MAX)
falls S1 -> _Nr4b(g).höchstens(NR4B_MAX)
falls G1 -> _Nr4c(g).höchstens(NR4C_MAX)
falls NfzSonst -> _Nr4d(g).höchstens(NR4D_MAX)
}
--
Progressiver Stufentarif Buchst. a (≥ S2), je 200 kg, Spannen
2.000…> 12.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. a KraftStG).
@param g Gesamtgewicht (kg).
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
fn _Nr4a(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR4A_1 * Einheiten(g, 200)
falls g <= 3000 -> NR4A_KUM_2000 + NR4A_2 * Einheiten(g - 2000, 200)
falls g <= 4000 -> NR4A_KUM_3000 + NR4A_3 * Einheiten(g - 3000, 200)
falls g <= 5000 -> NR4A_KUM_4000 + NR4A_4 * Einheiten(g - 4000, 200)
falls g <= 6000 -> NR4A_KUM_5000 + NR4A_5 * Einheiten(g - 5000, 200)
falls g <= 7000 -> NR4A_KUM_6000 + NR4A_6 * Einheiten(g - 6000, 200)
falls g <= 8000 -> NR4A_KUM_7000 + NR4A_7 * Einheiten(g - 7000, 200)
falls g <= 9000 -> NR4A_KUM_8000 + NR4A_8 * Einheiten(g - 8000, 200)
falls g <= 10000 -> NR4A_KUM_9000 + NR4A_9 * Einheiten(g - 9000, 200)
falls g <= 11000 -> NR4A_KUM_10000 + NR4A_10 * Einheiten(g - 10000, 200)
falls g <= 12000 -> NR4A_KUM_11000 + NR4A_11 * Einheiten(g - 11000, 200)
sonst -> NR4A_KUM_12000 + NR4A_12 * Einheiten(g - 12000, 200)
}
--
Progressiver Stufentarif Buchst. d (Voraussetzungen a/b/c nicht
erfüllt), je 200 kg, Spannen 2.000…> 15.000 kg
(§ 9 Abs. 1 Nr. 4 Buchst. d KraftStG).
@param g Gesamtgewicht (kg).
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
fn _Nr4d(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR4D_1 * Einheiten(g, 200)
falls g <= 3000 -> NR4D_KUM_2000 + NR4D_2 * Einheiten(g - 2000, 200)
falls g <= 4000 -> NR4D_KUM_3000 + NR4D_3 * Einheiten(g - 3000, 200)
falls g <= 5000 -> NR4D_KUM_4000 + NR4D_4 * Einheiten(g - 4000, 200)
falls g <= 6000 -> NR4D_KUM_5000 + NR4D_5 * Einheiten(g - 5000, 200)
falls g <= 7000 -> NR4D_KUM_6000 + NR4D_6 * Einheiten(g - 6000, 200)
falls g <= 8000 -> NR4D_KUM_7000 + NR4D_7 * Einheiten(g - 7000, 200)
falls g <= 9000 -> NR4D_KUM_8000 + NR4D_8 * Einheiten(g - 8000, 200)
falls g <= 10000 -> NR4D_KUM_9000 + NR4D_9 * Einheiten(g - 9000, 200)
falls g <= 11000 -> NR4D_KUM_10000 + NR4D_10 * Einheiten(g - 10000, 200)
falls g <= 12000 -> NR4D_KUM_11000 + NR4D_11 * Einheiten(g - 11000, 200)
falls g <= 13000 -> NR4D_KUM_12000 + NR4D_12 * Einheiten(g - 12000, 200)
falls g <= 14000 -> NR4D_KUM_13000 + NR4D_13 * Einheiten(g - 13000, 200)
falls g <= 15000 -> NR4D_KUM_14000 + NR4D_14 * Einheiten(g - 14000, 200)
sonst -> NR4D_KUM_15000 + NR4D_15 * Einheiten(g - 15000, 200)
}
--
Progressiver Stufentarif Buchst. b (Schadstoffklasse S 1), je 200 kg,
Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. b KraftStG).
@param g Gesamtgewicht (kg).
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
fn _Nr4b(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR4B_1 * Einheiten(g, 200)
falls g <= 3000 -> NR4B_KUM_2000 + NR4B_2 * Einheiten(g - 2000, 200)
falls g <= 4000 -> NR4B_KUM_3000 + NR4B_3 * Einheiten(g - 3000, 200)
falls g <= 5000 -> NR4B_KUM_4000 + NR4B_4 * Einheiten(g - 4000, 200)
falls g <= 6000 -> NR4B_KUM_5000 + NR4B_5 * Einheiten(g - 5000, 200)
falls g <= 7000 -> NR4B_KUM_6000 + NR4B_6 * Einheiten(g - 6000, 200)
falls g <= 8000 -> NR4B_KUM_7000 + NR4B_7 * Einheiten(g - 7000, 200)
falls g <= 9000 -> NR4B_KUM_8000 + NR4B_8 * Einheiten(g - 8000, 200)
falls g <= 10000 -> NR4B_KUM_9000 + NR4B_9 * Einheiten(g - 9000, 200)
falls g <= 11000 -> NR4B_KUM_10000 + NR4B_10 * Einheiten(g - 10000, 200)
falls g <= 12000 -> NR4B_KUM_11000 + NR4B_11 * Einheiten(g - 11000, 200)
falls g <= 13000 -> NR4B_KUM_12000 + NR4B_12 * Einheiten(g - 12000, 200)
falls g <= 14000 -> NR4B_KUM_13000 + NR4B_13 * Einheiten(g - 13000, 200)
falls g <= 15000 -> NR4B_KUM_14000 + NR4B_14 * Einheiten(g - 14000, 200)
sonst -> NR4B_KUM_15000 + NR4B_15 * Einheiten(g - 15000, 200)
}
--
Progressiver Stufentarif Buchst. c (Geräuschklasse G 1), je 200 kg,
Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. c KraftStG).
@param g Gesamtgewicht (kg).
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
fn _Nr4c(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR4C_1 * Einheiten(g, 200)
falls g <= 3000 -> NR4C_KUM_2000 + NR4C_2 * Einheiten(g - 2000, 200)
falls g <= 4000 -> NR4C_KUM_3000 + NR4C_3 * Einheiten(g - 3000, 200)
falls g <= 5000 -> NR4C_KUM_4000 + NR4C_4 * Einheiten(g - 4000, 200)
falls g <= 6000 -> NR4C_KUM_5000 + NR4C_5 * Einheiten(g - 5000, 200)
falls g <= 7000 -> NR4C_KUM_6000 + NR4C_6 * Einheiten(g - 6000, 200)
falls g <= 8000 -> NR4C_KUM_7000 + NR4C_7 * Einheiten(g - 7000, 200)
falls g <= 9000 -> NR4C_KUM_8000 + NR4C_8 * Einheiten(g - 8000, 200)
falls g <= 10000 -> NR4C_KUM_9000 + NR4C_9 * Einheiten(g - 9000, 200)
falls g <= 11000 -> NR4C_KUM_10000 + NR4C_10 * Einheiten(g - 10000, 200)
falls g <= 12000 -> NR4C_KUM_11000 + NR4C_11 * Einheiten(g - 11000, 200)
falls g <= 13000 -> NR4C_KUM_12000 + NR4C_12 * Einheiten(g - 12000, 200)
falls g <= 14000 -> NR4C_KUM_13000 + NR4C_13 * Einheiten(g - 13000, 200)
falls g <= 15000 -> NR4C_KUM_14000 + NR4C_14 * Einheiten(g - 14000, 200)
sonst -> NR4C_KUM_15000 + NR4C_15 * Einheiten(g - 15000, 200)
}
// ===========================================================================
// § 9 Abs. 1 Nr. 5 — Anhänger
// ===========================================================================
--
Kraftfahrzeuganhänger (§ 9 Abs. 1 Nr. 5 KraftStG): je angefangene
200 kg Gesamtgewicht 7,46 €, höchstens 373,24 €.
@param gesamtgewichtKg Gesamtgewicht (kg).
@rückgabe Jahressteuer des Anhängers.
--
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
fn SteuerAnhaenger(gesamtgewichtKg: Ganzzahl): EuroCent =
(ANH_JE_200KG * Einheiten(gesamtgewichtKg, 200)).höchstens(ANH_MAX)examples/kraftst Geprüft — die prüfe-Fälle
Die Sollwerte sind unabhängig aus dem Gesetzeswortlaut gerechnet — „je angefangene Einheit" als Aufrundung, die progressiven Gewichts- und CO₂-Tarife stufenweise summiert, Höchstbeträge gedeckelt.
Testdatei anzeigen kraftst.test.findsl
--
# Akzeptanztests — Kraftfahrzeugsteuer (§§ 8, 9 KraftStG)
`prüfe`-Blöcke zur Datei `kraftstg-steuer`. Alle Sollwerte sind
unabhängig aus dem Gesetzeswortlaut gerechnet (KraftStG 2002,
i.d.g.F.): „je angefangene Einheit" = Aufrundung; progressive
Gewichts-/CO₂-Tarife stufenweise summiert; Höchstbeträge gedeckelt.
Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
--
// Importe nach Quelldatei gruppiert (Modul auf mehrere Dateien
// aufgeteilt): Typen/Helfer/Aufzählungswerte aus kraftstg-typen, die
// Kraftrad-Einstiegsfunktion aus kraftstg-tarif-leicht, die öffentlichen
// Orchestrator-Funktionen aus kraftstg-steuer.
verwende {
Einheiten,
Fahrzeug,
KraftfahrzeugsteuerErgebnis,
Kraftrad,
Pkw,
Wohnmobil,
AndereBis3500,
AndereUeber3500,
Anhaenger,
Fremdzuendung,
Selbstzuendung,
Elektro,
BisJuni2009,
JuliBisDez2020,
AbJan2021,
Aa,
Ee,
MindestensS4,
S1bisS3,
WomoSonst,
MindestensS2,
G1,
NfzSonst,
Befreit3aAbs1,
Ermaessigt3aAbs2,
} aus "./kraftstg-typen"
verwende {
SteuerKraftrad,
} aus "./kraftstg-tarif-leicht"
verwende {
TarifNach9Abs1,
BerechneKraftfahrzeugsteuer,
} aus "./kraftst"
prüfe "Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)" {
testfall "exakt teilbar" { Einheiten(2000, 200) == 10 }
testfall "Teil davon rundet auf" { Einheiten(1598, 100) == 16 }
testfall "knapp über Grenze" { Einheiten(601, 25) == 25 }
testfall "0 oder negativ → 0" { Einheiten(0, 200) == 0 }
}
prüfe "§ 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)" {
testfall "125 cm³ → 5 × 1,84 = 9,20 €" {
SteuerKraftrad(125) == 9,20
}
testfall "600 cm³ → 24 × 1,84 = 44,16 €" {
SteuerKraftrad(600) == 44,16
}
testfall "601 cm³ → 25 × 1,84 = 46,00 €" {
SteuerKraftrad(601) == 46,00
}
}
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)" {
testfall "Benziner 1.598 cm³, 120 g/km → 32,00 + 51,00 = 83,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1598, co2GrammProKm = 120,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 83,00
}
testfall "Diesel 1.968 cm³, 150 g/km → 190,00 + 121,50 = 311,50 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Selbstzuendung,
hubraumCcm = 1968, co2GrammProKm = 150,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 311,50
}
testfall "CO₂ genau 95 g/km → kein Aufschlag (nur Hubraum 20,00 €)" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 999, co2GrammProKm = 95,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 20,00
}
testfall "alle CO₂-Bänder: 1.000 cm³, 200 g/km → 20,00 + 280,00 = 300,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1000, co2GrammProKm = 200,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 300,00
}
}
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020" {
testfall "Benziner 1.390 cm³, 130 g/km, Freigrenze 110 → 28,00 + 40,00 = 68,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1390, co2GrammProKm = 130,
erstzulassung = JuliBisDez2020, co2FreigrenzeNr2b = 110,
)
TarifNach9Abs1(f) == 68,00
}
}
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)" {
testfall "Benziner Stufe ee, 1.600 cm³ → 16 × 25,36 = 405,76 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1600,
erstzulassung = BisJuni2009, pkwStufe = Ee,
)
TarifNach9Abs1(f) == 405,76
}
testfall "Diesel Stufe aa, 1.900 cm³ → 19 × 15,44 = 293,36 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Selbstzuendung,
hubraumCcm = 1900,
erstzulassung = BisJuni2009, pkwStufe = Aa,
)
TarifNach9Abs1(f) == 293,36
}
}
prüfe "§ 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)" {
testfall "≥ S4, 3.000 kg → 160,00 + 50,00 = 210,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 3000, wohnmobilklasse = MindestensS4,
)
TarifNach9Abs1(f) == 210,00
}
testfall "≥ S4, sehr schwer → Höchstbetrag 800,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 20000, wohnmobilklasse = MindestensS4,
)
TarifNach9Abs1(f) == 800,00
}
testfall "S3–S1, 3.000 kg → 240,00 + 50,00 = 290,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 3000, wohnmobilklasse = S1bisS3,
)
TarifNach9Abs1(f) == 290,00
}
testfall "sonst, 6.000 kg → 400,00 + 150,00 + 75,00 = 625,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 6000, wohnmobilklasse = WomoSonst,
)
TarifNach9Abs1(f) == 625,00
}
}
prüfe "§ 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)" {
testfall "2.800 kg → 112,50 + 48,08 = 160,58 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereBis3500, antrieb = Selbstzuendung, gesamtgewichtKg = 2800,
)
TarifNach9Abs1(f) == 160,58
}
testfall "3.500 kg → 112,50 + 60,10 + 38,34 = 210,94 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereBis3500, antrieb = Selbstzuendung, gesamtgewichtKg = 3500,
)
TarifNach9Abs1(f) == 210,94
}
}
prüfe "§ 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)" {
testfall "Buchst. a (≥ S2), 5.000 kg → 173,90 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = MindestensS2,
)
TarifNach9Abs1(f) == 173,90
}
testfall "Buchst. a, sehr schwer → Höchstbetrag 556,00 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 20000, nfzklasse = MindestensS2,
)
TarifNach9Abs1(f) == 556,00
}
testfall "Buchst. c (G1), 5.000 kg → 260,80 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = G1,
)
TarifNach9Abs1(f) == 260,80
}
testfall "Buchst. d (sonst), 5.000 kg → 304,25 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = NfzSonst,
)
TarifNach9Abs1(f) == 304,25
}
testfall "Buchst. d, sehr schwer → Höchstbetrag 1.681,00 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 40000, nfzklasse = NfzSonst,
)
TarifNach9Abs1(f) == 1.681,00
}
}
prüfe "§ 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)" {
testfall "2.000 kg → 10 × 7,46 = 74,60 €" {
var f: Fahrzeug = Fahrzeug(
art = Anhaenger, antrieb = Fremdzuendung, gesamtgewichtKg = 2000,
)
TarifNach9Abs1(f) == 74,60
}
testfall "schwer → Höchstbetrag 373,24 €" {
var f: Fahrzeug = Fahrzeug(
art = Anhaenger, antrieb = Fremdzuendung, gesamtgewichtKg = 20000,
)
TarifNach9Abs1(f) == 373,24
}
}
prüfe "§ 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)" {
testfall "E-Kfz Nr. 3, 3.000 kg → 172,60 / 2 = 86,30 €" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(art = AndereBis3500, antrieb = Elektro, gesamtgewichtKg = 3000),
)
e.tarifbetrag == 172,60 und e.nachElektro == 86,30 und e.jahressteuer == 86,30
}
testfall "E-Kfz Nr. 4a, 5.000 kg → 173,90 / 2 = 86,95 €" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = AndereUeber3500, antrieb = Elektro,
gesamtgewichtKg = 5000, nfzklasse = MindestensS2,
),
)
e.nachElektro == 86,95
}
testfall "E-Kfz Nr. 4d → KEINE 50 %-Ermäßigung (nur a)" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = AndereUeber3500, antrieb = Elektro,
gesamtgewichtKg = 5000, nfzklasse = NfzSonst,
),
)
e.nachElektro == 304,25
}
}
prüfe "§ 3a / § 3d — Vergünstigungen / Befreiungen" {
testfall "§ 3a Abs. 1 (H/Bl/aG) → volle Befreiung 0,00 €" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Kraftrad, antrieb = Fremdzuendung,
hubraumCcm = 125, behinderung = Befreit3aAbs1,
),
)
e.jahressteuer == 0,00
}
testfall "§ 3a Abs. 2 → 50 % (9,20 / 2 = 4,60 €)" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Kraftrad, antrieb = Fremdzuendung,
hubraumCcm = 125, behinderung = Ermaessigt3aAbs2,
),
)
e.tarifbetrag == 9,20 und e.jahressteuer == 4,60
}
testfall "§ 3d E-Befreiung aktiv → 0,00 € (trotz Tarifbetrag)" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Pkw, antrieb = Elektro,
hubraumCcm = 0, co2GrammProKm = 0,
erstzulassung = AbJan2021, elektroBefreitNach3d = wahr,
),
)
e.jahressteuer == 0,00
}
}
prüfe "Gesamtberechnung — vollständiges Ergebnis" {
testfall "Benziner-PKW ab 2021, 1.598 cm³, 120 g/km" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1598, co2GrammProKm = 120,
erstzulassung = AbJan2021,
),
)
e.tarifbetrag == 83,00 und e.nachElektro == 83,00 und e.jahressteuer == 83,00
}
}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
--
# Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§§ 8, 9 KraftStG)
Bildet die **Jahressteuer** nach dem Kraftfahrzeugsteuergesetz
(KraftStG 2002, i.d.g.F.) vollständig ab:
- **§ 8 KraftStG** — Bemessungsgrundlage (Hubraum / CO₂ / zulässiges
Gesamtgewicht je nach Fahrzeugart) → Auswahl des Tarifs.
- **§ 9 Abs. 1 KraftStG** — Steuersatz, alle Nummern:
Nr. 1 Krafträder · Nr. 2 a/b/c Personenkraftwagen (Erstzulassung
bis 30.6.2009 / 1.7.2009–31.12.2020 / ab 1.1.2021) · Nr. 2a
Wohnmobile · Nr. 2b dreirädrige/leichte vierrädrige Kfz · Nr. 3
andere Kfz ≤ 3.500 kg · Nr. 4 a/b/c/d Kfz > 3.500 kg · Nr. 5
Anhänger.
- **§ 9 Abs. 2 KraftStG** — 50 % Ermäßigung für Elektrofahrzeuge
(nur Beträge nach Abs. 1 Nr. 3 oder Nr. 4 Buchst. a).
- **§ 9 Abs. 3 KraftStG** — Tagessteuer für ausländische Fahrzeuge.
- **§ 9 Abs. 4 KraftStG** — Jahressteuer für rote / Oldtimer-Kennzeichen.
- **§ 3a KraftStG** — Vergünstigungen für Schwerbehinderte
(Abs. 1 volle Befreiung · Abs. 2 50 % Ermäßigung).
- **§ 3d KraftStG** — Steuerbefreiung für Elektrofahrzeuge
(Erstzulassung 18.5.2011–31.12.2030: 10 Jahre, längstens bis
31.12.2035).
- **§ 9a KraftStG** — Diesel-Zuschlag: ausgelaufen (galt nur
1.4.2007–31.3.2011); wird nicht mehr angewandt (dokumentiert).
**Progressive Tarife** (Nr. 2a/3/4) werden je angefangene 200-kg-Stufe
in der jeweiligen Gewichtsspanne berechnet; die kumulierten
Stufenbeträge sind als auditierbare Konstanten aus den Stufensätzen
abgeleitet (keine handsummierten Werte). „Je angefangene Einheit"
nutzt das Stdlib-Builtin `aufrunden`.
**Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
Steuerbetragsberechnung):** Verfahren §§ 11/12 (Entrichtung,
Festsetzung), Mindestdauer/anteilige Berechnung § 5, Ausnahmekatalog
§ 3, widerrechtliche Benutzung. Die Zuordnung der Schadstoff-/
Geräusch-/Erstzulassungsklasse trifft nach § 2 Abs. 2 Nr. 2 KraftStG
**verbindlich die Zulassungsbehörde** — sie geht hier als geprüfte
Eingabe ein (nicht aus EU-Richtlinien hergeleitet).
--
// ===========================================================================
// Modul-Struktur (Implementierung auf mehrere Dateien aufgeteilt)
// ===========================================================================
// Diese Datei ist die öffentliche Einstiegsdatei (Orchestrierung der
// gesetzlichen Reihenfolge § 9 Abs. 1 Auswahl → Abs. 2 → § 3a/§ 3d →
// Gesamt) plus die § 9 Abs. 4-Konstanten (rote/Oldtimer-Kennzeichen).
// Die Tarifdetails liegen in kohäsiven Geschwisterdateien:
// - kraftstg-typen.fin Aufzählungen, Datensätze, Helfer
// - kraftstg-tarif-leicht.fin § 9 Abs. 1 Nr. 1/2/2a/2b (Konst.+Fn.)
// - kraftstg-tarif-nutzfahrzeug.fin § 9 Abs. 1 Nr. 3/4/5 (Konst.+Fn.)
// Modul-Graph (azyklisch): kraftstg-typen ← {kraftstg-tarif-leicht,
// kraftstg-tarif-nutzfahrzeug} ← kraftstg-steuer.
verwende {
Fahrzeug,
KraftfahrzeugsteuerErgebnis,
Kraftrad,
Pkw,
Wohnmobil,
DreiLeichtvier,
AndereBis3500,
AndereUeber3500,
Anhaenger,
Elektro,
MindestensS2,
Befreit3aAbs1,
Ermaessigt3aAbs2,
} aus "./kraftstg-typen"
verwende {
SteuerKraftrad,
SteuerPkw,
SteuerWohnmobil,
SteuerDreiLeichtvier,
} aus "./kraftstg-tarif-leicht"
verwende {
SteuerNr3,
SteuerNr4,
SteuerAnhaenger,
} aus "./kraftstg-tarif-nutzfahrzeug"
// ===========================================================================
// § 9 Abs. 4 — rote / Oldtimer-Kennzeichen
// ===========================================================================
-- Rotes/Oldtimer-Kennzeichen, nur für Krafträder gültig (Jahressteuer). --
@Quelle("§ 9 Absatz 4 Nummer 1 KraftStG")
konst KZ_NUR_KRAD: EuroCent = 46,02
-- Rotes/Oldtimer-Kennzeichen, im Übrigen (Jahressteuer). --
@Quelle("§ 9 Absatz 4 Nummer 2 KraftStG")
konst KZ_UEBRIGE: EuroCent = 191,73
// ===========================================================================
// § 9 Abs. 1 — Tarifauswahl nach Fahrzeugart (§ 8 KraftStG)
// ===========================================================================
--
Tarifbetrag nach § 9 Abs. 1 KraftStG: wählt anhand der Fahrzeugart
(§ 8 KraftStG) die einschlägige Nummer.
@param f Fahrzeug-Eingaben.
@rückgabe Steuer nach § 9 Abs. 1 KraftStG (vor Abs. 2 / § 3a / § 3d).
--
@Quelle("§ 9 Absatz 1 KraftStG")
fn TarifNach9Abs1(f: Fahrzeug): EuroCent = wähle (f.art) {
falls Kraftrad -> SteuerKraftrad(f.hubraumCcm)
falls Pkw -> SteuerPkw(f)
falls Wohnmobil -> SteuerWohnmobil(f.gesamtgewichtKg, f.wohnmobilklasse)
falls DreiLeichtvier -> SteuerDreiLeichtvier(f.hubraumCcm, f.dreiradGrenzwerte, f.antrieb)
falls AndereBis3500 -> SteuerNr3(f.gesamtgewichtKg)
falls AndereUeber3500 -> SteuerNr4(f.gesamtgewichtKg, f.nfzklasse)
falls Anhaenger -> SteuerAnhaenger(f.gesamtgewichtKg)
}
// ===========================================================================
// § 9 Abs. 2 — Elektrofahrzeug-Ermäßigung; § 3a / § 3d — Vergünstigungen
// ===========================================================================
--
50 %-Ermäßigung für Elektrofahrzeuge nach § 9 Abs. 2 KraftStG — gilt
ausschließlich für Beträge nach § 9 Abs. 1 Nr. 3 oder Nr. 4 Buchst. a
(Nutzfahrzeuge). Für alle anderen Fahrzeugarten/Klassen bleibt der
Betrag unverändert (reine Elektro-PKW sind regelmäßig nach § 3d
befreit).
@param f Fahrzeug-Eingaben.
@param betrag Tarifbetrag nach § 9 Abs. 1 KraftStG.
@rückgabe Betrag nach § 9 Abs. 2 KraftStG.
--
@Quelle("§ 9 Absatz 2 KraftStG")
fn _Anwende9Abs2(f: Fahrzeug, betrag: EuroCent): EuroCent = wähle {
falls f.antrieb == Elektro und f.art == AndereBis3500 -> (betrag / 2) als EuroCent
falls f.antrieb == Elektro und f.art == AndereUeber3500
und f.nfzklasse == MindestensS2 -> (betrag / 2) als EuroCent
sonst -> betrag
}
--
Anwendung der Schwerbehinderten-Vergünstigung (§ 3a KraftStG) und der
Elektrofahrzeug-Befreiung (§ 3d KraftStG) auf den Steuerbetrag.
Reihenfolge: § 3d-Befreiung und § 3a Abs. 1-Befreiung setzen die
Steuer auf 0; § 3a Abs. 2 halbiert.
@param f Fahrzeug-Eingaben.
@param betrag Betrag nach § 9 Abs. 1/2 KraftStG.
@rückgabe Festgesetzte Jahressteuer (0 bei Befreiung).
--
@Quelle("§ 3a KraftStG")
fn _AnwendeVerguenstigung(f: Fahrzeug, betrag: EuroCent): EuroCent = wähle {
falls f.elektroBefreitNach3d -> 0,00
falls f.behinderung == Befreit3aAbs1 -> 0,00
falls f.behinderung == Ermaessigt3aAbs2 -> (betrag / 2) als EuroCent
sonst -> betrag
}
// ===========================================================================
// Gesamtberechnung
// ===========================================================================
--
Vollständige Festsetzung der Kraftfahrzeug-Jahressteuer in der
gesetzlichen Reihenfolge: § 8 (Tarifauswahl) → § 9 Abs. 1
(Tarifbetrag) → § 9 Abs. 2 (Elektro-Ermäßigung) → § 3a / § 3d
(Vergünstigung/Befreiung). Liefert alle Zwischengrößen.
@param f Fahrzeug-Eingaben.
@rückgabe Vollständig dokumentiertes Berechnungsergebnis.
--
@Quelle("§ 9 KraftStG")
fn BerechneKraftfahrzeugsteuer(f: Fahrzeug): KraftfahrzeugsteuerErgebnis {
var tarif: EuroCent = TarifNach9Abs1(f)
var nachE: EuroCent = _Anwende9Abs2(f, tarif)
var jahr: EuroCent = _AnwendeVerguenstigung(f, nachE)
KraftfahrzeugsteuerErgebnis(
tarifbetrag = tarif,
nachElektro = nachE,
jahressteuer = jahr,
)
}--
# Kraftfahrzeugsteuer — Tarif leichte Fahrzeuge (§ 9 Abs. 1 Nr. 1/2/2a/2b)
Konstanten **und** Tarif-Funktionen für Krafträder (Nr. 1),
Personenkraftwagen (Nr. 2 Buchst. a/b/c), Wohnmobile (Nr. 2a) und
dreirädrige/leichte vierrädrige Kfz (Nr. 2b) — aus `kraftstg-steuer`
herausgelöst. Konstanten und Logik liegen bewusst zusammen (ein
Rechtsbereich = eine Datei, minimale modulübergreifende Importe).
Einstiegsfunktionen `steuerKraftrad`, `steuerPkw`, `steuerWohnmobil`,
`steuerDreiLeichtvier` wählt der Orchestrator `kraftstg-steuer`
nach Fahrzeugart (§ 8 KraftStG) aus.
--
verwende {
Fahrzeug,
Antrieb,
PkwSchadstoffstufe,
WohnmobilKlasse,
Einheiten,
Fremdzuendung,
Selbstzuendung,
Elektro,
BisJuni2009,
JuliBisDez2020,
AbJan2021,
Aa,
Bb,
Cc,
Dd,
Ee,
MindestensS4,
S1bisS3,
WomoSonst,
} aus "./kraftstg-typen"
// ===========================================================================
// § 9 Abs. 1 Nr. 1 — Krafträder
// ===========================================================================
-- Kraftrad: je angefangene 25 cm³ Hubraum 1,84 € (§ 9 Abs. 1 Nr. 1 KraftStG). --
@Quelle("§ 9 Absatz 1 Nummer 1 KraftStG")
konst KRAD_JE_25CCM: EuroCent = 1,84
// ===========================================================================
// § 9 Abs. 1 Nr. 2 — Personenkraftwagen
// ===========================================================================
-- PKW Nr. 2c (Erstzulassung ab 1.1.2021): Sockel je 100 cm³, Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_HUBRAUM_OTTO: EuroCent = 2,00
-- PKW Nr. 2c: Sockel je 100 cm³, Selbstzündung (Diesel). --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_HUBRAUM_DIESEL: EuroCent = 9,50
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 95 bis 115 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_95_115: EuroCent = 2,00
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 115 bis 135 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_115_135: EuroCent = 2,20
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 135 bis 155 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_135_155: EuroCent = 2,50
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 155 bis 175 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_155_175: EuroCent = 2,90
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 175 bis 195 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_175_195: EuroCent = 3,40
-- PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 195 g/km. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_UEBER_195: EuroCent = 4,00
-- CO₂-Freibetrag: erst Emissionen ÜBER 95 g/km sind aufschlagspflichtig (Nr. 2c). --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
konst PKW_C_CO2_FREI: Ganzzahl = 95
-- PKW Nr. 2b (Erstzulassung 1.7.2009–31.12.2020): Sockel je 100 cm³ Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
konst PKW_B_HUBRAUM_OTTO: EuroCent = 2,00
-- PKW Nr. 2b: Sockel je 100 cm³ Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
konst PKW_B_HUBRAUM_DIESEL: EuroCent = 9,50
-- PKW Nr. 2b: CO₂-Aufschlag je g/km über der (datumsabhängigen) Freigrenze. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
konst PKW_B_CO2_JE_GRAMM: EuroCent = 2,00
-- PKW Nr. 2a (Erstzulassung bis 30.6.2009), je 100 cm³, Stufe aa — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG")
konst PKW_A_AA_OTTO: EuroCent = 6,75
-- Stufe aa — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG")
konst PKW_A_AA_DIESEL: EuroCent = 15,44
-- Stufe bb — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG")
konst PKW_A_BB_OTTO: EuroCent = 7,36
-- Stufe bb — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG")
konst PKW_A_BB_DIESEL: EuroCent = 16,05
-- Stufe cc — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG")
konst PKW_A_CC_OTTO: EuroCent = 15,13
-- Stufe cc — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG")
konst PKW_A_CC_DIESEL: EuroCent = 27,35
-- Stufe dd — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG")
konst PKW_A_DD_OTTO: EuroCent = 21,07
-- Stufe dd — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG")
konst PKW_A_DD_DIESEL: EuroCent = 33,29
-- Stufe ee (höchste, keine Voraussetzungen erfüllt) — Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG")
konst PKW_A_EE_OTTO: EuroCent = 25,36
-- Stufe ee — Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG")
konst PKW_A_EE_DIESEL: EuroCent = 37,58
// ===========================================================================
// § 9 Abs. 1 Nr. 2b — dreirädrige / leichte vierrädrige Kraftfahrzeuge
// ===========================================================================
-- Dreirad/leichtes Vierrad, Grenzwerte eingehalten, Fremdzündung (je 100 cm³). --
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe a KraftStG")
konst DREIRAD_GW_OTTO: EuroCent = 21,07
-- Grenzwerte eingehalten, Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe a KraftStG")
konst DREIRAD_GW_DIESEL: EuroCent = 33,29
-- Grenzwerte nicht eingehalten, Fremdzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe b KraftStG")
konst DREIRAD_SONST_OTTO: EuroCent = 25,36
-- Grenzwerte nicht eingehalten, Selbstzündung. --
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe b KraftStG")
konst DREIRAD_SONST_DIESEL: EuroCent = 37,58
// ===========================================================================
// § 9 Abs. 1 Nr. 2a — Wohnmobile (je angefangene 200 kg Gesamtgewicht)
// ===========================================================================
-- Wohnmobil ≥ Schadstoffklasse S4: bis 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
konst WOMO_S4_BIS_2000: EuroCent = 16,00
-- Wohnmobil ≥ S4: über 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
konst WOMO_S4_UEBER_2000: EuroCent = 10,00
-- Wohnmobil ≥ S4: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
konst WOMO_S4_MAX: EuroCent = 800,00
-- Wohnmobil S3/S2/S1: bis 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
konst WOMO_S1_BIS_2000: EuroCent = 24,00
-- Wohnmobil S3/S2/S1: über 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
konst WOMO_S1_UEBER_2000: EuroCent = 10,00
-- Wohnmobil S3/S2/S1: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
konst WOMO_S1_MAX: EuroCent = 1.000,00
-- Wohnmobil sonst: bis 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
konst WOMO_SONST_BIS_2000: EuroCent = 40,00
-- Wohnmobil sonst: über 2.000 bis 5.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
konst WOMO_SONST_2000_5000: EuroCent = 10,00
-- Wohnmobil sonst: über 5.000 bis 12.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
konst WOMO_SONST_5000_12000: EuroCent = 15,00
-- Wohnmobil sonst: über 12.000 kg je 200 kg (kein Höchstbetrag). --
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
konst WOMO_SONST_UEBER_12000: EuroCent = 25,00
// ===========================================================================
// § 9 Abs. 1 Nr. 1 — Krafträder
// ===========================================================================
--
Jahressteuer für Krafträder: je angefangene 25 cm³ Hubraum 1,84 €
(§ 9 Abs. 1 Nr. 1 KraftStG).
@param hubraumCcm Hubraum in cm³.
@rückgabe Jahressteuer des Kraftrads.
--
@Quelle("§ 9 Absatz 1 Nummer 1 KraftStG")
fn SteuerKraftrad(hubraumCcm: Ganzzahl): EuroCent =
KRAD_JE_25CCM * Einheiten(hubraumCcm, 25)
// ===========================================================================
// § 9 Abs. 1 Nr. 2 Buchst. c — PKW Erstzulassung ab 1.1.2021
// ===========================================================================
--
Progressiver CO₂-Aufschlag für PKW nach § 9 Abs. 1 Nr. 2 Buchst. c
KraftStG: für jedes Gramm CO₂/km über 95 g/km, gestaffelt nach dem
Emissionswert (marginal je Spanne).
@param co2 CO₂-Emission in g/km.
@rückgabe CO₂-Aufschlag (0, wenn ≤ 95 g/km).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
fn _Co2AufschlagNr2c(co2: Ganzzahl): EuroCent = wähle {
falls co2 <= 95 -> 0,00
falls co2 <= 115 -> PKW_C_CO2_95_115 * (co2 - 95)
falls co2 <= 135 -> PKW_C_CO2_95_115 * 20
+ PKW_C_CO2_115_135 * (co2 - 115)
falls co2 <= 155 -> PKW_C_CO2_95_115 * 20 + PKW_C_CO2_115_135 * 20
+ PKW_C_CO2_135_155 * (co2 - 135)
falls co2 <= 175 -> PKW_C_CO2_95_115 * 20 + PKW_C_CO2_115_135 * 20
+ PKW_C_CO2_135_155 * 20
+ PKW_C_CO2_155_175 * (co2 - 155)
falls co2 <= 195 -> PKW_C_CO2_95_115 * 20 + PKW_C_CO2_115_135 * 20
+ PKW_C_CO2_135_155 * 20 + PKW_C_CO2_155_175 * 20
+ PKW_C_CO2_175_195 * (co2 - 175)
sonst -> PKW_C_CO2_95_115 * 20 + PKW_C_CO2_115_135 * 20
+ PKW_C_CO2_135_155 * 20 + PKW_C_CO2_155_175 * 20
+ PKW_C_CO2_175_195 * 20
+ PKW_C_CO2_UEBER_195 * (co2 - 195)
}
--
PKW-Hubraum-Sockel nach Antrieb (§ 9 Abs. 1 Nr. 2 Buchst. b/c
KraftStG): je angefangene 100 cm³ 2,00 € (Fremdzündung) bzw. 9,50 €
(Selbstzündung).
@param hubraumCcm Hubraum in cm³.
@param antrieb Antriebsart.
@rückgabe Hubraum-Sockelbetrag.
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
fn _PkwHubraumSockel(hubraumCcm: Ganzzahl, antrieb: Antrieb): EuroCent =
wähle (antrieb) {
falls Selbstzuendung -> PKW_C_HUBRAUM_DIESEL * Einheiten(hubraumCcm, 100)
falls Fremdzuendung, Elektro -> PKW_C_HUBRAUM_OTTO * Einheiten(hubraumCcm, 100)
}
--
PKW Nr. 2 Buchst. c (Erstzulassung ab 1.1.2021): Hubraum-Sockel
zuzüglich progressivem CO₂-Aufschlag (§ 9 Abs. 1 Nr. 2 Buchst. c
KraftStG).
@param hubraumCcm Hubraum in cm³.
@param co2 CO₂-Emission in g/km.
@param antrieb Antriebsart.
@rückgabe Jahressteuer des PKW (Buchst. c).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
fn _SteuerPkwC(hubraumCcm: Ganzzahl, co2: Ganzzahl, antrieb: Antrieb): EuroCent =
_PkwHubraumSockel(hubraumCcm, antrieb) + _Co2AufschlagNr2c(co2)
--
PKW Nr. 2 Buchst. b (Erstzulassung 1.7.2009–31.12.2020):
Hubraum-Sockel zuzüglich 2,00 € je g/km CO₂ über der
datumsabhängigen Freigrenze (120 / 110 / 95 g/km).
@param hubraumCcm Hubraum in cm³.
@param co2 CO₂-Emission in g/km.
@param freigrenze maßgebliche CO₂-Freigrenze (g/km).
@param antrieb Antriebsart.
@rückgabe Jahressteuer des PKW (Buchst. b).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
fn _SteuerPkwB(
hubraumCcm: Ganzzahl,
co2: Ganzzahl,
freigrenze: Ganzzahl,
antrieb: Antrieb,
): EuroCent =
_PkwHubraumSockel(hubraumCcm, antrieb)
+ wähle {
falls co2 <= freigrenze -> 0,00
sonst -> PKW_B_CO2_JE_GRAMM * (co2 - freigrenze)
}
--
PKW Nr. 2 Buchst. a (Erstzulassung bis 30.6.2009): je angefangene
100 cm³ ein nach Schadstoffstufe (aa–ee) und Antrieb gestaffelter
Satz (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG).
@param hubraumCcm Hubraum in cm³.
@param stufe Schadstoffstufe aa–ee.
@param antrieb Antriebsart.
@rückgabe Jahressteuer des PKW (Buchst. a).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
fn _SteuerPkwA(hubraumCcm: Ganzzahl, stufe: PkwSchadstoffstufe, antrieb: Antrieb): EuroCent =
_SatzPkwA(stufe, antrieb) * Einheiten(hubraumCcm, 100)
--
Stufensatz je 100 cm³ für PKW Nr. 2 Buchst. a nach Schadstoffstufe
und Antrieb. (Elektro wird wie Fremdzündung behandelt — relevant
wird der Wert für reine E-PKW ohnehin nicht, da diese nach § 3d
befreit sind.)
@param stufe Schadstoffstufe aa–ee.
@param antrieb Antriebsart.
@rückgabe Satz je angefangene 100 cm³.
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
fn _SatzPkwA(stufe: PkwSchadstoffstufe, antrieb: Antrieb): EuroCent =
wähle (antrieb) {
falls Selbstzuendung -> wähle (stufe) {
falls Aa -> PKW_A_AA_DIESEL
falls Bb -> PKW_A_BB_DIESEL
falls Cc -> PKW_A_CC_DIESEL
falls Dd -> PKW_A_DD_DIESEL
falls Ee -> PKW_A_EE_DIESEL
}
falls Fremdzuendung, Elektro -> wähle (stufe) {
falls Aa -> PKW_A_AA_OTTO
falls Bb -> PKW_A_BB_OTTO
falls Cc -> PKW_A_CC_OTTO
falls Dd -> PKW_A_DD_OTTO
falls Ee -> PKW_A_EE_OTTO
}
}
--
Personenkraftwagen nach § 9 Abs. 1 Nr. 2 KraftStG: wählt anhand des
Erstzulassungs-Regimes Buchst. a, b oder c.
@param f Fahrzeug-Eingaben.
@rückgabe Jahressteuer des PKW.
--
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
fn SteuerPkw(f: Fahrzeug): EuroCent = wähle (f.erstzulassung) {
falls BisJuni2009 -> _SteuerPkwA(f.hubraumCcm, f.pkwStufe, f.antrieb)
falls JuliBisDez2020 -> _SteuerPkwB(f.hubraumCcm, f.co2GrammProKm, f.co2FreigrenzeNr2b, f.antrieb)
falls AbJan2021 -> _SteuerPkwC(f.hubraumCcm, f.co2GrammProKm, f.antrieb)
}
// ===========================================================================
// § 9 Abs. 1 Nr. 2b — dreirädrige / leichte vierrädrige Kraftfahrzeuge
// ===========================================================================
--
Dreirädrige und leichte vierrädrige Kraftfahrzeuge
(§ 9 Abs. 1 Nr. 2b KraftStG): je angefangene 100 cm³ ein nach
Grenzwert-Einhaltung und Antrieb gestaffelter Satz.
@param hubraumCcm Hubraum in cm³.
@param grenzwerte Grenzwerte (RL 97/24/EG Zeile A 2003) eingehalten?
@param antrieb Antriebsart.
@rückgabe Jahressteuer des Fahrzeugs.
--
@Quelle("§ 9 Absatz 1 Nummer 2b KraftStG")
fn SteuerDreiLeichtvier(hubraumCcm: Ganzzahl, grenzwerte: Wahrheitswert, antrieb: Antrieb): EuroCent =
_SatzDreiLeichtvier(grenzwerte, antrieb) * Einheiten(hubraumCcm, 100)
--
Stufensatz je 100 cm³ für § 9 Abs. 1 Nr. 2b KraftStG.
@param grenzwerte Grenzwerte eingehalten?
@param antrieb Antriebsart.
@rückgabe Satz je angefangene 100 cm³.
--
@Quelle("§ 9 Absatz 1 Nummer 2b KraftStG")
fn _SatzDreiLeichtvier(grenzwerte: Wahrheitswert, antrieb: Antrieb): EuroCent =
wähle {
falls grenzwerte und antrieb == Selbstzuendung -> DREIRAD_GW_DIESEL
falls grenzwerte -> DREIRAD_GW_OTTO
falls antrieb == Selbstzuendung -> DREIRAD_SONST_DIESEL
sonst -> DREIRAD_SONST_OTTO
}
// ===========================================================================
// § 9 Abs. 1 Nr. 2a — Wohnmobile
// ===========================================================================
--
Wohnmobil nach § 9 Abs. 1 Nr. 2a KraftStG: je angefangene 200 kg
Gesamtgewicht, progressiv nach Gewichtsspanne und Schadstoffklasse,
mit Höchstbetrag (Buchst. a/b) bzw. ohne (Buchst. c).
@param gesamtgewichtKg verkehrsrechtlich zulässiges Gesamtgewicht (kg).
@param klasse Schadstoffklasse des Wohnmobils.
@rückgabe Jahressteuer des Wohnmobils.
--
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
fn SteuerWohnmobil(gesamtgewichtKg: Ganzzahl, klasse: WohnmobilKlasse): EuroCent =
wähle (klasse) {
falls MindestensS4 -> _WomoZweiStufen(gesamtgewichtKg, WOMO_S4_BIS_2000, WOMO_S4_UEBER_2000).höchstens(WOMO_S4_MAX)
falls S1bisS3 -> _WomoZweiStufen(gesamtgewichtKg, WOMO_S1_BIS_2000, WOMO_S1_UEBER_2000).höchstens(WOMO_S1_MAX)
falls WomoSonst -> _SteuerWohnmobilSonst(gesamtgewichtKg)
}
--
Zwei-Stufen-Wohnmobiltarif (Buchst. a/b): bis 2.000 kg `satzBis`,
darüber `satzUeber`, je angefangene 200 kg.
@param g Gesamtgewicht (kg).
@param satzBis Satz je 200 kg bis 2.000 kg.
@param satzUeber Satz je 200 kg über 2.000 kg.
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
fn _WomoZweiStufen(g: Ganzzahl, satzBis: EuroCent, satzUeber: EuroCent): EuroCent =
wähle {
falls g <= 2000 -> satzBis * Einheiten(g, 200)
sonst -> satzBis * 10 + satzUeber * Einheiten(g - 2000, 200)
}
--
Wohnmobil Buchst. c (Voraussetzungen a/b nicht erfüllt, kein
Höchstbetrag): bis 2.000 kg 40 €, über 2.000–5.000 kg 10 €, über
5.000–12.000 kg 15 €, über 12.000 kg 25 € — je angefangene 200 kg.
@param g Gesamtgewicht (kg).
@rückgabe Jahressteuer des Wohnmobils (Buchst. c).
--
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
fn _SteuerWohnmobilSonst(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> WOMO_SONST_BIS_2000 * Einheiten(g, 200)
falls g <= 5000 -> WOMO_SONST_BIS_2000 * 10
+ WOMO_SONST_2000_5000 * Einheiten(g - 2000, 200)
falls g <= 12000 -> WOMO_SONST_BIS_2000 * 10 + WOMO_SONST_2000_5000 * 15
+ WOMO_SONST_5000_12000 * Einheiten(g - 5000, 200)
sonst -> WOMO_SONST_BIS_2000 * 10 + WOMO_SONST_2000_5000 * 15
+ WOMO_SONST_5000_12000 * 35
+ WOMO_SONST_UEBER_12000 * Einheiten(g - 12000, 200)
}--
# Kraftfahrzeugsteuer — Tarif Nutzfahrzeuge (§ 9 Abs. 1 Nr. 3/4/5)
Konstanten **und** Tarif-Funktionen für andere Kfz ≤ 3.500 kg (Nr. 3),
Kfz > 3.500 kg (Nr. 4 Buchst. a/b/c/d — progressive 200-kg-Stufen mit
Höchstbetrag) und Kraftfahrzeuganhänger (Nr. 5) — aus
`kraftstg-steuer` herausgelöst. Konstanten und Logik liegen bewusst
zusammen.
Einstiegsfunktionen `steuerNr3`, `steuerNr4`, `steuerAnhaenger`
wählt der Orchestrator `kraftstg-steuer` nach Fahrzeugart aus.
--
verwende {
NfzKlasse,
Einheiten,
MindestensS2,
S1,
G1,
NfzSonst,
} aus "./kraftstg-typen"
// ===========================================================================
// § 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (je 200 kg, progressiv)
// ===========================================================================
-- Nr. 3: bis 2.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_BIS_2000: EuroCent = 11,25
-- Nr. 3: über 2.000 bis 3.000 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_2000_3000: EuroCent = 12,02
-- Nr. 3: über 3.000 bis 3.500 kg je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_3000_3500: EuroCent = 12,78
-- Nr. 3: kumulierter Betrag bei genau 2.000 kg (10 Stufen × Satz). --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_KUM_2000: EuroCent = NR3_BIS_2000 * 10
-- Nr. 3: kumulierter Betrag bei genau 3.000 kg. --
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
konst NR3_KUM_3000: EuroCent = NR3_KUM_2000 + NR3_2000_3000 * 5
// ===========================================================================
// § 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (je 200 kg, progressiv, mit Höchstbetrag)
// a) ≥ S2 b) S1 c) G1 d) sonst — 1.000-kg-Stufen = je 5 × 200 kg
// ===========================================================================
-- Nr. 4a (≥ S2): Stufensätze je 200 kg, Gewichtsspannen 2.000…> 12.000 kg. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_1: EuroCent = 6,42
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_2: EuroCent = 6,88
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_3: EuroCent = 7,31
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_4: EuroCent = 7,75
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_5: EuroCent = 8,18
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_6: EuroCent = 8,62
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_7: EuroCent = 9,36
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_8: EuroCent = 10,07
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_9: EuroCent = 10,97
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_10: EuroCent = 11,84
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_11: EuroCent = 13,01
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_12: EuroCent = 14,32
-- Nr. 4a: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_MAX: EuroCent = 556,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_2000: EuroCent = NR4A_1 * 10
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_3000: EuroCent = NR4A_KUM_2000 + NR4A_2 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_4000: EuroCent = NR4A_KUM_3000 + NR4A_3 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_5000: EuroCent = NR4A_KUM_4000 + NR4A_4 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_6000: EuroCent = NR4A_KUM_5000 + NR4A_5 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_7000: EuroCent = NR4A_KUM_6000 + NR4A_6 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_8000: EuroCent = NR4A_KUM_7000 + NR4A_7 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_9000: EuroCent = NR4A_KUM_8000 + NR4A_8 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_10000: EuroCent = NR4A_KUM_9000 + NR4A_9 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_11000: EuroCent = NR4A_KUM_10000 + NR4A_10 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
konst NR4A_KUM_12000: EuroCent = NR4A_KUM_11000 + NR4A_11 * 5
-- Nr. 4d (Voraussetzungen a/b/c nicht erfüllt): Stufensätze je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_1: EuroCent = 11,25
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_2: EuroCent = 12,02
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_3: EuroCent = 12,78
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_4: EuroCent = 13,55
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_5: EuroCent = 14,32
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_6: EuroCent = 15,08
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_7: EuroCent = 16,36
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_8: EuroCent = 17,64
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_9: EuroCent = 19,17
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_10: EuroCent = 20,71
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_11: EuroCent = 22,75
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_12: EuroCent = 25,05
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_13: EuroCent = 27,61
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_14: EuroCent = 45,50
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_15: EuroCent = 63,40
-- Nr. 4d: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_MAX: EuroCent = 1.681,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_2000: EuroCent = NR4D_1 * 10
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_3000: EuroCent = NR4D_KUM_2000 + NR4D_2 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_4000: EuroCent = NR4D_KUM_3000 + NR4D_3 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_5000: EuroCent = NR4D_KUM_4000 + NR4D_4 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_6000: EuroCent = NR4D_KUM_5000 + NR4D_5 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_7000: EuroCent = NR4D_KUM_6000 + NR4D_6 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_8000: EuroCent = NR4D_KUM_7000 + NR4D_7 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_9000: EuroCent = NR4D_KUM_8000 + NR4D_8 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_10000: EuroCent = NR4D_KUM_9000 + NR4D_9 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_11000: EuroCent = NR4D_KUM_10000 + NR4D_10 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_12000: EuroCent = NR4D_KUM_11000 + NR4D_11 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_13000: EuroCent = NR4D_KUM_12000 + NR4D_12 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_14000: EuroCent = NR4D_KUM_13000 + NR4D_13 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
konst NR4D_KUM_15000: EuroCent = NR4D_KUM_14000 + NR4D_14 * 5
-- Nr. 4b (Schadstoffklasse S1): Stufensätze je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_1: EuroCent = 6,42
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_2: EuroCent = 6,88
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_3: EuroCent = 7,31
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_4: EuroCent = 7,75
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_5: EuroCent = 8,18
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_6: EuroCent = 8,62
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_7: EuroCent = 9,36
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_8: EuroCent = 10,07
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_9: EuroCent = 10,97
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_10: EuroCent = 11,84
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_11: EuroCent = 13,01
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_12: EuroCent = 14,32
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_13: EuroCent = 15,77
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_14: EuroCent = 26,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_15: EuroCent = 36,23
-- Nr. 4b: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_MAX: EuroCent = 914,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_2000: EuroCent = NR4B_1 * 10
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_3000: EuroCent = NR4B_KUM_2000 + NR4B_2 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_4000: EuroCent = NR4B_KUM_3000 + NR4B_3 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_5000: EuroCent = NR4B_KUM_4000 + NR4B_4 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_6000: EuroCent = NR4B_KUM_5000 + NR4B_5 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_7000: EuroCent = NR4B_KUM_6000 + NR4B_6 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_8000: EuroCent = NR4B_KUM_7000 + NR4B_7 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_9000: EuroCent = NR4B_KUM_8000 + NR4B_8 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_10000: EuroCent = NR4B_KUM_9000 + NR4B_9 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_11000: EuroCent = NR4B_KUM_10000 + NR4B_10 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_12000: EuroCent = NR4B_KUM_11000 + NR4B_11 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_13000: EuroCent = NR4B_KUM_12000 + NR4B_12 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_14000: EuroCent = NR4B_KUM_13000 + NR4B_13 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
konst NR4B_KUM_15000: EuroCent = NR4B_KUM_14000 + NR4B_14 * 5
-- Nr. 4c (Geräuschklasse G1): Stufensätze je 200 kg. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_1: EuroCent = 9,64
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_2: EuroCent = 10,30
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_3: EuroCent = 10,97
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_4: EuroCent = 11,61
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_5: EuroCent = 12,27
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_6: EuroCent = 12,94
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_7: EuroCent = 14,03
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_8: EuroCent = 15,11
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_9: EuroCent = 16,44
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_10: EuroCent = 17,74
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_11: EuroCent = 19,51
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_12: EuroCent = 21,47
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_13: EuroCent = 23,67
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_14: EuroCent = 39,01
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_15: EuroCent = 54,35
-- Nr. 4c: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_MAX: EuroCent = 1.425,00
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_2000: EuroCent = NR4C_1 * 10
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_3000: EuroCent = NR4C_KUM_2000 + NR4C_2 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_4000: EuroCent = NR4C_KUM_3000 + NR4C_3 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_5000: EuroCent = NR4C_KUM_4000 + NR4C_4 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_6000: EuroCent = NR4C_KUM_5000 + NR4C_5 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_7000: EuroCent = NR4C_KUM_6000 + NR4C_6 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_8000: EuroCent = NR4C_KUM_7000 + NR4C_7 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_9000: EuroCent = NR4C_KUM_8000 + NR4C_8 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_10000: EuroCent = NR4C_KUM_9000 + NR4C_9 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_11000: EuroCent = NR4C_KUM_10000 + NR4C_10 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_12000: EuroCent = NR4C_KUM_11000 + NR4C_11 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_13000: EuroCent = NR4C_KUM_12000 + NR4C_12 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_14000: EuroCent = NR4C_KUM_13000 + NR4C_13 * 5
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
konst NR4C_KUM_15000: EuroCent = NR4C_KUM_14000 + NR4C_14 * 5
// ===========================================================================
// § 9 Abs. 1 Nr. 5 — Kraftfahrzeuganhänger
// ===========================================================================
-- Anhänger: je angefangene 200 kg Gesamtgewicht 7,46 €. --
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
konst ANH_JE_200KG: EuroCent = 7,46
-- Anhänger: Höchstbetrag. --
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
konst ANH_MAX: EuroCent = 373,24
// ===========================================================================
// § 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg
// ===========================================================================
--
Andere Kraftfahrzeuge bis 3.500 kg (§ 9 Abs. 1 Nr. 3 KraftStG):
je angefangene 200 kg, progressiv nach Gewichtsspanne (kein
Höchstbetrag).
@param g Gesamtgewicht (kg).
@rückgabe Jahressteuer.
--
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
fn SteuerNr3(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR3_BIS_2000 * Einheiten(g, 200)
falls g <= 3000 -> NR3_KUM_2000 + NR3_2000_3000 * Einheiten(g - 2000, 200)
sonst -> NR3_KUM_3000 + NR3_3000_3500 * Einheiten(g - 3000, 200)
}
// ===========================================================================
// § 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg
// ===========================================================================
--
Kfz über 3.500 kg (§ 9 Abs. 1 Nr. 4 KraftStG): je angefangene 200 kg,
progressiv in 1.000-kg-Spannen, nach Schadstoff-/Geräuschklasse, mit
jeweils eigenem Höchstbetrag. Alle vier Buchstaben sind eigenständig
modelliert: a (≥ S2, Spannen bis > 12.000 kg, max 556 €), b (S1,
max 914 €), c (G1, max 1.425 €), d (sonst, max 1.681 €).
@param g Gesamtgewicht (kg).
@param klasse Schadstoff-/Geräuschklasse.
@rückgabe Jahressteuer.
--
@Quelle("§ 9 Absatz 1 Nummer 4 KraftStG")
fn SteuerNr4(g: Ganzzahl, klasse: NfzKlasse): EuroCent = wähle (klasse) {
falls MindestensS2 -> _Nr4a(g).höchstens(NR4A_MAX)
falls S1 -> _Nr4b(g).höchstens(NR4B_MAX)
falls G1 -> _Nr4c(g).höchstens(NR4C_MAX)
falls NfzSonst -> _Nr4d(g).höchstens(NR4D_MAX)
}
--
Progressiver Stufentarif Buchst. a (≥ S2), je 200 kg, Spannen
2.000…> 12.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. a KraftStG).
@param g Gesamtgewicht (kg).
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
fn _Nr4a(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR4A_1 * Einheiten(g, 200)
falls g <= 3000 -> NR4A_KUM_2000 + NR4A_2 * Einheiten(g - 2000, 200)
falls g <= 4000 -> NR4A_KUM_3000 + NR4A_3 * Einheiten(g - 3000, 200)
falls g <= 5000 -> NR4A_KUM_4000 + NR4A_4 * Einheiten(g - 4000, 200)
falls g <= 6000 -> NR4A_KUM_5000 + NR4A_5 * Einheiten(g - 5000, 200)
falls g <= 7000 -> NR4A_KUM_6000 + NR4A_6 * Einheiten(g - 6000, 200)
falls g <= 8000 -> NR4A_KUM_7000 + NR4A_7 * Einheiten(g - 7000, 200)
falls g <= 9000 -> NR4A_KUM_8000 + NR4A_8 * Einheiten(g - 8000, 200)
falls g <= 10000 -> NR4A_KUM_9000 + NR4A_9 * Einheiten(g - 9000, 200)
falls g <= 11000 -> NR4A_KUM_10000 + NR4A_10 * Einheiten(g - 10000, 200)
falls g <= 12000 -> NR4A_KUM_11000 + NR4A_11 * Einheiten(g - 11000, 200)
sonst -> NR4A_KUM_12000 + NR4A_12 * Einheiten(g - 12000, 200)
}
--
Progressiver Stufentarif Buchst. d (Voraussetzungen a/b/c nicht
erfüllt), je 200 kg, Spannen 2.000…> 15.000 kg
(§ 9 Abs. 1 Nr. 4 Buchst. d KraftStG).
@param g Gesamtgewicht (kg).
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
fn _Nr4d(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR4D_1 * Einheiten(g, 200)
falls g <= 3000 -> NR4D_KUM_2000 + NR4D_2 * Einheiten(g - 2000, 200)
falls g <= 4000 -> NR4D_KUM_3000 + NR4D_3 * Einheiten(g - 3000, 200)
falls g <= 5000 -> NR4D_KUM_4000 + NR4D_4 * Einheiten(g - 4000, 200)
falls g <= 6000 -> NR4D_KUM_5000 + NR4D_5 * Einheiten(g - 5000, 200)
falls g <= 7000 -> NR4D_KUM_6000 + NR4D_6 * Einheiten(g - 6000, 200)
falls g <= 8000 -> NR4D_KUM_7000 + NR4D_7 * Einheiten(g - 7000, 200)
falls g <= 9000 -> NR4D_KUM_8000 + NR4D_8 * Einheiten(g - 8000, 200)
falls g <= 10000 -> NR4D_KUM_9000 + NR4D_9 * Einheiten(g - 9000, 200)
falls g <= 11000 -> NR4D_KUM_10000 + NR4D_10 * Einheiten(g - 10000, 200)
falls g <= 12000 -> NR4D_KUM_11000 + NR4D_11 * Einheiten(g - 11000, 200)
falls g <= 13000 -> NR4D_KUM_12000 + NR4D_12 * Einheiten(g - 12000, 200)
falls g <= 14000 -> NR4D_KUM_13000 + NR4D_13 * Einheiten(g - 13000, 200)
falls g <= 15000 -> NR4D_KUM_14000 + NR4D_14 * Einheiten(g - 14000, 200)
sonst -> NR4D_KUM_15000 + NR4D_15 * Einheiten(g - 15000, 200)
}
--
Progressiver Stufentarif Buchst. b (Schadstoffklasse S 1), je 200 kg,
Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. b KraftStG).
@param g Gesamtgewicht (kg).
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
fn _Nr4b(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR4B_1 * Einheiten(g, 200)
falls g <= 3000 -> NR4B_KUM_2000 + NR4B_2 * Einheiten(g - 2000, 200)
falls g <= 4000 -> NR4B_KUM_3000 + NR4B_3 * Einheiten(g - 3000, 200)
falls g <= 5000 -> NR4B_KUM_4000 + NR4B_4 * Einheiten(g - 4000, 200)
falls g <= 6000 -> NR4B_KUM_5000 + NR4B_5 * Einheiten(g - 5000, 200)
falls g <= 7000 -> NR4B_KUM_6000 + NR4B_6 * Einheiten(g - 6000, 200)
falls g <= 8000 -> NR4B_KUM_7000 + NR4B_7 * Einheiten(g - 7000, 200)
falls g <= 9000 -> NR4B_KUM_8000 + NR4B_8 * Einheiten(g - 8000, 200)
falls g <= 10000 -> NR4B_KUM_9000 + NR4B_9 * Einheiten(g - 9000, 200)
falls g <= 11000 -> NR4B_KUM_10000 + NR4B_10 * Einheiten(g - 10000, 200)
falls g <= 12000 -> NR4B_KUM_11000 + NR4B_11 * Einheiten(g - 11000, 200)
falls g <= 13000 -> NR4B_KUM_12000 + NR4B_12 * Einheiten(g - 12000, 200)
falls g <= 14000 -> NR4B_KUM_13000 + NR4B_13 * Einheiten(g - 13000, 200)
falls g <= 15000 -> NR4B_KUM_14000 + NR4B_14 * Einheiten(g - 14000, 200)
sonst -> NR4B_KUM_15000 + NR4B_15 * Einheiten(g - 15000, 200)
}
--
Progressiver Stufentarif Buchst. c (Geräuschklasse G 1), je 200 kg,
Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. c KraftStG).
@param g Gesamtgewicht (kg).
@rückgabe Tarifbetrag vor Höchstbetragsbegrenzung.
--
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
fn _Nr4c(g: Ganzzahl): EuroCent = wähle {
falls g <= 2000 -> NR4C_1 * Einheiten(g, 200)
falls g <= 3000 -> NR4C_KUM_2000 + NR4C_2 * Einheiten(g - 2000, 200)
falls g <= 4000 -> NR4C_KUM_3000 + NR4C_3 * Einheiten(g - 3000, 200)
falls g <= 5000 -> NR4C_KUM_4000 + NR4C_4 * Einheiten(g - 4000, 200)
falls g <= 6000 -> NR4C_KUM_5000 + NR4C_5 * Einheiten(g - 5000, 200)
falls g <= 7000 -> NR4C_KUM_6000 + NR4C_6 * Einheiten(g - 6000, 200)
falls g <= 8000 -> NR4C_KUM_7000 + NR4C_7 * Einheiten(g - 7000, 200)
falls g <= 9000 -> NR4C_KUM_8000 + NR4C_8 * Einheiten(g - 8000, 200)
falls g <= 10000 -> NR4C_KUM_9000 + NR4C_9 * Einheiten(g - 9000, 200)
falls g <= 11000 -> NR4C_KUM_10000 + NR4C_10 * Einheiten(g - 10000, 200)
falls g <= 12000 -> NR4C_KUM_11000 + NR4C_11 * Einheiten(g - 11000, 200)
falls g <= 13000 -> NR4C_KUM_12000 + NR4C_12 * Einheiten(g - 12000, 200)
falls g <= 14000 -> NR4C_KUM_13000 + NR4C_13 * Einheiten(g - 13000, 200)
falls g <= 15000 -> NR4C_KUM_14000 + NR4C_14 * Einheiten(g - 14000, 200)
sonst -> NR4C_KUM_15000 + NR4C_15 * Einheiten(g - 15000, 200)
}
// ===========================================================================
// § 9 Abs. 1 Nr. 5 — Anhänger
// ===========================================================================
--
Kraftfahrzeuganhänger (§ 9 Abs. 1 Nr. 5 KraftStG): je angefangene
200 kg Gesamtgewicht 7,46 €, höchstens 373,24 €.
@param gesamtgewichtKg Gesamtgewicht (kg).
@rückgabe Jahressteuer des Anhängers.
--
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
fn SteuerAnhaenger(gesamtgewichtKg: Ganzzahl): EuroCent =
(ANH_JE_200KG * Einheiten(gesamtgewichtKg, 200)).höchstens(ANH_MAX)--
# Kraftfahrzeugsteuer — gemeinsame Typen und Helfer
Geteiltes Vokabular des KraftStG-Moduls (aus `kraftstg-steuer`
herausgelöst, damit die Hauptdatei nicht überlang wird): die
Fahrzeug-Klassifizierungs-Aufzählungen (§§ 8, 9, 3a KraftStG), der
Eingabe-Datensatz `Fahrzeug`, der Ergebnis-Datensatz
`KraftfahrzeugsteuerErgebnis` sowie die allgemeinen Berechnungshelfer
`einheiten` (je angefangene Einheit, § 9 KraftStG) und `begrenze`
(Höchstbetrags-Kappung, § 9 Abs. 1 KraftStG).
Importiert nichts (Blatt des Modul-Graphen); wird von den Tarif-Dateien
`kraftstg-tarif-leicht`, `kraftstg-tarif-nutzfahrzeug` und vom Orchestrator
`kraftstg-steuer` genutzt.
--
// ===========================================================================
// Datenstrukturen
// ===========================================================================
--
Fahrzeugart i.S.d. § 8 / § 9 Abs. 1 KraftStG — bestimmt, welcher
Tarif (welche Nummer des § 9 Abs. 1) anzuwenden ist.
@param Kraftrad § 9 Abs. 1 Nr. 1: Krafträder (Hubkolbenmotor).
@param Pkw § 9 Abs. 1 Nr. 2: Personenkraftwagen (M1) mit
Hubkolbenmotor.
@param Wohnmobil § 9 Abs. 1 Nr. 2a: Wohnmobile.
@param DreiLeichtvier § 9 Abs. 1 Nr. 2b: dreirädrige und leichte
vierrädrige Kraftfahrzeuge.
@param AndereBis3500 § 9 Abs. 1 Nr. 3: andere Kfz bis 3.500 kg.
@param AndereUeber3500 § 9 Abs. 1 Nr. 4: Kfz über 3.500 kg.
@param Anhaenger § 9 Abs. 1 Nr. 5: Kraftfahrzeuganhänger.
--
@Quelle("§ 8 KraftStG")
aufzählung Fahrzeugart {
Kraftrad,
Pkw,
Wohnmobil,
DreiLeichtvier,
AndereBis3500,
AndereUeber3500,
Anhaenger,
}
--
Antriebsart. § 9 unterscheidet Fremdzündungsmotor (Ottomotor/Benzin)
und Selbstzündungsmotor (Dieselmotor); `Elektro` steuert die
Ermäßigung/Befreiung (§ 9 Abs. 2, § 3d KraftStG).
@param Fremdzuendung Fremdzündungsmotor (Ottomotor).
@param Selbstzuendung Selbstzündungsmotor (Dieselmotor).
@param Elektro Elektrofahrzeug i.S.d. § 9 Abs. 2 KraftStG.
--
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
aufzählung Antrieb {
Fremdzuendung,
Selbstzuendung,
Elektro,
}
--
Erstzulassungs-Regime des PKW — wählt den Buchstaben des
§ 9 Abs. 1 Nr. 2 KraftStG.
@param BisJuni2009 Erstzulassung bis 30.6.2009 (Buchst. a, Hubraum
+ Schadstoffstufe aa–ee).
@param JuliBisDez2020 Erstzulassung 1.7.2009–31.12.2020 (Buchst. b,
Hubraum + CO₂ über datumsabhängiger Freigrenze).
@param AbJan2021 Erstzulassung ab 1.1.2021 (Buchst. c, Hubraum +
progressiver CO₂-Aufschlag ab 95 g/km).
--
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
aufzählung Erstzulassungsregime {
BisJuni2009,
JuliBisDez2020,
AbJan2021,
}
--
Schadstoffstufe aa–ee für PKW mit Erstzulassung bis 30.6.2009
(§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG). Die Einstufung trifft nach
§ 2 Abs. 2 Nr. 2 KraftStG verbindlich die Zulassungsbehörde.
@param Aa Doppelbuchst. aa (günstigste Stufe).
@param Bb Doppelbuchst. bb.
@param Cc Doppelbuchst. cc.
@param Dd Doppelbuchst. dd.
@param Ee Doppelbuchst. ee (höchste Stufe, keine Voraussetzungen).
--
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
aufzählung PkwSchadstoffstufe {
Aa,
Bb,
Cc,
Dd,
Ee,
}
--
Schadstoffklasse für Wohnmobile (§ 9 Abs. 1 Nr. 2a KraftStG).
@param MindestensS4 mindestens Schadstoffklasse S 4 (Buchst. a).
@param S1bisS3 Schadstoffklasse S 3, S 2 oder S 1 (Buchst. b).
@param WomoSonst Voraussetzungen a/b nicht erfüllt (Buchst. c).
--
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
aufzählung WohnmobilKlasse {
MindestensS4,
S1bisS3,
WomoSonst,
}
--
Schadstoff-/Geräuschklasse für Kfz > 3.500 kg
(§ 9 Abs. 1 Nr. 4 KraftStG). Verbindliche Feststellung der
Zulassungsbehörde (§ 2 Abs. 2 Nr. 2 KraftStG).
@param MindestensS2 mindestens Schadstoffklasse S 2 (Buchst. a).
@param S1 Schadstoffklasse S 1 (Buchst. b).
@param G1 Geräuschklasse G 1 (Buchst. c).
@param NfzSonst Voraussetzungen a/b/c nicht erfüllt (Buchst. d).
--
@Quelle("§ 9 Absatz 1 Nummer 4 KraftStG")
aufzählung NfzKlasse {
MindestensS2,
S1,
G1,
NfzSonst,
}
--
Schwerbehinderten-Vergünstigung nach § 3a KraftStG.
@param Keine keine Vergünstigung.
@param Befreit3aAbs1 volle Steuerbefreiung (Merkzeichen H, Bl, aG —
§ 3a Abs. 1 KraftStG).
@param Ermaessigt3aAbs2 50 % Ermäßigung (orangefarbener Aufdruck,
§ 3a Abs. 2 KraftStG).
--
@Quelle("§ 3a KraftStG")
aufzählung Behinderung {
Keine,
Befreit3aAbs1,
Ermaessigt3aAbs2,
}
--
Eingaben eines Fahrzeugs für die Jahressteuer-Berechnung. Nicht jedes
Feld ist für jede Fahrzeugart relevant — maßgeblich ist `art`
(§ 8 KraftStG); die übrigen Felder gelten nur im jeweiligen Tarif.
@param art Fahrzeugart (§ 8 KraftStG) — wählt den Tarif.
@param antrieb Antriebsart (Fremd-/Selbstzündung/Elektro).
@param hubraumCcm Hubraum in cm³ (Nr. 1, Nr. 2, Nr. 2b).
@param co2GrammProKm CO₂-Emission in g/km (Nr. 2 Buchst. b/c).
@param gesamtgewichtKg verkehrsrechtlich zulässiges Gesamtgewicht
in kg (Nr. 2a, 3, 4, 5).
@param erstzulassung Erstzulassungs-Regime des PKW (Nr. 2 a/b/c).
@param pkwStufe Schadstoffstufe aa–ee (Nr. 2 Buchst. a).
@param co2FreigrenzeNr2b datumsabhängige CO₂-Freigrenze g/km für
Nr. 2 Buchst. b (120 bis 31.12.2011 / 110
ab 1.1.2012 / 95 ab 1.1.2014).
@param dreiradGrenzwerte Dreirad/leichtes Vierrad: Grenzwerte
eingehalten? (Nr. 2b a vs. b).
@param wohnmobilklasse Schadstoffklasse des Wohnmobils (Nr. 2a).
@param nfzklasse Schadstoff-/Geräuschklasse > 3.500 kg (Nr. 4).
@param behinderung Schwerbehinderten-Vergünstigung (§ 3a).
@param elektroBefreitNach3d Steuerbefreiung nach § 3d KraftStG aktiv?
(datumsabhängig — verbindlich extern
festgestellt).
--
@Quelle("§ 8 KraftStG")
datensatz Fahrzeug(
art: Fahrzeugart, // § 8 KraftStG: Tarifauswahl
antrieb: Antrieb, // Fremd-/Selbstzündung/Elektro
hubraumCcm: Ganzzahl = 0, // cm³ (Nr. 1, 2, 2b)
co2GrammProKm: Ganzzahl = 0, // g/km (Nr. 2 b/c)
gesamtgewichtKg: Ganzzahl = 0, // kg (Nr. 2a, 3, 4, 5)
erstzulassung: Erstzulassungsregime = AbJan2021, // PKW: § 9 Nr. 2 a/b/c
pkwStufe: PkwSchadstoffstufe = Ee, // PKW Nr. 2a: Stufe aa–ee
co2FreigrenzeNr2b: Ganzzahl = 95, // PKW Nr. 2b: Freigrenze g/km
dreiradGrenzwerte: Wahrheitswert = falsch, // Nr. 2b: Grenzwerte eingehalten?
wohnmobilklasse: WohnmobilKlasse = WomoSonst, // Nr. 2a: Schadstoffklasse
nfzklasse: NfzKlasse = NfzSonst, // Nr. 4: Schadstoff-/Geräuschklasse
behinderung: Behinderung = Keine, // § 3a KraftStG
elektroBefreitNach3d: Wahrheitswert = falsch, // § 3d KraftStG aktiv?
)
--
Vollständige, prüfbare Berechnung der Kraftfahrzeug-Jahressteuer.
@param tarifbetrag Steuer nach § 9 Abs. 1 KraftStG (vor § 9
Abs. 2 / § 3a / § 3d).
@param nachElektro nach Anwendung der 50 %-Ermäßigung für
Elektrofahrzeuge (§ 9 Abs. 2 KraftStG).
@param jahressteuer festgesetzte Jahressteuer nach Anwendung von
§ 3a / § 3d KraftStG (0 bei Befreiung).
--
@Quelle("§ 9 KraftStG")
datensatz KraftfahrzeugsteuerErgebnis(
tarifbetrag: EuroCent, // § 9 Abs. 1 KraftStG
nachElektro: EuroCent, // § 9 Abs. 2 KraftStG
jahressteuer: EuroCent, // nach § 3a / § 3d KraftStG
)
// ===========================================================================
// Allgemeine Helfer
// ===========================================================================
--
Anzahl angefangener Einheiten: `wert` geteilt durch `schritt`,
aufgerundet (§ 9 KraftStG: „für je … oder einen Teil davon").
@param wert zu zerlegende Menge (cm³ bzw. kg).
@param teiler Einheitengröße (25 / 100 / 200).
@rückgabe Anzahl angefangener Einheiten (≥ 0).
--
@Quelle("§ 9 Absatz 1 KraftStG")
fn Einheiten(wert: Ganzzahl, teiler: Ganzzahl): Ganzzahl = wähle {
falls wert <= 0 -> 0
sonst -> ((wert / teiler) als Dezimal).aufrunden()
}--
# Akzeptanztests — Kraftfahrzeugsteuer (§§ 8, 9 KraftStG)
`prüfe`-Blöcke zur Datei `kraftstg-steuer`. Alle Sollwerte sind
unabhängig aus dem Gesetzeswortlaut gerechnet (KraftStG 2002,
i.d.g.F.): „je angefangene Einheit" = Aufrundung; progressive
Gewichts-/CO₂-Tarife stufenweise summiert; Höchstbeträge gedeckelt.
Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
--
// Importe nach Quelldatei gruppiert (Modul auf mehrere Dateien
// aufgeteilt): Typen/Helfer/Aufzählungswerte aus kraftstg-typen, die
// Kraftrad-Einstiegsfunktion aus kraftstg-tarif-leicht, die öffentlichen
// Orchestrator-Funktionen aus kraftstg-steuer.
verwende {
Einheiten,
Fahrzeug,
KraftfahrzeugsteuerErgebnis,
Kraftrad,
Pkw,
Wohnmobil,
AndereBis3500,
AndereUeber3500,
Anhaenger,
Fremdzuendung,
Selbstzuendung,
Elektro,
BisJuni2009,
JuliBisDez2020,
AbJan2021,
Aa,
Ee,
MindestensS4,
S1bisS3,
WomoSonst,
MindestensS2,
G1,
NfzSonst,
Befreit3aAbs1,
Ermaessigt3aAbs2,
} aus "./kraftstg-typen"
verwende {
SteuerKraftrad,
} aus "./kraftstg-tarif-leicht"
verwende {
TarifNach9Abs1,
BerechneKraftfahrzeugsteuer,
} aus "./kraftst"
prüfe "Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)" {
testfall "exakt teilbar" { Einheiten(2000, 200) == 10 }
testfall "Teil davon rundet auf" { Einheiten(1598, 100) == 16 }
testfall "knapp über Grenze" { Einheiten(601, 25) == 25 }
testfall "0 oder negativ → 0" { Einheiten(0, 200) == 0 }
}
prüfe "§ 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)" {
testfall "125 cm³ → 5 × 1,84 = 9,20 €" {
SteuerKraftrad(125) == 9,20
}
testfall "600 cm³ → 24 × 1,84 = 44,16 €" {
SteuerKraftrad(600) == 44,16
}
testfall "601 cm³ → 25 × 1,84 = 46,00 €" {
SteuerKraftrad(601) == 46,00
}
}
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)" {
testfall "Benziner 1.598 cm³, 120 g/km → 32,00 + 51,00 = 83,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1598, co2GrammProKm = 120,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 83,00
}
testfall "Diesel 1.968 cm³, 150 g/km → 190,00 + 121,50 = 311,50 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Selbstzuendung,
hubraumCcm = 1968, co2GrammProKm = 150,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 311,50
}
testfall "CO₂ genau 95 g/km → kein Aufschlag (nur Hubraum 20,00 €)" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 999, co2GrammProKm = 95,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 20,00
}
testfall "alle CO₂-Bänder: 1.000 cm³, 200 g/km → 20,00 + 280,00 = 300,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1000, co2GrammProKm = 200,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 300,00
}
}
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020" {
testfall "Benziner 1.390 cm³, 130 g/km, Freigrenze 110 → 28,00 + 40,00 = 68,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1390, co2GrammProKm = 130,
erstzulassung = JuliBisDez2020, co2FreigrenzeNr2b = 110,
)
TarifNach9Abs1(f) == 68,00
}
}
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)" {
testfall "Benziner Stufe ee, 1.600 cm³ → 16 × 25,36 = 405,76 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1600,
erstzulassung = BisJuni2009, pkwStufe = Ee,
)
TarifNach9Abs1(f) == 405,76
}
testfall "Diesel Stufe aa, 1.900 cm³ → 19 × 15,44 = 293,36 €" {
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Selbstzuendung,
hubraumCcm = 1900,
erstzulassung = BisJuni2009, pkwStufe = Aa,
)
TarifNach9Abs1(f) == 293,36
}
}
prüfe "§ 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)" {
testfall "≥ S4, 3.000 kg → 160,00 + 50,00 = 210,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 3000, wohnmobilklasse = MindestensS4,
)
TarifNach9Abs1(f) == 210,00
}
testfall "≥ S4, sehr schwer → Höchstbetrag 800,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 20000, wohnmobilklasse = MindestensS4,
)
TarifNach9Abs1(f) == 800,00
}
testfall "S3–S1, 3.000 kg → 240,00 + 50,00 = 290,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 3000, wohnmobilklasse = S1bisS3,
)
TarifNach9Abs1(f) == 290,00
}
testfall "sonst, 6.000 kg → 400,00 + 150,00 + 75,00 = 625,00 €" {
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 6000, wohnmobilklasse = WomoSonst,
)
TarifNach9Abs1(f) == 625,00
}
}
prüfe "§ 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)" {
testfall "2.800 kg → 112,50 + 48,08 = 160,58 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereBis3500, antrieb = Selbstzuendung, gesamtgewichtKg = 2800,
)
TarifNach9Abs1(f) == 160,58
}
testfall "3.500 kg → 112,50 + 60,10 + 38,34 = 210,94 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereBis3500, antrieb = Selbstzuendung, gesamtgewichtKg = 3500,
)
TarifNach9Abs1(f) == 210,94
}
}
prüfe "§ 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)" {
testfall "Buchst. a (≥ S2), 5.000 kg → 173,90 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = MindestensS2,
)
TarifNach9Abs1(f) == 173,90
}
testfall "Buchst. a, sehr schwer → Höchstbetrag 556,00 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 20000, nfzklasse = MindestensS2,
)
TarifNach9Abs1(f) == 556,00
}
testfall "Buchst. c (G1), 5.000 kg → 260,80 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = G1,
)
TarifNach9Abs1(f) == 260,80
}
testfall "Buchst. d (sonst), 5.000 kg → 304,25 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = NfzSonst,
)
TarifNach9Abs1(f) == 304,25
}
testfall "Buchst. d, sehr schwer → Höchstbetrag 1.681,00 €" {
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 40000, nfzklasse = NfzSonst,
)
TarifNach9Abs1(f) == 1.681,00
}
}
prüfe "§ 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)" {
testfall "2.000 kg → 10 × 7,46 = 74,60 €" {
var f: Fahrzeug = Fahrzeug(
art = Anhaenger, antrieb = Fremdzuendung, gesamtgewichtKg = 2000,
)
TarifNach9Abs1(f) == 74,60
}
testfall "schwer → Höchstbetrag 373,24 €" {
var f: Fahrzeug = Fahrzeug(
art = Anhaenger, antrieb = Fremdzuendung, gesamtgewichtKg = 20000,
)
TarifNach9Abs1(f) == 373,24
}
}
prüfe "§ 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)" {
testfall "E-Kfz Nr. 3, 3.000 kg → 172,60 / 2 = 86,30 €" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(art = AndereBis3500, antrieb = Elektro, gesamtgewichtKg = 3000),
)
e.tarifbetrag == 172,60 und e.nachElektro == 86,30 und e.jahressteuer == 86,30
}
testfall "E-Kfz Nr. 4a, 5.000 kg → 173,90 / 2 = 86,95 €" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = AndereUeber3500, antrieb = Elektro,
gesamtgewichtKg = 5000, nfzklasse = MindestensS2,
),
)
e.nachElektro == 86,95
}
testfall "E-Kfz Nr. 4d → KEINE 50 %-Ermäßigung (nur a)" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = AndereUeber3500, antrieb = Elektro,
gesamtgewichtKg = 5000, nfzklasse = NfzSonst,
),
)
e.nachElektro == 304,25
}
}
prüfe "§ 3a / § 3d — Vergünstigungen / Befreiungen" {
testfall "§ 3a Abs. 1 (H/Bl/aG) → volle Befreiung 0,00 €" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Kraftrad, antrieb = Fremdzuendung,
hubraumCcm = 125, behinderung = Befreit3aAbs1,
),
)
e.jahressteuer == 0,00
}
testfall "§ 3a Abs. 2 → 50 % (9,20 / 2 = 4,60 €)" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Kraftrad, antrieb = Fremdzuendung,
hubraumCcm = 125, behinderung = Ermaessigt3aAbs2,
),
)
e.tarifbetrag == 9,20 und e.jahressteuer == 4,60
}
testfall "§ 3d E-Befreiung aktiv → 0,00 € (trotz Tarifbetrag)" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Pkw, antrieb = Elektro,
hubraumCcm = 0, co2GrammProKm = 0,
erstzulassung = AbJan2021, elektroBefreitNach3d = wahr,
),
)
e.jahressteuer == 0,00
}
}
prüfe "Gesamtberechnung — vollständiges Ergebnis" {
testfall "Benziner-PKW ab 2021, 1.598 cm³, 120 g/km" {
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1598, co2GrammProKm = 120,
erstzulassung = AbJan2021,
),
)
e.tarifbetrag == 83,00 und e.nachElektro == 83,00 und e.jahressteuer == 83,00
}
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.EuroCent;
import org.findsl.runtime.Quelle;
import javax.annotation.processing.Generated;
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§§ 8, 9 KraftStG)
*
* Bildet die **Jahressteuer** nach dem Kraftfahrzeugsteuergesetz
* (KraftStG 2002, i.d.g.F.) vollständig ab:
*
* - **§ 8 KraftStG** — Bemessungsgrundlage (Hubraum / CO₂ / zulässiges
* Gesamtgewicht je nach Fahrzeugart) → Auswahl des Tarifs.
* - **§ 9 Abs. 1 KraftStG** — Steuersatz, alle Nummern:
* Nr. 1 Krafträder · Nr. 2 a/b/c Personenkraftwagen (Erstzulassung
* bis 30.6.2009 / 1.7.2009–31.12.2020 / ab 1.1.2021) · Nr. 2a
* Wohnmobile · Nr. 2b dreirädrige/leichte vierrädrige Kfz · Nr. 3
* andere Kfz ≤ 3.500 kg · Nr. 4 a/b/c/d Kfz > 3.500 kg · Nr. 5
* Anhänger.
* - **§ 9 Abs. 2 KraftStG** — 50 % Ermäßigung für Elektrofahrzeuge
* (nur Beträge nach Abs. 1 Nr. 3 oder Nr. 4 Buchst. a).
* - **§ 9 Abs. 3 KraftStG** — Tagessteuer für ausländische Fahrzeuge.
* - **§ 9 Abs. 4 KraftStG** — Jahressteuer für rote / Oldtimer-Kennzeichen.
* - **§ 3a KraftStG** — Vergünstigungen für Schwerbehinderte
* (Abs. 1 volle Befreiung · Abs. 2 50 % Ermäßigung).
* - **§ 3d KraftStG** — Steuerbefreiung für Elektrofahrzeuge
* (Erstzulassung 18.5.2011–31.12.2030: 10 Jahre, längstens bis
* 31.12.2035).
* - **§ 9a KraftStG** — Diesel-Zuschlag: ausgelaufen (galt nur
* 1.4.2007–31.3.2011); wird nicht mehr angewandt (dokumentiert).
*
* **Progressive Tarife** (Nr. 2a/3/4) werden je angefangene 200-kg-Stufe
* in der jeweiligen Gewichtsspanne berechnet; die kumulierten
* Stufenbeträge sind als auditierbare Konstanten aus den Stufensätzen
* abgeleitet (keine handsummierten Werte). „Je angefangene Einheit"
* nutzt das Stdlib-Builtin `aufrunden`.
*
* **Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
* Steuerbetragsberechnung):** Verfahren §§ 11/12 (Entrichtung,
* Festsetzung), Mindestdauer/anteilige Berechnung § 5, Ausnahmekatalog
* § 3, widerrechtliche Benutzung. Die Zuordnung der Schadstoff-/
* Geräusch-/Erstzulassungsklasse trifft nach § 2 Abs. 2 Nr. 2 KraftStG
* **verbindlich die Zulassungsbehörde** — sie geht hier als geprüfte
* Eingabe ein (nicht aus EU-Richtlinien hergeleitet).
*/
@Generated(value = "findsl.Generator")
public interface Kraftst {
/**
* Tarifbetrag nach § 9 Abs. 1 KraftStG: wählt anhand der Fahrzeugart
* (§ 8 KraftStG) die einschlägige Nummer.
*
* @param f Fahrzeug-Eingaben.
* @return Steuer nach § 9 Abs. 1 KraftStG (vor Abs. 2 / § 3a / § 3d).
*/
@Quelle("§ 9 Absatz 1 KraftStG")
EuroCent tarifNach9Abs1(KraftstgTypen.Fahrzeug f);
/**
* Vollständige Festsetzung der Kraftfahrzeug-Jahressteuer in der
* gesetzlichen Reihenfolge: § 8 (Tarifauswahl) → § 9 Abs. 1
* (Tarifbetrag) → § 9 Abs. 2 (Elektro-Ermäßigung) → § 3a / § 3d
* (Vergünstigung/Befreiung). Liefert alle Zwischengrößen.
*
* @param f Fahrzeug-Eingaben.
* @return Vollständig dokumentiertes Berechnungsergebnis.
*/
@Quelle("§ 9 KraftStG")
KraftstgTypen.KraftfahrzeugsteuerErgebnis berechneKraftfahrzeugsteuer(KraftstgTypen.Fahrzeug f);
/**
* Rotes/Oldtimer-Kennzeichen, nur für Krafträder gültig (Jahressteuer).
*/
@Quelle("§ 9 Absatz 4 Nummer 1 KraftStG")
public static final EuroCent KZ_NUR_KRAD = EuroCent.von(
FinDslNumber.dezimal("46.02").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"KZ_NUR_KRAD\""));
/**
* Rotes/Oldtimer-Kennzeichen, im Übrigen (Jahressteuer).
*/
@Quelle("§ 9 Absatz 4 Nummer 2 KraftStG")
public static final EuroCent KZ_UEBRIGE = EuroCent.von(
FinDslNumber.dezimal("191.73").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"KZ_UEBRIGE\""));
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.EuroCent;
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).
*
* # Kraftfahrzeugsteuer — Tarif leichte Fahrzeuge (§ 9 Abs. 1 Nr. 1/2/2a/2b)
*
* Konstanten **und** Tarif-Funktionen für Krafträder (Nr. 1),
* Personenkraftwagen (Nr. 2 Buchst. a/b/c), Wohnmobile (Nr. 2a) und
* dreirädrige/leichte vierrädrige Kfz (Nr. 2b) — aus `kraftstg-steuer`
* herausgelöst. Konstanten und Logik liegen bewusst zusammen (ein
* Rechtsbereich = eine Datei, minimale modulübergreifende Importe).
*
* Einstiegsfunktionen `steuerKraftrad`, `steuerPkw`, `steuerWohnmobil`,
* `steuerDreiLeichtvier` wählt der Orchestrator `kraftstg-steuer`
* nach Fahrzeugart (§ 8 KraftStG) aus.
*/
@Generated(value = "findsl.Generator")
public interface KraftstgTarifLeicht {
/**
* Jahressteuer für Krafträder: je angefangene 25 cm³ Hubraum 1,84 €
* (§ 9 Abs. 1 Nr. 1 KraftStG).
*
* @param hubraumCcm Hubraum in cm³.
* @return Jahressteuer des Kraftrads.
*/
@Quelle("§ 9 Absatz 1 Nummer 1 KraftStG")
EuroCent steuerKraftrad(Ganzzahl hubraumCcm);
/**
* Personenkraftwagen nach § 9 Abs. 1 Nr. 2 KraftStG: wählt anhand des
* Erstzulassungs-Regimes Buchst. a, b oder c.
*
* @param f Fahrzeug-Eingaben.
* @return Jahressteuer des PKW.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
EuroCent steuerPkw(KraftstgTypen.Fahrzeug f);
/**
* Dreirädrige und leichte vierrädrige Kraftfahrzeuge
* (§ 9 Abs. 1 Nr. 2b KraftStG): je angefangene 100 cm³ ein nach
* Grenzwert-Einhaltung und Antrieb gestaffelter Satz.
*
* @param hubraumCcm Hubraum in cm³.
* @param grenzwerte Grenzwerte (RL 97/24/EG Zeile A 2003) eingehalten?
* @param antrieb Antriebsart.
* @return Jahressteuer des Fahrzeugs.
*/
@Quelle("§ 9 Absatz 1 Nummer 2b KraftStG")
EuroCent steuerDreiLeichtvier(Ganzzahl hubraumCcm, boolean grenzwerte, KraftstgTypen.Antrieb antrieb);
/**
* Wohnmobil nach § 9 Abs. 1 Nr. 2a KraftStG: je angefangene 200 kg
* Gesamtgewicht, progressiv nach Gewichtsspanne und Schadstoffklasse,
* mit Höchstbetrag (Buchst. a/b) bzw. ohne (Buchst. c).
*
* @param gesamtgewichtKg verkehrsrechtlich zulässiges Gesamtgewicht (kg).
* @param klasse Schadstoffklasse des Wohnmobils.
* @return Jahressteuer des Wohnmobils.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
EuroCent steuerWohnmobil(Ganzzahl gesamtgewichtKg, KraftstgTypen.WohnmobilKlasse klasse);
/**
* Kraftrad: je angefangene 25 cm³ Hubraum 1,84 € (§ 9 Abs. 1 Nr. 1 KraftStG).
*/
@Quelle("§ 9 Absatz 1 Nummer 1 KraftStG")
public static final EuroCent KRAD_JE_25CCM = EuroCent.von(
FinDslNumber.dezimal("1.84").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"KRAD_JE_25CCM\""));
/**
* PKW Nr. 2c (Erstzulassung ab 1.1.2021): Sockel je 100 cm³, Fremdzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final EuroCent PKW_C_HUBRAUM_OTTO = EuroCent.von(
FinDslNumber.dezimal("2.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_C_HUBRAUM_OTTO\""));
/**
* PKW Nr. 2c: Sockel je 100 cm³, Selbstzündung (Diesel).
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final EuroCent PKW_C_HUBRAUM_DIESEL = EuroCent.von(
FinDslNumber.dezimal("9.50")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_C_HUBRAUM_DIESEL\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 95 bis 115 g/km.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final EuroCent PKW_C_CO2_95_115 = EuroCent.von(
FinDslNumber.dezimal("2.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_C_CO2_95_115\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 115 bis 135 g/km.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final EuroCent PKW_C_CO2_115_135 = EuroCent.von(
FinDslNumber.dezimal("2.20")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_C_CO2_115_135\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 135 bis 155 g/km.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final EuroCent PKW_C_CO2_135_155 = EuroCent.von(
FinDslNumber.dezimal("2.50")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_C_CO2_135_155\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 155 bis 175 g/km.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final EuroCent PKW_C_CO2_155_175 = EuroCent.von(
FinDslNumber.dezimal("2.90")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_C_CO2_155_175\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 175 bis 195 g/km.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final EuroCent PKW_C_CO2_175_195 = EuroCent.von(
FinDslNumber.dezimal("3.40")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_C_CO2_175_195\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 195 g/km.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final EuroCent PKW_C_CO2_UEBER_195 = EuroCent.von(
FinDslNumber.dezimal("4.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_C_CO2_UEBER_195\""));
/**
* CO₂-Freibetrag: erst Emissionen ÜBER 95 g/km sind aufschlagspflichtig (Nr. 2c).
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
public static final Ganzzahl PKW_C_CO2_FREI = Ganzzahl.von(FinDslNumber.ganzzahl("95"));
/**
* PKW Nr. 2b (Erstzulassung 1.7.2009–31.12.2020): Sockel je 100 cm³ Fremdzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
public static final EuroCent PKW_B_HUBRAUM_OTTO = EuroCent.von(
FinDslNumber.dezimal("2.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_B_HUBRAUM_OTTO\""));
/**
* PKW Nr. 2b: Sockel je 100 cm³ Selbstzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
public static final EuroCent PKW_B_HUBRAUM_DIESEL = EuroCent.von(
FinDslNumber.dezimal("9.50")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_B_HUBRAUM_DIESEL\""));
/**
* PKW Nr. 2b: CO₂-Aufschlag je g/km über der (datumsabhängigen) Freigrenze.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
public static final EuroCent PKW_B_CO2_JE_GRAMM = EuroCent.von(
FinDslNumber.dezimal("2.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_B_CO2_JE_GRAMM\""));
/**
* PKW Nr. 2a (Erstzulassung bis 30.6.2009), je 100 cm³, Stufe aa — Fremdzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG")
public static final EuroCent PKW_A_AA_OTTO = EuroCent.von(
FinDslNumber.dezimal("6.75").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_AA_OTTO\""));
/**
* Stufe aa — Selbstzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG")
public static final EuroCent PKW_A_AA_DIESEL = EuroCent.von(
FinDslNumber.dezimal("15.44").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_AA_DIESEL\""));
/**
* Stufe bb — Fremdzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG")
public static final EuroCent PKW_A_BB_OTTO = EuroCent.von(
FinDslNumber.dezimal("7.36").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_BB_OTTO\""));
/**
* Stufe bb — Selbstzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG")
public static final EuroCent PKW_A_BB_DIESEL = EuroCent.von(
FinDslNumber.dezimal("16.05").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_BB_DIESEL\""));
/**
* Stufe cc — Fremdzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG")
public static final EuroCent PKW_A_CC_OTTO = EuroCent.von(
FinDslNumber.dezimal("15.13").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_CC_OTTO\""));
/**
* Stufe cc — Selbstzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG")
public static final EuroCent PKW_A_CC_DIESEL = EuroCent.von(
FinDslNumber.dezimal("27.35").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_CC_DIESEL\""));
/**
* Stufe dd — Fremdzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG")
public static final EuroCent PKW_A_DD_OTTO = EuroCent.von(
FinDslNumber.dezimal("21.07").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_DD_OTTO\""));
/**
* Stufe dd — Selbstzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG")
public static final EuroCent PKW_A_DD_DIESEL = EuroCent.von(
FinDslNumber.dezimal("33.29").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_DD_DIESEL\""));
/**
* Stufe ee (höchste, keine Voraussetzungen erfüllt) — Fremdzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG")
public static final EuroCent PKW_A_EE_OTTO = EuroCent.von(
FinDslNumber.dezimal("25.36").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_EE_OTTO\""));
/**
* Stufe ee — Selbstzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG")
public static final EuroCent PKW_A_EE_DIESEL = EuroCent.von(
FinDslNumber.dezimal("37.58").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"PKW_A_EE_DIESEL\""));
/**
* Dreirad/leichtes Vierrad, Grenzwerte eingehalten, Fremdzündung (je 100 cm³).
*/
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe a KraftStG")
public static final EuroCent DREIRAD_GW_OTTO = EuroCent.von(
FinDslNumber.dezimal("21.07").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"DREIRAD_GW_OTTO\""));
/**
* Grenzwerte eingehalten, Selbstzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe a KraftStG")
public static final EuroCent DREIRAD_GW_DIESEL = EuroCent.von(
FinDslNumber.dezimal("33.29")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"DREIRAD_GW_DIESEL\""));
/**
* Grenzwerte nicht eingehalten, Fremdzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe b KraftStG")
public static final EuroCent DREIRAD_SONST_OTTO = EuroCent.von(
FinDslNumber.dezimal("25.36")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"DREIRAD_SONST_OTTO\""));
/**
* Grenzwerte nicht eingehalten, Selbstzündung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2b Buchstabe b KraftStG")
public static final EuroCent DREIRAD_SONST_DIESEL = EuroCent.von(
FinDslNumber.dezimal("37.58")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"DREIRAD_SONST_DIESEL\""));
/**
* Wohnmobil ≥ Schadstoffklasse S4: bis 2.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
public static final EuroCent WOMO_S4_BIS_2000 = EuroCent.von(
FinDslNumber.dezimal("16.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_S4_BIS_2000\""));
/**
* Wohnmobil ≥ S4: über 2.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
public static final EuroCent WOMO_S4_UEBER_2000 = EuroCent.von(
FinDslNumber.dezimal("10.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_S4_UEBER_2000\""));
/**
* Wohnmobil ≥ S4: Höchstbetrag.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe a KraftStG")
public static final EuroCent WOMO_S4_MAX = EuroCent.von(
FinDslNumber.dezimal("800.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_S4_MAX\""));
/**
* Wohnmobil S3/S2/S1: bis 2.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
public static final EuroCent WOMO_S1_BIS_2000 = EuroCent.von(
FinDslNumber.dezimal("24.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_S1_BIS_2000\""));
/**
* Wohnmobil S3/S2/S1: über 2.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
public static final EuroCent WOMO_S1_UEBER_2000 = EuroCent.von(
FinDslNumber.dezimal("10.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_S1_UEBER_2000\""));
/**
* Wohnmobil S3/S2/S1: Höchstbetrag.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe b KraftStG")
public static final EuroCent WOMO_S1_MAX = EuroCent.von(
FinDslNumber.dezimal("1000.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_S1_MAX\""));
/**
* Wohnmobil sonst: bis 2.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
public static final EuroCent WOMO_SONST_BIS_2000 = EuroCent.von(
FinDslNumber.dezimal("40.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_SONST_BIS_2000\""));
/**
* Wohnmobil sonst: über 2.000 bis 5.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
public static final EuroCent WOMO_SONST_2000_5000 = EuroCent.von(
FinDslNumber.dezimal("10.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_SONST_2000_5000\""));
/**
* Wohnmobil sonst: über 5.000 bis 12.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
public static final EuroCent WOMO_SONST_5000_12000 = EuroCent.von(
FinDslNumber.dezimal("15.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_SONST_5000_12000\""));
/**
* Wohnmobil sonst: über 12.000 kg je 200 kg (kein Höchstbetrag).
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
public static final EuroCent WOMO_SONST_UEBER_12000 = EuroCent.von(
FinDslNumber.dezimal("25.00")
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"WOMO_SONST_UEBER_12000\""));
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.EuroCent;
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).
*
* # Kraftfahrzeugsteuer — Tarif Nutzfahrzeuge (§ 9 Abs. 1 Nr. 3/4/5)
*
* Konstanten **und** Tarif-Funktionen für andere Kfz ≤ 3.500 kg (Nr. 3),
* Kfz > 3.500 kg (Nr. 4 Buchst. a/b/c/d — progressive 200-kg-Stufen mit
* Höchstbetrag) und Kraftfahrzeuganhänger (Nr. 5) — aus
* `kraftstg-steuer` herausgelöst. Konstanten und Logik liegen bewusst
* zusammen.
*
* Einstiegsfunktionen `steuerNr3`, `steuerNr4`, `steuerAnhaenger`
* wählt der Orchestrator `kraftstg-steuer` nach Fahrzeugart aus.
*/
@Generated(value = "findsl.Generator")
public interface KraftstgTarifNutzfahrzeug {
/**
* Andere Kraftfahrzeuge bis 3.500 kg (§ 9 Abs. 1 Nr. 3 KraftStG):
* je angefangene 200 kg, progressiv nach Gewichtsspanne (kein
* Höchstbetrag).
*
* @param g Gesamtgewicht (kg).
* @return Jahressteuer.
*/
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
EuroCent steuerNr3(Ganzzahl g);
/**
* Kfz über 3.500 kg (§ 9 Abs. 1 Nr. 4 KraftStG): je angefangene 200 kg,
* progressiv in 1.000-kg-Spannen, nach Schadstoff-/Geräuschklasse, mit
* jeweils eigenem Höchstbetrag. Alle vier Buchstaben sind eigenständig
* modelliert: a (≥ S2, Spannen bis > 12.000 kg, max 556 €), b (S1,
* max 914 €), c (G1, max 1.425 €), d (sonst, max 1.681 €).
*
* @param g Gesamtgewicht (kg).
* @param klasse Schadstoff-/Geräuschklasse.
* @return Jahressteuer.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 KraftStG")
EuroCent steuerNr4(Ganzzahl g, KraftstgTypen.NfzKlasse klasse);
/**
* Kraftfahrzeuganhänger (§ 9 Abs. 1 Nr. 5 KraftStG): je angefangene
* 200 kg Gesamtgewicht 7,46 €, höchstens 373,24 €.
*
* @param gesamtgewichtKg Gesamtgewicht (kg).
* @return Jahressteuer des Anhängers.
*/
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
EuroCent steuerAnhaenger(Ganzzahl gesamtgewichtKg);
/**
* Nr. 3: bis 2.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
public static final EuroCent NR3_BIS_2000 = EuroCent.von(
FinDslNumber.dezimal("11.25").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR3_BIS_2000\""));
/**
* Nr. 3: über 2.000 bis 3.000 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
public static final EuroCent NR3_2000_3000 = EuroCent.von(
FinDslNumber.dezimal("12.02").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR3_2000_3000\""));
/**
* Nr. 3: über 3.000 bis 3.500 kg je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
public static final EuroCent NR3_3000_3500 = EuroCent.von(
FinDslNumber.dezimal("12.78").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR3_3000_3500\""));
/**
* Nr. 3: kumulierter Betrag bei genau 2.000 kg (10 Stufen × Satz).
*/
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
public static final EuroCent NR3_KUM_2000 = EuroCent.von(
NR3_BIS_2000.mul(FinDslNumber.ganzzahl("10"))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR3_KUM_2000\""));
/**
* Nr. 3: kumulierter Betrag bei genau 3.000 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
public static final EuroCent NR3_KUM_3000 = EuroCent.von(
NR3_KUM_2000.add(NR3_2000_3000.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR3_KUM_3000\""));
/**
* Nr. 4a (≥ S2): Stufensätze je 200 kg, Gewichtsspannen 2.000…> 12.000 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_1 = EuroCent.von(
FinDslNumber.dezimal("6.42").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_1\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_2 = EuroCent.von(
FinDslNumber.dezimal("6.88").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_2\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_3 = EuroCent.von(
FinDslNumber.dezimal("7.31").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_3\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_4 = EuroCent.von(
FinDslNumber.dezimal("7.75").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_4\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_5 = EuroCent.von(
FinDslNumber.dezimal("8.18").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_5\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_6 = EuroCent.von(
FinDslNumber.dezimal("8.62").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_6\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_7 = EuroCent.von(
FinDslNumber.dezimal("9.36").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_7\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_8 = EuroCent.von(
FinDslNumber.dezimal("10.07").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_8\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_9 = EuroCent.von(
FinDslNumber.dezimal("10.97").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_9\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_10 = EuroCent.von(
FinDslNumber.dezimal("11.84").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_10\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_11 = EuroCent.von(
FinDslNumber.dezimal("13.01").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_11\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_12 = EuroCent.von(
FinDslNumber.dezimal("14.32").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_12\""));
/**
* Nr. 4a: Höchstbetrag.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_MAX = EuroCent.von(
FinDslNumber.dezimal("556.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_MAX\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_2000 = EuroCent.von(
NR4A_1.mul(FinDslNumber.ganzzahl("10"))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_2000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_3000 = EuroCent.von(
NR4A_KUM_2000.add(NR4A_2.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_3000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_4000 = EuroCent.von(
NR4A_KUM_3000.add(NR4A_3.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_4000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_5000 = EuroCent.von(
NR4A_KUM_4000.add(NR4A_4.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_5000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_6000 = EuroCent.von(
NR4A_KUM_5000.add(NR4A_5.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_6000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_7000 = EuroCent.von(
NR4A_KUM_6000.add(NR4A_6.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_7000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_8000 = EuroCent.von(
NR4A_KUM_7000.add(NR4A_7.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_8000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_9000 = EuroCent.von(
NR4A_KUM_8000.add(NR4A_8.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_9000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_10000 = EuroCent.von(
NR4A_KUM_9000.add(NR4A_9.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_10000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_11000 = EuroCent.von(
NR4A_KUM_10000.add(NR4A_10.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_11000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
public static final EuroCent NR4A_KUM_12000 = EuroCent.von(
NR4A_KUM_11000.add(NR4A_11.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4A_KUM_12000\""));
/**
* Nr. 4d (Voraussetzungen a/b/c nicht erfüllt): Stufensätze je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_1 = EuroCent.von(
FinDslNumber.dezimal("11.25").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_1\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_2 = EuroCent.von(
FinDslNumber.dezimal("12.02").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_2\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_3 = EuroCent.von(
FinDslNumber.dezimal("12.78").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_3\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_4 = EuroCent.von(
FinDslNumber.dezimal("13.55").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_4\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_5 = EuroCent.von(
FinDslNumber.dezimal("14.32").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_5\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_6 = EuroCent.von(
FinDslNumber.dezimal("15.08").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_6\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_7 = EuroCent.von(
FinDslNumber.dezimal("16.36").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_7\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_8 = EuroCent.von(
FinDslNumber.dezimal("17.64").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_8\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_9 = EuroCent.von(
FinDslNumber.dezimal("19.17").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_9\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_10 = EuroCent.von(
FinDslNumber.dezimal("20.71").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_10\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_11 = EuroCent.von(
FinDslNumber.dezimal("22.75").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_11\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_12 = EuroCent.von(
FinDslNumber.dezimal("25.05").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_12\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_13 = EuroCent.von(
FinDslNumber.dezimal("27.61").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_13\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_14 = EuroCent.von(
FinDslNumber.dezimal("45.50").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_14\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_15 = EuroCent.von(
FinDslNumber.dezimal("63.40").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_15\""));
/**
* Nr. 4d: Höchstbetrag.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_MAX = EuroCent.von(
FinDslNumber.dezimal("1681.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_MAX\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_2000 = EuroCent.von(
NR4D_1.mul(FinDslNumber.ganzzahl("10"))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_2000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_3000 = EuroCent.von(
NR4D_KUM_2000.add(NR4D_2.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_3000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_4000 = EuroCent.von(
NR4D_KUM_3000.add(NR4D_3.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_4000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_5000 = EuroCent.von(
NR4D_KUM_4000.add(NR4D_4.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_5000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_6000 = EuroCent.von(
NR4D_KUM_5000.add(NR4D_5.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_6000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_7000 = EuroCent.von(
NR4D_KUM_6000.add(NR4D_6.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_7000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_8000 = EuroCent.von(
NR4D_KUM_7000.add(NR4D_7.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_8000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_9000 = EuroCent.von(
NR4D_KUM_8000.add(NR4D_8.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_9000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_10000 = EuroCent.von(
NR4D_KUM_9000.add(NR4D_9.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_10000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_11000 = EuroCent.von(
NR4D_KUM_10000.add(NR4D_10.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_11000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_12000 = EuroCent.von(
NR4D_KUM_11000.add(NR4D_11.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_12000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_13000 = EuroCent.von(
NR4D_KUM_12000.add(NR4D_12.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_13000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_14000 = EuroCent.von(
NR4D_KUM_13000.add(NR4D_13.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_14000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
public static final EuroCent NR4D_KUM_15000 = EuroCent.von(
NR4D_KUM_14000.add(NR4D_14.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4D_KUM_15000\""));
/**
* Nr. 4b (Schadstoffklasse S1): Stufensätze je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_1 = EuroCent.von(
FinDslNumber.dezimal("6.42").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_1\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_2 = EuroCent.von(
FinDslNumber.dezimal("6.88").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_2\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_3 = EuroCent.von(
FinDslNumber.dezimal("7.31").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_3\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_4 = EuroCent.von(
FinDslNumber.dezimal("7.75").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_4\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_5 = EuroCent.von(
FinDslNumber.dezimal("8.18").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_5\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_6 = EuroCent.von(
FinDslNumber.dezimal("8.62").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_6\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_7 = EuroCent.von(
FinDslNumber.dezimal("9.36").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_7\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_8 = EuroCent.von(
FinDslNumber.dezimal("10.07").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_8\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_9 = EuroCent.von(
FinDslNumber.dezimal("10.97").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_9\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_10 = EuroCent.von(
FinDslNumber.dezimal("11.84").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_10\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_11 = EuroCent.von(
FinDslNumber.dezimal("13.01").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_11\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_12 = EuroCent.von(
FinDslNumber.dezimal("14.32").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_12\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_13 = EuroCent.von(
FinDslNumber.dezimal("15.77").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_13\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_14 = EuroCent.von(
FinDslNumber.dezimal("26.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_14\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_15 = EuroCent.von(
FinDslNumber.dezimal("36.23").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_15\""));
/**
* Nr. 4b: Höchstbetrag.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_MAX = EuroCent.von(
FinDslNumber.dezimal("914.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_MAX\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_2000 = EuroCent.von(
NR4B_1.mul(FinDslNumber.ganzzahl("10"))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_2000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_3000 = EuroCent.von(
NR4B_KUM_2000.add(NR4B_2.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_3000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_4000 = EuroCent.von(
NR4B_KUM_3000.add(NR4B_3.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_4000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_5000 = EuroCent.von(
NR4B_KUM_4000.add(NR4B_4.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_5000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_6000 = EuroCent.von(
NR4B_KUM_5000.add(NR4B_5.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_6000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_7000 = EuroCent.von(
NR4B_KUM_6000.add(NR4B_6.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_7000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_8000 = EuroCent.von(
NR4B_KUM_7000.add(NR4B_7.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_8000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_9000 = EuroCent.von(
NR4B_KUM_8000.add(NR4B_8.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_9000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_10000 = EuroCent.von(
NR4B_KUM_9000.add(NR4B_9.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_10000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_11000 = EuroCent.von(
NR4B_KUM_10000.add(NR4B_10.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_11000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_12000 = EuroCent.von(
NR4B_KUM_11000.add(NR4B_11.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_12000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_13000 = EuroCent.von(
NR4B_KUM_12000.add(NR4B_12.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_13000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_14000 = EuroCent.von(
NR4B_KUM_13000.add(NR4B_13.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_14000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
public static final EuroCent NR4B_KUM_15000 = EuroCent.von(
NR4B_KUM_14000.add(NR4B_14.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4B_KUM_15000\""));
/**
* Nr. 4c (Geräuschklasse G1): Stufensätze je 200 kg.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_1 = EuroCent.von(
FinDslNumber.dezimal("9.64").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_1\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_2 = EuroCent.von(
FinDslNumber.dezimal("10.30").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_2\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_3 = EuroCent.von(
FinDslNumber.dezimal("10.97").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_3\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_4 = EuroCent.von(
FinDslNumber.dezimal("11.61").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_4\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_5 = EuroCent.von(
FinDslNumber.dezimal("12.27").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_5\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_6 = EuroCent.von(
FinDslNumber.dezimal("12.94").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_6\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_7 = EuroCent.von(
FinDslNumber.dezimal("14.03").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_7\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_8 = EuroCent.von(
FinDslNumber.dezimal("15.11").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_8\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_9 = EuroCent.von(
FinDslNumber.dezimal("16.44").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_9\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_10 = EuroCent.von(
FinDslNumber.dezimal("17.74").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_10\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_11 = EuroCent.von(
FinDslNumber.dezimal("19.51").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_11\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_12 = EuroCent.von(
FinDslNumber.dezimal("21.47").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_12\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_13 = EuroCent.von(
FinDslNumber.dezimal("23.67").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_13\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_14 = EuroCent.von(
FinDslNumber.dezimal("39.01").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_14\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_15 = EuroCent.von(
FinDslNumber.dezimal("54.35").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_15\""));
/**
* Nr. 4c: Höchstbetrag.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_MAX = EuroCent.von(
FinDslNumber.dezimal("1425.00").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_MAX\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_2000 = EuroCent.von(
NR4C_1.mul(FinDslNumber.ganzzahl("10"))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_2000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_3000 = EuroCent.von(
NR4C_KUM_2000.add(NR4C_2.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_3000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_4000 = EuroCent.von(
NR4C_KUM_3000.add(NR4C_3.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_4000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_5000 = EuroCent.von(
NR4C_KUM_4000.add(NR4C_4.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_5000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_6000 = EuroCent.von(
NR4C_KUM_5000.add(NR4C_5.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_6000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_7000 = EuroCent.von(
NR4C_KUM_6000.add(NR4C_6.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_7000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_8000 = EuroCent.von(
NR4C_KUM_7000.add(NR4C_7.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_8000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_9000 = EuroCent.von(
NR4C_KUM_8000.add(NR4C_8.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_9000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_10000 = EuroCent.von(
NR4C_KUM_9000.add(NR4C_9.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_10000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_11000 = EuroCent.von(
NR4C_KUM_10000.add(NR4C_10.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_11000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_12000 = EuroCent.von(
NR4C_KUM_11000.add(NR4C_11.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_12000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_13000 = EuroCent.von(
NR4C_KUM_12000.add(NR4C_12.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_13000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_14000 = EuroCent.von(
NR4C_KUM_13000.add(NR4C_13.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_14000\""));
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
public static final EuroCent NR4C_KUM_15000 = EuroCent.von(
NR4C_KUM_14000.add(NR4C_14.mul(FinDslNumber.ganzzahl("5")))
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"NR4C_KUM_15000\""));
/**
* Anhänger: je angefangene 200 kg Gesamtgewicht 7,46 €.
*/
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
public static final EuroCent ANH_JE_200KG = EuroCent.von(
FinDslNumber.dezimal("7.46").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"ANH_JE_200KG\""));
/**
* Anhänger: Höchstbetrag.
*/
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
public static final EuroCent ANH_MAX = EuroCent.von(
FinDslNumber.dezimal("373.24").withMoneyAnnotation(FinDslNumber.Type.EuroCent, "Konstante \"ANH_MAX\""));
}import org.findsl.runtime.EuroCent;
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).
*
* # Kraftfahrzeugsteuer — gemeinsame Typen und Helfer
*
* Geteiltes Vokabular des KraftStG-Moduls (aus `kraftstg-steuer`
* herausgelöst, damit die Hauptdatei nicht überlang wird): die
* Fahrzeug-Klassifizierungs-Aufzählungen (§§ 8, 9, 3a KraftStG), der
* Eingabe-Datensatz `Fahrzeug`, der Ergebnis-Datensatz
* `KraftfahrzeugsteuerErgebnis` sowie die allgemeinen Berechnungshelfer
* `einheiten` (je angefangene Einheit, § 9 KraftStG) und `begrenze`
* (Höchstbetrags-Kappung, § 9 Abs. 1 KraftStG).
*
* Importiert nichts (Blatt des Modul-Graphen); wird von den Tarif-Dateien
* `kraftstg-tarif-leicht`, `kraftstg-tarif-nutzfahrzeug` und vom Orchestrator
* `kraftstg-steuer` genutzt.
*/
@Generated(value = "findsl.Generator")
public interface KraftstgTypen {
/**
* Anzahl angefangener Einheiten: `wert` geteilt durch `schritt`,
* aufgerundet (§ 9 KraftStG: „für je … oder einen Teil davon").
*
* @param wert zu zerlegende Menge (cm³ bzw. kg).
* @param teiler Einheitengröße (25 / 100 / 200).
* @return Anzahl angefangener Einheiten (≥ 0).
*/
@Quelle("§ 9 Absatz 1 KraftStG")
Ganzzahl einheiten(Ganzzahl wert, Ganzzahl teiler);
/**
* Fahrzeugart i.S.d. § 8 / § 9 Abs. 1 KraftStG — bestimmt, welcher
* Tarif (welche Nummer des § 9 Abs. 1) anzuwenden ist.
*
* @param Kraftrad § 9 Abs. 1 Nr. 1: Krafträder (Hubkolbenmotor).
* @param Pkw § 9 Abs. 1 Nr. 2: Personenkraftwagen (M1) mit
* Hubkolbenmotor.
* @param Wohnmobil § 9 Abs. 1 Nr. 2a: Wohnmobile.
* @param DreiLeichtvier § 9 Abs. 1 Nr. 2b: dreirädrige und leichte
* vierrädrige Kraftfahrzeuge.
* @param AndereBis3500 § 9 Abs. 1 Nr. 3: andere Kfz bis 3.500 kg.
* @param AndereUeber3500 § 9 Abs. 1 Nr. 4: Kfz über 3.500 kg.
* @param Anhaenger § 9 Abs. 1 Nr. 5: Kraftfahrzeuganhänger.
*/
@Quelle("§ 8 KraftStG")
public enum Fahrzeugart {
Kraftrad,
Pkw,
Wohnmobil,
DreiLeichtvier,
AndereBis3500,
AndereUeber3500,
Anhaenger
}
/**
* Antriebsart. § 9 unterscheidet Fremdzündungsmotor (Ottomotor/Benzin)
* und Selbstzündungsmotor (Dieselmotor); `Elektro` steuert die
* Ermäßigung/Befreiung (§ 9 Abs. 2, § 3d KraftStG).
*
* @param Fremdzuendung Fremdzündungsmotor (Ottomotor).
* @param Selbstzuendung Selbstzündungsmotor (Dieselmotor).
* @param Elektro Elektrofahrzeug i.S.d. § 9 Abs. 2 KraftStG.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
public enum Antrieb {
Fremdzuendung,
Selbstzuendung,
Elektro
}
/**
* Erstzulassungs-Regime des PKW — wählt den Buchstaben des
* § 9 Abs. 1 Nr. 2 KraftStG.
*
* @param BisJuni2009 Erstzulassung bis 30.6.2009 (Buchst. a, Hubraum
* + Schadstoffstufe aa–ee).
* @param JuliBisDez2020 Erstzulassung 1.7.2009–31.12.2020 (Buchst. b,
* Hubraum + CO₂ über datumsabhängiger Freigrenze).
* @param AbJan2021 Erstzulassung ab 1.1.2021 (Buchst. c, Hubraum +
* progressiver CO₂-Aufschlag ab 95 g/km).
*/
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
public enum Erstzulassungsregime {
BisJuni2009,
JuliBisDez2020,
AbJan2021
}
/**
* Schadstoffstufe aa–ee für PKW mit Erstzulassung bis 30.6.2009
* (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG). Die Einstufung trifft nach
* § 2 Abs. 2 Nr. 2 KraftStG verbindlich die Zulassungsbehörde.
*
* @param Aa Doppelbuchst. aa (günstigste Stufe).
* @param Bb Doppelbuchst. bb.
* @param Cc Doppelbuchst. cc.
* @param Dd Doppelbuchst. dd.
* @param Ee Doppelbuchst. ee (höchste Stufe, keine Voraussetzungen).
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
public enum PkwSchadstoffstufe {
Aa,
Bb,
Cc,
Dd,
Ee
}
/**
* Schadstoffklasse für Wohnmobile (§ 9 Abs. 1 Nr. 2a KraftStG).
*
* @param MindestensS4 mindestens Schadstoffklasse S 4 (Buchst. a).
* @param S1bisS3 Schadstoffklasse S 3, S 2 oder S 1 (Buchst. b).
* @param WomoSonst Voraussetzungen a/b nicht erfüllt (Buchst. c).
*/
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
public enum WohnmobilKlasse {
MindestensS4,
S1bisS3,
WomoSonst
}
/**
* Schadstoff-/Geräuschklasse für Kfz > 3.500 kg
* (§ 9 Abs. 1 Nr. 4 KraftStG). Verbindliche Feststellung der
* Zulassungsbehörde (§ 2 Abs. 2 Nr. 2 KraftStG).
*
* @param MindestensS2 mindestens Schadstoffklasse S 2 (Buchst. a).
* @param S1 Schadstoffklasse S 1 (Buchst. b).
* @param G1 Geräuschklasse G 1 (Buchst. c).
* @param NfzSonst Voraussetzungen a/b/c nicht erfüllt (Buchst. d).
*/
@Quelle("§ 9 Absatz 1 Nummer 4 KraftStG")
public enum NfzKlasse {
MindestensS2,
S1,
G1,
NfzSonst
}
/**
* Schwerbehinderten-Vergünstigung nach § 3a KraftStG.
*
* @param Keine keine Vergünstigung.
* @param Befreit3aAbs1 volle Steuerbefreiung (Merkzeichen H, Bl, aG —
* § 3a Abs. 1 KraftStG).
* @param Ermaessigt3aAbs2 50 % Ermäßigung (orangefarbener Aufdruck,
* § 3a Abs. 2 KraftStG).
*/
@Quelle("§ 3a KraftStG")
public enum Behinderung {
Keine,
Befreit3aAbs1,
Ermaessigt3aAbs2
}
/**
* Eingaben eines Fahrzeugs für die Jahressteuer-Berechnung. Nicht jedes
* Feld ist für jede Fahrzeugart relevant — maßgeblich ist `art`
* (§ 8 KraftStG); die übrigen Felder gelten nur im jeweiligen Tarif.
*
* @param art Fahrzeugart (§ 8 KraftStG) — wählt den Tarif.
* @param antrieb Antriebsart (Fremd-/Selbstzündung/Elektro).
* @param hubraumCcm Hubraum in cm³ (Nr. 1, Nr. 2, Nr. 2b).
* @param co2GrammProKm CO₂-Emission in g/km (Nr. 2 Buchst. b/c).
* @param gesamtgewichtKg verkehrsrechtlich zulässiges Gesamtgewicht
* in kg (Nr. 2a, 3, 4, 5).
* @param erstzulassung Erstzulassungs-Regime des PKW (Nr. 2 a/b/c).
* @param pkwStufe Schadstoffstufe aa–ee (Nr. 2 Buchst. a).
* @param co2FreigrenzeNr2b datumsabhängige CO₂-Freigrenze g/km für
* Nr. 2 Buchst. b (120 bis 31.12.2011 / 110
* ab 1.1.2012 / 95 ab 1.1.2014).
* @param dreiradGrenzwerte Dreirad/leichtes Vierrad: Grenzwerte
* eingehalten? (Nr. 2b a vs. b).
* @param wohnmobilklasse Schadstoffklasse des Wohnmobils (Nr. 2a).
* @param nfzklasse Schadstoff-/Geräuschklasse > 3.500 kg (Nr. 4).
* @param behinderung Schwerbehinderten-Vergünstigung (§ 3a).
* @param elektroBefreitNach3d Steuerbefreiung nach § 3d KraftStG aktiv?
* (datumsabhängig — verbindlich extern
* festgestellt).
*/
@Quelle("§ 8 KraftStG")
public record Fahrzeug(
Fahrzeugart art,
Antrieb antrieb,
Ganzzahl hubraumCcm,
Ganzzahl co2GrammProKm,
Ganzzahl gesamtgewichtKg,
Erstzulassungsregime erstzulassung,
PkwSchadstoffstufe pkwStufe,
Ganzzahl co2FreigrenzeNr2b,
boolean dreiradGrenzwerte,
WohnmobilKlasse wohnmobilklasse,
NfzKlasse nfzklasse,
Behinderung behinderung,
boolean elektroBefreitNach3d
) {}
/**
* Vollständige, prüfbare Berechnung der Kraftfahrzeug-Jahressteuer.
*
* @param tarifbetrag Steuer nach § 9 Abs. 1 KraftStG (vor § 9
* Abs. 2 / § 3a / § 3d).
* @param nachElektro nach Anwendung der 50 %-Ermäßigung für
* Elektrofahrzeuge (§ 9 Abs. 2 KraftStG).
* @param jahressteuer festgesetzte Jahressteuer nach Anwendung von
* § 3a / § 3d KraftStG (0 bei Befreiung).
*/
@Quelle("§ 9 KraftStG")
public record KraftfahrzeugsteuerErgebnis(
EuroCent tarifbetrag,
EuroCent nachElektro,
EuroCent jahressteuer
) {}
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.FinDslRuntimeError;
import org.findsl.runtime.EuroCent;
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).
*
* # Kraftfahrzeugsteuer — Tarif leichte Fahrzeuge (§ 9 Abs. 1 Nr. 1/2/2a/2b)
*
* Konstanten **und** Tarif-Funktionen für Krafträder (Nr. 1),
* Personenkraftwagen (Nr. 2 Buchst. a/b/c), Wohnmobile (Nr. 2a) und
* dreirädrige/leichte vierrädrige Kfz (Nr. 2b) — aus `kraftstg-steuer`
* herausgelöst. Konstanten und Logik liegen bewusst zusammen (ein
* Rechtsbereich = eine Datei, minimale modulübergreifende Importe).
*
* Einstiegsfunktionen `steuerKraftrad`, `steuerPkw`, `steuerWohnmobil`,
* `steuerDreiLeichtvier` wählt der Orchestrator `kraftstg-steuer`
* nach Fahrzeugart (§ 8 KraftStG) aus.
*/
@Generated(value = "findsl.Generator")
class KraftstgTarifLeichtImpl implements KraftstgTarifLeicht {
private final KraftstgTypen kraftstgTypen;
KraftstgTarifLeichtImpl(KraftstgTypen kraftstgTypen) {
this.kraftstgTypen = kraftstgTypen;
}
@Quelle("§ 9 Absatz 1 Nummer 1 KraftStG")
@Override
public EuroCent steuerKraftrad(Ganzzahl hubraumCcm) {
return EuroCent.von(
KRAD_JE_25CCM.mul(
kraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("25")))));
}
/**
* Progressiver CO₂-Aufschlag für PKW nach § 9 Abs. 1 Nr. 2 Buchst. c
* KraftStG: für jedes Gramm CO₂/km über 95 g/km, gestaffelt nach dem
* Emissionswert (marginal je Spanne).
*
* @param co2 CO₂-Emission in g/km.
* @return CO₂-Aufschlag (0, wenn ≤ 95 g/km).
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
protected FinDslNumber _co2AufschlagNr2c(FinDslNumber co2) {
if (co2.compareValue(FinDslNumber.ganzzahl("95")) <= 0) {
return FinDslNumber.dezimal("0.00");
}
if (co2.compareValue(FinDslNumber.ganzzahl("115")) <= 0) {
return PKW_C_CO2_95_115.mul(co2.sub(FinDslNumber.ganzzahl("95")));
}
if (co2.compareValue(FinDslNumber.ganzzahl("135")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20"))
.add(PKW_C_CO2_115_135.mul(co2.sub(FinDslNumber.ganzzahl("115"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("155")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20"))
.add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_135_155.mul(co2.sub(FinDslNumber.ganzzahl("135"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("175")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20"))
.add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_155_175.mul(co2.sub(FinDslNumber.ganzzahl("155"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("195")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20"))
.add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_155_175.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_175_195.mul(co2.sub(FinDslNumber.ganzzahl("175"))));
}
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20"))
.add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_155_175.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_175_195.mul(FinDslNumber.ganzzahl("20")))
.add(PKW_C_CO2_UEBER_195.mul(co2.sub(FinDslNumber.ganzzahl("195"))));
}
/**
* PKW-Hubraum-Sockel nach Antrieb (§ 9 Abs. 1 Nr. 2 Buchst. b/c
* KraftStG): je angefangene 100 cm³ 2,00 € (Fremdzündung) bzw. 9,50 €
* (Selbstzündung).
*
* @param hubraumCcm Hubraum in cm³.
* @param antrieb Antriebsart.
* @return Hubraum-Sockelbetrag.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
protected FinDslNumber _pkwHubraumSockel(FinDslNumber hubraumCcm, KraftstgTypen.Antrieb antrieb) {
if (antrieb == KraftstgTypen.Antrieb.Selbstzuendung) {
return PKW_C_HUBRAUM_DIESEL.mul(
kraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
if ((antrieb == KraftstgTypen.Antrieb.Fremdzuendung) || (antrieb == KraftstgTypen.Antrieb.Elektro)) {
return PKW_C_HUBRAUM_OTTO.mul(
kraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* PKW Nr. 2 Buchst. c (Erstzulassung ab 1.1.2021): Hubraum-Sockel
* zuzüglich progressivem CO₂-Aufschlag (§ 9 Abs. 1 Nr. 2 Buchst. c
* KraftStG).
*
* @param hubraumCcm Hubraum in cm³.
* @param co2 CO₂-Emission in g/km.
* @param antrieb Antriebsart.
* @return Jahressteuer des PKW (Buchst. c).
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG")
protected FinDslNumber _steuerPkwC(FinDslNumber hubraumCcm, FinDslNumber co2, KraftstgTypen.Antrieb antrieb) {
return _pkwHubraumSockel(hubraumCcm, antrieb).add(_co2AufschlagNr2c(co2));
}
/**
* PKW Nr. 2 Buchst. b (Erstzulassung 1.7.2009–31.12.2020):
* Hubraum-Sockel zuzüglich 2,00 € je g/km CO₂ über der
* datumsabhängigen Freigrenze (120 / 110 / 95 g/km).
*
* @param hubraumCcm Hubraum in cm³.
* @param co2 CO₂-Emission in g/km.
* @param freigrenze maßgebliche CO₂-Freigrenze (g/km).
* @param antrieb Antriebsart.
* @return Jahressteuer des PKW (Buchst. b).
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG")
protected FinDslNumber _steuerPkwB(
FinDslNumber hubraumCcm,
FinDslNumber co2,
FinDslNumber freigrenze,
KraftstgTypen.Antrieb antrieb) {
if (co2.compareValue(freigrenze) <= 0) {
return _pkwHubraumSockel(hubraumCcm, antrieb).add(FinDslNumber.dezimal("0.00"));
}
return _pkwHubraumSockel(hubraumCcm, antrieb).add(PKW_B_CO2_JE_GRAMM.mul(co2.sub(freigrenze)));
}
/**
* PKW Nr. 2 Buchst. a (Erstzulassung bis 30.6.2009): je angefangene
* 100 cm³ ein nach Schadstoffstufe (aa–ee) und Antrieb gestaffelter
* Satz (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG).
*
* @param hubraumCcm Hubraum in cm³.
* @param stufe Schadstoffstufe aa–ee.
* @param antrieb Antriebsart.
* @return Jahressteuer des PKW (Buchst. a).
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
protected FinDslNumber _steuerPkwA(
FinDslNumber hubraumCcm,
KraftstgTypen.PkwSchadstoffstufe stufe,
KraftstgTypen.Antrieb antrieb) {
return _satzPkwA(stufe, antrieb)
.mul(kraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
/**
* Stufensatz je 100 cm³ für PKW Nr. 2 Buchst. a nach Schadstoffstufe
* und Antrieb. (Elektro wird wie Fremdzündung behandelt — relevant
* wird der Wert für reine E-PKW ohnehin nicht, da diese nach § 3d
* befreit sind.)
*
* @param stufe Schadstoffstufe aa–ee.
* @param antrieb Antriebsart.
* @return Satz je angefangene 100 cm³.
*/
@Quelle("§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG")
protected FinDslNumber _satzPkwA(KraftstgTypen.PkwSchadstoffstufe stufe, KraftstgTypen.Antrieb antrieb) {
if (antrieb == KraftstgTypen.Antrieb.Selbstzuendung) {
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Aa) {
return PKW_A_AA_DIESEL;
}
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Bb) {
return PKW_A_BB_DIESEL;
}
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Cc) {
return PKW_A_CC_DIESEL;
}
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Dd) {
return PKW_A_DD_DIESEL;
}
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Ee) {
return PKW_A_EE_DIESEL;
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
if ((antrieb == KraftstgTypen.Antrieb.Fremdzuendung) || (antrieb == KraftstgTypen.Antrieb.Elektro)) {
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Aa) {
return PKW_A_AA_OTTO;
}
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Bb) {
return PKW_A_BB_OTTO;
}
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Cc) {
return PKW_A_CC_OTTO;
}
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Dd) {
return PKW_A_DD_OTTO;
}
if (stufe == KraftstgTypen.PkwSchadstoffstufe.Ee) {
return PKW_A_EE_OTTO;
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
@Quelle("§ 9 Absatz 1 Nummer 2 KraftStG")
@Override
public EuroCent steuerPkw(KraftstgTypen.Fahrzeug f) {
if (f.erstzulassung() == KraftstgTypen.Erstzulassungsregime.BisJuni2009) {
return EuroCent.von(_steuerPkwA(f.hubraumCcm(), f.pkwStufe(), f.antrieb()));
}
if (f.erstzulassung() == KraftstgTypen.Erstzulassungsregime.JuliBisDez2020) {
return EuroCent.von(_steuerPkwB(f.hubraumCcm(), f.co2GrammProKm(), f.co2FreigrenzeNr2b(), f.antrieb()));
}
if (f.erstzulassung() == KraftstgTypen.Erstzulassungsregime.AbJan2021) {
return EuroCent.von(_steuerPkwC(f.hubraumCcm(), f.co2GrammProKm(), f.antrieb()));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
@Quelle("§ 9 Absatz 1 Nummer 2b KraftStG")
@Override
public EuroCent steuerDreiLeichtvier(Ganzzahl hubraumCcm, boolean grenzwerte, KraftstgTypen.Antrieb antrieb) {
return EuroCent.von(
_satzDreiLeichtvier(grenzwerte, antrieb)
.mul(kraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100")))));
}
/**
* Stufensatz je 100 cm³ für § 9 Abs. 1 Nr. 2b KraftStG.
*
* @param grenzwerte Grenzwerte eingehalten?
* @param antrieb Antriebsart.
* @return Satz je angefangene 100 cm³.
*/
@Quelle("§ 9 Absatz 1 Nummer 2b KraftStG")
protected FinDslNumber _satzDreiLeichtvier(boolean grenzwerte, KraftstgTypen.Antrieb antrieb) {
if ((grenzwerte) && (antrieb == KraftstgTypen.Antrieb.Selbstzuendung)) {
return DREIRAD_GW_DIESEL;
}
if (grenzwerte) {
return DREIRAD_GW_OTTO;
}
if (antrieb == KraftstgTypen.Antrieb.Selbstzuendung) {
return DREIRAD_SONST_DIESEL;
}
return DREIRAD_SONST_OTTO;
}
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
@Override
public EuroCent steuerWohnmobil(Ganzzahl gesamtgewichtKg, KraftstgTypen.WohnmobilKlasse klasse) {
if (klasse == KraftstgTypen.WohnmobilKlasse.MindestensS4) {
return EuroCent.von(
_womoZweiStufen(gesamtgewichtKg, WOMO_S4_BIS_2000, WOMO_S4_UEBER_2000).hoechstens(WOMO_S4_MAX));
}
if (klasse == KraftstgTypen.WohnmobilKlasse.S1bisS3) {
return EuroCent.von(
_womoZweiStufen(gesamtgewichtKg, WOMO_S1_BIS_2000, WOMO_S1_UEBER_2000).hoechstens(WOMO_S1_MAX));
}
if (klasse == KraftstgTypen.WohnmobilKlasse.WomoSonst) {
return EuroCent.von(_steuerWohnmobilSonst(gesamtgewichtKg));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* Zwei-Stufen-Wohnmobiltarif (Buchst. a/b): bis 2.000 kg `satzBis`,
* darüber `satzUeber`, je angefangene 200 kg.
*
* @param g Gesamtgewicht (kg).
* @param satzBis Satz je 200 kg bis 2.000 kg.
* @param satzUeber Satz je 200 kg über 2.000 kg.
* @return Tarifbetrag vor Höchstbetragsbegrenzung.
*/
@Quelle("§ 9 Absatz 1 Nummer 2a KraftStG")
protected FinDslNumber _womoZweiStufen(FinDslNumber g, FinDslNumber satzBis, FinDslNumber satzUeber) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return satzBis.mul(kraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
return satzBis.mul(FinDslNumber.ganzzahl("10"))
.add(
satzUeber.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Wohnmobil Buchst. c (Voraussetzungen a/b nicht erfüllt, kein
* Höchstbetrag): bis 2.000 kg 40 €, über 2.000–5.000 kg 10 €, über
* 5.000–12.000 kg 15 €, über 12.000 kg 25 € — je angefangene 200 kg.
*
* @param g Gesamtgewicht (kg).
* @return Jahressteuer des Wohnmobils (Buchst. c).
*/
@Quelle("§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG")
protected FinDslNumber _steuerWohnmobilSonst(FinDslNumber g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(
kraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10"))
.add(
WOMO_SONST_2000_5000.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10"))
.add(WOMO_SONST_2000_5000.mul(FinDslNumber.ganzzahl("15")))
.add(
WOMO_SONST_5000_12000.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10"))
.add(WOMO_SONST_2000_5000.mul(FinDslNumber.ganzzahl("15")))
.add(WOMO_SONST_5000_12000.mul(FinDslNumber.ganzzahl("35")))
.add(
WOMO_SONST_UEBER_12000.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.FinDslRuntimeError;
import org.findsl.runtime.EuroCent;
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).
*
* # Kraftfahrzeugsteuer — Tarif Nutzfahrzeuge (§ 9 Abs. 1 Nr. 3/4/5)
*
* Konstanten **und** Tarif-Funktionen für andere Kfz ≤ 3.500 kg (Nr. 3),
* Kfz > 3.500 kg (Nr. 4 Buchst. a/b/c/d — progressive 200-kg-Stufen mit
* Höchstbetrag) und Kraftfahrzeuganhänger (Nr. 5) — aus
* `kraftstg-steuer` herausgelöst. Konstanten und Logik liegen bewusst
* zusammen.
*
* Einstiegsfunktionen `steuerNr3`, `steuerNr4`, `steuerAnhaenger`
* wählt der Orchestrator `kraftstg-steuer` nach Fahrzeugart aus.
*/
@Generated(value = "findsl.Generator")
class KraftstgTarifNutzfahrzeugImpl implements KraftstgTarifNutzfahrzeug {
private final KraftstgTypen kraftstgTypen;
KraftstgTarifNutzfahrzeugImpl(KraftstgTypen kraftstgTypen) {
this.kraftstgTypen = kraftstgTypen;
}
@Quelle("§ 9 Absatz 1 Nummer 3 KraftStG")
@Override
public EuroCent steuerNr3(Ganzzahl g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return EuroCent.von(
NR3_BIS_2000.mul(kraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return EuroCent.von(
NR3_KUM_2000.add(
NR3_2000_3000.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200"))))));
}
return EuroCent.von(
NR3_KUM_3000.add(
NR3_3000_3500.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200"))))));
}
@Quelle("§ 9 Absatz 1 Nummer 4 KraftStG")
@Override
public EuroCent steuerNr4(Ganzzahl g, KraftstgTypen.NfzKlasse klasse) {
if (klasse == KraftstgTypen.NfzKlasse.MindestensS2) {
return EuroCent.von(_nr4a(g).hoechstens(NR4A_MAX));
}
if (klasse == KraftstgTypen.NfzKlasse.S1) {
return EuroCent.von(_nr4b(g).hoechstens(NR4B_MAX));
}
if (klasse == KraftstgTypen.NfzKlasse.G1) {
return EuroCent.von(_nr4c(g).hoechstens(NR4C_MAX));
}
if (klasse == KraftstgTypen.NfzKlasse.NfzSonst) {
return EuroCent.von(_nr4d(g).hoechstens(NR4D_MAX));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* Progressiver Stufentarif Buchst. a (≥ S2), je 200 kg, Spannen
* 2.000…> 12.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. a KraftStG).
*
* @param g Gesamtgewicht (kg).
* @return Tarifbetrag vor Höchstbetragsbegrenzung.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG")
protected FinDslNumber _nr4a(FinDslNumber g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4A_1.mul(kraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4A_KUM_2000.add(
NR4A_2.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4A_KUM_3000.add(
NR4A_3.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4A_KUM_4000.add(
NR4A_4.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4A_KUM_5000.add(
NR4A_5.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4A_KUM_6000.add(
NR4A_6.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4A_KUM_7000.add(
NR4A_7.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4A_KUM_8000.add(
NR4A_8.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4A_KUM_9000.add(
NR4A_9.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4A_KUM_10000.add(
NR4A_10.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4A_KUM_11000.add(
NR4A_11.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4A_KUM_12000.add(
NR4A_12.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Progressiver Stufentarif Buchst. d (Voraussetzungen a/b/c nicht
* erfüllt), je 200 kg, Spannen 2.000…> 15.000 kg
* (§ 9 Abs. 1 Nr. 4 Buchst. d KraftStG).
*
* @param g Gesamtgewicht (kg).
* @return Tarifbetrag vor Höchstbetragsbegrenzung.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG")
protected FinDslNumber _nr4d(FinDslNumber g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4D_1.mul(kraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4D_KUM_2000.add(
NR4D_2.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4D_KUM_3000.add(
NR4D_3.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4D_KUM_4000.add(
NR4D_4.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4D_KUM_5000.add(
NR4D_5.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4D_KUM_6000.add(
NR4D_6.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4D_KUM_7000.add(
NR4D_7.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4D_KUM_8000.add(
NR4D_8.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4D_KUM_9000.add(
NR4D_9.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4D_KUM_10000.add(
NR4D_10.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4D_KUM_11000.add(
NR4D_11.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4D_KUM_12000.add(
NR4D_12.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4D_KUM_13000.add(
NR4D_13.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4D_KUM_14000.add(
NR4D_14.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4D_KUM_15000.add(
NR4D_15.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Progressiver Stufentarif Buchst. b (Schadstoffklasse S 1), je 200 kg,
* Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. b KraftStG).
*
* @param g Gesamtgewicht (kg).
* @return Tarifbetrag vor Höchstbetragsbegrenzung.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG")
protected FinDslNumber _nr4b(FinDslNumber g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4B_1.mul(kraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4B_KUM_2000.add(
NR4B_2.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4B_KUM_3000.add(
NR4B_3.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4B_KUM_4000.add(
NR4B_4.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4B_KUM_5000.add(
NR4B_5.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4B_KUM_6000.add(
NR4B_6.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4B_KUM_7000.add(
NR4B_7.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4B_KUM_8000.add(
NR4B_8.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4B_KUM_9000.add(
NR4B_9.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4B_KUM_10000.add(
NR4B_10.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4B_KUM_11000.add(
NR4B_11.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4B_KUM_12000.add(
NR4B_12.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4B_KUM_13000.add(
NR4B_13.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4B_KUM_14000.add(
NR4B_14.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4B_KUM_15000.add(
NR4B_15.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Progressiver Stufentarif Buchst. c (Geräuschklasse G 1), je 200 kg,
* Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. c KraftStG).
*
* @param g Gesamtgewicht (kg).
* @return Tarifbetrag vor Höchstbetragsbegrenzung.
*/
@Quelle("§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG")
protected FinDslNumber _nr4c(FinDslNumber g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4C_1.mul(kraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4C_KUM_2000.add(
NR4C_2.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4C_KUM_3000.add(
NR4C_3.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4C_KUM_4000.add(
NR4C_4.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4C_KUM_5000.add(
NR4C_5.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4C_KUM_6000.add(
NR4C_6.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4C_KUM_7000.add(
NR4C_7.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4C_KUM_8000.add(
NR4C_8.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4C_KUM_9000.add(
NR4C_9.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4C_KUM_10000.add(
NR4C_10.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4C_KUM_11000.add(
NR4C_11.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4C_KUM_12000.add(
NR4C_12.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4C_KUM_13000.add(
NR4C_13.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4C_KUM_14000.add(
NR4C_14.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4C_KUM_15000.add(
NR4C_15.mul(
kraftstgTypen.einheiten(
Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
@Quelle("§ 9 Absatz 1 Nummer 5 KraftStG")
@Override
public EuroCent steuerAnhaenger(Ganzzahl gesamtgewichtKg) {
return EuroCent.von(
ANH_JE_200KG.mul(
kraftstgTypen.einheiten(Ganzzahl.von(gesamtgewichtKg), Ganzzahl.von(FinDslNumber.ganzzahl("200"))))
.hoechstens(ANH_MAX));
}
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.Ganzzahl;
import org.findsl.runtime.Dezimal;
import org.findsl.runtime.Quelle;
import javax.annotation.processing.Generated;
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Kraftfahrzeugsteuer — gemeinsame Typen und Helfer
*
* Geteiltes Vokabular des KraftStG-Moduls (aus `kraftstg-steuer`
* herausgelöst, damit die Hauptdatei nicht überlang wird): die
* Fahrzeug-Klassifizierungs-Aufzählungen (§§ 8, 9, 3a KraftStG), der
* Eingabe-Datensatz `Fahrzeug`, der Ergebnis-Datensatz
* `KraftfahrzeugsteuerErgebnis` sowie die allgemeinen Berechnungshelfer
* `einheiten` (je angefangene Einheit, § 9 KraftStG) und `begrenze`
* (Höchstbetrags-Kappung, § 9 Abs. 1 KraftStG).
*
* Importiert nichts (Blatt des Modul-Graphen); wird von den Tarif-Dateien
* `kraftstg-tarif-leicht`, `kraftstg-tarif-nutzfahrzeug` und vom Orchestrator
* `kraftstg-steuer` genutzt.
*/
@Generated(value = "findsl.Generator")
class KraftstgTypenImpl implements KraftstgTypen {
@Quelle("§ 9 Absatz 1 KraftStG")
@Override
public Ganzzahl einheiten(Ganzzahl wert, Ganzzahl teiler) {
if (wert.compareValue(FinDslNumber.ganzzahl("0")) <= 0) {
return Ganzzahl.von(FinDslNumber.ganzzahl("0"));
}
return Ganzzahl.von(wert.div(teiler).cast(FinDslNumber.Type.Dezimal).aufrunden(FinDslNumber.Type.Ganzzahl));
}
}import org.findsl.runtime.FinDslNumber;
import org.findsl.runtime.FinDslRuntimeError;
import org.findsl.runtime.EuroCent;
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).
*
* # Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§§ 8, 9 KraftStG)
*
* Bildet die **Jahressteuer** nach dem Kraftfahrzeugsteuergesetz
* (KraftStG 2002, i.d.g.F.) vollständig ab:
*
* - **§ 8 KraftStG** — Bemessungsgrundlage (Hubraum / CO₂ / zulässiges
* Gesamtgewicht je nach Fahrzeugart) → Auswahl des Tarifs.
* - **§ 9 Abs. 1 KraftStG** — Steuersatz, alle Nummern:
* Nr. 1 Krafträder · Nr. 2 a/b/c Personenkraftwagen (Erstzulassung
* bis 30.6.2009 / 1.7.2009–31.12.2020 / ab 1.1.2021) · Nr. 2a
* Wohnmobile · Nr. 2b dreirädrige/leichte vierrädrige Kfz · Nr. 3
* andere Kfz ≤ 3.500 kg · Nr. 4 a/b/c/d Kfz > 3.500 kg · Nr. 5
* Anhänger.
* - **§ 9 Abs. 2 KraftStG** — 50 % Ermäßigung für Elektrofahrzeuge
* (nur Beträge nach Abs. 1 Nr. 3 oder Nr. 4 Buchst. a).
* - **§ 9 Abs. 3 KraftStG** — Tagessteuer für ausländische Fahrzeuge.
* - **§ 9 Abs. 4 KraftStG** — Jahressteuer für rote / Oldtimer-Kennzeichen.
* - **§ 3a KraftStG** — Vergünstigungen für Schwerbehinderte
* (Abs. 1 volle Befreiung · Abs. 2 50 % Ermäßigung).
* - **§ 3d KraftStG** — Steuerbefreiung für Elektrofahrzeuge
* (Erstzulassung 18.5.2011–31.12.2030: 10 Jahre, längstens bis
* 31.12.2035).
* - **§ 9a KraftStG** — Diesel-Zuschlag: ausgelaufen (galt nur
* 1.4.2007–31.3.2011); wird nicht mehr angewandt (dokumentiert).
*
* **Progressive Tarife** (Nr. 2a/3/4) werden je angefangene 200-kg-Stufe
* in der jeweiligen Gewichtsspanne berechnet; die kumulierten
* Stufenbeträge sind als auditierbare Konstanten aus den Stufensätzen
* abgeleitet (keine handsummierten Werte). „Je angefangene Einheit"
* nutzt das Stdlib-Builtin `aufrunden`.
*
* **Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
* Steuerbetragsberechnung):** Verfahren §§ 11/12 (Entrichtung,
* Festsetzung), Mindestdauer/anteilige Berechnung § 5, Ausnahmekatalog
* § 3, widerrechtliche Benutzung. Die Zuordnung der Schadstoff-/
* Geräusch-/Erstzulassungsklasse trifft nach § 2 Abs. 2 Nr. 2 KraftStG
* **verbindlich die Zulassungsbehörde** — sie geht hier als geprüfte
* Eingabe ein (nicht aus EU-Richtlinien hergeleitet).
*/
@Generated(value = "findsl.Generator")
class KraftstImpl implements Kraftst {
private final KraftstgTarifLeicht kraftstgTarifLeicht;
private final KraftstgTarifNutzfahrzeug kraftstgTarifNutzfahrzeug;
KraftstImpl(KraftstgTarifLeicht kraftstgTarifLeicht, KraftstgTarifNutzfahrzeug kraftstgTarifNutzfahrzeug) {
this.kraftstgTarifLeicht = kraftstgTarifLeicht;
this.kraftstgTarifNutzfahrzeug = kraftstgTarifNutzfahrzeug;
}
@Quelle("§ 9 Absatz 1 KraftStG")
@Override
public EuroCent tarifNach9Abs1(KraftstgTypen.Fahrzeug f) {
if (f.art() == KraftstgTypen.Fahrzeugart.Kraftrad) {
return EuroCent.von(kraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(f.hubraumCcm())));
}
if (f.art() == KraftstgTypen.Fahrzeugart.Pkw) {
return EuroCent.von(kraftstgTarifLeicht.steuerPkw(f));
}
if (f.art() == KraftstgTypen.Fahrzeugart.Wohnmobil) {
return EuroCent.von(
kraftstgTarifLeicht.steuerWohnmobil(Ganzzahl.von(f.gesamtgewichtKg()), f.wohnmobilklasse()));
}
if (f.art() == KraftstgTypen.Fahrzeugart.DreiLeichtvier) {
return EuroCent.von(
kraftstgTarifLeicht.steuerDreiLeichtvier(
Ganzzahl.von(f.hubraumCcm()),
f.dreiradGrenzwerte(),
f.antrieb()));
}
if (f.art() == KraftstgTypen.Fahrzeugart.AndereBis3500) {
return EuroCent.von(kraftstgTarifNutzfahrzeug.steuerNr3(Ganzzahl.von(f.gesamtgewichtKg())));
}
if (f.art() == KraftstgTypen.Fahrzeugart.AndereUeber3500) {
return EuroCent.von(kraftstgTarifNutzfahrzeug.steuerNr4(Ganzzahl.von(f.gesamtgewichtKg()), f.nfzklasse()));
}
if (f.art() == KraftstgTypen.Fahrzeugart.Anhaenger) {
return EuroCent.von(kraftstgTarifNutzfahrzeug.steuerAnhaenger(Ganzzahl.von(f.gesamtgewichtKg())));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* 50 %-Ermäßigung für Elektrofahrzeuge nach § 9 Abs. 2 KraftStG — gilt
* ausschließlich für Beträge nach § 9 Abs. 1 Nr. 3 oder Nr. 4 Buchst. a
* (Nutzfahrzeuge). Für alle anderen Fahrzeugarten/Klassen bleibt der
* Betrag unverändert (reine Elektro-PKW sind regelmäßig nach § 3d
* befreit).
*
* @param f Fahrzeug-Eingaben.
* @param betrag Tarifbetrag nach § 9 Abs. 1 KraftStG.
* @return Betrag nach § 9 Abs. 2 KraftStG.
*/
@Quelle("§ 9 Absatz 2 KraftStG")
protected FinDslNumber _anwende9Abs2(KraftstgTypen.Fahrzeug f, FinDslNumber betrag) {
if ((f.antrieb() == KraftstgTypen.Antrieb.Elektro) && (f.art() == KraftstgTypen.Fahrzeugart.AndereBis3500)) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast(FinDslNumber.Type.EuroCent);
}
if (
((f.antrieb() == KraftstgTypen.Antrieb.Elektro) && (f.art() == KraftstgTypen.Fahrzeugart.AndereUeber3500))
&& (f.nfzklasse() == KraftstgTypen.NfzKlasse.MindestensS2)) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast(FinDslNumber.Type.EuroCent);
}
return betrag;
}
/**
* Anwendung der Schwerbehinderten-Vergünstigung (§ 3a KraftStG) und der
* Elektrofahrzeug-Befreiung (§ 3d KraftStG) auf den Steuerbetrag.
* Reihenfolge: § 3d-Befreiung und § 3a Abs. 1-Befreiung setzen die
* Steuer auf 0; § 3a Abs. 2 halbiert.
*
* @param f Fahrzeug-Eingaben.
* @param betrag Betrag nach § 9 Abs. 1/2 KraftStG.
* @return Festgesetzte Jahressteuer (0 bei Befreiung).
*/
@Quelle("§ 3a KraftStG")
protected FinDslNumber _anwendeVerguenstigung(KraftstgTypen.Fahrzeug f, FinDslNumber betrag) {
if (f.elektroBefreitNach3d()) {
return FinDslNumber.dezimal("0.00");
}
if (f.behinderung() == KraftstgTypen.Behinderung.Befreit3aAbs1) {
return FinDslNumber.dezimal("0.00");
}
if (f.behinderung() == KraftstgTypen.Behinderung.Ermaessigt3aAbs2) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast(FinDslNumber.Type.EuroCent);
}
return betrag;
}
@Quelle("§ 9 KraftStG")
@Override
public KraftstgTypen.KraftfahrzeugsteuerErgebnis berechneKraftfahrzeugsteuer(KraftstgTypen.Fahrzeug f) {
final FinDslNumber tarif = tarifNach9Abs1(f).withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"tarif\"");
final FinDslNumber nachE = _anwende9Abs2(f, tarif)
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"nachE\"");
final FinDslNumber jahr = _anwendeVerguenstigung(f, nachE)
.withMoneyAnnotation(FinDslNumber.Type.EuroCent, "var \"jahr\"");
return new KraftstgTypen.KraftfahrzeugsteuerErgebnis(
EuroCent.von(tarif),
EuroCent.von(nachE),
EuroCent.von(jahr));
}
}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 org.findsl.runtime.FinDslNumber;
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 — Kraftfahrzeugsteuer (§§ 8, 9 KraftStG)
*
* `prüfe`-Blöcke zur Datei `kraftstg-steuer`. Alle Sollwerte sind
* unabhängig aus dem Gesetzeswortlaut gerechnet (KraftStG 2002,
* i.d.g.F.): „je angefangene Einheit" = Aufrundung; progressive
* Gewichts-/CO₂-Tarife stufenweise summiert; Höchstbeträge gedeckelt.
*
* Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
*/
@Generated(value = "findsl.Generator")
public final class KraftstTest {
private final KraftstgTypen kraftstgTypen = Factory.createKraftstgTypen();
private final KraftstgTarifLeicht kraftstgTarifLeicht = Factory.createKraftstgTarifLeicht();
private final Kraftst kraftst = Factory.createKraftst();
@Nested
@DisplayName("Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)")
class Pruefe_0 {
@Test
@DisplayName("exakt teilbar")
void testfall_0() {
assertTrue(
kraftstgTypen.einheiten(
Ganzzahl.von(FinDslNumber.ganzzahl("2000")),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))
.equalsValue(FinDslNumber.ganzzahl("10")));
}
@Test
@DisplayName("Teil davon rundet auf")
void testfall_1() {
assertTrue(
kraftstgTypen.einheiten(
Ganzzahl.von(FinDslNumber.ganzzahl("1598")),
Ganzzahl.von(FinDslNumber.ganzzahl("100")))
.equalsValue(FinDslNumber.ganzzahl("16")));
}
@Test
@DisplayName("knapp über Grenze")
void testfall_2() {
assertTrue(
kraftstgTypen.einheiten(
Ganzzahl.von(FinDslNumber.ganzzahl("601")),
Ganzzahl.von(FinDslNumber.ganzzahl("25")))
.equalsValue(FinDslNumber.ganzzahl("25")));
}
@Test
@DisplayName("0 oder negativ → 0")
void testfall_3() {
assertTrue(
kraftstgTypen.einheiten(
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("200")))
.equalsValue(FinDslNumber.ganzzahl("0")));
}
}
@Nested
@DisplayName("§ 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)")
class Pruefe_1 {
@Test
@DisplayName("125 cm³ → 5 × 1,84 = 9,20 €")
void testfall_0() {
assertTrue(
kraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("125")))
.equalsValue(FinDslNumber.dezimal("9.20")));
}
@Test
@DisplayName("600 cm³ → 24 × 1,84 = 44,16 €")
void testfall_1() {
assertTrue(
kraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("600")))
.equalsValue(FinDslNumber.dezimal("44.16")));
}
@Test
@DisplayName("601 cm³ → 25 × 1,84 = 46,00 €")
void testfall_2() {
assertTrue(
kraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("601")))
.equalsValue(FinDslNumber.dezimal("46.00")));
}
}
@Nested
@DisplayName("§ 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)")
class Pruefe_2 {
@Test
@DisplayName("Benziner 1.598 cm³, 120 g/km → 32,00 + 51,00 = 83,00 €")
void testfall_0() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("1598")),
Ganzzahl.von(FinDslNumber.ganzzahl("120")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("83.00")));
}
@Test
@DisplayName("Diesel 1.968 cm³, 150 g/km → 190,00 + 121,50 = 311,50 €")
void testfall_1() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("1968")),
Ganzzahl.von(FinDslNumber.ganzzahl("150")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("311.50")));
}
@Test
@DisplayName("CO₂ genau 95 g/km → kein Aufschlag (nur Hubraum 20,00 €)")
void testfall_2() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("999")),
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("20.00")));
}
@Test
@DisplayName("alle CO₂-Bänder: 1.000 cm³, 200 g/km → 20,00 + 280,00 = 300,00 €")
void testfall_3() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("1000")),
Ganzzahl.von(FinDslNumber.ganzzahl("200")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("300.00")));
}
}
@Nested
@DisplayName("§ 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020")
class Pruefe_3 {
@Test
@DisplayName("Benziner 1.390 cm³, 130 g/km, Freigrenze 110 → 28,00 + 40,00 = 68,00 €")
void testfall_0() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("1390")),
Ganzzahl.von(FinDslNumber.ganzzahl("130")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.JuliBisDez2020,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("110")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("68.00")));
}
}
@Nested
@DisplayName("§ 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)")
class Pruefe_4 {
@Test
@DisplayName("Benziner Stufe ee, 1.600 cm³ → 16 × 25,36 = 405,76 €")
void testfall_0() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("1600")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.BisJuni2009,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("405.76")));
}
@Test
@DisplayName("Diesel Stufe aa, 1.900 cm³ → 19 × 15,44 = 293,36 €")
void testfall_1() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("1900")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.BisJuni2009,
KraftstgTypen.PkwSchadstoffstufe.Aa,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("293.36")));
}
}
@Nested
@DisplayName("§ 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)")
class Pruefe_5 {
@Test
@DisplayName("≥ S4, 3.000 kg → 160,00 + 50,00 = 210,00 €")
void testfall_0() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Wohnmobil,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("3000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.MindestensS4,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("210.00")));
}
@Test
@DisplayName("≥ S4, sehr schwer → Höchstbetrag 800,00 €")
void testfall_1() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Wohnmobil,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("20000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.MindestensS4,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("800.00")));
}
@Test
@DisplayName("S3–S1, 3.000 kg → 240,00 + 50,00 = 290,00 €")
void testfall_2() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Wohnmobil,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("3000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.S1bisS3,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("290.00")));
}
@Test
@DisplayName("sonst, 6.000 kg → 400,00 + 150,00 + 75,00 = 625,00 €")
void testfall_3() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Wohnmobil,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("6000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("625.00")));
}
}
@Nested
@DisplayName("§ 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)")
class Pruefe_6 {
@Test
@DisplayName("2.800 kg → 112,50 + 48,08 = 160,58 €")
void testfall_0() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereBis3500,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("2800")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("160.58")));
}
@Test
@DisplayName("3.500 kg → 112,50 + 60,10 + 38,34 = 210,94 €")
void testfall_1() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereBis3500,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("3500")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("210.94")));
}
}
@Nested
@DisplayName("§ 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)")
class Pruefe_7 {
@Test
@DisplayName("Buchst. a (≥ S2), 5.000 kg → 173,90 €")
void testfall_0() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereUeber3500,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("5000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.MindestensS2,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("173.90")));
}
@Test
@DisplayName("Buchst. a, sehr schwer → Höchstbetrag 556,00 €")
void testfall_1() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereUeber3500,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("20000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.MindestensS2,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("556.00")));
}
@Test
@DisplayName("Buchst. c (G1), 5.000 kg → 260,80 €")
void testfall_2() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereUeber3500,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("5000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.G1,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("260.80")));
}
@Test
@DisplayName("Buchst. d (sonst), 5.000 kg → 304,25 €")
void testfall_3() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereUeber3500,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("5000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("304.25")));
}
@Test
@DisplayName("Buchst. d, sehr schwer → Höchstbetrag 1.681,00 €")
void testfall_4() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereUeber3500,
KraftstgTypen.Antrieb.Selbstzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("40000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("1681.00")));
}
}
@Nested
@DisplayName("§ 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)")
class Pruefe_8 {
@Test
@DisplayName("2.000 kg → 10 × 7,46 = 74,60 €")
void testfall_0() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Anhaenger,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("2000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("74.60")));
}
@Test
@DisplayName("schwer → Höchstbetrag 373,24 €")
void testfall_1() {
final KraftstgTypen.Fahrzeug f = new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Anhaenger,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("20000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false);
assertTrue(kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("373.24")));
}
}
@Nested
@DisplayName("§ 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)")
class Pruefe_9 {
@Test
@DisplayName("E-Kfz Nr. 3, 3.000 kg → 172,60 / 2 = 86,30 €")
void testfall_0() {
final KraftstgTypen.KraftfahrzeugsteuerErgebnis e = kraftst.berechneKraftfahrzeugsteuer(
new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereBis3500,
KraftstgTypen.Antrieb.Elektro,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("3000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false));
assertTrue(e.tarifbetrag().equalsValue(FinDslNumber.dezimal("172.60")));
assertTrue(e.nachElektro().equalsValue(FinDslNumber.dezimal("86.30")));
assertTrue(e.jahressteuer().equalsValue(FinDslNumber.dezimal("86.30")));
}
@Test
@DisplayName("E-Kfz Nr. 4a, 5.000 kg → 173,90 / 2 = 86,95 €")
void testfall_1() {
final KraftstgTypen.KraftfahrzeugsteuerErgebnis e = kraftst.berechneKraftfahrzeugsteuer(
new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereUeber3500,
KraftstgTypen.Antrieb.Elektro,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("5000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.MindestensS2,
KraftstgTypen.Behinderung.Keine,
false));
assertTrue(e.nachElektro().equalsValue(FinDslNumber.dezimal("86.95")));
}
@Test
@DisplayName("E-Kfz Nr. 4d → KEINE 50 %-Ermäßigung (nur a)")
void testfall_2() {
final KraftstgTypen.KraftfahrzeugsteuerErgebnis e = kraftst.berechneKraftfahrzeugsteuer(
new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.AndereUeber3500,
KraftstgTypen.Antrieb.Elektro,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("5000")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false));
assertTrue(e.nachElektro().equalsValue(FinDslNumber.dezimal("304.25")));
}
}
@Nested
@DisplayName("§ 3a / § 3d — Vergünstigungen / Befreiungen")
class Pruefe_10 {
@Test
@DisplayName("§ 3a Abs. 1 (H/Bl/aG) → volle Befreiung 0,00 €")
void testfall_0() {
final KraftstgTypen.KraftfahrzeugsteuerErgebnis e = kraftst.berechneKraftfahrzeugsteuer(
new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Kraftrad,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("125")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Befreit3aAbs1,
false));
assertTrue(e.jahressteuer().equalsValue(FinDslNumber.dezimal("0.00")));
}
@Test
@DisplayName("§ 3a Abs. 2 → 50 % (9,20 / 2 = 4,60 €)")
void testfall_1() {
final KraftstgTypen.KraftfahrzeugsteuerErgebnis e = kraftst.berechneKraftfahrzeugsteuer(
new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Kraftrad,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("125")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Ermaessigt3aAbs2,
false));
assertTrue(e.tarifbetrag().equalsValue(FinDslNumber.dezimal("9.20")));
assertTrue(e.jahressteuer().equalsValue(FinDslNumber.dezimal("4.60")));
}
@Test
@DisplayName("§ 3d E-Befreiung aktiv → 0,00 € (trotz Tarifbetrag)")
void testfall_2() {
final KraftstgTypen.KraftfahrzeugsteuerErgebnis e = kraftst.berechneKraftfahrzeugsteuer(
new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Elektro,
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
true));
assertTrue(e.jahressteuer().equalsValue(FinDslNumber.dezimal("0.00")));
}
}
@Nested
@DisplayName("Gesamtberechnung — vollständiges Ergebnis")
class Pruefe_11 {
@Test
@DisplayName("Benziner-PKW ab 2021, 1.598 cm³, 120 g/km")
void testfall_0() {
final KraftstgTypen.KraftfahrzeugsteuerErgebnis e = kraftst.berechneKraftfahrzeugsteuer(
new KraftstgTypen.Fahrzeug(
KraftstgTypen.Fahrzeugart.Pkw,
KraftstgTypen.Antrieb.Fremdzuendung,
Ganzzahl.von(FinDslNumber.ganzzahl("1598")),
Ganzzahl.von(FinDslNumber.ganzzahl("120")),
Ganzzahl.von(FinDslNumber.ganzzahl("0")),
KraftstgTypen.Erstzulassungsregime.AbJan2021,
KraftstgTypen.PkwSchadstoffstufe.Ee,
Ganzzahl.von(FinDslNumber.ganzzahl("95")),
false,
KraftstgTypen.WohnmobilKlasse.WomoSonst,
KraftstgTypen.NfzKlasse.NfzSonst,
KraftstgTypen.Behinderung.Keine,
false));
assertTrue(e.tarifbetrag().equalsValue(FinDslNumber.dezimal("83.00")));
assertTrue(e.nachElektro().equalsValue(FinDslNumber.dezimal("83.00")));
assertTrue(e.jahressteuer().equalsValue(FinDslNumber.dezimal("83.00")));
}
}
}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 KraftstgTypen KRAFTSTG_TYPEN = new KraftstgTypenImpl();
private static final KraftstgTarifLeicht KRAFTSTG_TARIF_LEICHT = new KraftstgTarifLeichtImpl(KRAFTSTG_TYPEN);
private static final KraftstgTarifNutzfahrzeug KRAFTSTG_TARIF_NUTZFAHRZEUG = new KraftstgTarifNutzfahrzeugImpl(KRAFTSTG_TYPEN);
private static final Kraftst KRAFTST = new KraftstImpl(KRAFTSTG_TARIF_LEICHT, KRAFTSTG_TARIF_NUTZFAHRZEUG);
public static KraftstgTypen createKraftstgTypen() {
return KRAFTSTG_TYPEN;
}
public static KraftstgTarifLeicht createKraftstgTarifLeicht() {
return KRAFTSTG_TARIF_LEICHT;
}
public static KraftstgTarifNutzfahrzeug createKraftstgTarifNutzfahrzeug() {
return KRAFTSTG_TARIF_NUTZFAHRZEUG;
}
public static Kraftst createKraftst() {
return KRAFTST;
}
}import { FinDslNumber, FinDslRuntimeError, EuroCent, Ganzzahl } from './runtime/index.js';
import * as KraftstgTarifLeicht from './KraftstgTarifLeicht.js';
import * as KraftstgTarifNutzfahrzeug from './KraftstgTarifNutzfahrzeug.js';
import * as KraftstgTypen from './KraftstgTypen.js';
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§§ 8, 9 KraftStG)
*
* Bildet die **Jahressteuer** nach dem Kraftfahrzeugsteuergesetz
* (KraftStG 2002, i.d.g.F.) vollständig ab:
*
* - **§ 8 KraftStG** — Bemessungsgrundlage (Hubraum / CO₂ / zulässiges
* Gesamtgewicht je nach Fahrzeugart) → Auswahl des Tarifs.
* - **§ 9 Abs. 1 KraftStG** — Steuersatz, alle Nummern:
* Nr. 1 Krafträder · Nr. 2 a/b/c Personenkraftwagen (Erstzulassung
* bis 30.6.2009 / 1.7.2009–31.12.2020 / ab 1.1.2021) · Nr. 2a
* Wohnmobile · Nr. 2b dreirädrige/leichte vierrädrige Kfz · Nr. 3
* andere Kfz ≤ 3.500 kg · Nr. 4 a/b/c/d Kfz > 3.500 kg · Nr. 5
* Anhänger.
* - **§ 9 Abs. 2 KraftStG** — 50 % Ermäßigung für Elektrofahrzeuge
* (nur Beträge nach Abs. 1 Nr. 3 oder Nr. 4 Buchst. a).
* - **§ 9 Abs. 3 KraftStG** — Tagessteuer für ausländische Fahrzeuge.
* - **§ 9 Abs. 4 KraftStG** — Jahressteuer für rote / Oldtimer-Kennzeichen.
* - **§ 3a KraftStG** — Vergünstigungen für Schwerbehinderte
* (Abs. 1 volle Befreiung · Abs. 2 50 % Ermäßigung).
* - **§ 3d KraftStG** — Steuerbefreiung für Elektrofahrzeuge
* (Erstzulassung 18.5.2011–31.12.2030: 10 Jahre, längstens bis
* 31.12.2035).
* - **§ 9a KraftStG** — Diesel-Zuschlag: ausgelaufen (galt nur
* 1.4.2007–31.3.2011); wird nicht mehr angewandt (dokumentiert).
*
* **Progressive Tarife** (Nr. 2a/3/4) werden je angefangene 200-kg-Stufe
* in der jeweiligen Gewichtsspanne berechnet; die kumulierten
* Stufenbeträge sind als auditierbare Konstanten aus den Stufensätzen
* abgeleitet (keine handsummierten Werte). „Je angefangene Einheit"
* nutzt das Stdlib-Builtin `aufrunden`.
*
* **Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
* Steuerbetragsberechnung):** Verfahren §§ 11/12 (Entrichtung,
* Festsetzung), Mindestdauer/anteilige Berechnung § 5, Ausnahmekatalog
* § 3, widerrechtliche Benutzung. Die Zuordnung der Schadstoff-/
* Geräusch-/Erstzulassungsklasse trifft nach § 2 Abs. 2 Nr. 2 KraftStG
* **verbindlich die Zulassungsbehörde** — sie geht hier als geprüfte
* Eingabe ein (nicht aus EU-Richtlinien hergeleitet).
*/
/**
* Rotes/Oldtimer-Kennzeichen, nur für Krafträder gültig (Jahressteuer).
* @Quelle § 9 Absatz 4 Nummer 1 KraftStG
*/
export const KZ_NUR_KRAD: EuroCent = EuroCent.von(FinDslNumber.dezimal("46.02").withMoneyAnnotation("EuroCent", "Konstante \"KZ_NUR_KRAD\""));
/**
* Rotes/Oldtimer-Kennzeichen, im Übrigen (Jahressteuer).
* @Quelle § 9 Absatz 4 Nummer 2 KraftStG
*/
export const KZ_UEBRIGE: EuroCent = EuroCent.von(FinDslNumber.dezimal("191.73").withMoneyAnnotation("EuroCent", "Konstante \"KZ_UEBRIGE\""));
/**
* Tarifbetrag nach § 9 Abs. 1 KraftStG: wählt anhand der Fahrzeugart
* (§ 8 KraftStG) die einschlägige Nummer.
*
* @param f Fahrzeug-Eingaben.
* @returns Steuer nach § 9 Abs. 1 KraftStG (vor Abs. 2 / § 3a / § 3d).
* @Quelle § 9 Absatz 1 KraftStG
*/
export function tarifNach9Abs1(f: KraftstgTypen.Fahrzeug): EuroCent {
if (f.art === KraftstgTypen.Fahrzeugart.Kraftrad) {
return EuroCent.von(KraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(f.hubraumCcm)));
}
if (f.art === KraftstgTypen.Fahrzeugart.Pkw) {
return EuroCent.von(KraftstgTarifLeicht.steuerPkw(f));
}
if (f.art === KraftstgTypen.Fahrzeugart.Wohnmobil) {
return EuroCent.von(KraftstgTarifLeicht.steuerWohnmobil(Ganzzahl.von(f.gesamtgewichtKg), f.wohnmobilklasse));
}
if (f.art === KraftstgTypen.Fahrzeugart.DreiLeichtvier) {
return EuroCent.von(KraftstgTarifLeicht.steuerDreiLeichtvier(Ganzzahl.von(f.hubraumCcm), f.dreiradGrenzwerte, f.antrieb));
}
if (f.art === KraftstgTypen.Fahrzeugart.AndereBis3500) {
return EuroCent.von(KraftstgTarifNutzfahrzeug.steuerNr3(Ganzzahl.von(f.gesamtgewichtKg)));
}
if (f.art === KraftstgTypen.Fahrzeugart.AndereUeber3500) {
return EuroCent.von(KraftstgTarifNutzfahrzeug.steuerNr4(Ganzzahl.von(f.gesamtgewichtKg), f.nfzklasse));
}
if (f.art === KraftstgTypen.Fahrzeugart.Anhaenger) {
return EuroCent.von(KraftstgTarifNutzfahrzeug.steuerAnhaenger(Ganzzahl.von(f.gesamtgewichtKg)));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* 50 %-Ermäßigung für Elektrofahrzeuge nach § 9 Abs. 2 KraftStG — gilt
* ausschließlich für Beträge nach § 9 Abs. 1 Nr. 3 oder Nr. 4 Buchst. a
* (Nutzfahrzeuge). Für alle anderen Fahrzeugarten/Klassen bleibt der
* Betrag unverändert (reine Elektro-PKW sind regelmäßig nach § 3d
* befreit).
*
* @param f Fahrzeug-Eingaben.
* @param betrag Tarifbetrag nach § 9 Abs. 1 KraftStG.
* @returns Betrag nach § 9 Abs. 2 KraftStG.
* @Quelle § 9 Absatz 2 KraftStG
*/
function _anwende9Abs2(f: KraftstgTypen.Fahrzeug, betrag: FinDslNumber): FinDslNumber {
if ((f.antrieb === KraftstgTypen.Antrieb.Elektro) && (f.art === KraftstgTypen.Fahrzeugart.AndereBis3500)) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast("EuroCent");
}
if (((f.antrieb === KraftstgTypen.Antrieb.Elektro) && (f.art === KraftstgTypen.Fahrzeugart.AndereUeber3500)) && (f.nfzklasse === KraftstgTypen.NfzKlasse.MindestensS2)) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast("EuroCent");
}
return betrag;
}
/**
* Anwendung der Schwerbehinderten-Vergünstigung (§ 3a KraftStG) und der
* Elektrofahrzeug-Befreiung (§ 3d KraftStG) auf den Steuerbetrag.
* Reihenfolge: § 3d-Befreiung und § 3a Abs. 1-Befreiung setzen die
* Steuer auf 0; § 3a Abs. 2 halbiert.
*
* @param f Fahrzeug-Eingaben.
* @param betrag Betrag nach § 9 Abs. 1/2 KraftStG.
* @returns Festgesetzte Jahressteuer (0 bei Befreiung).
* @Quelle § 3a KraftStG
*/
function _anwendeVerguenstigung(f: KraftstgTypen.Fahrzeug, betrag: FinDslNumber): FinDslNumber {
if (f.elektroBefreitNach3d) {
return FinDslNumber.dezimal("0.00");
}
if (f.behinderung === KraftstgTypen.Behinderung.Befreit3aAbs1) {
return FinDslNumber.dezimal("0.00");
}
if (f.behinderung === KraftstgTypen.Behinderung.Ermaessigt3aAbs2) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast("EuroCent");
}
return betrag;
}
/**
* Vollständige Festsetzung der Kraftfahrzeug-Jahressteuer in der
* gesetzlichen Reihenfolge: § 8 (Tarifauswahl) → § 9 Abs. 1
* (Tarifbetrag) → § 9 Abs. 2 (Elektro-Ermäßigung) → § 3a / § 3d
* (Vergünstigung/Befreiung). Liefert alle Zwischengrößen.
*
* @param f Fahrzeug-Eingaben.
* @returns Vollständig dokumentiertes Berechnungsergebnis.
* @Quelle § 9 KraftStG
*/
export function berechneKraftfahrzeugsteuer(f: KraftstgTypen.Fahrzeug): KraftstgTypen.KraftfahrzeugsteuerErgebnis {
const tarif: FinDslNumber = tarifNach9Abs1(f).withMoneyAnnotation("EuroCent", "var \"tarif\"");
const nachE: FinDslNumber = _anwende9Abs2(f, tarif).withMoneyAnnotation("EuroCent", "var \"nachE\"");
const jahr: FinDslNumber = _anwendeVerguenstigung(f, nachE).withMoneyAnnotation("EuroCent", "var \"jahr\"");
return new KraftstgTypen.KraftfahrzeugsteuerErgebnis(EuroCent.von(tarif), EuroCent.von(nachE), EuroCent.von(jahr));
}import { FinDslNumber, FinDslRuntimeError, EuroCent, Ganzzahl } from './runtime/index.js';
import * as KraftstgTypen from './KraftstgTypen.js';
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Kraftfahrzeugsteuer — Tarif leichte Fahrzeuge (§ 9 Abs. 1 Nr. 1/2/2a/2b)
*
* Konstanten **und** Tarif-Funktionen für Krafträder (Nr. 1),
* Personenkraftwagen (Nr. 2 Buchst. a/b/c), Wohnmobile (Nr. 2a) und
* dreirädrige/leichte vierrädrige Kfz (Nr. 2b) — aus `kraftstg-steuer`
* herausgelöst. Konstanten und Logik liegen bewusst zusammen (ein
* Rechtsbereich = eine Datei, minimale modulübergreifende Importe).
*
* Einstiegsfunktionen `steuerKraftrad`, `steuerPkw`, `steuerWohnmobil`,
* `steuerDreiLeichtvier` wählt der Orchestrator `kraftstg-steuer`
* nach Fahrzeugart (§ 8 KraftStG) aus.
*/
/**
* Kraftrad: je angefangene 25 cm³ Hubraum 1,84 € (§ 9 Abs. 1 Nr. 1 KraftStG).
* @Quelle § 9 Absatz 1 Nummer 1 KraftStG
*/
export const KRAD_JE_25CCM: EuroCent = EuroCent.von(FinDslNumber.dezimal("1.84").withMoneyAnnotation("EuroCent", "Konstante \"KRAD_JE_25CCM\""));
/**
* PKW Nr. 2c (Erstzulassung ab 1.1.2021): Sockel je 100 cm³, Fremdzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_HUBRAUM_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("2.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_HUBRAUM_OTTO\""));
/**
* PKW Nr. 2c: Sockel je 100 cm³, Selbstzündung (Diesel).
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_HUBRAUM_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("9.50").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_HUBRAUM_DIESEL\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 95 bis 115 g/km.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_CO2_95_115: EuroCent = EuroCent.von(FinDslNumber.dezimal("2.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_95_115\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 115 bis 135 g/km.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_CO2_115_135: EuroCent = EuroCent.von(FinDslNumber.dezimal("2.20").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_115_135\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 135 bis 155 g/km.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_CO2_135_155: EuroCent = EuroCent.von(FinDslNumber.dezimal("2.50").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_135_155\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 155 bis 175 g/km.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_CO2_155_175: EuroCent = EuroCent.von(FinDslNumber.dezimal("2.90").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_155_175\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 175 bis 195 g/km.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_CO2_175_195: EuroCent = EuroCent.von(FinDslNumber.dezimal("3.40").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_175_195\""));
/**
* PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 195 g/km.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_CO2_UEBER_195: EuroCent = EuroCent.von(FinDslNumber.dezimal("4.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_UEBER_195\""));
/**
* CO₂-Freibetrag: erst Emissionen ÜBER 95 g/km sind aufschlagspflichtig (Nr. 2c).
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
export const PKW_C_CO2_FREI: Ganzzahl = Ganzzahl.von(FinDslNumber.ganzzahl("95"));
/**
* PKW Nr. 2b (Erstzulassung 1.7.2009–31.12.2020): Sockel je 100 cm³ Fremdzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG
*/
export const PKW_B_HUBRAUM_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("2.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_B_HUBRAUM_OTTO\""));
/**
* PKW Nr. 2b: Sockel je 100 cm³ Selbstzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG
*/
export const PKW_B_HUBRAUM_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("9.50").withMoneyAnnotation("EuroCent", "Konstante \"PKW_B_HUBRAUM_DIESEL\""));
/**
* PKW Nr. 2b: CO₂-Aufschlag je g/km über der (datumsabhängigen) Freigrenze.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG
*/
export const PKW_B_CO2_JE_GRAMM: EuroCent = EuroCent.von(FinDslNumber.dezimal("2.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_B_CO2_JE_GRAMM\""));
/**
* PKW Nr. 2a (Erstzulassung bis 30.6.2009), je 100 cm³, Stufe aa — Fremdzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG
*/
export const PKW_A_AA_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("6.75").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_AA_OTTO\""));
/**
* Stufe aa — Selbstzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG
*/
export const PKW_A_AA_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("15.44").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_AA_DIESEL\""));
/**
* Stufe bb — Fremdzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG
*/
export const PKW_A_BB_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("7.36").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_BB_OTTO\""));
/**
* Stufe bb — Selbstzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG
*/
export const PKW_A_BB_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("16.05").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_BB_DIESEL\""));
/**
* Stufe cc — Fremdzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG
*/
export const PKW_A_CC_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("15.13").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_CC_OTTO\""));
/**
* Stufe cc — Selbstzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG
*/
export const PKW_A_CC_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("27.35").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_CC_DIESEL\""));
/**
* Stufe dd — Fremdzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG
*/
export const PKW_A_DD_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("21.07").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_DD_OTTO\""));
/**
* Stufe dd — Selbstzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG
*/
export const PKW_A_DD_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("33.29").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_DD_DIESEL\""));
/**
* Stufe ee (höchste, keine Voraussetzungen erfüllt) — Fremdzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG
*/
export const PKW_A_EE_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("25.36").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_EE_OTTO\""));
/**
* Stufe ee — Selbstzündung.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG
*/
export const PKW_A_EE_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("37.58").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_EE_DIESEL\""));
/**
* Dreirad/leichtes Vierrad, Grenzwerte eingehalten, Fremdzündung (je 100 cm³).
* @Quelle § 9 Absatz 1 Nummer 2b Buchstabe a KraftStG
*/
export const DREIRAD_GW_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("21.07").withMoneyAnnotation("EuroCent", "Konstante \"DREIRAD_GW_OTTO\""));
/**
* Grenzwerte eingehalten, Selbstzündung.
* @Quelle § 9 Absatz 1 Nummer 2b Buchstabe a KraftStG
*/
export const DREIRAD_GW_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("33.29").withMoneyAnnotation("EuroCent", "Konstante \"DREIRAD_GW_DIESEL\""));
/**
* Grenzwerte nicht eingehalten, Fremdzündung.
* @Quelle § 9 Absatz 1 Nummer 2b Buchstabe b KraftStG
*/
export const DREIRAD_SONST_OTTO: EuroCent = EuroCent.von(FinDslNumber.dezimal("25.36").withMoneyAnnotation("EuroCent", "Konstante \"DREIRAD_SONST_OTTO\""));
/**
* Grenzwerte nicht eingehalten, Selbstzündung.
* @Quelle § 9 Absatz 1 Nummer 2b Buchstabe b KraftStG
*/
export const DREIRAD_SONST_DIESEL: EuroCent = EuroCent.von(FinDslNumber.dezimal("37.58").withMoneyAnnotation("EuroCent", "Konstante \"DREIRAD_SONST_DIESEL\""));
/**
* Wohnmobil ≥ Schadstoffklasse S4: bis 2.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG
*/
export const WOMO_S4_BIS_2000: EuroCent = EuroCent.von(FinDslNumber.dezimal("16.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S4_BIS_2000\""));
/**
* Wohnmobil ≥ S4: über 2.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG
*/
export const WOMO_S4_UEBER_2000: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S4_UEBER_2000\""));
/**
* Wohnmobil ≥ S4: Höchstbetrag.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG
*/
export const WOMO_S4_MAX: EuroCent = EuroCent.von(FinDslNumber.dezimal("800.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S4_MAX\""));
/**
* Wohnmobil S3/S2/S1: bis 2.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG
*/
export const WOMO_S1_BIS_2000: EuroCent = EuroCent.von(FinDslNumber.dezimal("24.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S1_BIS_2000\""));
/**
* Wohnmobil S3/S2/S1: über 2.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG
*/
export const WOMO_S1_UEBER_2000: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S1_UEBER_2000\""));
/**
* Wohnmobil S3/S2/S1: Höchstbetrag.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG
*/
export const WOMO_S1_MAX: EuroCent = EuroCent.von(FinDslNumber.dezimal("1000.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S1_MAX\""));
/**
* Wohnmobil sonst: bis 2.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG
*/
export const WOMO_SONST_BIS_2000: EuroCent = EuroCent.von(FinDslNumber.dezimal("40.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_SONST_BIS_2000\""));
/**
* Wohnmobil sonst: über 2.000 bis 5.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG
*/
export const WOMO_SONST_2000_5000: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_SONST_2000_5000\""));
/**
* Wohnmobil sonst: über 5.000 bis 12.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG
*/
export const WOMO_SONST_5000_12000: EuroCent = EuroCent.von(FinDslNumber.dezimal("15.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_SONST_5000_12000\""));
/**
* Wohnmobil sonst: über 12.000 kg je 200 kg (kein Höchstbetrag).
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG
*/
export const WOMO_SONST_UEBER_12000: EuroCent = EuroCent.von(FinDslNumber.dezimal("25.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_SONST_UEBER_12000\""));
/**
* Jahressteuer für Krafträder: je angefangene 25 cm³ Hubraum 1,84 €
* (§ 9 Abs. 1 Nr. 1 KraftStG).
*
* @param hubraumCcm Hubraum in cm³.
* @returns Jahressteuer des Kraftrads.
* @Quelle § 9 Absatz 1 Nummer 1 KraftStG
*/
export function steuerKraftrad(hubraumCcm: Ganzzahl): EuroCent {
return EuroCent.von(KRAD_JE_25CCM.mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("25")))));
}
/**
* Progressiver CO₂-Aufschlag für PKW nach § 9 Abs. 1 Nr. 2 Buchst. c
* KraftStG: für jedes Gramm CO₂/km über 95 g/km, gestaffelt nach dem
* Emissionswert (marginal je Spanne).
*
* @param co2 CO₂-Emission in g/km.
* @returns CO₂-Aufschlag (0, wenn ≤ 95 g/km).
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
function _co2AufschlagNr2c(co2: FinDslNumber): FinDslNumber {
if (co2.compareValue(FinDslNumber.ganzzahl("95")) <= 0) {
return FinDslNumber.dezimal("0.00");
}
if (co2.compareValue(FinDslNumber.ganzzahl("115")) <= 0) {
return PKW_C_CO2_95_115.mul(co2.sub(FinDslNumber.ganzzahl("95")));
}
if (co2.compareValue(FinDslNumber.ganzzahl("135")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(co2.sub(FinDslNumber.ganzzahl("115"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("155")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_135_155.mul(co2.sub(FinDslNumber.ganzzahl("135"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("175")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_155_175.mul(co2.sub(FinDslNumber.ganzzahl("155"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("195")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_155_175.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_175_195.mul(co2.sub(FinDslNumber.ganzzahl("175"))));
}
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_155_175.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_175_195.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_UEBER_195.mul(co2.sub(FinDslNumber.ganzzahl("195"))));
}
/**
* PKW-Hubraum-Sockel nach Antrieb (§ 9 Abs. 1 Nr. 2 Buchst. b/c
* KraftStG): je angefangene 100 cm³ 2,00 € (Fremdzündung) bzw. 9,50 €
* (Selbstzündung).
*
* @param hubraumCcm Hubraum in cm³.
* @param antrieb Antriebsart.
* @returns Hubraum-Sockelbetrag.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
function _pkwHubraumSockel(hubraumCcm: FinDslNumber, antrieb: KraftstgTypen.Antrieb): FinDslNumber {
if (antrieb === KraftstgTypen.Antrieb.Selbstzuendung) {
return PKW_C_HUBRAUM_DIESEL.mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
if ((antrieb === KraftstgTypen.Antrieb.Fremdzuendung) || (antrieb === KraftstgTypen.Antrieb.Elektro)) {
return PKW_C_HUBRAUM_OTTO.mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* PKW Nr. 2 Buchst. c (Erstzulassung ab 1.1.2021): Hubraum-Sockel
* zuzüglich progressivem CO₂-Aufschlag (§ 9 Abs. 1 Nr. 2 Buchst. c
* KraftStG).
*
* @param hubraumCcm Hubraum in cm³.
* @param co2 CO₂-Emission in g/km.
* @param antrieb Antriebsart.
* @returns Jahressteuer des PKW (Buchst. c).
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG
*/
function _steuerPkwC(hubraumCcm: FinDslNumber, co2: FinDslNumber, antrieb: KraftstgTypen.Antrieb): FinDslNumber {
return _pkwHubraumSockel(hubraumCcm, antrieb).add(_co2AufschlagNr2c(co2));
}
/**
* PKW Nr. 2 Buchst. b (Erstzulassung 1.7.2009–31.12.2020):
* Hubraum-Sockel zuzüglich 2,00 € je g/km CO₂ über der
* datumsabhängigen Freigrenze (120 / 110 / 95 g/km).
*
* @param hubraumCcm Hubraum in cm³.
* @param co2 CO₂-Emission in g/km.
* @param freigrenze maßgebliche CO₂-Freigrenze (g/km).
* @param antrieb Antriebsart.
* @returns Jahressteuer des PKW (Buchst. b).
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG
*/
function _steuerPkwB(hubraumCcm: FinDslNumber, co2: FinDslNumber, freigrenze: FinDslNumber, antrieb: KraftstgTypen.Antrieb): FinDslNumber {
if (co2.compareValue(freigrenze) <= 0) {
return _pkwHubraumSockel(hubraumCcm, antrieb).add(FinDslNumber.dezimal("0.00"));
}
return _pkwHubraumSockel(hubraumCcm, antrieb).add(PKW_B_CO2_JE_GRAMM.mul(co2.sub(freigrenze)));
}
/**
* PKW Nr. 2 Buchst. a (Erstzulassung bis 30.6.2009): je angefangene
* 100 cm³ ein nach Schadstoffstufe (aa–ee) und Antrieb gestaffelter
* Satz (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG).
*
* @param hubraumCcm Hubraum in cm³.
* @param stufe Schadstoffstufe aa–ee.
* @param antrieb Antriebsart.
* @returns Jahressteuer des PKW (Buchst. a).
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a KraftStG
*/
function _steuerPkwA(hubraumCcm: FinDslNumber, stufe: KraftstgTypen.PkwSchadstoffstufe, antrieb: KraftstgTypen.Antrieb): FinDslNumber {
return _satzPkwA(stufe, antrieb).mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
/**
* Stufensatz je 100 cm³ für PKW Nr. 2 Buchst. a nach Schadstoffstufe
* und Antrieb. (Elektro wird wie Fremdzündung behandelt — relevant
* wird der Wert für reine E-PKW ohnehin nicht, da diese nach § 3d
* befreit sind.)
*
* @param stufe Schadstoffstufe aa–ee.
* @param antrieb Antriebsart.
* @returns Satz je angefangene 100 cm³.
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a KraftStG
*/
function _satzPkwA(stufe: KraftstgTypen.PkwSchadstoffstufe, antrieb: KraftstgTypen.Antrieb): FinDslNumber {
if (antrieb === KraftstgTypen.Antrieb.Selbstzuendung) {
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Aa) {
return PKW_A_AA_DIESEL;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Bb) {
return PKW_A_BB_DIESEL;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Cc) {
return PKW_A_CC_DIESEL;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Dd) {
return PKW_A_DD_DIESEL;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Ee) {
return PKW_A_EE_DIESEL;
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
if ((antrieb === KraftstgTypen.Antrieb.Fremdzuendung) || (antrieb === KraftstgTypen.Antrieb.Elektro)) {
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Aa) {
return PKW_A_AA_OTTO;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Bb) {
return PKW_A_BB_OTTO;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Cc) {
return PKW_A_CC_OTTO;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Dd) {
return PKW_A_DD_OTTO;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Ee) {
return PKW_A_EE_OTTO;
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* Personenkraftwagen nach § 9 Abs. 1 Nr. 2 KraftStG: wählt anhand des
* Erstzulassungs-Regimes Buchst. a, b oder c.
*
* @param f Fahrzeug-Eingaben.
* @returns Jahressteuer des PKW.
* @Quelle § 9 Absatz 1 Nummer 2 KraftStG
*/
export function steuerPkw(f: KraftstgTypen.Fahrzeug): EuroCent {
if (f.erstzulassung === KraftstgTypen.Erstzulassungsregime.BisJuni2009) {
return EuroCent.von(_steuerPkwA(f.hubraumCcm, f.pkwStufe, f.antrieb));
}
if (f.erstzulassung === KraftstgTypen.Erstzulassungsregime.JuliBisDez2020) {
return EuroCent.von(_steuerPkwB(f.hubraumCcm, f.co2GrammProKm, f.co2FreigrenzeNr2b, f.antrieb));
}
if (f.erstzulassung === KraftstgTypen.Erstzulassungsregime.AbJan2021) {
return EuroCent.von(_steuerPkwC(f.hubraumCcm, f.co2GrammProKm, f.antrieb));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* Dreirädrige und leichte vierrädrige Kraftfahrzeuge
* (§ 9 Abs. 1 Nr. 2b KraftStG): je angefangene 100 cm³ ein nach
* Grenzwert-Einhaltung und Antrieb gestaffelter Satz.
*
* @param hubraumCcm Hubraum in cm³.
* @param grenzwerte Grenzwerte (RL 97/24/EG Zeile A 2003) eingehalten?
* @param antrieb Antriebsart.
* @returns Jahressteuer des Fahrzeugs.
* @Quelle § 9 Absatz 1 Nummer 2b KraftStG
*/
export function steuerDreiLeichtvier(hubraumCcm: Ganzzahl, grenzwerte: boolean, antrieb: KraftstgTypen.Antrieb): EuroCent {
return EuroCent.von(_satzDreiLeichtvier(grenzwerte, antrieb).mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100")))));
}
/**
* Stufensatz je 100 cm³ für § 9 Abs. 1 Nr. 2b KraftStG.
*
* @param grenzwerte Grenzwerte eingehalten?
* @param antrieb Antriebsart.
* @returns Satz je angefangene 100 cm³.
* @Quelle § 9 Absatz 1 Nummer 2b KraftStG
*/
function _satzDreiLeichtvier(grenzwerte: boolean, antrieb: KraftstgTypen.Antrieb): FinDslNumber {
if ((grenzwerte) && (antrieb === KraftstgTypen.Antrieb.Selbstzuendung)) {
return DREIRAD_GW_DIESEL;
}
if (grenzwerte) {
return DREIRAD_GW_OTTO;
}
if (antrieb === KraftstgTypen.Antrieb.Selbstzuendung) {
return DREIRAD_SONST_DIESEL;
}
return DREIRAD_SONST_OTTO;
}
/**
* Wohnmobil nach § 9 Abs. 1 Nr. 2a KraftStG: je angefangene 200 kg
* Gesamtgewicht, progressiv nach Gewichtsspanne und Schadstoffklasse,
* mit Höchstbetrag (Buchst. a/b) bzw. ohne (Buchst. c).
*
* @param gesamtgewichtKg verkehrsrechtlich zulässiges Gesamtgewicht (kg).
* @param klasse Schadstoffklasse des Wohnmobils.
* @returns Jahressteuer des Wohnmobils.
* @Quelle § 9 Absatz 1 Nummer 2a KraftStG
*/
export function steuerWohnmobil(gesamtgewichtKg: Ganzzahl, klasse: KraftstgTypen.WohnmobilKlasse): EuroCent {
if (klasse === KraftstgTypen.WohnmobilKlasse.MindestensS4) {
return EuroCent.von(_womoZweiStufen(gesamtgewichtKg, WOMO_S4_BIS_2000, WOMO_S4_UEBER_2000).hoechstens(WOMO_S4_MAX));
}
if (klasse === KraftstgTypen.WohnmobilKlasse.S1bisS3) {
return EuroCent.von(_womoZweiStufen(gesamtgewichtKg, WOMO_S1_BIS_2000, WOMO_S1_UEBER_2000).hoechstens(WOMO_S1_MAX));
}
if (klasse === KraftstgTypen.WohnmobilKlasse.WomoSonst) {
return EuroCent.von(_steuerWohnmobilSonst(gesamtgewichtKg));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* Zwei-Stufen-Wohnmobiltarif (Buchst. a/b): bis 2.000 kg `satzBis`,
* darüber `satzUeber`, je angefangene 200 kg.
*
* @param g Gesamtgewicht (kg).
* @param satzBis Satz je 200 kg bis 2.000 kg.
* @param satzUeber Satz je 200 kg über 2.000 kg.
* @returns Tarifbetrag vor Höchstbetragsbegrenzung.
* @Quelle § 9 Absatz 1 Nummer 2a KraftStG
*/
function _womoZweiStufen(g: FinDslNumber, satzBis: FinDslNumber, satzUeber: FinDslNumber): FinDslNumber {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return satzBis.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
return satzBis.mul(FinDslNumber.ganzzahl("10")).add(satzUeber.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Wohnmobil Buchst. c (Voraussetzungen a/b nicht erfüllt, kein
* Höchstbetrag): bis 2.000 kg 40 €, über 2.000–5.000 kg 10 €, über
* 5.000–12.000 kg 15 €, über 12.000 kg 25 € — je angefangene 200 kg.
*
* @param g Gesamtgewicht (kg).
* @returns Jahressteuer des Wohnmobils (Buchst. c).
* @Quelle § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG
*/
function _steuerWohnmobilSonst(g: FinDslNumber): FinDslNumber {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10")).add(WOMO_SONST_2000_5000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10")).add(WOMO_SONST_2000_5000.mul(FinDslNumber.ganzzahl("15"))).add(WOMO_SONST_5000_12000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10")).add(WOMO_SONST_2000_5000.mul(FinDslNumber.ganzzahl("15"))).add(WOMO_SONST_5000_12000.mul(FinDslNumber.ganzzahl("35"))).add(WOMO_SONST_UEBER_12000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}import { FinDslNumber, FinDslRuntimeError, EuroCent, Ganzzahl } from './runtime/index.js';
import * as KraftstgTypen from './KraftstgTypen.js';
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Kraftfahrzeugsteuer — Tarif Nutzfahrzeuge (§ 9 Abs. 1 Nr. 3/4/5)
*
* Konstanten **und** Tarif-Funktionen für andere Kfz ≤ 3.500 kg (Nr. 3),
* Kfz > 3.500 kg (Nr. 4 Buchst. a/b/c/d — progressive 200-kg-Stufen mit
* Höchstbetrag) und Kraftfahrzeuganhänger (Nr. 5) — aus
* `kraftstg-steuer` herausgelöst. Konstanten und Logik liegen bewusst
* zusammen.
*
* Einstiegsfunktionen `steuerNr3`, `steuerNr4`, `steuerAnhaenger`
* wählt der Orchestrator `kraftstg-steuer` nach Fahrzeugart aus.
*/
/**
* Nr. 3: bis 2.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 3 KraftStG
*/
export const NR3_BIS_2000: EuroCent = EuroCent.von(FinDslNumber.dezimal("11.25").withMoneyAnnotation("EuroCent", "Konstante \"NR3_BIS_2000\""));
/**
* Nr. 3: über 2.000 bis 3.000 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 3 KraftStG
*/
export const NR3_2000_3000: EuroCent = EuroCent.von(FinDslNumber.dezimal("12.02").withMoneyAnnotation("EuroCent", "Konstante \"NR3_2000_3000\""));
/**
* Nr. 3: über 3.000 bis 3.500 kg je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 3 KraftStG
*/
export const NR3_3000_3500: EuroCent = EuroCent.von(FinDslNumber.dezimal("12.78").withMoneyAnnotation("EuroCent", "Konstante \"NR3_3000_3500\""));
/**
* Nr. 3: kumulierter Betrag bei genau 2.000 kg (10 Stufen × Satz).
* @Quelle § 9 Absatz 1 Nummer 3 KraftStG
*/
export const NR3_KUM_2000: EuroCent = EuroCent.von(NR3_BIS_2000.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR3_KUM_2000\""));
/**
* Nr. 3: kumulierter Betrag bei genau 3.000 kg.
* @Quelle § 9 Absatz 1 Nummer 3 KraftStG
*/
export const NR3_KUM_3000: EuroCent = EuroCent.von(NR3_KUM_2000.add(NR3_2000_3000.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR3_KUM_3000\""));
/**
* Nr. 4a (≥ S2): Stufensätze je 200 kg, Gewichtsspannen 2.000…> 12.000 kg.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_1: EuroCent = EuroCent.von(FinDslNumber.dezimal("6.42").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_1\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_2: EuroCent = EuroCent.von(FinDslNumber.dezimal("6.88").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_2\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_3: EuroCent = EuroCent.von(FinDslNumber.dezimal("7.31").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_3\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_4: EuroCent = EuroCent.von(FinDslNumber.dezimal("7.75").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_4\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_5: EuroCent = EuroCent.von(FinDslNumber.dezimal("8.18").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_5\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_6: EuroCent = EuroCent.von(FinDslNumber.dezimal("8.62").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_6\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_7: EuroCent = EuroCent.von(FinDslNumber.dezimal("9.36").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_7\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_8: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.07").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_8\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_9: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.97").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_9\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_10: EuroCent = EuroCent.von(FinDslNumber.dezimal("11.84").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_10\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_11: EuroCent = EuroCent.von(FinDslNumber.dezimal("13.01").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_11\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_12: EuroCent = EuroCent.von(FinDslNumber.dezimal("14.32").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_12\""));
/**
* Nr. 4a: Höchstbetrag.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_MAX: EuroCent = EuroCent.von(FinDslNumber.dezimal("556.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_MAX\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_2000: EuroCent = EuroCent.von(NR4A_1.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_2000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_3000: EuroCent = EuroCent.von(NR4A_KUM_2000.add(NR4A_2.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_3000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_4000: EuroCent = EuroCent.von(NR4A_KUM_3000.add(NR4A_3.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_4000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_5000: EuroCent = EuroCent.von(NR4A_KUM_4000.add(NR4A_4.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_5000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_6000: EuroCent = EuroCent.von(NR4A_KUM_5000.add(NR4A_5.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_6000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_7000: EuroCent = EuroCent.von(NR4A_KUM_6000.add(NR4A_6.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_7000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_8000: EuroCent = EuroCent.von(NR4A_KUM_7000.add(NR4A_7.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_8000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_9000: EuroCent = EuroCent.von(NR4A_KUM_8000.add(NR4A_8.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_9000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_10000: EuroCent = EuroCent.von(NR4A_KUM_9000.add(NR4A_9.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_10000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_11000: EuroCent = EuroCent.von(NR4A_KUM_10000.add(NR4A_10.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_11000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
export const NR4A_KUM_12000: EuroCent = EuroCent.von(NR4A_KUM_11000.add(NR4A_11.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_12000\""));
/**
* Nr. 4d (Voraussetzungen a/b/c nicht erfüllt): Stufensätze je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_1: EuroCent = EuroCent.von(FinDslNumber.dezimal("11.25").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_1\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_2: EuroCent = EuroCent.von(FinDslNumber.dezimal("12.02").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_2\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_3: EuroCent = EuroCent.von(FinDslNumber.dezimal("12.78").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_3\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_4: EuroCent = EuroCent.von(FinDslNumber.dezimal("13.55").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_4\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_5: EuroCent = EuroCent.von(FinDslNumber.dezimal("14.32").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_5\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_6: EuroCent = EuroCent.von(FinDslNumber.dezimal("15.08").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_6\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_7: EuroCent = EuroCent.von(FinDslNumber.dezimal("16.36").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_7\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_8: EuroCent = EuroCent.von(FinDslNumber.dezimal("17.64").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_8\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_9: EuroCent = EuroCent.von(FinDslNumber.dezimal("19.17").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_9\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_10: EuroCent = EuroCent.von(FinDslNumber.dezimal("20.71").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_10\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_11: EuroCent = EuroCent.von(FinDslNumber.dezimal("22.75").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_11\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_12: EuroCent = EuroCent.von(FinDslNumber.dezimal("25.05").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_12\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_13: EuroCent = EuroCent.von(FinDslNumber.dezimal("27.61").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_13\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_14: EuroCent = EuroCent.von(FinDslNumber.dezimal("45.50").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_14\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_15: EuroCent = EuroCent.von(FinDslNumber.dezimal("63.40").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_15\""));
/**
* Nr. 4d: Höchstbetrag.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_MAX: EuroCent = EuroCent.von(FinDslNumber.dezimal("1681.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_MAX\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_2000: EuroCent = EuroCent.von(NR4D_1.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_2000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_3000: EuroCent = EuroCent.von(NR4D_KUM_2000.add(NR4D_2.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_3000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_4000: EuroCent = EuroCent.von(NR4D_KUM_3000.add(NR4D_3.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_4000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_5000: EuroCent = EuroCent.von(NR4D_KUM_4000.add(NR4D_4.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_5000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_6000: EuroCent = EuroCent.von(NR4D_KUM_5000.add(NR4D_5.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_6000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_7000: EuroCent = EuroCent.von(NR4D_KUM_6000.add(NR4D_6.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_7000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_8000: EuroCent = EuroCent.von(NR4D_KUM_7000.add(NR4D_7.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_8000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_9000: EuroCent = EuroCent.von(NR4D_KUM_8000.add(NR4D_8.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_9000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_10000: EuroCent = EuroCent.von(NR4D_KUM_9000.add(NR4D_9.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_10000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_11000: EuroCent = EuroCent.von(NR4D_KUM_10000.add(NR4D_10.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_11000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_12000: EuroCent = EuroCent.von(NR4D_KUM_11000.add(NR4D_11.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_12000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_13000: EuroCent = EuroCent.von(NR4D_KUM_12000.add(NR4D_12.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_13000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_14000: EuroCent = EuroCent.von(NR4D_KUM_13000.add(NR4D_13.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_14000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
export const NR4D_KUM_15000: EuroCent = EuroCent.von(NR4D_KUM_14000.add(NR4D_14.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_15000\""));
/**
* Nr. 4b (Schadstoffklasse S1): Stufensätze je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_1: EuroCent = EuroCent.von(FinDslNumber.dezimal("6.42").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_1\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_2: EuroCent = EuroCent.von(FinDslNumber.dezimal("6.88").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_2\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_3: EuroCent = EuroCent.von(FinDslNumber.dezimal("7.31").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_3\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_4: EuroCent = EuroCent.von(FinDslNumber.dezimal("7.75").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_4\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_5: EuroCent = EuroCent.von(FinDslNumber.dezimal("8.18").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_5\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_6: EuroCent = EuroCent.von(FinDslNumber.dezimal("8.62").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_6\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_7: EuroCent = EuroCent.von(FinDslNumber.dezimal("9.36").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_7\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_8: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.07").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_8\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_9: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.97").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_9\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_10: EuroCent = EuroCent.von(FinDslNumber.dezimal("11.84").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_10\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_11: EuroCent = EuroCent.von(FinDslNumber.dezimal("13.01").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_11\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_12: EuroCent = EuroCent.von(FinDslNumber.dezimal("14.32").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_12\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_13: EuroCent = EuroCent.von(FinDslNumber.dezimal("15.77").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_13\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_14: EuroCent = EuroCent.von(FinDslNumber.dezimal("26.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_14\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_15: EuroCent = EuroCent.von(FinDslNumber.dezimal("36.23").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_15\""));
/**
* Nr. 4b: Höchstbetrag.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_MAX: EuroCent = EuroCent.von(FinDslNumber.dezimal("914.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_MAX\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_2000: EuroCent = EuroCent.von(NR4B_1.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_2000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_3000: EuroCent = EuroCent.von(NR4B_KUM_2000.add(NR4B_2.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_3000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_4000: EuroCent = EuroCent.von(NR4B_KUM_3000.add(NR4B_3.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_4000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_5000: EuroCent = EuroCent.von(NR4B_KUM_4000.add(NR4B_4.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_5000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_6000: EuroCent = EuroCent.von(NR4B_KUM_5000.add(NR4B_5.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_6000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_7000: EuroCent = EuroCent.von(NR4B_KUM_6000.add(NR4B_6.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_7000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_8000: EuroCent = EuroCent.von(NR4B_KUM_7000.add(NR4B_7.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_8000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_9000: EuroCent = EuroCent.von(NR4B_KUM_8000.add(NR4B_8.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_9000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_10000: EuroCent = EuroCent.von(NR4B_KUM_9000.add(NR4B_9.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_10000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_11000: EuroCent = EuroCent.von(NR4B_KUM_10000.add(NR4B_10.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_11000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_12000: EuroCent = EuroCent.von(NR4B_KUM_11000.add(NR4B_11.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_12000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_13000: EuroCent = EuroCent.von(NR4B_KUM_12000.add(NR4B_12.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_13000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_14000: EuroCent = EuroCent.von(NR4B_KUM_13000.add(NR4B_13.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_14000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
export const NR4B_KUM_15000: EuroCent = EuroCent.von(NR4B_KUM_14000.add(NR4B_14.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_15000\""));
/**
* Nr. 4c (Geräuschklasse G1): Stufensätze je 200 kg.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_1: EuroCent = EuroCent.von(FinDslNumber.dezimal("9.64").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_1\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_2: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.30").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_2\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_3: EuroCent = EuroCent.von(FinDslNumber.dezimal("10.97").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_3\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_4: EuroCent = EuroCent.von(FinDslNumber.dezimal("11.61").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_4\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_5: EuroCent = EuroCent.von(FinDslNumber.dezimal("12.27").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_5\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_6: EuroCent = EuroCent.von(FinDslNumber.dezimal("12.94").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_6\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_7: EuroCent = EuroCent.von(FinDslNumber.dezimal("14.03").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_7\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_8: EuroCent = EuroCent.von(FinDslNumber.dezimal("15.11").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_8\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_9: EuroCent = EuroCent.von(FinDslNumber.dezimal("16.44").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_9\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_10: EuroCent = EuroCent.von(FinDslNumber.dezimal("17.74").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_10\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_11: EuroCent = EuroCent.von(FinDslNumber.dezimal("19.51").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_11\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_12: EuroCent = EuroCent.von(FinDslNumber.dezimal("21.47").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_12\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_13: EuroCent = EuroCent.von(FinDslNumber.dezimal("23.67").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_13\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_14: EuroCent = EuroCent.von(FinDslNumber.dezimal("39.01").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_14\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_15: EuroCent = EuroCent.von(FinDslNumber.dezimal("54.35").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_15\""));
/**
* Nr. 4c: Höchstbetrag.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_MAX: EuroCent = EuroCent.von(FinDslNumber.dezimal("1425.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_MAX\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_2000: EuroCent = EuroCent.von(NR4C_1.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_2000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_3000: EuroCent = EuroCent.von(NR4C_KUM_2000.add(NR4C_2.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_3000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_4000: EuroCent = EuroCent.von(NR4C_KUM_3000.add(NR4C_3.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_4000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_5000: EuroCent = EuroCent.von(NR4C_KUM_4000.add(NR4C_4.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_5000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_6000: EuroCent = EuroCent.von(NR4C_KUM_5000.add(NR4C_5.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_6000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_7000: EuroCent = EuroCent.von(NR4C_KUM_6000.add(NR4C_6.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_7000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_8000: EuroCent = EuroCent.von(NR4C_KUM_7000.add(NR4C_7.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_8000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_9000: EuroCent = EuroCent.von(NR4C_KUM_8000.add(NR4C_8.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_9000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_10000: EuroCent = EuroCent.von(NR4C_KUM_9000.add(NR4C_9.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_10000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_11000: EuroCent = EuroCent.von(NR4C_KUM_10000.add(NR4C_10.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_11000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_12000: EuroCent = EuroCent.von(NR4C_KUM_11000.add(NR4C_11.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_12000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_13000: EuroCent = EuroCent.von(NR4C_KUM_12000.add(NR4C_12.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_13000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_14000: EuroCent = EuroCent.von(NR4C_KUM_13000.add(NR4C_13.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_14000\""));
/**
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
export const NR4C_KUM_15000: EuroCent = EuroCent.von(NR4C_KUM_14000.add(NR4C_14.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_15000\""));
/**
* Anhänger: je angefangene 200 kg Gesamtgewicht 7,46 €.
* @Quelle § 9 Absatz 1 Nummer 5 KraftStG
*/
export const ANH_JE_200KG: EuroCent = EuroCent.von(FinDslNumber.dezimal("7.46").withMoneyAnnotation("EuroCent", "Konstante \"ANH_JE_200KG\""));
/**
* Anhänger: Höchstbetrag.
* @Quelle § 9 Absatz 1 Nummer 5 KraftStG
*/
export const ANH_MAX: EuroCent = EuroCent.von(FinDslNumber.dezimal("373.24").withMoneyAnnotation("EuroCent", "Konstante \"ANH_MAX\""));
/**
* Andere Kraftfahrzeuge bis 3.500 kg (§ 9 Abs. 1 Nr. 3 KraftStG):
* je angefangene 200 kg, progressiv nach Gewichtsspanne (kein
* Höchstbetrag).
*
* @param g Gesamtgewicht (kg).
* @returns Jahressteuer.
* @Quelle § 9 Absatz 1 Nummer 3 KraftStG
*/
export function steuerNr3(g: Ganzzahl): EuroCent {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return EuroCent.von(NR3_BIS_2000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return EuroCent.von(NR3_KUM_2000.add(NR3_2000_3000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200"))))));
}
return EuroCent.von(NR3_KUM_3000.add(NR3_3000_3500.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200"))))));
}
/**
* Kfz über 3.500 kg (§ 9 Abs. 1 Nr. 4 KraftStG): je angefangene 200 kg,
* progressiv in 1.000-kg-Spannen, nach Schadstoff-/Geräuschklasse, mit
* jeweils eigenem Höchstbetrag. Alle vier Buchstaben sind eigenständig
* modelliert: a (≥ S2, Spannen bis > 12.000 kg, max 556 €), b (S1,
* max 914 €), c (G1, max 1.425 €), d (sonst, max 1.681 €).
*
* @param g Gesamtgewicht (kg).
* @param klasse Schadstoff-/Geräuschklasse.
* @returns Jahressteuer.
* @Quelle § 9 Absatz 1 Nummer 4 KraftStG
*/
export function steuerNr4(g: Ganzzahl, klasse: KraftstgTypen.NfzKlasse): EuroCent {
if (klasse === KraftstgTypen.NfzKlasse.MindestensS2) {
return EuroCent.von(_nr4a(g).hoechstens(NR4A_MAX));
}
if (klasse === KraftstgTypen.NfzKlasse.S1) {
return EuroCent.von(_nr4b(g).hoechstens(NR4B_MAX));
}
if (klasse === KraftstgTypen.NfzKlasse.G1) {
return EuroCent.von(_nr4c(g).hoechstens(NR4C_MAX));
}
if (klasse === KraftstgTypen.NfzKlasse.NfzSonst) {
return EuroCent.von(_nr4d(g).hoechstens(NR4D_MAX));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
/**
* Progressiver Stufentarif Buchst. a (≥ S2), je 200 kg, Spannen
* 2.000…> 12.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. a KraftStG).
*
* @param g Gesamtgewicht (kg).
* @returns Tarifbetrag vor Höchstbetragsbegrenzung.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG
*/
function _nr4a(g: FinDslNumber): FinDslNumber {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4A_1.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4A_KUM_2000.add(NR4A_2.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4A_KUM_3000.add(NR4A_3.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4A_KUM_4000.add(NR4A_4.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4A_KUM_5000.add(NR4A_5.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4A_KUM_6000.add(NR4A_6.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4A_KUM_7000.add(NR4A_7.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4A_KUM_8000.add(NR4A_8.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4A_KUM_9000.add(NR4A_9.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4A_KUM_10000.add(NR4A_10.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4A_KUM_11000.add(NR4A_11.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4A_KUM_12000.add(NR4A_12.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Progressiver Stufentarif Buchst. d (Voraussetzungen a/b/c nicht
* erfüllt), je 200 kg, Spannen 2.000…> 15.000 kg
* (§ 9 Abs. 1 Nr. 4 Buchst. d KraftStG).
*
* @param g Gesamtgewicht (kg).
* @returns Tarifbetrag vor Höchstbetragsbegrenzung.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG
*/
function _nr4d(g: FinDslNumber): FinDslNumber {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4D_1.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4D_KUM_2000.add(NR4D_2.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4D_KUM_3000.add(NR4D_3.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4D_KUM_4000.add(NR4D_4.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4D_KUM_5000.add(NR4D_5.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4D_KUM_6000.add(NR4D_6.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4D_KUM_7000.add(NR4D_7.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4D_KUM_8000.add(NR4D_8.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4D_KUM_9000.add(NR4D_9.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4D_KUM_10000.add(NR4D_10.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4D_KUM_11000.add(NR4D_11.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4D_KUM_12000.add(NR4D_12.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4D_KUM_13000.add(NR4D_13.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4D_KUM_14000.add(NR4D_14.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4D_KUM_15000.add(NR4D_15.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Progressiver Stufentarif Buchst. b (Schadstoffklasse S 1), je 200 kg,
* Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. b KraftStG).
*
* @param g Gesamtgewicht (kg).
* @returns Tarifbetrag vor Höchstbetragsbegrenzung.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG
*/
function _nr4b(g: FinDslNumber): FinDslNumber {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4B_1.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4B_KUM_2000.add(NR4B_2.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4B_KUM_3000.add(NR4B_3.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4B_KUM_4000.add(NR4B_4.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4B_KUM_5000.add(NR4B_5.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4B_KUM_6000.add(NR4B_6.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4B_KUM_7000.add(NR4B_7.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4B_KUM_8000.add(NR4B_8.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4B_KUM_9000.add(NR4B_9.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4B_KUM_10000.add(NR4B_10.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4B_KUM_11000.add(NR4B_11.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4B_KUM_12000.add(NR4B_12.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4B_KUM_13000.add(NR4B_13.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4B_KUM_14000.add(NR4B_14.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4B_KUM_15000.add(NR4B_15.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Progressiver Stufentarif Buchst. c (Geräuschklasse G 1), je 200 kg,
* Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. c KraftStG).
*
* @param g Gesamtgewicht (kg).
* @returns Tarifbetrag vor Höchstbetragsbegrenzung.
* @Quelle § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG
*/
function _nr4c(g: FinDslNumber): FinDslNumber {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4C_1.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4C_KUM_2000.add(NR4C_2.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4C_KUM_3000.add(NR4C_3.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4C_KUM_4000.add(NR4C_4.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4C_KUM_5000.add(NR4C_5.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4C_KUM_6000.add(NR4C_6.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4C_KUM_7000.add(NR4C_7.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4C_KUM_8000.add(NR4C_8.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4C_KUM_9000.add(NR4C_9.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4C_KUM_10000.add(NR4C_10.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4C_KUM_11000.add(NR4C_11.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4C_KUM_12000.add(NR4C_12.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4C_KUM_13000.add(NR4C_13.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4C_KUM_14000.add(NR4C_14.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4C_KUM_15000.add(NR4C_15.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
/**
* Kraftfahrzeuganhänger (§ 9 Abs. 1 Nr. 5 KraftStG): je angefangene
* 200 kg Gesamtgewicht 7,46 €, höchstens 373,24 €.
*
* @param gesamtgewichtKg Gesamtgewicht (kg).
* @returns Jahressteuer des Anhängers.
* @Quelle § 9 Absatz 1 Nummer 5 KraftStG
*/
export function steuerAnhaenger(gesamtgewichtKg: Ganzzahl): EuroCent {
return EuroCent.von(ANH_JE_200KG.mul(KraftstgTypen.einheiten(Ganzzahl.von(gesamtgewichtKg), Ganzzahl.von(FinDslNumber.ganzzahl("200")))).hoechstens(ANH_MAX));
}import { FinDslNumber, EuroCent, Ganzzahl, Dezimal } from './runtime/index.js';
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Kraftfahrzeugsteuer — gemeinsame Typen und Helfer
*
* Geteiltes Vokabular des KraftStG-Moduls (aus `kraftstg-steuer`
* herausgelöst, damit die Hauptdatei nicht überlang wird): die
* Fahrzeug-Klassifizierungs-Aufzählungen (§§ 8, 9, 3a KraftStG), der
* Eingabe-Datensatz `Fahrzeug`, der Ergebnis-Datensatz
* `KraftfahrzeugsteuerErgebnis` sowie die allgemeinen Berechnungshelfer
* `einheiten` (je angefangene Einheit, § 9 KraftStG) und `begrenze`
* (Höchstbetrags-Kappung, § 9 Abs. 1 KraftStG).
*
* Importiert nichts (Blatt des Modul-Graphen); wird von den Tarif-Dateien
* `kraftstg-tarif-leicht`, `kraftstg-tarif-nutzfahrzeug` und vom Orchestrator
* `kraftstg-steuer` genutzt.
*/
/**
* Fahrzeugart i.S.d. § 8 / § 9 Abs. 1 KraftStG — bestimmt, welcher
* Tarif (welche Nummer des § 9 Abs. 1) anzuwenden ist.
*
* @param Kraftrad § 9 Abs. 1 Nr. 1: Krafträder (Hubkolbenmotor).
* @param Pkw § 9 Abs. 1 Nr. 2: Personenkraftwagen (M1) mit
* Hubkolbenmotor.
* @param Wohnmobil § 9 Abs. 1 Nr. 2a: Wohnmobile.
* @param DreiLeichtvier § 9 Abs. 1 Nr. 2b: dreirädrige und leichte
* vierrädrige Kraftfahrzeuge.
* @param AndereBis3500 § 9 Abs. 1 Nr. 3: andere Kfz bis 3.500 kg.
* @param AndereUeber3500 § 9 Abs. 1 Nr. 4: Kfz über 3.500 kg.
* @param Anhaenger § 9 Abs. 1 Nr. 5: Kraftfahrzeuganhänger.
* @Quelle § 8 KraftStG
*/
export enum Fahrzeugart {
Kraftrad,
Pkw,
Wohnmobil,
DreiLeichtvier,
AndereBis3500,
AndereUeber3500,
Anhaenger,
}
/**
* Antriebsart. § 9 unterscheidet Fremdzündungsmotor (Ottomotor/Benzin)
* und Selbstzündungsmotor (Dieselmotor); `Elektro` steuert die
* Ermäßigung/Befreiung (§ 9 Abs. 2, § 3d KraftStG).
*
* @param Fremdzuendung Fremdzündungsmotor (Ottomotor).
* @param Selbstzuendung Selbstzündungsmotor (Dieselmotor).
* @param Elektro Elektrofahrzeug i.S.d. § 9 Abs. 2 KraftStG.
* @Quelle § 9 Absatz 1 Nummer 2 KraftStG
*/
export enum Antrieb {
Fremdzuendung,
Selbstzuendung,
Elektro,
}
/**
* Erstzulassungs-Regime des PKW — wählt den Buchstaben des
* § 9 Abs. 1 Nr. 2 KraftStG.
*
* @param BisJuni2009 Erstzulassung bis 30.6.2009 (Buchst. a, Hubraum
* + Schadstoffstufe aa–ee).
* @param JuliBisDez2020 Erstzulassung 1.7.2009–31.12.2020 (Buchst. b,
* Hubraum + CO₂ über datumsabhängiger Freigrenze).
* @param AbJan2021 Erstzulassung ab 1.1.2021 (Buchst. c, Hubraum +
* progressiver CO₂-Aufschlag ab 95 g/km).
* @Quelle § 9 Absatz 1 Nummer 2 KraftStG
*/
export enum Erstzulassungsregime {
BisJuni2009,
JuliBisDez2020,
AbJan2021,
}
/**
* Schadstoffstufe aa–ee für PKW mit Erstzulassung bis 30.6.2009
* (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG). Die Einstufung trifft nach
* § 2 Abs. 2 Nr. 2 KraftStG verbindlich die Zulassungsbehörde.
*
* @param Aa Doppelbuchst. aa (günstigste Stufe).
* @param Bb Doppelbuchst. bb.
* @param Cc Doppelbuchst. cc.
* @param Dd Doppelbuchst. dd.
* @param Ee Doppelbuchst. ee (höchste Stufe, keine Voraussetzungen).
* @Quelle § 9 Absatz 1 Nummer 2 Buchstabe a KraftStG
*/
export enum PkwSchadstoffstufe {
Aa,
Bb,
Cc,
Dd,
Ee,
}
/**
* Schadstoffklasse für Wohnmobile (§ 9 Abs. 1 Nr. 2a KraftStG).
*
* @param MindestensS4 mindestens Schadstoffklasse S 4 (Buchst. a).
* @param S1bisS3 Schadstoffklasse S 3, S 2 oder S 1 (Buchst. b).
* @param WomoSonst Voraussetzungen a/b nicht erfüllt (Buchst. c).
* @Quelle § 9 Absatz 1 Nummer 2a KraftStG
*/
export enum WohnmobilKlasse {
MindestensS4,
S1bisS3,
WomoSonst,
}
/**
* Schadstoff-/Geräuschklasse für Kfz > 3.500 kg
* (§ 9 Abs. 1 Nr. 4 KraftStG). Verbindliche Feststellung der
* Zulassungsbehörde (§ 2 Abs. 2 Nr. 2 KraftStG).
*
* @param MindestensS2 mindestens Schadstoffklasse S 2 (Buchst. a).
* @param S1 Schadstoffklasse S 1 (Buchst. b).
* @param G1 Geräuschklasse G 1 (Buchst. c).
* @param NfzSonst Voraussetzungen a/b/c nicht erfüllt (Buchst. d).
* @Quelle § 9 Absatz 1 Nummer 4 KraftStG
*/
export enum NfzKlasse {
MindestensS2,
S1,
G1,
NfzSonst,
}
/**
* Schwerbehinderten-Vergünstigung nach § 3a KraftStG.
*
* @param Keine keine Vergünstigung.
* @param Befreit3aAbs1 volle Steuerbefreiung (Merkzeichen H, Bl, aG —
* § 3a Abs. 1 KraftStG).
* @param Ermaessigt3aAbs2 50 % Ermäßigung (orangefarbener Aufdruck,
* § 3a Abs. 2 KraftStG).
* @Quelle § 3a KraftStG
*/
export enum Behinderung {
Keine,
Befreit3aAbs1,
Ermaessigt3aAbs2,
}
/**
* Eingaben eines Fahrzeugs für die Jahressteuer-Berechnung. Nicht jedes
* Feld ist für jede Fahrzeugart relevant — maßgeblich ist `art`
* (§ 8 KraftStG); die übrigen Felder gelten nur im jeweiligen Tarif.
*
* @param art Fahrzeugart (§ 8 KraftStG) — wählt den Tarif.
* @param antrieb Antriebsart (Fremd-/Selbstzündung/Elektro).
* @param hubraumCcm Hubraum in cm³ (Nr. 1, Nr. 2, Nr. 2b).
* @param co2GrammProKm CO₂-Emission in g/km (Nr. 2 Buchst. b/c).
* @param gesamtgewichtKg verkehrsrechtlich zulässiges Gesamtgewicht
* in kg (Nr. 2a, 3, 4, 5).
* @param erstzulassung Erstzulassungs-Regime des PKW (Nr. 2 a/b/c).
* @param pkwStufe Schadstoffstufe aa–ee (Nr. 2 Buchst. a).
* @param co2FreigrenzeNr2b datumsabhängige CO₂-Freigrenze g/km für
* Nr. 2 Buchst. b (120 bis 31.12.2011 / 110
* ab 1.1.2012 / 95 ab 1.1.2014).
* @param dreiradGrenzwerte Dreirad/leichtes Vierrad: Grenzwerte
* eingehalten? (Nr. 2b a vs. b).
* @param wohnmobilklasse Schadstoffklasse des Wohnmobils (Nr. 2a).
* @param nfzklasse Schadstoff-/Geräuschklasse > 3.500 kg (Nr. 4).
* @param behinderung Schwerbehinderten-Vergünstigung (§ 3a).
* @param elektroBefreitNach3d Steuerbefreiung nach § 3d KraftStG aktiv?
* (datumsabhängig — verbindlich extern
* festgestellt).
* @Quelle § 8 KraftStG
*/
export class Fahrzeug {
constructor(
readonly art: Fahrzeugart,
readonly antrieb: Antrieb,
readonly hubraumCcm: Ganzzahl,
readonly co2GrammProKm: Ganzzahl,
readonly gesamtgewichtKg: Ganzzahl,
readonly erstzulassung: Erstzulassungsregime,
readonly pkwStufe: PkwSchadstoffstufe,
readonly co2FreigrenzeNr2b: Ganzzahl,
readonly dreiradGrenzwerte: boolean,
readonly wohnmobilklasse: WohnmobilKlasse,
readonly nfzklasse: NfzKlasse,
readonly behinderung: Behinderung,
readonly elektroBefreitNach3d: boolean,
) {}
}
/**
* Vollständige, prüfbare Berechnung der Kraftfahrzeug-Jahressteuer.
*
* @param tarifbetrag Steuer nach § 9 Abs. 1 KraftStG (vor § 9
* Abs. 2 / § 3a / § 3d).
* @param nachElektro nach Anwendung der 50 %-Ermäßigung für
* Elektrofahrzeuge (§ 9 Abs. 2 KraftStG).
* @param jahressteuer festgesetzte Jahressteuer nach Anwendung von
* § 3a / § 3d KraftStG (0 bei Befreiung).
* @Quelle § 9 KraftStG
*/
export class KraftfahrzeugsteuerErgebnis {
constructor(
readonly tarifbetrag: EuroCent,
readonly nachElektro: EuroCent,
readonly jahressteuer: EuroCent,
) {}
}
/**
* Anzahl angefangener Einheiten: `wert` geteilt durch `schritt`,
* aufgerundet (§ 9 KraftStG: „für je … oder einen Teil davon").
*
* @param wert zu zerlegende Menge (cm³ bzw. kg).
* @param teiler Einheitengröße (25 / 100 / 200).
* @returns Anzahl angefangener Einheiten (≥ 0).
* @Quelle § 9 Absatz 1 KraftStG
*/
export function einheiten(wert: Ganzzahl, teiler: Ganzzahl): Ganzzahl {
if (wert.compareValue(FinDslNumber.ganzzahl("0")) <= 0) {
return Ganzzahl.von(FinDslNumber.ganzzahl("0"));
}
return Ganzzahl.von(wert.div(teiler).cast("Dezimal").aufrunden("Ganzzahl"));
}import { describe, it, expect } from 'vitest';
import { FinDslNumber, Ganzzahl } from './runtime/index.js';
import * as Kraftst from './Kraftst.js';
import * as KraftstgTarifLeicht from './KraftstgTarifLeicht.js';
import * as KraftstgTypen from './KraftstgTypen.js';
/**
* Generiert aus FinDSL — NICHT manuell editieren.
* Semantik-Orakel: der FinDSL-Interpreter (bit-genau).
*
* # Akzeptanztests — Kraftfahrzeugsteuer (§§ 8, 9 KraftStG)
*
* `prüfe`-Blöcke zur Datei `kraftstg-steuer`. Alle Sollwerte sind
* unabhängig aus dem Gesetzeswortlaut gerechnet (KraftStG 2002,
* i.d.g.F.): „je angefangene Einheit" = Aufrundung; progressive
* Gewichts-/CO₂-Tarife stufenweise summiert; Höchstbeträge gedeckelt.
*
* Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
*/
describe("Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)", () => {
it("exakt teilbar", () => {
expect(KraftstgTypen.einheiten(Ganzzahl.von(FinDslNumber.ganzzahl("2000")), Ganzzahl.von(FinDslNumber.ganzzahl("200"))).equalsValue(FinDslNumber.ganzzahl("10"))).toBe(true);
});
it("Teil davon rundet auf", () => {
expect(KraftstgTypen.einheiten(Ganzzahl.von(FinDslNumber.ganzzahl("1598")), Ganzzahl.von(FinDslNumber.ganzzahl("100"))).equalsValue(FinDslNumber.ganzzahl("16"))).toBe(true);
});
it("knapp über Grenze", () => {
expect(KraftstgTypen.einheiten(Ganzzahl.von(FinDslNumber.ganzzahl("601")), Ganzzahl.von(FinDslNumber.ganzzahl("25"))).equalsValue(FinDslNumber.ganzzahl("25"))).toBe(true);
});
it("0 oder negativ → 0", () => {
expect(KraftstgTypen.einheiten(Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("200"))).equalsValue(FinDslNumber.ganzzahl("0"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)", () => {
it("125 cm³ → 5 × 1,84 = 9,20 €", () => {
expect(KraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("125"))).equalsValue(FinDslNumber.dezimal("9.20"))).toBe(true);
});
it("600 cm³ → 24 × 1,84 = 44,16 €", () => {
expect(KraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("600"))).equalsValue(FinDslNumber.dezimal("44.16"))).toBe(true);
});
it("601 cm³ → 25 × 1,84 = 46,00 €", () => {
expect(KraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("601"))).equalsValue(FinDslNumber.dezimal("46.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)", () => {
it("Benziner 1.598 cm³, 120 g/km → 32,00 + 51,00 = 83,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1598")), Ganzzahl.von(FinDslNumber.ganzzahl("120")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("83.00"))).toBe(true);
});
it("Diesel 1.968 cm³, 150 g/km → 190,00 + 121,50 = 311,50 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1968")), Ganzzahl.von(FinDslNumber.ganzzahl("150")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("311.50"))).toBe(true);
});
it("CO₂ genau 95 g/km → kein Aufschlag (nur Hubraum 20,00 €)", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("999")), Ganzzahl.von(FinDslNumber.ganzzahl("95")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("20.00"))).toBe(true);
});
it("alle CO₂-Bänder: 1.000 cm³, 200 g/km → 20,00 + 280,00 = 300,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1000")), Ganzzahl.von(FinDslNumber.ganzzahl("200")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("300.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020", () => {
it("Benziner 1.390 cm³, 130 g/km, Freigrenze 110 → 28,00 + 40,00 = 68,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1390")), Ganzzahl.von(FinDslNumber.ganzzahl("130")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.JuliBisDez2020, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("110")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("68.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)", () => {
it("Benziner Stufe ee, 1.600 cm³ → 16 × 25,36 = 405,76 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1600")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.BisJuni2009, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("405.76"))).toBe(true);
});
it("Diesel Stufe aa, 1.900 cm³ → 19 × 15,44 = 293,36 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1900")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.BisJuni2009, KraftstgTypen.PkwSchadstoffstufe.Aa, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("293.36"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)", () => {
it("≥ S4, 3.000 kg → 160,00 + 50,00 = 210,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Wohnmobil, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("3000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.MindestensS4, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("210.00"))).toBe(true);
});
it("≥ S4, sehr schwer → Höchstbetrag 800,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Wohnmobil, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("20000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.MindestensS4, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("800.00"))).toBe(true);
});
it("S3–S1, 3.000 kg → 240,00 + 50,00 = 290,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Wohnmobil, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("3000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.S1bisS3, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("290.00"))).toBe(true);
});
it("sonst, 6.000 kg → 400,00 + 150,00 + 75,00 = 625,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Wohnmobil, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("6000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("625.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)", () => {
it("2.800 kg → 112,50 + 48,08 = 160,58 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereBis3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("2800")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("160.58"))).toBe(true);
});
it("3.500 kg → 112,50 + 60,10 + 38,34 = 210,94 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereBis3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("3500")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("210.94"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)", () => {
it("Buchst. a (≥ S2), 5.000 kg → 173,90 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.MindestensS2, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("173.90"))).toBe(true);
});
it("Buchst. a, sehr schwer → Höchstbetrag 556,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("20000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.MindestensS2, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("556.00"))).toBe(true);
});
it("Buchst. c (G1), 5.000 kg → 260,80 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.G1, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("260.80"))).toBe(true);
});
it("Buchst. d (sonst), 5.000 kg → 304,25 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("304.25"))).toBe(true);
});
it("Buchst. d, sehr schwer → Höchstbetrag 1.681,00 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("40000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("1681.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)", () => {
it("2.000 kg → 10 × 7,46 = 74,60 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Anhaenger, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("2000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("74.60"))).toBe(true);
});
it("schwer → Höchstbetrag 373,24 €", () => {
const f: KraftstgTypen.Fahrzeug = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Anhaenger, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("20000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("373.24"))).toBe(true);
});
});
describe("§ 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)", () => {
it("E-Kfz Nr. 3, 3.000 kg → 172,60 / 2 = 86,30 €", () => {
const e: KraftstgTypen.KraftfahrzeugsteuerErgebnis = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereBis3500, KraftstgTypen.Antrieb.Elektro, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("3000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false));
expect(e.tarifbetrag.equalsValue(FinDslNumber.dezimal("172.60"))).toBe(true);
expect(e.nachElektro.equalsValue(FinDslNumber.dezimal("86.30"))).toBe(true);
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("86.30"))).toBe(true);
});
it("E-Kfz Nr. 4a, 5.000 kg → 173,90 / 2 = 86,95 €", () => {
const e: KraftstgTypen.KraftfahrzeugsteuerErgebnis = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Elektro, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.MindestensS2, KraftstgTypen.Behinderung.Keine, false));
expect(e.nachElektro.equalsValue(FinDslNumber.dezimal("86.95"))).toBe(true);
});
it("E-Kfz Nr. 4d → KEINE 50 %-Ermäßigung (nur a)", () => {
const e: KraftstgTypen.KraftfahrzeugsteuerErgebnis = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Elektro, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false));
expect(e.nachElektro.equalsValue(FinDslNumber.dezimal("304.25"))).toBe(true);
});
});
describe("§ 3a / § 3d — Vergünstigungen / Befreiungen", () => {
it("§ 3a Abs. 1 (H/Bl/aG) → volle Befreiung 0,00 €", () => {
const e: KraftstgTypen.KraftfahrzeugsteuerErgebnis = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Kraftrad, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("125")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Befreit3aAbs1, false));
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("§ 3a Abs. 2 → 50 % (9,20 / 2 = 4,60 €)", () => {
const e: KraftstgTypen.KraftfahrzeugsteuerErgebnis = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Kraftrad, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("125")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Ermaessigt3aAbs2, false));
expect(e.tarifbetrag.equalsValue(FinDslNumber.dezimal("9.20"))).toBe(true);
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("4.60"))).toBe(true);
});
it("§ 3d E-Befreiung aktiv → 0,00 € (trotz Tarifbetrag)", () => {
const e: KraftstgTypen.KraftfahrzeugsteuerErgebnis = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Elektro, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, true));
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
});
describe("Gesamtberechnung — vollständiges Ergebnis", () => {
it("Benziner-PKW ab 2021, 1.598 cm³, 120 g/km", () => {
const e: KraftstgTypen.KraftfahrzeugsteuerErgebnis = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1598")), Ganzzahl.von(FinDslNumber.ganzzahl("120")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false));
expect(e.tarifbetrag.equalsValue(FinDslNumber.dezimal("83.00"))).toBe(true);
expect(e.nachElektro.equalsValue(FinDslNumber.dezimal("83.00"))).toBe(true);
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("83.00"))).toBe(true);
});
});import { FinDslNumber, FinDslRuntimeError, EuroCent, Ganzzahl } from './runtime/index.js';
import * as KraftstgTarifLeicht from './KraftstgTarifLeicht.js';
import * as KraftstgTarifNutzfahrzeug from './KraftstgTarifNutzfahrzeug.js';
import * as KraftstgTypen from './KraftstgTypen.js';
export const KZ_NUR_KRAD = EuroCent.von(FinDslNumber.dezimal("46.02").withMoneyAnnotation("EuroCent", "Konstante \"KZ_NUR_KRAD\""));
export const KZ_UEBRIGE = EuroCent.von(FinDslNumber.dezimal("191.73").withMoneyAnnotation("EuroCent", "Konstante \"KZ_UEBRIGE\""));
export function tarifNach9Abs1(f) {
if (f.art === KraftstgTypen.Fahrzeugart.Kraftrad) {
return EuroCent.von(KraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(f.hubraumCcm)));
}
if (f.art === KraftstgTypen.Fahrzeugart.Pkw) {
return EuroCent.von(KraftstgTarifLeicht.steuerPkw(f));
}
if (f.art === KraftstgTypen.Fahrzeugart.Wohnmobil) {
return EuroCent.von(KraftstgTarifLeicht.steuerWohnmobil(Ganzzahl.von(f.gesamtgewichtKg), f.wohnmobilklasse));
}
if (f.art === KraftstgTypen.Fahrzeugart.DreiLeichtvier) {
return EuroCent.von(KraftstgTarifLeicht.steuerDreiLeichtvier(Ganzzahl.von(f.hubraumCcm), f.dreiradGrenzwerte, f.antrieb));
}
if (f.art === KraftstgTypen.Fahrzeugart.AndereBis3500) {
return EuroCent.von(KraftstgTarifNutzfahrzeug.steuerNr3(Ganzzahl.von(f.gesamtgewichtKg)));
}
if (f.art === KraftstgTypen.Fahrzeugart.AndereUeber3500) {
return EuroCent.von(KraftstgTarifNutzfahrzeug.steuerNr4(Ganzzahl.von(f.gesamtgewichtKg), f.nfzklasse));
}
if (f.art === KraftstgTypen.Fahrzeugart.Anhaenger) {
return EuroCent.von(KraftstgTarifNutzfahrzeug.steuerAnhaenger(Ganzzahl.von(f.gesamtgewichtKg)));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
function _anwende9Abs2(f, betrag) {
if (f.antrieb === KraftstgTypen.Antrieb.Elektro && f.art === KraftstgTypen.Fahrzeugart.AndereBis3500) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast("EuroCent");
}
if (f.antrieb === KraftstgTypen.Antrieb.Elektro && f.art === KraftstgTypen.Fahrzeugart.AndereUeber3500 && f.nfzklasse === KraftstgTypen.NfzKlasse.MindestensS2) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast("EuroCent");
}
return betrag;
}
function _anwendeVerguenstigung(f, betrag) {
if (f.elektroBefreitNach3d) {
return FinDslNumber.dezimal("0.00");
}
if (f.behinderung === KraftstgTypen.Behinderung.Befreit3aAbs1) {
return FinDslNumber.dezimal("0.00");
}
if (f.behinderung === KraftstgTypen.Behinderung.Ermaessigt3aAbs2) {
return betrag.div(FinDslNumber.ganzzahl("2")).cast("EuroCent");
}
return betrag;
}
export function berechneKraftfahrzeugsteuer(f) {
const tarif = tarifNach9Abs1(f).withMoneyAnnotation("EuroCent", "var \"tarif\"");
const nachE = _anwende9Abs2(f, tarif).withMoneyAnnotation("EuroCent", "var \"nachE\"");
const jahr = _anwendeVerguenstigung(f, nachE).withMoneyAnnotation("EuroCent", "var \"jahr\"");
return new KraftstgTypen.KraftfahrzeugsteuerErgebnis(EuroCent.von(tarif), EuroCent.von(nachE), EuroCent.von(jahr));
}import { FinDslNumber, FinDslRuntimeError, EuroCent, Ganzzahl } from './runtime/index.js';
import * as KraftstgTypen from './KraftstgTypen.js';
export const KRAD_JE_25CCM = EuroCent.von(FinDslNumber.dezimal("1.84").withMoneyAnnotation("EuroCent", "Konstante \"KRAD_JE_25CCM\""));
export const PKW_C_HUBRAUM_OTTO = EuroCent.von(FinDslNumber.dezimal("2.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_HUBRAUM_OTTO\""));
export const PKW_C_HUBRAUM_DIESEL = EuroCent.von(FinDslNumber.dezimal("9.50").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_HUBRAUM_DIESEL\""));
export const PKW_C_CO2_95_115 = EuroCent.von(FinDslNumber.dezimal("2.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_95_115\""));
export const PKW_C_CO2_115_135 = EuroCent.von(FinDslNumber.dezimal("2.20").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_115_135\""));
export const PKW_C_CO2_135_155 = EuroCent.von(FinDslNumber.dezimal("2.50").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_135_155\""));
export const PKW_C_CO2_155_175 = EuroCent.von(FinDslNumber.dezimal("2.90").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_155_175\""));
export const PKW_C_CO2_175_195 = EuroCent.von(FinDslNumber.dezimal("3.40").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_175_195\""));
export const PKW_C_CO2_UEBER_195 = EuroCent.von(FinDslNumber.dezimal("4.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_C_CO2_UEBER_195\""));
export const PKW_C_CO2_FREI = Ganzzahl.von(FinDslNumber.ganzzahl("95"));
export const PKW_B_HUBRAUM_OTTO = EuroCent.von(FinDslNumber.dezimal("2.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_B_HUBRAUM_OTTO\""));
export const PKW_B_HUBRAUM_DIESEL = EuroCent.von(FinDslNumber.dezimal("9.50").withMoneyAnnotation("EuroCent", "Konstante \"PKW_B_HUBRAUM_DIESEL\""));
export const PKW_B_CO2_JE_GRAMM = EuroCent.von(FinDslNumber.dezimal("2.00").withMoneyAnnotation("EuroCent", "Konstante \"PKW_B_CO2_JE_GRAMM\""));
export const PKW_A_AA_OTTO = EuroCent.von(FinDslNumber.dezimal("6.75").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_AA_OTTO\""));
export const PKW_A_AA_DIESEL = EuroCent.von(FinDslNumber.dezimal("15.44").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_AA_DIESEL\""));
export const PKW_A_BB_OTTO = EuroCent.von(FinDslNumber.dezimal("7.36").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_BB_OTTO\""));
export const PKW_A_BB_DIESEL = EuroCent.von(FinDslNumber.dezimal("16.05").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_BB_DIESEL\""));
export const PKW_A_CC_OTTO = EuroCent.von(FinDslNumber.dezimal("15.13").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_CC_OTTO\""));
export const PKW_A_CC_DIESEL = EuroCent.von(FinDslNumber.dezimal("27.35").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_CC_DIESEL\""));
export const PKW_A_DD_OTTO = EuroCent.von(FinDslNumber.dezimal("21.07").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_DD_OTTO\""));
export const PKW_A_DD_DIESEL = EuroCent.von(FinDslNumber.dezimal("33.29").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_DD_DIESEL\""));
export const PKW_A_EE_OTTO = EuroCent.von(FinDslNumber.dezimal("25.36").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_EE_OTTO\""));
export const PKW_A_EE_DIESEL = EuroCent.von(FinDslNumber.dezimal("37.58").withMoneyAnnotation("EuroCent", "Konstante \"PKW_A_EE_DIESEL\""));
export const DREIRAD_GW_OTTO = EuroCent.von(FinDslNumber.dezimal("21.07").withMoneyAnnotation("EuroCent", "Konstante \"DREIRAD_GW_OTTO\""));
export const DREIRAD_GW_DIESEL = EuroCent.von(FinDslNumber.dezimal("33.29").withMoneyAnnotation("EuroCent", "Konstante \"DREIRAD_GW_DIESEL\""));
export const DREIRAD_SONST_OTTO = EuroCent.von(FinDslNumber.dezimal("25.36").withMoneyAnnotation("EuroCent", "Konstante \"DREIRAD_SONST_OTTO\""));
export const DREIRAD_SONST_DIESEL = EuroCent.von(FinDslNumber.dezimal("37.58").withMoneyAnnotation("EuroCent", "Konstante \"DREIRAD_SONST_DIESEL\""));
export const WOMO_S4_BIS_2000 = EuroCent.von(FinDslNumber.dezimal("16.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S4_BIS_2000\""));
export const WOMO_S4_UEBER_2000 = EuroCent.von(FinDslNumber.dezimal("10.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S4_UEBER_2000\""));
export const WOMO_S4_MAX = EuroCent.von(FinDslNumber.dezimal("800.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S4_MAX\""));
export const WOMO_S1_BIS_2000 = EuroCent.von(FinDslNumber.dezimal("24.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S1_BIS_2000\""));
export const WOMO_S1_UEBER_2000 = EuroCent.von(FinDslNumber.dezimal("10.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S1_UEBER_2000\""));
export const WOMO_S1_MAX = EuroCent.von(FinDslNumber.dezimal("1000.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_S1_MAX\""));
export const WOMO_SONST_BIS_2000 = EuroCent.von(FinDslNumber.dezimal("40.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_SONST_BIS_2000\""));
export const WOMO_SONST_2000_5000 = EuroCent.von(FinDslNumber.dezimal("10.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_SONST_2000_5000\""));
export const WOMO_SONST_5000_12000 = EuroCent.von(FinDslNumber.dezimal("15.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_SONST_5000_12000\""));
export const WOMO_SONST_UEBER_12000 = EuroCent.von(FinDslNumber.dezimal("25.00").withMoneyAnnotation("EuroCent", "Konstante \"WOMO_SONST_UEBER_12000\""));
export function steuerKraftrad(hubraumCcm) {
return EuroCent.von(KRAD_JE_25CCM.mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("25")))));
}
function _co2AufschlagNr2c(co2) {
if (co2.compareValue(FinDslNumber.ganzzahl("95")) <= 0) {
return FinDslNumber.dezimal("0.00");
}
if (co2.compareValue(FinDslNumber.ganzzahl("115")) <= 0) {
return PKW_C_CO2_95_115.mul(co2.sub(FinDslNumber.ganzzahl("95")));
}
if (co2.compareValue(FinDslNumber.ganzzahl("135")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(co2.sub(FinDslNumber.ganzzahl("115"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("155")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_135_155.mul(co2.sub(FinDslNumber.ganzzahl("135"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("175")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_155_175.mul(co2.sub(FinDslNumber.ganzzahl("155"))));
}
if (co2.compareValue(FinDslNumber.ganzzahl("195")) <= 0) {
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_155_175.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_175_195.mul(co2.sub(FinDslNumber.ganzzahl("175"))));
}
return PKW_C_CO2_95_115.mul(FinDslNumber.ganzzahl("20")).add(PKW_C_CO2_115_135.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_135_155.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_155_175.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_175_195.mul(FinDslNumber.ganzzahl("20"))).add(PKW_C_CO2_UEBER_195.mul(co2.sub(FinDslNumber.ganzzahl("195"))));
}
function _pkwHubraumSockel(hubraumCcm, antrieb) {
if (antrieb === KraftstgTypen.Antrieb.Selbstzuendung) {
return PKW_C_HUBRAUM_DIESEL.mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
if (antrieb === KraftstgTypen.Antrieb.Fremdzuendung || antrieb === KraftstgTypen.Antrieb.Elektro) {
return PKW_C_HUBRAUM_OTTO.mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
function _steuerPkwC(hubraumCcm, co2, antrieb) {
return _pkwHubraumSockel(hubraumCcm, antrieb).add(_co2AufschlagNr2c(co2));
}
function _steuerPkwB(hubraumCcm, co2, freigrenze, antrieb) {
if (co2.compareValue(freigrenze) <= 0) {
return _pkwHubraumSockel(hubraumCcm, antrieb).add(FinDslNumber.dezimal("0.00"));
}
return _pkwHubraumSockel(hubraumCcm, antrieb).add(PKW_B_CO2_JE_GRAMM.mul(co2.sub(freigrenze)));
}
function _steuerPkwA(hubraumCcm, stufe, antrieb) {
return _satzPkwA(stufe, antrieb).mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100"))));
}
function _satzPkwA(stufe, antrieb) {
if (antrieb === KraftstgTypen.Antrieb.Selbstzuendung) {
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Aa) {
return PKW_A_AA_DIESEL;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Bb) {
return PKW_A_BB_DIESEL;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Cc) {
return PKW_A_CC_DIESEL;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Dd) {
return PKW_A_DD_DIESEL;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Ee) {
return PKW_A_EE_DIESEL;
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
if (antrieb === KraftstgTypen.Antrieb.Fremdzuendung || antrieb === KraftstgTypen.Antrieb.Elektro) {
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Aa) {
return PKW_A_AA_OTTO;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Bb) {
return PKW_A_BB_OTTO;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Cc) {
return PKW_A_CC_OTTO;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Dd) {
return PKW_A_DD_OTTO;
}
if (stufe === KraftstgTypen.PkwSchadstoffstufe.Ee) {
return PKW_A_EE_OTTO;
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
export function steuerPkw(f) {
if (f.erstzulassung === KraftstgTypen.Erstzulassungsregime.BisJuni2009) {
return EuroCent.von(_steuerPkwA(f.hubraumCcm, f.pkwStufe, f.antrieb));
}
if (f.erstzulassung === KraftstgTypen.Erstzulassungsregime.JuliBisDez2020) {
return EuroCent.von(_steuerPkwB(f.hubraumCcm, f.co2GrammProKm, f.co2FreigrenzeNr2b, f.antrieb));
}
if (f.erstzulassung === KraftstgTypen.Erstzulassungsregime.AbJan2021) {
return EuroCent.von(_steuerPkwC(f.hubraumCcm, f.co2GrammProKm, f.antrieb));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
export function steuerDreiLeichtvier(hubraumCcm, grenzwerte, antrieb) {
return EuroCent.von(_satzDreiLeichtvier(grenzwerte, antrieb).mul(KraftstgTypen.einheiten(Ganzzahl.von(hubraumCcm), Ganzzahl.von(FinDslNumber.ganzzahl("100")))));
}
function _satzDreiLeichtvier(grenzwerte, antrieb) {
if (grenzwerte && antrieb === KraftstgTypen.Antrieb.Selbstzuendung) {
return DREIRAD_GW_DIESEL;
}
if (grenzwerte) {
return DREIRAD_GW_OTTO;
}
if (antrieb === KraftstgTypen.Antrieb.Selbstzuendung) {
return DREIRAD_SONST_DIESEL;
}
return DREIRAD_SONST_OTTO;
}
export function steuerWohnmobil(gesamtgewichtKg, klasse) {
if (klasse === KraftstgTypen.WohnmobilKlasse.MindestensS4) {
return EuroCent.von(_womoZweiStufen(gesamtgewichtKg, WOMO_S4_BIS_2000, WOMO_S4_UEBER_2000).hoechstens(WOMO_S4_MAX));
}
if (klasse === KraftstgTypen.WohnmobilKlasse.S1bisS3) {
return EuroCent.von(_womoZweiStufen(gesamtgewichtKg, WOMO_S1_BIS_2000, WOMO_S1_UEBER_2000).hoechstens(WOMO_S1_MAX));
}
if (klasse === KraftstgTypen.WohnmobilKlasse.WomoSonst) {
return EuroCent.von(_steuerWohnmobilSonst(gesamtgewichtKg));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
function _womoZweiStufen(g, satzBis, satzUeber) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return satzBis.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
return satzBis.mul(FinDslNumber.ganzzahl("10")).add(satzUeber.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
function _steuerWohnmobilSonst(g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10")).add(WOMO_SONST_2000_5000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10")).add(WOMO_SONST_2000_5000.mul(FinDslNumber.ganzzahl("15"))).add(WOMO_SONST_5000_12000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return WOMO_SONST_BIS_2000.mul(FinDslNumber.ganzzahl("10")).add(WOMO_SONST_2000_5000.mul(FinDslNumber.ganzzahl("15"))).add(WOMO_SONST_5000_12000.mul(FinDslNumber.ganzzahl("35"))).add(WOMO_SONST_UEBER_12000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}import { FinDslNumber, FinDslRuntimeError, EuroCent, Ganzzahl } from './runtime/index.js';
import * as KraftstgTypen from './KraftstgTypen.js';
export const NR3_BIS_2000 = EuroCent.von(FinDslNumber.dezimal("11.25").withMoneyAnnotation("EuroCent", "Konstante \"NR3_BIS_2000\""));
export const NR3_2000_3000 = EuroCent.von(FinDslNumber.dezimal("12.02").withMoneyAnnotation("EuroCent", "Konstante \"NR3_2000_3000\""));
export const NR3_3000_3500 = EuroCent.von(FinDslNumber.dezimal("12.78").withMoneyAnnotation("EuroCent", "Konstante \"NR3_3000_3500\""));
export const NR3_KUM_2000 = EuroCent.von(NR3_BIS_2000.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR3_KUM_2000\""));
export const NR3_KUM_3000 = EuroCent.von(NR3_KUM_2000.add(NR3_2000_3000.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR3_KUM_3000\""));
export const NR4A_1 = EuroCent.von(FinDslNumber.dezimal("6.42").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_1\""));
export const NR4A_2 = EuroCent.von(FinDslNumber.dezimal("6.88").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_2\""));
export const NR4A_3 = EuroCent.von(FinDslNumber.dezimal("7.31").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_3\""));
export const NR4A_4 = EuroCent.von(FinDslNumber.dezimal("7.75").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_4\""));
export const NR4A_5 = EuroCent.von(FinDslNumber.dezimal("8.18").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_5\""));
export const NR4A_6 = EuroCent.von(FinDslNumber.dezimal("8.62").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_6\""));
export const NR4A_7 = EuroCent.von(FinDslNumber.dezimal("9.36").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_7\""));
export const NR4A_8 = EuroCent.von(FinDslNumber.dezimal("10.07").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_8\""));
export const NR4A_9 = EuroCent.von(FinDslNumber.dezimal("10.97").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_9\""));
export const NR4A_10 = EuroCent.von(FinDslNumber.dezimal("11.84").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_10\""));
export const NR4A_11 = EuroCent.von(FinDslNumber.dezimal("13.01").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_11\""));
export const NR4A_12 = EuroCent.von(FinDslNumber.dezimal("14.32").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_12\""));
export const NR4A_MAX = EuroCent.von(FinDslNumber.dezimal("556.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4A_MAX\""));
export const NR4A_KUM_2000 = EuroCent.von(NR4A_1.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_2000\""));
export const NR4A_KUM_3000 = EuroCent.von(NR4A_KUM_2000.add(NR4A_2.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_3000\""));
export const NR4A_KUM_4000 = EuroCent.von(NR4A_KUM_3000.add(NR4A_3.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_4000\""));
export const NR4A_KUM_5000 = EuroCent.von(NR4A_KUM_4000.add(NR4A_4.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_5000\""));
export const NR4A_KUM_6000 = EuroCent.von(NR4A_KUM_5000.add(NR4A_5.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_6000\""));
export const NR4A_KUM_7000 = EuroCent.von(NR4A_KUM_6000.add(NR4A_6.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_7000\""));
export const NR4A_KUM_8000 = EuroCent.von(NR4A_KUM_7000.add(NR4A_7.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_8000\""));
export const NR4A_KUM_9000 = EuroCent.von(NR4A_KUM_8000.add(NR4A_8.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_9000\""));
export const NR4A_KUM_10000 = EuroCent.von(NR4A_KUM_9000.add(NR4A_9.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_10000\""));
export const NR4A_KUM_11000 = EuroCent.von(NR4A_KUM_10000.add(NR4A_10.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_11000\""));
export const NR4A_KUM_12000 = EuroCent.von(NR4A_KUM_11000.add(NR4A_11.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4A_KUM_12000\""));
export const NR4D_1 = EuroCent.von(FinDslNumber.dezimal("11.25").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_1\""));
export const NR4D_2 = EuroCent.von(FinDslNumber.dezimal("12.02").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_2\""));
export const NR4D_3 = EuroCent.von(FinDslNumber.dezimal("12.78").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_3\""));
export const NR4D_4 = EuroCent.von(FinDslNumber.dezimal("13.55").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_4\""));
export const NR4D_5 = EuroCent.von(FinDslNumber.dezimal("14.32").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_5\""));
export const NR4D_6 = EuroCent.von(FinDslNumber.dezimal("15.08").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_6\""));
export const NR4D_7 = EuroCent.von(FinDslNumber.dezimal("16.36").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_7\""));
export const NR4D_8 = EuroCent.von(FinDslNumber.dezimal("17.64").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_8\""));
export const NR4D_9 = EuroCent.von(FinDslNumber.dezimal("19.17").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_9\""));
export const NR4D_10 = EuroCent.von(FinDslNumber.dezimal("20.71").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_10\""));
export const NR4D_11 = EuroCent.von(FinDslNumber.dezimal("22.75").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_11\""));
export const NR4D_12 = EuroCent.von(FinDslNumber.dezimal("25.05").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_12\""));
export const NR4D_13 = EuroCent.von(FinDslNumber.dezimal("27.61").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_13\""));
export const NR4D_14 = EuroCent.von(FinDslNumber.dezimal("45.50").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_14\""));
export const NR4D_15 = EuroCent.von(FinDslNumber.dezimal("63.40").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_15\""));
export const NR4D_MAX = EuroCent.von(FinDslNumber.dezimal("1681.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4D_MAX\""));
export const NR4D_KUM_2000 = EuroCent.von(NR4D_1.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_2000\""));
export const NR4D_KUM_3000 = EuroCent.von(NR4D_KUM_2000.add(NR4D_2.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_3000\""));
export const NR4D_KUM_4000 = EuroCent.von(NR4D_KUM_3000.add(NR4D_3.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_4000\""));
export const NR4D_KUM_5000 = EuroCent.von(NR4D_KUM_4000.add(NR4D_4.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_5000\""));
export const NR4D_KUM_6000 = EuroCent.von(NR4D_KUM_5000.add(NR4D_5.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_6000\""));
export const NR4D_KUM_7000 = EuroCent.von(NR4D_KUM_6000.add(NR4D_6.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_7000\""));
export const NR4D_KUM_8000 = EuroCent.von(NR4D_KUM_7000.add(NR4D_7.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_8000\""));
export const NR4D_KUM_9000 = EuroCent.von(NR4D_KUM_8000.add(NR4D_8.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_9000\""));
export const NR4D_KUM_10000 = EuroCent.von(NR4D_KUM_9000.add(NR4D_9.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_10000\""));
export const NR4D_KUM_11000 = EuroCent.von(NR4D_KUM_10000.add(NR4D_10.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_11000\""));
export const NR4D_KUM_12000 = EuroCent.von(NR4D_KUM_11000.add(NR4D_11.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_12000\""));
export const NR4D_KUM_13000 = EuroCent.von(NR4D_KUM_12000.add(NR4D_12.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_13000\""));
export const NR4D_KUM_14000 = EuroCent.von(NR4D_KUM_13000.add(NR4D_13.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_14000\""));
export const NR4D_KUM_15000 = EuroCent.von(NR4D_KUM_14000.add(NR4D_14.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4D_KUM_15000\""));
export const NR4B_1 = EuroCent.von(FinDslNumber.dezimal("6.42").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_1\""));
export const NR4B_2 = EuroCent.von(FinDslNumber.dezimal("6.88").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_2\""));
export const NR4B_3 = EuroCent.von(FinDslNumber.dezimal("7.31").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_3\""));
export const NR4B_4 = EuroCent.von(FinDslNumber.dezimal("7.75").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_4\""));
export const NR4B_5 = EuroCent.von(FinDslNumber.dezimal("8.18").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_5\""));
export const NR4B_6 = EuroCent.von(FinDslNumber.dezimal("8.62").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_6\""));
export const NR4B_7 = EuroCent.von(FinDslNumber.dezimal("9.36").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_7\""));
export const NR4B_8 = EuroCent.von(FinDslNumber.dezimal("10.07").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_8\""));
export const NR4B_9 = EuroCent.von(FinDslNumber.dezimal("10.97").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_9\""));
export const NR4B_10 = EuroCent.von(FinDslNumber.dezimal("11.84").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_10\""));
export const NR4B_11 = EuroCent.von(FinDslNumber.dezimal("13.01").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_11\""));
export const NR4B_12 = EuroCent.von(FinDslNumber.dezimal("14.32").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_12\""));
export const NR4B_13 = EuroCent.von(FinDslNumber.dezimal("15.77").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_13\""));
export const NR4B_14 = EuroCent.von(FinDslNumber.dezimal("26.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_14\""));
export const NR4B_15 = EuroCent.von(FinDslNumber.dezimal("36.23").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_15\""));
export const NR4B_MAX = EuroCent.von(FinDslNumber.dezimal("914.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4B_MAX\""));
export const NR4B_KUM_2000 = EuroCent.von(NR4B_1.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_2000\""));
export const NR4B_KUM_3000 = EuroCent.von(NR4B_KUM_2000.add(NR4B_2.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_3000\""));
export const NR4B_KUM_4000 = EuroCent.von(NR4B_KUM_3000.add(NR4B_3.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_4000\""));
export const NR4B_KUM_5000 = EuroCent.von(NR4B_KUM_4000.add(NR4B_4.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_5000\""));
export const NR4B_KUM_6000 = EuroCent.von(NR4B_KUM_5000.add(NR4B_5.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_6000\""));
export const NR4B_KUM_7000 = EuroCent.von(NR4B_KUM_6000.add(NR4B_6.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_7000\""));
export const NR4B_KUM_8000 = EuroCent.von(NR4B_KUM_7000.add(NR4B_7.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_8000\""));
export const NR4B_KUM_9000 = EuroCent.von(NR4B_KUM_8000.add(NR4B_8.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_9000\""));
export const NR4B_KUM_10000 = EuroCent.von(NR4B_KUM_9000.add(NR4B_9.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_10000\""));
export const NR4B_KUM_11000 = EuroCent.von(NR4B_KUM_10000.add(NR4B_10.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_11000\""));
export const NR4B_KUM_12000 = EuroCent.von(NR4B_KUM_11000.add(NR4B_11.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_12000\""));
export const NR4B_KUM_13000 = EuroCent.von(NR4B_KUM_12000.add(NR4B_12.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_13000\""));
export const NR4B_KUM_14000 = EuroCent.von(NR4B_KUM_13000.add(NR4B_13.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_14000\""));
export const NR4B_KUM_15000 = EuroCent.von(NR4B_KUM_14000.add(NR4B_14.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4B_KUM_15000\""));
export const NR4C_1 = EuroCent.von(FinDslNumber.dezimal("9.64").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_1\""));
export const NR4C_2 = EuroCent.von(FinDslNumber.dezimal("10.30").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_2\""));
export const NR4C_3 = EuroCent.von(FinDslNumber.dezimal("10.97").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_3\""));
export const NR4C_4 = EuroCent.von(FinDslNumber.dezimal("11.61").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_4\""));
export const NR4C_5 = EuroCent.von(FinDslNumber.dezimal("12.27").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_5\""));
export const NR4C_6 = EuroCent.von(FinDslNumber.dezimal("12.94").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_6\""));
export const NR4C_7 = EuroCent.von(FinDslNumber.dezimal("14.03").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_7\""));
export const NR4C_8 = EuroCent.von(FinDslNumber.dezimal("15.11").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_8\""));
export const NR4C_9 = EuroCent.von(FinDslNumber.dezimal("16.44").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_9\""));
export const NR4C_10 = EuroCent.von(FinDslNumber.dezimal("17.74").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_10\""));
export const NR4C_11 = EuroCent.von(FinDslNumber.dezimal("19.51").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_11\""));
export const NR4C_12 = EuroCent.von(FinDslNumber.dezimal("21.47").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_12\""));
export const NR4C_13 = EuroCent.von(FinDslNumber.dezimal("23.67").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_13\""));
export const NR4C_14 = EuroCent.von(FinDslNumber.dezimal("39.01").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_14\""));
export const NR4C_15 = EuroCent.von(FinDslNumber.dezimal("54.35").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_15\""));
export const NR4C_MAX = EuroCent.von(FinDslNumber.dezimal("1425.00").withMoneyAnnotation("EuroCent", "Konstante \"NR4C_MAX\""));
export const NR4C_KUM_2000 = EuroCent.von(NR4C_1.mul(FinDslNumber.ganzzahl("10")).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_2000\""));
export const NR4C_KUM_3000 = EuroCent.von(NR4C_KUM_2000.add(NR4C_2.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_3000\""));
export const NR4C_KUM_4000 = EuroCent.von(NR4C_KUM_3000.add(NR4C_3.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_4000\""));
export const NR4C_KUM_5000 = EuroCent.von(NR4C_KUM_4000.add(NR4C_4.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_5000\""));
export const NR4C_KUM_6000 = EuroCent.von(NR4C_KUM_5000.add(NR4C_5.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_6000\""));
export const NR4C_KUM_7000 = EuroCent.von(NR4C_KUM_6000.add(NR4C_6.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_7000\""));
export const NR4C_KUM_8000 = EuroCent.von(NR4C_KUM_7000.add(NR4C_7.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_8000\""));
export const NR4C_KUM_9000 = EuroCent.von(NR4C_KUM_8000.add(NR4C_8.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_9000\""));
export const NR4C_KUM_10000 = EuroCent.von(NR4C_KUM_9000.add(NR4C_9.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_10000\""));
export const NR4C_KUM_11000 = EuroCent.von(NR4C_KUM_10000.add(NR4C_10.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_11000\""));
export const NR4C_KUM_12000 = EuroCent.von(NR4C_KUM_11000.add(NR4C_11.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_12000\""));
export const NR4C_KUM_13000 = EuroCent.von(NR4C_KUM_12000.add(NR4C_12.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_13000\""));
export const NR4C_KUM_14000 = EuroCent.von(NR4C_KUM_13000.add(NR4C_13.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_14000\""));
export const NR4C_KUM_15000 = EuroCent.von(NR4C_KUM_14000.add(NR4C_14.mul(FinDslNumber.ganzzahl("5"))).withMoneyAnnotation("EuroCent", "Konstante \"NR4C_KUM_15000\""));
export const ANH_JE_200KG = EuroCent.von(FinDslNumber.dezimal("7.46").withMoneyAnnotation("EuroCent", "Konstante \"ANH_JE_200KG\""));
export const ANH_MAX = EuroCent.von(FinDslNumber.dezimal("373.24").withMoneyAnnotation("EuroCent", "Konstante \"ANH_MAX\""));
export function steuerNr3(g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return EuroCent.von(NR3_BIS_2000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return EuroCent.von(NR3_KUM_2000.add(NR3_2000_3000.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200"))))));
}
return EuroCent.von(NR3_KUM_3000.add(NR3_3000_3500.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200"))))));
}
export function steuerNr4(g, klasse) {
if (klasse === KraftstgTypen.NfzKlasse.MindestensS2) {
return EuroCent.von(_nr4a(g).hoechstens(NR4A_MAX));
}
if (klasse === KraftstgTypen.NfzKlasse.S1) {
return EuroCent.von(_nr4b(g).hoechstens(NR4B_MAX));
}
if (klasse === KraftstgTypen.NfzKlasse.G1) {
return EuroCent.von(_nr4c(g).hoechstens(NR4C_MAX));
}
if (klasse === KraftstgTypen.NfzKlasse.NfzSonst) {
return EuroCent.von(_nr4d(g).hoechstens(NR4D_MAX));
}
throw new FinDslRuntimeError("Kein falls-Arm passte (wähle, Codegen).");
}
function _nr4a(g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4A_1.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4A_KUM_2000.add(NR4A_2.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4A_KUM_3000.add(NR4A_3.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4A_KUM_4000.add(NR4A_4.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4A_KUM_5000.add(NR4A_5.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4A_KUM_6000.add(NR4A_6.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4A_KUM_7000.add(NR4A_7.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4A_KUM_8000.add(NR4A_8.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4A_KUM_9000.add(NR4A_9.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4A_KUM_10000.add(NR4A_10.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4A_KUM_11000.add(NR4A_11.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4A_KUM_12000.add(NR4A_12.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
function _nr4d(g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4D_1.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4D_KUM_2000.add(NR4D_2.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4D_KUM_3000.add(NR4D_3.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4D_KUM_4000.add(NR4D_4.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4D_KUM_5000.add(NR4D_5.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4D_KUM_6000.add(NR4D_6.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4D_KUM_7000.add(NR4D_7.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4D_KUM_8000.add(NR4D_8.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4D_KUM_9000.add(NR4D_9.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4D_KUM_10000.add(NR4D_10.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4D_KUM_11000.add(NR4D_11.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4D_KUM_12000.add(NR4D_12.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4D_KUM_13000.add(NR4D_13.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4D_KUM_14000.add(NR4D_14.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4D_KUM_15000.add(NR4D_15.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
function _nr4b(g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4B_1.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4B_KUM_2000.add(NR4B_2.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4B_KUM_3000.add(NR4B_3.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4B_KUM_4000.add(NR4B_4.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4B_KUM_5000.add(NR4B_5.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4B_KUM_6000.add(NR4B_6.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4B_KUM_7000.add(NR4B_7.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4B_KUM_8000.add(NR4B_8.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4B_KUM_9000.add(NR4B_9.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4B_KUM_10000.add(NR4B_10.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4B_KUM_11000.add(NR4B_11.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4B_KUM_12000.add(NR4B_12.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4B_KUM_13000.add(NR4B_13.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4B_KUM_14000.add(NR4B_14.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4B_KUM_15000.add(NR4B_15.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
function _nr4c(g) {
if (g.compareValue(FinDslNumber.ganzzahl("2000")) <= 0) {
return NR4C_1.mul(KraftstgTypen.einheiten(Ganzzahl.von(g), Ganzzahl.von(FinDslNumber.ganzzahl("200"))));
}
if (g.compareValue(FinDslNumber.ganzzahl("3000")) <= 0) {
return NR4C_KUM_2000.add(NR4C_2.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("2000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("4000")) <= 0) {
return NR4C_KUM_3000.add(NR4C_3.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("3000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("5000")) <= 0) {
return NR4C_KUM_4000.add(NR4C_4.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("4000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("6000")) <= 0) {
return NR4C_KUM_5000.add(NR4C_5.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("5000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("7000")) <= 0) {
return NR4C_KUM_6000.add(NR4C_6.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("6000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("8000")) <= 0) {
return NR4C_KUM_7000.add(NR4C_7.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("7000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("9000")) <= 0) {
return NR4C_KUM_8000.add(NR4C_8.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("8000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("10000")) <= 0) {
return NR4C_KUM_9000.add(NR4C_9.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("9000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("11000")) <= 0) {
return NR4C_KUM_10000.add(NR4C_10.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("10000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("12000")) <= 0) {
return NR4C_KUM_11000.add(NR4C_11.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("11000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("13000")) <= 0) {
return NR4C_KUM_12000.add(NR4C_12.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("12000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("14000")) <= 0) {
return NR4C_KUM_13000.add(NR4C_13.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("13000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
if (g.compareValue(FinDslNumber.ganzzahl("15000")) <= 0) {
return NR4C_KUM_14000.add(NR4C_14.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("14000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
return NR4C_KUM_15000.add(NR4C_15.mul(KraftstgTypen.einheiten(Ganzzahl.von(g.sub(FinDslNumber.ganzzahl("15000"))), Ganzzahl.von(FinDslNumber.ganzzahl("200")))));
}
export function steuerAnhaenger(gesamtgewichtKg) {
return EuroCent.von(ANH_JE_200KG.mul(KraftstgTypen.einheiten(Ganzzahl.von(gesamtgewichtKg), Ganzzahl.von(FinDslNumber.ganzzahl("200")))).hoechstens(ANH_MAX));
}import { FinDslNumber, EuroCent, Ganzzahl, Dezimal } from './runtime/index.js';
export var Fahrzeugart = /*#__PURE__*/ function(Fahrzeugart) {
Fahrzeugart[Fahrzeugart["Kraftrad"] = 0] = "Kraftrad";
Fahrzeugart[Fahrzeugart["Pkw"] = 1] = "Pkw";
Fahrzeugart[Fahrzeugart["Wohnmobil"] = 2] = "Wohnmobil";
Fahrzeugart[Fahrzeugart["DreiLeichtvier"] = 3] = "DreiLeichtvier";
Fahrzeugart[Fahrzeugart["AndereBis3500"] = 4] = "AndereBis3500";
Fahrzeugart[Fahrzeugart["AndereUeber3500"] = 5] = "AndereUeber3500";
Fahrzeugart[Fahrzeugart["Anhaenger"] = 6] = "Anhaenger";
return Fahrzeugart;
}({});
export var Antrieb = /*#__PURE__*/ function(Antrieb) {
Antrieb[Antrieb["Fremdzuendung"] = 0] = "Fremdzuendung";
Antrieb[Antrieb["Selbstzuendung"] = 1] = "Selbstzuendung";
Antrieb[Antrieb["Elektro"] = 2] = "Elektro";
return Antrieb;
}({});
export var Erstzulassungsregime = /*#__PURE__*/ function(Erstzulassungsregime) {
Erstzulassungsregime[Erstzulassungsregime["BisJuni2009"] = 0] = "BisJuni2009";
Erstzulassungsregime[Erstzulassungsregime["JuliBisDez2020"] = 1] = "JuliBisDez2020";
Erstzulassungsregime[Erstzulassungsregime["AbJan2021"] = 2] = "AbJan2021";
return Erstzulassungsregime;
}({});
export var PkwSchadstoffstufe = /*#__PURE__*/ function(PkwSchadstoffstufe) {
PkwSchadstoffstufe[PkwSchadstoffstufe["Aa"] = 0] = "Aa";
PkwSchadstoffstufe[PkwSchadstoffstufe["Bb"] = 1] = "Bb";
PkwSchadstoffstufe[PkwSchadstoffstufe["Cc"] = 2] = "Cc";
PkwSchadstoffstufe[PkwSchadstoffstufe["Dd"] = 3] = "Dd";
PkwSchadstoffstufe[PkwSchadstoffstufe["Ee"] = 4] = "Ee";
return PkwSchadstoffstufe;
}({});
export var WohnmobilKlasse = /*#__PURE__*/ function(WohnmobilKlasse) {
WohnmobilKlasse[WohnmobilKlasse["MindestensS4"] = 0] = "MindestensS4";
WohnmobilKlasse[WohnmobilKlasse["S1bisS3"] = 1] = "S1bisS3";
WohnmobilKlasse[WohnmobilKlasse["WomoSonst"] = 2] = "WomoSonst";
return WohnmobilKlasse;
}({});
export var NfzKlasse = /*#__PURE__*/ function(NfzKlasse) {
NfzKlasse[NfzKlasse["MindestensS2"] = 0] = "MindestensS2";
NfzKlasse[NfzKlasse["S1"] = 1] = "S1";
NfzKlasse[NfzKlasse["G1"] = 2] = "G1";
NfzKlasse[NfzKlasse["NfzSonst"] = 3] = "NfzSonst";
return NfzKlasse;
}({});
export var Behinderung = /*#__PURE__*/ function(Behinderung) {
Behinderung[Behinderung["Keine"] = 0] = "Keine";
Behinderung[Behinderung["Befreit3aAbs1"] = 1] = "Befreit3aAbs1";
Behinderung[Behinderung["Ermaessigt3aAbs2"] = 2] = "Ermaessigt3aAbs2";
return Behinderung;
}({});
export class Fahrzeug {
art;
antrieb;
hubraumCcm;
co2GrammProKm;
gesamtgewichtKg;
erstzulassung;
pkwStufe;
co2FreigrenzeNr2b;
dreiradGrenzwerte;
wohnmobilklasse;
nfzklasse;
behinderung;
elektroBefreitNach3d;
constructor(art, antrieb, hubraumCcm, co2GrammProKm, gesamtgewichtKg, erstzulassung, pkwStufe, co2FreigrenzeNr2b, dreiradGrenzwerte, wohnmobilklasse, nfzklasse, behinderung, elektroBefreitNach3d){
this.art = art;
this.antrieb = antrieb;
this.hubraumCcm = hubraumCcm;
this.co2GrammProKm = co2GrammProKm;
this.gesamtgewichtKg = gesamtgewichtKg;
this.erstzulassung = erstzulassung;
this.pkwStufe = pkwStufe;
this.co2FreigrenzeNr2b = co2FreigrenzeNr2b;
this.dreiradGrenzwerte = dreiradGrenzwerte;
this.wohnmobilklasse = wohnmobilklasse;
this.nfzklasse = nfzklasse;
this.behinderung = behinderung;
this.elektroBefreitNach3d = elektroBefreitNach3d;
}
}
export class KraftfahrzeugsteuerErgebnis {
tarifbetrag;
nachElektro;
jahressteuer;
constructor(tarifbetrag, nachElektro, jahressteuer){
this.tarifbetrag = tarifbetrag;
this.nachElektro = nachElektro;
this.jahressteuer = jahressteuer;
}
}
export function einheiten(wert, teiler) {
if (wert.compareValue(FinDslNumber.ganzzahl("0")) <= 0) {
return Ganzzahl.von(FinDslNumber.ganzzahl("0"));
}
return Ganzzahl.von(wert.div(teiler).cast("Dezimal").aufrunden("Ganzzahl"));
}import { describe, it, expect } from 'vitest';
import { FinDslNumber, Ganzzahl } from './runtime/index.js';
import * as Kraftst from './Kraftst.js';
import * as KraftstgTarifLeicht from './KraftstgTarifLeicht.js';
import * as KraftstgTypen from './KraftstgTypen.js';
describe("Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)", ()=>{
it("exakt teilbar", ()=>{
expect(KraftstgTypen.einheiten(Ganzzahl.von(FinDslNumber.ganzzahl("2000")), Ganzzahl.von(FinDslNumber.ganzzahl("200"))).equalsValue(FinDslNumber.ganzzahl("10"))).toBe(true);
});
it("Teil davon rundet auf", ()=>{
expect(KraftstgTypen.einheiten(Ganzzahl.von(FinDslNumber.ganzzahl("1598")), Ganzzahl.von(FinDslNumber.ganzzahl("100"))).equalsValue(FinDslNumber.ganzzahl("16"))).toBe(true);
});
it("knapp über Grenze", ()=>{
expect(KraftstgTypen.einheiten(Ganzzahl.von(FinDslNumber.ganzzahl("601")), Ganzzahl.von(FinDslNumber.ganzzahl("25"))).equalsValue(FinDslNumber.ganzzahl("25"))).toBe(true);
});
it("0 oder negativ → 0", ()=>{
expect(KraftstgTypen.einheiten(Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("200"))).equalsValue(FinDslNumber.ganzzahl("0"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)", ()=>{
it("125 cm³ → 5 × 1,84 = 9,20 €", ()=>{
expect(KraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("125"))).equalsValue(FinDslNumber.dezimal("9.20"))).toBe(true);
});
it("600 cm³ → 24 × 1,84 = 44,16 €", ()=>{
expect(KraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("600"))).equalsValue(FinDslNumber.dezimal("44.16"))).toBe(true);
});
it("601 cm³ → 25 × 1,84 = 46,00 €", ()=>{
expect(KraftstgTarifLeicht.steuerKraftrad(Ganzzahl.von(FinDslNumber.ganzzahl("601"))).equalsValue(FinDslNumber.dezimal("46.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)", ()=>{
it("Benziner 1.598 cm³, 120 g/km → 32,00 + 51,00 = 83,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1598")), Ganzzahl.von(FinDslNumber.ganzzahl("120")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("83.00"))).toBe(true);
});
it("Diesel 1.968 cm³, 150 g/km → 190,00 + 121,50 = 311,50 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1968")), Ganzzahl.von(FinDslNumber.ganzzahl("150")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("311.50"))).toBe(true);
});
it("CO₂ genau 95 g/km → kein Aufschlag (nur Hubraum 20,00 €)", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("999")), Ganzzahl.von(FinDslNumber.ganzzahl("95")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("20.00"))).toBe(true);
});
it("alle CO₂-Bänder: 1.000 cm³, 200 g/km → 20,00 + 280,00 = 300,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1000")), Ganzzahl.von(FinDslNumber.ganzzahl("200")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("300.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020", ()=>{
it("Benziner 1.390 cm³, 130 g/km, Freigrenze 110 → 28,00 + 40,00 = 68,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1390")), Ganzzahl.von(FinDslNumber.ganzzahl("130")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.JuliBisDez2020, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("110")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("68.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)", ()=>{
it("Benziner Stufe ee, 1.600 cm³ → 16 × 25,36 = 405,76 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1600")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.BisJuni2009, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("405.76"))).toBe(true);
});
it("Diesel Stufe aa, 1.900 cm³ → 19 × 15,44 = 293,36 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1900")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.BisJuni2009, KraftstgTypen.PkwSchadstoffstufe.Aa, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("293.36"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)", ()=>{
it("≥ S4, 3.000 kg → 160,00 + 50,00 = 210,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Wohnmobil, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("3000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.MindestensS4, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("210.00"))).toBe(true);
});
it("≥ S4, sehr schwer → Höchstbetrag 800,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Wohnmobil, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("20000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.MindestensS4, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("800.00"))).toBe(true);
});
it("S3–S1, 3.000 kg → 240,00 + 50,00 = 290,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Wohnmobil, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("3000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.S1bisS3, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("290.00"))).toBe(true);
});
it("sonst, 6.000 kg → 400,00 + 150,00 + 75,00 = 625,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Wohnmobil, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("6000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("625.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)", ()=>{
it("2.800 kg → 112,50 + 48,08 = 160,58 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereBis3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("2800")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("160.58"))).toBe(true);
});
it("3.500 kg → 112,50 + 60,10 + 38,34 = 210,94 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereBis3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("3500")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("210.94"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)", ()=>{
it("Buchst. a (≥ S2), 5.000 kg → 173,90 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.MindestensS2, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("173.90"))).toBe(true);
});
it("Buchst. a, sehr schwer → Höchstbetrag 556,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("20000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.MindestensS2, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("556.00"))).toBe(true);
});
it("Buchst. c (G1), 5.000 kg → 260,80 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.G1, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("260.80"))).toBe(true);
});
it("Buchst. d (sonst), 5.000 kg → 304,25 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("304.25"))).toBe(true);
});
it("Buchst. d, sehr schwer → Höchstbetrag 1.681,00 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Selbstzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("40000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("1681.00"))).toBe(true);
});
});
describe("§ 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)", ()=>{
it("2.000 kg → 10 × 7,46 = 74,60 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Anhaenger, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("2000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("74.60"))).toBe(true);
});
it("schwer → Höchstbetrag 373,24 €", ()=>{
const f = new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Anhaenger, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("20000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false);
expect(Kraftst.tarifNach9Abs1(f).equalsValue(FinDslNumber.dezimal("373.24"))).toBe(true);
});
});
describe("§ 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)", ()=>{
it("E-Kfz Nr. 3, 3.000 kg → 172,60 / 2 = 86,30 €", ()=>{
const e = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereBis3500, KraftstgTypen.Antrieb.Elektro, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("3000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false));
expect(e.tarifbetrag.equalsValue(FinDslNumber.dezimal("172.60"))).toBe(true);
expect(e.nachElektro.equalsValue(FinDslNumber.dezimal("86.30"))).toBe(true);
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("86.30"))).toBe(true);
});
it("E-Kfz Nr. 4a, 5.000 kg → 173,90 / 2 = 86,95 €", ()=>{
const e = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Elektro, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.MindestensS2, KraftstgTypen.Behinderung.Keine, false));
expect(e.nachElektro.equalsValue(FinDslNumber.dezimal("86.95"))).toBe(true);
});
it("E-Kfz Nr. 4d → KEINE 50 %-Ermäßigung (nur a)", ()=>{
const e = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.AndereUeber3500, KraftstgTypen.Antrieb.Elektro, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("5000")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false));
expect(e.nachElektro.equalsValue(FinDslNumber.dezimal("304.25"))).toBe(true);
});
});
describe("§ 3a / § 3d — Vergünstigungen / Befreiungen", ()=>{
it("§ 3a Abs. 1 (H/Bl/aG) → volle Befreiung 0,00 €", ()=>{
const e = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Kraftrad, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("125")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Befreit3aAbs1, false));
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
it("§ 3a Abs. 2 → 50 % (9,20 / 2 = 4,60 €)", ()=>{
const e = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Kraftrad, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("125")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Ermaessigt3aAbs2, false));
expect(e.tarifbetrag.equalsValue(FinDslNumber.dezimal("9.20"))).toBe(true);
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("4.60"))).toBe(true);
});
it("§ 3d E-Befreiung aktiv → 0,00 € (trotz Tarifbetrag)", ()=>{
const e = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Elektro, Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, true));
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("0.00"))).toBe(true);
});
});
describe("Gesamtberechnung — vollständiges Ergebnis", ()=>{
it("Benziner-PKW ab 2021, 1.598 cm³, 120 g/km", ()=>{
const e = Kraftst.berechneKraftfahrzeugsteuer(new KraftstgTypen.Fahrzeug(KraftstgTypen.Fahrzeugart.Pkw, KraftstgTypen.Antrieb.Fremdzuendung, Ganzzahl.von(FinDslNumber.ganzzahl("1598")), Ganzzahl.von(FinDslNumber.ganzzahl("120")), Ganzzahl.von(FinDslNumber.ganzzahl("0")), KraftstgTypen.Erstzulassungsregime.AbJan2021, KraftstgTypen.PkwSchadstoffstufe.Ee, Ganzzahl.von(FinDslNumber.ganzzahl("95")), false, KraftstgTypen.WohnmobilKlasse.WomoSonst, KraftstgTypen.NfzKlasse.NfzSonst, KraftstgTypen.Behinderung.Keine, false));
expect(e.tarifbetrag.equalsValue(FinDslNumber.dezimal("83.00"))).toBe(true);
expect(e.nachElektro.equalsValue(FinDslNumber.dezimal("83.00"))).toBe(true);
expect(e.jahressteuer.equalsValue(FinDslNumber.dezimal("83.00"))).toBe(true);
});
});Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§§ 8, 9 KraftStG)
Bildet die Jahressteuer nach dem Kraftfahrzeugsteuergesetz (KraftStG 2002, i.d.g.F.) vollständig ab:
Inhalt
- kraftst
- Konstanten
- Funktionen
- kraftst.test
- Prüfungen
- prüfe Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)
- prüfe § 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)
- prüfe § 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)
- prüfe § 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020
- prüfe § 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)
- prüfe § 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)
- prüfe § 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)
- prüfe § 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)
- prüfe § 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)
- prüfe § 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)
- prüfe § 3a / § 3d — Vergünstigungen / Befreiungen
- prüfe Gesamtberechnung — vollständiges Ergebnis
- Prüfungen
- kraftstg-tarif-leicht
- Konstanten
- konst KRAD_JE_25CCM
- konst PKW_C_HUBRAUM_OTTO
- konst PKW_C_HUBRAUM_DIESEL
- konst PKW_C_CO2_95_115
- konst PKW_C_CO2_115_135
- konst PKW_C_CO2_135_155
- konst PKW_C_CO2_155_175
- konst PKW_C_CO2_175_195
- konst PKW_C_CO2_UEBER_195
- konst PKW_C_CO2_FREI
- konst PKW_B_HUBRAUM_OTTO
- konst PKW_B_HUBRAUM_DIESEL
- konst PKW_B_CO2_JE_GRAMM
- konst PKW_A_AA_OTTO
- konst PKW_A_AA_DIESEL
- konst PKW_A_BB_OTTO
- konst PKW_A_BB_DIESEL
- konst PKW_A_CC_OTTO
- konst PKW_A_CC_DIESEL
- konst PKW_A_DD_OTTO
- konst PKW_A_DD_DIESEL
- konst PKW_A_EE_OTTO
- konst PKW_A_EE_DIESEL
- konst DREIRAD_GW_OTTO
- konst DREIRAD_GW_DIESEL
- konst DREIRAD_SONST_OTTO
- konst DREIRAD_SONST_DIESEL
- konst WOMO_S4_BIS_2000
- konst WOMO_S4_UEBER_2000
- konst WOMO_S4_MAX
- konst WOMO_S1_BIS_2000
- konst WOMO_S1_UEBER_2000
- konst WOMO_S1_MAX
- konst WOMO_SONST_BIS_2000
- konst WOMO_SONST_2000_5000
- konst WOMO_SONST_5000_12000
- konst WOMO_SONST_UEBER_12000
- Funktionen
- Konstanten
- kraftstg-tarif-nutzfahrzeug
- Konstanten
- konst NR3_BIS_2000
- konst NR3_2000_3000
- konst NR3_3000_3500
- konst NR3_KUM_2000
- konst NR3_KUM_3000
- konst NR4A_1
- konst NR4A_2
- konst NR4A_3
- konst NR4A_4
- konst NR4A_5
- konst NR4A_6
- konst NR4A_7
- konst NR4A_8
- konst NR4A_9
- konst NR4A_10
- konst NR4A_11
- konst NR4A_12
- konst NR4A_MAX
- konst NR4A_KUM_2000
- konst NR4A_KUM_3000
- konst NR4A_KUM_4000
- konst NR4A_KUM_5000
- konst NR4A_KUM_6000
- konst NR4A_KUM_7000
- konst NR4A_KUM_8000
- konst NR4A_KUM_9000
- konst NR4A_KUM_10000
- konst NR4A_KUM_11000
- konst NR4A_KUM_12000
- konst NR4D_1
- konst NR4D_2
- konst NR4D_3
- konst NR4D_4
- konst NR4D_5
- konst NR4D_6
- konst NR4D_7
- konst NR4D_8
- konst NR4D_9
- konst NR4D_10
- konst NR4D_11
- konst NR4D_12
- konst NR4D_13
- konst NR4D_14
- konst NR4D_15
- konst NR4D_MAX
- konst NR4D_KUM_2000
- konst NR4D_KUM_3000
- konst NR4D_KUM_4000
- konst NR4D_KUM_5000
- konst NR4D_KUM_6000
- konst NR4D_KUM_7000
- konst NR4D_KUM_8000
- konst NR4D_KUM_9000
- konst NR4D_KUM_10000
- konst NR4D_KUM_11000
- konst NR4D_KUM_12000
- konst NR4D_KUM_13000
- konst NR4D_KUM_14000
- konst NR4D_KUM_15000
- konst NR4B_1
- konst NR4B_2
- konst NR4B_3
- konst NR4B_4
- konst NR4B_5
- konst NR4B_6
- konst NR4B_7
- konst NR4B_8
- konst NR4B_9
- konst NR4B_10
- konst NR4B_11
- konst NR4B_12
- konst NR4B_13
- konst NR4B_14
- konst NR4B_15
- konst NR4B_MAX
- konst NR4B_KUM_2000
- konst NR4B_KUM_3000
- konst NR4B_KUM_4000
- konst NR4B_KUM_5000
- konst NR4B_KUM_6000
- konst NR4B_KUM_7000
- konst NR4B_KUM_8000
- konst NR4B_KUM_9000
- konst NR4B_KUM_10000
- konst NR4B_KUM_11000
- konst NR4B_KUM_12000
- konst NR4B_KUM_13000
- konst NR4B_KUM_14000
- konst NR4B_KUM_15000
- konst NR4C_1
- konst NR4C_2
- konst NR4C_3
- konst NR4C_4
- konst NR4C_5
- konst NR4C_6
- konst NR4C_7
- konst NR4C_8
- konst NR4C_9
- konst NR4C_10
- konst NR4C_11
- konst NR4C_12
- konst NR4C_13
- konst NR4C_14
- konst NR4C_15
- konst NR4C_MAX
- konst NR4C_KUM_2000
- konst NR4C_KUM_3000
- konst NR4C_KUM_4000
- konst NR4C_KUM_5000
- konst NR4C_KUM_6000
- konst NR4C_KUM_7000
- konst NR4C_KUM_8000
- konst NR4C_KUM_9000
- konst NR4C_KUM_10000
- konst NR4C_KUM_11000
- konst NR4C_KUM_12000
- konst NR4C_KUM_13000
- konst NR4C_KUM_14000
- konst NR4C_KUM_15000
- konst ANH_JE_200KG
- konst ANH_MAX
- Funktionen
- Konstanten
- kraftstg-typen
kraftst
kraftst.findsl
Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§§ 8, 9 KraftStG)
Bildet die Jahressteuer nach dem Kraftfahrzeugsteuergesetz (KraftStG 2002, i.d.g.F.) vollständig ab:
- § 8 KraftStG — Bemessungsgrundlage (Hubraum / CO₂ / zulässiges Gesamtgewicht je nach Fahrzeugart) → Auswahl des Tarifs.
- § 9 Abs. 1 KraftStG — Steuersatz, alle Nummern: Nr. 1 Krafträder · Nr. 2 a/b/c Personenkraftwagen (Erstzulassung bis 30.6.2009 / 1.7.2009–31.12.2020 / ab 1.1.2021) · Nr. 2a Wohnmobile · Nr. 2b dreirädrige/leichte vierrädrige Kfz · Nr. 3 andere Kfz ≤ 3.500 kg · Nr. 4 a/b/c/d Kfz > 3.500 kg · Nr. 5 Anhänger.
- § 9 Abs. 2 KraftStG — 50 % Ermäßigung für Elektrofahrzeuge (nur Beträge nach Abs. 1 Nr. 3 oder Nr. 4 Buchst. a).
- § 9 Abs. 3 KraftStG — Tagessteuer für ausländische Fahrzeuge.
- § 9 Abs. 4 KraftStG — Jahressteuer für rote / Oldtimer-Kennzeichen.
- § 3a KraftStG — Vergünstigungen für Schwerbehinderte (Abs. 1 volle Befreiung · Abs. 2 50 % Ermäßigung).
- § 3d KraftStG — Steuerbefreiung für Elektrofahrzeuge (Erstzulassung 18.5.2011–31.12.2030: 10 Jahre, längstens bis 31.12.2035).
- § 9a KraftStG — Diesel-Zuschlag: ausgelaufen (galt nur 1.4.2007–31.3.2011); wird nicht mehr angewandt (dokumentiert).
Progressive Tarife (Nr. 2a/3/4) werden je angefangene 200-kg-Stufe
in der jeweiligen Gewichtsspanne berechnet; die kumulierten
Stufenbeträge sind als auditierbare Konstanten aus den Stufensätzen
abgeleitet (keine handsummierten Werte). „Je angefangene Einheit"
nutzt das Stdlib-Builtin aufrunden.
Bewusst nicht modelliert (dokumentiert, außerhalb der reinen Steuerbetragsberechnung): Verfahren §§ 11/12 (Entrichtung, Festsetzung), Mindestdauer/anteilige Berechnung § 5, Ausnahmekatalog § 3, widerrechtliche Benutzung. Die Zuordnung der Schadstoff-/ Geräusch-/Erstzulassungsklasse trifft nach § 2 Abs. 2 Nr. 2 KraftStG verbindlich die Zulassungsbehörde — sie geht hier als geprüfte Eingabe ein (nicht aus EU-Richtlinien hergeleitet).
Konstanten
konst KZ_NUR_KRAD
konst KZ_NUR_KRAD: EuroCent = 46,02
Rotes/Oldtimer-Kennzeichen, nur für Krafträder gültig (Jahressteuer).
Quelle: § 9 Absatz 4 Nummer 1 KraftStG — § 9 KraftStG
konst KZ_UEBRIGE
konst KZ_UEBRIGE: EuroCent = 191,73
Rotes/Oldtimer-Kennzeichen, im Übrigen (Jahressteuer).
Quelle: § 9 Absatz 4 Nummer 2 KraftStG — § 9 KraftStG
Funktionen
fn TarifNach9Abs1
fn TarifNach9Abs1(f: Fahrzeug): EuroCent
Tarifbetrag nach § 9 Abs. 1 KraftStG: wählt anhand der Fahrzeugart (§ 8 KraftStG) die einschlägige Nummer.
Parameter
| Name | Beschreibung |
|---|---|
f |
Fahrzeug-Eingaben. |
Rückgabe — Steuer nach § 9 Abs. 1 KraftStG (vor Abs. 2 / § 3a / § 3d).
Quelle: § 9 Absatz 1 KraftStG — § 9 KraftStG
fn BerechneKraftfahrzeugsteuer
fn BerechneKraftfahrzeugsteuer(f: Fahrzeug): KraftfahrzeugsteuerErgebnis
Vollständige Festsetzung der Kraftfahrzeug-Jahressteuer in der gesetzlichen Reihenfolge: § 8 (Tarifauswahl) → § 9 Abs. 1 (Tarifbetrag) → § 9 Abs. 2 (Elektro-Ermäßigung) → § 3a / § 3d (Vergünstigung/Befreiung). Liefert alle Zwischengrößen.
Parameter
| Name | Beschreibung |
|---|---|
f |
Fahrzeug-Eingaben. |
Rückgabe — Vollständig dokumentiertes Berechnungsergebnis.
Quelle: § 9 KraftStG — § 9 KraftStG
kraftst.test
kraftst.test.findsl
Akzeptanztests — Kraftfahrzeugsteuer (§§ 8, 9 KraftStG)
prüfe-Blöcke zur Datei kraftstg-steuer. Alle Sollwerte sind
unabhängig aus dem Gesetzeswortlaut gerechnet (KraftStG 2002,
i.d.g.F.): „je angefangene Einheit" = Aufrundung; progressive
Gewichts-/CO₂-Tarife stufenweise summiert; Höchstbeträge gedeckelt.
Diese Datei enthält ausschließlich die prüfe-Blöcke.
Prüfungen
prüfe Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)
prüfe "Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)"
Testfall — exakt teilbar
Einheiten(2000, 200) == 10
Testfall — Teil davon rundet auf
Einheiten(1598, 100) == 16
Testfall — knapp über Grenze
Einheiten(601, 25) == 25
Testfall — 0 oder negativ → 0
Einheiten(0, 200) == 0
prüfe § 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)
prüfe "§ 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)"
Testfall — 125 cm³ → 5 × 1,84 = 9,20 €
SteuerKraftrad(125) == 9,20
Testfall — 600 cm³ → 24 × 1,84 = 44,16 €
SteuerKraftrad(600) == 44,16
Testfall — 601 cm³ → 25 × 1,84 = 46,00 €
SteuerKraftrad(601) == 46,00
prüfe § 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)"
Testfall — Benziner 1.598 cm³, 120 g/km → 32,00 + 51,00 = 83,00 €
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1598, co2GrammProKm = 120,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 83,00
Testfall — Diesel 1.968 cm³, 150 g/km → 190,00 + 121,50 = 311,50 €
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Selbstzuendung,
hubraumCcm = 1968, co2GrammProKm = 150,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 311,50
Testfall — CO₂ genau 95 g/km → kein Aufschlag (nur Hubraum 20,00 €)
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 999, co2GrammProKm = 95,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 20,00
Testfall — alle CO₂-Bänder: 1.000 cm³, 200 g/km → 20,00 + 280,00 = 300,00 €
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1000, co2GrammProKm = 200,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 300,00
prüfe § 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020"
Testfall — Benziner 1.390 cm³, 130 g/km, Freigrenze 110 → 28,00 + 40,00 = 68,00 €
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1390, co2GrammProKm = 130,
erstzulassung = JuliBisDez2020, co2FreigrenzeNr2b = 110,
)
TarifNach9Abs1(f) == 68,00
prüfe § 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)"
Testfall — Benziner Stufe ee, 1.600 cm³ → 16 × 25,36 = 405,76 €
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1600,
erstzulassung = BisJuni2009, pkwStufe = Ee,
)
TarifNach9Abs1(f) == 405,76
Testfall — Diesel Stufe aa, 1.900 cm³ → 19 × 15,44 = 293,36 €
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Selbstzuendung,
hubraumCcm = 1900,
erstzulassung = BisJuni2009, pkwStufe = Aa,
)
TarifNach9Abs1(f) == 293,36
prüfe § 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)
prüfe "§ 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)"
Testfall — ≥ S4, 3.000 kg → 160,00 + 50,00 = 210,00 €
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 3000, wohnmobilklasse = MindestensS4,
)
TarifNach9Abs1(f) == 210,00
Testfall — ≥ S4, sehr schwer → Höchstbetrag 800,00 €
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 20000, wohnmobilklasse = MindestensS4,
)
TarifNach9Abs1(f) == 800,00
Testfall — S3–S1, 3.000 kg → 240,00 + 50,00 = 290,00 €
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 3000, wohnmobilklasse = S1bisS3,
)
TarifNach9Abs1(f) == 290,00
Testfall — sonst, 6.000 kg → 400,00 + 150,00 + 75,00 = 625,00 €
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 6000, wohnmobilklasse = WomoSonst,
)
TarifNach9Abs1(f) == 625,00
prüfe § 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)
prüfe "§ 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)"
Testfall — 2.800 kg → 112,50 + 48,08 = 160,58 €
var f: Fahrzeug = Fahrzeug(
art = AndereBis3500, antrieb = Selbstzuendung, gesamtgewichtKg = 2800,
)
TarifNach9Abs1(f) == 160,58
Testfall — 3.500 kg → 112,50 + 60,10 + 38,34 = 210,94 €
var f: Fahrzeug = Fahrzeug(
art = AndereBis3500, antrieb = Selbstzuendung, gesamtgewichtKg = 3500,
)
TarifNach9Abs1(f) == 210,94
prüfe § 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)
prüfe "§ 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)"
Testfall — Buchst. a (≥ S2), 5.000 kg → 173,90 €
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = MindestensS2,
)
TarifNach9Abs1(f) == 173,90
Testfall — Buchst. a, sehr schwer → Höchstbetrag 556,00 €
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 20000, nfzklasse = MindestensS2,
)
TarifNach9Abs1(f) == 556,00
Testfall — Buchst. c (G1), 5.000 kg → 260,80 €
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = G1,
)
TarifNach9Abs1(f) == 260,80
Testfall — Buchst. d (sonst), 5.000 kg → 304,25 €
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = NfzSonst,
)
TarifNach9Abs1(f) == 304,25
Testfall — Buchst. d, sehr schwer → Höchstbetrag 1.681,00 €
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 40000, nfzklasse = NfzSonst,
)
TarifNach9Abs1(f) == 1.681,00
prüfe § 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)
prüfe "§ 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)"
Testfall — 2.000 kg → 10 × 7,46 = 74,60 €
var f: Fahrzeug = Fahrzeug(
art = Anhaenger, antrieb = Fremdzuendung, gesamtgewichtKg = 2000,
)
TarifNach9Abs1(f) == 74,60
Testfall — schwer → Höchstbetrag 373,24 €
var f: Fahrzeug = Fahrzeug(
art = Anhaenger, antrieb = Fremdzuendung, gesamtgewichtKg = 20000,
)
TarifNach9Abs1(f) == 373,24
prüfe § 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)
prüfe "§ 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)"
Testfall — E-Kfz Nr. 3, 3.000 kg → 172,60 / 2 = 86,30 €
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(art = AndereBis3500, antrieb = Elektro, gesamtgewichtKg = 3000),
)
e.tarifbetrag == 172,60 und e.nachElektro == 86,30 und e.jahressteuer == 86,30
Testfall — E-Kfz Nr. 4a, 5.000 kg → 173,90 / 2 = 86,95 €
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = AndereUeber3500, antrieb = Elektro,
gesamtgewichtKg = 5000, nfzklasse = MindestensS2,
),
)
e.nachElektro == 86,95
Testfall — E-Kfz Nr. 4d → KEINE 50 %-Ermäßigung (nur a)
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = AndereUeber3500, antrieb = Elektro,
gesamtgewichtKg = 5000, nfzklasse = NfzSonst,
),
)
e.nachElektro == 304,25
prüfe § 3a / § 3d — Vergünstigungen / Befreiungen
prüfe "§ 3a / § 3d — Vergünstigungen / Befreiungen"
Testfall — § 3a Abs. 1 (H/Bl/aG) → volle Befreiung 0,00 €
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Kraftrad, antrieb = Fremdzuendung,
hubraumCcm = 125, behinderung = Befreit3aAbs1,
),
)
e.jahressteuer == 0,00
Testfall — § 3a Abs. 2 → 50 % (9,20 / 2 = 4,60 €)
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Kraftrad, antrieb = Fremdzuendung,
hubraumCcm = 125, behinderung = Ermaessigt3aAbs2,
),
)
e.tarifbetrag == 9,20 und e.jahressteuer == 4,60
Testfall — § 3d E-Befreiung aktiv → 0,00 € (trotz Tarifbetrag)
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Pkw, antrieb = Elektro,
hubraumCcm = 0, co2GrammProKm = 0,
erstzulassung = AbJan2021, elektroBefreitNach3d = wahr,
),
)
e.jahressteuer == 0,00
prüfe Gesamtberechnung — vollständiges Ergebnis
prüfe "Gesamtberechnung — vollständiges Ergebnis"
Testfall — Benziner-PKW ab 2021, 1.598 cm³, 120 g/km
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1598, co2GrammProKm = 120,
erstzulassung = AbJan2021,
),
)
e.tarifbetrag == 83,00 und e.nachElektro == 83,00 und e.jahressteuer == 83,00
kraftstg-tarif-leicht
kraftstg-tarif-leicht.findsl
Kraftfahrzeugsteuer — Tarif leichte Fahrzeuge (§ 9 Abs. 1 Nr. 1/2/2a/2b)
Konstanten und Tarif-Funktionen für Krafträder (Nr. 1),
Personenkraftwagen (Nr. 2 Buchst. a/b/c), Wohnmobile (Nr. 2a) und
dreirädrige/leichte vierrädrige Kfz (Nr. 2b) — aus kraftstg-steuer
herausgelöst. Konstanten und Logik liegen bewusst zusammen (ein
Rechtsbereich = eine Datei, minimale modulübergreifende Importe).
Einstiegsfunktionen steuerKraftrad, steuerPkw, steuerWohnmobil,
steuerDreiLeichtvier wählt der Orchestrator kraftstg-steuer
nach Fahrzeugart (§ 8 KraftStG) aus.
Konstanten
konst KRAD_JE_25CCM
konst KRAD_JE_25CCM: EuroCent = 1,84
Kraftrad: je angefangene 25 cm³ Hubraum 1,84 € (§ 9 Abs. 1 Nr. 1 KraftStG).
Quelle: § 9 Absatz 1 Nummer 1 KraftStG — § 9 KraftStG
konst PKW_C_HUBRAUM_OTTO
konst PKW_C_HUBRAUM_OTTO: EuroCent = 2,00
PKW Nr. 2c (Erstzulassung ab 1.1.2021): Sockel je 100 cm³, Fremdzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_C_HUBRAUM_DIESEL
konst PKW_C_HUBRAUM_DIESEL: EuroCent = 9,50
PKW Nr. 2c: Sockel je 100 cm³, Selbstzündung (Diesel).
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_C_CO2_95_115
konst PKW_C_CO2_95_115: EuroCent = 2,00
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 95 bis 115 g/km.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_C_CO2_115_135
konst PKW_C_CO2_115_135: EuroCent = 2,20
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 115 bis 135 g/km.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_C_CO2_135_155
konst PKW_C_CO2_135_155: EuroCent = 2,50
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 135 bis 155 g/km.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_C_CO2_155_175
konst PKW_C_CO2_155_175: EuroCent = 2,90
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 155 bis 175 g/km.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_C_CO2_175_195
konst PKW_C_CO2_175_195: EuroCent = 3,40
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 175 bis 195 g/km.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_C_CO2_UEBER_195
konst PKW_C_CO2_UEBER_195: EuroCent = 4,00
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 195 g/km.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_C_CO2_FREI
konst PKW_C_CO2_FREI: Ganzzahl = 95
CO₂-Freibetrag: erst Emissionen ÜBER 95 g/km sind aufschlagspflichtig (Nr. 2c).
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — § 9 KraftStG
konst PKW_B_HUBRAUM_OTTO
konst PKW_B_HUBRAUM_OTTO: EuroCent = 2,00
PKW Nr. 2b (Erstzulassung 1.7.2009–31.12.2020): Sockel je 100 cm³ Fremdzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG — § 9 KraftStG
konst PKW_B_HUBRAUM_DIESEL
konst PKW_B_HUBRAUM_DIESEL: EuroCent = 9,50
PKW Nr. 2b: Sockel je 100 cm³ Selbstzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG — § 9 KraftStG
konst PKW_B_CO2_JE_GRAMM
konst PKW_B_CO2_JE_GRAMM: EuroCent = 2,00
PKW Nr. 2b: CO₂-Aufschlag je g/km über der (datumsabhängigen) Freigrenze.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG — § 9 KraftStG
konst PKW_A_AA_OTTO
konst PKW_A_AA_OTTO: EuroCent = 6,75
PKW Nr. 2a (Erstzulassung bis 30.6.2009), je 100 cm³, Stufe aa — Fremdzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG — § 9 KraftStG
konst PKW_A_AA_DIESEL
konst PKW_A_AA_DIESEL: EuroCent = 15,44
Stufe aa — Selbstzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG — § 9 KraftStG
konst PKW_A_BB_OTTO
konst PKW_A_BB_OTTO: EuroCent = 7,36
Stufe bb — Fremdzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG — § 9 KraftStG
konst PKW_A_BB_DIESEL
konst PKW_A_BB_DIESEL: EuroCent = 16,05
Stufe bb — Selbstzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG — § 9 KraftStG
konst PKW_A_CC_OTTO
konst PKW_A_CC_OTTO: EuroCent = 15,13
Stufe cc — Fremdzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG — § 9 KraftStG
konst PKW_A_CC_DIESEL
konst PKW_A_CC_DIESEL: EuroCent = 27,35
Stufe cc — Selbstzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG — § 9 KraftStG
konst PKW_A_DD_OTTO
konst PKW_A_DD_OTTO: EuroCent = 21,07
Stufe dd — Fremdzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG — § 9 KraftStG
konst PKW_A_DD_DIESEL
konst PKW_A_DD_DIESEL: EuroCent = 33,29
Stufe dd — Selbstzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG — § 9 KraftStG
konst PKW_A_EE_OTTO
konst PKW_A_EE_OTTO: EuroCent = 25,36
Stufe ee (höchste, keine Voraussetzungen erfüllt) — Fremdzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG — § 9 KraftStG
konst PKW_A_EE_DIESEL
konst PKW_A_EE_DIESEL: EuroCent = 37,58
Stufe ee — Selbstzündung.
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG — § 9 KraftStG
konst DREIRAD_GW_OTTO
konst DREIRAD_GW_OTTO: EuroCent = 21,07
Dreirad/leichtes Vierrad, Grenzwerte eingehalten, Fremdzündung (je 100 cm³).
Quelle: § 9 Absatz 1 Nummer 2b Buchstabe a KraftStG — § 9 KraftStG
konst DREIRAD_GW_DIESEL
konst DREIRAD_GW_DIESEL: EuroCent = 33,29
Grenzwerte eingehalten, Selbstzündung.
Quelle: § 9 Absatz 1 Nummer 2b Buchstabe a KraftStG — § 9 KraftStG
konst DREIRAD_SONST_OTTO
konst DREIRAD_SONST_OTTO: EuroCent = 25,36
Grenzwerte nicht eingehalten, Fremdzündung.
Quelle: § 9 Absatz 1 Nummer 2b Buchstabe b KraftStG — § 9 KraftStG
konst DREIRAD_SONST_DIESEL
konst DREIRAD_SONST_DIESEL: EuroCent = 37,58
Grenzwerte nicht eingehalten, Selbstzündung.
Quelle: § 9 Absatz 1 Nummer 2b Buchstabe b KraftStG — § 9 KraftStG
konst WOMO_S4_BIS_2000
konst WOMO_S4_BIS_2000: EuroCent = 16,00
Wohnmobil ≥ Schadstoffklasse S4: bis 2.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG — § 9 KraftStG
konst WOMO_S4_UEBER_2000
konst WOMO_S4_UEBER_2000: EuroCent = 10,00
Wohnmobil ≥ S4: über 2.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG — § 9 KraftStG
konst WOMO_S4_MAX
konst WOMO_S4_MAX: EuroCent = 800,00
Wohnmobil ≥ S4: Höchstbetrag.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG — § 9 KraftStG
konst WOMO_S1_BIS_2000
konst WOMO_S1_BIS_2000: EuroCent = 24,00
Wohnmobil S3/S2/S1: bis 2.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG — § 9 KraftStG
konst WOMO_S1_UEBER_2000
konst WOMO_S1_UEBER_2000: EuroCent = 10,00
Wohnmobil S3/S2/S1: über 2.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG — § 9 KraftStG
konst WOMO_S1_MAX
konst WOMO_S1_MAX: EuroCent = 1.000,00
Wohnmobil S3/S2/S1: Höchstbetrag.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG — § 9 KraftStG
konst WOMO_SONST_BIS_2000
konst WOMO_SONST_BIS_2000: EuroCent = 40,00
Wohnmobil sonst: bis 2.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG — § 9 KraftStG
konst WOMO_SONST_2000_5000
konst WOMO_SONST_2000_5000: EuroCent = 10,00
Wohnmobil sonst: über 2.000 bis 5.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG — § 9 KraftStG
konst WOMO_SONST_5000_12000
konst WOMO_SONST_5000_12000: EuroCent = 15,00
Wohnmobil sonst: über 5.000 bis 12.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG — § 9 KraftStG
konst WOMO_SONST_UEBER_12000
konst WOMO_SONST_UEBER_12000: EuroCent = 25,00
Wohnmobil sonst: über 12.000 kg je 200 kg (kein Höchstbetrag).
Quelle: § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG — § 9 KraftStG
Funktionen
fn SteuerKraftrad
fn SteuerKraftrad(hubraumCcm: Ganzzahl): EuroCent
Jahressteuer für Krafträder: je angefangene 25 cm³ Hubraum 1,84 € (§ 9 Abs. 1 Nr. 1 KraftStG).
Parameter
| Name | Beschreibung |
|---|---|
hubraumCcm |
Hubraum in cm³. |
Rückgabe — Jahressteuer des Kraftrads.
Quelle: § 9 Absatz 1 Nummer 1 KraftStG — § 9 KraftStG
fn SteuerPkw
fn SteuerPkw(f: Fahrzeug): EuroCent
Personenkraftwagen nach § 9 Abs. 1 Nr. 2 KraftStG: wählt anhand des Erstzulassungs-Regimes Buchst. a, b oder c.
Parameter
| Name | Beschreibung |
|---|---|
f |
Fahrzeug-Eingaben. |
Rückgabe — Jahressteuer des PKW.
Quelle: § 9 Absatz 1 Nummer 2 KraftStG — § 9 KraftStG
fn SteuerDreiLeichtvier
fn SteuerDreiLeichtvier(hubraumCcm: Ganzzahl, grenzwerte: Wahrheitswert, antrieb: Antrieb): EuroCent
Dreirädrige und leichte vierrädrige Kraftfahrzeuge (§ 9 Abs. 1 Nr. 2b KraftStG): je angefangene 100 cm³ ein nach Grenzwert-Einhaltung und Antrieb gestaffelter Satz.
Parameter
| Name | Beschreibung |
|---|---|
hubraumCcm |
Hubraum in cm³. |
grenzwerte |
Grenzwerte (RL 97/24/EG Zeile A 2003) eingehalten? |
antrieb |
Antriebsart. |
Rückgabe — Jahressteuer des Fahrzeugs.
Quelle: § 9 Absatz 1 Nummer 2b KraftStG — § 9 KraftStG
fn SteuerWohnmobil
fn SteuerWohnmobil(gesamtgewichtKg: Ganzzahl, klasse: WohnmobilKlasse): EuroCent
Wohnmobil nach § 9 Abs. 1 Nr. 2a KraftStG: je angefangene 200 kg Gesamtgewicht, progressiv nach Gewichtsspanne und Schadstoffklasse, mit Höchstbetrag (Buchst. a/b) bzw. ohne (Buchst. c).
Parameter
| Name | Beschreibung |
|---|---|
gesamtgewichtKg |
verkehrsrechtlich zulässiges Gesamtgewicht (kg). |
klasse |
Schadstoffklasse des Wohnmobils. |
Rückgabe — Jahressteuer des Wohnmobils.
Quelle: § 9 Absatz 1 Nummer 2a KraftStG — § 9 KraftStG
kraftstg-tarif-nutzfahrzeug
kraftstg-tarif-nutzfahrzeug.findsl
Kraftfahrzeugsteuer — Tarif Nutzfahrzeuge (§ 9 Abs. 1 Nr. 3/4/5)
Konstanten und Tarif-Funktionen für andere Kfz ≤ 3.500 kg (Nr. 3),
Kfz > 3.500 kg (Nr. 4 Buchst. a/b/c/d — progressive 200-kg-Stufen mit
Höchstbetrag) und Kraftfahrzeuganhänger (Nr. 5) — aus
kraftstg-steuer herausgelöst. Konstanten und Logik liegen bewusst
zusammen.
Einstiegsfunktionen steuerNr3, steuerNr4, steuerAnhaenger
wählt der Orchestrator kraftstg-steuer nach Fahrzeugart aus.
Konstanten
konst NR3_BIS_2000
konst NR3_BIS_2000: EuroCent = 11,25
Nr. 3: bis 2.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 3 KraftStG — § 9 KraftStG
konst NR3_2000_3000
konst NR3_2000_3000: EuroCent = 12,02
Nr. 3: über 2.000 bis 3.000 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 3 KraftStG — § 9 KraftStG
konst NR3_3000_3500
konst NR3_3000_3500: EuroCent = 12,78
Nr. 3: über 3.000 bis 3.500 kg je 200 kg.
Quelle: § 9 Absatz 1 Nummer 3 KraftStG — § 9 KraftStG
konst NR3_KUM_2000
konst NR3_KUM_2000: EuroCent = NR3_BIS_2000 * 10
Nr. 3: kumulierter Betrag bei genau 2.000 kg (10 Stufen × Satz).
Quelle: § 9 Absatz 1 Nummer 3 KraftStG — § 9 KraftStG
konst NR3_KUM_3000
konst NR3_KUM_3000: EuroCent = NR3_KUM_2000 + NR3_2000_3000 * 5
Nr. 3: kumulierter Betrag bei genau 3.000 kg.
Quelle: § 9 Absatz 1 Nummer 3 KraftStG — § 9 KraftStG
konst NR4A_1
konst NR4A_1: EuroCent = 6,42
Nr. 4a (≥ S2): Stufensätze je 200 kg, Gewichtsspannen 2.000…> 12.000 kg.
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_2
konst NR4A_2: EuroCent = 6,88
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_3
konst NR4A_3: EuroCent = 7,31
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_4
konst NR4A_4: EuroCent = 7,75
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_5
konst NR4A_5: EuroCent = 8,18
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_6
konst NR4A_6: EuroCent = 8,62
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_7
konst NR4A_7: EuroCent = 9,36
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_8
konst NR4A_8: EuroCent = 10,07
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_9
konst NR4A_9: EuroCent = 10,97
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_10
konst NR4A_10: EuroCent = 11,84
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_11
konst NR4A_11: EuroCent = 13,01
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_12
konst NR4A_12: EuroCent = 14,32
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_MAX
konst NR4A_MAX: EuroCent = 556,00
Nr. 4a: Höchstbetrag.
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_2000
konst NR4A_KUM_2000: EuroCent = NR4A_1 * 10
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_3000
konst NR4A_KUM_3000: EuroCent = NR4A_KUM_2000 + NR4A_2 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_4000
konst NR4A_KUM_4000: EuroCent = NR4A_KUM_3000 + NR4A_3 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_5000
konst NR4A_KUM_5000: EuroCent = NR4A_KUM_4000 + NR4A_4 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_6000
konst NR4A_KUM_6000: EuroCent = NR4A_KUM_5000 + NR4A_5 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_7000
konst NR4A_KUM_7000: EuroCent = NR4A_KUM_6000 + NR4A_6 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_8000
konst NR4A_KUM_8000: EuroCent = NR4A_KUM_7000 + NR4A_7 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_9000
konst NR4A_KUM_9000: EuroCent = NR4A_KUM_8000 + NR4A_8 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_10000
konst NR4A_KUM_10000: EuroCent = NR4A_KUM_9000 + NR4A_9 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_11000
konst NR4A_KUM_11000: EuroCent = NR4A_KUM_10000 + NR4A_10 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4A_KUM_12000
konst NR4A_KUM_12000: EuroCent = NR4A_KUM_11000 + NR4A_11 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — § 9 KraftStG
konst NR4D_1
konst NR4D_1: EuroCent = 11,25
Nr. 4d (Voraussetzungen a/b/c nicht erfüllt): Stufensätze je 200 kg.
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_2
konst NR4D_2: EuroCent = 12,02
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_3
konst NR4D_3: EuroCent = 12,78
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_4
konst NR4D_4: EuroCent = 13,55
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_5
konst NR4D_5: EuroCent = 14,32
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_6
konst NR4D_6: EuroCent = 15,08
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_7
konst NR4D_7: EuroCent = 16,36
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_8
konst NR4D_8: EuroCent = 17,64
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_9
konst NR4D_9: EuroCent = 19,17
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_10
konst NR4D_10: EuroCent = 20,71
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_11
konst NR4D_11: EuroCent = 22,75
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_12
konst NR4D_12: EuroCent = 25,05
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_13
konst NR4D_13: EuroCent = 27,61
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_14
konst NR4D_14: EuroCent = 45,50
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_15
konst NR4D_15: EuroCent = 63,40
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_MAX
konst NR4D_MAX: EuroCent = 1.681,00
Nr. 4d: Höchstbetrag.
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_2000
konst NR4D_KUM_2000: EuroCent = NR4D_1 * 10
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_3000
konst NR4D_KUM_3000: EuroCent = NR4D_KUM_2000 + NR4D_2 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_4000
konst NR4D_KUM_4000: EuroCent = NR4D_KUM_3000 + NR4D_3 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_5000
konst NR4D_KUM_5000: EuroCent = NR4D_KUM_4000 + NR4D_4 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_6000
konst NR4D_KUM_6000: EuroCent = NR4D_KUM_5000 + NR4D_5 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_7000
konst NR4D_KUM_7000: EuroCent = NR4D_KUM_6000 + NR4D_6 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_8000
konst NR4D_KUM_8000: EuroCent = NR4D_KUM_7000 + NR4D_7 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_9000
konst NR4D_KUM_9000: EuroCent = NR4D_KUM_8000 + NR4D_8 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_10000
konst NR4D_KUM_10000: EuroCent = NR4D_KUM_9000 + NR4D_9 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_11000
konst NR4D_KUM_11000: EuroCent = NR4D_KUM_10000 + NR4D_10 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_12000
konst NR4D_KUM_12000: EuroCent = NR4D_KUM_11000 + NR4D_11 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_13000
konst NR4D_KUM_13000: EuroCent = NR4D_KUM_12000 + NR4D_12 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_14000
konst NR4D_KUM_14000: EuroCent = NR4D_KUM_13000 + NR4D_13 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4D_KUM_15000
konst NR4D_KUM_15000: EuroCent = NR4D_KUM_14000 + NR4D_14 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — § 9 KraftStG
konst NR4B_1
konst NR4B_1: EuroCent = 6,42
Nr. 4b (Schadstoffklasse S1): Stufensätze je 200 kg.
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_2
konst NR4B_2: EuroCent = 6,88
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_3
konst NR4B_3: EuroCent = 7,31
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_4
konst NR4B_4: EuroCent = 7,75
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_5
konst NR4B_5: EuroCent = 8,18
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_6
konst NR4B_6: EuroCent = 8,62
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_7
konst NR4B_7: EuroCent = 9,36
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_8
konst NR4B_8: EuroCent = 10,07
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_9
konst NR4B_9: EuroCent = 10,97
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_10
konst NR4B_10: EuroCent = 11,84
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_11
konst NR4B_11: EuroCent = 13,01
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_12
konst NR4B_12: EuroCent = 14,32
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_13
konst NR4B_13: EuroCent = 15,77
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_14
konst NR4B_14: EuroCent = 26,00
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_15
konst NR4B_15: EuroCent = 36,23
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_MAX
konst NR4B_MAX: EuroCent = 914,00
Nr. 4b: Höchstbetrag.
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_2000
konst NR4B_KUM_2000: EuroCent = NR4B_1 * 10
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_3000
konst NR4B_KUM_3000: EuroCent = NR4B_KUM_2000 + NR4B_2 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_4000
konst NR4B_KUM_4000: EuroCent = NR4B_KUM_3000 + NR4B_3 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_5000
konst NR4B_KUM_5000: EuroCent = NR4B_KUM_4000 + NR4B_4 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_6000
konst NR4B_KUM_6000: EuroCent = NR4B_KUM_5000 + NR4B_5 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_7000
konst NR4B_KUM_7000: EuroCent = NR4B_KUM_6000 + NR4B_6 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_8000
konst NR4B_KUM_8000: EuroCent = NR4B_KUM_7000 + NR4B_7 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_9000
konst NR4B_KUM_9000: EuroCent = NR4B_KUM_8000 + NR4B_8 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_10000
konst NR4B_KUM_10000: EuroCent = NR4B_KUM_9000 + NR4B_9 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_11000
konst NR4B_KUM_11000: EuroCent = NR4B_KUM_10000 + NR4B_10 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_12000
konst NR4B_KUM_12000: EuroCent = NR4B_KUM_11000 + NR4B_11 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_13000
konst NR4B_KUM_13000: EuroCent = NR4B_KUM_12000 + NR4B_12 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_14000
konst NR4B_KUM_14000: EuroCent = NR4B_KUM_13000 + NR4B_13 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4B_KUM_15000
konst NR4B_KUM_15000: EuroCent = NR4B_KUM_14000 + NR4B_14 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — § 9 KraftStG
konst NR4C_1
konst NR4C_1: EuroCent = 9,64
Nr. 4c (Geräuschklasse G1): Stufensätze je 200 kg.
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_2
konst NR4C_2: EuroCent = 10,30
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_3
konst NR4C_3: EuroCent = 10,97
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_4
konst NR4C_4: EuroCent = 11,61
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_5
konst NR4C_5: EuroCent = 12,27
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_6
konst NR4C_6: EuroCent = 12,94
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_7
konst NR4C_7: EuroCent = 14,03
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_8
konst NR4C_8: EuroCent = 15,11
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_9
konst NR4C_9: EuroCent = 16,44
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_10
konst NR4C_10: EuroCent = 17,74
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_11
konst NR4C_11: EuroCent = 19,51
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_12
konst NR4C_12: EuroCent = 21,47
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_13
konst NR4C_13: EuroCent = 23,67
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_14
konst NR4C_14: EuroCent = 39,01
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_15
konst NR4C_15: EuroCent = 54,35
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_MAX
konst NR4C_MAX: EuroCent = 1.425,00
Nr. 4c: Höchstbetrag.
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_2000
konst NR4C_KUM_2000: EuroCent = NR4C_1 * 10
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_3000
konst NR4C_KUM_3000: EuroCent = NR4C_KUM_2000 + NR4C_2 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_4000
konst NR4C_KUM_4000: EuroCent = NR4C_KUM_3000 + NR4C_3 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_5000
konst NR4C_KUM_5000: EuroCent = NR4C_KUM_4000 + NR4C_4 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_6000
konst NR4C_KUM_6000: EuroCent = NR4C_KUM_5000 + NR4C_5 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_7000
konst NR4C_KUM_7000: EuroCent = NR4C_KUM_6000 + NR4C_6 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_8000
konst NR4C_KUM_8000: EuroCent = NR4C_KUM_7000 + NR4C_7 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_9000
konst NR4C_KUM_9000: EuroCent = NR4C_KUM_8000 + NR4C_8 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_10000
konst NR4C_KUM_10000: EuroCent = NR4C_KUM_9000 + NR4C_9 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_11000
konst NR4C_KUM_11000: EuroCent = NR4C_KUM_10000 + NR4C_10 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_12000
konst NR4C_KUM_12000: EuroCent = NR4C_KUM_11000 + NR4C_11 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_13000
konst NR4C_KUM_13000: EuroCent = NR4C_KUM_12000 + NR4C_12 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_14000
konst NR4C_KUM_14000: EuroCent = NR4C_KUM_13000 + NR4C_13 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst NR4C_KUM_15000
konst NR4C_KUM_15000: EuroCent = NR4C_KUM_14000 + NR4C_14 * 5
Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — § 9 KraftStG
konst ANH_JE_200KG
konst ANH_JE_200KG: EuroCent = 7,46
Anhänger: je angefangene 200 kg Gesamtgewicht 7,46 €.
Quelle: § 9 Absatz 1 Nummer 5 KraftStG — § 9 KraftStG
konst ANH_MAX
konst ANH_MAX: EuroCent = 373,24
Anhänger: Höchstbetrag.
Quelle: § 9 Absatz 1 Nummer 5 KraftStG — § 9 KraftStG
Funktionen
fn SteuerNr3
fn SteuerNr3(g: Ganzzahl): EuroCent
Andere Kraftfahrzeuge bis 3.500 kg (§ 9 Abs. 1 Nr. 3 KraftStG): je angefangene 200 kg, progressiv nach Gewichtsspanne (kein Höchstbetrag).
Parameter
| Name | Beschreibung |
|---|---|
g |
Gesamtgewicht (kg). |
Rückgabe — Jahressteuer.
Quelle: § 9 Absatz 1 Nummer 3 KraftStG — § 9 KraftStG
fn SteuerNr4
fn SteuerNr4(g: Ganzzahl, klasse: NfzKlasse): EuroCent
Kfz über 3.500 kg (§ 9 Abs. 1 Nr. 4 KraftStG): je angefangene 200 kg, progressiv in 1.000-kg-Spannen, nach Schadstoff-/Geräuschklasse, mit jeweils eigenem Höchstbetrag. Alle vier Buchstaben sind eigenständig modelliert: a (≥ S2, Spannen bis > 12.000 kg, max 556 €), b (S1, max 914 €), c (G1, max 1.425 €), d (sonst, max 1.681 €).
Parameter
| Name | Beschreibung |
|---|---|
g |
Gesamtgewicht (kg). |
klasse |
Schadstoff-/Geräuschklasse. |
Rückgabe — Jahressteuer.
Quelle: § 9 Absatz 1 Nummer 4 KraftStG — § 9 KraftStG
fn SteuerAnhaenger
fn SteuerAnhaenger(gesamtgewichtKg: Ganzzahl): EuroCent
Kraftfahrzeuganhänger (§ 9 Abs. 1 Nr. 5 KraftStG): je angefangene 200 kg Gesamtgewicht 7,46 €, höchstens 373,24 €.
Parameter
| Name | Beschreibung |
|---|---|
gesamtgewichtKg |
Gesamtgewicht (kg). |
Rückgabe — Jahressteuer des Anhängers.
Quelle: § 9 Absatz 1 Nummer 5 KraftStG — § 9 KraftStG
kraftstg-typen
kraftstg-typen.findsl
Kraftfahrzeugsteuer — gemeinsame Typen und Helfer
Geteiltes Vokabular des KraftStG-Moduls (aus kraftstg-steuer
herausgelöst, damit die Hauptdatei nicht überlang wird): die
Fahrzeug-Klassifizierungs-Aufzählungen (§§ 8, 9, 3a KraftStG), der
Eingabe-Datensatz Fahrzeug, der Ergebnis-Datensatz
KraftfahrzeugsteuerErgebnis sowie die allgemeinen Berechnungshelfer
einheiten (je angefangene Einheit, § 9 KraftStG) und begrenze
(Höchstbetrags-Kappung, § 9 Abs. 1 KraftStG).
Importiert nichts (Blatt des Modul-Graphen); wird von den Tarif-Dateien
kraftstg-tarif-leicht, kraftstg-tarif-nutzfahrzeug und vom Orchestrator
kraftstg-steuer genutzt.
Datensätze
datensatz Fahrzeug
datensatz Fahrzeug(
art: Fahrzeugart, // § 8 KraftStG: Tarifauswahl
antrieb: Antrieb, // Fremd-/Selbstzündung/Elektro
hubraumCcm: Ganzzahl = 0, // cm³ (Nr. 1, 2, 2b)
co2GrammProKm: Ganzzahl = 0, // g/km (Nr. 2 b/c)
gesamtgewichtKg: Ganzzahl = 0, // kg (Nr. 2a, 3, 4, 5)
erstzulassung: Erstzulassungsregime = AbJan2021, // PKW: § 9 Nr. 2 a/b/c
pkwStufe: PkwSchadstoffstufe = Ee, // PKW Nr. 2a: Stufe aa–ee
co2FreigrenzeNr2b: Ganzzahl = 95, // PKW Nr. 2b: Freigrenze g/km
dreiradGrenzwerte: Wahrheitswert = falsch, // Nr. 2b: Grenzwerte eingehalten?
wohnmobilklasse: WohnmobilKlasse = WomoSonst, // Nr. 2a: Schadstoffklasse
nfzklasse: NfzKlasse = NfzSonst, // Nr. 4: Schadstoff-/Geräuschklasse
behinderung: Behinderung = Keine, // § 3a KraftStG
elektroBefreitNach3d: Wahrheitswert = falsch, // § 3d KraftStG aktiv?
)
Eingaben eines Fahrzeugs für die Jahressteuer-Berechnung. Nicht jedes
Feld ist für jede Fahrzeugart relevant — maßgeblich ist art
(§ 8 KraftStG); die übrigen Felder gelten nur im jeweiligen Tarif.
| Feld | Typ | Bedeutung |
|---|---|---|
art |
Fahrzeugart |
Fahrzeugart (§ 8 KraftStG) — wählt den Tarif. |
antrieb |
Antrieb |
Antriebsart (Fremd-/Selbstzündung/Elektro). |
hubraumCcm |
Ganzzahl |
Hubraum in cm³ (Nr. 1, Nr. 2, Nr. 2b). |
co2GrammProKm |
Ganzzahl |
CO₂-Emission in g/km (Nr. 2 Buchst. b/c). |
gesamtgewichtKg |
Ganzzahl |
verkehrsrechtlich zulässiges Gesamtgewicht in kg (Nr. 2a, 3, 4, 5). |
erstzulassung |
Erstzulassungsregime |
Erstzulassungs-Regime des PKW (Nr. 2 a/b/c). |
pkwStufe |
PkwSchadstoffstufe |
Schadstoffstufe aa–ee (Nr. 2 Buchst. a). |
co2FreigrenzeNr2b |
Ganzzahl |
datumsabhängige CO₂-Freigrenze g/km für Nr. 2 Buchst. b (120 bis 31.12.2011 / 110 ab 1.1.2012 / 95 ab 1.1.2014). |
dreiradGrenzwerte |
Wahrheitswert |
Dreirad/leichtes Vierrad: Grenzwerte eingehalten? (Nr. 2b a vs. b). |
wohnmobilklasse |
WohnmobilKlasse |
Schadstoffklasse des Wohnmobils (Nr. 2a). |
nfzklasse |
NfzKlasse |
Schadstoff-/Geräuschklasse > 3.500 kg (Nr. 4). |
behinderung |
Behinderung |
Schwerbehinderten-Vergünstigung (§ 3a). |
elektroBefreitNach3d |
Wahrheitswert |
Steuerbefreiung nach § 3d KraftStG aktiv? (datumsabhängig — verbindlich extern festgestellt). |
Quelle: § 8 KraftStG — § 8 KraftStG
datensatz KraftfahrzeugsteuerErgebnis
datensatz KraftfahrzeugsteuerErgebnis(
tarifbetrag: EuroCent, // § 9 Abs. 1 KraftStG
nachElektro: EuroCent, // § 9 Abs. 2 KraftStG
jahressteuer: EuroCent, // nach § 3a / § 3d KraftStG
)
Vollständige, prüfbare Berechnung der Kraftfahrzeug-Jahressteuer.
| Feld | Typ | Bedeutung |
|---|---|---|
tarifbetrag |
EuroCent |
Steuer nach § 9 Abs. 1 KraftStG (vor § 9 Abs. 2 / § 3a / § 3d). |
nachElektro |
EuroCent |
nach Anwendung der 50 %-Ermäßigung für Elektrofahrzeuge (§ 9 Abs. 2 KraftStG). |
jahressteuer |
EuroCent |
festgesetzte Jahressteuer nach Anwendung von § 3a / § 3d KraftStG (0 bei Befreiung). |
Quelle: § 9 KraftStG — § 9 KraftStG
Aufzählungen
aufzählung Fahrzeugart
aufzählung Fahrzeugart {
Kraftrad,
Pkw,
Wohnmobil,
DreiLeichtvier,
AndereBis3500,
AndereUeber3500,
Anhaenger,
}
Fahrzeugart i.S.d. § 8 / § 9 Abs. 1 KraftStG — bestimmt, welcher Tarif (welche Nummer des § 9 Abs. 1) anzuwenden ist.
Parameter
| Name | Beschreibung |
|---|---|
Kraftrad |
§ 9 Abs. 1 Nr. 1: Krafträder (Hubkolbenmotor). |
Pkw |
§ 9 Abs. 1 Nr. 2: Personenkraftwagen (M1) mit Hubkolbenmotor. |
Wohnmobil |
§ 9 Abs. 1 Nr. 2a: Wohnmobile. |
DreiLeichtvier |
§ 9 Abs. 1 Nr. 2b: dreirädrige und leichte vierrädrige Kraftfahrzeuge. |
AndereBis3500 |
§ 9 Abs. 1 Nr. 3: andere Kfz bis 3.500 kg. |
AndereUeber3500 |
§ 9 Abs. 1 Nr. 4: Kfz über 3.500 kg. |
Anhaenger |
§ 9 Abs. 1 Nr. 5: Kraftfahrzeuganhänger. |
Werte: Kraftrad, Pkw, Wohnmobil, DreiLeichtvier, AndereBis3500, AndereUeber3500, Anhaenger
Quelle: § 8 KraftStG — § 8 KraftStG
aufzählung Antrieb
aufzählung Antrieb {
Fremdzuendung,
Selbstzuendung,
Elektro,
}
Antriebsart. § 9 unterscheidet Fremdzündungsmotor (Ottomotor/Benzin)
und Selbstzündungsmotor (Dieselmotor); Elektro steuert die
Ermäßigung/Befreiung (§ 9 Abs. 2, § 3d KraftStG).
Parameter
| Name | Beschreibung |
|---|---|
Fremdzuendung |
Fremdzündungsmotor (Ottomotor). |
Selbstzuendung |
Selbstzündungsmotor (Dieselmotor). |
Elektro |
Elektrofahrzeug i.S.d. § 9 Abs. 2 KraftStG. |
Werte: Fremdzuendung, Selbstzuendung, Elektro
Quelle: § 9 Absatz 1 Nummer 2 KraftStG — § 9 KraftStG
aufzählung Erstzulassungsregime
aufzählung Erstzulassungsregime {
BisJuni2009,
JuliBisDez2020,
AbJan2021,
}
Erstzulassungs-Regime des PKW — wählt den Buchstaben des § 9 Abs. 1 Nr. 2 KraftStG.
Parameter
| Name | Beschreibung |
|---|---|
BisJuni2009 |
Erstzulassung bis 30.6.2009 (Buchst. a, Hubraum + Schadstoffstufe aa–ee). |
JuliBisDez2020 |
Erstzulassung 1.7.2009–31.12.2020 (Buchst. b, Hubraum + CO₂ über datumsabhängiger Freigrenze). |
AbJan2021 |
Erstzulassung ab 1.1.2021 (Buchst. c, Hubraum + progressiver CO₂-Aufschlag ab 95 g/km). |
Werte: BisJuni2009, JuliBisDez2020, AbJan2021
Quelle: § 9 Absatz 1 Nummer 2 KraftStG — § 9 KraftStG
aufzählung PkwSchadstoffstufe
aufzählung PkwSchadstoffstufe {
Aa,
Bb,
Cc,
Dd,
Ee,
}
Schadstoffstufe aa–ee für PKW mit Erstzulassung bis 30.6.2009 (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG). Die Einstufung trifft nach § 2 Abs. 2 Nr. 2 KraftStG verbindlich die Zulassungsbehörde.
Parameter
| Name | Beschreibung |
|---|---|
Aa |
Doppelbuchst. aa (günstigste Stufe). |
Bb |
Doppelbuchst. bb. |
Cc |
Doppelbuchst. cc. |
Dd |
Doppelbuchst. dd. |
Ee |
Doppelbuchst. ee (höchste Stufe, keine Voraussetzungen). |
Werte: Aa, Bb, Cc, Dd, Ee
Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a KraftStG — § 9 KraftStG
aufzählung WohnmobilKlasse
aufzählung WohnmobilKlasse {
MindestensS4,
S1bisS3,
WomoSonst,
}
Schadstoffklasse für Wohnmobile (§ 9 Abs. 1 Nr. 2a KraftStG).
Parameter
| Name | Beschreibung |
|---|---|
MindestensS4 |
mindestens Schadstoffklasse S 4 (Buchst. a). |
S1bisS3 |
Schadstoffklasse S 3, S 2 oder S 1 (Buchst. b). |
WomoSonst |
Voraussetzungen a/b nicht erfüllt (Buchst. c). |
Werte: MindestensS4, S1bisS3, WomoSonst
Quelle: § 9 Absatz 1 Nummer 2a KraftStG — § 9 KraftStG
aufzählung NfzKlasse
aufzählung NfzKlasse {
MindestensS2,
S1,
G1,
NfzSonst,
}
Schadstoff-/Geräuschklasse für Kfz > 3.500 kg (§ 9 Abs. 1 Nr. 4 KraftStG). Verbindliche Feststellung der Zulassungsbehörde (§ 2 Abs. 2 Nr. 2 KraftStG).
Parameter
| Name | Beschreibung |
|---|---|
MindestensS2 |
mindestens Schadstoffklasse S 2 (Buchst. a). |
S1 |
Schadstoffklasse S 1 (Buchst. b). |
G1 |
Geräuschklasse G 1 (Buchst. c). |
NfzSonst |
Voraussetzungen a/b/c nicht erfüllt (Buchst. d). |
Werte: MindestensS2, S1, G1, NfzSonst
Quelle: § 9 Absatz 1 Nummer 4 KraftStG — § 9 KraftStG
aufzählung Behinderung
aufzählung Behinderung {
Keine,
Befreit3aAbs1,
Ermaessigt3aAbs2,
}
Schwerbehinderten-Vergünstigung nach § 3a KraftStG.
Parameter
| Name | Beschreibung |
|---|---|
Keine |
keine Vergünstigung. |
Befreit3aAbs1 |
volle Steuerbefreiung (Merkzeichen H, Bl, aG — § 3a Abs. 1 KraftStG). |
Ermaessigt3aAbs2 |
50 % Ermäßigung (orangefarbener Aufdruck, § 3a Abs. 2 KraftStG). |
Werte: Keine, Befreit3aAbs1, Ermaessigt3aAbs2
Quelle: § 3a KraftStG — § 3a KraftStG
Funktionen
fn Einheiten
fn Einheiten(wert: Ganzzahl, teiler: Ganzzahl): Ganzzahl
Anzahl angefangener Einheiten: wert geteilt durch schritt,
aufgerundet (§ 9 KraftStG: „für je … oder einen Teil davon").
Parameter
| Name | Beschreibung |
|---|---|
wert |
zu zerlegende Menge (cm³ bzw. kg). |
teiler |
Einheitengröße (25 / 100 / 200). |
Rückgabe — Anzahl angefangener Einheiten (≥ 0).
Quelle: § 9 Absatz 1 KraftStG — § 9 KraftStG
# Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§§ 8, 9 KraftStG)
*Bildet die Jahressteuer nach dem Kraftfahrzeugsteuergesetz (KraftStG 2002, i.d.g.F.) vollständig ab:*
## Inhalt
- [kraftst](#kraftst)
- Konstanten
- [konst KZ_NUR_KRAD](#konst-kz-nur-krad)
- [konst KZ_UEBRIGE](#konst-kz-uebrige)
- Funktionen
- [fn TarifNach9Abs1](#fn-tarifnach9abs1)
- [fn BerechneKraftfahrzeugsteuer](#fn-berechnekraftfahrzeugsteuer)
- [kraftst.test](#kraftst-test)
- Prüfungen
- [prüfe Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)](#prüfe-helfer-angefangene-einheiten-9-oder-einen-teil-davon)
- [prüfe § 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)](#prüfe-9-abs-1-nr-1-krafträder-1-84-je-25-cm³)
- [prüfe § 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)](#prüfe-9-abs-1-nr-2-buchst-c-pkw-ab-1-1-2021-hubraum-co₂)
- [prüfe § 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020](#prüfe-9-abs-1-nr-2-buchst-b-pkw-1-7-2009-31-12-2020)
- [prüfe § 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)](#prüfe-9-abs-1-nr-2-buchst-a-pkw-bis-30-6-2009-schadstoffstufe)
- [prüfe § 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)](#prüfe-9-abs-1-nr-2a-wohnmobile-progressiv-gedeckelt)
- [prüfe § 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)](#prüfe-9-abs-1-nr-3-andere-kfz-3-500-kg-progressiv)
- [prüfe § 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)](#prüfe-9-abs-1-nr-4-kfz-3-500-kg-a-b-c-d-gedeckelt)
- [prüfe § 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)](#prüfe-9-abs-1-nr-5-anhänger-7-46-je-200-kg-max-373-24)
- [prüfe § 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)](#prüfe-9-abs-2-elektro-ermäßigung-50-nur-nr-3-nr-4a)
- [prüfe § 3a / § 3d — Vergünstigungen / Befreiungen](#prüfe-3a-3d-vergünstigungen-befreiungen)
- [prüfe Gesamtberechnung — vollständiges Ergebnis](#prüfe-gesamtberechnung-vollständiges-ergebnis)
- [kraftstg-tarif-leicht](#kraftstg-tarif-leicht)
- Konstanten
- [konst KRAD_JE_25CCM](#konst-krad-je-25ccm)
- [konst PKW_C_HUBRAUM_OTTO](#konst-pkw-c-hubraum-otto)
- [konst PKW_C_HUBRAUM_DIESEL](#konst-pkw-c-hubraum-diesel)
- [konst PKW_C_CO2_95_115](#konst-pkw-c-co2-95-115)
- [konst PKW_C_CO2_115_135](#konst-pkw-c-co2-115-135)
- [konst PKW_C_CO2_135_155](#konst-pkw-c-co2-135-155)
- [konst PKW_C_CO2_155_175](#konst-pkw-c-co2-155-175)
- [konst PKW_C_CO2_175_195](#konst-pkw-c-co2-175-195)
- [konst PKW_C_CO2_UEBER_195](#konst-pkw-c-co2-ueber-195)
- [konst PKW_C_CO2_FREI](#konst-pkw-c-co2-frei)
- [konst PKW_B_HUBRAUM_OTTO](#konst-pkw-b-hubraum-otto)
- [konst PKW_B_HUBRAUM_DIESEL](#konst-pkw-b-hubraum-diesel)
- [konst PKW_B_CO2_JE_GRAMM](#konst-pkw-b-co2-je-gramm)
- [konst PKW_A_AA_OTTO](#konst-pkw-a-aa-otto)
- [konst PKW_A_AA_DIESEL](#konst-pkw-a-aa-diesel)
- [konst PKW_A_BB_OTTO](#konst-pkw-a-bb-otto)
- [konst PKW_A_BB_DIESEL](#konst-pkw-a-bb-diesel)
- [konst PKW_A_CC_OTTO](#konst-pkw-a-cc-otto)
- [konst PKW_A_CC_DIESEL](#konst-pkw-a-cc-diesel)
- [konst PKW_A_DD_OTTO](#konst-pkw-a-dd-otto)
- [konst PKW_A_DD_DIESEL](#konst-pkw-a-dd-diesel)
- [konst PKW_A_EE_OTTO](#konst-pkw-a-ee-otto)
- [konst PKW_A_EE_DIESEL](#konst-pkw-a-ee-diesel)
- [konst DREIRAD_GW_OTTO](#konst-dreirad-gw-otto)
- [konst DREIRAD_GW_DIESEL](#konst-dreirad-gw-diesel)
- [konst DREIRAD_SONST_OTTO](#konst-dreirad-sonst-otto)
- [konst DREIRAD_SONST_DIESEL](#konst-dreirad-sonst-diesel)
- [konst WOMO_S4_BIS_2000](#konst-womo-s4-bis-2000)
- [konst WOMO_S4_UEBER_2000](#konst-womo-s4-ueber-2000)
- [konst WOMO_S4_MAX](#konst-womo-s4-max)
- [konst WOMO_S1_BIS_2000](#konst-womo-s1-bis-2000)
- [konst WOMO_S1_UEBER_2000](#konst-womo-s1-ueber-2000)
- [konst WOMO_S1_MAX](#konst-womo-s1-max)
- [konst WOMO_SONST_BIS_2000](#konst-womo-sonst-bis-2000)
- [konst WOMO_SONST_2000_5000](#konst-womo-sonst-2000-5000)
- [konst WOMO_SONST_5000_12000](#konst-womo-sonst-5000-12000)
- [konst WOMO_SONST_UEBER_12000](#konst-womo-sonst-ueber-12000)
- Funktionen
- [fn SteuerKraftrad](#fn-steuerkraftrad)
- [fn SteuerPkw](#fn-steuerpkw)
- [fn SteuerDreiLeichtvier](#fn-steuerdreileichtvier)
- [fn SteuerWohnmobil](#fn-steuerwohnmobil)
- [kraftstg-tarif-nutzfahrzeug](#kraftstg-tarif-nutzfahrzeug)
- Konstanten
- [konst NR3_BIS_2000](#konst-nr3-bis-2000)
- [konst NR3_2000_3000](#konst-nr3-2000-3000)
- [konst NR3_3000_3500](#konst-nr3-3000-3500)
- [konst NR3_KUM_2000](#konst-nr3-kum-2000)
- [konst NR3_KUM_3000](#konst-nr3-kum-3000)
- [konst NR4A_1](#konst-nr4a-1)
- [konst NR4A_2](#konst-nr4a-2)
- [konst NR4A_3](#konst-nr4a-3)
- [konst NR4A_4](#konst-nr4a-4)
- [konst NR4A_5](#konst-nr4a-5)
- [konst NR4A_6](#konst-nr4a-6)
- [konst NR4A_7](#konst-nr4a-7)
- [konst NR4A_8](#konst-nr4a-8)
- [konst NR4A_9](#konst-nr4a-9)
- [konst NR4A_10](#konst-nr4a-10)
- [konst NR4A_11](#konst-nr4a-11)
- [konst NR4A_12](#konst-nr4a-12)
- [konst NR4A_MAX](#konst-nr4a-max)
- [konst NR4A_KUM_2000](#konst-nr4a-kum-2000)
- [konst NR4A_KUM_3000](#konst-nr4a-kum-3000)
- [konst NR4A_KUM_4000](#konst-nr4a-kum-4000)
- [konst NR4A_KUM_5000](#konst-nr4a-kum-5000)
- [konst NR4A_KUM_6000](#konst-nr4a-kum-6000)
- [konst NR4A_KUM_7000](#konst-nr4a-kum-7000)
- [konst NR4A_KUM_8000](#konst-nr4a-kum-8000)
- [konst NR4A_KUM_9000](#konst-nr4a-kum-9000)
- [konst NR4A_KUM_10000](#konst-nr4a-kum-10000)
- [konst NR4A_KUM_11000](#konst-nr4a-kum-11000)
- [konst NR4A_KUM_12000](#konst-nr4a-kum-12000)
- [konst NR4D_1](#konst-nr4d-1)
- [konst NR4D_2](#konst-nr4d-2)
- [konst NR4D_3](#konst-nr4d-3)
- [konst NR4D_4](#konst-nr4d-4)
- [konst NR4D_5](#konst-nr4d-5)
- [konst NR4D_6](#konst-nr4d-6)
- [konst NR4D_7](#konst-nr4d-7)
- [konst NR4D_8](#konst-nr4d-8)
- [konst NR4D_9](#konst-nr4d-9)
- [konst NR4D_10](#konst-nr4d-10)
- [konst NR4D_11](#konst-nr4d-11)
- [konst NR4D_12](#konst-nr4d-12)
- [konst NR4D_13](#konst-nr4d-13)
- [konst NR4D_14](#konst-nr4d-14)
- [konst NR4D_15](#konst-nr4d-15)
- [konst NR4D_MAX](#konst-nr4d-max)
- [konst NR4D_KUM_2000](#konst-nr4d-kum-2000)
- [konst NR4D_KUM_3000](#konst-nr4d-kum-3000)
- [konst NR4D_KUM_4000](#konst-nr4d-kum-4000)
- [konst NR4D_KUM_5000](#konst-nr4d-kum-5000)
- [konst NR4D_KUM_6000](#konst-nr4d-kum-6000)
- [konst NR4D_KUM_7000](#konst-nr4d-kum-7000)
- [konst NR4D_KUM_8000](#konst-nr4d-kum-8000)
- [konst NR4D_KUM_9000](#konst-nr4d-kum-9000)
- [konst NR4D_KUM_10000](#konst-nr4d-kum-10000)
- [konst NR4D_KUM_11000](#konst-nr4d-kum-11000)
- [konst NR4D_KUM_12000](#konst-nr4d-kum-12000)
- [konst NR4D_KUM_13000](#konst-nr4d-kum-13000)
- [konst NR4D_KUM_14000](#konst-nr4d-kum-14000)
- [konst NR4D_KUM_15000](#konst-nr4d-kum-15000)
- [konst NR4B_1](#konst-nr4b-1)
- [konst NR4B_2](#konst-nr4b-2)
- [konst NR4B_3](#konst-nr4b-3)
- [konst NR4B_4](#konst-nr4b-4)
- [konst NR4B_5](#konst-nr4b-5)
- [konst NR4B_6](#konst-nr4b-6)
- [konst NR4B_7](#konst-nr4b-7)
- [konst NR4B_8](#konst-nr4b-8)
- [konst NR4B_9](#konst-nr4b-9)
- [konst NR4B_10](#konst-nr4b-10)
- [konst NR4B_11](#konst-nr4b-11)
- [konst NR4B_12](#konst-nr4b-12)
- [konst NR4B_13](#konst-nr4b-13)
- [konst NR4B_14](#konst-nr4b-14)
- [konst NR4B_15](#konst-nr4b-15)
- [konst NR4B_MAX](#konst-nr4b-max)
- [konst NR4B_KUM_2000](#konst-nr4b-kum-2000)
- [konst NR4B_KUM_3000](#konst-nr4b-kum-3000)
- [konst NR4B_KUM_4000](#konst-nr4b-kum-4000)
- [konst NR4B_KUM_5000](#konst-nr4b-kum-5000)
- [konst NR4B_KUM_6000](#konst-nr4b-kum-6000)
- [konst NR4B_KUM_7000](#konst-nr4b-kum-7000)
- [konst NR4B_KUM_8000](#konst-nr4b-kum-8000)
- [konst NR4B_KUM_9000](#konst-nr4b-kum-9000)
- [konst NR4B_KUM_10000](#konst-nr4b-kum-10000)
- [konst NR4B_KUM_11000](#konst-nr4b-kum-11000)
- [konst NR4B_KUM_12000](#konst-nr4b-kum-12000)
- [konst NR4B_KUM_13000](#konst-nr4b-kum-13000)
- [konst NR4B_KUM_14000](#konst-nr4b-kum-14000)
- [konst NR4B_KUM_15000](#konst-nr4b-kum-15000)
- [konst NR4C_1](#konst-nr4c-1)
- [konst NR4C_2](#konst-nr4c-2)
- [konst NR4C_3](#konst-nr4c-3)
- [konst NR4C_4](#konst-nr4c-4)
- [konst NR4C_5](#konst-nr4c-5)
- [konst NR4C_6](#konst-nr4c-6)
- [konst NR4C_7](#konst-nr4c-7)
- [konst NR4C_8](#konst-nr4c-8)
- [konst NR4C_9](#konst-nr4c-9)
- [konst NR4C_10](#konst-nr4c-10)
- [konst NR4C_11](#konst-nr4c-11)
- [konst NR4C_12](#konst-nr4c-12)
- [konst NR4C_13](#konst-nr4c-13)
- [konst NR4C_14](#konst-nr4c-14)
- [konst NR4C_15](#konst-nr4c-15)
- [konst NR4C_MAX](#konst-nr4c-max)
- [konst NR4C_KUM_2000](#konst-nr4c-kum-2000)
- [konst NR4C_KUM_3000](#konst-nr4c-kum-3000)
- [konst NR4C_KUM_4000](#konst-nr4c-kum-4000)
- [konst NR4C_KUM_5000](#konst-nr4c-kum-5000)
- [konst NR4C_KUM_6000](#konst-nr4c-kum-6000)
- [konst NR4C_KUM_7000](#konst-nr4c-kum-7000)
- [konst NR4C_KUM_8000](#konst-nr4c-kum-8000)
- [konst NR4C_KUM_9000](#konst-nr4c-kum-9000)
- [konst NR4C_KUM_10000](#konst-nr4c-kum-10000)
- [konst NR4C_KUM_11000](#konst-nr4c-kum-11000)
- [konst NR4C_KUM_12000](#konst-nr4c-kum-12000)
- [konst NR4C_KUM_13000](#konst-nr4c-kum-13000)
- [konst NR4C_KUM_14000](#konst-nr4c-kum-14000)
- [konst NR4C_KUM_15000](#konst-nr4c-kum-15000)
- [konst ANH_JE_200KG](#konst-anh-je-200kg)
- [konst ANH_MAX](#konst-anh-max)
- Funktionen
- [fn SteuerNr3](#fn-steuernr3)
- [fn SteuerNr4](#fn-steuernr4)
- [fn SteuerAnhaenger](#fn-steueranhaenger)
- [kraftstg-typen](#kraftstg-typen)
- Datensätze
- [datensatz Fahrzeug](#datensatz-fahrzeug)
- [datensatz KraftfahrzeugsteuerErgebnis](#datensatz-kraftfahrzeugsteuerergebnis)
- Aufzählungen
- [aufzählung Fahrzeugart](#aufzählung-fahrzeugart)
- [aufzählung Antrieb](#aufzählung-antrieb)
- [aufzählung Erstzulassungsregime](#aufzählung-erstzulassungsregime)
- [aufzählung PkwSchadstoffstufe](#aufzählung-pkwschadstoffstufe)
- [aufzählung WohnmobilKlasse](#aufzählung-wohnmobilklasse)
- [aufzählung NfzKlasse](#aufzählung-nfzklasse)
- [aufzählung Behinderung](#aufzählung-behinderung)
- Funktionen
- [fn Einheiten](#fn-einheiten)
## `kraftst`
*`kraftst.findsl`*
#### Kraftfahrzeugsteuer — vollständiger Jahressteuer-Tarif (§[§ 8](https://www.gesetze-im-internet.de/kraftstg/__8.html), [9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html))
Bildet die **Jahressteuer** nach dem Kraftfahrzeugsteuergesetz
(KraftStG 2002, i.d.g.F.) vollständig ab:
- **[§ 8 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__8.html)** — Bemessungsgrundlage (Hubraum / CO₂ / zulässiges
Gesamtgewicht je nach Fahrzeugart) → Auswahl des Tarifs.
- **[§ 9 Abs. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)** — Steuersatz, alle Nummern:
Nr. 1 Krafträder · Nr. 2 a/b/c Personenkraftwagen (Erstzulassung
bis 30.6.2009 / 1.7.2009–31.12.2020 / ab 1.1.2021) · Nr. 2a
Wohnmobile · Nr. 2b dreirädrige/leichte vierrädrige Kfz · Nr. 3
andere Kfz ≤ 3.500 kg · Nr. 4 a/b/c/d Kfz > 3.500 kg · Nr. 5
Anhänger.
- **[§ 9 Abs. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)** — 50 % Ermäßigung für Elektrofahrzeuge
(nur Beträge nach Abs. 1 Nr. 3 oder Nr. 4 Buchst. a).
- **[§ 9 Abs. 3 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)** — Tagessteuer für ausländische Fahrzeuge.
- **[§ 9 Abs. 4 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)** — Jahressteuer für rote / Oldtimer-Kennzeichen.
- **[§ 3a KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3a.html)** — Vergünstigungen für Schwerbehinderte
(Abs. 1 volle Befreiung · Abs. 2 50 % Ermäßigung).
- **[§ 3d KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3d.html)** — Steuerbefreiung für Elektrofahrzeuge
(Erstzulassung 18.5.2011–31.12.2030: 10 Jahre, längstens bis
31.12.2035).
- **[§ 9a KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9a.html)** — Diesel-Zuschlag: ausgelaufen (galt nur
1.4.2007–31.3.2011); wird nicht mehr angewandt (dokumentiert).
**Progressive Tarife** (Nr. 2a/3/4) werden je angefangene 200-kg-Stufe
in der jeweiligen Gewichtsspanne berechnet; die kumulierten
Stufenbeträge sind als auditierbare Konstanten aus den Stufensätzen
abgeleitet (keine handsummierten Werte). „Je angefangene Einheit"
nutzt das Stdlib-Builtin `aufrunden`.
**Bewusst nicht modelliert (dokumentiert, außerhalb der reinen
Steuerbetragsberechnung):** Verfahren §[§ 11](https://www.gesetze-im-internet.de/kraftstg/__11.html)/[12](https://www.gesetze-im-internet.de/kraftstg/__12.html) (Entrichtung,
Festsetzung), Mindestdauer/anteilige Berechnung [§ 5](https://www.gesetze-im-internet.de/kraftstg/__5.html), Ausnahmekatalog
[§ 3](https://www.gesetze-im-internet.de/kraftstg/__3.html), widerrechtliche Benutzung. Die Zuordnung der Schadstoff-/
Geräusch-/Erstzulassungsklasse trifft nach [§ 2 Abs. 2 Nr. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__2.html)
**verbindlich die Zulassungsbehörde** — sie geht hier als geprüfte
Eingabe ein (nicht aus EU-Richtlinien hergeleitet).
### Konstanten
#### konst `KZ_NUR_KRAD`
```findsl
konst KZ_NUR_KRAD: EuroCent = 46,02
```
Rotes/Oldtimer-Kennzeichen, nur für Krafträder gültig (Jahressteuer).
> Quelle: § 9 Absatz 4 Nummer 1 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `KZ_UEBRIGE`
```findsl
konst KZ_UEBRIGE: EuroCent = 191,73
```
Rotes/Oldtimer-Kennzeichen, im Übrigen (Jahressteuer).
> Quelle: § 9 Absatz 4 Nummer 2 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
### Funktionen
#### fn `TarifNach9Abs1`
```findsl
fn TarifNach9Abs1(f: Fahrzeug): EuroCent
```
Tarifbetrag nach [§ 9 Abs. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html): wählt anhand der Fahrzeugart
([§ 8 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__8.html)) die einschlägige Nummer.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `f` | Fahrzeug-Eingaben. |
**Rückgabe** — Steuer nach [§ 9 Abs. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html) (vor Abs. 2 / § 3a / § 3d).
> Quelle: § 9 Absatz 1 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### fn `BerechneKraftfahrzeugsteuer`
```findsl
fn BerechneKraftfahrzeugsteuer(f: Fahrzeug): KraftfahrzeugsteuerErgebnis
```
Vollständige Festsetzung der Kraftfahrzeug-Jahressteuer in der
gesetzlichen Reihenfolge: § 8 (Tarifauswahl) → § 9 Abs. 1
(Tarifbetrag) → § 9 Abs. 2 (Elektro-Ermäßigung) → § 3a / § 3d
(Vergünstigung/Befreiung). Liefert alle Zwischengrößen.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `f` | Fahrzeug-Eingaben. |
**Rückgabe** — Vollständig dokumentiertes Berechnungsergebnis.
> Quelle: § 9 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
## `kraftst.test`
*`kraftst.test.findsl`*
#### Akzeptanztests — Kraftfahrzeugsteuer (§[§ 8](https://www.gesetze-im-internet.de/kraftstg/__8.html), [9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html))
`prüfe`-Blöcke zur Datei `kraftstg-steuer`. Alle Sollwerte sind
unabhängig aus dem Gesetzeswortlaut gerechnet (KraftStG 2002,
i.d.g.F.): „je angefangene Einheit" = Aufrundung; progressive
Gewichts-/CO₂-Tarife stufenweise summiert; Höchstbeträge gedeckelt.
Diese Datei enthält ausschließlich die `prüfe`-Blöcke.
### Prüfungen
#### prüfe `Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)`
```findsl
prüfe "Helfer: angefangene Einheiten (§ 9 — oder einen Teil davon)"
```
**Testfall — exakt teilbar**
```findsl
Einheiten(2000, 200) == 10
```
**Testfall — Teil davon rundet auf**
```findsl
Einheiten(1598, 100) == 16
```
**Testfall — knapp über Grenze**
```findsl
Einheiten(601, 25) == 25
```
**Testfall — 0 oder negativ → 0**
```findsl
Einheiten(0, 200) == 0
```
#### prüfe `§ 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)`
```findsl
prüfe "§ 9 Abs. 1 Nr. 1 — Krafträder (1,84 € je 25 cm³)"
```
**Testfall — 125 cm³ → 5 × 1,84 = 9,20 €**
```findsl
SteuerKraftrad(125) == 9,20
```
**Testfall — 600 cm³ → 24 × 1,84 = 44,16 €**
```findsl
SteuerKraftrad(600) == 44,16
```
**Testfall — 601 cm³ → 25 × 1,84 = 46,00 €**
```findsl
SteuerKraftrad(601) == 46,00
```
#### prüfe `§ 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)`
```findsl
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. c — PKW ab 1.1.2021 (Hubraum + CO₂)"
```
**Testfall — Benziner 1.598 cm³, 120 g/km → 32,00 + 51,00 = 83,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1598, co2GrammProKm = 120,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 83,00
```
**Testfall — Diesel 1.968 cm³, 150 g/km → 190,00 + 121,50 = 311,50 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Selbstzuendung,
hubraumCcm = 1968, co2GrammProKm = 150,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 311,50
```
**Testfall — CO₂ genau 95 g/km → kein Aufschlag (nur Hubraum 20,00 €)**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 999, co2GrammProKm = 95,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 20,00
```
**Testfall — alle CO₂-Bänder: 1.000 cm³, 200 g/km → 20,00 + 280,00 = 300,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1000, co2GrammProKm = 200,
erstzulassung = AbJan2021,
)
TarifNach9Abs1(f) == 300,00
```
#### prüfe `§ 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020`
```findsl
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. b — PKW 1.7.2009–31.12.2020"
```
**Testfall — Benziner 1.390 cm³, 130 g/km, Freigrenze 110 → 28,00 + 40,00 = 68,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1390, co2GrammProKm = 130,
erstzulassung = JuliBisDez2020, co2FreigrenzeNr2b = 110,
)
TarifNach9Abs1(f) == 68,00
```
#### prüfe `§ 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)`
```findsl
prüfe "§ 9 Abs. 1 Nr. 2 Buchst. a — PKW bis 30.6.2009 (Schadstoffstufe)"
```
**Testfall — Benziner Stufe ee, 1.600 cm³ → 16 × 25,36 = 405,76 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1600,
erstzulassung = BisJuni2009, pkwStufe = Ee,
)
TarifNach9Abs1(f) == 405,76
```
**Testfall — Diesel Stufe aa, 1.900 cm³ → 19 × 15,44 = 293,36 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Pkw, antrieb = Selbstzuendung,
hubraumCcm = 1900,
erstzulassung = BisJuni2009, pkwStufe = Aa,
)
TarifNach9Abs1(f) == 293,36
```
#### prüfe `§ 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)`
```findsl
prüfe "§ 9 Abs. 1 Nr. 2a — Wohnmobile (progressiv, gedeckelt)"
```
**Testfall — ≥ S4, 3.000 kg → 160,00 + 50,00 = 210,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 3000, wohnmobilklasse = MindestensS4,
)
TarifNach9Abs1(f) == 210,00
```
**Testfall — ≥ S4, sehr schwer → Höchstbetrag 800,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 20000, wohnmobilklasse = MindestensS4,
)
TarifNach9Abs1(f) == 800,00
```
**Testfall — S3–S1, 3.000 kg → 240,00 + 50,00 = 290,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 3000, wohnmobilklasse = S1bisS3,
)
TarifNach9Abs1(f) == 290,00
```
**Testfall — sonst, 6.000 kg → 400,00 + 150,00 + 75,00 = 625,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Wohnmobil, antrieb = Selbstzuendung,
gesamtgewichtKg = 6000, wohnmobilklasse = WomoSonst,
)
TarifNach9Abs1(f) == 625,00
```
#### prüfe `§ 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)`
```findsl
prüfe "§ 9 Abs. 1 Nr. 3 — andere Kfz ≤ 3.500 kg (progressiv)"
```
**Testfall — 2.800 kg → 112,50 + 48,08 = 160,58 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = AndereBis3500, antrieb = Selbstzuendung, gesamtgewichtKg = 2800,
)
TarifNach9Abs1(f) == 160,58
```
**Testfall — 3.500 kg → 112,50 + 60,10 + 38,34 = 210,94 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = AndereBis3500, antrieb = Selbstzuendung, gesamtgewichtKg = 3500,
)
TarifNach9Abs1(f) == 210,94
```
#### prüfe `§ 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)`
```findsl
prüfe "§ 9 Abs. 1 Nr. 4 — Kfz > 3.500 kg (a/b/c/d, gedeckelt)"
```
**Testfall — Buchst. a (≥ S2), 5.000 kg → 173,90 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = MindestensS2,
)
TarifNach9Abs1(f) == 173,90
```
**Testfall — Buchst. a, sehr schwer → Höchstbetrag 556,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 20000, nfzklasse = MindestensS2,
)
TarifNach9Abs1(f) == 556,00
```
**Testfall — Buchst. c (G1), 5.000 kg → 260,80 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = G1,
)
TarifNach9Abs1(f) == 260,80
```
**Testfall — Buchst. d (sonst), 5.000 kg → 304,25 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 5000, nfzklasse = NfzSonst,
)
TarifNach9Abs1(f) == 304,25
```
**Testfall — Buchst. d, sehr schwer → Höchstbetrag 1.681,00 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = AndereUeber3500, antrieb = Selbstzuendung,
gesamtgewichtKg = 40000, nfzklasse = NfzSonst,
)
TarifNach9Abs1(f) == 1.681,00
```
#### prüfe `§ 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)`
```findsl
prüfe "§ 9 Abs. 1 Nr. 5 — Anhänger (7,46 € je 200 kg, max 373,24 €)"
```
**Testfall — 2.000 kg → 10 × 7,46 = 74,60 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Anhaenger, antrieb = Fremdzuendung, gesamtgewichtKg = 2000,
)
TarifNach9Abs1(f) == 74,60
```
**Testfall — schwer → Höchstbetrag 373,24 €**
```findsl
var f: Fahrzeug = Fahrzeug(
art = Anhaenger, antrieb = Fremdzuendung, gesamtgewichtKg = 20000,
)
TarifNach9Abs1(f) == 373,24
```
#### prüfe `§ 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)`
```findsl
prüfe "§ 9 Abs. 2 — Elektro-Ermäßigung 50 % (nur Nr. 3 / Nr. 4a)"
```
**Testfall — E-Kfz Nr. 3, 3.000 kg → 172,60 / 2 = 86,30 €**
```findsl
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(art = AndereBis3500, antrieb = Elektro, gesamtgewichtKg = 3000),
)
e.tarifbetrag == 172,60 und e.nachElektro == 86,30 und e.jahressteuer == 86,30
```
**Testfall — E-Kfz Nr. 4a, 5.000 kg → 173,90 / 2 = 86,95 €**
```findsl
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = AndereUeber3500, antrieb = Elektro,
gesamtgewichtKg = 5000, nfzklasse = MindestensS2,
),
)
e.nachElektro == 86,95
```
**Testfall — E-Kfz Nr. 4d → KEINE 50 %-Ermäßigung (nur a)**
```findsl
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = AndereUeber3500, antrieb = Elektro,
gesamtgewichtKg = 5000, nfzklasse = NfzSonst,
),
)
e.nachElektro == 304,25
```
#### prüfe `§ 3a / § 3d — Vergünstigungen / Befreiungen`
```findsl
prüfe "§ 3a / § 3d — Vergünstigungen / Befreiungen"
```
**Testfall — § 3a Abs. 1 (H/Bl/aG) → volle Befreiung 0,00 €**
```findsl
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Kraftrad, antrieb = Fremdzuendung,
hubraumCcm = 125, behinderung = Befreit3aAbs1,
),
)
e.jahressteuer == 0,00
```
**Testfall — § 3a Abs. 2 → 50 % (9,20 / 2 = 4,60 €)**
```findsl
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Kraftrad, antrieb = Fremdzuendung,
hubraumCcm = 125, behinderung = Ermaessigt3aAbs2,
),
)
e.tarifbetrag == 9,20 und e.jahressteuer == 4,60
```
**Testfall — § 3d E-Befreiung aktiv → 0,00 € (trotz Tarifbetrag)**
```findsl
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Pkw, antrieb = Elektro,
hubraumCcm = 0, co2GrammProKm = 0,
erstzulassung = AbJan2021, elektroBefreitNach3d = wahr,
),
)
e.jahressteuer == 0,00
```
#### prüfe `Gesamtberechnung — vollständiges Ergebnis`
```findsl
prüfe "Gesamtberechnung — vollständiges Ergebnis"
```
**Testfall — Benziner-PKW ab 2021, 1.598 cm³, 120 g/km**
```findsl
var e: KraftfahrzeugsteuerErgebnis = BerechneKraftfahrzeugsteuer(
Fahrzeug(
art = Pkw, antrieb = Fremdzuendung,
hubraumCcm = 1598, co2GrammProKm = 120,
erstzulassung = AbJan2021,
),
)
e.tarifbetrag == 83,00 und e.nachElektro == 83,00 und e.jahressteuer == 83,00
```
## `kraftstg-tarif-leicht`
*`kraftstg-tarif-leicht.findsl`*
#### Kraftfahrzeugsteuer — Tarif leichte Fahrzeuge (§ 9 Abs. 1 Nr. 1/2/2a/2b)
Konstanten **und** Tarif-Funktionen für Krafträder (Nr. 1),
Personenkraftwagen (Nr. 2 Buchst. a/b/c), Wohnmobile (Nr. 2a) und
dreirädrige/leichte vierrädrige Kfz (Nr. 2b) — aus `kraftstg-steuer`
herausgelöst. Konstanten und Logik liegen bewusst zusammen (ein
Rechtsbereich = eine Datei, minimale modulübergreifende Importe).
Einstiegsfunktionen `steuerKraftrad`, `steuerPkw`, `steuerWohnmobil`,
`steuerDreiLeichtvier` wählt der Orchestrator `kraftstg-steuer`
nach Fahrzeugart ([§ 8 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__8.html)) aus.
### Konstanten
#### konst `KRAD_JE_25CCM`
```findsl
konst KRAD_JE_25CCM: EuroCent = 1,84
```
Kraftrad: je angefangene 25 cm³ Hubraum 1,84 € ([§ 9 Abs. 1 Nr. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)).
> Quelle: § 9 Absatz 1 Nummer 1 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_HUBRAUM_OTTO`
```findsl
konst PKW_C_HUBRAUM_OTTO: EuroCent = 2,00
```
PKW Nr. 2c (Erstzulassung ab 1.1.2021): Sockel je 100 cm³, Fremdzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_HUBRAUM_DIESEL`
```findsl
konst PKW_C_HUBRAUM_DIESEL: EuroCent = 9,50
```
PKW Nr. 2c: Sockel je 100 cm³, Selbstzündung (Diesel).
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_CO2_95_115`
```findsl
konst PKW_C_CO2_95_115: EuroCent = 2,00
```
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 95 bis 115 g/km.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_CO2_115_135`
```findsl
konst PKW_C_CO2_115_135: EuroCent = 2,20
```
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 115 bis 135 g/km.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_CO2_135_155`
```findsl
konst PKW_C_CO2_135_155: EuroCent = 2,50
```
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 135 bis 155 g/km.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_CO2_155_175`
```findsl
konst PKW_C_CO2_155_175: EuroCent = 2,90
```
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 155 bis 175 g/km.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_CO2_175_195`
```findsl
konst PKW_C_CO2_175_195: EuroCent = 3,40
```
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 175 bis 195 g/km.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_CO2_UEBER_195`
```findsl
konst PKW_C_CO2_UEBER_195: EuroCent = 4,00
```
PKW Nr. 2c: CO₂-Aufschlag je g/km, Spanne über 195 g/km.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_C_CO2_FREI`
```findsl
konst PKW_C_CO2_FREI: Ganzzahl = 95
```
CO₂-Freibetrag: erst Emissionen ÜBER 95 g/km sind aufschlagspflichtig (Nr. 2c).
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_B_HUBRAUM_OTTO`
```findsl
konst PKW_B_HUBRAUM_OTTO: EuroCent = 2,00
```
PKW Nr. 2b (Erstzulassung 1.7.2009–31.12.2020): Sockel je 100 cm³ Fremdzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_B_HUBRAUM_DIESEL`
```findsl
konst PKW_B_HUBRAUM_DIESEL: EuroCent = 9,50
```
PKW Nr. 2b: Sockel je 100 cm³ Selbstzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_B_CO2_JE_GRAMM`
```findsl
konst PKW_B_CO2_JE_GRAMM: EuroCent = 2,00
```
PKW Nr. 2b: CO₂-Aufschlag je g/km über der (datumsabhängigen) Freigrenze.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_AA_OTTO`
```findsl
konst PKW_A_AA_OTTO: EuroCent = 6,75
```
PKW Nr. 2a (Erstzulassung bis 30.6.2009), je 100 cm³, Stufe aa — Fremdzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_AA_DIESEL`
```findsl
konst PKW_A_AA_DIESEL: EuroCent = 15,44
```
Stufe aa — Selbstzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe aa KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_BB_OTTO`
```findsl
konst PKW_A_BB_OTTO: EuroCent = 7,36
```
Stufe bb — Fremdzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_BB_DIESEL`
```findsl
konst PKW_A_BB_DIESEL: EuroCent = 16,05
```
Stufe bb — Selbstzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe bb KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_CC_OTTO`
```findsl
konst PKW_A_CC_OTTO: EuroCent = 15,13
```
Stufe cc — Fremdzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_CC_DIESEL`
```findsl
konst PKW_A_CC_DIESEL: EuroCent = 27,35
```
Stufe cc — Selbstzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe cc KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_DD_OTTO`
```findsl
konst PKW_A_DD_OTTO: EuroCent = 21,07
```
Stufe dd — Fremdzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_DD_DIESEL`
```findsl
konst PKW_A_DD_DIESEL: EuroCent = 33,29
```
Stufe dd — Selbstzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe dd KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_EE_OTTO`
```findsl
konst PKW_A_EE_OTTO: EuroCent = 25,36
```
Stufe ee (höchste, keine Voraussetzungen erfüllt) — Fremdzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `PKW_A_EE_DIESEL`
```findsl
konst PKW_A_EE_DIESEL: EuroCent = 37,58
```
Stufe ee — Selbstzündung.
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a Doppelbuchstabe ee KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `DREIRAD_GW_OTTO`
```findsl
konst DREIRAD_GW_OTTO: EuroCent = 21,07
```
Dreirad/leichtes Vierrad, Grenzwerte eingehalten, Fremdzündung (je 100 cm³).
> Quelle: § 9 Absatz 1 Nummer 2b Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `DREIRAD_GW_DIESEL`
```findsl
konst DREIRAD_GW_DIESEL: EuroCent = 33,29
```
Grenzwerte eingehalten, Selbstzündung.
> Quelle: § 9 Absatz 1 Nummer 2b Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `DREIRAD_SONST_OTTO`
```findsl
konst DREIRAD_SONST_OTTO: EuroCent = 25,36
```
Grenzwerte nicht eingehalten, Fremdzündung.
> Quelle: § 9 Absatz 1 Nummer 2b Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `DREIRAD_SONST_DIESEL`
```findsl
konst DREIRAD_SONST_DIESEL: EuroCent = 37,58
```
Grenzwerte nicht eingehalten, Selbstzündung.
> Quelle: § 9 Absatz 1 Nummer 2b Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_S4_BIS_2000`
```findsl
konst WOMO_S4_BIS_2000: EuroCent = 16,00
```
Wohnmobil ≥ Schadstoffklasse S4: bis 2.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_S4_UEBER_2000`
```findsl
konst WOMO_S4_UEBER_2000: EuroCent = 10,00
```
Wohnmobil ≥ S4: über 2.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_S4_MAX`
```findsl
konst WOMO_S4_MAX: EuroCent = 800,00
```
Wohnmobil ≥ S4: Höchstbetrag.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_S1_BIS_2000`
```findsl
konst WOMO_S1_BIS_2000: EuroCent = 24,00
```
Wohnmobil S3/S2/S1: bis 2.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_S1_UEBER_2000`
```findsl
konst WOMO_S1_UEBER_2000: EuroCent = 10,00
```
Wohnmobil S3/S2/S1: über 2.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_S1_MAX`
```findsl
konst WOMO_S1_MAX: EuroCent = 1.000,00
```
Wohnmobil S3/S2/S1: Höchstbetrag.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_SONST_BIS_2000`
```findsl
konst WOMO_SONST_BIS_2000: EuroCent = 40,00
```
Wohnmobil sonst: bis 2.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_SONST_2000_5000`
```findsl
konst WOMO_SONST_2000_5000: EuroCent = 10,00
```
Wohnmobil sonst: über 2.000 bis 5.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_SONST_5000_12000`
```findsl
konst WOMO_SONST_5000_12000: EuroCent = 15,00
```
Wohnmobil sonst: über 5.000 bis 12.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `WOMO_SONST_UEBER_12000`
```findsl
konst WOMO_SONST_UEBER_12000: EuroCent = 25,00
```
Wohnmobil sonst: über 12.000 kg je 200 kg (kein Höchstbetrag).
> Quelle: § 9 Absatz 1 Nummer 2a Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
### Funktionen
#### fn `SteuerKraftrad`
```findsl
fn SteuerKraftrad(hubraumCcm: Ganzzahl): EuroCent
```
Jahressteuer für Krafträder: je angefangene 25 cm³ Hubraum 1,84 €
([§ 9 Abs. 1 Nr. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `hubraumCcm` | Hubraum in cm³. |
**Rückgabe** — Jahressteuer des Kraftrads.
> Quelle: § 9 Absatz 1 Nummer 1 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### fn `SteuerPkw`
```findsl
fn SteuerPkw(f: Fahrzeug): EuroCent
```
Personenkraftwagen nach [§ 9 Abs. 1 Nr. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html): wählt anhand des
Erstzulassungs-Regimes Buchst. a, b oder c.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `f` | Fahrzeug-Eingaben. |
**Rückgabe** — Jahressteuer des PKW.
> Quelle: § 9 Absatz 1 Nummer 2 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### fn `SteuerDreiLeichtvier`
```findsl
fn SteuerDreiLeichtvier(hubraumCcm: Ganzzahl, grenzwerte: Wahrheitswert, antrieb: Antrieb): EuroCent
```
Dreirädrige und leichte vierrädrige Kraftfahrzeuge
([§ 9 Abs. 1 Nr. 2b KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)): je angefangene 100 cm³ ein nach
Grenzwert-Einhaltung und Antrieb gestaffelter Satz.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `hubraumCcm` | Hubraum in cm³. |
| `grenzwerte` | Grenzwerte (RL 97/24/EG Zeile A 2003) eingehalten? |
| `antrieb` | Antriebsart. |
**Rückgabe** — Jahressteuer des Fahrzeugs.
> Quelle: § 9 Absatz 1 Nummer 2b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### fn `SteuerWohnmobil`
```findsl
fn SteuerWohnmobil(gesamtgewichtKg: Ganzzahl, klasse: WohnmobilKlasse): EuroCent
```
Wohnmobil nach [§ 9 Abs. 1 Nr. 2a KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html): je angefangene 200 kg
Gesamtgewicht, progressiv nach Gewichtsspanne und Schadstoffklasse,
mit Höchstbetrag (Buchst. a/b) bzw. ohne (Buchst. c).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `gesamtgewichtKg` | verkehrsrechtlich zulässiges Gesamtgewicht (kg). |
| `klasse` | Schadstoffklasse des Wohnmobils. |
**Rückgabe** — Jahressteuer des Wohnmobils.
> Quelle: § 9 Absatz 1 Nummer 2a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
## `kraftstg-tarif-nutzfahrzeug`
*`kraftstg-tarif-nutzfahrzeug.findsl`*
#### Kraftfahrzeugsteuer — Tarif Nutzfahrzeuge (§ 9 Abs. 1 Nr. 3/4/5)
Konstanten **und** Tarif-Funktionen für andere Kfz ≤ 3.500 kg (Nr. 3),
Kfz > 3.500 kg (Nr. 4 Buchst. a/b/c/d — progressive 200-kg-Stufen mit
Höchstbetrag) und Kraftfahrzeuganhänger (Nr. 5) — aus
`kraftstg-steuer` herausgelöst. Konstanten und Logik liegen bewusst
zusammen.
Einstiegsfunktionen `steuerNr3`, `steuerNr4`, `steuerAnhaenger`
wählt der Orchestrator `kraftstg-steuer` nach Fahrzeugart aus.
### Konstanten
#### konst `NR3_BIS_2000`
```findsl
konst NR3_BIS_2000: EuroCent = 11,25
```
Nr. 3: bis 2.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 3 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR3_2000_3000`
```findsl
konst NR3_2000_3000: EuroCent = 12,02
```
Nr. 3: über 2.000 bis 3.000 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 3 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR3_3000_3500`
```findsl
konst NR3_3000_3500: EuroCent = 12,78
```
Nr. 3: über 3.000 bis 3.500 kg je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 3 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR3_KUM_2000`
```findsl
konst NR3_KUM_2000: EuroCent = NR3_BIS_2000 * 10
```
Nr. 3: kumulierter Betrag bei genau 2.000 kg (10 Stufen × Satz).
> Quelle: § 9 Absatz 1 Nummer 3 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR3_KUM_3000`
```findsl
konst NR3_KUM_3000: EuroCent = NR3_KUM_2000 + NR3_2000_3000 * 5
```
Nr. 3: kumulierter Betrag bei genau 3.000 kg.
> Quelle: § 9 Absatz 1 Nummer 3 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_1`
```findsl
konst NR4A_1: EuroCent = 6,42
```
Nr. 4a (≥ S2): Stufensätze je 200 kg, Gewichtsspannen 2.000…> 12.000 kg.
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_2`
```findsl
konst NR4A_2: EuroCent = 6,88
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_3`
```findsl
konst NR4A_3: EuroCent = 7,31
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_4`
```findsl
konst NR4A_4: EuroCent = 7,75
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_5`
```findsl
konst NR4A_5: EuroCent = 8,18
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_6`
```findsl
konst NR4A_6: EuroCent = 8,62
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_7`
```findsl
konst NR4A_7: EuroCent = 9,36
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_8`
```findsl
konst NR4A_8: EuroCent = 10,07
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_9`
```findsl
konst NR4A_9: EuroCent = 10,97
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_10`
```findsl
konst NR4A_10: EuroCent = 11,84
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_11`
```findsl
konst NR4A_11: EuroCent = 13,01
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_12`
```findsl
konst NR4A_12: EuroCent = 14,32
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_MAX`
```findsl
konst NR4A_MAX: EuroCent = 556,00
```
Nr. 4a: Höchstbetrag.
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_2000`
```findsl
konst NR4A_KUM_2000: EuroCent = NR4A_1 * 10
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_3000`
```findsl
konst NR4A_KUM_3000: EuroCent = NR4A_KUM_2000 + NR4A_2 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_4000`
```findsl
konst NR4A_KUM_4000: EuroCent = NR4A_KUM_3000 + NR4A_3 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_5000`
```findsl
konst NR4A_KUM_5000: EuroCent = NR4A_KUM_4000 + NR4A_4 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_6000`
```findsl
konst NR4A_KUM_6000: EuroCent = NR4A_KUM_5000 + NR4A_5 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_7000`
```findsl
konst NR4A_KUM_7000: EuroCent = NR4A_KUM_6000 + NR4A_6 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_8000`
```findsl
konst NR4A_KUM_8000: EuroCent = NR4A_KUM_7000 + NR4A_7 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_9000`
```findsl
konst NR4A_KUM_9000: EuroCent = NR4A_KUM_8000 + NR4A_8 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_10000`
```findsl
konst NR4A_KUM_10000: EuroCent = NR4A_KUM_9000 + NR4A_9 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_11000`
```findsl
konst NR4A_KUM_11000: EuroCent = NR4A_KUM_10000 + NR4A_10 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4A_KUM_12000`
```findsl
konst NR4A_KUM_12000: EuroCent = NR4A_KUM_11000 + NR4A_11 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_1`
```findsl
konst NR4D_1: EuroCent = 11,25
```
Nr. 4d (Voraussetzungen a/b/c nicht erfüllt): Stufensätze je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_2`
```findsl
konst NR4D_2: EuroCent = 12,02
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_3`
```findsl
konst NR4D_3: EuroCent = 12,78
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_4`
```findsl
konst NR4D_4: EuroCent = 13,55
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_5`
```findsl
konst NR4D_5: EuroCent = 14,32
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_6`
```findsl
konst NR4D_6: EuroCent = 15,08
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_7`
```findsl
konst NR4D_7: EuroCent = 16,36
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_8`
```findsl
konst NR4D_8: EuroCent = 17,64
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_9`
```findsl
konst NR4D_9: EuroCent = 19,17
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_10`
```findsl
konst NR4D_10: EuroCent = 20,71
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_11`
```findsl
konst NR4D_11: EuroCent = 22,75
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_12`
```findsl
konst NR4D_12: EuroCent = 25,05
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_13`
```findsl
konst NR4D_13: EuroCent = 27,61
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_14`
```findsl
konst NR4D_14: EuroCent = 45,50
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_15`
```findsl
konst NR4D_15: EuroCent = 63,40
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_MAX`
```findsl
konst NR4D_MAX: EuroCent = 1.681,00
```
Nr. 4d: Höchstbetrag.
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_2000`
```findsl
konst NR4D_KUM_2000: EuroCent = NR4D_1 * 10
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_3000`
```findsl
konst NR4D_KUM_3000: EuroCent = NR4D_KUM_2000 + NR4D_2 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_4000`
```findsl
konst NR4D_KUM_4000: EuroCent = NR4D_KUM_3000 + NR4D_3 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_5000`
```findsl
konst NR4D_KUM_5000: EuroCent = NR4D_KUM_4000 + NR4D_4 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_6000`
```findsl
konst NR4D_KUM_6000: EuroCent = NR4D_KUM_5000 + NR4D_5 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_7000`
```findsl
konst NR4D_KUM_7000: EuroCent = NR4D_KUM_6000 + NR4D_6 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_8000`
```findsl
konst NR4D_KUM_8000: EuroCent = NR4D_KUM_7000 + NR4D_7 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_9000`
```findsl
konst NR4D_KUM_9000: EuroCent = NR4D_KUM_8000 + NR4D_8 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_10000`
```findsl
konst NR4D_KUM_10000: EuroCent = NR4D_KUM_9000 + NR4D_9 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_11000`
```findsl
konst NR4D_KUM_11000: EuroCent = NR4D_KUM_10000 + NR4D_10 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_12000`
```findsl
konst NR4D_KUM_12000: EuroCent = NR4D_KUM_11000 + NR4D_11 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_13000`
```findsl
konst NR4D_KUM_13000: EuroCent = NR4D_KUM_12000 + NR4D_12 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_14000`
```findsl
konst NR4D_KUM_14000: EuroCent = NR4D_KUM_13000 + NR4D_13 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4D_KUM_15000`
```findsl
konst NR4D_KUM_15000: EuroCent = NR4D_KUM_14000 + NR4D_14 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe d KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_1`
```findsl
konst NR4B_1: EuroCent = 6,42
```
Nr. 4b (Schadstoffklasse S1): Stufensätze je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_2`
```findsl
konst NR4B_2: EuroCent = 6,88
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_3`
```findsl
konst NR4B_3: EuroCent = 7,31
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_4`
```findsl
konst NR4B_4: EuroCent = 7,75
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_5`
```findsl
konst NR4B_5: EuroCent = 8,18
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_6`
```findsl
konst NR4B_6: EuroCent = 8,62
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_7`
```findsl
konst NR4B_7: EuroCent = 9,36
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_8`
```findsl
konst NR4B_8: EuroCent = 10,07
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_9`
```findsl
konst NR4B_9: EuroCent = 10,97
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_10`
```findsl
konst NR4B_10: EuroCent = 11,84
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_11`
```findsl
konst NR4B_11: EuroCent = 13,01
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_12`
```findsl
konst NR4B_12: EuroCent = 14,32
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_13`
```findsl
konst NR4B_13: EuroCent = 15,77
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_14`
```findsl
konst NR4B_14: EuroCent = 26,00
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_15`
```findsl
konst NR4B_15: EuroCent = 36,23
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_MAX`
```findsl
konst NR4B_MAX: EuroCent = 914,00
```
Nr. 4b: Höchstbetrag.
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_2000`
```findsl
konst NR4B_KUM_2000: EuroCent = NR4B_1 * 10
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_3000`
```findsl
konst NR4B_KUM_3000: EuroCent = NR4B_KUM_2000 + NR4B_2 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_4000`
```findsl
konst NR4B_KUM_4000: EuroCent = NR4B_KUM_3000 + NR4B_3 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_5000`
```findsl
konst NR4B_KUM_5000: EuroCent = NR4B_KUM_4000 + NR4B_4 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_6000`
```findsl
konst NR4B_KUM_6000: EuroCent = NR4B_KUM_5000 + NR4B_5 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_7000`
```findsl
konst NR4B_KUM_7000: EuroCent = NR4B_KUM_6000 + NR4B_6 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_8000`
```findsl
konst NR4B_KUM_8000: EuroCent = NR4B_KUM_7000 + NR4B_7 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_9000`
```findsl
konst NR4B_KUM_9000: EuroCent = NR4B_KUM_8000 + NR4B_8 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_10000`
```findsl
konst NR4B_KUM_10000: EuroCent = NR4B_KUM_9000 + NR4B_9 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_11000`
```findsl
konst NR4B_KUM_11000: EuroCent = NR4B_KUM_10000 + NR4B_10 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_12000`
```findsl
konst NR4B_KUM_12000: EuroCent = NR4B_KUM_11000 + NR4B_11 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_13000`
```findsl
konst NR4B_KUM_13000: EuroCent = NR4B_KUM_12000 + NR4B_12 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_14000`
```findsl
konst NR4B_KUM_14000: EuroCent = NR4B_KUM_13000 + NR4B_13 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4B_KUM_15000`
```findsl
konst NR4B_KUM_15000: EuroCent = NR4B_KUM_14000 + NR4B_14 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe b KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_1`
```findsl
konst NR4C_1: EuroCent = 9,64
```
Nr. 4c (Geräuschklasse G1): Stufensätze je 200 kg.
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_2`
```findsl
konst NR4C_2: EuroCent = 10,30
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_3`
```findsl
konst NR4C_3: EuroCent = 10,97
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_4`
```findsl
konst NR4C_4: EuroCent = 11,61
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_5`
```findsl
konst NR4C_5: EuroCent = 12,27
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_6`
```findsl
konst NR4C_6: EuroCent = 12,94
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_7`
```findsl
konst NR4C_7: EuroCent = 14,03
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_8`
```findsl
konst NR4C_8: EuroCent = 15,11
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_9`
```findsl
konst NR4C_9: EuroCent = 16,44
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_10`
```findsl
konst NR4C_10: EuroCent = 17,74
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_11`
```findsl
konst NR4C_11: EuroCent = 19,51
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_12`
```findsl
konst NR4C_12: EuroCent = 21,47
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_13`
```findsl
konst NR4C_13: EuroCent = 23,67
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_14`
```findsl
konst NR4C_14: EuroCent = 39,01
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_15`
```findsl
konst NR4C_15: EuroCent = 54,35
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_MAX`
```findsl
konst NR4C_MAX: EuroCent = 1.425,00
```
Nr. 4c: Höchstbetrag.
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_2000`
```findsl
konst NR4C_KUM_2000: EuroCent = NR4C_1 * 10
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_3000`
```findsl
konst NR4C_KUM_3000: EuroCent = NR4C_KUM_2000 + NR4C_2 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_4000`
```findsl
konst NR4C_KUM_4000: EuroCent = NR4C_KUM_3000 + NR4C_3 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_5000`
```findsl
konst NR4C_KUM_5000: EuroCent = NR4C_KUM_4000 + NR4C_4 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_6000`
```findsl
konst NR4C_KUM_6000: EuroCent = NR4C_KUM_5000 + NR4C_5 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_7000`
```findsl
konst NR4C_KUM_7000: EuroCent = NR4C_KUM_6000 + NR4C_6 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_8000`
```findsl
konst NR4C_KUM_8000: EuroCent = NR4C_KUM_7000 + NR4C_7 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_9000`
```findsl
konst NR4C_KUM_9000: EuroCent = NR4C_KUM_8000 + NR4C_8 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_10000`
```findsl
konst NR4C_KUM_10000: EuroCent = NR4C_KUM_9000 + NR4C_9 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_11000`
```findsl
konst NR4C_KUM_11000: EuroCent = NR4C_KUM_10000 + NR4C_10 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_12000`
```findsl
konst NR4C_KUM_12000: EuroCent = NR4C_KUM_11000 + NR4C_11 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_13000`
```findsl
konst NR4C_KUM_13000: EuroCent = NR4C_KUM_12000 + NR4C_12 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_14000`
```findsl
konst NR4C_KUM_14000: EuroCent = NR4C_KUM_13000 + NR4C_13 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `NR4C_KUM_15000`
```findsl
konst NR4C_KUM_15000: EuroCent = NR4C_KUM_14000 + NR4C_14 * 5
```
> Quelle: § 9 Absatz 1 Nummer 4 Buchstabe c KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `ANH_JE_200KG`
```findsl
konst ANH_JE_200KG: EuroCent = 7,46
```
Anhänger: je angefangene 200 kg Gesamtgewicht 7,46 €.
> Quelle: § 9 Absatz 1 Nummer 5 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### konst `ANH_MAX`
```findsl
konst ANH_MAX: EuroCent = 373,24
```
Anhänger: Höchstbetrag.
> Quelle: § 9 Absatz 1 Nummer 5 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
### Funktionen
#### fn `SteuerNr3`
```findsl
fn SteuerNr3(g: Ganzzahl): EuroCent
```
Andere Kraftfahrzeuge bis 3.500 kg ([§ 9 Abs. 1 Nr. 3 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)):
je angefangene 200 kg, progressiv nach Gewichtsspanne (kein
Höchstbetrag).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `g` | Gesamtgewicht (kg). |
**Rückgabe** — Jahressteuer.
> Quelle: § 9 Absatz 1 Nummer 3 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### fn `SteuerNr4`
```findsl
fn SteuerNr4(g: Ganzzahl, klasse: NfzKlasse): EuroCent
```
Kfz über 3.500 kg ([§ 9 Abs. 1 Nr. 4 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)): je angefangene 200 kg,
progressiv in 1.000-kg-Spannen, nach Schadstoff-/Geräuschklasse, mit
jeweils eigenem Höchstbetrag. Alle vier Buchstaben sind eigenständig
modelliert: a (≥ S2, Spannen bis > 12.000 kg, max 556 €), b (S1,
max 914 €), c (G1, max 1.425 €), d (sonst, max 1.681 €).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `g` | Gesamtgewicht (kg). |
| `klasse` | Schadstoff-/Geräuschklasse. |
**Rückgabe** — Jahressteuer.
> Quelle: § 9 Absatz 1 Nummer 4 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### fn `SteuerAnhaenger`
```findsl
fn SteuerAnhaenger(gesamtgewichtKg: Ganzzahl): EuroCent
```
Kraftfahrzeuganhänger ([§ 9 Abs. 1 Nr. 5 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)): je angefangene
200 kg Gesamtgewicht 7,46 €, höchstens 373,24 €.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `gesamtgewichtKg` | Gesamtgewicht (kg). |
**Rückgabe** — Jahressteuer des Anhängers.
> Quelle: § 9 Absatz 1 Nummer 5 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
## `kraftstg-typen`
*`kraftstg-typen.findsl`*
#### Kraftfahrzeugsteuer — gemeinsame Typen und Helfer
Geteiltes Vokabular des KraftStG-Moduls (aus `kraftstg-steuer`
herausgelöst, damit die Hauptdatei nicht überlang wird): die
Fahrzeug-Klassifizierungs-Aufzählungen (§[§ 8](https://www.gesetze-im-internet.de/kraftstg/__8.html), [9](https://www.gesetze-im-internet.de/kraftstg/__9.html), [3a KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3a.html)), der
Eingabe-Datensatz `Fahrzeug`, der Ergebnis-Datensatz
`KraftfahrzeugsteuerErgebnis` sowie die allgemeinen Berechnungshelfer
`einheiten` (je angefangene Einheit, [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)) und `begrenze`
(Höchstbetrags-Kappung, [§ 9 Abs. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)).
Importiert nichts (Blatt des Modul-Graphen); wird von den Tarif-Dateien
`kraftstg-tarif-leicht`, `kraftstg-tarif-nutzfahrzeug` und vom Orchestrator
`kraftstg-steuer` genutzt.
### Datensätze
#### datensatz `Fahrzeug`
```findsl
datensatz Fahrzeug(
art: Fahrzeugart, // § 8 KraftStG: Tarifauswahl
antrieb: Antrieb, // Fremd-/Selbstzündung/Elektro
hubraumCcm: Ganzzahl = 0, // cm³ (Nr. 1, 2, 2b)
co2GrammProKm: Ganzzahl = 0, // g/km (Nr. 2 b/c)
gesamtgewichtKg: Ganzzahl = 0, // kg (Nr. 2a, 3, 4, 5)
erstzulassung: Erstzulassungsregime = AbJan2021, // PKW: § 9 Nr. 2 a/b/c
pkwStufe: PkwSchadstoffstufe = Ee, // PKW Nr. 2a: Stufe aa–ee
co2FreigrenzeNr2b: Ganzzahl = 95, // PKW Nr. 2b: Freigrenze g/km
dreiradGrenzwerte: Wahrheitswert = falsch, // Nr. 2b: Grenzwerte eingehalten?
wohnmobilklasse: WohnmobilKlasse = WomoSonst, // Nr. 2a: Schadstoffklasse
nfzklasse: NfzKlasse = NfzSonst, // Nr. 4: Schadstoff-/Geräuschklasse
behinderung: Behinderung = Keine, // § 3a KraftStG
elektroBefreitNach3d: Wahrheitswert = falsch, // § 3d KraftStG aktiv?
)
```
Eingaben eines Fahrzeugs für die Jahressteuer-Berechnung. Nicht jedes
Feld ist für jede Fahrzeugart relevant — maßgeblich ist `art`
([§ 8 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__8.html)); die übrigen Felder gelten nur im jeweiligen Tarif.
| Feld | Typ | Bedeutung |
| --- | --- | --- |
| `art` | `Fahrzeugart` | Fahrzeugart ([§ 8 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__8.html)) — wählt den Tarif. |
| `antrieb` | `Antrieb` | Antriebsart (Fremd-/Selbstzündung/Elektro). |
| `hubraumCcm` | `Ganzzahl` | Hubraum in cm³ (Nr. 1, Nr. 2, Nr. 2b). |
| `co2GrammProKm` | `Ganzzahl` | CO₂-Emission in g/km (Nr. 2 Buchst. b/c). |
| `gesamtgewichtKg` | `Ganzzahl` | verkehrsrechtlich zulässiges Gesamtgewicht in kg (Nr. 2a, 3, 4, 5). |
| `erstzulassung` | `Erstzulassungsregime` | Erstzulassungs-Regime des PKW (Nr. 2 a/b/c). |
| `pkwStufe` | `PkwSchadstoffstufe` | Schadstoffstufe aa–ee (Nr. 2 Buchst. a). |
| `co2FreigrenzeNr2b` | `Ganzzahl` | datumsabhängige CO₂-Freigrenze g/km für Nr. 2 Buchst. b (120 bis 31.12.2011 / 110 ab 1.1.2012 / 95 ab 1.1.2014). |
| `dreiradGrenzwerte` | `Wahrheitswert` | Dreirad/leichtes Vierrad: Grenzwerte eingehalten? (Nr. 2b a vs. b). |
| `wohnmobilklasse` | `WohnmobilKlasse` | Schadstoffklasse des Wohnmobils (Nr. 2a). |
| `nfzklasse` | `NfzKlasse` | Schadstoff-/Geräuschklasse > 3.500 kg (Nr. 4). |
| `behinderung` | `Behinderung` | Schwerbehinderten-Vergünstigung ([§ 3a](https://www.gesetze-im-internet.de/kraftstg/__3a.html)). |
| `elektroBefreitNach3d` | `Wahrheitswert` | Steuerbefreiung nach [§ 3d KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3d.html) aktiv? (datumsabhängig — verbindlich extern festgestellt). |
> Quelle: § 8 KraftStG — [§ 8 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__8.html)
#### datensatz `KraftfahrzeugsteuerErgebnis`
```findsl
datensatz KraftfahrzeugsteuerErgebnis(
tarifbetrag: EuroCent, // § 9 Abs. 1 KraftStG
nachElektro: EuroCent, // § 9 Abs. 2 KraftStG
jahressteuer: EuroCent, // nach § 3a / § 3d KraftStG
)
```
Vollständige, prüfbare Berechnung der Kraftfahrzeug-Jahressteuer.
| Feld | Typ | Bedeutung |
| --- | --- | --- |
| `tarifbetrag` | `EuroCent` | Steuer nach [§ 9 Abs. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html) (vor [§ 9](https://www.gesetze-im-internet.de/kraftstg/__9.html) Abs. 2 / [§ 3a](https://www.gesetze-im-internet.de/kraftstg/__3a.html) / [§ 3d](https://www.gesetze-im-internet.de/kraftstg/__3d.html)). |
| `nachElektro` | `EuroCent` | nach Anwendung der 50 %-Ermäßigung für Elektrofahrzeuge ([§ 9 Abs. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)). |
| `jahressteuer` | `EuroCent` | festgesetzte Jahressteuer nach Anwendung von [§ 3a](https://www.gesetze-im-internet.de/kraftstg/__3a.html) / [§ 3d KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3d.html) (0 bei Befreiung). |
> Quelle: § 9 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
### Aufzählungen
#### aufzählung `Fahrzeugart`
```findsl
aufzählung Fahrzeugart {
Kraftrad,
Pkw,
Wohnmobil,
DreiLeichtvier,
AndereBis3500,
AndereUeber3500,
Anhaenger,
}
```
Fahrzeugart i.S.d. [§ 8](https://www.gesetze-im-internet.de/kraftstg/__8.html) / [§ 9 Abs. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html) — bestimmt, welcher
Tarif (welche Nummer des § 9 Abs. 1) anzuwenden ist.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `Kraftrad` | § 9 Abs. 1 Nr. 1: Krafträder (Hubkolbenmotor). |
| `Pkw` | § 9 Abs. 1 Nr. 2: Personenkraftwagen (M1) mit Hubkolbenmotor. |
| `Wohnmobil` | § 9 Abs. 1 Nr. 2a: Wohnmobile. |
| `DreiLeichtvier` | § 9 Abs. 1 Nr. 2b: dreirädrige und leichte vierrädrige Kraftfahrzeuge. |
| `AndereBis3500` | § 9 Abs. 1 Nr. 3: andere Kfz bis 3.500 kg. |
| `AndereUeber3500` | § 9 Abs. 1 Nr. 4: Kfz über 3.500 kg. |
| `Anhaenger` | § 9 Abs. 1 Nr. 5: Kraftfahrzeuganhänger. |
**Werte:** `Kraftrad`, `Pkw`, `Wohnmobil`, `DreiLeichtvier`, `AndereBis3500`, `AndereUeber3500`, `Anhaenger`
> Quelle: § 8 KraftStG — [§ 8 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__8.html)
#### aufzählung `Antrieb`
```findsl
aufzählung Antrieb {
Fremdzuendung,
Selbstzuendung,
Elektro,
}
```
Antriebsart. § 9 unterscheidet Fremdzündungsmotor (Ottomotor/Benzin)
und Selbstzündungsmotor (Dieselmotor); `Elektro` steuert die
Ermäßigung/Befreiung ([§ 9](https://www.gesetze-im-internet.de/kraftstg/__9.html) Abs. 2, [§ 3d KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3d.html)).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `Fremdzuendung` | Fremdzündungsmotor (Ottomotor). |
| `Selbstzuendung` | Selbstzündungsmotor (Dieselmotor). |
| `Elektro` | Elektrofahrzeug i.S.d. [§ 9 Abs. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html). |
**Werte:** `Fremdzuendung`, `Selbstzuendung`, `Elektro`
> Quelle: § 9 Absatz 1 Nummer 2 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### aufzählung `Erstzulassungsregime`
```findsl
aufzählung Erstzulassungsregime {
BisJuni2009,
JuliBisDez2020,
AbJan2021,
}
```
Erstzulassungs-Regime des PKW — wählt den Buchstaben des
[§ 9 Abs. 1 Nr. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `BisJuni2009` | Erstzulassung bis 30.6.2009 (Buchst. a, Hubraum + Schadstoffstufe aa–ee). |
| `JuliBisDez2020` | Erstzulassung 1.7.2009–31.12.2020 (Buchst. b, Hubraum + CO₂ über datumsabhängiger Freigrenze). |
| `AbJan2021` | Erstzulassung ab 1.1.2021 (Buchst. c, Hubraum + progressiver CO₂-Aufschlag ab 95 g/km). |
**Werte:** `BisJuni2009`, `JuliBisDez2020`, `AbJan2021`
> Quelle: § 9 Absatz 1 Nummer 2 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### aufzählung `PkwSchadstoffstufe`
```findsl
aufzählung PkwSchadstoffstufe {
Aa,
Bb,
Cc,
Dd,
Ee,
}
```
Schadstoffstufe aa–ee für PKW mit Erstzulassung bis 30.6.2009
([§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)). Die Einstufung trifft nach
[§ 2 Abs. 2 Nr. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__2.html) verbindlich die Zulassungsbehörde.
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `Aa` | Doppelbuchst. aa (günstigste Stufe). |
| `Bb` | Doppelbuchst. bb. |
| `Cc` | Doppelbuchst. cc. |
| `Dd` | Doppelbuchst. dd. |
| `Ee` | Doppelbuchst. ee (höchste Stufe, keine Voraussetzungen). |
**Werte:** `Aa`, `Bb`, `Cc`, `Dd`, `Ee`
> Quelle: § 9 Absatz 1 Nummer 2 Buchstabe a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### aufzählung `WohnmobilKlasse`
```findsl
aufzählung WohnmobilKlasse {
MindestensS4,
S1bisS3,
WomoSonst,
}
```
Schadstoffklasse für Wohnmobile ([§ 9 Abs. 1 Nr. 2a KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `MindestensS4` | mindestens Schadstoffklasse S 4 (Buchst. a). |
| `S1bisS3` | Schadstoffklasse S 3, S 2 oder S 1 (Buchst. b). |
| `WomoSonst` | Voraussetzungen a/b nicht erfüllt (Buchst. c). |
**Werte:** `MindestensS4`, `S1bisS3`, `WomoSonst`
> Quelle: § 9 Absatz 1 Nummer 2a KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### aufzählung `NfzKlasse`
```findsl
aufzählung NfzKlasse {
MindestensS2,
S1,
G1,
NfzSonst,
}
```
Schadstoff-/Geräuschklasse für Kfz > 3.500 kg
([§ 9 Abs. 1 Nr. 4 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)). Verbindliche Feststellung der
Zulassungsbehörde ([§ 2 Abs. 2 Nr. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__2.html)).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `MindestensS2` | mindestens Schadstoffklasse S 2 (Buchst. a). |
| `S1` | Schadstoffklasse S 1 (Buchst. b). |
| `G1` | Geräuschklasse G 1 (Buchst. c). |
| `NfzSonst` | Voraussetzungen a/b/c nicht erfüllt (Buchst. d). |
**Werte:** `MindestensS2`, `S1`, `G1`, `NfzSonst`
> Quelle: § 9 Absatz 1 Nummer 4 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)
#### aufzählung `Behinderung`
```findsl
aufzählung Behinderung {
Keine,
Befreit3aAbs1,
Ermaessigt3aAbs2,
}
```
Schwerbehinderten-Vergünstigung nach [§ 3a KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3a.html).
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `Keine` | keine Vergünstigung. |
| `Befreit3aAbs1` | volle Steuerbefreiung (Merkzeichen H, Bl, aG — [§ 3a Abs. 1 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3a.html)). |
| `Ermaessigt3aAbs2` | 50 % Ermäßigung (orangefarbener Aufdruck, [§ 3a Abs. 2 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3a.html)). |
**Werte:** `Keine`, `Befreit3aAbs1`, `Ermaessigt3aAbs2`
> Quelle: § 3a KraftStG — [§ 3a KraftStG](https://www.gesetze-im-internet.de/kraftstg/__3a.html)
### Funktionen
#### fn `Einheiten`
```findsl
fn Einheiten(wert: Ganzzahl, teiler: Ganzzahl): Ganzzahl
```
Anzahl angefangener Einheiten: `wert` geteilt durch `schritt`,
aufgerundet ([§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html): „für je … oder einen Teil davon").
**Parameter**
| Name | Beschreibung |
| --- | --- |
| `wert` | zu zerlegende Menge (cm³ bzw. kg). |
| `teiler` | Einheitengröße (25 / 100 / 200). |
**Rückgabe** — Anzahl angefangener Einheiten (≥ 0).
> Quelle: § 9 Absatz 1 KraftStG — [§ 9 KraftStG](https://www.gesetze-im-internet.de/kraftstg/__9.html)Programmablaufpläne — kraftst
TarifNach9Abs1
%%{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
TarifNach9Abs1_n0("TarifNach9Abs1<br/><br/>⟨§ 9 Absatz 1 KraftStG⟩")
TarifNach9Abs1_n1[/"f: Fahrzeug"/]
TarifNach9Abs1_n2{{"wähle f.art"}}
TarifNach9Abs1_n3[["SteuerKraftrad(…)"]]
TarifNach9Abs1_n4[["SteuerPkw(…)"]]
TarifNach9Abs1_n5[["SteuerWohnmobil(…)"]]
TarifNach9Abs1_n6[["SteuerDreiLeichtvier(…)"]]
TarifNach9Abs1_n7[["SteuerNr3(…)"]]
TarifNach9Abs1_n8[["SteuerNr4(…)"]]
TarifNach9Abs1_n9[["SteuerAnhaenger(…)"]]
TarifNach9Abs1_n10("Ergebnis: EuroCent")
TarifNach9Abs1_n1 --> TarifNach9Abs1_n0
TarifNach9Abs1_n2 -->|"Kraftrad"| TarifNach9Abs1_n3
TarifNach9Abs1_n2 -->|"Pkw"| TarifNach9Abs1_n4
TarifNach9Abs1_n2 -->|"Wohnmobil"| TarifNach9Abs1_n5
TarifNach9Abs1_n2 -->|"DreiLeichtvier"| TarifNach9Abs1_n6
TarifNach9Abs1_n2 -->|"AndereBis3500"| TarifNach9Abs1_n7
TarifNach9Abs1_n2 -->|"AndereUeber3500"| TarifNach9Abs1_n8
TarifNach9Abs1_n2 -->|"Anhaenger"| TarifNach9Abs1_n9
TarifNach9Abs1_n0 --> TarifNach9Abs1_n2
TarifNach9Abs1_n3 --> TarifNach9Abs1_n10
TarifNach9Abs1_n4 --> TarifNach9Abs1_n10
TarifNach9Abs1_n5 --> TarifNach9Abs1_n10
TarifNach9Abs1_n6 --> TarifNach9Abs1_n10
TarifNach9Abs1_n7 --> TarifNach9Abs1_n10
TarifNach9Abs1_n8 --> TarifNach9Abs1_n10
TarifNach9Abs1_n9 --> TarifNach9Abs1_n10
click TarifNach9Abs1_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Tarifbetrag nach § 9 Abs. 1 KraftStG: wählt anhand der Fahrzeugart (§ 8 KraftStG) die einschlägige Nummer." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n1 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n2 case
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n3,TarifNach9Abs1_n4,TarifNach9Abs1_n5,TarifNach9Abs1_n6,TarifNach9Abs1_n7,TarifNach9Abs1_n8,TarifNach9Abs1_n9 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n10 ende
_Anwende9Abs2
%%{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
_Anwende9Abs2_n0("_Anwende9Abs2<br/><br/>⟨§ 9 Absatz 2 KraftStG⟩")
_Anwende9Abs2_n1[/"f: Fahrzeug"/]
_Anwende9Abs2_n2[/"betrag: EuroCent"/]
_Anwende9Abs2_n3{"f.antrieb == Elektro und f.art == AndereBis3500"}
_Anwende9Abs2_n4["(betrag /<br/>2) als EuroCent"]
_Anwende9Abs2_n5{"f.antrieb == Elektro und f.art == AndereUeber3500<br/>und f.nfzklasse == MindestensS2"}
_Anwende9Abs2_n6["(betrag /<br/>2) als EuroCent"]
_Anwende9Abs2_n7["betrag"]
_Anwende9Abs2_n8("Ergebnis: EuroCent")
_Anwende9Abs2_n1 --> _Anwende9Abs2_n0
_Anwende9Abs2_n2 --> _Anwende9Abs2_n0
_Anwende9Abs2_n3 -->|"ja"| _Anwende9Abs2_n4
_Anwende9Abs2_n3 -->|"nein"| _Anwende9Abs2_n5
_Anwende9Abs2_n5 -->|"ja"| _Anwende9Abs2_n6
_Anwende9Abs2_n5 -->|"nein"| _Anwende9Abs2_n7
_Anwende9Abs2_n0 --> _Anwende9Abs2_n3
_Anwende9Abs2_n4 --> _Anwende9Abs2_n8
_Anwende9Abs2_n6 --> _Anwende9Abs2_n8
_Anwende9Abs2_n7 --> _Anwende9Abs2_n8
click _Anwende9Abs2_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "50 %-Ermäßigung für Elektrofahrzeuge nach § 9 Abs. 2 KraftStG — gilt ausschließlich für Beträge nach § 9 Abs. 1 Nr. 3 oder Nr. 4 Buchst. a (Nutzfahrzeuge). Für alle anderen Fahrzeugarten/Klassen bleibt der Betrag unverändert (reine Elektro-PKW sind regelmäßig nach § 3d befreit)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n1,_Anwende9Abs2_n2 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n3,_Anwende9Abs2_n5 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n4,_Anwende9Abs2_n6,_Anwende9Abs2_n7 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n8 ende
_AnwendeVerguenstigung
%%{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
_AnwendeVerguenstigung_n0("_AnwendeVerguenstigung<br/><br/>⟨§ 3a KraftStG⟩")
_AnwendeVerguenstigung_n1[/"f: Fahrzeug"/]
_AnwendeVerguenstigung_n2[/"betrag: EuroCent"/]
_AnwendeVerguenstigung_n3{"f.elektroBefreitNach3d"}
_AnwendeVerguenstigung_n4["0,00"]
_AnwendeVerguenstigung_n5{"f.behinderung == Befreit3aAbs1"}
_AnwendeVerguenstigung_n6["0,00"]
_AnwendeVerguenstigung_n7{"f.behinderung == Ermaessigt3aAbs2"}
_AnwendeVerguenstigung_n8["(betrag /<br/>2) als EuroCent"]
_AnwendeVerguenstigung_n9["betrag"]
_AnwendeVerguenstigung_n10("Ergebnis: EuroCent")
_AnwendeVerguenstigung_n1 --> _AnwendeVerguenstigung_n0
_AnwendeVerguenstigung_n2 --> _AnwendeVerguenstigung_n0
_AnwendeVerguenstigung_n3 -->|"ja"| _AnwendeVerguenstigung_n4
_AnwendeVerguenstigung_n3 -->|"nein"| _AnwendeVerguenstigung_n5
_AnwendeVerguenstigung_n5 -->|"ja"| _AnwendeVerguenstigung_n6
_AnwendeVerguenstigung_n5 -->|"nein"| _AnwendeVerguenstigung_n7
_AnwendeVerguenstigung_n7 -->|"ja"| _AnwendeVerguenstigung_n8
_AnwendeVerguenstigung_n7 -->|"nein"| _AnwendeVerguenstigung_n9
_AnwendeVerguenstigung_n0 --> _AnwendeVerguenstigung_n3
_AnwendeVerguenstigung_n4 --> _AnwendeVerguenstigung_n10
_AnwendeVerguenstigung_n6 --> _AnwendeVerguenstigung_n10
_AnwendeVerguenstigung_n8 --> _AnwendeVerguenstigung_n10
_AnwendeVerguenstigung_n9 --> _AnwendeVerguenstigung_n10
click _AnwendeVerguenstigung_n0 href "https://www.gesetze-im-internet.de/kraftstg/__3a.html" "Anwendung der Schwerbehinderten-Vergünstigung (§ 3a KraftStG) und der Elektrofahrzeug-Befreiung (§ 3d KraftStG) auf den Steuerbetrag. Reihenfolge: § 3d-Befreiung und § 3a Abs. 1-Befreiung setzen die Steuer auf 0; § 3a Abs. 2 halbiert." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n1,_AnwendeVerguenstigung_n2 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n3,_AnwendeVerguenstigung_n5,_AnwendeVerguenstigung_n7 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n4,_AnwendeVerguenstigung_n6,_AnwendeVerguenstigung_n8,_AnwendeVerguenstigung_n9 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n10 ende
BerechneKraftfahrzeugsteuer
%%{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
BerechneKraftfahrzeugsteuer_n0("BerechneKraftfahrzeugsteuer<br/><br/>⟨§ 9 KraftStG⟩")
BerechneKraftfahrzeugsteuer_n1[/"f: Fahrzeug"/]
BerechneKraftfahrzeugsteuer_n2[["tarif ← TarifNach9Abs1(…)"]]
BerechneKraftfahrzeugsteuer_n3[["nachE ← _Anwende9Abs2(…)"]]
BerechneKraftfahrzeugsteuer_n4[["jahr ← _AnwendeVerguenstigung(…)"]]
BerechneKraftfahrzeugsteuer_n5[["KraftfahrzeugsteuerErgebnis(…)"]]
BerechneKraftfahrzeugsteuer_n6("Ergebnis: KraftfahrzeugsteuerErgebnis")
BerechneKraftfahrzeugsteuer_n1 --> BerechneKraftfahrzeugsteuer_n0
BerechneKraftfahrzeugsteuer_n2 --> BerechneKraftfahrzeugsteuer_n3
BerechneKraftfahrzeugsteuer_n3 --> BerechneKraftfahrzeugsteuer_n4
BerechneKraftfahrzeugsteuer_n4 --> BerechneKraftfahrzeugsteuer_n5
BerechneKraftfahrzeugsteuer_n0 --> BerechneKraftfahrzeugsteuer_n2
BerechneKraftfahrzeugsteuer_n5 --> BerechneKraftfahrzeugsteuer_n6
click BerechneKraftfahrzeugsteuer_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Vollständige Festsetzung der Kraftfahrzeug-Jahressteuer in der gesetzlichen Reihenfolge: § 8 (Tarifauswahl) → § 9 Abs. 1 (Tarifbetrag) → § 9 Abs. 2 (Elektro-Ermäßigung) → § 3a / § 3d (Vergünstigung/Befreiung). Liefert alle Zwischengrößen." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class BerechneKraftfahrzeugsteuer_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class BerechneKraftfahrzeugsteuer_n1 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class BerechneKraftfahrzeugsteuer_n2,BerechneKraftfahrzeugsteuer_n3,BerechneKraftfahrzeugsteuer_n4,BerechneKraftfahrzeugsteuer_n5 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class BerechneKraftfahrzeugsteuer_n6 ende
Programmablaufpläne — kraftstg-tarif-leicht
SteuerKraftrad
%%{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
SteuerKraftrad_n0("SteuerKraftrad<br/><br/>⟨§ 9 Absatz 1 Nummer 1 KraftStG⟩")
SteuerKraftrad_n1[/"hubraumCcm: Ganzzahl"/]
SteuerKraftrad_n2["KRAD_JE_25CCM *<br/>Einheiten(…)"]
SteuerKraftrad_n3("Ergebnis: EuroCent")
SteuerKraftrad_n1 --> SteuerKraftrad_n0
SteuerKraftrad_n0 --> SteuerKraftrad_n2
SteuerKraftrad_n2 --> SteuerKraftrad_n3
click SteuerKraftrad_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Jahressteuer für Krafträder: je angefangene 25 cm³ Hubraum 1,84 € (§ 9 Abs. 1 Nr. 1 KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerKraftrad_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerKraftrad_n1 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SteuerKraftrad_n2 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerKraftrad_n3 ende
_Co2AufschlagNr2c
%%{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
_Co2AufschlagNr2c_n0("_Co2AufschlagNr2c<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG⟩")
_Co2AufschlagNr2c_n1[/"co2: Ganzzahl"/]
_Co2AufschlagNr2c_n2{"co2 #lt;= 95"}
_Co2AufschlagNr2c_n3["0,00"]
_Co2AufschlagNr2c_n4{"co2 #lt;= 115"}
_Co2AufschlagNr2c_n5["PKW_C_CO2_95_115 *<br/>(co2 -<br/>95)"]
_Co2AufschlagNr2c_n6{"co2 #lt;= 135"}
_Co2AufschlagNr2c_n7["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>(co2 -<br/>115)"]
_Co2AufschlagNr2c_n8{"co2 #lt;= 155"}
_Co2AufschlagNr2c_n9["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>20 +<br/>PKW_C_CO2_135_155 *<br/>(co2 -<br/>135)"]
_Co2AufschlagNr2c_n10{"co2 #lt;= 175"}
_Co2AufschlagNr2c_n11["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>20 +<br/>PKW_C_CO2_135_155 *<br/>20 +<br/>PKW_C_CO2_155_175 *<br/>(co2 -<br/>155)"]
_Co2AufschlagNr2c_n12{"co2 #lt;= 195"}
_Co2AufschlagNr2c_n13["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>20 +<br/>PKW_C_CO2_135_155 *<br/>20 +<br/>PKW_C_CO2_155_175 *<br/>20 +<br/>PKW_C_CO2_175_195 *<br/>(co2 -<br/>175)"]
_Co2AufschlagNr2c_n14["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>20 +<br/>PKW_C_CO2_135_155 *<br/>20 +<br/>PKW_C_CO2_155_175 *<br/>20 +<br/>PKW_C_CO2_175_195 *<br/>20 +<br/>PKW_C_CO2_UEBER_195 *<br/>(co2 -<br/>195)"]
_Co2AufschlagNr2c_n15("Ergebnis: EuroCent")
_Co2AufschlagNr2c_n1 --> _Co2AufschlagNr2c_n0
_Co2AufschlagNr2c_n2 -->|"ja"| _Co2AufschlagNr2c_n3
_Co2AufschlagNr2c_n2 -->|"nein"| _Co2AufschlagNr2c_n4
_Co2AufschlagNr2c_n4 -->|"ja"| _Co2AufschlagNr2c_n5
_Co2AufschlagNr2c_n4 -->|"nein"| _Co2AufschlagNr2c_n6
_Co2AufschlagNr2c_n6 -->|"ja"| _Co2AufschlagNr2c_n7
_Co2AufschlagNr2c_n6 -->|"nein"| _Co2AufschlagNr2c_n8
_Co2AufschlagNr2c_n8 -->|"ja"| _Co2AufschlagNr2c_n9
_Co2AufschlagNr2c_n8 -->|"nein"| _Co2AufschlagNr2c_n10
_Co2AufschlagNr2c_n10 -->|"ja"| _Co2AufschlagNr2c_n11
_Co2AufschlagNr2c_n10 -->|"nein"| _Co2AufschlagNr2c_n12
_Co2AufschlagNr2c_n12 -->|"ja"| _Co2AufschlagNr2c_n13
_Co2AufschlagNr2c_n12 -->|"nein"| _Co2AufschlagNr2c_n14
_Co2AufschlagNr2c_n0 --> _Co2AufschlagNr2c_n2
_Co2AufschlagNr2c_n3 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n5 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n7 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n9 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n11 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n13 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n14 --> _Co2AufschlagNr2c_n15
click _Co2AufschlagNr2c_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver CO₂-Aufschlag für PKW nach § 9 Abs. 1 Nr. 2 Buchst. c KraftStG: für jedes Gramm CO₂/km über 95 g/km, gestaffelt nach dem Emissionswert (marginal je Spanne)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n2,_Co2AufschlagNr2c_n4,_Co2AufschlagNr2c_n6,_Co2AufschlagNr2c_n8,_Co2AufschlagNr2c_n10,_Co2AufschlagNr2c_n12 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n3,_Co2AufschlagNr2c_n5,_Co2AufschlagNr2c_n7,_Co2AufschlagNr2c_n9,_Co2AufschlagNr2c_n11,_Co2AufschlagNr2c_n13,_Co2AufschlagNr2c_n14 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n15 ende
_PkwHubraumSockel
%%{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
_PkwHubraumSockel_n0("_PkwHubraumSockel<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG⟩")
_PkwHubraumSockel_n1[/"hubraumCcm: Ganzzahl"/]
_PkwHubraumSockel_n2[/"antrieb: Antrieb"/]
_PkwHubraumSockel_n3{{"wähle antrieb"}}
_PkwHubraumSockel_n4["PKW_C_HUBRAUM_DIESEL *<br/>Einheiten(…)"]
_PkwHubraumSockel_n5["PKW_C_HUBRAUM_OTTO *<br/>Einheiten(…)"]
_PkwHubraumSockel_n6("Ergebnis: EuroCent")
_PkwHubraumSockel_n1 --> _PkwHubraumSockel_n0
_PkwHubraumSockel_n2 --> _PkwHubraumSockel_n0
_PkwHubraumSockel_n3 -->|"Selbstzuendung"| _PkwHubraumSockel_n4
_PkwHubraumSockel_n3 -->|"Fremdzuendung, Elektro"| _PkwHubraumSockel_n5
_PkwHubraumSockel_n0 --> _PkwHubraumSockel_n3
_PkwHubraumSockel_n4 --> _PkwHubraumSockel_n6
_PkwHubraumSockel_n5 --> _PkwHubraumSockel_n6
click _PkwHubraumSockel_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "PKW-Hubraum-Sockel nach Antrieb (§ 9 Abs. 1 Nr. 2 Buchst. b/c KraftStG): je angefangene 100 cm³ 2,00 € (Fremdzündung) bzw. 9,50 € (Selbstzündung)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n1,_PkwHubraumSockel_n2 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n3 case
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n4,_PkwHubraumSockel_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n6 ende
_SteuerPkwC
%%{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
_SteuerPkwC_n0("_SteuerPkwC<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG⟩")
_SteuerPkwC_n1[/"hubraumCcm: Ganzzahl"/]
_SteuerPkwC_n2[/"co2: Ganzzahl"/]
_SteuerPkwC_n3[/"antrieb: Antrieb"/]
_SteuerPkwC_n4["_PkwHubraumSockel(…) +<br/>_Co2AufschlagNr2c(…)"]
_SteuerPkwC_n5("Ergebnis: EuroCent")
_SteuerPkwC_n1 --> _SteuerPkwC_n0
_SteuerPkwC_n2 --> _SteuerPkwC_n0
_SteuerPkwC_n3 --> _SteuerPkwC_n0
_SteuerPkwC_n0 --> _SteuerPkwC_n4
_SteuerPkwC_n4 --> _SteuerPkwC_n5
click _SteuerPkwC_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "PKW Nr. 2 Buchst. c (Erstzulassung ab 1.1.2021): Hubraum-Sockel zuzüglich progressivem CO₂-Aufschlag (§ 9 Abs. 1 Nr. 2 Buchst. c KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SteuerPkwC_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SteuerPkwC_n1,_SteuerPkwC_n2,_SteuerPkwC_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SteuerPkwC_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SteuerPkwC_n5 ende
_SteuerPkwB
%%{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
_SteuerPkwB_n0("_SteuerPkwB<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG⟩")
_SteuerPkwB_n1[/"hubraumCcm: Ganzzahl"/]
_SteuerPkwB_n2[/"co2: Ganzzahl"/]
_SteuerPkwB_n3[/"freigrenze: Ganzzahl"/]
_SteuerPkwB_n4[/"antrieb: Antrieb"/]
_SteuerPkwB_n5["_PkwHubraumSockel(…) +<br/>wähle {<br/>falls co2 #lt;= freigrenze -#gt; 0,00<br/>sonst -#gt; PKW_B_CO2_JE_GRAMM *<br/>(co2 -<br/>freigrenze)<br/>}"]
_SteuerPkwB_n6("Ergebnis: EuroCent")
_SteuerPkwB_n1 --> _SteuerPkwB_n0
_SteuerPkwB_n2 --> _SteuerPkwB_n0
_SteuerPkwB_n3 --> _SteuerPkwB_n0
_SteuerPkwB_n4 --> _SteuerPkwB_n0
_SteuerPkwB_n0 --> _SteuerPkwB_n5
_SteuerPkwB_n5 --> _SteuerPkwB_n6
click _SteuerPkwB_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "PKW Nr. 2 Buchst. b (Erstzulassung 1.7.2009–31.12.2020): Hubraum-Sockel zuzüglich 2,00 € je g/km CO₂ über der datumsabhängigen Freigrenze (120 / 110 / 95 g/km)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SteuerPkwB_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SteuerPkwB_n1,_SteuerPkwB_n2,_SteuerPkwB_n3,_SteuerPkwB_n4 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SteuerPkwB_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SteuerPkwB_n6 ende
_SteuerPkwA
%%{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
_SteuerPkwA_n0("_SteuerPkwA<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG⟩")
_SteuerPkwA_n1[/"hubraumCcm: Ganzzahl"/]
_SteuerPkwA_n2[/"stufe: PkwSchadstoffstufe"/]
_SteuerPkwA_n3[/"antrieb: Antrieb"/]
_SteuerPkwA_n4["_SatzPkwA(…) *<br/>Einheiten(…)"]
_SteuerPkwA_n5("Ergebnis: EuroCent")
_SteuerPkwA_n1 --> _SteuerPkwA_n0
_SteuerPkwA_n2 --> _SteuerPkwA_n0
_SteuerPkwA_n3 --> _SteuerPkwA_n0
_SteuerPkwA_n0 --> _SteuerPkwA_n4
_SteuerPkwA_n4 --> _SteuerPkwA_n5
click _SteuerPkwA_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "PKW Nr. 2 Buchst. a (Erstzulassung bis 30.6.2009): je angefangene 100 cm³ ein nach Schadstoffstufe (aa–ee) und Antrieb gestaffelter Satz (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SteuerPkwA_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SteuerPkwA_n1,_SteuerPkwA_n2,_SteuerPkwA_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SteuerPkwA_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SteuerPkwA_n5 ende
_SatzPkwA
%%{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
_SatzPkwA_n0("_SatzPkwA<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG⟩")
_SatzPkwA_n1[/"stufe: PkwSchadstoffstufe"/]
_SatzPkwA_n2[/"antrieb: Antrieb"/]
_SatzPkwA_n3{{"wähle antrieb"}}
_SatzPkwA_n4{{"wähle stufe"}}
_SatzPkwA_n5["PKW_A_AA_DIESEL"]
_SatzPkwA_n6["PKW_A_BB_DIESEL"]
_SatzPkwA_n7["PKW_A_CC_DIESEL"]
_SatzPkwA_n8["PKW_A_DD_DIESEL"]
_SatzPkwA_n9["PKW_A_EE_DIESEL"]
_SatzPkwA_n10{{"wähle stufe"}}
_SatzPkwA_n11["PKW_A_AA_OTTO"]
_SatzPkwA_n12["PKW_A_BB_OTTO"]
_SatzPkwA_n13["PKW_A_CC_OTTO"]
_SatzPkwA_n14["PKW_A_DD_OTTO"]
_SatzPkwA_n15["PKW_A_EE_OTTO"]
_SatzPkwA_n16("Ergebnis: EuroCent")
_SatzPkwA_n1 --> _SatzPkwA_n0
_SatzPkwA_n2 --> _SatzPkwA_n0
_SatzPkwA_n4 -->|"Aa"| _SatzPkwA_n5
_SatzPkwA_n4 -->|"Bb"| _SatzPkwA_n6
_SatzPkwA_n4 -->|"Cc"| _SatzPkwA_n7
_SatzPkwA_n4 -->|"Dd"| _SatzPkwA_n8
_SatzPkwA_n4 -->|"Ee"| _SatzPkwA_n9
_SatzPkwA_n3 -->|"Selbstzuendung"| _SatzPkwA_n4
_SatzPkwA_n10 -->|"Aa"| _SatzPkwA_n11
_SatzPkwA_n10 -->|"Bb"| _SatzPkwA_n12
_SatzPkwA_n10 -->|"Cc"| _SatzPkwA_n13
_SatzPkwA_n10 -->|"Dd"| _SatzPkwA_n14
_SatzPkwA_n10 -->|"Ee"| _SatzPkwA_n15
_SatzPkwA_n3 -->|"Fremdzuendung, Elektro"| _SatzPkwA_n10
_SatzPkwA_n0 --> _SatzPkwA_n3
_SatzPkwA_n5 --> _SatzPkwA_n16
_SatzPkwA_n6 --> _SatzPkwA_n16
_SatzPkwA_n7 --> _SatzPkwA_n16
_SatzPkwA_n8 --> _SatzPkwA_n16
_SatzPkwA_n9 --> _SatzPkwA_n16
_SatzPkwA_n11 --> _SatzPkwA_n16
_SatzPkwA_n12 --> _SatzPkwA_n16
_SatzPkwA_n13 --> _SatzPkwA_n16
_SatzPkwA_n14 --> _SatzPkwA_n16
_SatzPkwA_n15 --> _SatzPkwA_n16
click _SatzPkwA_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Stufensatz je 100 cm³ für PKW Nr. 2 Buchst. a nach Schadstoffstufe und Antrieb. (Elektro wird wie Fremdzündung behandelt — relevant wird der Wert für reine E-PKW ohnehin nicht, da diese nach § 3d befreit sind.)" _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SatzPkwA_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SatzPkwA_n1,_SatzPkwA_n2 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class _SatzPkwA_n3,_SatzPkwA_n4,_SatzPkwA_n10 case
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SatzPkwA_n5,_SatzPkwA_n6,_SatzPkwA_n7,_SatzPkwA_n8,_SatzPkwA_n9,_SatzPkwA_n11,_SatzPkwA_n12,_SatzPkwA_n13,_SatzPkwA_n14,_SatzPkwA_n15 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SatzPkwA_n16 ende
SteuerPkw
%%{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
SteuerPkw_n0("SteuerPkw<br/><br/>⟨§ 9 Absatz 1 Nummer 2 KraftStG⟩")
SteuerPkw_n1[/"f: Fahrzeug"/]
SteuerPkw_n2{{"wähle f.erstzulassung"}}
SteuerPkw_n3[["_SteuerPkwA(…)"]]
SteuerPkw_n4[["_SteuerPkwB(…)"]]
SteuerPkw_n5[["_SteuerPkwC(…)"]]
SteuerPkw_n6("Ergebnis: EuroCent")
SteuerPkw_n1 --> SteuerPkw_n0
SteuerPkw_n2 -->|"BisJuni2009"| SteuerPkw_n3
SteuerPkw_n2 -->|"JuliBisDez2020"| SteuerPkw_n4
SteuerPkw_n2 -->|"AbJan2021"| SteuerPkw_n5
SteuerPkw_n0 --> SteuerPkw_n2
SteuerPkw_n3 --> SteuerPkw_n6
SteuerPkw_n4 --> SteuerPkw_n6
SteuerPkw_n5 --> SteuerPkw_n6
click SteuerPkw_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Personenkraftwagen nach § 9 Abs. 1 Nr. 2 KraftStG: wählt anhand des Erstzulassungs-Regimes Buchst. a, b oder c." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerPkw_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerPkw_n1 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class SteuerPkw_n2 case
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class SteuerPkw_n3,SteuerPkw_n4,SteuerPkw_n5 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerPkw_n6 ende
SteuerDreiLeichtvier
%%{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
SteuerDreiLeichtvier_n0("SteuerDreiLeichtvier<br/><br/>⟨§ 9 Absatz 1 Nummer 2b KraftStG⟩")
SteuerDreiLeichtvier_n1[/"hubraumCcm: Ganzzahl"/]
SteuerDreiLeichtvier_n2[/"grenzwerte: Wahrheitswert"/]
SteuerDreiLeichtvier_n3[/"antrieb: Antrieb"/]
SteuerDreiLeichtvier_n4["_SatzDreiLeichtvier(…) *<br/>Einheiten(…)"]
SteuerDreiLeichtvier_n5("Ergebnis: EuroCent")
SteuerDreiLeichtvier_n1 --> SteuerDreiLeichtvier_n0
SteuerDreiLeichtvier_n2 --> SteuerDreiLeichtvier_n0
SteuerDreiLeichtvier_n3 --> SteuerDreiLeichtvier_n0
SteuerDreiLeichtvier_n0 --> SteuerDreiLeichtvier_n4
SteuerDreiLeichtvier_n4 --> SteuerDreiLeichtvier_n5
click SteuerDreiLeichtvier_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Dreirädrige und leichte vierrädrige Kraftfahrzeuge (§ 9 Abs. 1 Nr. 2b KraftStG): je angefangene 100 cm³ ein nach Grenzwert-Einhaltung und Antrieb gestaffelter Satz." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerDreiLeichtvier_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerDreiLeichtvier_n1,SteuerDreiLeichtvier_n2,SteuerDreiLeichtvier_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SteuerDreiLeichtvier_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerDreiLeichtvier_n5 ende
_SatzDreiLeichtvier
%%{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
_SatzDreiLeichtvier_n0("_SatzDreiLeichtvier<br/><br/>⟨§ 9 Absatz 1 Nummer 2b KraftStG⟩")
_SatzDreiLeichtvier_n1[/"grenzwerte: Wahrheitswert"/]
_SatzDreiLeichtvier_n2[/"antrieb: Antrieb"/]
_SatzDreiLeichtvier_n3{"grenzwerte und antrieb == Selbstzuendung"}
_SatzDreiLeichtvier_n4["DREIRAD_GW_DIESEL"]
_SatzDreiLeichtvier_n5{"grenzwerte"}
_SatzDreiLeichtvier_n6["DREIRAD_GW_OTTO"]
_SatzDreiLeichtvier_n7{"antrieb == Selbstzuendung"}
_SatzDreiLeichtvier_n8["DREIRAD_SONST_DIESEL"]
_SatzDreiLeichtvier_n9["DREIRAD_SONST_OTTO"]
_SatzDreiLeichtvier_n10("Ergebnis: EuroCent")
_SatzDreiLeichtvier_n1 --> _SatzDreiLeichtvier_n0
_SatzDreiLeichtvier_n2 --> _SatzDreiLeichtvier_n0
_SatzDreiLeichtvier_n3 -->|"ja"| _SatzDreiLeichtvier_n4
_SatzDreiLeichtvier_n3 -->|"nein"| _SatzDreiLeichtvier_n5
_SatzDreiLeichtvier_n5 -->|"ja"| _SatzDreiLeichtvier_n6
_SatzDreiLeichtvier_n5 -->|"nein"| _SatzDreiLeichtvier_n7
_SatzDreiLeichtvier_n7 -->|"ja"| _SatzDreiLeichtvier_n8
_SatzDreiLeichtvier_n7 -->|"nein"| _SatzDreiLeichtvier_n9
_SatzDreiLeichtvier_n0 --> _SatzDreiLeichtvier_n3
_SatzDreiLeichtvier_n4 --> _SatzDreiLeichtvier_n10
_SatzDreiLeichtvier_n6 --> _SatzDreiLeichtvier_n10
_SatzDreiLeichtvier_n8 --> _SatzDreiLeichtvier_n10
_SatzDreiLeichtvier_n9 --> _SatzDreiLeichtvier_n10
click _SatzDreiLeichtvier_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Stufensatz je 100 cm³ für § 9 Abs. 1 Nr. 2b KraftStG." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n1,_SatzDreiLeichtvier_n2 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n3,_SatzDreiLeichtvier_n5,_SatzDreiLeichtvier_n7 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n4,_SatzDreiLeichtvier_n6,_SatzDreiLeichtvier_n8,_SatzDreiLeichtvier_n9 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n10 ende
SteuerWohnmobil
%%{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
SteuerWohnmobil_n0("SteuerWohnmobil<br/><br/>⟨§ 9 Absatz 1 Nummer 2a KraftStG⟩")
SteuerWohnmobil_n1[/"gesamtgewichtKg: Ganzzahl"/]
SteuerWohnmobil_n2[/"klasse: WohnmobilKlasse"/]
SteuerWohnmobil_n3{{"wähle klasse"}}
SteuerWohnmobil_n4[["_WomoZweiStufen(…).höchstens(…)"]]
SteuerWohnmobil_n5[["_WomoZweiStufen(…).höchstens(…)"]]
SteuerWohnmobil_n6[["_SteuerWohnmobilSonst(…)"]]
SteuerWohnmobil_n7("Ergebnis: EuroCent")
SteuerWohnmobil_n1 --> SteuerWohnmobil_n0
SteuerWohnmobil_n2 --> SteuerWohnmobil_n0
SteuerWohnmobil_n3 -->|"MindestensS4"| SteuerWohnmobil_n4
SteuerWohnmobil_n3 -->|"S1bisS3"| SteuerWohnmobil_n5
SteuerWohnmobil_n3 -->|"WomoSonst"| SteuerWohnmobil_n6
SteuerWohnmobil_n0 --> SteuerWohnmobil_n3
SteuerWohnmobil_n4 --> SteuerWohnmobil_n7
SteuerWohnmobil_n5 --> SteuerWohnmobil_n7
SteuerWohnmobil_n6 --> SteuerWohnmobil_n7
click SteuerWohnmobil_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Wohnmobil nach § 9 Abs. 1 Nr. 2a KraftStG: je angefangene 200 kg Gesamtgewicht, progressiv nach Gewichtsspanne und Schadstoffklasse, mit Höchstbetrag (Buchst. a/b) bzw. ohne (Buchst. c)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n1,SteuerWohnmobil_n2 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n3 case
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n4,SteuerWohnmobil_n5,SteuerWohnmobil_n6 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n7 ende
_WomoZweiStufen
%%{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
_WomoZweiStufen_n0("_WomoZweiStufen<br/><br/>⟨§ 9 Absatz 1 Nummer 2a KraftStG⟩")
_WomoZweiStufen_n1[/"g: Ganzzahl"/]
_WomoZweiStufen_n2[/"satzBis: EuroCent"/]
_WomoZweiStufen_n3[/"satzUeber: EuroCent"/]
_WomoZweiStufen_n4{"g #lt;= 2000"}
_WomoZweiStufen_n5["satzBis *<br/>Einheiten(…)"]
_WomoZweiStufen_n6["satzBis *<br/>10 +<br/>satzUeber *<br/>Einheiten(…)"]
_WomoZweiStufen_n7("Ergebnis: EuroCent")
_WomoZweiStufen_n1 --> _WomoZweiStufen_n0
_WomoZweiStufen_n2 --> _WomoZweiStufen_n0
_WomoZweiStufen_n3 --> _WomoZweiStufen_n0
_WomoZweiStufen_n4 -->|"ja"| _WomoZweiStufen_n5
_WomoZweiStufen_n4 -->|"nein"| _WomoZweiStufen_n6
_WomoZweiStufen_n0 --> _WomoZweiStufen_n4
_WomoZweiStufen_n5 --> _WomoZweiStufen_n7
_WomoZweiStufen_n6 --> _WomoZweiStufen_n7
click _WomoZweiStufen_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Zwei-Stufen-Wohnmobiltarif (Buchst. a/b): bis 2.000 kg `satzBis`, darüber `satzUeber`, je angefangene 200 kg." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n1,_WomoZweiStufen_n2,_WomoZweiStufen_n3 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n4 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n5,_WomoZweiStufen_n6 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n7 ende
_SteuerWohnmobilSonst
%%{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
_SteuerWohnmobilSonst_n0("_SteuerWohnmobilSonst<br/><br/>⟨§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG⟩")
_SteuerWohnmobilSonst_n1[/"g: Ganzzahl"/]
_SteuerWohnmobilSonst_n2{"g #lt;= 2000"}
_SteuerWohnmobilSonst_n3["WOMO_SONST_BIS_2000 *<br/>Einheiten(…)"]
_SteuerWohnmobilSonst_n4{"g #lt;= 5000"}
_SteuerWohnmobilSonst_n5["WOMO_SONST_BIS_2000 *<br/>10 +<br/>WOMO_SONST_2000_5000 *<br/>Einheiten(…)"]
_SteuerWohnmobilSonst_n6{"g #lt;= 12000"}
_SteuerWohnmobilSonst_n7["WOMO_SONST_BIS_2000 *<br/>10 +<br/>WOMO_SONST_2000_5000 *<br/>15 +<br/>WOMO_SONST_5000_12000 *<br/>Einheiten(…)"]
_SteuerWohnmobilSonst_n8["WOMO_SONST_BIS_2000 *<br/>10 +<br/>WOMO_SONST_2000_5000 *<br/>15 +<br/>WOMO_SONST_5000_12000 *<br/>35 +<br/>WOMO_SONST_UEBER_12000 *<br/>Einheiten(…)"]
_SteuerWohnmobilSonst_n9("Ergebnis: EuroCent")
_SteuerWohnmobilSonst_n1 --> _SteuerWohnmobilSonst_n0
_SteuerWohnmobilSonst_n2 -->|"ja"| _SteuerWohnmobilSonst_n3
_SteuerWohnmobilSonst_n2 -->|"nein"| _SteuerWohnmobilSonst_n4
_SteuerWohnmobilSonst_n4 -->|"ja"| _SteuerWohnmobilSonst_n5
_SteuerWohnmobilSonst_n4 -->|"nein"| _SteuerWohnmobilSonst_n6
_SteuerWohnmobilSonst_n6 -->|"ja"| _SteuerWohnmobilSonst_n7
_SteuerWohnmobilSonst_n6 -->|"nein"| _SteuerWohnmobilSonst_n8
_SteuerWohnmobilSonst_n0 --> _SteuerWohnmobilSonst_n2
_SteuerWohnmobilSonst_n3 --> _SteuerWohnmobilSonst_n9
_SteuerWohnmobilSonst_n5 --> _SteuerWohnmobilSonst_n9
_SteuerWohnmobilSonst_n7 --> _SteuerWohnmobilSonst_n9
_SteuerWohnmobilSonst_n8 --> _SteuerWohnmobilSonst_n9
click _SteuerWohnmobilSonst_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Wohnmobil Buchst. c (Voraussetzungen a/b nicht erfüllt, kein Höchstbetrag): bis 2.000 kg 40 €, über 2.000–5.000 kg 10 €, über 5.000–12.000 kg 15 €, über 12.000 kg 25 € — je angefangene 200 kg." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n2,_SteuerWohnmobilSonst_n4,_SteuerWohnmobilSonst_n6 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n3,_SteuerWohnmobilSonst_n5,_SteuerWohnmobilSonst_n7,_SteuerWohnmobilSonst_n8 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n9 ende
Programmablaufpläne — kraftstg-tarif-nutzfahrzeug
SteuerNr3
%%{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
SteuerNr3_n0("SteuerNr3<br/><br/>⟨§ 9 Absatz 1 Nummer 3 KraftStG⟩")
SteuerNr3_n1[/"g: Ganzzahl"/]
SteuerNr3_n2{"g #lt;= 2000"}
SteuerNr3_n3["NR3_BIS_2000 *<br/>Einheiten(…)"]
SteuerNr3_n4{"g #lt;= 3000"}
SteuerNr3_n5["NR3_KUM_2000 +<br/>NR3_2000_3000 *<br/>Einheiten(…)"]
SteuerNr3_n6["NR3_KUM_3000 +<br/>NR3_3000_3500 *<br/>Einheiten(…)"]
SteuerNr3_n7("Ergebnis: EuroCent")
SteuerNr3_n1 --> SteuerNr3_n0
SteuerNr3_n2 -->|"ja"| SteuerNr3_n3
SteuerNr3_n2 -->|"nein"| SteuerNr3_n4
SteuerNr3_n4 -->|"ja"| SteuerNr3_n5
SteuerNr3_n4 -->|"nein"| SteuerNr3_n6
SteuerNr3_n0 --> SteuerNr3_n2
SteuerNr3_n3 --> SteuerNr3_n7
SteuerNr3_n5 --> SteuerNr3_n7
SteuerNr3_n6 --> SteuerNr3_n7
click SteuerNr3_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Andere Kraftfahrzeuge bis 3.500 kg (§ 9 Abs. 1 Nr. 3 KraftStG): je angefangene 200 kg, progressiv nach Gewichtsspanne (kein Höchstbetrag)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerNr3_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerNr3_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class SteuerNr3_n2,SteuerNr3_n4 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SteuerNr3_n3,SteuerNr3_n5,SteuerNr3_n6 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerNr3_n7 ende
SteuerNr4
%%{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
SteuerNr4_n0("SteuerNr4<br/><br/>⟨§ 9 Absatz 1 Nummer 4 KraftStG⟩")
SteuerNr4_n1[/"g: Ganzzahl"/]
SteuerNr4_n2[/"klasse: NfzKlasse"/]
SteuerNr4_n3{{"wähle klasse"}}
SteuerNr4_n4[["_Nr4a(…).höchstens(…)"]]
SteuerNr4_n5[["_Nr4b(…).höchstens(…)"]]
SteuerNr4_n6[["_Nr4c(…).höchstens(…)"]]
SteuerNr4_n7[["_Nr4d(…).höchstens(…)"]]
SteuerNr4_n8("Ergebnis: EuroCent")
SteuerNr4_n1 --> SteuerNr4_n0
SteuerNr4_n2 --> SteuerNr4_n0
SteuerNr4_n3 -->|"MindestensS2"| SteuerNr4_n4
SteuerNr4_n3 -->|"S1"| SteuerNr4_n5
SteuerNr4_n3 -->|"G1"| SteuerNr4_n6
SteuerNr4_n3 -->|"NfzSonst"| SteuerNr4_n7
SteuerNr4_n0 --> SteuerNr4_n3
SteuerNr4_n4 --> SteuerNr4_n8
SteuerNr4_n5 --> SteuerNr4_n8
SteuerNr4_n6 --> SteuerNr4_n8
SteuerNr4_n7 --> SteuerNr4_n8
click SteuerNr4_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Kfz über 3.500 kg (§ 9 Abs. 1 Nr. 4 KraftStG): je angefangene 200 kg, progressiv in 1.000-kg-Spannen, nach Schadstoff-/Geräuschklasse, mit jeweils eigenem Höchstbetrag. Alle vier Buchstaben sind eigenständig modelliert: a (≥ S2, Spannen bis > 12.000 kg, max 556 €), b (S1, max 914 €), c (G1, max 1.425 €), d (sonst, max 1.681 €)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerNr4_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerNr4_n1,SteuerNr4_n2 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class SteuerNr4_n3 case
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class SteuerNr4_n4,SteuerNr4_n5,SteuerNr4_n6,SteuerNr4_n7 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerNr4_n8 ende
_Nr4a
%%{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
_Nr4a_n0("_Nr4a<br/><br/>⟨§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG⟩")
_Nr4a_n1[/"g: Ganzzahl"/]
_Nr4a_n2{"g #lt;= 2000"}
_Nr4a_n3["NR4A_1 *<br/>Einheiten(…)"]
_Nr4a_n4{"g #lt;= 3000"}
_Nr4a_n5["NR4A_KUM_2000 +<br/>NR4A_2 *<br/>Einheiten(…)"]
_Nr4a_n6{"g #lt;= 4000"}
_Nr4a_n7["NR4A_KUM_3000 +<br/>NR4A_3 *<br/>Einheiten(…)"]
_Nr4a_n8{"g #lt;= 5000"}
_Nr4a_n9["NR4A_KUM_4000 +<br/>NR4A_4 *<br/>Einheiten(…)"]
_Nr4a_n10{"g #lt;= 6000"}
_Nr4a_n11["NR4A_KUM_5000 +<br/>NR4A_5 *<br/>Einheiten(…)"]
_Nr4a_n12{"g #lt;= 7000"}
_Nr4a_n13["NR4A_KUM_6000 +<br/>NR4A_6 *<br/>Einheiten(…)"]
_Nr4a_n14{"g #lt;= 8000"}
_Nr4a_n15["NR4A_KUM_7000 +<br/>NR4A_7 *<br/>Einheiten(…)"]
_Nr4a_n16{"g #lt;= 9000"}
_Nr4a_n17["NR4A_KUM_8000 +<br/>NR4A_8 *<br/>Einheiten(…)"]
_Nr4a_n18{"g #lt;= 10000"}
_Nr4a_n19["NR4A_KUM_9000 +<br/>NR4A_9 *<br/>Einheiten(…)"]
_Nr4a_n20{"g #lt;= 11000"}
_Nr4a_n21["NR4A_KUM_10000 +<br/>NR4A_10 *<br/>Einheiten(…)"]
_Nr4a_n22{"g #lt;= 12000"}
_Nr4a_n23["NR4A_KUM_11000 +<br/>NR4A_11 *<br/>Einheiten(…)"]
_Nr4a_n24["NR4A_KUM_12000 +<br/>NR4A_12 *<br/>Einheiten(…)"]
_Nr4a_n25("Ergebnis: EuroCent")
_Nr4a_n1 --> _Nr4a_n0
_Nr4a_n2 -->|"ja"| _Nr4a_n3
_Nr4a_n2 -->|"nein"| _Nr4a_n4
_Nr4a_n4 -->|"ja"| _Nr4a_n5
_Nr4a_n4 -->|"nein"| _Nr4a_n6
_Nr4a_n6 -->|"ja"| _Nr4a_n7
_Nr4a_n6 -->|"nein"| _Nr4a_n8
_Nr4a_n8 -->|"ja"| _Nr4a_n9
_Nr4a_n8 -->|"nein"| _Nr4a_n10
_Nr4a_n10 -->|"ja"| _Nr4a_n11
_Nr4a_n10 -->|"nein"| _Nr4a_n12
_Nr4a_n12 -->|"ja"| _Nr4a_n13
_Nr4a_n12 -->|"nein"| _Nr4a_n14
_Nr4a_n14 -->|"ja"| _Nr4a_n15
_Nr4a_n14 -->|"nein"| _Nr4a_n16
_Nr4a_n16 -->|"ja"| _Nr4a_n17
_Nr4a_n16 -->|"nein"| _Nr4a_n18
_Nr4a_n18 -->|"ja"| _Nr4a_n19
_Nr4a_n18 -->|"nein"| _Nr4a_n20
_Nr4a_n20 -->|"ja"| _Nr4a_n21
_Nr4a_n20 -->|"nein"| _Nr4a_n22
_Nr4a_n22 -->|"ja"| _Nr4a_n23
_Nr4a_n22 -->|"nein"| _Nr4a_n24
_Nr4a_n0 --> _Nr4a_n2
_Nr4a_n3 --> _Nr4a_n25
_Nr4a_n5 --> _Nr4a_n25
_Nr4a_n7 --> _Nr4a_n25
_Nr4a_n9 --> _Nr4a_n25
_Nr4a_n11 --> _Nr4a_n25
_Nr4a_n13 --> _Nr4a_n25
_Nr4a_n15 --> _Nr4a_n25
_Nr4a_n17 --> _Nr4a_n25
_Nr4a_n19 --> _Nr4a_n25
_Nr4a_n21 --> _Nr4a_n25
_Nr4a_n23 --> _Nr4a_n25
_Nr4a_n24 --> _Nr4a_n25
click _Nr4a_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver Stufentarif Buchst. a (≥ S2), je 200 kg, Spannen 2.000…> 12.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. a KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Nr4a_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Nr4a_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Nr4a_n2,_Nr4a_n4,_Nr4a_n6,_Nr4a_n8,_Nr4a_n10,_Nr4a_n12,_Nr4a_n14,_Nr4a_n16,_Nr4a_n18,_Nr4a_n20,_Nr4a_n22 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Nr4a_n3,_Nr4a_n5,_Nr4a_n7,_Nr4a_n9,_Nr4a_n11,_Nr4a_n13,_Nr4a_n15,_Nr4a_n17,_Nr4a_n19,_Nr4a_n21,_Nr4a_n23,_Nr4a_n24 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Nr4a_n25 ende
_Nr4d
%%{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
_Nr4d_n0("_Nr4d<br/><br/>⟨§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG⟩")
_Nr4d_n1[/"g: Ganzzahl"/]
_Nr4d_n2{"g #lt;= 2000"}
_Nr4d_n3["NR4D_1 *<br/>Einheiten(…)"]
_Nr4d_n4{"g #lt;= 3000"}
_Nr4d_n5["NR4D_KUM_2000 +<br/>NR4D_2 *<br/>Einheiten(…)"]
_Nr4d_n6{"g #lt;= 4000"}
_Nr4d_n7["NR4D_KUM_3000 +<br/>NR4D_3 *<br/>Einheiten(…)"]
_Nr4d_n8{"g #lt;= 5000"}
_Nr4d_n9["NR4D_KUM_4000 +<br/>NR4D_4 *<br/>Einheiten(…)"]
_Nr4d_n10{"g #lt;= 6000"}
_Nr4d_n11["NR4D_KUM_5000 +<br/>NR4D_5 *<br/>Einheiten(…)"]
_Nr4d_n12{"g #lt;= 7000"}
_Nr4d_n13["NR4D_KUM_6000 +<br/>NR4D_6 *<br/>Einheiten(…)"]
_Nr4d_n14{"g #lt;= 8000"}
_Nr4d_n15["NR4D_KUM_7000 +<br/>NR4D_7 *<br/>Einheiten(…)"]
_Nr4d_n16{"g #lt;= 9000"}
_Nr4d_n17["NR4D_KUM_8000 +<br/>NR4D_8 *<br/>Einheiten(…)"]
_Nr4d_n18{"g #lt;= 10000"}
_Nr4d_n19["NR4D_KUM_9000 +<br/>NR4D_9 *<br/>Einheiten(…)"]
_Nr4d_n20{"g #lt;= 11000"}
_Nr4d_n21["NR4D_KUM_10000 +<br/>NR4D_10 *<br/>Einheiten(…)"]
_Nr4d_n22{"g #lt;= 12000"}
_Nr4d_n23["NR4D_KUM_11000 +<br/>NR4D_11 *<br/>Einheiten(…)"]
_Nr4d_n24{"g #lt;= 13000"}
_Nr4d_n25["NR4D_KUM_12000 +<br/>NR4D_12 *<br/>Einheiten(…)"]
_Nr4d_n26{"g #lt;= 14000"}
_Nr4d_n27["NR4D_KUM_13000 +<br/>NR4D_13 *<br/>Einheiten(…)"]
_Nr4d_n28{"g #lt;= 15000"}
_Nr4d_n29["NR4D_KUM_14000 +<br/>NR4D_14 *<br/>Einheiten(…)"]
_Nr4d_n30["NR4D_KUM_15000 +<br/>NR4D_15 *<br/>Einheiten(…)"]
_Nr4d_n31("Ergebnis: EuroCent")
_Nr4d_n1 --> _Nr4d_n0
_Nr4d_n2 -->|"ja"| _Nr4d_n3
_Nr4d_n2 -->|"nein"| _Nr4d_n4
_Nr4d_n4 -->|"ja"| _Nr4d_n5
_Nr4d_n4 -->|"nein"| _Nr4d_n6
_Nr4d_n6 -->|"ja"| _Nr4d_n7
_Nr4d_n6 -->|"nein"| _Nr4d_n8
_Nr4d_n8 -->|"ja"| _Nr4d_n9
_Nr4d_n8 -->|"nein"| _Nr4d_n10
_Nr4d_n10 -->|"ja"| _Nr4d_n11
_Nr4d_n10 -->|"nein"| _Nr4d_n12
_Nr4d_n12 -->|"ja"| _Nr4d_n13
_Nr4d_n12 -->|"nein"| _Nr4d_n14
_Nr4d_n14 -->|"ja"| _Nr4d_n15
_Nr4d_n14 -->|"nein"| _Nr4d_n16
_Nr4d_n16 -->|"ja"| _Nr4d_n17
_Nr4d_n16 -->|"nein"| _Nr4d_n18
_Nr4d_n18 -->|"ja"| _Nr4d_n19
_Nr4d_n18 -->|"nein"| _Nr4d_n20
_Nr4d_n20 -->|"ja"| _Nr4d_n21
_Nr4d_n20 -->|"nein"| _Nr4d_n22
_Nr4d_n22 -->|"ja"| _Nr4d_n23
_Nr4d_n22 -->|"nein"| _Nr4d_n24
_Nr4d_n24 -->|"ja"| _Nr4d_n25
_Nr4d_n24 -->|"nein"| _Nr4d_n26
_Nr4d_n26 -->|"ja"| _Nr4d_n27
_Nr4d_n26 -->|"nein"| _Nr4d_n28
_Nr4d_n28 -->|"ja"| _Nr4d_n29
_Nr4d_n28 -->|"nein"| _Nr4d_n30
_Nr4d_n0 --> _Nr4d_n2
_Nr4d_n3 --> _Nr4d_n31
_Nr4d_n5 --> _Nr4d_n31
_Nr4d_n7 --> _Nr4d_n31
_Nr4d_n9 --> _Nr4d_n31
_Nr4d_n11 --> _Nr4d_n31
_Nr4d_n13 --> _Nr4d_n31
_Nr4d_n15 --> _Nr4d_n31
_Nr4d_n17 --> _Nr4d_n31
_Nr4d_n19 --> _Nr4d_n31
_Nr4d_n21 --> _Nr4d_n31
_Nr4d_n23 --> _Nr4d_n31
_Nr4d_n25 --> _Nr4d_n31
_Nr4d_n27 --> _Nr4d_n31
_Nr4d_n29 --> _Nr4d_n31
_Nr4d_n30 --> _Nr4d_n31
click _Nr4d_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver Stufentarif Buchst. d (Voraussetzungen a/b/c nicht erfüllt), je 200 kg, Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. d KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Nr4d_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Nr4d_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Nr4d_n2,_Nr4d_n4,_Nr4d_n6,_Nr4d_n8,_Nr4d_n10,_Nr4d_n12,_Nr4d_n14,_Nr4d_n16,_Nr4d_n18,_Nr4d_n20,_Nr4d_n22,_Nr4d_n24,_Nr4d_n26,_Nr4d_n28 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Nr4d_n3,_Nr4d_n5,_Nr4d_n7,_Nr4d_n9,_Nr4d_n11,_Nr4d_n13,_Nr4d_n15,_Nr4d_n17,_Nr4d_n19,_Nr4d_n21,_Nr4d_n23,_Nr4d_n25,_Nr4d_n27,_Nr4d_n29,_Nr4d_n30 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Nr4d_n31 ende
_Nr4b
%%{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
_Nr4b_n0("_Nr4b<br/><br/>⟨§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG⟩")
_Nr4b_n1[/"g: Ganzzahl"/]
_Nr4b_n2{"g #lt;= 2000"}
_Nr4b_n3["NR4B_1 *<br/>Einheiten(…)"]
_Nr4b_n4{"g #lt;= 3000"}
_Nr4b_n5["NR4B_KUM_2000 +<br/>NR4B_2 *<br/>Einheiten(…)"]
_Nr4b_n6{"g #lt;= 4000"}
_Nr4b_n7["NR4B_KUM_3000 +<br/>NR4B_3 *<br/>Einheiten(…)"]
_Nr4b_n8{"g #lt;= 5000"}
_Nr4b_n9["NR4B_KUM_4000 +<br/>NR4B_4 *<br/>Einheiten(…)"]
_Nr4b_n10{"g #lt;= 6000"}
_Nr4b_n11["NR4B_KUM_5000 +<br/>NR4B_5 *<br/>Einheiten(…)"]
_Nr4b_n12{"g #lt;= 7000"}
_Nr4b_n13["NR4B_KUM_6000 +<br/>NR4B_6 *<br/>Einheiten(…)"]
_Nr4b_n14{"g #lt;= 8000"}
_Nr4b_n15["NR4B_KUM_7000 +<br/>NR4B_7 *<br/>Einheiten(…)"]
_Nr4b_n16{"g #lt;= 9000"}
_Nr4b_n17["NR4B_KUM_8000 +<br/>NR4B_8 *<br/>Einheiten(…)"]
_Nr4b_n18{"g #lt;= 10000"}
_Nr4b_n19["NR4B_KUM_9000 +<br/>NR4B_9 *<br/>Einheiten(…)"]
_Nr4b_n20{"g #lt;= 11000"}
_Nr4b_n21["NR4B_KUM_10000 +<br/>NR4B_10 *<br/>Einheiten(…)"]
_Nr4b_n22{"g #lt;= 12000"}
_Nr4b_n23["NR4B_KUM_11000 +<br/>NR4B_11 *<br/>Einheiten(…)"]
_Nr4b_n24{"g #lt;= 13000"}
_Nr4b_n25["NR4B_KUM_12000 +<br/>NR4B_12 *<br/>Einheiten(…)"]
_Nr4b_n26{"g #lt;= 14000"}
_Nr4b_n27["NR4B_KUM_13000 +<br/>NR4B_13 *<br/>Einheiten(…)"]
_Nr4b_n28{"g #lt;= 15000"}
_Nr4b_n29["NR4B_KUM_14000 +<br/>NR4B_14 *<br/>Einheiten(…)"]
_Nr4b_n30["NR4B_KUM_15000 +<br/>NR4B_15 *<br/>Einheiten(…)"]
_Nr4b_n31("Ergebnis: EuroCent")
_Nr4b_n1 --> _Nr4b_n0
_Nr4b_n2 -->|"ja"| _Nr4b_n3
_Nr4b_n2 -->|"nein"| _Nr4b_n4
_Nr4b_n4 -->|"ja"| _Nr4b_n5
_Nr4b_n4 -->|"nein"| _Nr4b_n6
_Nr4b_n6 -->|"ja"| _Nr4b_n7
_Nr4b_n6 -->|"nein"| _Nr4b_n8
_Nr4b_n8 -->|"ja"| _Nr4b_n9
_Nr4b_n8 -->|"nein"| _Nr4b_n10
_Nr4b_n10 -->|"ja"| _Nr4b_n11
_Nr4b_n10 -->|"nein"| _Nr4b_n12
_Nr4b_n12 -->|"ja"| _Nr4b_n13
_Nr4b_n12 -->|"nein"| _Nr4b_n14
_Nr4b_n14 -->|"ja"| _Nr4b_n15
_Nr4b_n14 -->|"nein"| _Nr4b_n16
_Nr4b_n16 -->|"ja"| _Nr4b_n17
_Nr4b_n16 -->|"nein"| _Nr4b_n18
_Nr4b_n18 -->|"ja"| _Nr4b_n19
_Nr4b_n18 -->|"nein"| _Nr4b_n20
_Nr4b_n20 -->|"ja"| _Nr4b_n21
_Nr4b_n20 -->|"nein"| _Nr4b_n22
_Nr4b_n22 -->|"ja"| _Nr4b_n23
_Nr4b_n22 -->|"nein"| _Nr4b_n24
_Nr4b_n24 -->|"ja"| _Nr4b_n25
_Nr4b_n24 -->|"nein"| _Nr4b_n26
_Nr4b_n26 -->|"ja"| _Nr4b_n27
_Nr4b_n26 -->|"nein"| _Nr4b_n28
_Nr4b_n28 -->|"ja"| _Nr4b_n29
_Nr4b_n28 -->|"nein"| _Nr4b_n30
_Nr4b_n0 --> _Nr4b_n2
_Nr4b_n3 --> _Nr4b_n31
_Nr4b_n5 --> _Nr4b_n31
_Nr4b_n7 --> _Nr4b_n31
_Nr4b_n9 --> _Nr4b_n31
_Nr4b_n11 --> _Nr4b_n31
_Nr4b_n13 --> _Nr4b_n31
_Nr4b_n15 --> _Nr4b_n31
_Nr4b_n17 --> _Nr4b_n31
_Nr4b_n19 --> _Nr4b_n31
_Nr4b_n21 --> _Nr4b_n31
_Nr4b_n23 --> _Nr4b_n31
_Nr4b_n25 --> _Nr4b_n31
_Nr4b_n27 --> _Nr4b_n31
_Nr4b_n29 --> _Nr4b_n31
_Nr4b_n30 --> _Nr4b_n31
click _Nr4b_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver Stufentarif Buchst. b (Schadstoffklasse S 1), je 200 kg, Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. b KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Nr4b_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Nr4b_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Nr4b_n2,_Nr4b_n4,_Nr4b_n6,_Nr4b_n8,_Nr4b_n10,_Nr4b_n12,_Nr4b_n14,_Nr4b_n16,_Nr4b_n18,_Nr4b_n20,_Nr4b_n22,_Nr4b_n24,_Nr4b_n26,_Nr4b_n28 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Nr4b_n3,_Nr4b_n5,_Nr4b_n7,_Nr4b_n9,_Nr4b_n11,_Nr4b_n13,_Nr4b_n15,_Nr4b_n17,_Nr4b_n19,_Nr4b_n21,_Nr4b_n23,_Nr4b_n25,_Nr4b_n27,_Nr4b_n29,_Nr4b_n30 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Nr4b_n31 ende
_Nr4c
%%{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
_Nr4c_n0("_Nr4c<br/><br/>⟨§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG⟩")
_Nr4c_n1[/"g: Ganzzahl"/]
_Nr4c_n2{"g #lt;= 2000"}
_Nr4c_n3["NR4C_1 *<br/>Einheiten(…)"]
_Nr4c_n4{"g #lt;= 3000"}
_Nr4c_n5["NR4C_KUM_2000 +<br/>NR4C_2 *<br/>Einheiten(…)"]
_Nr4c_n6{"g #lt;= 4000"}
_Nr4c_n7["NR4C_KUM_3000 +<br/>NR4C_3 *<br/>Einheiten(…)"]
_Nr4c_n8{"g #lt;= 5000"}
_Nr4c_n9["NR4C_KUM_4000 +<br/>NR4C_4 *<br/>Einheiten(…)"]
_Nr4c_n10{"g #lt;= 6000"}
_Nr4c_n11["NR4C_KUM_5000 +<br/>NR4C_5 *<br/>Einheiten(…)"]
_Nr4c_n12{"g #lt;= 7000"}
_Nr4c_n13["NR4C_KUM_6000 +<br/>NR4C_6 *<br/>Einheiten(…)"]
_Nr4c_n14{"g #lt;= 8000"}
_Nr4c_n15["NR4C_KUM_7000 +<br/>NR4C_7 *<br/>Einheiten(…)"]
_Nr4c_n16{"g #lt;= 9000"}
_Nr4c_n17["NR4C_KUM_8000 +<br/>NR4C_8 *<br/>Einheiten(…)"]
_Nr4c_n18{"g #lt;= 10000"}
_Nr4c_n19["NR4C_KUM_9000 +<br/>NR4C_9 *<br/>Einheiten(…)"]
_Nr4c_n20{"g #lt;= 11000"}
_Nr4c_n21["NR4C_KUM_10000 +<br/>NR4C_10 *<br/>Einheiten(…)"]
_Nr4c_n22{"g #lt;= 12000"}
_Nr4c_n23["NR4C_KUM_11000 +<br/>NR4C_11 *<br/>Einheiten(…)"]
_Nr4c_n24{"g #lt;= 13000"}
_Nr4c_n25["NR4C_KUM_12000 +<br/>NR4C_12 *<br/>Einheiten(…)"]
_Nr4c_n26{"g #lt;= 14000"}
_Nr4c_n27["NR4C_KUM_13000 +<br/>NR4C_13 *<br/>Einheiten(…)"]
_Nr4c_n28{"g #lt;= 15000"}
_Nr4c_n29["NR4C_KUM_14000 +<br/>NR4C_14 *<br/>Einheiten(…)"]
_Nr4c_n30["NR4C_KUM_15000 +<br/>NR4C_15 *<br/>Einheiten(…)"]
_Nr4c_n31("Ergebnis: EuroCent")
_Nr4c_n1 --> _Nr4c_n0
_Nr4c_n2 -->|"ja"| _Nr4c_n3
_Nr4c_n2 -->|"nein"| _Nr4c_n4
_Nr4c_n4 -->|"ja"| _Nr4c_n5
_Nr4c_n4 -->|"nein"| _Nr4c_n6
_Nr4c_n6 -->|"ja"| _Nr4c_n7
_Nr4c_n6 -->|"nein"| _Nr4c_n8
_Nr4c_n8 -->|"ja"| _Nr4c_n9
_Nr4c_n8 -->|"nein"| _Nr4c_n10
_Nr4c_n10 -->|"ja"| _Nr4c_n11
_Nr4c_n10 -->|"nein"| _Nr4c_n12
_Nr4c_n12 -->|"ja"| _Nr4c_n13
_Nr4c_n12 -->|"nein"| _Nr4c_n14
_Nr4c_n14 -->|"ja"| _Nr4c_n15
_Nr4c_n14 -->|"nein"| _Nr4c_n16
_Nr4c_n16 -->|"ja"| _Nr4c_n17
_Nr4c_n16 -->|"nein"| _Nr4c_n18
_Nr4c_n18 -->|"ja"| _Nr4c_n19
_Nr4c_n18 -->|"nein"| _Nr4c_n20
_Nr4c_n20 -->|"ja"| _Nr4c_n21
_Nr4c_n20 -->|"nein"| _Nr4c_n22
_Nr4c_n22 -->|"ja"| _Nr4c_n23
_Nr4c_n22 -->|"nein"| _Nr4c_n24
_Nr4c_n24 -->|"ja"| _Nr4c_n25
_Nr4c_n24 -->|"nein"| _Nr4c_n26
_Nr4c_n26 -->|"ja"| _Nr4c_n27
_Nr4c_n26 -->|"nein"| _Nr4c_n28
_Nr4c_n28 -->|"ja"| _Nr4c_n29
_Nr4c_n28 -->|"nein"| _Nr4c_n30
_Nr4c_n0 --> _Nr4c_n2
_Nr4c_n3 --> _Nr4c_n31
_Nr4c_n5 --> _Nr4c_n31
_Nr4c_n7 --> _Nr4c_n31
_Nr4c_n9 --> _Nr4c_n31
_Nr4c_n11 --> _Nr4c_n31
_Nr4c_n13 --> _Nr4c_n31
_Nr4c_n15 --> _Nr4c_n31
_Nr4c_n17 --> _Nr4c_n31
_Nr4c_n19 --> _Nr4c_n31
_Nr4c_n21 --> _Nr4c_n31
_Nr4c_n23 --> _Nr4c_n31
_Nr4c_n25 --> _Nr4c_n31
_Nr4c_n27 --> _Nr4c_n31
_Nr4c_n29 --> _Nr4c_n31
_Nr4c_n30 --> _Nr4c_n31
click _Nr4c_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver Stufentarif Buchst. c (Geräuschklasse G 1), je 200 kg, Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. c KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Nr4c_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Nr4c_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Nr4c_n2,_Nr4c_n4,_Nr4c_n6,_Nr4c_n8,_Nr4c_n10,_Nr4c_n12,_Nr4c_n14,_Nr4c_n16,_Nr4c_n18,_Nr4c_n20,_Nr4c_n22,_Nr4c_n24,_Nr4c_n26,_Nr4c_n28 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Nr4c_n3,_Nr4c_n5,_Nr4c_n7,_Nr4c_n9,_Nr4c_n11,_Nr4c_n13,_Nr4c_n15,_Nr4c_n17,_Nr4c_n19,_Nr4c_n21,_Nr4c_n23,_Nr4c_n25,_Nr4c_n27,_Nr4c_n29,_Nr4c_n30 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Nr4c_n31 ende
SteuerAnhaenger
%%{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
SteuerAnhaenger_n0("SteuerAnhaenger<br/><br/>⟨§ 9 Absatz 1 Nummer 5 KraftStG⟩")
SteuerAnhaenger_n1[/"gesamtgewichtKg: Ganzzahl"/]
SteuerAnhaenger_n2["(ANH_JE_200KG *<br/>Einheiten(…)).höchstens(…)"]
SteuerAnhaenger_n3("Ergebnis: EuroCent")
SteuerAnhaenger_n1 --> SteuerAnhaenger_n0
SteuerAnhaenger_n0 --> SteuerAnhaenger_n2
SteuerAnhaenger_n2 --> SteuerAnhaenger_n3
click SteuerAnhaenger_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Kraftfahrzeuganhänger (§ 9 Abs. 1 Nr. 5 KraftStG): je angefangene 200 kg Gesamtgewicht 7,46 €, höchstens 373,24 €." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerAnhaenger_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerAnhaenger_n1 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SteuerAnhaenger_n2 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerAnhaenger_n3 ende
Programmablaufpläne — kraftstg-typen
Einheiten
%%{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
Einheiten_n0("Einheiten<br/><br/>⟨§ 9 Absatz 1 KraftStG⟩")
Einheiten_n1[/"wert: Ganzzahl"/]
Einheiten_n2[/"teiler: Ganzzahl"/]
Einheiten_n3{"wert #lt;= 0"}
Einheiten_n4["0"]
Einheiten_n5["((wert /<br/>teiler) als Dezimal).aufrunden()"]
Einheiten_n6("Ergebnis: Ganzzahl")
Einheiten_n1 --> Einheiten_n0
Einheiten_n2 --> Einheiten_n0
Einheiten_n3 -->|"ja"| Einheiten_n4
Einheiten_n3 -->|"nein"| Einheiten_n5
Einheiten_n0 --> Einheiten_n3
Einheiten_n4 --> Einheiten_n6
Einheiten_n5 --> Einheiten_n6
click Einheiten_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Anzahl angefangener Einheiten: `wert` geteilt durch `schritt`, aufgerundet (§ 9 KraftStG: „für je … oder einen Teil davon')." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Einheiten_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Einheiten_n1,Einheiten_n2 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class Einheiten_n3 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Einheiten_n4,Einheiten_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Einheiten_n6 ende
# Programmablaufpläne — kraftst
## TarifNach9Abs1
```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
TarifNach9Abs1_n0("TarifNach9Abs1<br/><br/>⟨§ 9 Absatz 1 KraftStG⟩")
TarifNach9Abs1_n1[/"f: Fahrzeug"/]
TarifNach9Abs1_n2{{"wähle f.art"}}
TarifNach9Abs1_n3[["SteuerKraftrad(…)"]]
TarifNach9Abs1_n4[["SteuerPkw(…)"]]
TarifNach9Abs1_n5[["SteuerWohnmobil(…)"]]
TarifNach9Abs1_n6[["SteuerDreiLeichtvier(…)"]]
TarifNach9Abs1_n7[["SteuerNr3(…)"]]
TarifNach9Abs1_n8[["SteuerNr4(…)"]]
TarifNach9Abs1_n9[["SteuerAnhaenger(…)"]]
TarifNach9Abs1_n10("Ergebnis: EuroCent")
TarifNach9Abs1_n1 --> TarifNach9Abs1_n0
TarifNach9Abs1_n2 -->|"Kraftrad"| TarifNach9Abs1_n3
TarifNach9Abs1_n2 -->|"Pkw"| TarifNach9Abs1_n4
TarifNach9Abs1_n2 -->|"Wohnmobil"| TarifNach9Abs1_n5
TarifNach9Abs1_n2 -->|"DreiLeichtvier"| TarifNach9Abs1_n6
TarifNach9Abs1_n2 -->|"AndereBis3500"| TarifNach9Abs1_n7
TarifNach9Abs1_n2 -->|"AndereUeber3500"| TarifNach9Abs1_n8
TarifNach9Abs1_n2 -->|"Anhaenger"| TarifNach9Abs1_n9
TarifNach9Abs1_n0 --> TarifNach9Abs1_n2
TarifNach9Abs1_n3 --> TarifNach9Abs1_n10
TarifNach9Abs1_n4 --> TarifNach9Abs1_n10
TarifNach9Abs1_n5 --> TarifNach9Abs1_n10
TarifNach9Abs1_n6 --> TarifNach9Abs1_n10
TarifNach9Abs1_n7 --> TarifNach9Abs1_n10
TarifNach9Abs1_n8 --> TarifNach9Abs1_n10
TarifNach9Abs1_n9 --> TarifNach9Abs1_n10
click TarifNach9Abs1_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Tarifbetrag nach § 9 Abs. 1 KraftStG: wählt anhand der Fahrzeugart (§ 8 KraftStG) die einschlägige Nummer." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n1 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n2 case
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n3,TarifNach9Abs1_n4,TarifNach9Abs1_n5,TarifNach9Abs1_n6,TarifNach9Abs1_n7,TarifNach9Abs1_n8,TarifNach9Abs1_n9 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class TarifNach9Abs1_n10 ende
```
## _Anwende9Abs2
```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
_Anwende9Abs2_n0("_Anwende9Abs2<br/><br/>⟨§ 9 Absatz 2 KraftStG⟩")
_Anwende9Abs2_n1[/"f: Fahrzeug"/]
_Anwende9Abs2_n2[/"betrag: EuroCent"/]
_Anwende9Abs2_n3{"f.antrieb == Elektro und f.art == AndereBis3500"}
_Anwende9Abs2_n4["(betrag /<br/>2) als EuroCent"]
_Anwende9Abs2_n5{"f.antrieb == Elektro und f.art == AndereUeber3500<br/>und f.nfzklasse == MindestensS2"}
_Anwende9Abs2_n6["(betrag /<br/>2) als EuroCent"]
_Anwende9Abs2_n7["betrag"]
_Anwende9Abs2_n8("Ergebnis: EuroCent")
_Anwende9Abs2_n1 --> _Anwende9Abs2_n0
_Anwende9Abs2_n2 --> _Anwende9Abs2_n0
_Anwende9Abs2_n3 -->|"ja"| _Anwende9Abs2_n4
_Anwende9Abs2_n3 -->|"nein"| _Anwende9Abs2_n5
_Anwende9Abs2_n5 -->|"ja"| _Anwende9Abs2_n6
_Anwende9Abs2_n5 -->|"nein"| _Anwende9Abs2_n7
_Anwende9Abs2_n0 --> _Anwende9Abs2_n3
_Anwende9Abs2_n4 --> _Anwende9Abs2_n8
_Anwende9Abs2_n6 --> _Anwende9Abs2_n8
_Anwende9Abs2_n7 --> _Anwende9Abs2_n8
click _Anwende9Abs2_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "50 %-Ermäßigung für Elektrofahrzeuge nach § 9 Abs. 2 KraftStG — gilt ausschließlich für Beträge nach § 9 Abs. 1 Nr. 3 oder Nr. 4 Buchst. a (Nutzfahrzeuge). Für alle anderen Fahrzeugarten/Klassen bleibt der Betrag unverändert (reine Elektro-PKW sind regelmäßig nach § 3d befreit)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n1,_Anwende9Abs2_n2 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n3,_Anwende9Abs2_n5 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n4,_Anwende9Abs2_n6,_Anwende9Abs2_n7 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Anwende9Abs2_n8 ende
```
## _AnwendeVerguenstigung
```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
_AnwendeVerguenstigung_n0("_AnwendeVerguenstigung<br/><br/>⟨§ 3a KraftStG⟩")
_AnwendeVerguenstigung_n1[/"f: Fahrzeug"/]
_AnwendeVerguenstigung_n2[/"betrag: EuroCent"/]
_AnwendeVerguenstigung_n3{"f.elektroBefreitNach3d"}
_AnwendeVerguenstigung_n4["0,00"]
_AnwendeVerguenstigung_n5{"f.behinderung == Befreit3aAbs1"}
_AnwendeVerguenstigung_n6["0,00"]
_AnwendeVerguenstigung_n7{"f.behinderung == Ermaessigt3aAbs2"}
_AnwendeVerguenstigung_n8["(betrag /<br/>2) als EuroCent"]
_AnwendeVerguenstigung_n9["betrag"]
_AnwendeVerguenstigung_n10("Ergebnis: EuroCent")
_AnwendeVerguenstigung_n1 --> _AnwendeVerguenstigung_n0
_AnwendeVerguenstigung_n2 --> _AnwendeVerguenstigung_n0
_AnwendeVerguenstigung_n3 -->|"ja"| _AnwendeVerguenstigung_n4
_AnwendeVerguenstigung_n3 -->|"nein"| _AnwendeVerguenstigung_n5
_AnwendeVerguenstigung_n5 -->|"ja"| _AnwendeVerguenstigung_n6
_AnwendeVerguenstigung_n5 -->|"nein"| _AnwendeVerguenstigung_n7
_AnwendeVerguenstigung_n7 -->|"ja"| _AnwendeVerguenstigung_n8
_AnwendeVerguenstigung_n7 -->|"nein"| _AnwendeVerguenstigung_n9
_AnwendeVerguenstigung_n0 --> _AnwendeVerguenstigung_n3
_AnwendeVerguenstigung_n4 --> _AnwendeVerguenstigung_n10
_AnwendeVerguenstigung_n6 --> _AnwendeVerguenstigung_n10
_AnwendeVerguenstigung_n8 --> _AnwendeVerguenstigung_n10
_AnwendeVerguenstigung_n9 --> _AnwendeVerguenstigung_n10
click _AnwendeVerguenstigung_n0 href "https://www.gesetze-im-internet.de/kraftstg/__3a.html" "Anwendung der Schwerbehinderten-Vergünstigung (§ 3a KraftStG) und der Elektrofahrzeug-Befreiung (§ 3d KraftStG) auf den Steuerbetrag. Reihenfolge: § 3d-Befreiung und § 3a Abs. 1-Befreiung setzen die Steuer auf 0; § 3a Abs. 2 halbiert." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n1,_AnwendeVerguenstigung_n2 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n3,_AnwendeVerguenstigung_n5,_AnwendeVerguenstigung_n7 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n4,_AnwendeVerguenstigung_n6,_AnwendeVerguenstigung_n8,_AnwendeVerguenstigung_n9 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _AnwendeVerguenstigung_n10 ende
```
## BerechneKraftfahrzeugsteuer
```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
BerechneKraftfahrzeugsteuer_n0("BerechneKraftfahrzeugsteuer<br/><br/>⟨§ 9 KraftStG⟩")
BerechneKraftfahrzeugsteuer_n1[/"f: Fahrzeug"/]
BerechneKraftfahrzeugsteuer_n2[["tarif ← TarifNach9Abs1(…)"]]
BerechneKraftfahrzeugsteuer_n3[["nachE ← _Anwende9Abs2(…)"]]
BerechneKraftfahrzeugsteuer_n4[["jahr ← _AnwendeVerguenstigung(…)"]]
BerechneKraftfahrzeugsteuer_n5[["KraftfahrzeugsteuerErgebnis(…)"]]
BerechneKraftfahrzeugsteuer_n6("Ergebnis: KraftfahrzeugsteuerErgebnis")
BerechneKraftfahrzeugsteuer_n1 --> BerechneKraftfahrzeugsteuer_n0
BerechneKraftfahrzeugsteuer_n2 --> BerechneKraftfahrzeugsteuer_n3
BerechneKraftfahrzeugsteuer_n3 --> BerechneKraftfahrzeugsteuer_n4
BerechneKraftfahrzeugsteuer_n4 --> BerechneKraftfahrzeugsteuer_n5
BerechneKraftfahrzeugsteuer_n0 --> BerechneKraftfahrzeugsteuer_n2
BerechneKraftfahrzeugsteuer_n5 --> BerechneKraftfahrzeugsteuer_n6
click BerechneKraftfahrzeugsteuer_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Vollständige Festsetzung der Kraftfahrzeug-Jahressteuer in der gesetzlichen Reihenfolge: § 8 (Tarifauswahl) → § 9 Abs. 1 (Tarifbetrag) → § 9 Abs. 2 (Elektro-Ermäßigung) → § 3a / § 3d (Vergünstigung/Befreiung). Liefert alle Zwischengrößen." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class BerechneKraftfahrzeugsteuer_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class BerechneKraftfahrzeugsteuer_n1 eingabe
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class BerechneKraftfahrzeugsteuer_n2,BerechneKraftfahrzeugsteuer_n3,BerechneKraftfahrzeugsteuer_n4,BerechneKraftfahrzeugsteuer_n5 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class BerechneKraftfahrzeugsteuer_n6 ende
```
# Programmablaufpläne — kraftstg-tarif-leicht
## SteuerKraftrad
```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
SteuerKraftrad_n0("SteuerKraftrad<br/><br/>⟨§ 9 Absatz 1 Nummer 1 KraftStG⟩")
SteuerKraftrad_n1[/"hubraumCcm: Ganzzahl"/]
SteuerKraftrad_n2["KRAD_JE_25CCM *<br/>Einheiten(…)"]
SteuerKraftrad_n3("Ergebnis: EuroCent")
SteuerKraftrad_n1 --> SteuerKraftrad_n0
SteuerKraftrad_n0 --> SteuerKraftrad_n2
SteuerKraftrad_n2 --> SteuerKraftrad_n3
click SteuerKraftrad_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Jahressteuer für Krafträder: je angefangene 25 cm³ Hubraum 1,84 € (§ 9 Abs. 1 Nr. 1 KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerKraftrad_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerKraftrad_n1 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SteuerKraftrad_n2 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerKraftrad_n3 ende
```
## _Co2AufschlagNr2c
```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
_Co2AufschlagNr2c_n0("_Co2AufschlagNr2c<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG⟩")
_Co2AufschlagNr2c_n1[/"co2: Ganzzahl"/]
_Co2AufschlagNr2c_n2{"co2 #lt;= 95"}
_Co2AufschlagNr2c_n3["0,00"]
_Co2AufschlagNr2c_n4{"co2 #lt;= 115"}
_Co2AufschlagNr2c_n5["PKW_C_CO2_95_115 *<br/>(co2 -<br/>95)"]
_Co2AufschlagNr2c_n6{"co2 #lt;= 135"}
_Co2AufschlagNr2c_n7["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>(co2 -<br/>115)"]
_Co2AufschlagNr2c_n8{"co2 #lt;= 155"}
_Co2AufschlagNr2c_n9["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>20 +<br/>PKW_C_CO2_135_155 *<br/>(co2 -<br/>135)"]
_Co2AufschlagNr2c_n10{"co2 #lt;= 175"}
_Co2AufschlagNr2c_n11["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>20 +<br/>PKW_C_CO2_135_155 *<br/>20 +<br/>PKW_C_CO2_155_175 *<br/>(co2 -<br/>155)"]
_Co2AufschlagNr2c_n12{"co2 #lt;= 195"}
_Co2AufschlagNr2c_n13["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>20 +<br/>PKW_C_CO2_135_155 *<br/>20 +<br/>PKW_C_CO2_155_175 *<br/>20 +<br/>PKW_C_CO2_175_195 *<br/>(co2 -<br/>175)"]
_Co2AufschlagNr2c_n14["PKW_C_CO2_95_115 *<br/>20 +<br/>PKW_C_CO2_115_135 *<br/>20 +<br/>PKW_C_CO2_135_155 *<br/>20 +<br/>PKW_C_CO2_155_175 *<br/>20 +<br/>PKW_C_CO2_175_195 *<br/>20 +<br/>PKW_C_CO2_UEBER_195 *<br/>(co2 -<br/>195)"]
_Co2AufschlagNr2c_n15("Ergebnis: EuroCent")
_Co2AufschlagNr2c_n1 --> _Co2AufschlagNr2c_n0
_Co2AufschlagNr2c_n2 -->|"ja"| _Co2AufschlagNr2c_n3
_Co2AufschlagNr2c_n2 -->|"nein"| _Co2AufschlagNr2c_n4
_Co2AufschlagNr2c_n4 -->|"ja"| _Co2AufschlagNr2c_n5
_Co2AufschlagNr2c_n4 -->|"nein"| _Co2AufschlagNr2c_n6
_Co2AufschlagNr2c_n6 -->|"ja"| _Co2AufschlagNr2c_n7
_Co2AufschlagNr2c_n6 -->|"nein"| _Co2AufschlagNr2c_n8
_Co2AufschlagNr2c_n8 -->|"ja"| _Co2AufschlagNr2c_n9
_Co2AufschlagNr2c_n8 -->|"nein"| _Co2AufschlagNr2c_n10
_Co2AufschlagNr2c_n10 -->|"ja"| _Co2AufschlagNr2c_n11
_Co2AufschlagNr2c_n10 -->|"nein"| _Co2AufschlagNr2c_n12
_Co2AufschlagNr2c_n12 -->|"ja"| _Co2AufschlagNr2c_n13
_Co2AufschlagNr2c_n12 -->|"nein"| _Co2AufschlagNr2c_n14
_Co2AufschlagNr2c_n0 --> _Co2AufschlagNr2c_n2
_Co2AufschlagNr2c_n3 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n5 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n7 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n9 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n11 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n13 --> _Co2AufschlagNr2c_n15
_Co2AufschlagNr2c_n14 --> _Co2AufschlagNr2c_n15
click _Co2AufschlagNr2c_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver CO₂-Aufschlag für PKW nach § 9 Abs. 1 Nr. 2 Buchst. c KraftStG: für jedes Gramm CO₂/km über 95 g/km, gestaffelt nach dem Emissionswert (marginal je Spanne)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n2,_Co2AufschlagNr2c_n4,_Co2AufschlagNr2c_n6,_Co2AufschlagNr2c_n8,_Co2AufschlagNr2c_n10,_Co2AufschlagNr2c_n12 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n3,_Co2AufschlagNr2c_n5,_Co2AufschlagNr2c_n7,_Co2AufschlagNr2c_n9,_Co2AufschlagNr2c_n11,_Co2AufschlagNr2c_n13,_Co2AufschlagNr2c_n14 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Co2AufschlagNr2c_n15 ende
```
## _PkwHubraumSockel
```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
_PkwHubraumSockel_n0("_PkwHubraumSockel<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG⟩")
_PkwHubraumSockel_n1[/"hubraumCcm: Ganzzahl"/]
_PkwHubraumSockel_n2[/"antrieb: Antrieb"/]
_PkwHubraumSockel_n3{{"wähle antrieb"}}
_PkwHubraumSockel_n4["PKW_C_HUBRAUM_DIESEL *<br/>Einheiten(…)"]
_PkwHubraumSockel_n5["PKW_C_HUBRAUM_OTTO *<br/>Einheiten(…)"]
_PkwHubraumSockel_n6("Ergebnis: EuroCent")
_PkwHubraumSockel_n1 --> _PkwHubraumSockel_n0
_PkwHubraumSockel_n2 --> _PkwHubraumSockel_n0
_PkwHubraumSockel_n3 -->|"Selbstzuendung"| _PkwHubraumSockel_n4
_PkwHubraumSockel_n3 -->|"Fremdzuendung, Elektro"| _PkwHubraumSockel_n5
_PkwHubraumSockel_n0 --> _PkwHubraumSockel_n3
_PkwHubraumSockel_n4 --> _PkwHubraumSockel_n6
_PkwHubraumSockel_n5 --> _PkwHubraumSockel_n6
click _PkwHubraumSockel_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "PKW-Hubraum-Sockel nach Antrieb (§ 9 Abs. 1 Nr. 2 Buchst. b/c KraftStG): je angefangene 100 cm³ 2,00 € (Fremdzündung) bzw. 9,50 € (Selbstzündung)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n1,_PkwHubraumSockel_n2 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n3 case
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n4,_PkwHubraumSockel_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _PkwHubraumSockel_n6 ende
```
## _SteuerPkwC
```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
_SteuerPkwC_n0("_SteuerPkwC<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe c KraftStG⟩")
_SteuerPkwC_n1[/"hubraumCcm: Ganzzahl"/]
_SteuerPkwC_n2[/"co2: Ganzzahl"/]
_SteuerPkwC_n3[/"antrieb: Antrieb"/]
_SteuerPkwC_n4["_PkwHubraumSockel(…) +<br/>_Co2AufschlagNr2c(…)"]
_SteuerPkwC_n5("Ergebnis: EuroCent")
_SteuerPkwC_n1 --> _SteuerPkwC_n0
_SteuerPkwC_n2 --> _SteuerPkwC_n0
_SteuerPkwC_n3 --> _SteuerPkwC_n0
_SteuerPkwC_n0 --> _SteuerPkwC_n4
_SteuerPkwC_n4 --> _SteuerPkwC_n5
click _SteuerPkwC_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "PKW Nr. 2 Buchst. c (Erstzulassung ab 1.1.2021): Hubraum-Sockel zuzüglich progressivem CO₂-Aufschlag (§ 9 Abs. 1 Nr. 2 Buchst. c KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SteuerPkwC_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SteuerPkwC_n1,_SteuerPkwC_n2,_SteuerPkwC_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SteuerPkwC_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SteuerPkwC_n5 ende
```
## _SteuerPkwB
```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
_SteuerPkwB_n0("_SteuerPkwB<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe b KraftStG⟩")
_SteuerPkwB_n1[/"hubraumCcm: Ganzzahl"/]
_SteuerPkwB_n2[/"co2: Ganzzahl"/]
_SteuerPkwB_n3[/"freigrenze: Ganzzahl"/]
_SteuerPkwB_n4[/"antrieb: Antrieb"/]
_SteuerPkwB_n5["_PkwHubraumSockel(…) +<br/>wähle {<br/>falls co2 #lt;= freigrenze -#gt; 0,00<br/>sonst -#gt; PKW_B_CO2_JE_GRAMM *<br/>(co2 -<br/>freigrenze)<br/>}"]
_SteuerPkwB_n6("Ergebnis: EuroCent")
_SteuerPkwB_n1 --> _SteuerPkwB_n0
_SteuerPkwB_n2 --> _SteuerPkwB_n0
_SteuerPkwB_n3 --> _SteuerPkwB_n0
_SteuerPkwB_n4 --> _SteuerPkwB_n0
_SteuerPkwB_n0 --> _SteuerPkwB_n5
_SteuerPkwB_n5 --> _SteuerPkwB_n6
click _SteuerPkwB_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "PKW Nr. 2 Buchst. b (Erstzulassung 1.7.2009–31.12.2020): Hubraum-Sockel zuzüglich 2,00 € je g/km CO₂ über der datumsabhängigen Freigrenze (120 / 110 / 95 g/km)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SteuerPkwB_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SteuerPkwB_n1,_SteuerPkwB_n2,_SteuerPkwB_n3,_SteuerPkwB_n4 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SteuerPkwB_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SteuerPkwB_n6 ende
```
## _SteuerPkwA
```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
_SteuerPkwA_n0("_SteuerPkwA<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG⟩")
_SteuerPkwA_n1[/"hubraumCcm: Ganzzahl"/]
_SteuerPkwA_n2[/"stufe: PkwSchadstoffstufe"/]
_SteuerPkwA_n3[/"antrieb: Antrieb"/]
_SteuerPkwA_n4["_SatzPkwA(…) *<br/>Einheiten(…)"]
_SteuerPkwA_n5("Ergebnis: EuroCent")
_SteuerPkwA_n1 --> _SteuerPkwA_n0
_SteuerPkwA_n2 --> _SteuerPkwA_n0
_SteuerPkwA_n3 --> _SteuerPkwA_n0
_SteuerPkwA_n0 --> _SteuerPkwA_n4
_SteuerPkwA_n4 --> _SteuerPkwA_n5
click _SteuerPkwA_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "PKW Nr. 2 Buchst. a (Erstzulassung bis 30.6.2009): je angefangene 100 cm³ ein nach Schadstoffstufe (aa–ee) und Antrieb gestaffelter Satz (§ 9 Abs. 1 Nr. 2 Buchst. a KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SteuerPkwA_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SteuerPkwA_n1,_SteuerPkwA_n2,_SteuerPkwA_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SteuerPkwA_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SteuerPkwA_n5 ende
```
## _SatzPkwA
```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
_SatzPkwA_n0("_SatzPkwA<br/><br/>⟨§ 9 Absatz 1 Nummer 2 Buchstabe a KraftStG⟩")
_SatzPkwA_n1[/"stufe: PkwSchadstoffstufe"/]
_SatzPkwA_n2[/"antrieb: Antrieb"/]
_SatzPkwA_n3{{"wähle antrieb"}}
_SatzPkwA_n4{{"wähle stufe"}}
_SatzPkwA_n5["PKW_A_AA_DIESEL"]
_SatzPkwA_n6["PKW_A_BB_DIESEL"]
_SatzPkwA_n7["PKW_A_CC_DIESEL"]
_SatzPkwA_n8["PKW_A_DD_DIESEL"]
_SatzPkwA_n9["PKW_A_EE_DIESEL"]
_SatzPkwA_n10{{"wähle stufe"}}
_SatzPkwA_n11["PKW_A_AA_OTTO"]
_SatzPkwA_n12["PKW_A_BB_OTTO"]
_SatzPkwA_n13["PKW_A_CC_OTTO"]
_SatzPkwA_n14["PKW_A_DD_OTTO"]
_SatzPkwA_n15["PKW_A_EE_OTTO"]
_SatzPkwA_n16("Ergebnis: EuroCent")
_SatzPkwA_n1 --> _SatzPkwA_n0
_SatzPkwA_n2 --> _SatzPkwA_n0
_SatzPkwA_n4 -->|"Aa"| _SatzPkwA_n5
_SatzPkwA_n4 -->|"Bb"| _SatzPkwA_n6
_SatzPkwA_n4 -->|"Cc"| _SatzPkwA_n7
_SatzPkwA_n4 -->|"Dd"| _SatzPkwA_n8
_SatzPkwA_n4 -->|"Ee"| _SatzPkwA_n9
_SatzPkwA_n3 -->|"Selbstzuendung"| _SatzPkwA_n4
_SatzPkwA_n10 -->|"Aa"| _SatzPkwA_n11
_SatzPkwA_n10 -->|"Bb"| _SatzPkwA_n12
_SatzPkwA_n10 -->|"Cc"| _SatzPkwA_n13
_SatzPkwA_n10 -->|"Dd"| _SatzPkwA_n14
_SatzPkwA_n10 -->|"Ee"| _SatzPkwA_n15
_SatzPkwA_n3 -->|"Fremdzuendung, Elektro"| _SatzPkwA_n10
_SatzPkwA_n0 --> _SatzPkwA_n3
_SatzPkwA_n5 --> _SatzPkwA_n16
_SatzPkwA_n6 --> _SatzPkwA_n16
_SatzPkwA_n7 --> _SatzPkwA_n16
_SatzPkwA_n8 --> _SatzPkwA_n16
_SatzPkwA_n9 --> _SatzPkwA_n16
_SatzPkwA_n11 --> _SatzPkwA_n16
_SatzPkwA_n12 --> _SatzPkwA_n16
_SatzPkwA_n13 --> _SatzPkwA_n16
_SatzPkwA_n14 --> _SatzPkwA_n16
_SatzPkwA_n15 --> _SatzPkwA_n16
click _SatzPkwA_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Stufensatz je 100 cm³ für PKW Nr. 2 Buchst. a nach Schadstoffstufe und Antrieb. (Elektro wird wie Fremdzündung behandelt — relevant wird der Wert für reine E-PKW ohnehin nicht, da diese nach § 3d befreit sind.)" _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SatzPkwA_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SatzPkwA_n1,_SatzPkwA_n2 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class _SatzPkwA_n3,_SatzPkwA_n4,_SatzPkwA_n10 case
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SatzPkwA_n5,_SatzPkwA_n6,_SatzPkwA_n7,_SatzPkwA_n8,_SatzPkwA_n9,_SatzPkwA_n11,_SatzPkwA_n12,_SatzPkwA_n13,_SatzPkwA_n14,_SatzPkwA_n15 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SatzPkwA_n16 ende
```
## SteuerPkw
```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
SteuerPkw_n0("SteuerPkw<br/><br/>⟨§ 9 Absatz 1 Nummer 2 KraftStG⟩")
SteuerPkw_n1[/"f: Fahrzeug"/]
SteuerPkw_n2{{"wähle f.erstzulassung"}}
SteuerPkw_n3[["_SteuerPkwA(…)"]]
SteuerPkw_n4[["_SteuerPkwB(…)"]]
SteuerPkw_n5[["_SteuerPkwC(…)"]]
SteuerPkw_n6("Ergebnis: EuroCent")
SteuerPkw_n1 --> SteuerPkw_n0
SteuerPkw_n2 -->|"BisJuni2009"| SteuerPkw_n3
SteuerPkw_n2 -->|"JuliBisDez2020"| SteuerPkw_n4
SteuerPkw_n2 -->|"AbJan2021"| SteuerPkw_n5
SteuerPkw_n0 --> SteuerPkw_n2
SteuerPkw_n3 --> SteuerPkw_n6
SteuerPkw_n4 --> SteuerPkw_n6
SteuerPkw_n5 --> SteuerPkw_n6
click SteuerPkw_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Personenkraftwagen nach § 9 Abs. 1 Nr. 2 KraftStG: wählt anhand des Erstzulassungs-Regimes Buchst. a, b oder c." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerPkw_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerPkw_n1 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class SteuerPkw_n2 case
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class SteuerPkw_n3,SteuerPkw_n4,SteuerPkw_n5 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerPkw_n6 ende
```
## SteuerDreiLeichtvier
```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
SteuerDreiLeichtvier_n0("SteuerDreiLeichtvier<br/><br/>⟨§ 9 Absatz 1 Nummer 2b KraftStG⟩")
SteuerDreiLeichtvier_n1[/"hubraumCcm: Ganzzahl"/]
SteuerDreiLeichtvier_n2[/"grenzwerte: Wahrheitswert"/]
SteuerDreiLeichtvier_n3[/"antrieb: Antrieb"/]
SteuerDreiLeichtvier_n4["_SatzDreiLeichtvier(…) *<br/>Einheiten(…)"]
SteuerDreiLeichtvier_n5("Ergebnis: EuroCent")
SteuerDreiLeichtvier_n1 --> SteuerDreiLeichtvier_n0
SteuerDreiLeichtvier_n2 --> SteuerDreiLeichtvier_n0
SteuerDreiLeichtvier_n3 --> SteuerDreiLeichtvier_n0
SteuerDreiLeichtvier_n0 --> SteuerDreiLeichtvier_n4
SteuerDreiLeichtvier_n4 --> SteuerDreiLeichtvier_n5
click SteuerDreiLeichtvier_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Dreirädrige und leichte vierrädrige Kraftfahrzeuge (§ 9 Abs. 1 Nr. 2b KraftStG): je angefangene 100 cm³ ein nach Grenzwert-Einhaltung und Antrieb gestaffelter Satz." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerDreiLeichtvier_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerDreiLeichtvier_n1,SteuerDreiLeichtvier_n2,SteuerDreiLeichtvier_n3 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SteuerDreiLeichtvier_n4 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerDreiLeichtvier_n5 ende
```
## _SatzDreiLeichtvier
```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
_SatzDreiLeichtvier_n0("_SatzDreiLeichtvier<br/><br/>⟨§ 9 Absatz 1 Nummer 2b KraftStG⟩")
_SatzDreiLeichtvier_n1[/"grenzwerte: Wahrheitswert"/]
_SatzDreiLeichtvier_n2[/"antrieb: Antrieb"/]
_SatzDreiLeichtvier_n3{"grenzwerte und antrieb == Selbstzuendung"}
_SatzDreiLeichtvier_n4["DREIRAD_GW_DIESEL"]
_SatzDreiLeichtvier_n5{"grenzwerte"}
_SatzDreiLeichtvier_n6["DREIRAD_GW_OTTO"]
_SatzDreiLeichtvier_n7{"antrieb == Selbstzuendung"}
_SatzDreiLeichtvier_n8["DREIRAD_SONST_DIESEL"]
_SatzDreiLeichtvier_n9["DREIRAD_SONST_OTTO"]
_SatzDreiLeichtvier_n10("Ergebnis: EuroCent")
_SatzDreiLeichtvier_n1 --> _SatzDreiLeichtvier_n0
_SatzDreiLeichtvier_n2 --> _SatzDreiLeichtvier_n0
_SatzDreiLeichtvier_n3 -->|"ja"| _SatzDreiLeichtvier_n4
_SatzDreiLeichtvier_n3 -->|"nein"| _SatzDreiLeichtvier_n5
_SatzDreiLeichtvier_n5 -->|"ja"| _SatzDreiLeichtvier_n6
_SatzDreiLeichtvier_n5 -->|"nein"| _SatzDreiLeichtvier_n7
_SatzDreiLeichtvier_n7 -->|"ja"| _SatzDreiLeichtvier_n8
_SatzDreiLeichtvier_n7 -->|"nein"| _SatzDreiLeichtvier_n9
_SatzDreiLeichtvier_n0 --> _SatzDreiLeichtvier_n3
_SatzDreiLeichtvier_n4 --> _SatzDreiLeichtvier_n10
_SatzDreiLeichtvier_n6 --> _SatzDreiLeichtvier_n10
_SatzDreiLeichtvier_n8 --> _SatzDreiLeichtvier_n10
_SatzDreiLeichtvier_n9 --> _SatzDreiLeichtvier_n10
click _SatzDreiLeichtvier_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Stufensatz je 100 cm³ für § 9 Abs. 1 Nr. 2b KraftStG." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n1,_SatzDreiLeichtvier_n2 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n3,_SatzDreiLeichtvier_n5,_SatzDreiLeichtvier_n7 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n4,_SatzDreiLeichtvier_n6,_SatzDreiLeichtvier_n8,_SatzDreiLeichtvier_n9 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SatzDreiLeichtvier_n10 ende
```
## SteuerWohnmobil
```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
SteuerWohnmobil_n0("SteuerWohnmobil<br/><br/>⟨§ 9 Absatz 1 Nummer 2a KraftStG⟩")
SteuerWohnmobil_n1[/"gesamtgewichtKg: Ganzzahl"/]
SteuerWohnmobil_n2[/"klasse: WohnmobilKlasse"/]
SteuerWohnmobil_n3{{"wähle klasse"}}
SteuerWohnmobil_n4[["_WomoZweiStufen(…).höchstens(…)"]]
SteuerWohnmobil_n5[["_WomoZweiStufen(…).höchstens(…)"]]
SteuerWohnmobil_n6[["_SteuerWohnmobilSonst(…)"]]
SteuerWohnmobil_n7("Ergebnis: EuroCent")
SteuerWohnmobil_n1 --> SteuerWohnmobil_n0
SteuerWohnmobil_n2 --> SteuerWohnmobil_n0
SteuerWohnmobil_n3 -->|"MindestensS4"| SteuerWohnmobil_n4
SteuerWohnmobil_n3 -->|"S1bisS3"| SteuerWohnmobil_n5
SteuerWohnmobil_n3 -->|"WomoSonst"| SteuerWohnmobil_n6
SteuerWohnmobil_n0 --> SteuerWohnmobil_n3
SteuerWohnmobil_n4 --> SteuerWohnmobil_n7
SteuerWohnmobil_n5 --> SteuerWohnmobil_n7
SteuerWohnmobil_n6 --> SteuerWohnmobil_n7
click SteuerWohnmobil_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Wohnmobil nach § 9 Abs. 1 Nr. 2a KraftStG: je angefangene 200 kg Gesamtgewicht, progressiv nach Gewichtsspanne und Schadstoffklasse, mit Höchstbetrag (Buchst. a/b) bzw. ohne (Buchst. c)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n1,SteuerWohnmobil_n2 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n3 case
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n4,SteuerWohnmobil_n5,SteuerWohnmobil_n6 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerWohnmobil_n7 ende
```
## _WomoZweiStufen
```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
_WomoZweiStufen_n0("_WomoZweiStufen<br/><br/>⟨§ 9 Absatz 1 Nummer 2a KraftStG⟩")
_WomoZweiStufen_n1[/"g: Ganzzahl"/]
_WomoZweiStufen_n2[/"satzBis: EuroCent"/]
_WomoZweiStufen_n3[/"satzUeber: EuroCent"/]
_WomoZweiStufen_n4{"g #lt;= 2000"}
_WomoZweiStufen_n5["satzBis *<br/>Einheiten(…)"]
_WomoZweiStufen_n6["satzBis *<br/>10 +<br/>satzUeber *<br/>Einheiten(…)"]
_WomoZweiStufen_n7("Ergebnis: EuroCent")
_WomoZweiStufen_n1 --> _WomoZweiStufen_n0
_WomoZweiStufen_n2 --> _WomoZweiStufen_n0
_WomoZweiStufen_n3 --> _WomoZweiStufen_n0
_WomoZweiStufen_n4 -->|"ja"| _WomoZweiStufen_n5
_WomoZweiStufen_n4 -->|"nein"| _WomoZweiStufen_n6
_WomoZweiStufen_n0 --> _WomoZweiStufen_n4
_WomoZweiStufen_n5 --> _WomoZweiStufen_n7
_WomoZweiStufen_n6 --> _WomoZweiStufen_n7
click _WomoZweiStufen_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Zwei-Stufen-Wohnmobiltarif (Buchst. a/b): bis 2.000 kg `satzBis`, darüber `satzUeber`, je angefangene 200 kg." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n1,_WomoZweiStufen_n2,_WomoZweiStufen_n3 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n4 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n5,_WomoZweiStufen_n6 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _WomoZweiStufen_n7 ende
```
## _SteuerWohnmobilSonst
```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
_SteuerWohnmobilSonst_n0("_SteuerWohnmobilSonst<br/><br/>⟨§ 9 Absatz 1 Nummer 2a Buchstabe c KraftStG⟩")
_SteuerWohnmobilSonst_n1[/"g: Ganzzahl"/]
_SteuerWohnmobilSonst_n2{"g #lt;= 2000"}
_SteuerWohnmobilSonst_n3["WOMO_SONST_BIS_2000 *<br/>Einheiten(…)"]
_SteuerWohnmobilSonst_n4{"g #lt;= 5000"}
_SteuerWohnmobilSonst_n5["WOMO_SONST_BIS_2000 *<br/>10 +<br/>WOMO_SONST_2000_5000 *<br/>Einheiten(…)"]
_SteuerWohnmobilSonst_n6{"g #lt;= 12000"}
_SteuerWohnmobilSonst_n7["WOMO_SONST_BIS_2000 *<br/>10 +<br/>WOMO_SONST_2000_5000 *<br/>15 +<br/>WOMO_SONST_5000_12000 *<br/>Einheiten(…)"]
_SteuerWohnmobilSonst_n8["WOMO_SONST_BIS_2000 *<br/>10 +<br/>WOMO_SONST_2000_5000 *<br/>15 +<br/>WOMO_SONST_5000_12000 *<br/>35 +<br/>WOMO_SONST_UEBER_12000 *<br/>Einheiten(…)"]
_SteuerWohnmobilSonst_n9("Ergebnis: EuroCent")
_SteuerWohnmobilSonst_n1 --> _SteuerWohnmobilSonst_n0
_SteuerWohnmobilSonst_n2 -->|"ja"| _SteuerWohnmobilSonst_n3
_SteuerWohnmobilSonst_n2 -->|"nein"| _SteuerWohnmobilSonst_n4
_SteuerWohnmobilSonst_n4 -->|"ja"| _SteuerWohnmobilSonst_n5
_SteuerWohnmobilSonst_n4 -->|"nein"| _SteuerWohnmobilSonst_n6
_SteuerWohnmobilSonst_n6 -->|"ja"| _SteuerWohnmobilSonst_n7
_SteuerWohnmobilSonst_n6 -->|"nein"| _SteuerWohnmobilSonst_n8
_SteuerWohnmobilSonst_n0 --> _SteuerWohnmobilSonst_n2
_SteuerWohnmobilSonst_n3 --> _SteuerWohnmobilSonst_n9
_SteuerWohnmobilSonst_n5 --> _SteuerWohnmobilSonst_n9
_SteuerWohnmobilSonst_n7 --> _SteuerWohnmobilSonst_n9
_SteuerWohnmobilSonst_n8 --> _SteuerWohnmobilSonst_n9
click _SteuerWohnmobilSonst_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Wohnmobil Buchst. c (Voraussetzungen a/b nicht erfüllt, kein Höchstbetrag): bis 2.000 kg 40 €, über 2.000–5.000 kg 10 €, über 5.000–12.000 kg 15 €, über 12.000 kg 25 € — je angefangene 200 kg." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n2,_SteuerWohnmobilSonst_n4,_SteuerWohnmobilSonst_n6 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n3,_SteuerWohnmobilSonst_n5,_SteuerWohnmobilSonst_n7,_SteuerWohnmobilSonst_n8 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _SteuerWohnmobilSonst_n9 ende
```
# Programmablaufpläne — kraftstg-tarif-nutzfahrzeug
## SteuerNr3
```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
SteuerNr3_n0("SteuerNr3<br/><br/>⟨§ 9 Absatz 1 Nummer 3 KraftStG⟩")
SteuerNr3_n1[/"g: Ganzzahl"/]
SteuerNr3_n2{"g #lt;= 2000"}
SteuerNr3_n3["NR3_BIS_2000 *<br/>Einheiten(…)"]
SteuerNr3_n4{"g #lt;= 3000"}
SteuerNr3_n5["NR3_KUM_2000 +<br/>NR3_2000_3000 *<br/>Einheiten(…)"]
SteuerNr3_n6["NR3_KUM_3000 +<br/>NR3_3000_3500 *<br/>Einheiten(…)"]
SteuerNr3_n7("Ergebnis: EuroCent")
SteuerNr3_n1 --> SteuerNr3_n0
SteuerNr3_n2 -->|"ja"| SteuerNr3_n3
SteuerNr3_n2 -->|"nein"| SteuerNr3_n4
SteuerNr3_n4 -->|"ja"| SteuerNr3_n5
SteuerNr3_n4 -->|"nein"| SteuerNr3_n6
SteuerNr3_n0 --> SteuerNr3_n2
SteuerNr3_n3 --> SteuerNr3_n7
SteuerNr3_n5 --> SteuerNr3_n7
SteuerNr3_n6 --> SteuerNr3_n7
click SteuerNr3_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Andere Kraftfahrzeuge bis 3.500 kg (§ 9 Abs. 1 Nr. 3 KraftStG): je angefangene 200 kg, progressiv nach Gewichtsspanne (kein Höchstbetrag)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerNr3_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerNr3_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class SteuerNr3_n2,SteuerNr3_n4 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SteuerNr3_n3,SteuerNr3_n5,SteuerNr3_n6 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerNr3_n7 ende
```
## SteuerNr4
```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
SteuerNr4_n0("SteuerNr4<br/><br/>⟨§ 9 Absatz 1 Nummer 4 KraftStG⟩")
SteuerNr4_n1[/"g: Ganzzahl"/]
SteuerNr4_n2[/"klasse: NfzKlasse"/]
SteuerNr4_n3{{"wähle klasse"}}
SteuerNr4_n4[["_Nr4a(…).höchstens(…)"]]
SteuerNr4_n5[["_Nr4b(…).höchstens(…)"]]
SteuerNr4_n6[["_Nr4c(…).höchstens(…)"]]
SteuerNr4_n7[["_Nr4d(…).höchstens(…)"]]
SteuerNr4_n8("Ergebnis: EuroCent")
SteuerNr4_n1 --> SteuerNr4_n0
SteuerNr4_n2 --> SteuerNr4_n0
SteuerNr4_n3 -->|"MindestensS2"| SteuerNr4_n4
SteuerNr4_n3 -->|"S1"| SteuerNr4_n5
SteuerNr4_n3 -->|"G1"| SteuerNr4_n6
SteuerNr4_n3 -->|"NfzSonst"| SteuerNr4_n7
SteuerNr4_n0 --> SteuerNr4_n3
SteuerNr4_n4 --> SteuerNr4_n8
SteuerNr4_n5 --> SteuerNr4_n8
SteuerNr4_n6 --> SteuerNr4_n8
SteuerNr4_n7 --> SteuerNr4_n8
click SteuerNr4_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Kfz über 3.500 kg (§ 9 Abs. 1 Nr. 4 KraftStG): je angefangene 200 kg, progressiv in 1.000-kg-Spannen, nach Schadstoff-/Geräuschklasse, mit jeweils eigenem Höchstbetrag. Alle vier Buchstaben sind eigenständig modelliert: a (≥ S2, Spannen bis > 12.000 kg, max 556 €), b (S1, max 914 €), c (G1, max 1.425 €), d (sonst, max 1.681 €)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerNr4_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerNr4_n1,SteuerNr4_n2 eingabe
classDef case fill:#fcf0e2,stroke:#f0c79a,stroke-width:1px,color:#3c4043
class SteuerNr4_n3 case
classDef subprogram fill:#eeeffb,stroke:#c3c6ef,stroke-width:1px,color:#3c4043
class SteuerNr4_n4,SteuerNr4_n5,SteuerNr4_n6,SteuerNr4_n7 subprogram
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerNr4_n8 ende
```
## _Nr4a
```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
_Nr4a_n0("_Nr4a<br/><br/>⟨§ 9 Absatz 1 Nummer 4 Buchstabe a KraftStG⟩")
_Nr4a_n1[/"g: Ganzzahl"/]
_Nr4a_n2{"g #lt;= 2000"}
_Nr4a_n3["NR4A_1 *<br/>Einheiten(…)"]
_Nr4a_n4{"g #lt;= 3000"}
_Nr4a_n5["NR4A_KUM_2000 +<br/>NR4A_2 *<br/>Einheiten(…)"]
_Nr4a_n6{"g #lt;= 4000"}
_Nr4a_n7["NR4A_KUM_3000 +<br/>NR4A_3 *<br/>Einheiten(…)"]
_Nr4a_n8{"g #lt;= 5000"}
_Nr4a_n9["NR4A_KUM_4000 +<br/>NR4A_4 *<br/>Einheiten(…)"]
_Nr4a_n10{"g #lt;= 6000"}
_Nr4a_n11["NR4A_KUM_5000 +<br/>NR4A_5 *<br/>Einheiten(…)"]
_Nr4a_n12{"g #lt;= 7000"}
_Nr4a_n13["NR4A_KUM_6000 +<br/>NR4A_6 *<br/>Einheiten(…)"]
_Nr4a_n14{"g #lt;= 8000"}
_Nr4a_n15["NR4A_KUM_7000 +<br/>NR4A_7 *<br/>Einheiten(…)"]
_Nr4a_n16{"g #lt;= 9000"}
_Nr4a_n17["NR4A_KUM_8000 +<br/>NR4A_8 *<br/>Einheiten(…)"]
_Nr4a_n18{"g #lt;= 10000"}
_Nr4a_n19["NR4A_KUM_9000 +<br/>NR4A_9 *<br/>Einheiten(…)"]
_Nr4a_n20{"g #lt;= 11000"}
_Nr4a_n21["NR4A_KUM_10000 +<br/>NR4A_10 *<br/>Einheiten(…)"]
_Nr4a_n22{"g #lt;= 12000"}
_Nr4a_n23["NR4A_KUM_11000 +<br/>NR4A_11 *<br/>Einheiten(…)"]
_Nr4a_n24["NR4A_KUM_12000 +<br/>NR4A_12 *<br/>Einheiten(…)"]
_Nr4a_n25("Ergebnis: EuroCent")
_Nr4a_n1 --> _Nr4a_n0
_Nr4a_n2 -->|"ja"| _Nr4a_n3
_Nr4a_n2 -->|"nein"| _Nr4a_n4
_Nr4a_n4 -->|"ja"| _Nr4a_n5
_Nr4a_n4 -->|"nein"| _Nr4a_n6
_Nr4a_n6 -->|"ja"| _Nr4a_n7
_Nr4a_n6 -->|"nein"| _Nr4a_n8
_Nr4a_n8 -->|"ja"| _Nr4a_n9
_Nr4a_n8 -->|"nein"| _Nr4a_n10
_Nr4a_n10 -->|"ja"| _Nr4a_n11
_Nr4a_n10 -->|"nein"| _Nr4a_n12
_Nr4a_n12 -->|"ja"| _Nr4a_n13
_Nr4a_n12 -->|"nein"| _Nr4a_n14
_Nr4a_n14 -->|"ja"| _Nr4a_n15
_Nr4a_n14 -->|"nein"| _Nr4a_n16
_Nr4a_n16 -->|"ja"| _Nr4a_n17
_Nr4a_n16 -->|"nein"| _Nr4a_n18
_Nr4a_n18 -->|"ja"| _Nr4a_n19
_Nr4a_n18 -->|"nein"| _Nr4a_n20
_Nr4a_n20 -->|"ja"| _Nr4a_n21
_Nr4a_n20 -->|"nein"| _Nr4a_n22
_Nr4a_n22 -->|"ja"| _Nr4a_n23
_Nr4a_n22 -->|"nein"| _Nr4a_n24
_Nr4a_n0 --> _Nr4a_n2
_Nr4a_n3 --> _Nr4a_n25
_Nr4a_n5 --> _Nr4a_n25
_Nr4a_n7 --> _Nr4a_n25
_Nr4a_n9 --> _Nr4a_n25
_Nr4a_n11 --> _Nr4a_n25
_Nr4a_n13 --> _Nr4a_n25
_Nr4a_n15 --> _Nr4a_n25
_Nr4a_n17 --> _Nr4a_n25
_Nr4a_n19 --> _Nr4a_n25
_Nr4a_n21 --> _Nr4a_n25
_Nr4a_n23 --> _Nr4a_n25
_Nr4a_n24 --> _Nr4a_n25
click _Nr4a_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver Stufentarif Buchst. a (≥ S2), je 200 kg, Spannen 2.000…> 12.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. a KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Nr4a_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Nr4a_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Nr4a_n2,_Nr4a_n4,_Nr4a_n6,_Nr4a_n8,_Nr4a_n10,_Nr4a_n12,_Nr4a_n14,_Nr4a_n16,_Nr4a_n18,_Nr4a_n20,_Nr4a_n22 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Nr4a_n3,_Nr4a_n5,_Nr4a_n7,_Nr4a_n9,_Nr4a_n11,_Nr4a_n13,_Nr4a_n15,_Nr4a_n17,_Nr4a_n19,_Nr4a_n21,_Nr4a_n23,_Nr4a_n24 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Nr4a_n25 ende
```
## _Nr4d
```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
_Nr4d_n0("_Nr4d<br/><br/>⟨§ 9 Absatz 1 Nummer 4 Buchstabe d KraftStG⟩")
_Nr4d_n1[/"g: Ganzzahl"/]
_Nr4d_n2{"g #lt;= 2000"}
_Nr4d_n3["NR4D_1 *<br/>Einheiten(…)"]
_Nr4d_n4{"g #lt;= 3000"}
_Nr4d_n5["NR4D_KUM_2000 +<br/>NR4D_2 *<br/>Einheiten(…)"]
_Nr4d_n6{"g #lt;= 4000"}
_Nr4d_n7["NR4D_KUM_3000 +<br/>NR4D_3 *<br/>Einheiten(…)"]
_Nr4d_n8{"g #lt;= 5000"}
_Nr4d_n9["NR4D_KUM_4000 +<br/>NR4D_4 *<br/>Einheiten(…)"]
_Nr4d_n10{"g #lt;= 6000"}
_Nr4d_n11["NR4D_KUM_5000 +<br/>NR4D_5 *<br/>Einheiten(…)"]
_Nr4d_n12{"g #lt;= 7000"}
_Nr4d_n13["NR4D_KUM_6000 +<br/>NR4D_6 *<br/>Einheiten(…)"]
_Nr4d_n14{"g #lt;= 8000"}
_Nr4d_n15["NR4D_KUM_7000 +<br/>NR4D_7 *<br/>Einheiten(…)"]
_Nr4d_n16{"g #lt;= 9000"}
_Nr4d_n17["NR4D_KUM_8000 +<br/>NR4D_8 *<br/>Einheiten(…)"]
_Nr4d_n18{"g #lt;= 10000"}
_Nr4d_n19["NR4D_KUM_9000 +<br/>NR4D_9 *<br/>Einheiten(…)"]
_Nr4d_n20{"g #lt;= 11000"}
_Nr4d_n21["NR4D_KUM_10000 +<br/>NR4D_10 *<br/>Einheiten(…)"]
_Nr4d_n22{"g #lt;= 12000"}
_Nr4d_n23["NR4D_KUM_11000 +<br/>NR4D_11 *<br/>Einheiten(…)"]
_Nr4d_n24{"g #lt;= 13000"}
_Nr4d_n25["NR4D_KUM_12000 +<br/>NR4D_12 *<br/>Einheiten(…)"]
_Nr4d_n26{"g #lt;= 14000"}
_Nr4d_n27["NR4D_KUM_13000 +<br/>NR4D_13 *<br/>Einheiten(…)"]
_Nr4d_n28{"g #lt;= 15000"}
_Nr4d_n29["NR4D_KUM_14000 +<br/>NR4D_14 *<br/>Einheiten(…)"]
_Nr4d_n30["NR4D_KUM_15000 +<br/>NR4D_15 *<br/>Einheiten(…)"]
_Nr4d_n31("Ergebnis: EuroCent")
_Nr4d_n1 --> _Nr4d_n0
_Nr4d_n2 -->|"ja"| _Nr4d_n3
_Nr4d_n2 -->|"nein"| _Nr4d_n4
_Nr4d_n4 -->|"ja"| _Nr4d_n5
_Nr4d_n4 -->|"nein"| _Nr4d_n6
_Nr4d_n6 -->|"ja"| _Nr4d_n7
_Nr4d_n6 -->|"nein"| _Nr4d_n8
_Nr4d_n8 -->|"ja"| _Nr4d_n9
_Nr4d_n8 -->|"nein"| _Nr4d_n10
_Nr4d_n10 -->|"ja"| _Nr4d_n11
_Nr4d_n10 -->|"nein"| _Nr4d_n12
_Nr4d_n12 -->|"ja"| _Nr4d_n13
_Nr4d_n12 -->|"nein"| _Nr4d_n14
_Nr4d_n14 -->|"ja"| _Nr4d_n15
_Nr4d_n14 -->|"nein"| _Nr4d_n16
_Nr4d_n16 -->|"ja"| _Nr4d_n17
_Nr4d_n16 -->|"nein"| _Nr4d_n18
_Nr4d_n18 -->|"ja"| _Nr4d_n19
_Nr4d_n18 -->|"nein"| _Nr4d_n20
_Nr4d_n20 -->|"ja"| _Nr4d_n21
_Nr4d_n20 -->|"nein"| _Nr4d_n22
_Nr4d_n22 -->|"ja"| _Nr4d_n23
_Nr4d_n22 -->|"nein"| _Nr4d_n24
_Nr4d_n24 -->|"ja"| _Nr4d_n25
_Nr4d_n24 -->|"nein"| _Nr4d_n26
_Nr4d_n26 -->|"ja"| _Nr4d_n27
_Nr4d_n26 -->|"nein"| _Nr4d_n28
_Nr4d_n28 -->|"ja"| _Nr4d_n29
_Nr4d_n28 -->|"nein"| _Nr4d_n30
_Nr4d_n0 --> _Nr4d_n2
_Nr4d_n3 --> _Nr4d_n31
_Nr4d_n5 --> _Nr4d_n31
_Nr4d_n7 --> _Nr4d_n31
_Nr4d_n9 --> _Nr4d_n31
_Nr4d_n11 --> _Nr4d_n31
_Nr4d_n13 --> _Nr4d_n31
_Nr4d_n15 --> _Nr4d_n31
_Nr4d_n17 --> _Nr4d_n31
_Nr4d_n19 --> _Nr4d_n31
_Nr4d_n21 --> _Nr4d_n31
_Nr4d_n23 --> _Nr4d_n31
_Nr4d_n25 --> _Nr4d_n31
_Nr4d_n27 --> _Nr4d_n31
_Nr4d_n29 --> _Nr4d_n31
_Nr4d_n30 --> _Nr4d_n31
click _Nr4d_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver Stufentarif Buchst. d (Voraussetzungen a/b/c nicht erfüllt), je 200 kg, Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. d KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Nr4d_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Nr4d_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Nr4d_n2,_Nr4d_n4,_Nr4d_n6,_Nr4d_n8,_Nr4d_n10,_Nr4d_n12,_Nr4d_n14,_Nr4d_n16,_Nr4d_n18,_Nr4d_n20,_Nr4d_n22,_Nr4d_n24,_Nr4d_n26,_Nr4d_n28 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Nr4d_n3,_Nr4d_n5,_Nr4d_n7,_Nr4d_n9,_Nr4d_n11,_Nr4d_n13,_Nr4d_n15,_Nr4d_n17,_Nr4d_n19,_Nr4d_n21,_Nr4d_n23,_Nr4d_n25,_Nr4d_n27,_Nr4d_n29,_Nr4d_n30 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Nr4d_n31 ende
```
## _Nr4b
```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
_Nr4b_n0("_Nr4b<br/><br/>⟨§ 9 Absatz 1 Nummer 4 Buchstabe b KraftStG⟩")
_Nr4b_n1[/"g: Ganzzahl"/]
_Nr4b_n2{"g #lt;= 2000"}
_Nr4b_n3["NR4B_1 *<br/>Einheiten(…)"]
_Nr4b_n4{"g #lt;= 3000"}
_Nr4b_n5["NR4B_KUM_2000 +<br/>NR4B_2 *<br/>Einheiten(…)"]
_Nr4b_n6{"g #lt;= 4000"}
_Nr4b_n7["NR4B_KUM_3000 +<br/>NR4B_3 *<br/>Einheiten(…)"]
_Nr4b_n8{"g #lt;= 5000"}
_Nr4b_n9["NR4B_KUM_4000 +<br/>NR4B_4 *<br/>Einheiten(…)"]
_Nr4b_n10{"g #lt;= 6000"}
_Nr4b_n11["NR4B_KUM_5000 +<br/>NR4B_5 *<br/>Einheiten(…)"]
_Nr4b_n12{"g #lt;= 7000"}
_Nr4b_n13["NR4B_KUM_6000 +<br/>NR4B_6 *<br/>Einheiten(…)"]
_Nr4b_n14{"g #lt;= 8000"}
_Nr4b_n15["NR4B_KUM_7000 +<br/>NR4B_7 *<br/>Einheiten(…)"]
_Nr4b_n16{"g #lt;= 9000"}
_Nr4b_n17["NR4B_KUM_8000 +<br/>NR4B_8 *<br/>Einheiten(…)"]
_Nr4b_n18{"g #lt;= 10000"}
_Nr4b_n19["NR4B_KUM_9000 +<br/>NR4B_9 *<br/>Einheiten(…)"]
_Nr4b_n20{"g #lt;= 11000"}
_Nr4b_n21["NR4B_KUM_10000 +<br/>NR4B_10 *<br/>Einheiten(…)"]
_Nr4b_n22{"g #lt;= 12000"}
_Nr4b_n23["NR4B_KUM_11000 +<br/>NR4B_11 *<br/>Einheiten(…)"]
_Nr4b_n24{"g #lt;= 13000"}
_Nr4b_n25["NR4B_KUM_12000 +<br/>NR4B_12 *<br/>Einheiten(…)"]
_Nr4b_n26{"g #lt;= 14000"}
_Nr4b_n27["NR4B_KUM_13000 +<br/>NR4B_13 *<br/>Einheiten(…)"]
_Nr4b_n28{"g #lt;= 15000"}
_Nr4b_n29["NR4B_KUM_14000 +<br/>NR4B_14 *<br/>Einheiten(…)"]
_Nr4b_n30["NR4B_KUM_15000 +<br/>NR4B_15 *<br/>Einheiten(…)"]
_Nr4b_n31("Ergebnis: EuroCent")
_Nr4b_n1 --> _Nr4b_n0
_Nr4b_n2 -->|"ja"| _Nr4b_n3
_Nr4b_n2 -->|"nein"| _Nr4b_n4
_Nr4b_n4 -->|"ja"| _Nr4b_n5
_Nr4b_n4 -->|"nein"| _Nr4b_n6
_Nr4b_n6 -->|"ja"| _Nr4b_n7
_Nr4b_n6 -->|"nein"| _Nr4b_n8
_Nr4b_n8 -->|"ja"| _Nr4b_n9
_Nr4b_n8 -->|"nein"| _Nr4b_n10
_Nr4b_n10 -->|"ja"| _Nr4b_n11
_Nr4b_n10 -->|"nein"| _Nr4b_n12
_Nr4b_n12 -->|"ja"| _Nr4b_n13
_Nr4b_n12 -->|"nein"| _Nr4b_n14
_Nr4b_n14 -->|"ja"| _Nr4b_n15
_Nr4b_n14 -->|"nein"| _Nr4b_n16
_Nr4b_n16 -->|"ja"| _Nr4b_n17
_Nr4b_n16 -->|"nein"| _Nr4b_n18
_Nr4b_n18 -->|"ja"| _Nr4b_n19
_Nr4b_n18 -->|"nein"| _Nr4b_n20
_Nr4b_n20 -->|"ja"| _Nr4b_n21
_Nr4b_n20 -->|"nein"| _Nr4b_n22
_Nr4b_n22 -->|"ja"| _Nr4b_n23
_Nr4b_n22 -->|"nein"| _Nr4b_n24
_Nr4b_n24 -->|"ja"| _Nr4b_n25
_Nr4b_n24 -->|"nein"| _Nr4b_n26
_Nr4b_n26 -->|"ja"| _Nr4b_n27
_Nr4b_n26 -->|"nein"| _Nr4b_n28
_Nr4b_n28 -->|"ja"| _Nr4b_n29
_Nr4b_n28 -->|"nein"| _Nr4b_n30
_Nr4b_n0 --> _Nr4b_n2
_Nr4b_n3 --> _Nr4b_n31
_Nr4b_n5 --> _Nr4b_n31
_Nr4b_n7 --> _Nr4b_n31
_Nr4b_n9 --> _Nr4b_n31
_Nr4b_n11 --> _Nr4b_n31
_Nr4b_n13 --> _Nr4b_n31
_Nr4b_n15 --> _Nr4b_n31
_Nr4b_n17 --> _Nr4b_n31
_Nr4b_n19 --> _Nr4b_n31
_Nr4b_n21 --> _Nr4b_n31
_Nr4b_n23 --> _Nr4b_n31
_Nr4b_n25 --> _Nr4b_n31
_Nr4b_n27 --> _Nr4b_n31
_Nr4b_n29 --> _Nr4b_n31
_Nr4b_n30 --> _Nr4b_n31
click _Nr4b_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver Stufentarif Buchst. b (Schadstoffklasse S 1), je 200 kg, Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. b KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Nr4b_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Nr4b_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Nr4b_n2,_Nr4b_n4,_Nr4b_n6,_Nr4b_n8,_Nr4b_n10,_Nr4b_n12,_Nr4b_n14,_Nr4b_n16,_Nr4b_n18,_Nr4b_n20,_Nr4b_n22,_Nr4b_n24,_Nr4b_n26,_Nr4b_n28 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Nr4b_n3,_Nr4b_n5,_Nr4b_n7,_Nr4b_n9,_Nr4b_n11,_Nr4b_n13,_Nr4b_n15,_Nr4b_n17,_Nr4b_n19,_Nr4b_n21,_Nr4b_n23,_Nr4b_n25,_Nr4b_n27,_Nr4b_n29,_Nr4b_n30 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Nr4b_n31 ende
```
## _Nr4c
```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
_Nr4c_n0("_Nr4c<br/><br/>⟨§ 9 Absatz 1 Nummer 4 Buchstabe c KraftStG⟩")
_Nr4c_n1[/"g: Ganzzahl"/]
_Nr4c_n2{"g #lt;= 2000"}
_Nr4c_n3["NR4C_1 *<br/>Einheiten(…)"]
_Nr4c_n4{"g #lt;= 3000"}
_Nr4c_n5["NR4C_KUM_2000 +<br/>NR4C_2 *<br/>Einheiten(…)"]
_Nr4c_n6{"g #lt;= 4000"}
_Nr4c_n7["NR4C_KUM_3000 +<br/>NR4C_3 *<br/>Einheiten(…)"]
_Nr4c_n8{"g #lt;= 5000"}
_Nr4c_n9["NR4C_KUM_4000 +<br/>NR4C_4 *<br/>Einheiten(…)"]
_Nr4c_n10{"g #lt;= 6000"}
_Nr4c_n11["NR4C_KUM_5000 +<br/>NR4C_5 *<br/>Einheiten(…)"]
_Nr4c_n12{"g #lt;= 7000"}
_Nr4c_n13["NR4C_KUM_6000 +<br/>NR4C_6 *<br/>Einheiten(…)"]
_Nr4c_n14{"g #lt;= 8000"}
_Nr4c_n15["NR4C_KUM_7000 +<br/>NR4C_7 *<br/>Einheiten(…)"]
_Nr4c_n16{"g #lt;= 9000"}
_Nr4c_n17["NR4C_KUM_8000 +<br/>NR4C_8 *<br/>Einheiten(…)"]
_Nr4c_n18{"g #lt;= 10000"}
_Nr4c_n19["NR4C_KUM_9000 +<br/>NR4C_9 *<br/>Einheiten(…)"]
_Nr4c_n20{"g #lt;= 11000"}
_Nr4c_n21["NR4C_KUM_10000 +<br/>NR4C_10 *<br/>Einheiten(…)"]
_Nr4c_n22{"g #lt;= 12000"}
_Nr4c_n23["NR4C_KUM_11000 +<br/>NR4C_11 *<br/>Einheiten(…)"]
_Nr4c_n24{"g #lt;= 13000"}
_Nr4c_n25["NR4C_KUM_12000 +<br/>NR4C_12 *<br/>Einheiten(…)"]
_Nr4c_n26{"g #lt;= 14000"}
_Nr4c_n27["NR4C_KUM_13000 +<br/>NR4C_13 *<br/>Einheiten(…)"]
_Nr4c_n28{"g #lt;= 15000"}
_Nr4c_n29["NR4C_KUM_14000 +<br/>NR4C_14 *<br/>Einheiten(…)"]
_Nr4c_n30["NR4C_KUM_15000 +<br/>NR4C_15 *<br/>Einheiten(…)"]
_Nr4c_n31("Ergebnis: EuroCent")
_Nr4c_n1 --> _Nr4c_n0
_Nr4c_n2 -->|"ja"| _Nr4c_n3
_Nr4c_n2 -->|"nein"| _Nr4c_n4
_Nr4c_n4 -->|"ja"| _Nr4c_n5
_Nr4c_n4 -->|"nein"| _Nr4c_n6
_Nr4c_n6 -->|"ja"| _Nr4c_n7
_Nr4c_n6 -->|"nein"| _Nr4c_n8
_Nr4c_n8 -->|"ja"| _Nr4c_n9
_Nr4c_n8 -->|"nein"| _Nr4c_n10
_Nr4c_n10 -->|"ja"| _Nr4c_n11
_Nr4c_n10 -->|"nein"| _Nr4c_n12
_Nr4c_n12 -->|"ja"| _Nr4c_n13
_Nr4c_n12 -->|"nein"| _Nr4c_n14
_Nr4c_n14 -->|"ja"| _Nr4c_n15
_Nr4c_n14 -->|"nein"| _Nr4c_n16
_Nr4c_n16 -->|"ja"| _Nr4c_n17
_Nr4c_n16 -->|"nein"| _Nr4c_n18
_Nr4c_n18 -->|"ja"| _Nr4c_n19
_Nr4c_n18 -->|"nein"| _Nr4c_n20
_Nr4c_n20 -->|"ja"| _Nr4c_n21
_Nr4c_n20 -->|"nein"| _Nr4c_n22
_Nr4c_n22 -->|"ja"| _Nr4c_n23
_Nr4c_n22 -->|"nein"| _Nr4c_n24
_Nr4c_n24 -->|"ja"| _Nr4c_n25
_Nr4c_n24 -->|"nein"| _Nr4c_n26
_Nr4c_n26 -->|"ja"| _Nr4c_n27
_Nr4c_n26 -->|"nein"| _Nr4c_n28
_Nr4c_n28 -->|"ja"| _Nr4c_n29
_Nr4c_n28 -->|"nein"| _Nr4c_n30
_Nr4c_n0 --> _Nr4c_n2
_Nr4c_n3 --> _Nr4c_n31
_Nr4c_n5 --> _Nr4c_n31
_Nr4c_n7 --> _Nr4c_n31
_Nr4c_n9 --> _Nr4c_n31
_Nr4c_n11 --> _Nr4c_n31
_Nr4c_n13 --> _Nr4c_n31
_Nr4c_n15 --> _Nr4c_n31
_Nr4c_n17 --> _Nr4c_n31
_Nr4c_n19 --> _Nr4c_n31
_Nr4c_n21 --> _Nr4c_n31
_Nr4c_n23 --> _Nr4c_n31
_Nr4c_n25 --> _Nr4c_n31
_Nr4c_n27 --> _Nr4c_n31
_Nr4c_n29 --> _Nr4c_n31
_Nr4c_n30 --> _Nr4c_n31
click _Nr4c_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Progressiver Stufentarif Buchst. c (Geräuschklasse G 1), je 200 kg, Spannen 2.000…> 15.000 kg (§ 9 Abs. 1 Nr. 4 Buchst. c KraftStG)." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class _Nr4c_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class _Nr4c_n1 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class _Nr4c_n2,_Nr4c_n4,_Nr4c_n6,_Nr4c_n8,_Nr4c_n10,_Nr4c_n12,_Nr4c_n14,_Nr4c_n16,_Nr4c_n18,_Nr4c_n20,_Nr4c_n22,_Nr4c_n24,_Nr4c_n26,_Nr4c_n28 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class _Nr4c_n3,_Nr4c_n5,_Nr4c_n7,_Nr4c_n9,_Nr4c_n11,_Nr4c_n13,_Nr4c_n15,_Nr4c_n17,_Nr4c_n19,_Nr4c_n21,_Nr4c_n23,_Nr4c_n25,_Nr4c_n27,_Nr4c_n29,_Nr4c_n30 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class _Nr4c_n31 ende
```
## SteuerAnhaenger
```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
SteuerAnhaenger_n0("SteuerAnhaenger<br/><br/>⟨§ 9 Absatz 1 Nummer 5 KraftStG⟩")
SteuerAnhaenger_n1[/"gesamtgewichtKg: Ganzzahl"/]
SteuerAnhaenger_n2["(ANH_JE_200KG *<br/>Einheiten(…)).höchstens(…)"]
SteuerAnhaenger_n3("Ergebnis: EuroCent")
SteuerAnhaenger_n1 --> SteuerAnhaenger_n0
SteuerAnhaenger_n0 --> SteuerAnhaenger_n2
SteuerAnhaenger_n2 --> SteuerAnhaenger_n3
click SteuerAnhaenger_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Kraftfahrzeuganhänger (§ 9 Abs. 1 Nr. 5 KraftStG): je angefangene 200 kg Gesamtgewicht 7,46 €, höchstens 373,24 €." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class SteuerAnhaenger_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class SteuerAnhaenger_n1 eingabe
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class SteuerAnhaenger_n2 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class SteuerAnhaenger_n3 ende
```
# Programmablaufpläne — kraftstg-typen
## Einheiten
```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
Einheiten_n0("Einheiten<br/><br/>⟨§ 9 Absatz 1 KraftStG⟩")
Einheiten_n1[/"wert: Ganzzahl"/]
Einheiten_n2[/"teiler: Ganzzahl"/]
Einheiten_n3{"wert #lt;= 0"}
Einheiten_n4["0"]
Einheiten_n5["((wert /<br/>teiler) als Dezimal).aufrunden()"]
Einheiten_n6("Ergebnis: Ganzzahl")
Einheiten_n1 --> Einheiten_n0
Einheiten_n2 --> Einheiten_n0
Einheiten_n3 -->|"ja"| Einheiten_n4
Einheiten_n3 -->|"nein"| Einheiten_n5
Einheiten_n0 --> Einheiten_n3
Einheiten_n4 --> Einheiten_n6
Einheiten_n5 --> Einheiten_n6
click Einheiten_n0 href "https://www.gesetze-im-internet.de/kraftstg/__9.html" "Anzahl angefangener Einheiten: `wert` geteilt durch `schritt`, aufgerundet (§ 9 KraftStG: „für je … oder einen Teil davon')." _blank
classDef start fill:#eef4fe,stroke:#a9c7f5,stroke-width:1px,color:#3c4043
class Einheiten_n0 start
classDef eingabe fill:#e9f3fb,stroke:#b2d3ec,stroke-width:1px,color:#3c4043
class Einheiten_n1,Einheiten_n2 eingabe
classDef decision fill:#fdf6e0,stroke:#ecd79b,stroke-width:1px,color:#3c4043
class Einheiten_n3 decision
classDef operation fill:#f6f7f8,stroke:#d8dce0,stroke-width:1px,color:#3c4043
class Einheiten_n4,Einheiten_n5 operation
classDef ende fill:#eaf5ee,stroke:#a6d5b8,stroke-width:1px,color:#3c4043
class Einheiten_n6 ende
```