Wiki / SuperCalculo ~5 min

748 - Desc. Auxílio-Educação [BN]

Metadados

  • Código: 748
  • Tipo: Desconto
  • INSS: ISE
  • FGTS: ISE
  • IRRF: ISE
  • Natureza eSocial: 1407 - Auxílio-educação
  • DSR: Não
  • Médias: Não
  • Impacto Financeiro: Não
  • Impacto Contábil: Sim
  • Sequência: 7550

🧮 Regra Geral

  • Lógica de Cálculo:

    O valor da verba é calculado através da invocação da função de sistema SysFunc_GeraDescontoBeneficio. Esta função é responsável por determinar e aplicar o desconto referente ao benefício de Auxílio-Educação, utilizando o objeto HoleriteVerba que representa a verba atual no contexto do holerite.

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

ValorTotalRubrica = Negativo(Arredondar(Minimo(ObterValorBrutoDescontoEducacao(), Minimo(TetoMaximoDesconto, Maximo(0, TotalProventos - TotalOutrosDescontos)))))


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

Se (Configuracao.RubricaInativa == Verdadeiro OU Solicitacao.HoleriteSimulado == Verdadeiro OU Solicitacao.TipoProcesso == EnumTipoProcessoBO.Provisoes) { HoleriteVerba = null; InterromperCalculo(); }

Restrição por Tipos de Folha Permitidos para Processamento Se (Nao Configuracao.TiposFolhaPermitidos.Contem(Solicitacao.TipoFolha)) { EscreverMemoria(“[DESC_AUX_EDUC]”, “Cálculo ignorado: Tipo de folha (” + Solicitacao.TipoFolha + ”) não habilitado para a verba 748.”); HoleriteVerba = null; InterromperCalculo(); }

2. Determinação do Valor e Origem do Desconto (Módulo Benefícios vs. Lançamento Manual)

Definir ValorDescontoBruto = 0.00; Definir PercentualAplicado = 0.00; Definir QuantidadeUnidades = 0.00; Definir IdComplementoOrigem = null;

Definir LancamentosBeneficioEducacao = Empregado.Historico.ListaLancamentoBeneficioEducacao .Filtrar(b => b.CodVerba == Configuracao.CodigoRubricaDestino E b.ValorLancamento > 0.00 E (Solicitacao.DataReferencia >= b.DataInicioVigencia E Solicitacao.DataReferencia <= b.DataFimVigencia));

Se (LancamentosBeneficioEducacao != null E LancamentosBeneficioEducacao.Tamanho > 0) { Para Cada itemEducacao Em LancamentosBeneficioEducacao { ValorDescontoBruto = ValorDescontoBruto + itemEducacao.ValorLancamento; QuantidadeUnidades = QuantidadeUnidades + itemEducacao.Quantidade; IdComplementoOrigem = itemEducacao.idComplementoVerba; } EscreverMemoria(“[DESC_AUX_EDUC]”, “Valores de Auxílio-Educação recuperados do módulo de benefícios: R$ ” + ValorDescontoBruto); } Senao Se (Configuracao.PermitirLancamentoManual == Verdadeiro E Solicitacao.PossuiLancamentoManual(Configuracao.CodigoRubricaDestino)) { ValorDescontoBruto = Positivo(Solicitacao.ObterValorLancamentoManual(Configuracao.CodigoRubricaDestino)); QuantidadeUnidades = Solicitacao.ObterQuantidadeLancamentoManual(Configuracao.CodigoRubricaDestino); EscreverMemoria(“[DESC_AUX_EDUC]”, “Utilizando Lançamento Manual informado no movimento: R$ ” + ValorDescontoBruto); }

Se (ValorDescontoBruto <= 0.00) { EscreverMemoria(“[DESC_AUX_EDUC]”, “Cálculo cancelado: Nenhum desconto de auxílio-educação ativo ou informado para a competência.”); HoleriteVerba = null; InterromperCalculo(); }

3. Aplicação de Limites, Tetos e Proteção de Margem Líquida

