fix: negative Kontostände werden nicht mehr als positiv angezeigt
Die Money-Komponente gab den Betrag immer durch Math.abs() aus; das Vorzeichen kam nur über das optionale sign-Prop. Kontostände (Konten-Seite und Dashboard- Karte) übergeben keines – ein überzogenes Konto oder eine Kreditkartenschuld sah dadurch positiv aus, während die Gesamtsumme korrekt negativ rechnete. Genau dieser Widerspruch: alle Konten scheinbar im Plus, Gesamt im Minus. Ohne sign steht der Wert für sich selbst und wird jetzt mit echtem Vorzeichen (und rot) ausgegeben; mit sign bleibt es wie bisher, weil dort die Richtung aus der Buchungsart kommt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,14 @@
|
||||
import { formatMoney } from "../format";
|
||||
|
||||
// Zeigt einen Betrag in Kontowährung und – falls abweichend – zusätzlich den in
|
||||
// die Hauptwährung umgerechneten Wert. `sign` färbt +/− (grün/rot).
|
||||
// die Hauptwährung umgerechneten Wert.
|
||||
//
|
||||
// `sign` ist für Listen gedacht, in denen die Richtung aus der Buchungsart kommt
|
||||
// (Ausgabe/Einnahme): dort wird der Betrag ohne Vorzeichen geführt und hier mit
|
||||
// +/− und Farbe versehen. OHNE `sign` steht der Wert für sich selbst – etwa ein
|
||||
// Kontostand – und wird mit seinem echten Vorzeichen ausgegeben. Früher lief er
|
||||
// auch dann durch Math.abs(), wodurch ein überzogenes Konto oder eine
|
||||
// Kreditkartenschuld fälschlich positiv aussah.
|
||||
export default function Money({
|
||||
cents,
|
||||
currency = "EUR",
|
||||
@@ -10,7 +17,8 @@ export default function Money({
|
||||
sign = null, // "pos" | "neg" | null
|
||||
showConverted = true,
|
||||
}) {
|
||||
const cls = sign ? `amount ${sign}` : "amount";
|
||||
const negativ = !sign && Number(cents) < 0;
|
||||
const cls = sign ? `amount ${sign}` : negativ ? "amount neg" : "amount";
|
||||
const prefix = sign === "pos" ? "+" : sign === "neg" ? "−" : "";
|
||||
const showBase =
|
||||
showConverted && baseCents != null && currency !== baseCurrency;
|
||||
@@ -18,10 +26,12 @@ export default function Money({
|
||||
<span className="money">
|
||||
<span className={cls}>
|
||||
{prefix}
|
||||
{formatMoney(Math.abs(cents), currency)}
|
||||
{formatMoney(sign ? Math.abs(cents) : cents, currency)}
|
||||
</span>
|
||||
{showBase && (
|
||||
<span className="amount-converted">≈ {formatMoney(Math.abs(baseCents), baseCurrency)}</span>
|
||||
<span className="amount-converted">
|
||||
≈ {formatMoney(sign ? Math.abs(baseCents) : baseCents, baseCurrency)}
|
||||
</span>
|
||||
)}
|
||||
</span>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user