Este é um projeto de um sistema básico de estoque e vendas desenvolvido com Spring Boot, utilizando uma arquitetura em camadas (Controller, Service, Repository, Model/Entity, DTO) e um banco de dados H2 para persistência.
- CRUD (Criar, Ler, Atualizar, Deletar) de Produtos:
- Cadastro e gestão de itens do estoque.
- CRUD (Criar, Ler, Atualizar, Deletar) de Clientes:
- Registro e gestão de informações de clientes.
- Registro de Vendas:
- Criação de novas vendas, incluindo múltiplos itens (produtos).
- Atualização automática do estoque dos produtos após a venda.
- Cancelamento de Vendas:
- Permite cancelar uma venda existente, revertendo automaticamente o estoque dos produtos vendidos.
- Tratamento de Erros Personalizado:
- Lida com exceções específicas (e.g., recursos não encontrados, requisições inválidas, estoque insuficiente) retornando respostas HTTP apropriadas (404 Not Found, 400 Bad Request) e mensagens claras.
- Validação de Entrada de Dados:
- Utiliza Bean Validation para garantir a integridade dos dados recebidos nas requisições da API (e.g., quantidades positivas, lista de itens não vazia).
- Logging Básico:
- Implementação de logs informativos em diferentes níveis (INFO, DEBUG, WARN, ERROR) para auxiliar na depuração, monitoramento e compreensão do fluxo da aplicação.
- Persistência de Dados:
- Utiliza H2 Database em modo de arquivo para armazenar dados localmente.
- Java 17+
- Spring Boot 3.x: Framework para desenvolvimento de aplicações Java.
- Spring Web: Para construir APIs RESTful.
- Spring Data JPA: Para simplificar a interação com o banco de dados.
- Spring Boot Starter Validation: Para validação de dados via Bean Validation.
- SLF4J & Logback: Para gerenciamento de logs.
- H2 Database: Banco de dados em memória/arquivo, ideal para desenvolvimento.
- Lombok: Para reduzir código boilerplate (getters, setters, construtores).
- Maven: Ferramenta de automação de build e gerenciamento de dependências.
- Java Development Kit (JDK) 17 ou superior.
- Maven (geralmente incluído nas IDEs ou pode ser instalado separadamente).
- Sua IDE favorita (IntelliJ IDEA, VS Code com Extension Pack for Java, Eclipse).
- Clone o repositório:
git clone [https:[github.com/rannix1/estoque_vendas](https://github.com/rannix1/estoque_vendas)] cd estoque-vendas - Abra o projeto na sua IDE:
- No VS Code, vá em
File > Open Folder...e selecione a pastaestoque-vendas. A IDE deve reconhecer o projeto Maven e baixar as dependências.
- No VS Code, vá em
- Configuração do Banco de Dados H2:
- O projeto utiliza o H2 Database em modo de arquivo. As configurações estão em
src/main/resources/application.properties. - O banco de dados será criado automaticamente no caminho
./data/estoque_db.mv.db(dentro da pastadatana raiz do projeto) na primeira execução.
- O projeto utiliza o H2 Database em modo de arquivo. As configurações estão em
- Execute a Aplicação:
- Navegue até a classe principal
EstoqueVendasApplication.java(localizada emsrc/main/java/com/example/estoque_vendas/). - Execute o método
main(clique no botão "Run" na sua IDE). - A aplicação estará disponível em
http://localhost:8080.
- Navegue até a classe principal
Você pode usar ferramentas como Postman, Insomnia, ou a extensão REST Client para VS Code para testar os endpoints.
-
Produtos:
GET /api/produtos: Listar todos os produtos.GET /api/produtos/{id}: Obter produto por ID.POST /api/produtos: Criar novo produto.{ "nome": "Exemplo Produto", "descricao": "Descrição do produto", "quantidadeEstoque": 10, "precoCusto": 5.00, "precoVenda": 10.00 }PUT /api/produtos/{id}: Atualizar produto.DELETE /api/produtos/{id}: Deletar produto.
-
Clientes:
GET /api/clientes: Listar todos os clientes.GET /api/clientes/{id}: Obter cliente por ID.POST /api/clientes: Criar novo cliente.{ "nome": "Nome do Cliente", "documento": "12345678900", "email": "cliente@email.com", "telefone": "99999999999" }PUT /api/clientes/{id}: Atualizar cliente.DELETE /api/clientes/{id}: Deletar cliente.
-
Vendas:
GET /api/vendas: Listar todas as vendas.GET /api/vendas/{id}: Obter venda por ID.POST /api/vendas: Registrar uma nova venda.{ "clienteId": 1, "itens": [ { "produtoId": 1, "quantidade": 1 } ] }DELETE /api/vendas/{id}: Cancelar uma venda existente, estornando o estoque.
- Acesse o console do H2 em
http://localhost:8080/h2-console. - JDBC URL:
jdbc:h2:file:./data/estoque_db - User Name:
sa - Password: (em branco)
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.