Sistema de Gestão da Padaria
Caso Prático • Gerenciamento completo de produtos, vendas e estoque
Desenvolva um sistema completo para gerenciar uma padaria, incluindo controle de produtos, vendas, estoque e relatórios financeiros.
Configuração da Conexão
Configure sua conexão com o Supabase para testar o sistema:
Estrutura do Banco de Dados
categorias
- • id (SERIAL PRIMARY KEY)
- • nome (VARCHAR(100))
- • descricao (TEXT)
- • ativo (BOOLEAN)
- • created_at (TIMESTAMP)
produtos
- • id (SERIAL PRIMARY KEY)
- • nome (VARCHAR(200))
- • categoria_id (INTEGER FK)
- • preco (DECIMAL(10,2))
- • custo (DECIMAL(10,2))
- • estoque_atual (INTEGER)
- • estoque_minimo (INTEGER)
- • ativo (BOOLEAN)
- • created_at (TIMESTAMP)
clientes
- • id (SERIAL PRIMARY KEY)
- • nome (VARCHAR(200))
- • email (VARCHAR(255))
- • telefone (VARCHAR(20))
- • endereco (TEXT)
- • data_nascimento (DATE)
- • created_at (TIMESTAMP)
vendas
- • id (SERIAL PRIMARY KEY)
- • cliente_id (INTEGER FK)
- • data_venda (TIMESTAMP)
- • valor_total (DECIMAL(10,2))
- • desconto (DECIMAL(10,2))
- • forma_pagamento (VARCHAR(50))
- • status (VARCHAR(20))
itens_venda
- • id (SERIAL PRIMARY KEY)
- • venda_id (INTEGER FK)
- • produto_id (INTEGER FK)
- • quantidade (INTEGER)
- • preco_unitario (DECIMAL(10,2))
- • subtotal (DECIMAL(10,2))
funcionarios
- • id (SERIAL PRIMARY KEY)
- • nome (VARCHAR(200))
- • cargo (VARCHAR(100))
- • salario (DECIMAL(10,2))
- • data_admissao (DATE)
- • ativo (BOOLEAN)
- • created_at (TIMESTAMP)
Gerenciar Produtos
Produtos Cadastrados
Nova Venda
Adicionar Item
Total:
R$ 0,00
Relatórios e Consultas
Selecione um relatório acima para visualizar os dados
Consultas SQL Úteis
Consultas Comuns
Produtos em Estoque Baixo
SELECT p.nome, p.estoque_atual, p.estoque_minimo
FROM produtos p
WHERE p.estoque_atual <= p.estoque_minimo
AND p.ativo = true;
Vendas do Dia
SELECT COUNT(*) as total_vendas,
SUM(valor_total) as faturamento
FROM vendas
WHERE DATE(data_venda) = CURRENT_DATE;
Top 5 Produtos Mais Vendidos
SELECT p.nome, SUM(iv.quantidade) as total_vendido
FROM produtos p
JOIN itens_venda iv ON p.id = iv.produto_id
JOIN vendas v ON iv.venda_id = v.id
WHERE v.status = 'finalizada'
GROUP BY p.id, p.nome
ORDER BY total_vendido DESC
LIMIT 5;
Consultas Avançadas
Faturamento por Categoria
SELECT c.nome as categoria,
SUM(iv.subtotal) as faturamento
FROM categorias c
JOIN produtos p ON c.id = p.categoria_id
JOIN itens_venda iv ON p.id = iv.produto_id
JOIN vendas v ON iv.venda_id = v.id
WHERE v.status = 'finalizada'
GROUP BY c.id, c.nome
ORDER BY faturamento DESC;
Margem de Lucro por Produto
SELECT p.nome,
p.preco,
p.custo,
(p.preco - p.custo) as lucro_unitario,
ROUND(((p.preco - p.custo) / p.preco * 100), 2) as margem_percentual
FROM produtos p
WHERE p.ativo = true
ORDER BY margem_percentual DESC;
Clientes Mais Frequentes
SELECT c.nome,
COUNT(v.id) as total_compras,
SUM(v.valor_total) as valor_total_gasto
FROM clientes c
JOIN vendas v ON c.id = v.cliente_id
WHERE v.status = 'finalizada'
GROUP BY c.id, c.nome
ORDER BY total_compras DESC
LIMIT 10;