Wiki / SuperCalculo ~8 min

879 - Prev. Privada Custo Administrativo do Plano

⚙️ Metadados

  • Código: 879
  • Tipo: Informação
  • INSS: ISE
  • FGTS: ISE
  • IRRF: ISE
  • Natureza eSocial: -
  • DSR: Não
  • Médias: Não
  • Impacto Financeiro: Sim
  • Impacto Contábil: Sim
  • Sequência: 7551

🧮 Regra Geral

  • Lógica de Cálculo:

    1. A verba é calculada apenas para processos de Folha Regular (IdProcesso = 1). Se o tipo de folha (Solicitacao.TipoFolha) não for Regular, o cálculo é encerrado.
    2. A lógica se divide em duas ramificações principais com base no CNPJ do empregador:
      • Para NESTLE STORES (CNPJ contendo “3980271200”):
        • Inicializa a variável PrcCusteio (Percentual de Custeio) como 0M.
        • Calcula a base de cálculo (BC_v879) somando o VG_VlrSalNom (Valor do Salário Nominal) com o valor da verba 95 (Func_RecuperarSomaValorReferenciaHoleriteVerba("95")).
        • Para cada um dos nove tipos de planos de previdência privada (Fundo Coletivo PAP n.º 1, Deficit Equacionado PAP Ativos, Deficit Equacionado PAP Aposentados, Fundo Coletivo PAP II n.º 2, Deficit Equacionado PAP II Anterior 2015, Deficit Equacionado PAP II em 2015, Deficit Equacionado PAP II em 2018, Déficit Técnico 2022 PAP-Origem Fundamental Patrocinadora, Déficit Técnico 2022 PAP-Assistido Patrocinadora, Déficit Técnico 2022 PAP-Ativos Patrocinadora):
          • Define o PrcCusteio com base na Solicitacao.DataReferencia através de uma série de condições if-else if com datas específicas.
          • Para o “Deficit Equacionado PAP II em 2015”, há uma condição adicional que não calcula a verba para a data de referência 01/06/2024.
          • Cria um objeto HoleriteInformacaoBO para a verba 879.
          • Define a DescricaoFinal da verba, incluindo o nome do plano e o percentual.
          • Atribui um IdComplementoSistemaOrigem específico para cada plano (ex: “209”, “212”, “211”, etc.).
          • Atribui o PrcCusteio e a BC_v879 às propriedades Percentual e Quantidade do objeto.
          • Calcula o ValorTotal aplicando o PrcCusteio sobre a BC_v879 e arredondando o resultado.
          • Define as incidências de INSS, FGTS e IRRF como Isentas (EnumTipoIncidenciaBO.ISE).
          • Adiciona o objeto HoleriteInformacaoBO à lista de informações do holerite.
      • Para Outros Empregadores (que não NESTLE STORES):
        • Filtra os benefícios fornecidos ao empregado (Empregado.Historico.ListaBeneficioFornecido) que contenham “FUNEPP PAP - FUNDO” ou “FUNEPP PAP II - FUNDO” na descrição.
        • Para cada plano de benefício encontrado:
          • Inicializa PrcCusteio e variáveis de acumulação.
          • Calcula Vlr_95 (valor da verba 95) e BC_v879 (Base de Cálculo) de forma similar ao caso NESTLE STORES.
          • Verifica a descrição do plano para identificar qual tipo de custo administrativo aplicar (Fundo Coletivo PAP n.º 1, Deficit Equacionado PAP Ativos, Deficit Equacionado PAP Aposentados, Fundo Coletivo PAP II n.º 2, Deficit Equacionado PAP II Anterior 2015, Deficit Equacionado PAP II em 2015, Deficit Equacionado PAP II em 2018, Taxa Adm PAP II, Taxa Adm PAN).
          • Para cada tipo, define o PrcCusteio com base na Solicitacao.DataReferencia (com menos variações de data do que para NESTLE STORES).
          • Cria um objeto HoleriteInformacaoBO para a verba 879.
          • Define a DescricaoFinal da verba, incluindo o nome do plano e o percentual.
          • Atribui o IdComplementoSistemaOrigem recuperado dinamicamente.
          • Atribui o PrcCusteio e a BC_v879 às propriedades Percentual e Quantidade.
          • Calcula o ValorTotal aplicando o PrcCusteio sobre a BC_v879 e arredondando o resultado.
          • Define as incidências de INSS, FGTS e IRRF com base nas incidências padrão da verba (HoleriteInformacao.IncidenciaINSS, HoleriteInformacao.IncidenciaFGTS, HoleriteInformacao.IncidenciaIRRF).
          • Adiciona o objeto HoleriteInformacaoBO à lista de informações do holerite, apenas se um complemento com o mesmo IdComplementoSistemaOrigem (ou DescricaoFinal para alguns casos) não existir e o ValorTotal não for zero.
  • Fórmula matemática:

    • ValorTotal = Func_ArredondamentoPadrao((VG_VlrSalNom + ValorVerba95) * PrcCusteio / 100M)
  • Variáveis Utilizadas:

    • Solicitacao.TipoFolha: Tipo de processo da folha de pagamento.
    • Empregador.CNPJEmpregador: CNPJ do empregador.
    • VG_VlrSalNom: Valor do salário nominal do empregado.
    • Func_RecuperarSomaValorReferenciaHoleriteVerba("95"): Soma dos valores da verba 95 no holerite.
    • Solicitacao.DataReferencia: Data de referência do cálculo.
    • PrcCusteio: Percentual de custeio do plano.
    • BC_v879: Base de cálculo da verba 879.
    • Empregado.Historico.ListaBeneficioFornecido: Lista de benefícios fornecidos ao empregado.
    • plano.Descricao: Descrição do plano de benefício.
    • HoleriteInformacao.Verba.Codigo, HoleriteInformacao.Verba.Descricao: Código e descrição da verba padrão.
    • HoleriteInformacao.IncidenciaINSS, HoleriteInformacao.IncidenciaFGTS, HoleriteInformacao.IncidenciaIRRF: Incidências padrão da verba.
  • Condições Especiais:

    • Verificação do tipo de folha (Solicitacao.TipoFolha != EnumTipoFolhaBO.Regular).
    • Condição if (Empregador.CNPJEmpregador.ToString().Contains("3980271200") == true) para diferenciar a lógica para NESTLE STORES.
    • Múltiplas condições if-else if baseadas em Solicitacao.DataReferencia para determinar o PrcCusteio.
    • Condição if (Solicitacao.DataReferencia != SysFunc_NovaData(01, 06, 2024)) para excluir o cálculo em uma data específica para um dos planos.
    • Condições if (plano.Descricao.ToUpper().Contains(...)) para identificar o tipo de plano de previdência.
    • Condições if (Holerite.ListaHoleriteInformacao.Exists(...) == false && HI_879_PAP.ValorTotal != 0M) para evitar duplicidade e lançamentos de valor zero.

