import { useState } from 'react'; import { api, useDaten } from '../lib/api'; import { useJahr } from '../lib/jahr'; import { centAus, datum, eur } from '../lib/format'; interface AnlageMitAfa { id: number; bezeichnung: string; anschaffungsdatum: string; akosten_netto: number; akosten_brutto: number; nutzungsdauer: number; afa_methode: string; abgang_datum: string | null; notiz: string; afa: { bemessung: number; buchwertAnfang: number; afa: number; buchwertEnde: number; restbuchwertAbgang: number; hinweis: string; }; } const METHODEN: Record = { linear: 'linear (§7 Abs. 1 EStG)', gwg_sofort: 'GWG-Sofortabschreibung', sammelposten: 'Sammelposten über 5 Jahre', keine: 'nicht abnutzbar', }; export default function Anlagen() { const [jahr, setJahr, jahre] = useJahr(); const { daten, neuLaden } = useDaten(`/api/anlagen?jahr=${jahr}`); const [form, setForm] = useState({ bezeichnung: '', anschaffungsdatum: new Date().toISOString().slice(0, 10), nettoFeld: '', bruttoFeld: '', nutzungsdauer: '3', afa_methode: '', }); const [meldung, setMeldung] = useState(null); async function anlegen(e: React.FormEvent) { e.preventDefault(); try { const netto = centAus(form.nettoFeld); await api.post('/api/anlagen', { bezeichnung: form.bezeichnung, anschaffungsdatum: form.anschaffungsdatum, akosten_netto: netto, akosten_brutto: form.bruttoFeld ? centAus(form.bruttoFeld) : netto, nutzungsdauer: Number(form.nutzungsdauer) || 3, afa_methode: form.afa_methode || undefined, }); setForm({ ...form, bezeichnung: '', nettoFeld: '', bruttoFeld: '' }); setMeldung('Anlagegut angelegt.'); neuLaden(); } catch (err) { setMeldung((err as Error).message); } } async function abgangEintragen(a: AnlageMitAfa) { const d = prompt(`Abgangsdatum für "${a.bezeichnung}" (JJJJ-MM-TT):`, `${jahr}-12-31`); if (!d) return; await api.put(`/api/anlagen/${a.id}`, { abgang_datum: d }); neuLaden(); } const summeAfa = (daten ?? []).reduce((s, a) => s + a.afa.afa, 0); const summeBuchwert = (daten ?? []).reduce((s, a) => s + a.afa.buchwertEnde, 0); return ( <>

Anlagevermögen

Wirtschaftsgüter mit mehrjähriger Nutzung sind nicht sofort abziehbar, sondern über die Nutzungsdauer abzuschreiben. Die AfA fließt automatisch in EÜR und BWA ein.

Abschreibung {jahr}
{eur(summeAfa)}
Buchwert 31.12.{jahr}
{eur(summeBuchwert)}

Anlagegut erfassen

setForm({ ...form, bezeichnung: e.target.value })} />
setForm({ ...form, anschaffungsdatum: e.target.value })} />
setForm({ ...form, nettoFeld: e.target.value })} />
setForm({ ...form, bruttoFeld: e.target.value })} /> für Kleinunternehmer maßgeblich
setForm({ ...form, nutzungsdauer: e.target.value })} />
{meldung &&
{meldung}
}
{(daten ?? []).map((a) => ( ))} {daten?.length === 0 && ( )}
WirtschaftsgutAnschaffungMethode BemessungBuchwert 1.1. AfA {jahr}Buchwert 31.12.
{a.bezeichnung} {a.abgang_datum &&
Abgang {datum(a.abgang_datum)}
}
{datum(a.anschaffungsdatum)} {METHODEN[a.afa_methode] ?? a.afa_methode} {eur(a.afa.bemessung)} {eur(a.afa.buchwertAnfang)} {eur(a.afa.afa)} {eur(a.afa.buchwertEnde)} {!a.abgang_datum && ( )}
Noch kein Anlagevermögen erfasst.
); }