ERP Desktop — Delphi 12.2.1
Núcleo do JunsoftERP. Executável principal que carrega módulos BPL dinamicamente.
Stack
| Item | Detalhe |
|---|---|
| Linguagem | Delphi 12.2.1 (migrado do Delphi 7) |
| Arquitetura | BPL runtime (módulos carregados sob demanda) |
| Banco de dados | Firebird via FireDAC (sem BDE, sem dbExpress) |
| UI | VCL (Delphi nativo Windows) |
| Relatórios | FastReport + ReportBuilder (dual engine — migração incompleta) |
| String | Unicode (migrado de AnsiString do Delphi 7) |
Estrutura do Executável
source/Junsoft/Junsoft.exe
│
├── jSessao.pas ──────── Loader de módulos BPL
│ └── LoadPackage() + GetProcAddress('iniciar')
│
├── jMenu.pas ─────────── Constrói o menu dinâmico
├── jLicenca.pas ─────── Controle de licenças
└── jSeguranca.pas ───── Autenticação e permissões
Ciclo de Vida de um Módulo BPL
Usuário clica no menu
│
▼
jSessao.LoadPackage('MNF001.bpl')
│
▼
GetProcAddress('iniciar') → executa o módulo
│
▼
Timer descarrega o BPL após uso (FinalizePackage + FreeLibrary)
Módulos BPL — 104 Famílias, 1.635 Pacotes
Uma família é o grupo de BPLs que compartilham o mesmo prefixo de 3 letras. O prefixo codifica duas informações: o tipo da tela (1ª letra) e o domínio de negócio (2ª e 3ª letras). Exemplo: MPD001.bpl … MPD097.bpl = 97 módulos da família MPD (Manutenção de Pedidos).
Convenção de Nomenclatura
| 1ª letra | Tipo |
|---|---|
| L | Layout / Listagem |
| T | Tela / Tabela |
| M | Manutenção / Movimento |
| R | Relatório |
| C | Configuração |
| 2-3 letras | Domínio |
|---|---|
| PD | Pedidos |
| FA | Faturamento |
| NF | Notas Fiscais |
| FC | Fiscal |
| FI | Financeiro |
| EQ | Equipamentos |
| RC | Recebimento |
| CX | Caixa |
| TR | Transporte |
| PO | Ponto de Venda |
| CB | Contábil |
| ADM | Administração |
Top Famílias por Quantidade
| Família | Qtd | Módulo |
|---|---|---|
| LPD | 133 | Pedidos — Layouts |
| TFA | 78 | Faturamento — Telas |
| MEQ | 73 | Equipamentos — Manutenção |
| MPD | 64 | Pedidos — Manutenção |
| LET | 53 | Estoque — Layouts |
| MRC | 46 | Recapadora — Manutenção |
| RFC | 45 | Fiscal — Relatórios |
| TPO | 44 | Caixa e PDV — Telas PDV |
| RNF | 44 | Notas Fiscais — Relatórios |
| LCX | 42 | Caixa e PDV — Layouts |
| RPD | 40 | Pedidos — Relatórios |
| MFC | 36 | Fiscal — Manutenção |
| MNF | 36 | Notas Fiscais — Manutenção |
| RFI | 35 | Financeiro — Relatórios |
| LNF | 35 | Notas Fiscais — Layouts |
Bibliotecas Shared (j*)
Hierarquia de 3 níveis de dependência:
Tier 1 — Core crítico:
- jCommon — 99.6% dos BPLs dependem
- jPesquisa — 97.8% dos BPLs dependem
- jTEF (transitivamente crítico)
Tier 2 — Domínio:
- jFaturamento — Motor NF-e/CT-e/MDF-e/SAT-CFe
- jFinanceiro — Cálculos financeiros
- jCaixa — Caixa e PIX
- jBoleto — Boletos (18+ bancos)
- Outras Shared — jFrameCadastro, jParcelamento, jVendedor, etc.
Executáveis Standalone (40 .dpr)
Além do Junsoft.exe principal, existem executáveis independentes:
| Executável | Finalidade |
|---|---|
| JunsoftContabil | ERP Contábil standalone |
| JunsoftEmail | Servidor/cliente de email |
| JunsoftEstoque | Gestão de estoque |
| JunsoftNFSe2 | NFS-e (nota de serviço) |
| JunsoftPix | Integração PIX |
| JunsoftTEF | Terminal Eletrônico de Fundos |
| JunsoftAssina | Assinatura digital |
| JunsoftAtualizacao | Atualizador do sistema |
| JunsoftSuporte | Suporte remoto |
| JunsoftImportacao | Importação de dados |
| JunsoftIntegracao | Integração com sistemas externos |
| PacManeger | Package Manager (gerencia BPLs) |
| Visualizador | Visualizador de relatórios |
| SATCFe | SAT-CFe (cupom fiscal eletrônico) |
| SPEDReinf | SPED Reinf |
| ConsultaSPC | Consulta SPC (crédito) |
| ConversorERP | Conversão de dados |
| GeradorBases | Gerador de bases de dados |
| ... | + outros utilitários |
Conexão com Outras Plataformas
- Acessa Banco de Dados diretamente via FireDAC
- Consome APIs Java para funcionalidades REST (ex: Mobile sync)
- Gera layouts consumidos pelo jFaturamento
Problemas Conhecidos
jBase.pastem credenciais FTP hardcoded (compiladas em todos os 1.629 BPLs)jDB.pastem SQL injection sistêmico viaFormat()- Dual report engine (FastReport + ReportBuilder) — migração incompleta
- 175 arquivos com AnsiString (concentrados em módulos fiscais)
Sleep(5000)bloqueando UI no estorno PIX do jCaixa (até 200 segundos)