Wiki / SuperCalculo ~5 min

427 - Bolsa-Auxílio - Afastamento Remunerado

⚙️ Metadados

  • Código: 427
  • Tipo: Provento
  • INSS: ISE
  • FGTS: ISE
  • IRRF: SAL
  • Natureza eSocial: -
  • DSR: Não
  • Médias: Não
  • Impacto Financeiro: Não
  • Impacto Contábil: Sim
  • Sequência: 5

🧮 Regra Geral

ID da Fórmula: 41810

  • Lógica de Cálculo:

    1. Primeiramente, recupera a quantidade de dias de afastamento remunerado utilizando a função RecuperarDiasAfastamento com o tipo EnumTipoAfastamentoBO.AfastamentoRemunerado.
    2. Se a quantidade de DiasAfastamentoRemunerado for maior que zero:
      • Acumula esses dias na variável global VG_DiasAfastAcum.
      • Verifica se o total acumulado (VG_DiasAfastAcum) atinge 31 dias. Se sim, subtrai 1 dia tanto de DiasAfastamentoRemunerado quanto de VG_DiasAfastAcum, ajustando o cálculo para um limite mensal.
    3. A quantidade final da verba (HoleriteVerba.Quantidade) é definida como os DiasAfastamentoRemunerado (já ajustados, se aplicável).
    4. O valor total da verba (HoleriteVerba.ValorTotal) é calculado dividindo o VG_VlrSalNom (valor do salário nominal) por 30 e multiplicando pelo DiasAfastamentoRemunerado. O resultado é arredondado pela função Func_ArredondamentoPadrao.
  • Fórmula matemática:

    • Valor Total = Func_ArredondamentoPadrao((VG_VlrSalNom / 30) * DiasAfastamentoRemunerado)
  • Variáveis Utilizadas:

    • DiasAfastamentoRemunerado
    • VG_DiasAfastAcum
    • VG_VlrSalNom
    • HoleriteVerba.Quantidade
    • HoleriteVerba.ValorTotal.
  • Condições Especiais:

    • A verba só é calculada se DiasAfastamentoRemunerado for maior que 0.
    • Há um ajuste de dias: se a soma acumulada de dias de afastamento (VG_DiasAfastAcum) atingir 31, 1 dia é subtraído do cálculo da verba e do acumulador.

🧩 Funções

  • RecuperarDiasAfastamento(EnumTipoAfastamentoBO.AfastamentoRemunerado): Utilizada para obter a quantidade de dias de afastamento remunerado.
  • Func_ArredondamentoPadrao(): Aplica o arredondamento padrão do sistema ao valor final da verba.
  • Argumento() e EscreverMemoria(): Funções para registrar informações na memória de cálculo do holerite.

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

ValorTotal = Se(ModoApuracao == “AUTOMATICO_SISTEMA”, Minimo(Func_ArredondamentoPadrao((VG_VlrSalNom / 30) * Se(VG_DiasAfastAcum + DiasAfastamento >= 31, DiasAfastamento - 1, DiasAfastamento)), TetoMaximo), Minimo(ValorLancado, TetoMaximo))


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 Tipo de Folha Processada Se (Configuracao.ListaTiposFolhaPermitidos.Tamanho > 0 E Nao Configuracao.ListaTiposFolhaPermitidos.Contem(Solicitacao.TipoFolha)) { EscreverMemoria(“[BOLSA_AUXILIO_AFAST_REMUN]”, “Cálculo interrompido: Tipo de folha (” + Solicitacao.TipoFolha + ”) não habilitado.”); HoleriteVerba = null; InterromperCalculo(); }

Restrição de Categoria eSocial (Somente Estagiários/Bolsistas) Se (Configuracao.ValidarCategoriaEstagiario == Verdadeiro E Nao Configuracao.ListaCategoriasPermitidas.Contem(Trabalhador.CategoriaeSocial)) { EscreverMemoria(“[BOLSA_AUXILIO_AFAST_REMUN]”, “Cálculo interrompido: Trabalhador não pertence à categoria de Estagiário/Bolsista.”); HoleriteVerba = null; InterromperCalculo(); }

