Este sistema foi desenvolvido com fins educacionais, com o objetivo de explorar conceitos fundamentais da arquitetura cliente-servidor utilizando a linguagem de programação Delphi. A proposta foi simular um ambiente real de cadastro e faturamento de produtos, integrando funcionalidades como controle de estoque e emissão de notas fiscais, com divisão clara entre camadas e aplicação de boas práticas como separação de responsabilidades e uso de microserviços.
- Validação de saldo antes da impressão
- Se o saldo for suficiente:
- Nota é impressa (.txt)
- Estoque é baixado
- Status da nota é alterado para "Fechada"
- Usuário recebe feedback claro
- CRUD de produtos
- Controle e baixa de saldo
- Endpoints expostos via
TIdHTTPServer
- CRUD de notas fiscais e itens
- Impressão e comunicação com EstoqueService
- Endpoints via
TIdHTTPServer
- Interface gráfica para gerenciar os dados
- Comunicação HTTP com os serviços
- Geração de arquivo
.txtda nota
- Delphi VCL
- Firebird 4.0.5
- Indy Components (
TIdHTTP,TIdHTTPServer) - JSON (System.JSON)
- Arquivos
.txtpara logs e impressão
- Cadastro de produto (EAN, nome, saldo, custo e preço)
- Criação de nota fiscal
- Inclusão de produtos na nota
- Impressão:
- Validação de saldo
- Baixa de estoque
- Alteração de status
- Geração de
.txt
- Serviço de estoque offline → operação é abortada
- Nenhuma alteração na nota
- Mensagem de erro exibida:
"Erro de conexão: serviço está desligado."
Operações críticas usam:
StartTransactionCommitRollback
- Endpoint
/produto/saldousa:SELECT Saldo FROM Produtos WHERE ID = :id FOR UPDATE WITH LOCK
Isso garante bloqueio de linha e evita problemas de leitura suja em acessos simultâneos.
- Instale o Firebird
- Caminho padrão:
\ProdManager\Data\BANCO.FDB - Ajuste o caminho no código, se necessário
cd \ProdManager\EstoqueService\Server\Win32\Release
EstoqueService.exe /install
cd \ProdManager\FaturamentoService\Server\Win32\Release
FaturamentoService.exe /install- Pressione
Win + R→services.msc - Inicie:
EstoqueControllereFaturamentoController - Execute:
\ProdManager\Client\Win32\Release\Client.exe
- GET /produto
- GET /produto/{ean}
- POST /produto
- POST /produto/{id}
- POST /produto/saldo
- POST /produto/delete/{id}
- GET /nota
- GET /nota/{id}
- GET /nota/itens/
- POST /nota
- POST /nota/item
- POST /nota/imprimir
- POST /nota/deletar/{id}
- POST /nota/item/deletar/{id}
- POST /nota/atualizar/{id}
- POST /nota/atualizar/valortotal/{id}
- POST /nota/atualizar/chave/{id}
Notas emitidas são salvas em:
\ProdManager\NotasEmitidas\Nota_{ID}.txt
| Funcionalidade | Status |
|---|---|
| Cadastro de produtos | ✅ |
| Cadastro de notas com itens | ✅ |
| Impressão com validação de saldo | ✅ |
| Baixa de estoque e fechamento da nota | ✅ |
| Microserviços independentes | ✅ |
| Transações ACID | ✅ |
| Cenário de falha com recuperação | ✅ |
| Controle de concorrência | ✅ |
Arthur Fonseca
📧 arthur.elf95@gmail.com
🔗 LinkedIn
🐙 GitHub