🔗 Dependências

  • Verbas Relacionadas: Verba 95.
  • Tipo de Relação: A verba 95 é uma dependência, pois seu valor é somado ao VG_VlrSalNom para compor a base de cálculo (BC_v879) da verba 879.

🧩 Funções

  • Func_RecuperarSomaValorReferenciaHoleriteVerba("95"): Recupera a soma dos valores de uma verba específica (neste caso, a verba 95) no holerite do período de referência.
  • SysFunc_NovaData(dia, mes, ano): Cria um objeto DateTime com o dia, mês e ano especificados.
  • CriarVerbaHoleriteInformacaoBO(...): Função interna para instanciar um objeto HoleriteInformacaoBO, que representa uma verba de informação no holerite.
  • Func_ArredondamentoPadrao(valor): Arredonda o valor monetário para o padrão definido no sistema (geralmente duas casas decimais).
  • SysFunc_RecuperarIdComplementoSistemaOrigem("879", DescricaoComplemento): Recupera um identificador único para o complemento de sistema de origem da verba 879, baseado em sua descrição.
  • Holerite.ListaHoleriteInformacao.Add(...): Adiciona o objeto HoleriteInformacaoBO criado à lista de verbas de informação do holerite.
  • Holerite.ListaHoleriteInformacao.Exists(...): Verifica se já existe um item na lista de verbas de informação que atenda a uma determinada condição (ex: mesmo IdComplementoSistemaOrigem ou DescricaoFinal).

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

Base_Calculo_Composta = Salario_Nominal + SOMA(Verbas_Composicao_Base)

Percentual_Custeio_Vigente = ObterPercentualCusteio(Empresa, Plano, DataReferencia)

Validacao_Bloqueio_Competencia = SE_ENTAO(Competencia_Bloqueada(Plano, DataReferencia) == VERDADEIRO, 0, 1)

Valor_Verba_879 = SE_ENTAO(Validacao_Bloqueio_Competencia == 1 E Percentual_Custeio_Vigente > 0, Arredondar((Base_Calculo_Composta * Percentual_Custeio_Vigente) / 100), 0)


1. Filtros de Elegibilidade e Isenções (Piso Seguro)

SE NOT tabela_parametros.obter_flag(“HABILITAR_VERBA_879”) ENTAO RETORNAR_VALOR(NULO) FIM_SE

SE NOT tabela_parametros.validar_processamento_permitido(holerite_atual.tipo_processamento) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 879 ignorada: Processamento permitido apenas para tipos de folha autorizados.”) RETORNAR_VALOR(NULO) FIM_SE

2. Determinação da Base de Cálculo Recomposta (Salário Nominal + Composição Parametrizada)

lista_rubricas_composicao_base = tabela_parametros.obter_lista_codigos_verba(“RUBRICAS_COMPOSICAO_BASE_879”) // Default: [95] soma_rubricas_base = 0.00

PARA CADA codigo_rubrica EM lista_rubricas_composicao_base FACA soma_rubricas_base = soma_rubricas_base + holerite_atual.obter_valor_total_verba(codigo_rubrica) FIM_PARA

base_calculo_bruta = colaborador.salario_nominal + soma_rubricas_base

SE base_calculo_bruta <= 0.00 ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 879 não processada: Base de cálculo composta é igual ou inferior a zero.”) RETORNAR_VALOR(NULO) FIM_SE

3. Obtenção dos Planos de Previdência Elegíveis e Consulta do Grid de Taxas Por Vigência

lista_planos_ativos = colaborador.obter_planos_previdencia_vinculados(holerite_atual.data_competencia)

SE lista_planos_ativos.esta_vazia() ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 879 não processada: Nenhum plano de previdência ativo encontrado no cadastro do colaborador.”) RETORNAR_VALOR(NULO) FIM_SE

PARA CADA plano EM lista_planos_ativos FACA // Validação de exceção pontual de competência (Substitui condicional por data ‘hardcoded’) SE tabela_parametros.validar_competencia_bloqueada_plano(plano.codigo_plano, holerite_atual.data_referencia) ENTAO REGISTRAR_LOG_INFORMATIVO(“Processamento suspenso para o plano ” + plano.codigo_plano + ” na competência ” + CONVERTER_PARA_TEXTO(holerite_atual.data_referencia)) CONTINUAR_PROXIMO_LOOP FIM_SE

Busca do percentual de custeio na matriz parametrizada por Grupo/Empresa, Plano e Vigência percentual_custeio = tabela_parametros.obter_percentual_custeio_vigente( empresa_id: colaborador.empresa_id, codigo_plano: plano.codigo_plano, data_referencia: holerite_atual.data_referencia )

SE percentual_custeio > 0.00 ENTAO valor_custo_adm = ARREDONDAR_PADRAO((base_calculo_bruta * percentual_custeio) / 100.00)

SE valor_custo_adm > 0.00 ENTAO complemento_sistema = tabela_parametros.obter_complemento_plano(“879”, plano.codigo_plano) id_complemento = complemento_sistema.id descricao_final = “CUSTO ADM - ” + plano.nome_exibicao + ” (” + CONVERTER_PARA_TEXTO(percentual_custeio) + ”%)”

Trava de Duplicidade no Holerite Informativo SE NOT holerite_atual.existe_informacao_duplicada(“879”, id_complemento, descricao_final) ENTAO instancia_info = holerite_atual.criar_instancia_informacao(“879”) instancia_info.valor_total = valor_custo_adm instancia_info.percentual = percentual_custeio instancia_info.quantidade = base_calculo_bruta instancia_info.id_complemento_origem = id_complemento instancia_info.descricao_final = descricao_final

