Wiki / SuperCalculo ~6 min

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:

    1. Verificação Inicial: A verba não é calculada (return null) se o empregado for do tipo Socio, não tiver FGTSSocio ativado (false) e a alíquota de FGTS (VG_AliquotaFGTS) for 0.00M.
    2. Obtenção da Base: Recupera o valor total da base de cálculo de FGTS (código “3000”) e armazena em BCFGTSSalario.
    3. Cálculo Principal (Base Positiva): Se BCFGTSSalario for maior que 0M:
      • Condição de Recolhimento (SEFIP/GRRF): Verifica se o tipo de folha é Regular OU se é Rescisao ou RescisaoComplementar com 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 Socio e tiver FGTSSocio ativado (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 ValorBase como BCFGTSSalario e Aliquota como VG_AliquotaFGTS.
      • Cálculo do Encargo: O ValorEncargo é calculado truncando o resultado de BCFGTSSalario multiplicado por VG_AliquotaFGTS e dividido por 100M.
      • Memória de Cálculo: Registra os argumentos e a memória de cálculo.
    4. Cálculo para Rescisão Complementar (Base Negativa): Se BCFGTSSalario for menor que 0M E o tipo de folha for RescisaoComplementar E VG_FGTS_via_SEFIP for true:
      • Define DescricaoFinal, ValorBase, Aliquota e ValorEncargo de forma similar ao cálculo principal.
  • Fórmula matemática:

    • ValorEncargo = Truncar(BCFGTSSalario * VG_AliquotaFGTS / 100)
  • Variáveis Utilizadas:

    • Empregado.TipoVinculo
    • Empregado.FGTSSocio
    • VG_AliquotaFGTS
    • BCFGTSSalario
    • Solicitacao.TipoFolha
    • Empregado.Rescisao.MotivoRescisao
    • VG_FGTS_via_SEFIP
    • VG_FGTS_via_GRRF.
  • Condições Especiais:

    • Verificação de Empregado.TipoVinculo, Empregado.FGTSSocio e VG_AliquotaFGTS para return null.
    • if (BCFGTSSalario > 0M) para o bloco de cálculo principal.
    • Condições aninhadas para Solicitacao.TipoFolha e Empregado.Rescisao.MotivoRescisao para 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.

🔗 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 == Socio e Empregado.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

Voltar ao catálogo

Digite para pesquisar...

Scroll para zoom · Esc para fechar

⌨️ Atalhos de teclado
Navegação
Ctrl K Pesquisar na wiki
Ctrl F Buscar na página
? Ver atalhos
Visualização
Ctrl Shift F Modo foco
A+ / A− Tamanho da fonte
Ctrl D Alternar tema
Ações
Ctrl B Favoritar página
Esc Fechar dialogs