Integração entre Plataformas
Como os componentes do JunsoftERP se comunicam entre si.
Mapa de Comunicação
┌──────────────────────────────────────────────────────────────────┐
│ DESKTOP DELPHI │
│ │
│ FireDAC ──────────────────────────────────────────────────────► │
│ (SQL direto) │
│ │
│ jRequisicoes.pas ─── HTTP/REST ───────────────────────────────► │
│ (cliente HTTP) │
└────────────────────────────────────────────────────────────────── │
│ │
▼ ▼
┌─────────────────────┐ ┌──────────────────────────────────────┐
│ BANCO FIREBIRD │ │ APIS JAVA (Spring Boot) │
│ │◄───┤ │
│ Acesso JDBC e │ │ JunsoftWebAPI │
│ FireDAC │ │ PortalWebAPI │
│ │ │ CaptacaoMobile │
│ │◄───┤ PedidoMobile │
└─────────────────────┘ │ VulcanoColeta / VulcanoProd │
│ LicencaMobile / JunsoftApollo │
└──────────────┬───────────────────────┘
│
┌───────────┴───────────┐
│ REST/HTTP + JWT │
▼ ▼
┌─────────────────┐ ┌──────────────────────┐
│ PORTAL WEB │ │ APPS MOBILE │
│ Angular 14 │ │ Angular/Capacitor │
│ Ionic 7.5 │ │ Android APKs │
└─────────────────┘ └──────────────────────┘
Protocolos de Comunicação
1. FireDAC (Delphi → Firebird)
- Tipo: SQL direto sobre TCP/IP
- Componentes: TFDConnection, TFDQuery, TFDStoredProc
- Autenticação: usuário/senha Firebird
- Onde:
jDB.pas— todas as queries passam por aqui - Problema: SQL injection via
Format()na montagem de queries
2. REST/HTTP (qualquer → APIs Java)
- Tipo: HTTP/HTTPS com JSON
- Autenticação: JWT Bearer Token
POST /auth → { username, password, cd_empresa }Response: { token: "eyJ..." }Header: Authorization: Bearer <token>
- Permissões: respeitam tabela
ACESSO(configurada no Desktop) - Quem consome: Portal Web, Apps Mobile, Desktop (via jRequisicoes.pas)
3. JDBC (Java → Firebird)
- Tipo: SQL via driver JDBC Firebird
- Usado por: todas as APIs Java Spring Boot
- ORM: Spring Data / JDBC Template (sem Hibernate)
Autenticação e Autorização
┌─────────────────┐
│ Usuário do ERP │
│ (tabela ACESSO) │
└────────┬────────┘
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
Desktop Delphi APIs Java REST Portal/Mobile
(jSeguranca.pas) (Spring Security) (Angular guard)
│ │
└────── JWT ──────┘
Fluxo de Dados — Exemplo: Pedido de Venda
1. Vendedor (App Mobile) cria pedido
│
│ POST /pedidos (JWT)
▼
2. JunsoftWebAPI → PedidoController
│
│ INSERT PEDIDOS (JDBC)
▼
3. Firebird (tabela PEDIDOS)
│
│ SELECT (FireDAC)
▼
4. ERP Desktop → aprovação do pedido
│
│ UPDATE PEDIDOS (FireDAC)
▼
5. Faturamento → emite NF (jFaturamento)
│
│ INSERT NOTAFISCAL (FireDAC)
▼
6. SEFAZ (webservice externo)
│
│ XML autorizado
▼
7. Título a receber gerado (jFinanceiro)
│
└─ INSERT TITULOSRECEBER (FireDAC)
Agente de Atendimento (MCP)
O branch atual (mcp_agente_atendimento_externo) implementa um agente de IA que acessa o ERP via MCP:
Usuário WhatsApp / Chat
│
│ Mensagem
▼
Agente IA (Claude)
│
│ MCP Tools
▼
JunsoftLocal MCP Server
│
│ REST/JWT
▼
JunsoftWebAPI (Spring Boot)
│
│ JDBC
▼
Firebird
Ferramentas MCP disponíveis:
- Financeiro:
consultar_contas_a_receber,consultar_contas_a_pagar,calcular_juros_multa - Pedidos:
consultar_pedidos_venda,simular_parcelamento_pedido - Coleta:
consultar_coletas,consultar_detalhe_coleta - Cadastro:
pesquisar_clientes - Caixa:
consultar_resumo_caixa,consultar_extrato_conta - Admin:
whoami,listar_minhas_empresas,trocar_empresa
Sincronização e Consistência
- Não há replicação — todos os componentes acessam o mesmo Firebird
- Consistência garantida por transações ACID do Firebird
- Mobile funciona offline (dados locais) e sincroniza quando há conexão
- Conflitos de sync: resolvidos no backend (last-write-wins ou regras de negócio)
Comunicação Externa
| Sistema Externo | Protocolo | Componente |
|---|---|---|
| SEFAZ (NF-e) | HTTPS/WebService | jFaturamento |
| Bancos (Boleto) | HTTPS/SFTP/CNAB | jBoleto |
| PIX (Bacen) | HTTPS/API Pix | jCaixa + Caixa e PDV |
| TEF (Adquirentes) | Serial/TCP | Outras Shared (jTEF) |
| SPC/Serasa | HTTPS | Outras Shared (jSCPC) |
| ViaCEP | HTTPS/REST | Outras Shared (jViaCep) |
| Firebase | HTTPS | Mobile (Web App deploy) |
| API | Agente de atendimento |