Definir BaseCalculoComparticipacao = 0.00; Se (Configuracao.ModoDesconto == EnumModoDesconto.PercentualSubsidioOUBase) { BaseCalculoComparticipacao = Holerite.ObterBaseCalculo(Configuracao.CodigoBaseCalculoReferencia); ValorDescontoBruto = Func_ArredondamentoPadrao(BaseCalculoComparticipacao * (Configuracao.PercentualComparticipacao / 100.00)); PercentualAplicado = Configuracao.PercentualComparticipacao; }

Aplicação de Teto Máximo de Desconto (se parametrizado) Se (Configuracao.TetoMaximoDesconto > 0.00 E ValorDescontoBruto > Configuracao.TetoMaximoDesconto) { ValorDescontoBruto = Configuracao.TetoMaximoDesconto; EscreverMemoria(“[DESC_AUX_EDUC]”, “Valor do desconto limitado ao teto parametrizado: R$ ” + ValorDescontoBruto); }

Proteção de Margem Líquida (Evitar Holerite Negativo) Definir ProventoLiquidoDisponivel = Positivo(Holerite.ObterTotalProventos()) - Positivo(Holerite.ObterTotalDescontosExceto(Configuracao.CodigoRubricaDestino)); Definir ValorDescontoAjustado = ValorDescontoBruto;

Se (Configuracao.RespeitarMargemLiquida == Verdadeiro E ProventoLiquidoDisponivel < ValorDescontoAjustado) { Se (Configuracao.AcaoExcessoSaldo == EnumAcaoExcesso.LimitarAoProventoLiquido) { ValorDescontoAjustado = Maximo(0.00, ProventoLiquidoDisponivel); EscreverMemoria(“[DESC_AUX_EDUC]”, “Desconto de Auxílio-Educação limitado pela margem líquida (Bruto: R$ ” + ValorDescontoBruto + ” | Permissível: R$ ” + ValorDescontoAjustado + ”).”); } Senao Se (Configuracao.AcaoExcessoSaldo == EnumAcaoExcesso.LancarInsuficienciaSaldo) { Definir SaldoDevedor = ValorDescontoAjustado - ProventoLiquidoDisponivel; ValorDescontoAjustado = Maximo(0.00, ProventoLiquidoDisponivel); AtualizarOuCriarVerbaInformacao(Configuracao.CodigoRubricaInsuficienciaSaldo, SaldoDevedor); EscreverMemoria(“[DESC_AUX_EDUC]”, “Insuficiência de Saldo gerada para Auxílio-Educação: R$ ” + SaldoDevedor); } }

4. Gravação do Holerite e Disparo de Verbas Informativas Correlacionadas

Se (ValorDescontoAjustado > 0.00) { Definir TextoComplemento = ""; Se (IdComplementoOrigem != null) { Definir ObjetoComplemento = ObterComplementoVerba(IdComplementoOrigem); Se (ObjetoComplemento != null E NaoVazio(ObjetoComplemento.Descricao)) { TextoComplemento = ObjetoComplemento.Descricao; } }

Definir DescricaoFinal = Configuracao.DescricaoRubrica; Se (NaoVazio(TextoComplemento)) { DescricaoFinal = DescricaoFinal + ” - ” + TextoComplemento; }

RubricaGerada = CriarInstanciaRubrica(Configuracao.CodigoRubricaDestino); RubricaGerada.Quantidade = QuantidadeUnidades; RubricaGerada.Percentual = PercentualAplicado; RubricaGerada.ValorTotal = Negativo(Func_ArredondamentoPadrao(ValorDescontoAjustado)); RubricaGerada.Descricao = DescricaoFinal; RubricaGerada.IdComplementoSistemaOrigem = IdComplementoOrigem;

Enquadramento Fiscal estrito aos Metadados (Natureza eSocial 1407 | INSS: ISE, FGTS: ISE, IRRF: ISE) RubricaGerada.IncideINSS = EnumIncidencia.ISENTO; RubricaGerada.IncideFGTS = EnumIncidencia.ISENTO; RubricaGerada.IncideIRRF = EnumIncidencia.ISENTO;

AdicionarAoHolerite(RubricaGerada);

Disparo de Verba Informativa de Custo Patronal / Subsídio (se parametrizado) Se (Configuracao.GerarSubsidioPatronalInformativo == Verdadeiro E Configuracao.CodigoRubricaPatronalInformativa > 0) { Definir ValorSubsidioPatronal = Maximo(0.00, ObterValorTotalSubsidioEducacao() - ValorDescontoAjustado); Se (ValorSubsidioPatronal > 0.00) { AtualizarOuCriarVerbaInformacao(Configuracao.CodigoRubricaPatronalInformativa, ValorSubsidioPatronal); } }

EscreverMemoria(“[DESC_AUX_EDUC]”, “Verba 748 processada com sucesso. Valor do Desconto: R$ ” + ValorDescontoAjustado); } Senao { HoleriteVerba = null; InterromperCalculo(); }


