generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) name String phone String @unique role String dealerId String? dealer Dealer? @relation("DealerStaff", fields: [dealerId], references: [id]) currentOtp String? otpExpiresAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt assignments DealerAssignment[] @relation("SalesRepAssignments") stageLogs StageLog[] transfers StockTransfer[] events Event[] servicePoints ServicePoint[] } model Dealer { id String @id @default(cuid()) name String code String @unique district String? address String? phone String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt staff User[] @relation("DealerStaff") assignments DealerAssignment[] stocks Stock[] transfersFrom StockTransfer[] @relation("TransferFrom") transfersTo StockTransfer[] @relation("TransferTo") events Event[] } model DealerAssignment { salesRepId String dealerId String createdAt DateTime @default(now()) salesRep User @relation("SalesRepAssignments", fields: [salesRepId], references: [id], onDelete: Cascade) dealer Dealer @relation(fields: [dealerId], references: [id], onDelete: Cascade) @@id([salesRepId, dealerId]) } model Stock { id String @id @default(cuid()) chassisNumber String @unique engineNumber String @unique model String color String currentDealerId String currentDealer Dealer @relation(fields: [currentDealerId], references: [id]) dateReceived DateTime @default(now()) currentStage String @default("received") paymentType String? leaseProviderType String? financeCompanyName String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt stageLogs StageLog[] transfers StockTransfer[] } model StageLog { id String @id @default(cuid()) stockId String stock Stock @relation(fields: [stockId], references: [id], onDelete: Cascade) stage String loggedAt DateTime @default(now()) actorId String? actor User? @relation(fields: [actorId], references: [id]) } model StockTransfer { id String @id @default(cuid()) stockId String stock Stock @relation(fields: [stockId], references: [id], onDelete: Cascade) fromDealerId String fromDealer Dealer @relation("TransferFrom", fields: [fromDealerId], references: [id]) toDealerId String toDealer Dealer @relation("TransferTo", fields: [toDealerId], references: [id]) actorId String actor User @relation(fields: [actorId], references: [id]) transferredAt DateTime @default(now()) } model Event { id String @id @default(cuid()) dealerId String dealer Dealer @relation(fields: [dealerId], references: [id]) planType String month Int? year Int? title String description String expense Float imageUrls String @default("[]") createdById String createdBy User @relation(fields: [createdById], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model ServicePoint { id String @id @default(cuid()) name String district String address String? phone String? notes String? createdById String createdBy User @relation(fields: [createdById], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }