22 - Hora Reduzida
⚙️ Metadados
- Código: 22
- Tipo: Provento
- INSS: SAL
- FGTS: SAL
- IRRF: SAL
- Natureza eSocial: 1299 - Outros adicionais
- DSR: Sim
- Médias: Sim
- Impacto Financeiro: Não
- Impacto Contábil: Sim
- Sequência: 624
🧮 Regra Geral
N/A
🎯 Particularidades por Cliente/Setor
👤 Employer (ID da Fórmula: 2355)
-
Lógica de Cálculo:
- Validação de Entrada: O sistema verifica se existe um lançamento manual para esta verba (
Func_ValidarExistenciaLancamento). - Cenário 1: Valor Informado Diretamente:
- Se o usuário lançou um valor monetário (
Lancamento.ValorTotal > 0), o sistema executa uma validação de integridade específica:- Se o contrato for “1.1151.1” (ETT - nuubes), deve ter o complemento de origem “1695” (Ficta).
- Se tiver o complemento “1695”, deve ser o contrato “1.1151.1”.
- Caso contrário, o sistema gera um erro (
SysFunc_Panico).
- Passando na validação, o valor final é o valor lançado arredondado.
- Se o usuário lançou um valor monetário (
- Cenário 2: Percentual e Quantidade Informados:
- Calcula o valor da hora:
Salário Nominal / Horas Mês. - Aplica o acréscimo:
Valor Hora * (1 + (Percentual / 100)). - Multiplica pela quantidade:
Resultado * Quantidade.
- Calcula o valor da hora:
- Cenário 3: Apenas Quantidade Informada:
- Calcula o valor da hora simples:
Salário Nominal / Horas Mês. - Multiplica pela quantidade:
Valor Hora * Quantidade.
- Calcula o valor da hora simples:
- Memória de Cálculo: Gera o texto explicativo (MCA ou MCB) detalhando a operação matemática realizada.
- Validação de Entrada: O sistema verifica se existe um lançamento manual para esta verba (
-
Variáveis Utilizadas:
VG_VlrSalNom: Valor do Salário Nominal do funcionário.VG_HsMes: Carga horária mensal do funcionário.Lancamento.ValorTotal,Lancamento.Percentual,Lancamento.Quantidade: Dados inseridos manualmente.Cod_Contrato_Filho: Tag utilizada para validação específica.
-
Dependências:
-
Tipo de Relação: Geração (A verba 22 gera reflexo na verba 55).
-
Fluxo de Cálculo: Após calcular o valor da Hora Reduzida, se o valor for positivo, o sistema invoca a função de DSR para calcular o reflexo na verba 55.
-
Funções Identificadas:
SysFunc_TagPossuiConteudo: Verifica se o contrato do funcionário corresponde a uma lista específica.SysFunc_Panico: Interrompe o cálculo e exibe erro bloqueante se a validação de contrato/complemento falhar.Func_ArredondamentoPadrao: Garante que o valor final tenha 2 casas decimais.SysFunc_VerbaPossuiDSReFunc_DSR: Gerenciam o cálculo do repouso remunerado.
👤 Jmalucelli (ID da Fórmula: 18547)
-
Lógica de Cálculo:
- O código fornecido consiste inteiramente em comentários, o que indica que não há cálculo automático realizado pela fórmula (C#) neste momento.
- A lógica definida explicitamente nos comentários é:
// este cliente = Lçto. Manual, em Valor. - Isso significa que o usuário deve informar diretamente o valor monetário (R$) a ser pago, e não a quantidade de horas para o sistema calcular.
- O sistema aceita o valor lançado manualmente (
VlrLancado) e o processa diretamente para a folha.
-
Variáveis Utilizadas:
VG_Verba22ApenasPrc(Mencionada nos comentários para controle de médias).
-
Condições Especiais:
- A fórmula atual serve apenas como documentação de que o processo é manual.
- Há uma nota sobre comportamento de médias: Se a variável global
VG_Verba22ApenasPrcfor verdadeira, a média considera apenas o percentual; caso contrário, considera 1 + %.
👤 Tiautomotive (ID da Fórmula: 10852)
-
Lógica de Cálculo:
- O código fornecido não contém instruções executáveis (apenas linhas comentadas com
//). - A instrução
// este cliente = Lçto. Manual, em Valordefine o comportamento: o valor pago é exatamente o valor inserido manualmente pelo operador. - Não há multiplicação de horas por salário ou aplicação de coeficientes (como 52:30 para hora noturna reduzida) dentro desta fórmula específica.
- O código fornecido não contém instruções executáveis (apenas linhas comentadas com
-
Variáveis Utilizadas:
- Nenhuma variável de cálculo (como
VlrSalarioHora) é instanciada. - A variável
VG_Verba22ApenasPrcé citada apenas como referência para comportamento de médias.
- Nenhuma variável de cálculo (como
-
Condições Especiais:
- A “condição” é a própria ausência de cálculo automático, forçando o input manual.
💡 Proposta de Novo Cálculo
Fórmula proposta (padronizada):
ValorTotal = Arredondar ( ( SalarioNominal / VG_HsMes ) * ( 1 + ( PercentualLancamento / 100 ) ) * ( QuantidadeLancamento * FatorFicta ) )
INÍCIO Processar_Hora_Reduzida (DadosEmpregado, DadosLancamento, ParametrosSistema)
1. Filtros de Elegibilidade e Isenções (Piso Seguro)
SE NOT Func_ValidarExistenciaLancamento(DadosLancamento) ENTÃO RETORNAR // Ignora o cálculo se não houver evento gravado FIM SE
// Validação de Vínculos Mandatórios (Substitui o hardcode de contrato/complemento da Employer) SE ParametrosSistema.ConfiguracaoVerba.PossuiVinculoObrigatorio == TRUE ENTÃO ContratoValido = ParametrosSistema.ConfiguracaoVerba.ValidarRegraVinculo(DadosEmpregado.CodContrato, DadosLancamento.ComplementoOrigem) SE NOT ContratoValido ENTÃO // Registra um log de inconsistência na folha em vez de estourar um pânico no sistema RegistrarInconsistenciaCalculo(DadosEmpregado.Id, “Incompatibilidade entre Contrato e Complemento de Origem para a Verba 22.”) RETORNAR FIM SE FIM SE
2. Determinação da Base de Cálculo, Multiplicadores e Fallbacks
ModoEntrada = ParametrosSistema.ConfiguracaoVerba.ObterModoEntrada(HoleriteVerba.Verba.Codigo)
// CENÁRIO 1: Entrada Direta por Valor Monetário (Jmalucelli, Tiautomotive e Employer) SE ModoEntrada == EnumModoEntrada.Valor ENTÃO SE DadosLancamento.ValorTotal > 0 ENTÃO HoleriteVerba.ValorTotal = Func_ArredondamentoPadrao(DadosLancamento.ValorTotal) HoleriteVerba.Quantidade = 0 HoleriteVerba.ValorReferencia = 0 GatilhoDSR(DadosEmpregado, HoleriteVerba.ValorTotal, ParametrosSistema) RETORNAR FIM SE FIM SE
// CENÁRIOS 2 e 3: Entrada Baseada em Quantidade de Horas e Salário-Hora BaseCalculo = DadosEmpregado.SalarioNominal DivisorMensal = ParametrosSistema.Global.VG_HsMes SalarioHoraSimples = BaseCalculo / DivisorMensal
// Aplicação Automática do Coeficiente Ficta se parametrizado em tela SE ParametrosSistema.ConfiguracaoVerba.AplicarFatorFicta == TRUE ENTÃO FatorFicta = 1.142857 // Coeficiente padrão (52:30 para hora reduzida) SENÃO FatorFicta = 1.000000 FIM SE
QuantidadeEfetiva = DadosLancamento.Quantidade * FatorFicta PercentualAcrescimo = SE DadosLancamento.Percentual > 0 ENTÃO DadosLancamento.Percentual SENÃO 0
3. Execução do Cálculo Linear e Arredondamento
ValorHoraComAdicional = SalarioHoraSimples * (1 + (PercentualAcrescimo / 100)) ValorTotalCalculado = ValorHoraComAdicional * QuantidadeEfetiva
HoleriteVerba.ValorTotal = Func_ArredondamentoPadrao(ValorTotalCalculado) HoleriteVerba.Quantidade = QuantidadeEfetiva HoleriteVerba.ValorReferencia = BaseCalculo
4. Gravação de campos e disparo de verbas de informação correlacionadas (DSR)
GatilhoDSR(DadosEmpregado, HoleriteVerba.ValorTotal, ParametrosSistema)
FIM
PROCEDIMENTO GatilhoDSR(DadosEmpregado, ValorOrigem, ParametrosSistema) SE SysFunc_VerbaPossuiDSR(22) E ValorOrigem > 0 ENTÃO CodigoVerbaDsr = ParametrosSistema.ConfiguracaoVerba.ObterVerbaDestinoDsr(22) Func_DSR(CodigoVerbaDsr, “DSR S/ Hora Reduzida”, 22, ValorOrigem, HoleriteVerba, TRUE) FIM SE FIM PROCEDIMENTO
Impactos
- Substituição dos lançamentos manuais de valor por lançamentos de Quantidade de Horas, permitindo que o sistema calcule o valor atualizado conforme o salário do mês.
Benefícios
- Fim do Pânico: As validações de contrato (nuubes) tornam-se regras de parametrização de tela, não mais interrupções de código.
- Precisão Matemática: Uso do coeficiente exato da hora ficta em vez de arredondamentos manuais no lançamento.
Parametrizações Propostas para Reestruturação
- Automação do Coeficiente Ficta
- Criar flag em tela: “Aplicar Coeficiente de Hora Reduzida (1,142857)?”.
- Isso permite que o RH lance 01:00 hora relógio e o sistema pague automaticamente 01:08:34.
- Validação de Elegibilidade (Fim do Hardcode Nuubes)
- Em vez de código fixo, a tela de configuração da verba deve permitir associar “Complementos de Origem Obrigatórios” para determinados grupos de contratos.
- Configuração de Médias
- Disponibilizar em tela o parâmetro VG_Verba22ApenasPrc (Sim/Não), permitindo ao usuário definir se a média da verba 22 leva o valor principal ou apenas o “plus” do adicional.
- Alternância de Entrada
- Permitir configurar se a verba aceita:
- ( ) Somente Valor (R$).
- ( ) Quantidade de Horas x Salário-Hora.
- ( ) Valor Unitário Fixo.
Clientes com mesma regra
A reestruturação em modo híbrido e paramétrico aglutina todas as flutuações operacionais dos clientes mapeados em uma única regra operacional.
- Jmalucelli e Tiautomotive: Através da opção de “Híbrido Dinâmico” ou “Somente Valor” na Seção 1 da interface, o motor detecta o preenchimento do campo
Lancamento.ValorTotale processa o valor fechado diretamente para a folha. A documentação contida em linhas de comentários legadas do C# é convertida em um parâmetro funcional auditável em tela. O comportamento de médias citado por ambos é centralizado no seletor da Seção 3. - Employer: O cenário de validação restritiva do contrato ETT nuubes deixa de rodar sob condições de código que disparavam o
SysFunc_Panico. A associação obrigatória passa a ser gerenciada pela Seção 2 do painel, fornecendo segurança contra lançamentos errôneos e gerando alertas tratáveis sem derrubar o cálculo em lote da folha de pagamento.
Status Documental
- Status: Documentada
- Origem: export do Notion + catálogo da wiki
- Fonte rastreável:
30dc75ea2e838139a8f0c114ac6bf45e