AppPedidos
- Active · last change 10-27-2025
- ★ 1 on GitHub
README
# 🧾 Projeto PedidosApp
O **PedidosApp** é um sistema de gestão simples desenvolvido em **Delphi**, com foco em **organização de código, separação de camadas e clareza na lógica de negócios**.
Ele simula o fluxo completo de cadastro de **Clientes, Produtos e Pedidos**, permitindo adicionar, editar e visualizar dados de forma estruturada.
## ⚙️ Estrutura e Decisões de Arquitetura
### 🔹 1. Separação em camadas
O projeto foi dividido em três pastas principais:
- **domain** → contém as classes de negócio (nCliente, nProduto, nPedido, nPedidoItem), responsáveis pela lógica e regras.
- **infrastructure** → contém repositórios e utilitários genéricos (nRepositorioMem\_U, nSqlBuilder\_U, nRepositorioGlobal\_U).
- **presentation** → contém todas as telas (nFrmMain\_U, nFrmClientes\_U, nFrmProdutos\_U, nFrmPedidos\_U, nFrmPedidoCadastro\_U, nFrmSqlPreview\_U).
➡️ Essa divisão garante **baixo acoplamento**, facilitando futuras migrações para banco de dados real ou APIs.
### 🔹 2. Repositório Genérico em Memória
O TnRepositorioMem<T> foi criado para armazenar objetos de qualquer tipo (Clientes, Produtos, Pedidos) em **listas genéricas**.
- Facilita testes sem banco de dados.
- Suporta operações CRUD básicas (Adicionar, Remover, Listar, etc.).
- Centraliza a manipulação dos dados, evitando duplicação de lógica.
### 🔹 3. Interface e UX das Telas
Cada tela segue um **padrão visual uniforme**, com painéis de cabeçalho e grids centralizados.
Foram criadas telas modulares e reaproveitáveis:
- nFrmClientes\_U → Cadastro e listagem de clientes.
- nFrmProdutos\_U → Cadastro e listagem de produtos.
- nFrmPedidos\_U → Gerenciamento de pedidos.
- nFrmPedidoCadastro\_U → Edição detalhada de um pedido.
Todos os formulários seguem a filosofia: **campos obrigatórios, validações claras e feedback ao usuário.**
### 🔹 4. Lógica dos Pedidos
- Cada pedido possui uma lista de itens (TnPedidoItem).
- O cálculo do total é automático via método CalcularTotal.
- O número do pedido (PED-0001, PED-0002, ...) é gerado dinamicamente.
- Alterações respeitam o status do pedido:
- **Aberto:** pode ser editado.
- **Faturado:** bloqueado para edição (campos e botões desabilitados).
### 🔹 5. Segurança e Integridade
- Antes de salvar, o sistema valida se há **cliente e itens válidos**.
- Evita **duplicação de pedidos**.
- Evita **Access Violations** com verificações de objetos e listas.
- Implementa bloqueios visuais e lógicos para pedidos faturados.
### 🔹 6. Utilitários e SQL Preview
- O nSqlBuilder\_U foi criado para montar consultas SQL dinamicamente.
- A tela nFrmSqlPreview\_U exibe o SQL gerado de forma amigável.
- Essas ferramentas auxiliam em depuração e aprendizado de boas práticas de geração de comandos.
## 🧩 Tecnologias Utilizadas
- **Delphi VCL**
- **Generics.Collections**
- **ClientDataSet** (para exibir dados temporários)
- **Arquitetura limpa e extensível**
- **Padrões inspirados em DDD (Domain Driven Design)**
## 🚀 Decisões-Chave Resumidas
| Área | Decisão |
|---|
| Estrutura | Separação em camadas | Organização e escalabilidade |
| Dados | Repositório em memória | Simular persistência e facilitar testes |
| Interface | Padrão visual único | Coerência e reuso de componentes |
| Pedidos | Bloqueio de pedidos faturados | Evitar inconsistências |
| Código | Uso de generics e listas | Reduzir redundância |
| SQL | Builder visual (nSqlBuilder\_U) | Aprendizado e transparência da lógica |
## 👤 Autor
**Gabriel Milani**
Desenvolvido como estudo de boas práticas e arquitetura limpa em **Delphi**.

