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;
Voltar aos Casos Práticos Próximo: Sistema da Lanchonete