Wiki / SuperCalculo ~7 min

181 - Hora Extra Feriado

⚙️ Metadados

  • Código: 181
  • Tipo: Provento
  • INSS: SAL
  • FGTS: SAL
  • IRRF: SAL
  • Natureza eSocial: 1003 - Horas extraordinárias
  • DSR: Sim
  • Médias: Sim
  • Impacto Financeiro: Não
  • Impacto Contábil: Sim
  • Sequência: 726

🧮 Regra Geral

ID da Fórmula: 3846

Lógica de Cálculo:

  1. Validação Inicial: A fórmula primeiramente verifica se existe um lançamento para a verba 181 (Func_ValidarExistenciaLancamento). Se não houver, o cálculo não prossegue.
  2. Validação de Valores: Em seguida, verifica se o Percentual e a Quantidade do lançamento são maiores que zero. Caso contrário, um erro crítico é disparado (SysFunc_Panico), indicando que a verba não pode ser calculada com valores zerados.
  3. Definição da Base de Cálculo: A variável BaseCalculo é inicializada com o valor da variável global VG_BCHExtAdNot (Base de Cálculo Hora Extra Adicional Noturno).
  4. Formatação da Descrição: A descrição final da verba no holerite (HoleriteVerba.DescricaoFinal) é formatada para incluir a descrição original e o percentual da hora extra (ex: “Hora Extra Feriado 100,00%”).
  5. Cálculo do Valor Total: O valor total da verba (HoleriteVerba.ValorTotal) é calculado e arredondado para o padrão do sistema (Func_ArredondamentoPadrao) utilizando a seguinte lógica: - (BaseCalculo / VG_HsMes): Calcula o valor da hora normal. - * (1 + (Lancamento.Percentual / 100M)): Aplica o percentual da hora extra (ex: 100% para hora extra 100%). - * Lancamento.Quantidade: Multiplica pelo número de horas extras lançadas.
  6. Memória de Cálculo: Os argumentos da fórmula (BaseCalculo, VG_HsMes, Lancamento.Percentual, Lancamento.Quantidade, HoleriteVerba.ValorTotal) são registrados, e uma memória de cálculo detalhada é gerada para explicar o cálculo no holerite.
  7. Geração de DSR: Após o cálculo do valor total, a fórmula verifica se a verba 181 compõe DSR (SysFunc_VerbaPossuiDSR) e se o HoleriteVerba.ValorTotal é maior que zero. Se ambas as condições forem verdadeiras, a função Func_DSR é chamada para calcular e gerar a verba de DSR (verba 55) relacionada à Hora Extra Feriado.
  • Variáveis Utilizadas:

    • Lancamento.Percentual: Percentual da hora extra (ex: 100%).
    • Lancamento.Quantidade: Quantidade de horas extras.
    • VG_BCHExtAdNot: Variável global que representa a base de cálculo para hora extra e adicional noturno.
    • Solicitacao.Cliente: Nome do cliente atual.
    • Empregado.TipoPagamento: Tipo de pagamento do empregado (ex: Mensalista).
    • VG_HsMes: Variável global que representa a carga horária mensal.
    • HoleriteVerba.DescricaoFinal: Descrição que aparecerá no holerite.
    • HoleriteVerba.ValorTotal: Valor final calculado da verba.
    • descricao: Variável que contém a descrição original da verba (não definida no snippet, mas assumida como contexto).
  • Condições Especiais:

    • if (Func_ValidarExistenciaLancamento(Lancamento) == true): Garante que só calcula se houver lançamento.
    • if (Lancamento.Percentual > 0M && Lancamento.Quantidade > 0M): Impede cálculo com valores zerados.
    • if (Solicitacao.Cliente.ToLower() == "monsanto" && RecuperarValorTotalVerba("116") > 0M && Empregado.TipoPagamento == EnumTipoPagamentoBO.Mensalista): Condição específica para o cliente Monsanto que altera a base de cálculo.
    • if (SysFunc_VerbaPossuiDSR(HoleriteVerba.Verba.Codigo) && HoleriteVerba.ValorTotal > 0M): Condição para a geração do DSR.

