datasource db { provider = "sqlite" url = "file:./dev.db" } generator client { provider = "prisma-client-js" } model Usuario { id String @id @default(uuid()) nome String email String @unique senha String role String @default("GARCOM") // ADMIN, CAIXA, GARCOM, COZINHA, BARMAN ativo Boolean @default(true) criadoEm DateTime @default(now()) comandas Comanda[] itensPedido ItemPedido[] } model Categoria { id String @id @default(uuid()) nome String produtos Produto[] } model Produto { id String @id @default(uuid()) nome String descricao String? fotoUrl String? preco Float custo Float? estoqueAtual Int @default(0) estoqueMinimo Int @default(0) itemCozinha Boolean ativo Boolean @default(true) categoriaId String categoria Categoria @relation(fields: [categoriaId], references: [id]) itensPedido ItemPedido[] } model Comanda { id String @id @default(uuid()) identificador String nomeCliente String? status String @default("ABERTA") // ABERTA, FECHADA, PAGA, CANCELADA total Float @default(0.0) valorPago Float @default(0.0) desconto Float @default(0.0) acrescimo Float @default(0.0) taxaServico Boolean @default(false) formaPagamento String? // DINHEIRO, CARTAO_CREDITO, CARTAO_DEBITO, PIX motivoCancelamento String? criadoEm DateTime @default(now()) fechadoEm DateTime? usuarioId String? usuario Usuario? @relation(fields: [usuarioId], references: [id]) itens ItemPedido[] pagamentos Pagamento[] } model ItemPedido { id String @id @default(uuid()) quantidade Int precoUnitario Float observacao String? status String @default("PENDENTE") // PENDENTE, PREPARANDO, PRONTO, ENTREGUE produtoId String produto Produto @relation(fields: [produtoId], references: [id]) comandaId String comanda Comanda @relation(fields: [comandaId], references: [id]) usuarioId String? usuario Usuario? @relation(fields: [usuarioId], references: [id]) criadoEm DateTime @default(now()) } model Pagamento { id String @id @default(uuid()) comandaId String comanda Comanda @relation(fields: [comandaId], references: [id]) valor Float formaPagamento String // DINHEIRO, CARTAO_CREDITO, CARTAO_DEBITO, PIX observacao String? estornado Boolean @default(false) criadoEm DateTime @default(now()) }