Finanzen: Steuer-Texte zu den Grenzen genauer, Test fuer gleichen Tag

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-01 15:12:18 +00:00
1 parent 3826f1ab72
commit 18bc3012e0
4 files changed
+82 -16

No files matched your search

+2 -2
View File
@@ -5,8 +5,8 @@ import { forecastNotes, forecastRows } from '../../lib/financeView'
/**
* Block 3: „Vorschau 30 Tage“. Je Posten Datum, Bezeichnung, „sicher“/„erwartet“ (als Text), Betrag mit Vorzeichen
* und der laufende Saldo beider Linien ab dem Kontostand. Ohne Kontostand entfallen die Saldo-Spalten (mit Hinweis).
* Darunter die Annahme des Servers und Hinweise, wenn Stripe oder die Abos fehlen. Schmal (Karte unter ca. 560 px)
* wird jede Zeile zweizeilig: Datum, Posten, Betrag / Sicherheit, Salden.
* Darunter die Annahme des Servers und Hinweise, wenn Stripe oder die Abos fehlen. Schmal (Karte bis 560 px)
* wird jede Zeile dreizeilig: Datum, Sicherheit und Betrag / Posten / beide Salden; ohne Salden sind es zwei Zeilen.
*/
export default function ForecastTable({ vorschau, kontostandCents, stripeDown = false, abosFehler = false }) {
const v = vorschau && typeof vorschau === 'object' ? vorschau : {}
+1
View File
@@ -23,6 +23,7 @@ export default function TaxCard({ steuer }) {
<div className="fin-fact-label">Kleinunternehmer (§ 19 UStG)</div>
<div className={`fin-fact-value${v.small.known ? '' : ' fin-fact-unknown'}`}>{v.small.counterText}</div>
{v.small.shareText && <div className="fin-fact-sub">{v.small.shareText}</div>}
<div className="fin-fact-sub">{v.small.limitText}</div>
<div className="fin-fact-sub">{v.small.hardText}</div>
{v.small.previousText && <div className="fin-fact-sub">{v.small.previousText}</div>}
</div>
+13 -5
View File
@@ -289,7 +289,7 @@ const GEWERBE_ALLOWANCE_CENTS = 2_450_000
/**
* Texte der Steuerkarte aus `steuer`:
* { reserve: { amountText, basisText }, small: { known, counterText, shareText, hardText, previousText },
* { reserve: { amountText, basisText }, small: { known, counterText, shareText, limitText, hardText, previousText },
* gewerbeText, prepayment: { dateText, amountText } | null }.
* Ist der Kleinunternehmer-Zähler null (Stripe nicht erreichbar), steht „unbekannt“ statt einer Zahl.
*/
@@ -308,7 +308,9 @@ export function taxView(steuer) {
}
const previous = isNum(k.vorjahrCents)
? `Vorjahr: ${euro(k.vorjahrCents)}${k.vorjahrCents > limit ? ` (über der Grenze von ${euroWhole(limit)})` : ''}`
? `Vorjahr: ${euro(k.vorjahrCents)}${
k.vorjahrCents > limit ? ` (über ${euroWhole(limit)}: im laufenden Jahr keine Kleinunternehmerregelung)` : ''
}`
: null
const prepay = s.naechsteVorauszahlung
@@ -322,13 +324,19 @@ export function taxView(steuer) {
small: {
known,
counterText: known ? `${euro(k.jahrCents)} von ${euroWhole(limit)}${year !== null ? ` (${year})` : ''}` : 'unbekannt (Stripe nicht erreichbar)',
shareText: known && isNum(k.anteilFolgejahr) ? `${percentDe(k.anteilFolgejahr * 100, 1)} % der Grenze` : null,
hardText: `Grenze ${euroWhole(hard)}: darüber endet die Regelung sofort.`,
shareText:
known && isNum(k.anteilFolgejahr)
? `${percentDe(k.anteilFolgejahr * 100, 1)} % der ${euroWhole(limit).replace(' €', '-€')}-Grenze`
: null,
limitText: `Über ${euroWhole(limit)} im Jahr${year !== null ? ` ${year}` : ''}: ab ${
year !== null ? year + 1 : 'dem Folgejahr'
} keine Kleinunternehmerregelung.`,
hardText: `Grenze ${euroWhole(hard)}: Ab dem Umsatz, der diese Grenze übersteigt, gilt schon im laufenden Jahr die Regelbesteuerung (Umsatzsteuer).`,
previousText: previous,
},
gewerbeText:
s.gewerbesteuerHinweis === true
? `Der Gewinn liegt über dem Gewerbesteuer-Freibetrag für Personengesellschaften (${euroWhole(GEWERBE_ALLOWANCE_CENTS)}). Es kann Gewerbesteuer anfallen.`
? `Der Gewinn${year !== null ? ` ${year}` : ''} liegt über dem Gewerbesteuer-Freibetrag von ${euroWhole(GEWERBE_ALLOWANCE_CENTS)} (natürliche Personen und Personengesellschaften, § 11 GewStG). Auf den übersteigenden Gewerbeertrag kann Gewerbesteuer anfallen.`
: null,
prepayment,
}