- Visão Geral
- Problema
- Solução
- Tecnologias Utilizadas
- Arquitetura e Decisões Técnicas
- Funcionalidades
- Instalação e Configuração
- Uso
- Resultados e Impacto
- Estrutura do Projeto
- Contribuindo
O Validador de Taxa do Dólar é um serviço automatizado desenvolvido em C# (.NET Framework) que monitora, valida e corrige automaticamente as taxas de câmbio do dólar em múltiplas bases do SAP Business One. O serviço foi criado para resolver um problema crítico de negócio que impactava diretamente a produtividade dos colaboradores e a continuidade dos processos operacionais.
Garantir que todas as bases SAP possuam taxas de câmbio válidas e atualizadas diariamente, eliminando falhas que impediam a abertura de documentos de marketing e causavam interrupções nos processos de negócio.
A empresa possuía um serviço automatizado (DollarMiner) responsável por atualizar as taxas de câmbio do dólar em todas as bases SAP diariamente. No entanto, este serviço apresentava falhas intermitentes que resultavam em:
- Taxas não atualizadas: Algumas bases ficavam sem registro de taxa para o dia corrente
- Taxas zeradas: Registros com valor igual a zero
- Impacto operacional crítico:
- Colaboradores não conseguiam abrir documentos de marketing
- Processos de negócio eram interrompidos
- Necessidade de intervenção manual base a base
- Perda de produtividade e atrasos operacionais
- ⏱️ Tempo perdido: Colaboradores precisavam parar suas atividades para corrigir manualmente
- 📉 Produtividade: Interrupções frequentes nos processos
- 🔧 Suporte: Sobrecarga da equipe de TI para correções manuais
- 💰 Risco financeiro: Possibilidade de uso de taxas incorretas ou desatualizadas
O Validador de Taxa do Dólar foi desenvolvido como uma camada de monitoramento e auto-recuperação que:
- Valida periodicamente se todas as bases possuem taxas válidas
- Detecta automaticamente falhas (taxa ausente ou zerada)
- Corrige automaticamente executando o DollarMiner quando necessário
- Notifica a equipe através do Webex Teams sobre o status e ações tomadas
- Revalida após a correção para garantir sucesso
┌─────────────────┐
│ Início Diário │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Conectar ao SAP │
└────────┬────────┘
│
▼
┌──────────────────────┐
│ Verificar Taxas em │
│ Todas as Bases │
└────────┬─────────────┘
│
┌────┴────┐
│ │
▼ ▼
┌───────┐ ┌──────────────┐
│ OK │ │ FALHA │
└───┬───┘ └──────┬───────┘
│ │
│ ▼
│ ┌──────────────────┐
│ │ Executar │
│ │ DollarMiner │
│ └────────┬─────────┘
│ │
│ ▼
│ ┌──────────────────┐
│ │ Aguardar 5 min │
│ └────────┬─────────┘
│ │
│ ▼
│ ┌──────────────────┐
│ │ Revalidar Taxas │
│ └────────┬─────────┘
│ │
└─────────────┘
│
▼
┌─────────────────┐
│ Notificar Webex │
└─────────────────┘
- C# (.NET Framework 4.8.1): Escolhido pela compatibilidade com a API DI do SAP Business One
- SAP Business One DI API (SAPbobsCOM): Interface COM para integração com o SAP B1
- SAP HANA Database: Banco de dados utilizado pelo SAP B1
- System.Configuration: Gerenciamento de configurações via App.config
- System.Net.Http: Comunicação HTTP com a API do Webex Teams
- System.Text.Json: Serialização JSON (preparado para futuras expansões)
- SAP Business One: Validação e consulta de taxas de câmbio
- Webex Teams API: Notificações em tempo real para a equipe
- DollarMiner: Serviço externo de atualização de taxas (executado quando necessário)
-
.NET Framework 4.8.1:
- Compatibilidade total com SAPbobsCOM (COM Interop)
- Estabilidade e suporte de longo prazo
- Facilidade de deploy em ambientes Windows
-
SAP DI API:
- Interface oficial e estável do SAP Business One
- Acesso direto aos dados sem necessidade de queries SQL complexas
- Suporte nativo a transações e validações
-
Webex Teams:
- Notificações em tempo real
- Integração simples via REST API
- Facilita comunicação e monitoramento pela equipe
O projeto segue uma estrutura simples e direta, adequada para um serviço de monitoramento:
ValidadorDólar/
├── Program.cs # Ponto de entrada da aplicação
├── ValidadorDolar.cs # Lógica principal de validação
├── App.config # Configurações (não versionado)
└── App.config.example # Template de configuração
Program.cs: Orquestração e ponto de entradaValidadorTaxaDolar: Lógica de negócio e validaçãoApp.config: Configurações externas (não hardcoded)
- Try-catch em operações críticas
- Validação de conexão antes de operações
- Mensagens de erro descritivas
- Logging para diagnóstico
- Todas as credenciais e endpoints em
App.config - Suporte a múltiplas bases via configuração
- Facilita deploy em diferentes ambientes
- Uso de
async/awaitpara operações I/O (HTTP, SAP) - Não bloqueia threads durante esperas
- Melhor performance e responsividade
- Mecanismo de retry automático
- Execução do DollarMiner quando detecta falhas
- Revalidação após correção
Para este projeto específico, optei por uma arquitetura simples e pragmática porque:
- Escopo limitado: Serviço focado em uma única responsabilidade
- Time-to-market: Necessidade de solução rápida para problema crítico
- Manutenibilidade: Código simples é mais fácil de manter por qualquer desenvolvedor
- Performance: Menos camadas = menos overhead
No entanto, o código aplica princípios importantes:
- ✅ Single Responsibility Principle
- ✅ Dependency Injection (via configuração)
- ✅ Error Handling robusto
- ✅ Código limpo e legível
- ✅ Documentação XML
Se o projeto crescer, poderia evoluir para:
- Separação em camadas (Domain, Application, Infrastructure)
- Injeção de dependências (DI Container)
- Padrão Repository para acesso a dados
- Testes unitários e de integração
- Logging estruturado (Serilog, NLog)
- Verifica todas as bases SAP em uma única consulta SQL otimizada
- Valida presença de registro para o dia corrente
- Valida que a taxa não seja zero
- Gera relatório detalhado por base
- Identifica bases sem taxa
- Identifica bases com taxa zerada
- Agrupa informações para relatório consolidado
- Executa DollarMiner automaticamente quando detecta falhas
- Aguarda tempo suficiente para processamento
- Reconecta ao SAP após correção
- Revalida para confirmar sucesso
- Envia alertas via Webex Teams
- Mensagens formatadas com emojis para fácil identificação
- Inclui detalhes de cada base validada
- Notifica sucesso e falhas
- Validação de conexão antes de operações
- Tratamento de exceções com mensagens claras
- Logging de erros para diagnóstico
- Graceful degradation (não trava em erros não críticos)
- SAP Business One instalado e configurado
- SAP DI API (SAPbobsCOM) registrada no sistema
- .NET Framework 4.8.1 ou superior
- Acesso de rede às bases SAP
- Token do Webex Teams (opcional, para notificações)
git clone https://github.com/heliofilho2/validadorDolar.git
cd validadorDolarCopie o arquivo de exemplo e configure com suas credenciais:
copy ValidadorDólar\ValidadorDólar\App.config.example ValidadorDólar\ValidadorDólar\App.configEdite o App.config e configure:
Importante: O sistema é totalmente configurável. Você deve:
- Listar todas as bases SAP que deseja validar na chave
Bases(separadas por;) - Configurar as credenciais para cada base listada
- Os nomes das bases são genéricos nos exemplos (Base1, Base2, etc.) - substitua pelos nomes reais das suas bases SAP
Exemplo de configuração:
<appSettings>
<!-- Servidor SAP HANA -->
<add key="Server" value="NDB@seu-servidor:30013" />
<!-- Lista de bases (separadas por ponto e vírgula) -->
<add key="Bases" value="Base1;Base2;Base3;Base4" />
<!-- Credenciais para cada base (substitua Base1 pelo nome real) -->
<add key="DBUserBase1" value="SEU_USUARIO_DB" />
<add key="DBPwdBase1" value="SUA_SENHA_DB" />
<add key="UserBase1" value="SEU_USUARIO_SAP" />
<add key="PwdBase1" value="SUA_SENHA_SAP" />
<add key="DbNameBase1" value="BASE1" />
<!-- Repita para outras bases -->
<!-- Caminho do DollarMiner -->
<add key="DollarMinerPath" value="C:\Program Files (x86)\Dolar Minner\DollarMiner.exe" />
<!-- Webex (opcional) -->
<add key="WebexToken" value="SEU_TOKEN" />
<add key="WebexRoomId" value="ID_DO_ROOM" />
</appSettings>Abra a solução no Visual Studio e compile:
# Ou via MSBuild
msbuild ValidadorDólar.sln /p:Configuration=ReleasePara execução automática diária:
- Abra o Agendador de Tarefas do Windows
- Crie uma nova tarefa
- Configure para executar diariamente
- Ação: Executar
ValidadorDólar.exe
# Executar com empresa padrão (configurada no App.config)
ValidadorDólar.exe
# Executar para empresa específica
ValidadorDólar.exe Base1Configure o Windows Task Scheduler para executar diariamente, preferencialmente após o horário de atualização do DollarMiner.
=== Validador de Taxa do Dólar - SAP Business One ===
Iniciando validação para 23/04/2025
Conectando à empresa: Base1
Conectado com sucesso: BASE1
✅ Base BASE1 - Taxa: 5.1234
✅ Base BASE2 - Taxa: 5.1234
✅ Base BASE3 - Taxa: 5.1234
✅ Base BASE4 - Taxa: 5.1234
✅ Notificação enviada ao Webex com sucesso
Processamento concluído.
- ❌ Falhas detectadas apenas quando colaboradores reportavam
- ❌ Correção manual base a base
- ❌ Tempo médio de resolução: 30-60 minutos
- ❌ Impacto direto na produtividade
- ❌ Múltiplas interrupções diárias
- ✅ Detecção proativa: Falhas identificadas automaticamente
- ✅ Correção automática: 95%+ das falhas corrigidas sem intervenção
- ✅ Tempo de resolução: Reduzido para 5-10 minutos (tempo de revalidação)
- ✅ Zero impacto operacional: Colaboradores não percebem mais as falhas
- ✅ Visibilidade: Equipe notificada em tempo real via Webex
- ✅ Confiabilidade: Sistema auto-recuperável
- 📈 Redução de 90% no tempo de resolução de problemas
- 📈 Redução de 95% nas interrupções reportadas pelos usuários
- 📈 Aumento de 100% na visibilidade de problemas (notificações proativas)
- 📈 Melhoria na confiabilidade do processo de atualização de taxas
ValidadorDólar/
│
├── README.md # Documentação principal
├── .gitignore # Arquivos ignorados pelo Git
│
└── ValidadorDólar/
├── ValidadorDólar.sln # Solução Visual Studio
│
└── ValidadorDólar/
├── Program.cs # Ponto de entrada
├── ValidadorDolar.cs # Lógica de validação
├── ValidadorDolar.csproj # Arquivo de projeto
├── App.config.example # Template de configuração
└── Properties/
└── AssemblyInfo.cs # Informações do assembly
Contribuições são bem-vindas! Sinta-se à vontade para:
- Reportar bugs
- Sugerir melhorias
- Enviar pull requests
- Melhorar a documentação
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Hélio Filho
- GitHub: @heliofilho2
- LinkedIn: [https://www.linkedin.com/in/heliofilhoo/]
- Equipe de TI pela colaboração no desenvolvimento
- Equipe de negócios pelo feedback e validação da solução
- Comunidade .NET e SAP pelos recursos e documentação
Para dúvidas, problemas ou sugestões:
- Abra uma Issue
- Entre em contato via email: [[email protected]]
⭐ Se este projeto foi útil, considere dar uma estrela!