900 - FGTS
⚙️ Metadados
- Código: 900
- Tipo: Encargos
- INSS: ISE
- FGTS: ISE
- IRRF: ISE
- Natureza eSocial: -
- DSR: Não
- Médias: Não
- Impacto Financeiro: Não
- Impacto Contábil: Sim
- Sequência: 9011
🧮 Regra Geral
-
Lógica de Cálculo:
- Verificação Inicial: A verba não é calculada (
return null) se o empregado for do tipoSocio, não tiverFGTSSocioativado (false) e a alíquota de FGTS (VG_AliquotaFGTS) for0.00M. - Obtenção da Base: Recupera o valor total da base de cálculo de FGTS (código “3000”) e armazena em
BCFGTSSalario. - Cálculo Principal (Base Positiva): Se
BCFGTSSalariofor maior que0M:- Condição de Recolhimento (SEFIP/GRRF): Verifica se o tipo de folha é
RegularOU se éRescisaoouRescisaoComplementarcom motivos de rescisão específicos (Com Justa Causa, Contrato Experiência Empregado, Pedido Demissão, Morte Empregado). Se essas condições forem atendidas, o FGTS é considerado “via SEFIP”. - Descrição Customizada para Sócios: Se o empregado for
Socioe tiverFGTSSocioativado (true), a descrição final da verba é formatada como “FGTS Diretor Não Empregado {VG_AliquotaFGTS}%”. - Descrição Padrão: Caso contrário, a descrição final é formatada como “{Descrição da Verba} {VG_AliquotaFGTS}%”.
- Atribuição de Valores: Define
ValorBasecomoBCFGTSSalarioeAliquotacomoVG_AliquotaFGTS. - Cálculo do Encargo: O
ValorEncargoé calculado truncando o resultado deBCFGTSSalariomultiplicado porVG_AliquotaFGTSe dividido por100M. - Memória de Cálculo: Registra os argumentos e a memória de cálculo.
- Condição de Recolhimento (SEFIP/GRRF): Verifica se o tipo de folha é
- Cálculo para Rescisão Complementar (Base Negativa): Se
BCFGTSSalariofor menor que0ME o tipo de folha forRescisaoComplementarEVG_FGTS_via_SEFIPfortrue:- Define
DescricaoFinal,ValorBase,AliquotaeValorEncargode forma similar ao cálculo principal.
- Define
- Verificação Inicial: A verba não é calculada (
-
Fórmula matemática:
ValorEncargo = Truncar(BCFGTSSalario * VG_AliquotaFGTS / 100)
-
Variáveis Utilizadas:
Empregado.TipoVinculoEmpregado.FGTSSocioVG_AliquotaFGTSBCFGTSSalarioSolicitacao.TipoFolhaEmpregado.Rescisao.MotivoRescisaoVG_FGTS_via_SEFIPVG_FGTS_via_GRRF.
-
Condições Especiais:
- Verificação de
Empregado.TipoVinculo,Empregado.FGTSSocioeVG_AliquotaFGTSparareturn null. if (BCFGTSSalario > 0M)para o bloco de cálculo principal.- Condições aninhadas para
Solicitacao.TipoFolhaeEmpregado.Rescisao.MotivoRescisaopara determinar o tipo de recolhimento de FGTS. if (Empregado.TipoVinculo == EnumTipoVinculoBO.Socio && Empregado.FGTSSocio == true)para descrição específica de sócios.if (BCFGTSSalario < 0M && Solicitacao.TipoFolha == EnumTipoFolhaBO.RescisaoComplementar && VG_FGTS_via_SEFIP == true)para tratamento de base negativa em rescisão complementar.
- Verificação de
🔗 Dependências
- Verbas Relacionadas: Depende da composição da base de cálculo “3000” (
RecuperarValorTotalBase("3000")). - Tipo de Relação: Dependência. O cálculo desta verba requer que a base “3000” já tenha sido apurada.
🧩 Funções
RecuperarValorTotalBase("3000"): Obtém o valor total de uma base de cálculo específica (neste caso, a base 3000 para FGTS).AdicionarMensagemInfoPublicaCalculo: Adiciona mensagens informativas ao log de cálculo do holerite.Func_Truncar: Trunca um valor numérico, removendo casas decimais excedentes (geralmente para duas casas decimais em valores monetários).Argumento: Registra um valor como argumento para a memória de cálculo.EscreverMemoria: Formata e armazena a descrição detalhada do cálculo na memória.
💡 Proposta de Novo Cálculo
Fórmula proposta (padronizada):
Elegivel_Socio = SE(TipoVinculo == SOCIO, FGTSSocioAtivo E Aliquota_FGTS > 0, VERDADEIRO)
Elegivel_Base = SE(Base_3000 > 0, SE(Processamento == REGULAR, VERDADEIRO, MotivoRescisao EM Lista_Motivos_SEFIP OU Processamento == RESCISAO), SE(Base_3000 < 0 E Processamento == RESCISAO_COMPLEMENTAR, VG_FGTS_via_SEFIP, FALSO))
Valor_Verba_900 = SE(Habilitada E Processamento_Permitido E Elegivel_Socio E Elegivel_Base, Truncar(Base_3000 * (Aliquota_FGTS / 100), 2), 0)
1. Filtros de Elegibilidade e Isenções (Piso Seguro)
SE NOT tabela_parametros.obter_flag(“HABILITAR_VERBA_900”) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 900 desabilitada em parâmetros gerais.”) RETORNAR_VALOR(NULO) FIM_SE
SE NOT tabela_parametros.validar_processamento_permitido(holerite_atual.tipo_processamento) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 900 ignorada: Tipo de processamento não habilitado.”) RETORNAR_VALOR(NULO) FIM_SE
Validação de elegibilidade específica para Vínculo de Sócio / Diretor Não Empregado aliquota_fgts = holerite_atual.obter_variavel_global(“VG_AliquotaFGTS”)
SE colaborador.tipo_vinculo == ENUM_TIPO_VINCULO.SOCIO ENTAO SE NOT colaborador.fgts_socio_ativo OU aliquota_fgts == 0.00 ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 900 encerrada: Sócio sem recolhimento de FGTS habilitado.”) RETORNAR_VALOR(NULO) FIM_SE FIM_SE
2. Determinação da Base de Cálculo e Regras de Apuração (SEFIP / GRRF)
codigo_base_fgts = tabela_parametros.obter_string(“CODIGO_VERBA_BASE_FGTS”) // Padrão: “3000” bc_fgts_salario = holerite_atual.obter_valor_base_calculo(codigo_base_fgts)
fgts_via_sefip = FALSO fgts_via_grrf = FALSO
SE bc_fgts_salario > 0.00 ENTAO SE holerite_atual.tipo_processamento == ENUM_TIPO_PROCESSAMENTO.REGULAR ENTAO fgts_via_sefip = VERDADEIRO SENAO SE holerite_atual.tipo_processamento EM [ENUM_TIPO_PROCESSAMENTO.RESCISAO, ENUM_TIPO_PROCESSAMENTO.RESCISAO_COMPLEMENTAR] ENTAO motivos_sefip = tabela_parametros.obter_lista_inteiros(“MOTIVOS_RESCISAO_FGTS_SEFIP”) SE motivos_sefip.contem(colaborador.rescisao.motivo_desligamento) ENTAO fgts_via_sefip = VERDADEIRO SENAO fgts_via_grrf = VERDADEIRO FIM_SE FIM_SE SENAO SE bc_fgts_salario < 0.00 E holerite_atual.tipo_processamento == ENUM_TIPO_PROCESSAMENTO.RESCISAO_COMPLEMENTAR ENTAO Tratamento para Base Negativa em Rescisão Complementar SE holerite_atual.obter_variavel_global(“VG_FGTS_via_SEFIP”) ENTAO fgts_via_sefip = VERDADEIRO FIM_SE SENAO REGISTRAR_LOG_INFORMATIVO(“Verba 900 encerrada: Base de FGTS nula ou incompatível com o tipo de folha.”) RETORNAR_VALOR(NULO) FIM_SE
Atualização das variáveis globais de direcionamento de recolhimento holerite_atual.definir_variavel_global(“VG_FGTS_via_SEFIP”, fgts_via_sefip) holerite_atual.definir_variavel_global(“VG_FGTS_via_GRRF”, fgts_via_grrf)
3. Aplicação de Alíquota, Limites e Truncamento Legal
SE aliquota_fgts <= 0.00 ENTAO aliquota_fgts = tabela_parametros.obter_valor_decimal(“ALIQUOTA_FGTS_PADRAO”) // Padrão: 8.00% FIM_SE
Regra legal do FGTS: Truncamento do resultado monetário valor_encargo_bruto = bc_fgts_salario * (aliquota_fgts / 100.00) valor_final_900 = TRUNCAR_DECIMAL(valor_encargo_bruto, 2)
piso_minimo = tabela_parametros.obter_valor_decimal(“PISO_MINIMO_VERBA_900”) SE ABSOLUTO(valor_final_900) < piso_minimo ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 900 encerrada: Encargo apurado inferior ao piso mínimo configurado.”) RETORNAR_VALOR(NULO) FIM_SE
4. Gravação da Rubrica de Encargo e Notificação de Memória de Cálculo
instancia_encargo = holerite_atual.criar_instancia_encargo(“900”)
SE colaborador.tipo_vinculo == ENUM_TIPO_VINCULO.SOCIO E colaborador.fgts_socio_ativo ENTAO instancia_encargo.descricao_final = “FGTS Diretor Não Empregado ” + FORMATAR_DECIMAL(aliquota_fgts, 2) + ”%” SENAO instancia_encargo.descricao_final = instancia_encargo.descricao_original + ” ” + FORMATAR_DECIMAL(aliquota_fgts, 2) + ”%” FIM_SE
instancia_encargo.valor_base = bc_fgts_salario instancia_encargo.aliquota = aliquota_fgts instancia_encargo.valor_encargo = valor_final_900
instancia_encargo.incidencia_inss = ENUM_INCIDENCIA.ISENTO instancia_encargo.incidencia_fgts = ENUM_INCIDENCIA.ISENTO instancia_encargo.incidencia_irrf = ENUM_INCIDENCIA.ISENTO
holerite_atual.adicionar_verba_encargo(instancia_encargo)
Gravação da Memória de Cálculo Auditável REGISTRAR_MEMORIA_CALCULO(“Verba 900 - FGTS | Vinculo: ” + CONVERTER_PARA_TEXTO(colaborador.tipo_vinculo) + ” | Base FGTS (3000): R$ ” + CONVERTER_PARA_TEXTO(bc_fgts_salario) + ” | Aliquota: ” + CONVERTER_PARA_TEXTO(aliquota_fgts) + ”% | Encargo Truncado: R$ ” + CONVERTER_PARA_TEXTO(valor_final_900) + ” | Via SEFIP: ” + CONVERTER_PARA_TEXTO(fgts_via_sefip))
RETORNAR_VALOR(NULO) FIM_FUNCAO
Parametrizações Propostas para Reestruturação
1. REGRAS DE ELEGIBILIDADE E PROCESSAMENTO
[X] Habilitar Processamento da Verba 900
Tipos de Processamento Permitidos: [X] Folha Regular [ ] Adiantamento [ ] 13º Salário [X] Rescisão [X] Rescisão Complementar
2. REGRA DE DIRECIONAMENTO E MOTIVOS DE RESCISÃO (SEFIP x GRRF)
Motivos de Rescisão com Recolhimento de FGTS via SEFIP:
[X] Com Justa Causa (Demissão por Justa Causa)
[X] Término de Contrato de Experiência / Prazo Determinado
[X] Pedido de Demissão pelo Empregado
[X] Morte do Empregado
[ ] Dispensa Sem Justa Causa (Recolhimento via GRRF/Guia Rescisória)
[ ] Rescisão por Acordo (Art. 484-A CLT)
[X] Permitir Ajuste de Base Negativa em Rescisão Complementar (via SEFIP)
3. BASES DE CÁLCULO E REGRAS PARA SÓCIOS / DIRETORES
Código da Verba Base de FGTS …: [ 3000 - Base de Cálculo FGTS v ]
Alíquota Padrão FGTS (Fallback) …: [ 8,0000 ] %
Configurações para Sócios / Diretores Não Empregados:
[X] Exigir Flag ‘FGTSSocio’ Ativa no Cadastro do Colaborador
Descrição Customizada para Sócios …: [ FGTS Diretor Não Empregado ]
4. DIRETRIZES DE FORMATAÇÃO, ARREDONDAMENTO E E-SOCIAL
Piso Mínimo para Gravação (R$): [ 0,01 ]
Tipo de Arredondamento / Truncamento: [ Truncamento sem Arredondamento (2 Decimais) v ]
[X] Exibir Alíquota Apurada na Descrição do Evento
[ ] Impacto Financeiro (Não)
[X] Impacto Contábil (Sim)
Incidência INSS: [ 00 - Não é Base de Cálculo (Isento) v ]
Incidência IRRF: [ 00 - Não é Base de Cálculo (Isento) v ]
Incidência FGTS: [ 00 - Não é Base de Cálculo (Isento) v ]
Natureza eSocial: [ Isento / Não Aplicável v ]
Clientes com mesma regra
- Regra Geral / Todos os Clientes: Absorvida integralmente. As regras de validação para sócios/diretores não empregados (
Empregado.TipoVinculo == SocioeEmpregado.FGTSSocio), o tratamento das bases de cálculo positivas e negativas (na rescisão complementar via SEFIP) e a truncagem legal do encargo de FGTS sobre a base 3000 foram completamente incorporados no fluxo unificado. As condicionais por motivos de rescisão foram convertidas em tabelas parametrizáveis.
Status Documental
- Status: Documentada
- Origem: export do Notion + catálogo da wiki
- Fonte rastreável:
30dc75ea2e83815aafceeb44791b3e28