Pular para o conteúdo principal

ERP Desktop — Delphi 12.2.1

Núcleo do JunsoftERP. Executável principal que carrega módulos BPL dinamicamente.


Stack​

ItemDetalhe
LinguagemDelphi 12.2.1 (migrado do Delphi 7)
ArquiteturaBPL runtime (módulos carregados sob demanda)
Banco de dadosFirebird via FireDAC (sem BDE, sem dbExpress)
UIVCL (Delphi nativo Windows)
RelatóriosFastReport + ReportBuilder (dual engine — migração incompleta)
StringUnicode (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ª letraTipo
LLayout / Listagem
TTela / Tabela
MManutenção / Movimento
RRelatório
CConfiguração
2-3 letrasDomínio
PDPedidos
FAFaturamento
NFNotas Fiscais
FCFiscal
FIFinanceiro
EQEquipamentos
RCRecebimento
CXCaixa
TRTransporte
POPonto de Venda
CBContábil
ADMAdministração

Top Famílias por Quantidade​

FamíliaQtdMódulo
LPD133Pedidos — Layouts
TFA78Faturamento — Telas
MEQ73Equipamentos — Manutenção
MPD64Pedidos — Manutenção
LET53Estoque — Layouts
MRC46Recapadora — Manutenção
RFC45Fiscal — Relatórios
TPO44Caixa e PDV — Telas PDV
RNF44Notas Fiscais — Relatórios
LCX42Caixa e PDV — Layouts
RPD40Pedidos — Relatórios
MFC36Fiscal — Manutenção
MNF36Notas Fiscais — Manutenção
RFI35Financeiro — Relatórios
LNF35Notas 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:


Executáveis Standalone (40 .dpr)​

Além do Junsoft.exe principal, existem executáveis independentes:

ExecutávelFinalidade
JunsoftContabilERP Contábil standalone
JunsoftEmailServidor/cliente de email
JunsoftEstoqueGestão de estoque
JunsoftNFSe2NFS-e (nota de serviço)
JunsoftPixIntegração PIX
JunsoftTEFTerminal Eletrônico de Fundos
JunsoftAssinaAssinatura digital
JunsoftAtualizacaoAtualizador do sistema
JunsoftSuporteSuporte remoto
JunsoftImportacaoImportação de dados
JunsoftIntegracaoIntegração com sistemas externos
PacManegerPackage Manager (gerencia BPLs)
VisualizadorVisualizador de relatórios
SATCFeSAT-CFe (cupom fiscal eletrônico)
SPEDReinfSPED Reinf
ConsultaSPCConsulta SPC (crédito)
ConversorERPConversão de dados
GeradorBasesGerador de bases de dados
...+ outros utilitários

Conexão com Outras Plataformas​


Problemas Conhecidos​

  • jBase.pas tem credenciais FTP hardcoded (compiladas em todos os 1.629 BPLs)
  • jDB.pas tem SQL injection sistêmico via Format()
  • 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)