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:
- Primeiramente, recupera a quantidade de dias de afastamento remunerado utilizando a função
RecuperarDiasAfastamentocom o tipoEnumTipoAfastamentoBO.AfastamentoRemunerado. - Se a quantidade de
DiasAfastamentoRemuneradofor 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 deDiasAfastamentoRemuneradoquanto deVG_DiasAfastAcum, ajustando o cálculo para um limite mensal.
- Acumula esses dias na variável global
- A quantidade final da verba (
HoleriteVerba.Quantidade) é definida como osDiasAfastamentoRemunerado(já ajustados, se aplicável). - O valor total da verba (
HoleriteVerba.ValorTotal) é calculado dividindo oVG_VlrSalNom(valor do salário nominal) por 30 e multiplicando peloDiasAfastamentoRemunerado. O resultado é arredondado pela funçãoFunc_ArredondamentoPadrao.
- Primeiramente, recupera a quantidade de dias de afastamento remunerado utilizando a função
-
Fórmula matemática:
Valor Total = Func_ArredondamentoPadrao((VG_VlrSalNom / 30) * DiasAfastamentoRemunerado)
-
Variáveis Utilizadas:
DiasAfastamentoRemuneradoVG_DiasAfastAcumVG_VlrSalNomHoleriteVerba.QuantidadeHoleriteVerba.ValorTotal.
-
Condições Especiais:
- A verba só é calculada se
DiasAfastamentoRemuneradofor 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.
- A verba só é calculada se
🧩 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()eEscreverMemoria(): 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çãocomoAUTOMATICO_SISTEMA, mantendo ativas as flags deAjustar limite comercial mensaleValidar Exclusividade de Categoria eSocial.
Status Documental
- Status: Documentada
- Origem: export do Notion + catálogo da wiki
- Fonte rastreável:
30dc75ea2e838139a8f0c114ac6bf45e