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:
- 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. - Validação de Valores: Em seguida, verifica se o
Percentuale aQuantidadedo 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. - Definição da Base de Cálculo: A variável
BaseCalculoé inicializada com o valor da variável globalVG_BCHExtAdNot(Base de Cálculo Hora Extra Adicional Noturno). - 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%”). - 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. - 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.
- 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 oHoleriteVerba.ValorTotalé maior que zero. Se ambas as condições forem verdadeiras, a funçãoFunc_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
- Base Padrão Nativa: [x]
2. Tratamento Preventivo de Erro em Interface
- Substituir o método
SysFunc_Panicopor travas diretamente na digitação, planilhas de importação ou logs informativos:- Se
Lancamento.Percentual == 0ouLancamento.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.”
- Se
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_DSRbaseando-se unicamente nesta propriedade visual da rubrica.
- Comportamento: Quando assinalado, o motor executa a função
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_BCHExtAdNotantes 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