163 lines
5.9 KiB
Plaintext
163 lines
5.9 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
engineType = "binary"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "sqlite"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model Machine {
|
|
id String @id @default(cuid())
|
|
name String @unique
|
|
type String
|
|
relayChannel Int @unique
|
|
defaultPriceCents Int
|
|
defaultDurationMinutes Int
|
|
outOfService Boolean @default(false)
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
transactions Transaction[]
|
|
}
|
|
|
|
model Employee {
|
|
id String @id @default(cuid())
|
|
name String
|
|
pin String
|
|
isAdmin Boolean @default(false)
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
shifts Shift[]
|
|
transactions Transaction[]
|
|
cashMovements CashMovement[]
|
|
extensions TransactionExtension[]
|
|
}
|
|
|
|
model Customer {
|
|
id String @id @default(cuid())
|
|
firstName String
|
|
lastName String
|
|
phone String @unique
|
|
email String?
|
|
isActive Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
transactions Transaction[]
|
|
|
|
@@index([lastName, firstName])
|
|
}
|
|
|
|
model Transaction {
|
|
id String @id @default(cuid())
|
|
ticketNumber Int @unique
|
|
machineId String
|
|
machine Machine @relation(fields: [machineId], references: [id])
|
|
employeeId String
|
|
employee Employee @relation(fields: [employeeId], references: [id])
|
|
customerId String
|
|
customer Customer @relation(fields: [customerId], references: [id])
|
|
baseAmountCents Int
|
|
discountCents Int @default(0)
|
|
loyaltyDiscountApplied Boolean @default(false)
|
|
addonDetergentQty Int @default(0)
|
|
addonSoftenerQty Int @default(0)
|
|
addonBleachQty Int @default(0)
|
|
addonAmountCents Int @default(0)
|
|
serviceType String @default("autoservicio")
|
|
amountCents Int
|
|
paymentMethod String
|
|
startedAt DateTime
|
|
expectedEndAt DateTime
|
|
status String @default("pending_relay")
|
|
endedAt DateTime?
|
|
relayOnAttemptedAt DateTime?
|
|
relayTurnedOnAt DateTime?
|
|
relayOffAttemptedAt DateTime?
|
|
relayTurnedOffAt DateTime?
|
|
relayFailureReason String?
|
|
voidReason String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
extensions TransactionExtension[]
|
|
|
|
@@index([expectedEndAt])
|
|
@@index([status])
|
|
@@index([customerId])
|
|
}
|
|
|
|
model TransactionExtension {
|
|
id String @id @default(cuid())
|
|
transactionId String
|
|
transaction Transaction @relation(fields: [transactionId], references: [id])
|
|
employeeId String
|
|
employee Employee @relation(fields: [employeeId], references: [id])
|
|
extraMinutes Int
|
|
extraAmountCents Int
|
|
reason String?
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model Shift {
|
|
id String @id @default(cuid())
|
|
employeeId String
|
|
employee Employee @relation(fields: [employeeId], references: [id])
|
|
startTime DateTime @default(now())
|
|
endTime DateTime?
|
|
startingCashCents Int
|
|
expectedCashCents Int?
|
|
actualCashCents Int?
|
|
differenceCashCents Int?
|
|
notes String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
cashMovements CashMovement[]
|
|
|
|
@@index([startTime])
|
|
}
|
|
|
|
model CashMovement {
|
|
id String @id @default(cuid())
|
|
shiftId String
|
|
shift Shift @relation(fields: [shiftId], references: [id])
|
|
employeeId String
|
|
employee Employee @relation(fields: [employeeId], references: [id])
|
|
type String
|
|
amountCents Int
|
|
reason String
|
|
createdAt DateTime @default(now())
|
|
|
|
@@index([createdAt])
|
|
}
|
|
|
|
model AppConfig {
|
|
id Int @id @default(1)
|
|
businessName String @default("La Burbuja")
|
|
timezone String @default("America/Monterrey")
|
|
currency String @default("MXN")
|
|
serialPortPath String @default("COM3")
|
|
serialBaudRate Int @default(9600)
|
|
relayMockMode Boolean @default(true)
|
|
relayConnected Boolean @default(false)
|
|
selfServiceWashPriceCents Int @default(4500)
|
|
selfServiceDryPriceCents Int @default(4500)
|
|
selfServiceCycleMinutes Int @default(50)
|
|
encargoPricePerKgCents Int @default(3300)
|
|
encargoMinimumChargeCents Int @default(12000)
|
|
xlEdredonIndividualCents Int @default(15000)
|
|
xlEdredonMatrimonialCents Int @default(18000)
|
|
xlEdredonKingCents Int @default(20000)
|
|
xlCobijaGruesaCents Int @default(12000)
|
|
xlAlmohadaParCents Int @default(8000)
|
|
dryCleaningMinimumCents Int @default(15000)
|
|
dryCleaningUrgentSurchargePct Int @default(50)
|
|
detergentAddonCents Int @default(500)
|
|
softenerAddonCents Int @default(500)
|
|
bleachAddonCents Int @default(500)
|
|
loyaltyEveryNTransactions Int @default(10)
|
|
loyaltyDiscountPct Int @default(50)
|
|
updatedAt DateTime @updatedAt
|
|
}
|