🧩 Funções

  • Func_ValidarExistenciaLancamento: Verifica se há um lançamento ativo para a verba no contexto do cálculo.
  • RecuperarValorTotalVerba: Obtém o valor total já calculado de uma verba específica (neste caso, a verba 116).
  • Func_ArredondamentoPadrao: Arredonda um valor decimal para o padrão de precisão monetária do sistema (geralmente duas casas decimais).
  • SysFunc_VerbaPossuiDSR: Consulta a configuração do sistema para determinar se uma verba específica deve gerar DSR.
  • Func_DSR: É a função responsável por orquestrar o cálculo e a criação da verba de DSR, com base nos parâmetros da verba de origem.
  • SysFunc_Panico: Função utilizada para interromper o processo de cálculo em caso de erro crítico e registrar uma mensagem de pânico.
  • Argumento: Registra um valor para ser usado na memória de cálculo.
  • EscreverMemoria: Formata e registra a memória de cálculo no holerite.

🎯 Particularidades por Cliente/Setor

👤 Monsanto
  • Se a verba 116 (Bonificação) tiver um valor maior que zero (RecuperarValorTotalVerba(“116”) > 0M), e o empregado for do tipo Mensalista (Empregado.TipoPagamento == EnumTipoPagamentoBO.Mensalista), o valor da verba 116 é adicionado à BaseCalculo.

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

ValorTotal = Func_ArredondamentoPadrao(((BaseCalculoIntegrada / CargaHorariaMensal) * (1 + (Lancamento.Percentual / 100)) * Lancamento.Quantidade))


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

SE Func_ValidarExistenciaLancamento(Lancamento) == FALSO ENTÃO RETORNAR // Encerra silenciosamente se a rubrica não foi movimentada no período FIM_SE

2. Tratamento Preventivo de Erro em Interface (Substituição ao SysFunc_Panico)

SE Lancamento.Percentual <= 0M OU Lancamento.Quantidade <= 0M ENTÃO RegistrarAlertaLog(“Lançamento da Verba 181 desconsiderado devido a valores zerados ou negativos no contrato do empregado.”); RETORNAR // Ignora o cálculo do colaborador sem derrubar o processamento global da folha FIM_SE

Inicialização de variáveis operacionais CargaHorariaMensal = VG_HsMes > 0M ? VG_HsMes : Parametro.DivisorJornadaPadrao BaseCalculoIntegrada = VG_BCHExtAdNot

3. Resolução da Base de Cálculo Dinâmica (Cenário de Extensibilidade)

SE Parametro.PossuiVerbasAdicionaisVinculadas == VERDADEIRO ENTÃO Verifica se as condições restritivas de perfil contratual foram atendidas SeletorPerfilValido = FALSO SE Parametro.FiltrarTipoPagamento == “MENSALISTA” E Empregado.TipoPagamento == EnumTipoPagamentoBO.Mensalista ENTÃO SeletorPerfilValido = VERDADEIRO SENÃO_SE Parametro.FiltrarTipoPagamento == “TODOS” ENTÃO SeletorPerfilValido = VERDADEIRO FIM_SE

Soma as rubricas adicionais se o perfil for elegível SE SeletorPerfilValido == VERDADEIRO ENTÃO CadeiaVerbasParaSomar = Parametro.ListaVerbasIntegracaoAdicionais PARA CADA CodigoVerba EM CadeiaVerbasParaSomar REPETIR ValorRubricaCorrente = RecuperarValorTotalVerba(CodigoVerba) SE ValorRubricaCorrente > 0M ENTÃO BaseCalculoIntegrada = BaseCalculoIntegrada + ValorRubricaCorrente FIM_SE FIM_PARADA FIM_SE FIM_SE

4. Execução da Fórmula Matemática Linear

ValorHoraNormal = BaseCalculoIntegrada / CargaHorariaMensal FatorAdicionalHoras = 1M + (Lancamento.Percentual / 100M) ValorHoraFeriado = ValorHoraNormal * FatorAdicionalHoras

ValorFinalCalculado = ValorHoraFeriado * Lancamento.Quantidade

5. Gravação de Resultados, Metadados e Geração de Memória de Cálculo

HoleriteVerba.ValorTotal = Func_ArredondamentoPadrao(ValorFinalCalculado) HoleriteVerba.Quantidade = Lancamento.Quantidade HoleriteVerba.INSS = INCIDENCIA_SAL HoleriteVerba.FGTS = INCIDENCIA_SAL HoleriteVerba.IRRF = INCIDENCIA_SAL HoleriteVerba.NaturezaeSocial = “1003”

