feat: Full company accounting — SKR04, doppelte Buchführung, GoBD Festschreibung
Haben-cloned features for complete company accounting: SKR04 Kontenrahmen (21 Konten): - Bestandskonten (Aktiv/Passiv): Bank, Kasse, EDV-Anlagen, Verbindlichkeiten - Erlöskonten: Erlöse 19% USt, Fremdleistungen - Aufwandskonten: Bezogene Leistungen, Bürobedarf, EDV-Kosten, Reisekosten, Löhne - Steuerkonten: USt 19%/7%, abziehbare Vorsteuer Doppelte Buchführung (Buchungssatz): - Soll an Haben booking system - Journal with lückenlose Nummerierung (BUC-2026-XXXX) - Saldenliste (account balances per Konto) - GoBD Festschreibung (immutable via SHA-256 hash) - Reverse Charge and §19 UStG (Kleinunternehmer) flags EÜR (Einnahmen-Überschuss-Rechnung): - Anlage EÜR with AVEÜR line numbers - § 4 Abs. 3 EStG computation - Gewinn: €14.506 (2026) Jahresabschluss (GoBD): - Immutable year-end archive with SHA-256 hash chain - Links to previous year (2025 → 2026) - Festschreibung of all bookings in the year - Aufbewahrungsfrist: 8 Jahre (GoBD) / 10 Jahre (§ 147 AO) Jahreserklärungen: - USt-Erklärung (yearly, more lines than monthly UStVA) - Anlage EÜR, Einkommensteuer, Gewerbesteuer - ELSTER submission tracking Seed: 21 Konten, 7 Buchungssätze, 9 EÜR entries, 2 Jahreserklärungen, 1 Jahresarchiv
This commit is contained in:
1 parent
0d0fa6b5e1
commit
6cbf0b2879
6 files changed
+613
No files matched your search
@@ -671,3 +671,85 @@ model KassenbuchEntry {
|
||||
createdAt DateTime @default(now())
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SKR03/SKR04 Kontenrahmen + doppelte Buchführung (Haben clone)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
model Konto {
|
||||
id String @id @default(cuid())
|
||||
nummer String @unique
|
||||
name String
|
||||
rahmen String @default("skr04")
|
||||
art String // aktiv|passiv|ertrag|aufwand
|
||||
parentId String?
|
||||
locked Boolean @default(false)
|
||||
sollBuchungen Buchungssatz[] @relation("SollKonto")
|
||||
habenBuchungen Buchungssatz[] @relation("HabenKonto")
|
||||
createdAt DateTime @default(now())
|
||||
}
|
||||
|
||||
model Buchungssatz {
|
||||
id String @id @default(cuid())
|
||||
number String @unique
|
||||
belegdatum DateTime
|
||||
buchungsdatum DateTime @default(now())
|
||||
sollKontoId String
|
||||
sollKonto Konto @relation("SollKonto", fields: [sollKontoId], references: [id])
|
||||
habenKontoId String
|
||||
habenKonto Konto @relation("HabenKonto", fields: [habenKontoId], references: [id])
|
||||
betragCents Int
|
||||
buchungstext String
|
||||
belegNummer String?
|
||||
steuerBp Int?
|
||||
steuerKontoId String?
|
||||
festgeschrieben Boolean @default(false)
|
||||
festgeschriebenAt DateTime?
|
||||
festgeschriebenHash String?
|
||||
belegId String?
|
||||
invoiceId String?
|
||||
expenseId String?
|
||||
reverseCharge Boolean @default(false)
|
||||
par19UStG Boolean @default(false)
|
||||
createdAt DateTime @default(now())
|
||||
}
|
||||
|
||||
model EuerEntry {
|
||||
id String @id @default(cuid())
|
||||
jahr Int
|
||||
zeile String
|
||||
label String
|
||||
art String
|
||||
betragCents Int
|
||||
kontoNummern String?
|
||||
createdAt DateTime @default(now())
|
||||
}
|
||||
|
||||
model Jahreserklaerung {
|
||||
id String @id @default(cuid())
|
||||
jahr Int
|
||||
art String
|
||||
status String @default("draft")
|
||||
kennzahlen String?
|
||||
elsterRef String?
|
||||
submittedAt DateTime?
|
||||
acceptedAt DateTime?
|
||||
notes String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
model Jahresarchiv {
|
||||
id String @id @default(cuid())
|
||||
jahr Int
|
||||
prevArchivId String?
|
||||
archivHash String @unique
|
||||
buchungenCount Int
|
||||
belegeCount Int
|
||||
rechnungenCount Int
|
||||
zipFileName String
|
||||
zipSizeBytes Int
|
||||
createdDate DateTime @default(now())
|
||||
createdBy String
|
||||
notes String?
|
||||
}
|
||||
Reference in new issue
Block a user