2. Determinação da Base de Cálculo, Apuração e Fallback de Lançamento

Definir PossuiLancamentoManual = Func_ValidarExistenciaLancamento(Lancamento); Definir ValorBaseCalculo = 0.00; Definir DiasAfastamentoApurados = 0.00;

Se (Configuracao.ModoApuracao == “AUTOMATICO_SISTEMA”) { Apuração via Histórico de Afastamento do Estagiário/Bolsista DiasAfastamentoApurados = RecuperarDiasAfastamento(EnumTipoAfastamentoBO.AfastamentoRemunerado);

Se (DiasAfastamentoApurados > 0) { Controle de Acúmulo e Ajuste Comercial (Tratamento para meses de 31 dias / Fechamento de Mês) Definir TotalDiasAcumulados = VariaveisGlobais.VG_DiasAfastAcum + DiasAfastamentoApurados;

Se (Configuracao.AjustarLimiteComercialMensal == Verdadeiro E TotalDiasAcumulados >= 31) { DiasAfastamentoApurados = DiasAfastamentoApurados - 1; VariaveisGlobais.VG_DiasAfastAcum = TotalDiasAcumulados - 1; EscreverMemoria(“[BOLSA_AUXILIO_AFAST_REMUN]”, “Ajuste de limite de dias aplicados (Acúmulo atingiu limite mensal de 31 dias).”); } Senao { VariaveisGlobais.VG_DiasAfastAcum = TotalDiasAcumulados; }

Determinação da Base Salarial/Bolsa Contratual Definir BaseBolsaNominal = Positivo(VariaveisGlobais.VG_VlrSalNom); Definir DivisorMesComercial = Configuracao.DivisorDiasMes > 0 ? Configuracao.DivisorDiasMes : 30.00;

Se (BaseBolsaNominal > 0.00 E DiasAfastamentoApurados > 0) { ValorBaseCalculo = (BaseBolsaNominal / DivisorMesComercial) * DiasAfastamentoApurados; } } Senao Se (Configuracao.PermitirFallbackManual == Verdadeiro E PossuiLancamentoManual == Verdadeiro) { ValorBaseCalculo = Positivo(Lancamento.ValorTotal); DiasAfastamentoApurados = Positivo(Lancamento.Quantidade); } } Senao Se (Configuracao.ModoApuracao == “LANCAMENTO_MANUAL”) { Se (PossuiLancamentoManual == Verdadeiro E Lancamento.ValorTotal > 0.00) { ValorBaseCalculo = Positivo(Lancamento.ValorTotal); DiasAfastamentoApurados = Positivo(Lancamento.Quantidade); } Senao { EscreverMemoria(“[BOLSA_AUXILIO_AFAST_REMUN]”, “Cálculo interrompido: Modo manual ativo, mas nenhum lançamento válido foi informado.”); HoleriteVerba = null; InterromperCalculo(); } }

Se (ValorBaseCalculo <= 0.00 OU DiasAfastamentoApurados <= 0) { EscreverMemoria(“[BOLSA_AUXILIO_AFAST_REMUN]”, “Cálculo interrompido: Quantidade de dias ou valor base apurado nulo ou negativo.”); HoleriteVerba = null; InterromperCalculo(); }

3. Aplicação de Limites, Tetos e Ajustes Configuráveis

Definir ValorProventoApurado = ValorBaseCalculo;

Se (Configuracao.AplicarTetoMaximo == Verdadeiro E Configuracao.ValorTetoMaximo > 0.00) { Se (ValorProventoApurado > Configuracao.ValorTetoMaximo) { ValorProventoApurado = Configuracao.ValorTetoMaximo; } }

Definir ValorProventoFinal = Func_ArredondamentoPadrao(ValorProventoApurado);

Se (ValorProventoFinal <= 0.00) { HoleriteVerba = null; InterromperCalculo(); }

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

