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") }