127 - Bolsa-Auxílio - Recesso Inden.
⚙️ Metadados
- Código: 127
- Tipo: Provento
- INSS: ISE
- FGTS: ISE
- IRRF: SAL
- Natureza eSocial: 1350 - Bolsa de estudo - Estagiário
- DSR: Não
- Médias: Não
- Impacto Financeiro: Não
- Impacto Contábil: Sim
- Sequência: 78
🧮 Regra Geral
N/A
🎯 Particularidades por Cliente/Setor
👤 Salesforce
-
Lógica de Cálculo:
- A verba é calculada apenas se o tipo de folha for Rescisão (
Solicitacao.TipoFolha == EnumTipoFolhaBO.Rescisao). - Identifica os períodos aquisitivos de recesso (
ListaPeriodoAquisitivo) que não foram encerrados e possuem dias pendentes. - Verifica se existe um último período aquisitivo (PA) com dias de direito zero ou dias pendentes zero, mas que ainda pode ser relevante para o cálculo (
UltPADtaFim). - Se houver períodos de recesso pendentes:
- Itera sobre cada
PeriodoAquisitivoBO(Calc_Recesso). - Se houver mais de um período de recesso (
Recesso.Count() > 1):- A quantidade de dias pendentes (
QtdDiasPendentes) inicia comCalc_Recesso.DiasPendentes. - Se for o último período de recesso,
QtdDiasPendentesé fixado em30dias e subtraído dos dias de férias já gozados para esse PA.
- A quantidade de dias pendentes (
- Se houver apenas um período de recesso (
Recesso.Count() == 1):QtdDiasPendentesé fixado em30dias e subtraído dos dias de férias já gozados para esse PA.
- Em ambos os casos,
QtdDiasPendentesé então subtraído da soma das quantidades da verba 126 lançadas no mês atual (SysFunc_RecuperarSomaQuantidadeLancamentosMesAtual("126")). - Se
QtdDiasPendentesfor maior que zero, a verba 127 é criada com essa quantidade.
- Itera sobre cada
- Cálculo do Valor Total:
Valor Total = Func_ArredondamentoPadrao((VG_VlrSalNom / 30M) * Quantidade) - Cenário Adicional: Se
UltPADtaFimfor diferente deDateTime.MinValuee a data de rescisão do empregado for anterior aUltPADtaFim, uma verba 127 adicional é criada com30dias de quantidade, calculada com a mesma fórmula.
- A verba é calculada apenas se o tipo de folha for Rescisão (
-
Fórmula matemática:
Valor Total = ArredondamentoPadrao((Salário Nominal ÷ 30) × Quantidade de Dias Pendentes)
-
Variáveis Utilizadas:
Solicitacao.TipoFolhaEnumTipoFolhaBO.RescisaoEmpregado.Historico.ListaPeriodoAquisitivopa.Encerrado,pa.DiasPendentespa.DiasDireitoc.DataFimUltPADtaFimEmpregado.Rescisao.DataRescisaoCalc_Recesso.NumeroPeriodoEmpregado.Historico.ListaPeriodoFeriasf.DiasFeriasQtdDiasPendentesVG_VlrSalNom.
-
Condições Especiais:
if (Solicitacao.TipoFolha == EnumTipoFolhaBO.Rescisao): Restringe o cálculo a rescisões.if (c != null && (c.DiasDireito == 0M || (c.DiasDireito > 0M && c.DiasPendentes == 0M))): Condição específica para identificarUltPADtaFimem PAs sem dias de direito ou pendentes.if (Recesso != null && Recesso.Count > 0): Garante que há períodos de recesso a serem processados.if (Recesso.Count() > 1)eif (Recesso.Count() == 1): Diferencia a lógica de cálculo da quantidade de dias pendentes com base no número de períodos aquisitivos.if (Recesso.LastOrDefault().DataInicio == Calc_Recesso.DataInicio): Aplica regra específica de 30 dias para o último período aquisitivo em caso de múltiplos períodos.if (QtdDiasPendentes > 0M): A verba só é gerada se houver dias pendentes.if (UltPADtaFim != DateTime.MinValue && Empregado.Rescisao.DataRescisao < UltPADtaFim): Condição para gerar verba com 30 dias se a rescisão ocorrer antes do fim de um PA específico.
-
Depências e Correlações:
- Verbas Relacionadas: Verba
126. - Tipo de Relação: Dependência. A quantidade de dias da verba 127 é reduzida pela soma das quantidades da verba 126 lançadas no mês atual.
- Verbas Relacionadas: Verba
-
Funções Identificadas:
CriarVerbaHoleriteVerbaBO(codigo, HoleriteVerba.Verba.Descricao): Cria uma nova instância de verba para o holerite.Func_ArredondamentoPadrao(decimal valor): Arredonda o valor calculado para o padrão do sistema.SysFunc_RecuperarSomaQuantidadeLancamentosMesAtual("126"): Recupera a soma da quantidade de lançamentos da verba126no mês de cálculo.Argumento(string valor): Utilizada para registrar os valores que compõem a memória de cálculo.EscreverMemoria("[NORMAL]", string texto): Formata e registra a memória de cálculo da verba.
💡 Proposta de Novo Cálculo
Fórmula proposta (padronizada):
ValorTotal = Arredondar((VG_VlrSalNom / 30) * TotalDiasIndenizar)
1. Filtros de Elegibilidade e Isenções (Piso Seguro)
Definir EmpregadoElegivel = Falso;
Se (Solicitacao.TipoFolha == EnumTipoFolhaBO.Rescisao) { // Validação de categoria para garantir que se aplica apenas a Estagiários Se (Configuracao.ExigirCategoriaEstagiario == Verdadeiro) { Se (Empregado.Categoria == EnumCategoriaBO.Estagiario) { EmpregadoElegivel = Verdadeiro; } } Senao { EmpregadoElegivel = Verdadeiro; } }
Se (EmpregadoElegivel == Falso) { HoleriteVerba = null; InterromperCalculo(); }
2. Determinação da Base de Cálculo
Definir ValorBaseDiario = VG_VlrSalNom / 30.00; Definir TotalDiasIndenizar = 0.00;
3. Processamento dos Períodos Aquisitivos (PA) de Recesso
Definir ListaPA = Empregado.Historico.ListaPeriodoAquisitivo.Filtrar(pa => pa.Encerrado == Falso);
Se (ListaPA != null E ListaPA.Count > 0) { Definir TotalRegistros = ListaPA.Count; Definir IndiceAtual = 0;
Para Cada PA Em ListaPA { IndiceAtual = IndiceAtual + 1; Definir QtdDiasPendentes = 0.00;
Se (TotalRegistros > 1) { Se (IndiceAtual == TotalRegistros) { // Último período de recesso em múltiplos PAs Definir DiasGozados = Empregado.Historico.ListaPeriodoFerias .Filtrar(f => f.NumeroPeriodo == PA.NumeroPeriodo) .Somar(f => f.DiasFerias); QtdDiasPendentes = Configuracao.LimiteDiasPadraoPeriodo - DiasGozados; } Senao { QtdDiasPendentes = PA.DiasPendentes; } } Senao { // Apenas um período de recesso cadastrado Definir DiasGozados = Empregado.Historico.ListaPeriodoFerias .Filtrar(f => f.NumeroPeriodo == PA.NumeroPeriodo) .Somar(f => f.DiasFerias); QtdDiasPendentes = Configuracao.LimiteDiasPadraoPeriodo - DiasGozados; }
Abatimento de verbas concorrentes de gozo/recesso pagas na mesma folha (ex: Verba 126) Se (Configuracao.AbaterVerbasGozoAtivo == Verdadeiro) { Definir QtdPagaVerbaGozo = SysFunc_RecuperarSomaQuantidadeLancamentosMesAtual(Configuracao.CodigoVerbaGozoAbatimento); QtdDiasPendentes = QtdDiasPendentes - QtdPagaVerbaGozo; }
Se (QtdDiasPendentes > 0) { TotalDiasIndenizar = TotalDiasIndenizar + QtdDiasPendentes; } } }
4. Tratamento do Cenário Adicional de Rescisão Antecipada ao Fim do Período
Se (Configuracao.AtivarGarantiaRescisaoAntecipada == Verdadeiro) { Definir UltPA = Empregado.Historico.ListaPeriodoAquisitivo .Filtrar(pa => pa.DiasDireito == 0.00 Ou (pa.DiasDireito > 0.00 E pa.DiasPendentes == 0.00)) .UltimoOuPadrao();
Se (UltPA != null) { Definir UltPADtaFim = UltPA.DataFim; Se (UltPADtaFim != DateTime.MinValue E Empregado.Rescisao.DataRescisao < UltPADtaFim) { TotalDiasIndenizar = TotalDiasIndenizar + Configuracao.DiasGarantiaAdicional; } } }
5. Liquidação de Valores e Gravação do Holerite (INSS: ISE, FGTS: ISE, IRRF: SAL)
Se (TotalDiasIndenizar > 0) { HoleriteVerba.Quantidade = TotalDiasIndenizar; HoleriteVerba.ValorTotal = Func_ArredondamentoPadrao(ValorBaseDiario * TotalDiasIndenizar); HoleriteVerba.ValorIntegral = ValorBaseDiario * TotalDiasIndenizar;
HoleriteVerba.IncidenciaINSS = RubricaMae.IncidenciaINSS; // ISE HoleriteVerba.IncidenciaFGTS = RubricaMae.IncidenciaFGTS; // ISE HoleriteVerba.IncidenciaIRRF = RubricaMae.IncidenciaIRRF; // SAL
// Memória de Cálculo para Auditoria do Ministério do Trabalho Argumento(“Bolsa-Auxílio Mensal: ” + VG_VlrSalNom.ToString(“F2”)); Argumento(“Valor Diário: ” + ValorBaseDiario.ToString(“F2”)); Argumento(“Total de Dias de Recesso Indenizados: ” + TotalDiasIndenizar.ToString(“F2”)); Argumento(“Valor Total Calculado: ” + HoleriteVerba.ValorTotal.ToString(“F2”)); EscreverMemoria(“[RECESSO_INDENIZADO]”, “Valor da bolsa-auxílio de R$ {0}, dividido por 30, multiplicado pelo total de {1} dias de recesso indenizados na rescisão, totalizando R$ {3}.”);
AdicionarAoHolerite(HoleriteVerba); } Senao { HoleriteVerba = null; }
Parametrizações Propostas para Reestruturação
1. CONTROLE DE ELEGIBILIDADE E PERFIL DO CONTRATO
[X] Permitir Cálculo Exclusivo em Processos de Rescisão (TipoFolha = Rescisao) [X] Restringir Geração de Recesso para a Categoria de Estagiário (eSocial 901)
2. ARQUITETURA DE CRITÉRIOS DE DIAS DE DIREITO
Limite de Dias Padrão por Período Aquisitivo: [ 30 ] Dias
[X] Abater Quantidade de Dias de Recesso Gozado no Mês (Evitar Duplicidade) Código da Rubrica de Abatimento (Recesso Gozado): [ 126 ]
3. DIRETRIZES PARA RESCISÃO ANTECIPADA (GARANTIA ADICIONAL)
[X] Ativar Garantia de Pagamento por Rescisão Anterior ao Término do Contrato Quantidade de Dias de Garantia Adicional a Pagar: [ 30 ] Dias
4. MATRIX TRIBUTÁRIA ESOCIAL E ATRIBUTOS FISCAIS
Código da Rubrica Destino: [ 127 ] Natureza eSocial: [ 1350 - Bolsa Estagiário ] Incidência INSS: [ ISE - Isento ] DSR: [ Não ] Incidência FGTS: [ ISE - Isento ] Médias: [ Não ] Incidência IRRF: [ SAL - Salário ] Impacto Financeiro: [ Não ] Impacto Contábil: [ Sim ]
Clientes com mesma regra
- Salesforce: Integralmente atendida e amparada pelo novo motor Dynamic. A varredura de múltiplos períodos aquisitivos abertos, a atribuição automática do teto de 30 dias deduzido das férias gozadas para o último registro (ou para o registro único), bem como a subtração dos lançamentos concorrentes da verba
126(Bolsa-Auxílio - Recesso) no mês corrente, realizam-se perfeitamente através das parametrizações do Bloco 2. O comportamento de garantia de 30 dias adicionais na hipótese de rescisão antecipada em relação ao término do período aquisitivo é integralmente coberto pelo bloco 3 de parametrização de forma nativa.
Status Documental
- Status: Documentada
- Origem: export do Notion + catálogo da wiki
- Fonte rastreável:
30dc75ea2e838139a8f0c114ac6bf45e