Formatação de apresentação acionada por Máscara UI HoleriteVerba.DescricaoFinal = Parametro.TemplateDescricaoOriginal + ” ” + Func_ConverterParaTexto(Lancamento.Percentual) + ”%”

Registro na tabela interna de rastreabilidade (Auditoria do Recibo) RegistrarArgumentoMemoria(“BaseCalculo”, BaseCalculoIntegrada) RegistrarArgumentoMemoria(“DivisorMensal”, CargaHorariaMensal) RegistrarArgumentoMemoria(“PercentualAplicado”, Lancamento.Percentual) RegistrarArgumentoMemoria(“HorasTrabalhadas”, Lancamento.Quantidade) EscreverMemoriaCalculoHolerite()

6. Gatilho Automático de Reflexo de DSR

SE Parametro.GerarReflexoDSR == VERDADEIRO E HoleriteVerba.ValorTotal > 0M ENTÃO Func_DSR(HoleriteVerba.Verba.Codigo, Parametro.TextoDescricaoDSR, Parametro.CodigoVerbaDSRAlvo, HoleriteVerba.ValorTotal) FIM_SE


Impactos

  • Eliminação de amarrações no ID da Fórmula 3846, transformando a exceção da Monsanto em um relacionamento dinâmico de metadados.
  • Possibilidade futura de unificar a engine de cálculo das verbas 26 e 181 sob uma mesma Regra Geral Padronizada, diferenciando-as apenas por sua classificação fiscal e eSocial.

Benefícios

  • Desacoplamento Total: O core do sistema deixa de carregar nomes de clientes ou regras fixas em arquivos de código C#.
  • Continuidade do Fechamento: Inputs manuais incorretos passam a ser ignorados ou registrados em relatórios de inconsistência na tela do usuário, sem interromper o processamento da folha dos demais colaboradores da empresa.

Parametrizações Propostas para Reestruturação

1. Painel de Composição de Base Dinâmica (Cenário Monsanto)

  • Criar uma tabela de relacionamentos dinâmicos de rubricas na interface de configuração:
    • Base Padrão Nativa: [x] VG_BCHExtAdNot (Base de HE acumulada).
    • Verbas de Integração Adicionais: [ Incluir Verba: 116 ]
    • Condicionamento de Ativação: (x) Filtrar por Tipo de Pagamento: Mensalista

2. Tratamento Preventivo de Erro em Interface

  • Substituir o método SysFunc_Panico por travas diretamente na digitação, planilhas de importação ou logs informativos:
    • Se Lancamento.Percentual == 0 ou Lancamento.Quantidade == 0, o sistema apenas desconsidera o cálculo do funcionário e gera um alerta amigável: “Lançamento da Verba 181 desconsiderado devido a valores zerados.”

3. Ajuste Visual no Espelho do Holerite

  • Configurar o direcionamento correto dos dados nos campos do contracheque:
    • Campo Referência: Exibe o percentual do adicional de horas (Ex: “100,00%”).
    • Campo Quantidade: Exibe o saldo real de horas trabalhadas enviado pelo ponto (Ex: “08:00”).

4. Gatilho de Reflexo sobre o DSR

  • Checkbox: [x] Ativar geração automática de Reflexo de DSR (Verba 55).
    • Comportamento: Quando assinalado, o motor executa a função Func_DSR baseando-se unicamente nesta propriedade visual da rubrica.

Clientes com mesma regra

  • Monsanto: Totalmente compatibilizado e absorvido. O cliente deixa de ter sua regra amarrada por validação de string de texto diretamente no código C#. Ao ativar os parâmetros dinâmicos de tela, o sistema executa o barramento de integração que lê se a verba 116 (Bonificação) possui saldo positivo, validando se o funcionário é do perfil Mensalista para somá-lo nativamente à base principal VG_BCHExtAdNot antes da apuração do valor da diária, replicando com perfeição a regra legal.
  • Demais Clientes do Ecossistema: Passam a ter flexibilidade total para parametrizar a inclusão de prêmios, bonificações ou gratificações específicas na base de cálculo de horas extras de feriado de suas respectivas categorias sindicais, sem a necessidade de intervenções da equipe de desenvolvimento.

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