manicanldes-backend/prisma/procurement.prisma

78 lines
2.9 KiB
Plaintext

enum MaterialKind {
WAX
FRAGRANCE
WICK
DYE
VESSEL
PACKAGING
LABEL
OTHER
}
enum MaterialUnit {
GRAM
KILOGRAM
MILLILITRE
LITRE
PIECE
METRE
}
model Supplier {
id String @id @default(uuid()) @db.Uuid
organizationId String @map("organization_id") @db.Uuid
name String @db.VarChar(160)
code String @db.VarChar(32)
contactName String @map("contact_name") @db.VarChar(160)
email String @db.VarChar(254)
phone String @db.VarChar(24)
active Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Restrict)
materials SupplierMaterial[]
@@unique([organizationId, code])
@@unique([id, organizationId])
@@index([organizationId, active, name, id])
@@map("suppliers")
}
model Material {
id String @id @default(uuid()) @db.Uuid
organizationId String @map("organization_id") @db.Uuid
name String @db.VarChar(160)
code String @db.VarChar(32)
kind MaterialKind
unit MaterialUnit
active Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Restrict)
suppliers SupplierMaterial[]
@@unique([organizationId, code])
@@unique([id, organizationId])
@@index([organizationId, active, kind, name, id])
@@map("materials")
}
model SupplierMaterial {
supplierId String @map("supplier_id") @db.Uuid
materialId String @map("material_id") @db.Uuid
organizationId String @map("organization_id") @db.Uuid
supplierSku String @map("supplier_sku") @db.VarChar(64)
leadTimeDays Int @map("lead_time_days")
minOrderQuantity Decimal @map("min_order_quantity") @db.Decimal(12, 3)
unitPrice Decimal @map("unit_price") @db.Decimal(12, 2)
currency String @db.Char(3)
active Boolean @default(true)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
supplier Supplier @relation(fields: [supplierId, organizationId], references: [id, organizationId], onDelete: Restrict)
material Material @relation(fields: [materialId, organizationId], references: [id, organizationId], onDelete: Restrict)
@@id([supplierId, materialId])
@@index([materialId, organizationId, active])
@@map("supplier_materials")
}