Este documento define as regras de negócio para um sistema básico (MVP) de cadastro de produtos com controle de estoque, vendas e clientes. O sistema permitirá gerenciar produtos, clientes, estoque e vendas, com a restrição de que cada usuário só pode ver o que ele mesmo cadastrou.
erDiagram
USUARIO ||--o{ PRODUTO : cadastra
USUARIO ||--o{ CLIENTE : cadastra
USUARIO ||--o{ VENDA : realiza
PRODUTO ||--o{ ITEM_VENDA : contem
CLIENTE ||--|| VENDA : possui
VENDA ||--o{ ITEM_VENDA : contem
USUARIO {
int id PK
string nome
string email
string senha
datetime data_cadastro
boolean ativo
}
PRODUTO {
int id PK
int usuario_id FK
string nome
string descricao
decimal preco
int quantidade_estoque
string codigo
datetime data_cadastro
datetime data_atualizacao
boolean ativo
}
CLIENTE {
int id PK
int usuario_id FK
string nome
string email
string telefone
string documento
string endereco
datetime data_cadastro
datetime data_atualizacao
boolean ativo
}
VENDA {
int id PK
int usuario_id FK
int cliente_id FK
decimal valor_total
datetime data_venda
string status
string forma_pagamento
decimal desconto
string observacao
}
ITEM_VENDA {
int id PK
int venda_id FK
int produto_id FK
int quantidade
decimal preco_unitario
decimal subtotal
}
- Cada usuário deve ter credenciais únicas para acessar o sistema.
- Um usuário só pode visualizar e gerenciar os registros que ele mesmo cadastrou.
- O sistema deve registrar qual usuário cadastrou cada registro no sistema.
- Todo produto deve ter um nome, código único, preço e quantidade em estoque.
- O estoque do produto deve ser atualizado automaticamente após cada venda.
- Não deve ser permitido vender uma quantidade maior que a disponível em estoque.
- Um produto pode ser marcado como inativo, mas não pode ser excluído se estiver vinculado a alguma venda.
- Deve ser possível rastrear o histórico de atualizações de estoque.
- Todo cliente deve ter nome e pelo menos um contato (email ou telefone).
- O documento do cliente (CPF/CNPJ) deve ser único no sistema para cada usuário.
- Um cliente pode ser marcado como inativo, mas não excluído se possuir vendas vinculadas.
- Uma venda deve estar sempre associada a um cliente e a um usuário que a realizou.
- Uma venda deve conter pelo menos um item (produto).
- O valor total da venda deve ser calculado automaticamente com base nos itens adicionados.
- Ao finalizar uma venda, o estoque dos produtos deve ser atualizado automaticamente.
- Uma venda pode ter os seguintes status: "Em andamento", "Finalizada", "Cancelada".
- Uma venda finalizada não pode ser alterada, apenas cancelada.
- Ao cancelar uma venda, o estoque dos produtos deve ser restaurado.
- Cada item de venda deve estar associado a um produto e a uma venda.
- O preço unitário do item de venda deve ser o preço atual do produto no momento da venda.
- O subtotal do item deve ser calculado automaticamente (preço unitário × quantidade).
- Não é possível adicionar uma quantidade de itens maior que a disponível em estoque.
- Criar: Registrar um novo produto com informações básicas e estoque inicial.
- Ler: Listar todos os produtos cadastrados pelo usuário atual ou buscar detalhes de um produto específico.
- Atualizar: Modificar informações do produto, incluindo preço e quantidade em estoque.
- Desativar: Marcar um produto como inativo (soft delete).
- Criar: Registrar um novo cliente com informações de contato.
- Ler: Listar todos os clientes cadastrados pelo usuário atual ou buscar detalhes de um cliente específico.
- Atualizar: Modificar informações de contato ou endereço do cliente.
- Desativar: Marcar um cliente como inativo (soft delete).
- Criar: Iniciar uma nova venda para um cliente, adicionar itens e finalizar.
- Ler: Listar todas as vendas realizadas pelo usuário atual ou visualizar detalhes de uma venda específica.
- Atualizar: Modificar uma venda em andamento (adicionar/remover itens, alterar quantidades).
- Cancelar: Cancelar uma venda (deve restaurar o estoque).
- Listagem de produtos com estoque baixo.
- Vendas realizadas por período.
- Histórico de compras por cliente.
- Produtos mais vendidos.
- Toda operação crítica deve ser registrada em log.
- O sistema deve implementar validações para todas as regras de negócio descritas.
- Devem ser implementadas medidas de segurança para garantir que um usuário não acesse dados de outro usuário.
- O banco de dados deve garantir a integridade referencial entre as entidades.
- Usuário faz login no sistema.
- Cadastra produtos e define estoque inicial.
- Cadastra clientes.
- Cria uma nova venda:
- Seleciona um cliente.
- Adiciona produtos e quantidades.
- Finaliza a venda.
- O sistema atualiza automaticamente o estoque.
- O usuário pode consultar histórico de vendas e produtos.
- Implementar sistema de permissões mais granular.
- Adicionar gestão de fornecedores.
- Implementar sistema de alertas para estoque baixo.
- Desenvolver dashboard com indicadores de desempenho.
- Implementar funcionalidade de devoluções.