@@ -13,15 +13,17 @@ model Venue {
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
devices Device[]
|
||||
clientUsers ClientUser[]
|
||||
tabOwnerships TabOwnership[]
|
||||
remoteCommands RemoteCommand[]
|
||||
auditLogs AuditLog[]
|
||||
regCodes RegistrationCode[]
|
||||
plannedTabs PlannedTab[]
|
||||
tabReminders TabReminder[]
|
||||
tabEvents TabEvent[]
|
||||
devices Device[]
|
||||
clientUsers ClientUser[]
|
||||
tabOwnerships TabOwnership[]
|
||||
remoteCommands RemoteCommand[]
|
||||
auditLogs AuditLog[]
|
||||
regCodes RegistrationCode[]
|
||||
plannedTabs PlannedTab[]
|
||||
tabReminders TabReminder[]
|
||||
tabEvents TabEvent[]
|
||||
products Product[]
|
||||
stockAdjustments StockAdjustment[]
|
||||
}
|
||||
|
||||
model Device {
|
||||
@@ -214,3 +216,50 @@ model TabEvent {
|
||||
@@index([venueId, occurredAt])
|
||||
@@index([venueId, type, occurredAt])
|
||||
}
|
||||
|
||||
// The terminal's product catalog with its stock, as last reported by the terminal. The terminal owns the
|
||||
// stock: it counts sales down offline, so the dashboard only changes it through StockAdjustments.
|
||||
model Product {
|
||||
venueId String
|
||||
// Generated by the terminal
|
||||
productId String
|
||||
name String
|
||||
category String?
|
||||
priceInCents Int
|
||||
// Null when the terminal doesn't track stock for this product. Can be negative: a sale is never blocked.
|
||||
stock Int?
|
||||
// Dashboard-only setting, never sent to or overwritten by the terminal
|
||||
lowStockThreshold Int?
|
||||
reportedAt DateTime
|
||||
|
||||
venue Venue @relation(fields: [venueId], references: [id])
|
||||
|
||||
@@id([venueId, productId])
|
||||
}
|
||||
|
||||
// A stock change requested from the dashboard. It is sent to the terminal on every sync until the terminal
|
||||
// reports it applied or rejected.
|
||||
model StockAdjustment {
|
||||
id String @id @default(uuid())
|
||||
venueId String
|
||||
productId String
|
||||
productName String
|
||||
// add (signed: a delivery, or breakage when negative) | set (a stock count)
|
||||
type String
|
||||
quantity Int
|
||||
note String?
|
||||
requestedBy String
|
||||
requestedById String
|
||||
// pending | applied | rejected | cancelled
|
||||
status String @default("pending")
|
||||
// The terminal's stock right after applying it
|
||||
stockAfter Int?
|
||||
result String?
|
||||
createdAt DateTime @default(now())
|
||||
processedAt DateTime?
|
||||
|
||||
venue Venue @relation(fields: [venueId], references: [id])
|
||||
|
||||
@@index([venueId, status, createdAt])
|
||||
@@index([venueId, productId, createdAt])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user