instancia_info.incidencia_inss = ENUM_INCIDENCIA.ISENTO instancia_info.incidencia_fgts = ENUM_INCIDENCIA.ISENTO instancia_info.incidencia_irrf = ENUM_INCIDENCIA.ISENTO

holerite_atual.adicionar_verba_informacao(instancia_info)

REGISTRAR_LOG_AUDITORIA(“Verba 879 gerada. Plano: ” + plano.codigo_plano + ” | BC: R$ ” + CONVERTER_PARA_TEXTO(base_calculo_bruta) + ” | Taxa: ” + CONVERTER_PARA_TEXTO(percentual_custeio) + ”% | Valor: R$ ” + CONVERTER_PARA_TEXTO(valor_custo_adm)) FIM_SE FIM_SE FIM_SE FIM_PARA

RETORNAR_VALOR(NULO) FIM_FUNCAO


Parametrizações Propostas para Reestruturação

1. REGRAS DE ENTRADA E ELEGIBILIDADE GERAL

[X] Habilitar Processamento da Verba 879

Tipos de Processamento Permitidos: [X] Folha Regular [ ] Adiantamento [ ] 13º Salário [ ] Rescisão

2. COMPOSIÇÃO DA BASE DE CÁLCULO

Composição do Valor da Base: [X] Salário Nominal Contratual

Verbas Complementares da Base: [ 95 - Horas Extras / Outras Adicionais ] (+)

3. MATRIZ DE PERCENTUAIS DE CUSTEIO POR PLANO E VIGÊNCIA (SUBSTITUI CNPJ E STRINGS)

Mapeamento de Planos x Empresa x Percentuais por Competência:

[Empresa: NESTLE STORES / Grupo Geral]

+-------------------------------------+------------------+-----------------+---------------+ | Código / Nome do Plano | Vigência Início | Vigência Fim | Custeio (%) | +-------------------------------------+------------------+-----------------+---------------+ | PAP_01 - Fundo Coletivo PAP Nº 1 | 01/01/2020 | 31/12/2099 | 0.2500 | | PAP_DEF_ACT - Deficit Equac. Ativos | 01/01/2023 | 31/05/2024 | 0.1200 | | PAP_DEF_ACT - Deficit Equac. Ativos | 01/06/2024 | 01/06/2024 | 0.0000 (Bloq) | | PAP_DEF_ACT - Deficit Equac. Ativos | 02/06/2024 | 31/12/2099 | 0.1200 | | PAP_II_02 - Fundo Coletivo PAP II | 01/01/2022 | 31/12/2099 | 0.1800 | | PAN_TAXA - Taxa Adm. PAN | 01/01/2021 | 31/12/2099 | 0.1500 | +-------------------------------------+------------------+-----------------+---------------+

4. CONTROLE DE COMPLEMENTOS, DUPLICIDADE E INTERFACE

[X] Ativar Proteção Anti-Duplicidade (Garante 1 único evento por plano/complemento)

[ ] Exibir Evento no Envelope de Pagamento (Holerite do Colaborador)

[X] Exportar Evento para Espelho Contábil / Relatório Financeiro de Previdência

[X] Gravar no Barramento de Memória de Cálculo Fiscal

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

  • Empresas do Grupo Nestlé Stores (CNPJ 3980271200): Absorvidas integralmente. O tratamento condicional por CNPJ foi substituído pela atribuição do perfil de empresa e vinculação direta da matriz de vigências e percentuais por plano no cadastro central de parâmetros.
  • Demais Empregadores / Outros Clientes (Planos FUNEPP PAP I, PAP II, PAN): Absorvidos integralmente. A varredura de strings no nome do plano ("FUNEPP PAP - FUNDO", "FUNEPP PAP II - FUNDO", etc.) foi substituída pela consulta estruturada de planos de previdência vinculados ao colaborador, utilizando os IDs de complemento e tabelas de taxas por período.

Status Documental

  • Status: Documentada
  • Origem: export do Notion + catálogo da wiki
  • Fonte rastreável: 30dc75ea2e838147b80af402f894bb72

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