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 objetoHoleriteVerbaque 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éricaSysFunc_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