feat: Phase 1 – Konten, Kategorien, Transaktionen, EZB-Währungsumrechnung
Backend: - Modelle + Migration 0002: accounts, account_identifiers, category_groups, categories, transactions, exchange_rates (alle owner-gescoped). - EZB-Kursdienst (90-Tage/Historie) + Backfill-Skript; Umrechnung EUR<->CHF zum Buchungsdatum mit lokalem Cache und manueller Übersteuerung; EUR-Pivot (amount_eur_cents) eingefroren. - Kontostände + Netto-Vermögen (Umrechnung in Hauptwährung). - Router: accounts (inkl. IBAN-Identifikatoren), categories (Gruppen+Kategorien), transactions (Ausgabe/Einnahme/Transfer, cross-currency), rates. - Gruppierte Standard-Kategorien je Nutzer beim Anlegen. - pytest-Suite: Währung, Salden, Cross-Currency-Transfer, Nutzer-Isolation. Frontend: - Seiten Konten, Kategorien, Buchungen; Icon-Chip, Geldbetrag mit Umrechnung, Icon-/Farbwähler, Modal; erweitertes SVG-Icon-Set (Konto-/Kategorie-Icons). - Währungs-/Datumsformatierung (EUR de-DE, CHF de-CH), i18n DE/EN erweitert. - Live-Umrechnungs-Vorschau im Transfer-Formular. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -81,5 +81,75 @@
|
||||
"server": {
|
||||
"unreachable": "Server nicht erreichbar.",
|
||||
"sessionKept": "Deine Anmeldung ist noch gültig – sobald der Server wieder antwortet, geht es weiter."
|
||||
},
|
||||
"accounts": {
|
||||
"title": "Konten",
|
||||
"new": "Neues Konto",
|
||||
"edit": "Konto bearbeiten",
|
||||
"name": "Name",
|
||||
"type": "Typ",
|
||||
"currency": "Währung",
|
||||
"icon": "Symbol",
|
||||
"color": "Farbe",
|
||||
"openingBalance": "Anfangssaldo",
|
||||
"openingDate": "Stichtag",
|
||||
"identifiers": "Erkennungs-Nummern (IBAN etc.)",
|
||||
"addIdentifier": "Nummer hinzufügen",
|
||||
"identShort": "Nr.",
|
||||
"total": "Gesamt",
|
||||
"empty": "Noch keine Konten. Lege dein erstes Konto an.",
|
||||
"deleteConfirm": "Dieses Konto und alle zugehörigen Buchungen löschen?"
|
||||
},
|
||||
"accountTypes": {
|
||||
"girokonto": "Girokonto",
|
||||
"sparkonto": "Sparkonto",
|
||||
"bargeld": "Bargeld",
|
||||
"kreditkarte": "Kreditkarte",
|
||||
"depot": "Depot / Investment",
|
||||
"sonstiges": "Sonstiges"
|
||||
},
|
||||
"identifierKinds": {
|
||||
"iban": "IBAN",
|
||||
"account_no": "Kontonummer",
|
||||
"card_no": "Kartennummer"
|
||||
},
|
||||
"categories": {
|
||||
"title": "Kategorien",
|
||||
"newGroup": "Neue Gruppe",
|
||||
"editGroup": "Gruppe bearbeiten",
|
||||
"newCategory": "Neue Kategorie",
|
||||
"editCategory": "Kategorie bearbeiten",
|
||||
"name": "Name",
|
||||
"kind": "Art",
|
||||
"income": "Einnahme",
|
||||
"expense": "Ausgabe",
|
||||
"emptyGroup": "Keine Kategorien in dieser Gruppe.",
|
||||
"deleteConfirm": "Diese Kategorie löschen?",
|
||||
"deleteGroupConfirm": "Diese Gruppe samt aller Kategorien löschen?"
|
||||
},
|
||||
"transactions": {
|
||||
"title": "Buchungen",
|
||||
"new": "Neue Buchung",
|
||||
"edit": "Buchung bearbeiten",
|
||||
"expense": "Ausgabe",
|
||||
"income": "Einnahme",
|
||||
"transfer": "Transfer",
|
||||
"date": "Datum",
|
||||
"account": "Konto",
|
||||
"fromAccount": "Von Konto",
|
||||
"toAccount": "Auf Konto",
|
||||
"category": "Kategorie",
|
||||
"amount": "Betrag",
|
||||
"toAmount": "Gutschrift",
|
||||
"payee": "Empfänger",
|
||||
"description": "Verwendungszweck",
|
||||
"uncategorized": "Ohne Kategorie",
|
||||
"empty": "Noch keine Buchungen.",
|
||||
"needAccount": "Lege zuerst ein Konto an, um Buchungen zu erfassen.",
|
||||
"allAccounts": "Alle Konten",
|
||||
"allTypes": "Alle Typen",
|
||||
"deleteConfirm": "Diese Buchung löschen?",
|
||||
"amountRequired": "Bitte einen Betrag eingeben.",
|
||||
"accountRequired": "Bitte ein Konto wählen."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user