Finanzen: Steuerkarte mit Orientierungshinweis und neuer Anteilsformulierung, Ladetext auf Deutsch

TaxCard zeigt am Ende immer "Orientierungswert, ersetzt keine Steuerberatung."; der
Anteil heisst "<x> % der Grenze von 25.000 €" statt "<x> % der 25.000-€-Grenze".
AdminRoute zeigt "Wird geladen …" statt "Loading...".

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-01 15:21:53 +00:00
1 parent 0b1101d384
commit e9cfae28ee
5 files changed
+36 -6

No files matched your search

+12 -3
View File
@@ -20,6 +20,7 @@ const {
forecastRows,
forecastNotes,
taxView,
TAX_NOTE,
aboView,
productLabel,
aboStatus,
@@ -453,17 +454,25 @@ test('taxView: Kleinunternehmer-Zähler „<Betrag> von 25.000 € (2026)“ und
const v = taxView(steuer())
assert.equal(v.small.known, true)
assert.equal(v.small.counterText, '80,00 € von 25.000 € (2026)')
assert.equal(v.small.shareText, '0,3 % der 25.000-€-Grenze')
assert.equal(v.small.shareText, '0,3 % der Grenze von 25.000 €')
assert.equal(v.small.limitText, 'Über 25.000 € im Jahr 2026: ab 2027 keine Kleinunternehmerregelung.')
assert.equal(
v.small.hardText,
'Grenze 100.000 €: Ab dem Umsatz, der diese Grenze übersteigt, gilt schon im laufenden Jahr die Regelbesteuerung (Umsatzsteuer).'
)
assert.equal(v.small.previousText, null)
assert.equal(taxView(steuer({}, { anteilFolgejahr: 0.704 })).small.shareText, '70,4 % der 25.000-€-Grenze')
assert.equal(taxView(steuer({}, { anteilFolgejahr: 0.704 })).small.shareText, '70,4 % der Grenze von 25.000 €')
assert.equal(taxView(steuer({}, { jahrCents: 0, anteilFolgejahr: 0 })).small.counterText, '0,00 € von 25.000 € (2026)')
})
test('taxView: Orientierungshinweis steht immer dabei, Anteil ohne „-€-Grenze“', () => {
assert.equal(TAX_NOTE, 'Orientierungswert, ersetzt keine Steuerberatung.')
assert.equal(taxView(steuer()).noteText, TAX_NOTE)
assert.equal(taxView(null).noteText, TAX_NOTE)
assert.equal(taxView(steuer({}, { jahrCents: null, anteilFolgejahr: null })).noteText, TAX_NOTE)
for (const t of [taxView(steuer()), taxView(steuer({}, { anteilFolgejahr: 1.2 }))]) assert.doesNotMatch(t.small.shareText, /-€-Grenze/)
})
test('taxView: Stripe nicht erreichbar -> unbekannt statt 0', () => {
const v = taxView(steuer({}, { jahrCents: null, anteilFolgejahr: null }))
assert.equal(v.small.known, false)
@@ -492,7 +501,7 @@ test('taxView: Vorjahr nur wenn gesetzt, über der Grenze mit Hinweis', () => {
test('taxView: Grenzen kommen aus dem Server (Rückfall nur ohne Wert), Jahr fehlt -> Folgejahr', () => {
const custom = taxView(steuer({ jahr: 2030 }, { grenzeFolgejahrCents: 3000000, grenzeHartCents: 12000000, anteilFolgejahr: 0.5, vorjahrCents: 3000001 }))
assert.equal(custom.small.counterText, '80,00 € von 30.000 € (2030)')
assert.equal(custom.small.shareText, '50 % der 30.000-€-Grenze')
assert.equal(custom.small.shareText, '50 % der Grenze von 30.000 €')
assert.equal(custom.small.limitText, 'Über 30.000 € im Jahr 2030: ab 2031 keine Kleinunternehmerregelung.')
assert.match(custom.small.hardText, /^Grenze 120\.000 €: Ab dem Umsatz, der diese Grenze übersteigt, gilt schon im laufenden Jahr die Regelbesteuerung \(Umsatzsteuer\)\.$/)
assert.equal(custom.small.previousText, 'Vorjahr: 30.000,01 € (über 30.000 €: im laufenden Jahr keine Kleinunternehmerregelung)')