Dateien nach "prisma" hochladen
This commit is contained in:
parent
1dc1eade8f
commit
5261ef3710
@ -179,6 +179,8 @@ model User {
|
||||
invitationsSent Invitation[] @relation("InvitationsSent")
|
||||
storageSlots StorageSlot[]
|
||||
documentsUploaded Document[]
|
||||
utilityStatementsCreated UtilityStatement[]
|
||||
utilityStatementShares UtilityStatementShare[]
|
||||
|
||||
@@map("users")
|
||||
}
|
||||
@ -205,6 +207,7 @@ model Room {
|
||||
inventoryItems Inventory[]
|
||||
meterReadings MeterReading[]
|
||||
invitations Invitation[]
|
||||
utilityStatementShares UtilityStatementShare[]
|
||||
|
||||
@@map("rooms")
|
||||
}
|
||||
@ -309,8 +312,10 @@ model Ticket {
|
||||
id String @id @default(uuid())
|
||||
creatorId String @map("creator_id")
|
||||
creator User @relation("TicketCreator", fields: [creatorId], references: [id])
|
||||
assigneeId String? @map("assignee_id") // Handwerker
|
||||
assigneeId String? @map("assignee_id") // Handwerker (interner User-Account, optional)
|
||||
assignee User? @relation("TicketAssignee", fields: [assigneeId], references: [id])
|
||||
craftsmanId String? @map("craftsman_id") // Handwerker-Kontakt (externer Betrieb ohne Login)
|
||||
craftsman Craftsman? @relation(fields: [craftsmanId], references: [id])
|
||||
roomId String? @map("room_id") // NULL = Gemeinschaftsbereich
|
||||
room Room? @relation(fields: [roomId], references: [id])
|
||||
|
||||
@ -598,3 +603,83 @@ model Document {
|
||||
|
||||
@@map("documents")
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// NEBENKOSTENABRECHNUNG (Utility-Statements)
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Eine Nebenkostenabrechnung für einen Zeitraum (z. B. ein Jahr). Der
|
||||
// Vermieter trägt den Gesamtbetrag ein; die App verteilt ihn automatisch
|
||||
// proportional zur Zimmergröße (sizeSqm) auf alle aktuell aktiven Mieter —
|
||||
// dieselbe faire Grundlage wie bei der Nettokaltmiete.
|
||||
model UtilityStatement {
|
||||
id String @id @default(uuid())
|
||||
periodStart DateTime @map("period_start")
|
||||
periodEnd DateTime @map("period_end")
|
||||
totalAmount Decimal @map("total_amount") @db.Decimal(10, 2)
|
||||
description String?
|
||||
createdById String @map("created_by_id")
|
||||
createdBy User @relation(fields: [createdById], references: [id])
|
||||
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
|
||||
shares UtilityStatementShare[]
|
||||
|
||||
@@map("utility_statements")
|
||||
}
|
||||
|
||||
// Anteil eines einzelnen Mieters an einer Nebenkostenabrechnung. Für den
|
||||
// betroffenen Mieter selbst sichtbar, für alle anderen Mieter NICHT (private
|
||||
// Abrechnungsdaten) — nur der Vermieter/Admin sieht alle Anteile.
|
||||
model UtilityStatementShare {
|
||||
id String @id @default(uuid())
|
||||
statementId String @map("statement_id")
|
||||
statement UtilityStatement @relation(fields: [statementId], references: [id])
|
||||
userId String @map("user_id")
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
roomId String? @map("room_id")
|
||||
room Room? @relation(fields: [roomId], references: [id])
|
||||
|
||||
shareAmount Decimal @map("share_amount") @db.Decimal(8, 2)
|
||||
settlementStatus SettlementStatus @default(OPEN) @map("settlement_status")
|
||||
settledAt DateTime? @map("settled_at")
|
||||
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
|
||||
@@index([userId])
|
||||
@@index([statementId])
|
||||
@@map("utility_statement_shares")
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// HANDWERKER-KONTAKTE (Anbindung für Schadensmeldungen)
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
enum CraftsmanTrade {
|
||||
SANITAER
|
||||
ELEKTRIK
|
||||
HEIZUNG
|
||||
SCHREINEREI
|
||||
MALER
|
||||
SCHLUESSELDIENST
|
||||
SONSTIGES
|
||||
}
|
||||
|
||||
// Kontaktkarte eines Handwerksbetriebs (kein eigener Login nötig). Kann
|
||||
// Tickets zugewiesen werden, damit direkt klar ist, wer sich kümmert und wie
|
||||
// er erreichbar ist.
|
||||
model Craftsman {
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
trade CraftsmanTrade @default(SONSTIGES)
|
||||
phone String?
|
||||
email String?
|
||||
notes String?
|
||||
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
tickets Ticket[]
|
||||
|
||||
@@map("craftsmen")
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user