RubricaGerada = CriarInstanciaRubrica(Configuracao.CodigoRubricaDestino); RubricaGerada.Quantidade = DiasAfastamentoApurados; RubricaGerada.ValorReferencia = VariaveisGlobais.VG_VlrSalNom; RubricaGerada.ValorTotal = Positivo(ValorProventoFinal);

Enquadramento Fiscal Conforme Metadados (Bolsa-Auxílio em Afastamento - Isento de INSS/FGTS, Tributável em IRRF conforme tabela SAL) RubricaGerada.IncideINSS = EnumIncidencia.ISENTO; RubricaGerada.IncideFGTS = EnumIncidencia.ISENTO; RubricaGerada.IncideIRRF = EnumIncidencia.SAL;

AdicionarAoHolerite(RubricaGerada);

Disparo de Rubrica Informativa de Controle de Dias Afastados se Configurado Se (Configuracao.GerarRubricaInformativaControle == Verdadeiro E Configuracao.CodigoRubricaInformativa > 0) { RubricaInformativa = CriarInstanciaRubrica(Configuracao.CodigoRubricaInformativa); RubricaInformativa.Quantidade = DiasAfastamentoApurados; RubricaInformativa.ValorTotal = ValorProventoFinal; RubricaInformativa.TipoCalculo = EnumTipoRubrica.INFORMATIVA; AdicionarAoHolerite(RubricaInformativa); }

Registro da Memória de Cálculo EscreverMemoria(“[BOLSA_AUXILIO_AFAST_REMUN]”, “Bolsa-Auxílio Afastamento Remunerado calculada com sucesso. Dias: ” + DiasAfastamentoApurados + ”, Valor: R$ ” + RubricaGerada.ValorTotal);


Parametrizações Propostas para Reestruturação

1. REGRAS DE ENTRADA E FONTE DE DADOS

[ ] Inativar Rubrica (Desativa o cálculo globalmente) Modo de Apuração da Base de Cálculo: (X) AUTOMATICO_SISTEMA (Apuração proporcional via cadastro de afastamento) ( ) LANCAMENTO_MANUAL (Valor informado diretamente via interface/importação)

Divisor Proporcional Mensal: [ 30 ] dias [X] Ajustar limite comercial mensal em acúmulos >= 31 dias (subtrai 1 dia em meses de 31 dias) [X] Validar Exclusividade de Categoria eSocial (Somente Estagiários / Bolsistas) [X] Permitir Fallback de Lançamento Manual caso a Apuração Automática retorne zero [X] Interromper Processamento se o Valor Resultante For Igual a Zero (0,00)

2. DIRETRIZES DE PROTEÇÃO E LIMITES

[ ] Aplicar Limitador / Teto Máximo de Valor └─ Valor Teto Máximo Permitido: R$ [ 0,00 ]

3. DISPARO DE VERBAS INFORMATIVAS CORRELACIONADAS

[ ] Gerar Rubrica Informativa de Controle de Afastamento └─ Código da Rubrica Informativa Destino: [ 0 ]

4. AMBIENTE E TIPOS DE FOLHA PERMITIDOS

Tipos de Processamento Habilitados: [X] Regular / Mensal [X] Férias / Adiantamento de Férias [X] Rescisão / Desligamento [X] Complementar / Retroativa

5. ENCARGOS E ENQUADRAMENTO FISCAL

Enquadramento Fiscal eSocial (Natureza 1350 - Bolsa de estudo / Remuneração de Estágio): INSS: [ ISE - Isento ] FGTS: [ ISE - Isento ] IRRF: [ SAL - Salário Normal / Tabela Progressiva ]

Clientes com mesma regra

  • Todos os Clientes (Padrão e Específicos): A regra cadastrada sob a fórmula ID 41810 efetua a leitura da tabela de afastamentos do estagiário, realiza o ajuste de teto de 31 dias acumulados e calcula a remuneração pela fração $1/30$ da bolsa por dia afastado. O novo motor dynamic engloba perfeitamente esta regra configurando o Modo de Apuração como AUTOMATICO_SISTEMA, mantendo ativas as flags de Ajustar limite comercial mensal e Validar Exclusividade de Categoria eSocial.

Status Documental

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

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