| Data de elaboração | 29/05/2026 |
| Responsável pelo estudo | Rodrigo Stefano Sales Nascimento (Assessor) |
| Equipe do estudo | CAOS |
| Alvo | Sistema Governa - RH |
| Origem | Levantamento da lógica do cálculo geral da folha de pagamento e processamento por lote. |
| Objetivo | Compreender a lógica do cálculo geral da folha de pagamento e do processamento por lote no sistema Governa, identificando regras de negócio, parâmetros envolvidos e fluxo de processamento, a fim de facilitar futuras manutenções, análises e implementações. |
A folha de pagamento é o documento que reúne todos os proventos (vencimentos, gratificações, adicionais) e descontos (previdência, imposto de renda, consignações) de cada servidor em um determinado mês de referência. É a base para o pagamento dos servidores e para o cumprimento das obrigações legais, como o recolhimento do INSS, IRRF e FGTS.
No setor público, a folha de pagamento exige o cumprimento de regras específicas previstas em legislação federal e estadual, além de parâmetros internos de cada órgão. Cada tipo de pagamento possui sua própria rotina de cálculo, que determina quais rubricas (verbas) incidem, quais fórmulas aplicar e quais descontos são obrigatórios.
O sistema Governa - RH organiza os diferentes tipos de pagamento por meio de uma enumeração chamada RotinaCalculo. Cada rotina representa um evento de pagamento diferente:
| Abreviação | Descrição |
|---|---|
| FOL | Folha de Pagamento mensal regular |
| FER | Férias |
| DES | Desligamento / Rescisão |
| ADS | Adiantamento Salarial |
| FCO | Folha Complementar (ajustes) |
| A13 | Adiantamento do 13º Salário |
| P13 | Pagamento do 13º Salário (parcela final) |
Este estudo concentra-se em duas frentes:
Cálculo individual — como o sistema processa o cálculo da folha para cada servidor, quais parâmetros são utilizados e qual é o fluxo desde o disparo até a persistência dos dados financeiros.
Processamento por lote — como o sistema permite executar o cálculo para múltiplos servidores a partir de um arquivo TXT contendo matrículas, e qual é a diferença em relação ao cálculo individual.
As telas de cálculo analisadas foram:
calculoPagamentoFolha.xhtml — Cálculo de Pagamento Folha (execução individual)calculoPagamentoFolhaLote.xhtml — Cálculo de Pagamento Folha por Lote (execução em massa via arquivo)O cálculo da folha é distribuído em múltiplos módulos do projeto governa-rh-all:
| Módulo | Responsabilidade |
|---|---|
governa-rh-calculo |
Engine de cálculo: serviços, classes de cálculo e persistência em lote |
governa-rh-negocio |
Camada de negócio: orquestra as chamadas ao engine e aplica regras de negócio |
governa-rh-comum |
Interfaces, constantes, enums e objetos de contexto compartilhados |
governa-rh-mapeamento |
Importação de arquivos TXT usados no processamento por lote |
governa-rh-web |
Telas JSF: disparo do cálculo e visualização de relatórios |
governa-rh-relatorio |
Geração dos relatórios em JasperReports |
Antes de executar o cálculo, o sistema carrega um conjunto de parâmetros configurados na base de dados. Esses parâmetros determinam alíquotas, limites e regras específicas para cada tipo de rubrica.
| Parâmetro | O que configura |
|---|---|
ParamEventoCalculo |
Parâmetros do evento de cálculo: impostos, descontos e verbas específicas |
ParamPrevidencia |
Alíquotas e faixas de contribuição previdenciária |
ParamAdicionalTempo |
Adicionais por tempo de serviço (anuênios, triênios, etc.) |
ParamAbonoSalarioFamilia |
Limites e valores do salário-família |
ParamSistema |
Parâmetros globais do sistema (datas e configurações gerais) |
O sistema possui uma classe dedicada para cada tipo de cálculo. O serviço principal CalculoFolhaServico coordena a chamada. Cada uma conforme a rotina em execução:
| Classe | O que calcula |
|---|---|
CalculoVerba |
Verbas e rubricas em geral (proventos e descontos) |
CalculoIrrf |
Imposto de Renda Retido na Fonte |
CalculoPrevidencia |
Contribuição previdenciária |
CalculoFgts |
FGTS |
CalculoFerias / CalculoFeriasServico |
Férias |
CalculoDesligamento / CalculoDesligamentoServico |
Rescisão / desligamento |
CalculoDecimoTerceiroServico |
13º salário |
CalculoAdiantamento |
Adiantamento salarial |
CalculoMedia |
Médias para cálculo de gratificações |
CalculoTetoSalarial |
Aplicação do teto salarial |
CalculoTransporte |
Vale-transporte |
CalculoAuxilioDeslocamento |
Auxílio deslocamento |
CalculoComplementoSalarial |
Complemento salarial |
CalculoAfastamento |
Descontos e ajustes por afastamento |
CalculoCds |
CDS (bônus de desempenho) |
CalculoAbonoSalarioFamilia |
Salário-família |
CalculoFinanceiro |
Consolidação financeira final |
O sistema possui dois parâmetros que controlam o desempenho do processamento, definidos em CalculoExecucaoConfig:
CALCULO_FOLHA_THREAD_POOL_TAMANHO — define quantas threads paralelas são usadas para calcular os servidores simultaneamenteFINANCEIRO_MENSAL_PERSISTENCIA_LOTE_TAMANHO — define quantos registros financeiros são gravados no banco de dados por vez (em lotes)Esses parâmetros permitem ajustar o desempenho sem alterar a lógica do cálculo.
Durante o processamento, o sistema registra o progresso por meio dos seguintes estados:
| Estado | Descrição |
|---|---|
| CARREGANDO | Carregando lista de servidores |
| PREPARANDO | Preparando lista para cálculo |
| CALCULANDO | Calculando |
| VALIDANDO | Validando cálculo |
| EXCLUINDO | Excluindo cálculo anterior |
| AGUARDANDO | Cálculo concluído, aguardando ação do usuário |
O cálculo individual é disparado pelo usuário na tela calculoPagamentoFolha.xhtml, para um ou mais servidores selecionados manualmente. O ponto de entrada no backend é o método executarCalculoPagamentoFolha no CalculoPagamentoBO, que em seguida delega para o CalculoFolhaServico.
O processamento segue as etapas abaixo:
Carregar parâmetros — o sistema busca na base os parâmetros de cálculo (ParamEventoCalculo, ParamSistema, ParamPrevidencia, etc.) e monta o mapa de verbas com suas fórmulas de cálculo.
Preparar servidores — o sistema define status PREPARANDO, carrega a lotação mensal e a administração de cada servidor, e separa os servidores que possuem múltiplas matrículas na mesma fonte pagadora (esses são processados à parte).
Executar cálculo em paralelo — o sistema define status CALCULANDO e distribui o processamento entre múltiplas threads (uma por servidor). Cada thread executa o cálculo completo das verbas do servidor, avaliando as fórmulas configuradas.
Processar verbas em etapas — as verbas são calculadas em três etapas sequenciais: verbas que não dependem do complemento salarial, verbas que dependem do complemento, e verbas não acumuladoras.
Persistir dados financeiros em lote — os registros FinanceiroMensal gerados são gravados no banco em blocos (chunks), com limpeza do cache da JPA entre cada bloco para controle de memória.
Validar e concluir — o sistema define status VALIDANDO, verifica inconsistências e gera o relatório de erros. Por fim, define status AGUARDANDO.
Objetos de contexto por servidor durante o cálculo:
| Contexto | Finalidade |
|---|---|
ServidorCalculoContexto |
Agrupa todos os dados do servidor no momento do cálculo |
MoedaValorContexto |
Representa os valores monetários (proventos, descontos) |
VariavelValorContexto |
Variáveis usadas na avaliação de fórmulas das verbas |
AverbacaoValorContexto |
Dados de consignações e averbações |
VerbaPeriodicaContexto |
Verbas com periodicidade específica |
VerbaValorContexto |
Valor calculado de uma verba específica |
O processamento por lote é disparado pelo usuário na tela calculoPagamentoFolhaLote.xhtml, através do upload de um arquivo TXT contendo as matrículas dos servidores a serem calculados. O backend executa o método executarCalculoPorLote no CalculoPagamentoBO.
O processamento segue as etapas abaixo:
Importar o arquivo — o arquivo TXT é salvo temporariamente e lido pelo importador, que extrai a lista de matrículas. O arquivo é removido após a leitura.
Carregar servidores — o sistema busca os dados mensais de cada matrícula e também carrega automaticamente os vínculos relacionados pelo CPF (servidores com múltiplas matrículas).
Limpar dados existentes — antes de calcular, o sistema remove os registros financeiros anteriores (FinanceiroMensal) dos servidores do arquivo, garantindo que o recálculo seja completo e sem duplicidades.
Executar o cálculo — o sistema roteia para o método correto com base na rotina de cálculo (FOL, A13, P13, etc.) e executa o mesmo engine do cálculo individual, com processamento paralelo e persistência em lote.
Localização no menu: Movimentação Mensal > Folha de Pagamento > Cálculo > Executar
Tela: calculoPagamentoFolha.xhtml
ManagedBean: CalculoPagamentoFolhaMB
Esta é a tela principal de disparo do cálculo da folha. O usuário pesquisa e seleciona os servidores e escolhe uma das opções de execução disponíveis no menu. A execução é assíncrona — a tela exibe uma barra de progresso atualizada em tempo real.
O menu Cálculo oferece quatro opções de execução:
| Opção do menu | Descrição |
|---|---|
| Executar | Executa o cálculo completo e grava os dados financeiros |
| Simulação Individual | Simula o cálculo para um servidor específico sem gravar |
| Simular | Simula o cálculo para os servidores selecionados sem gravar |
| Simular e Gravar | Simula e já grava os dados ao mesmo tempo |
| Cálculo Por Lote | Redireciona para a tela de processamento por lote |
Localização no menu: Movimentação Mensal > Folha de Pagamento > Cálculo > Cálculo Por Lote
Tela: calculoPagamentoFolhaLote.xhtml
ManagedBean: CalculoPagamentoFolhaLoteMB
Esta tela permite processar a folha de múltiplos servidores de uma vez através do upload de um arquivo TXT. O sistema executa automaticamente o cálculo para todos os servidores listados no arquivo ao clicar em importar.
Campos e filtros disponíveis:
| Campo | Descrição |
|---|---|
| Arquivo TXT | Upload com as matrículas a serem calculadas |
| Cargo | Filtro opcional por cargo |
| Vínculo | Filtro opcional por tipo de vínculo |
| Classificação | Filtro opcional por classificação funcional |
| Local de trabalho | Filtro opcional por local de trabalho |