| Data de elaboração | 29/10/2025 |
|---|---|
| Responsável pelo estudo | Ádrian Rabelo Mendes |
| Equipe do estudo | CAOS |
| Alvo | Governa RH, módulos governa-rh-calculo, governa-rh-comum, governa-rh-persistencia, governa-rh-web |
| Origem | Melhoria: Adequação do cálculo e persistência do FGTS para o 13º salário, para enviar os dados corretos para o eSocial |
| Objetivo |
Implementar o cálculo e a persistência nas duas parcelas do 13º salário:
Garantir que o total anual permaneça 8% do 13º total, mas distribuído entre as competências, para o envio correto do eSocial |
| Documentação correlata |
Código-fonte: - - - - - Scripts/Views (Liquibase): - |
| Observações | A solução propõe ajuste apenas na definição da base de cálculo de FGTS por rotina do 13º, sem alterar o bloco central de cálculo/persistência do FGTS já existente. |
Atualmente, o Governa RH calcula e persiste o FGTS apenas na parcela final do 13º salário, pois a base fgtsBaseCalculoValor vem como 0 no adiantamento. Para conformidade com o eSocial, é necessário calcular FGTS em ambas as parcelas. O estudo propõe uma alteração pontual na orquestração do cálculo para ajustar a base do FGTS por rotina do 13º, reaproveitando a infraestrutura já existente de cálculo e persistência.
A aplicação do FGTS ocorre no executarFinanceiro quando calculoCtx.getFgtsBaseCalculoValor() > 0.
Código relevante:
979:998:governa-rh-calculo/src/main/java/br/com/governa/rh/calculo/folha/CalculoFinanceiro.java
financeiroMensal.setFgtsFolhaBase(calculoCtx.getFgtsBaseCalculoValor() < 0 ? 0 : calculoCtx.getFgtsBaseCalculoValor());
if (calculoCtx.getFgtsBaseCalculoValor() > 0) {
try {
ParamFgts paramFgts = paramFGTSBO.buscarTodos(servidorEfetivo.getVinculoEmpregaticioId(),
servidorEfetivo.getClassificacaoFuncionalId());
if (paramFgts == null) {
log.warn("Não há parametrização de F.G.T.S ...");
} else {
financeiroMensal.setFgtsEmpresaValor(
new Fracao(calculoCtx.getFgtsBaseCalculoValor() * (paramFgts.getPercentualEmpresa() / 100)).doubleValor());
financeiroMensal.setFgtsServidorValor(
new Fracao(calculoCtx.getFgtsBaseCalculoValor() * (paramFgts.getPercentualCalculo() / 100)).doubleValor());
}
} catch (RestricaoNegocioExcecao e) {
log.warn("Existe mais de um parametro de F.G.T.S ...");
}
}
O cálculo do 13º é orquestrado por CalculoFinanceiro.calcularPagamento13(...) que chama CalculoPagamento13.calcularPagamento13(...) para montar o CalculoContexto e, em seguida, executarFinanceiro(...).
No adiantamento do 13º (RotinaCalculo.ADIANTAMENTO_13_SALARIO), a base do FGTS é setada para 0 no contexto:
436:438:governa-rh-calculo/src/main/java/br/com/governa/rh/calculo/folha/CalculoPagamento13.java
calculoCtx.setPrevidenciaBaseCalculoValor(0d);
calculoCtx.setFgtsBaseCalculoValor(0d);
calculoCtx.setIrrfBaseCalculoValor(0d);
Como consequência, o FGTS só é calculado na parcela final, o que não atende ao eSocial.
Ajustar a base do FGTS no início de executarFinanceiro(…), conforme as rotinas de:
Exemplo de implementação sugerida (trecho a inserir no início de executarFinanceiro):
// AJUSTE: FGTS nas duas parcelas do 13º
if (RotinaCalculo.ADIANTAMENTO_13_SALARIO.equals(rotinaCalculo)) {
ParamDecimoTerceiro paramDecimoTerceiro =
paramDecimoTerceiroBO.buscaParamDecimoTerceiroPorTipo(TipoParamentroDecimoTerceiro.ADIANTAMENTO);
if (paramDecimoTerceiro != null) {
Double percentualAdiantamento = paramDecimoTerceiro.getPercentualAdiantamento(); // ex.: 50
Double baseAdiantamento = calculoCtx.getSalarioBrutoValor() * (percentualAdiantamento / 100.0);
calculoCtx.setFgtsBaseCalculoValor(baseAdiantamento);
}
} else if (RotinaCalculo.PAGAMENTO_13_SALARIO.equals(rotinaCalculo)) {
ParamDecimoTerceiro paramDecimoTerceiro =
paramDecimoTerceiroBO.buscaParamDecimoTerceiroPorTipo(TipoParamentroDecimoTerceiro.ADIANTAMENTO);
if (paramDecimoTerceiro != null) {
Double percentualAdiantamento = paramDecimoTerceiro.getPercentualAdiantamento();
Double baseAdiantamento = calculoCtx.getSalarioBrutoValor() * (percentualAdiantamento / 100.0);
Double baseParcelaFinal = calculoCtx.getSalarioBrutoValor() - baseAdiantamento;
calculoCtx.setFgtsBaseCalculoValor(baseParcelaFinal);
}
}
Observações de implementação:
calculoCtx.getSalarioBrutoValor() reflete a parcela vigente da competência (adiantamento ou final), pois é reconstituído conforme as verbas da rotina do 13ºCampos persistidos em RH.FINANCEIRO_MENSAL
fgts_folha_base, fgts_servidor_valor, fgts_empresa_valor (entidade FinanceiroMensal)Servidor padrão (13º total R$ 5.000, adiantamento 50%, FGTS 8%):
Servidor com médias: 13º total R$ 5.300, adiantamento 50%:
Risco baixo: alteração pontual, reaproveitando regras existentes.
Mitigação:
Ajustar a base do FGTS por rotina do 13º dentro do `executarFinanceiro(...)` permite calcular e persistir o FGTS em ambas as parcelas, sem alteração de schema ou duplicação de regras. A solução garante conformidade com o eSocial, mantém o total anual de 8% sobre o 13º e preserva a arquitetura existente.
governa-rh-calculo/folha/CalculoFinanceiro.javagoverna-rh-calculo/folha/CalculoPagamento13.javagoverna-rh-calculo/folha/CalculoFgts.javagoverna-rh-comum/entidade/FinanceiroMensal.javagoverna-rh-comum/entidade/ParamFgts.java