Parametrizações Propostas para Reestruturação

1. REGRAS DE ORIGEM E INTEGRAÇÃO DE BENEFÍCIOS

[ ] Inativar Rubrica (Desativa o cálculo globalmente) Origem Primária dos Dados de Benefício: (*) Módulo de Benefícios de Educação (Empregado.Historico.ListaLancamentoBeneficioEducacao) [X] Permitir Sobregravação / Fallback via Lançamento Manual no Movimento (Valor/Quantidade)

Modo de Apuração do Desconto: (*) Valor Fixo / Lançamento do Benefício ( ) Percentual de Coparticipação sobre o Valor do Subsídio/Mensalidade ( ) Percentual de Coparticipação sobre Base Salarial do Empregado

Código da Base de Cálculo de Referência (se percentual): [ ] Percentual de Coparticipação do Empregado (%): [ 0.00 % ]

Tipos de Folha Permitidos para Processamento: [X] Regular / Mensal [X] Rescisão / Desligamento [X] Rescisão Complementar [ ] Folha de 13º Salário

2. DIRETRIZES DE TETO E PROTEÇÃO DE SALDO

Teto Máximo de Desconto por Competência (R$): [ 0.00 ] (0,00 = Sem Teto)

[X] Respeitar Margem Limite do Provento Líquido (Impedir Holerite Negativo)

Ação em Caso de Insuficiência de Provento Líquido: (*) Limitar o desconto de auxílio-educação até a margem do líquido disponível ( ) Cancelar o desconto e emitir aviso de pendência ( ) Limitar o desconto e gerar Rubrica Informativa de Insuficiência de Saldo

Código da Rubrica Informativa de Insuficiência de Saldo: [ ]

3. PARÂMETROS DE DESCRIÇÃO E VERBAS CORRELACIONADAS

Descrição Base da Rubrica: [ Desc. Auxílio-Educação [BN] ]

[X] Concatenar Descrição com o Complemento do Benefício (Ex: Nome da Instituição)

[ ] Gerar Rubrica Informativa de Subsídio / Custo Patronal └─ Código da Rubrica Informativa de Subsídio Patronal: [ ]

4. ENCARGOS E METADADOS FISCAIS (ESOCIAL)

Natureza eSocial: [ 1407 - Auxílio-educação ]

Incidências Oficiais: INSS: [ ISE - Isento ] FGTS: [ ISE - Isento ] IRRF: [ ISE - Isento ]

Clientes com mesma regra

  • Todos os Clientes (Módulo de Benefícios e Invocação da Função Legada SysFunc_GeraDescontoBeneficio): A regra geral original da verba 748 delegava a execução para a função genérica SysFunc_GeraDescontoBeneficio. O mecanismo dynamic proposto substitui a dependência dessa função genérica (“caixa-preta”) por uma estrutura explícita e auditável no próprio motor. O novo fluxo atende a todos os clientes que utilizam o desconto de auxílio-educação a partir dos dados do módulo de benefícios ou lançamentos informados diretamente na folha.

Status Documental

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

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