Wiki / SuperCalculo ~6 min

656 - Desc. Contrib. Associativa

Metadados

  • Código: 656
  • Tipo: Desconto
  • INSS: ISE
  • FGTS: ISE
  • IRRF: ISE
  • Natureza eSocial: -
  • DSR: Não
  • Médias: Não
  • Impacto Financeiro: Sim
  • Impacto Contábil: Sim
  • Sequência: 190

🧮 Regra Geral

  • Lógica de Cálculo:

    1. A verba verifica se há um percentual de lançamento (Lancamento.Percentual) maior que zero e se existem proventos (VG_TemAlgumProvento).
    2. Se sim:
      • A descrição final da verba no holerite é formatada para incluir o percentual.
      • A quantidade da verba é definida como o valor do salário nominal (VG_VlrSalNom).
      • O valor total é calculado como o salário nominal multiplicado pelo percentual lançado, dividido por 100, e o resultado é arredondado e tornado negativo.
      • A memória de cálculo é registrada com os valores utilizados.
    3. Se não (e se o cliente for “syngenta” com condições específicas):
      • A verba verifica se o cliente é “syngenta” (case-insensitive), se há rescisão no mês atual (VG_PossuiRescisaoMesAtual) e se os dias pagos pelo empregador são menos de 15 (VG_DiasPagosEmpregador < 15M).
      • Se todas essas condições forem verdadeiras, a verba não é calculada (retorna null).
  • Fórmula matemática:

    • ValorTotal = -(VG_VlrSalNom * Lancamento.Percentual / 100M)
  • Variáveis Utilizadas:

    • Lancamento.Percentual
    • VG_TemAlgumProvento
    • VG_VlrSalNom
    • HoleriteVerba.DescricaoFinal
    • HoleriteVerba.Quantidade
    • HoleriteVerba.ValorTotal
    • descricao
    • Solicitacao.Cliente
    • VG_PossuiRescisaoMesAtual
    • VG_DiasPagosEmpregador.
  • Condições Especiais:

    • Cálculo por percentual: if (Lancamento.Percentual > 0M && VG_TemAlgumProvento == true)
    • Exceção para Syngenta: if (Solicitacao.Cliente.ToLower() == "syngenta" && VG_PossuiRescisaoMesAtual && VG_DiasPagosEmpregador < 15M)

🔔 Eventos/Gatilhos

  • Quando a verba é calculada:
    • Quando há um lançamento manual com um percentual definido (Lancamento.Percentual > 0M) e existem proventos no holerite (VG_TemAlgumProvento).
    • Não é calculada para o cliente “syngenta” em cenários de rescisão com menos de 15 dias pagos pelo empregador no mês.

🧩 Funções

  • Negativo(): Converte um valor numérico para negativo.
  • Func_ArredondamentoPadrao(): Arredonda o valor para o padrão do sistema.
  • string.Format(): Formata strings.
  • ToString("N2"): Formata um número com duas casas decimais.
  • Argumento(): Adiciona um valor à lista de argumentos para a memória de cálculo.
  • EscreverMemoria(): Registra a memória de cálculo com uma descrição e os argumentos.
  • Solicitacao.Cliente.ToLower(): Converte o nome do cliente para minúsculas para comparação.

🎯 Particularidades por Cliente/Setor

👤 Syngenta
  • Se houver uma rescisão no mês atual (VG_PossuiRescisaoMesAtual) e os dias pagos pelo empregador forem inferiores a 15 (VG_DiasPagosEmpregador < 15M), a verba não será calculada.

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

ValorTotal = Se( ExigeProventos == Verdadeiro E VG_TemAlgumProvento == Falso, 0.00, Se( IsentaRescisao == Verdadeiro E PossuiRescisao == Verdadeiro E DiasPagos < DiasMinimos, 0.00, Se( ExisteLancamento == Verdadeiro E ValorLancamento > 0, Func_ArredondamentoPadrao( Min( ValorLancamento, TetoMaximoConfigurado ) ), Se( PercentualAplicado > 0, Func_ArredondamentoPadrao( Min( (BaseCalculoContrib * PercentualAplicado) / 100, TetoMaximoConfigurado ) ), 0.00 ) ) ) ) * -1.00


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

Se (Configuracao.RubricaInativa == Verdadeiro) { HoleriteVerba = null; InterromperCalculo(); }

Validação de Proventos no Holerite (Exige ao menos um provento para haver desconto) Se (Configuracao.ExigirProventosHolerite == Verdadeiro E VG_TemAlgumProvento == Falso) { HoleriteVerba = null; InterromperCalculo(); }

Isenção Automática em Rescisão por Proporcionalidade de Dias Trabalhados/Pagos Se (Configuracao.IsentarRescisaoDiasMinimos == Verdadeiro E VG_PossuiRescisaoMesAtual == Verdadeiro) { Se (VG_DiasPagosEmpregador < Configuracao.DiasMinimosPagosRescisao) { HoleriteVerba = null; InterromperCalculo(); } }

2. Determinação do Valor do Desconto e Base de Referência

Definir ExisteLancamento = Func_ValidarExistenciaLancamento(Lancamento); Definir ValorDescontoApurado = 0.00; Definir BaseCalculoContrib = 0.00; Definir PercentualAplicado = 0.00; Definir OrigemCalculo = “Nenhuma”;

Se (ExisteLancamento == Verdadeiro E Lancamento.ValorTotal > 0.00) { Priority Fallback 1: Lançamento manual direto informado em valor ValorDescontoApurado = Lancamento.ValorTotal; BaseCalculoContrib = Lancamento.ValorReferencia > 0.00 ? Lancamento.ValorReferencia : Empregado.SalarioNominal; OrigemCalculo = “ValorInformadoManual”; } Senao Se (ExisteLancamento == Verdadeiro E Lancamento.Percentual > 0.00) { Priority Fallback 2: Percentual informado via lançamento sobre a base configurada PercentualAplicado = Lancamento.Percentual; BaseCalculoContrib = Lancamento.ValorReferencia > 0.00 ? Lancamento.ValorReferencia : Func_ObterBaseCalculo(Configuracao.TipoBaseCalculo, Empregado.SalarioNominal); ValorDescontoApurado = (BaseCalculoContrib * PercentualAplicado) / 100.00; OrigemCalculo = “PercentualInformadoManual”; } Senao Se (Configuracao.PermitirCalculoAutomaticoAssociado == Verdadeiro E Empregado.SocioAssociacao == Verdadeiro) { Priority Fallback 3: Cadastro de Associado / Sindicato / Entidade BaseCalculoContrib = Func_ObterBaseCalculo(Configuracao.TipoBaseCalculo, Empregado.SalarioNominal); PercentualAplicado = Empregado.PercentualContribAssociacao > 0.00 ? Empregado.PercentualContribAssociacao : Configuracao.PercentualPadraoAssociacao;

Se (PercentualAplicado > 0.00) { ValorDescontoApurado = (BaseCalculoContrib * PercentualAplicado) / 100.00; } Senao { ValorDescontoApurado = Configuracao.ValorFixoPadraoAssociacao; } OrigemCalculo = “CadastroAssociadoAutomatizado”; }

Se (ValorDescontoApurado <= 0.00) { HoleriteVerba = null; InterromperCalculo(); }

3. Aplicação de Limites, Tetos e Customização de Rótulo

Definir ValorFinalRubrica = Func_ArredondamentoPadrao(ValorDescontoApurado);

Se (Configuracao.AplicarTetoMaximoDesconto == Verdadeiro E Configuracao.ValorTetoMaximo > 0.00) { Se (ValorFinalRubrica > Configuracao.ValorTetoMaximo) { ValorFinalRubrica = Configuracao.ValorTetoMaximo; } }

Formatação e Sobregravação do Rótulo no Holerite Se (Func_TextoNaoVazio(Configuracao.TextoDescricaoPersonalizada)) { HoleriteVerba.DescricaoFinal = Configuracao.TextoDescricaoPersonalizada; } Senao Se (PercentualAplicado > 0.00) { HoleriteVerba.DescricaoFinal = “Desc. Contrib. Associativa (” + PercentualAplicado.ToString(“N2”) + ”%)”; } Senao Se (ExisteLancamento == Verdadeiro E Func_TextoNaoVazio(Lancamento.Observacao)) { HoleriteVerba.DescricaoFinal = Lancamento.Observacao; }

4. Gravação de Rubrica e Memória de Cálculo

HoleriteVerba.Quantidade = Func_ArredondamentoPadrao(BaseCalculoContrib); HoleriteVerba.Percentual = PercentualAplicado; HoleriteVerba.ValorReferencia = Func_ArredondamentoPadrao(BaseCalculoContrib); HoleriteVerba.ValorTotal = Func_ArredondamentoPadrao(ValorFinalRubrica * -1.00);

Argumento(BaseCalculoContrib.ToString(“F2”)); Argumento(PercentualAplicado.ToString(“N2”)); Argumento(ValorFinalRubrica.ToString(“F2”)); Argumento(OrigemCalculo);

EscreverMemoria(“[DESC_CONTRIB_ASSOCIATIVA]”, “Base Calculo: R$ {0} | % Aplicado: {1}% | Desconto Final: R$ {2} | Origem: {3}”);

AdicionarAoHolerite(HoleriteVerba);


Parametrizações Propostas para Reestruturação

1. STATUS DA RUBRICA E DIRETRIZES DE ENTRADA

[ ] Inativar Rubrica (Desativa o cálculo globalmente no sistema) [X] Exigir a existência de ao menos um provento no holerite para efetuar o desconto [X] Permitir Lançamento Manual (Valor / Percentual / Valor de Referência) [X] Permitir Apuração Automática via Cadastro de Associado/Sindicato

2. DIRETRIZES DE BASE DE CÁLCULO E ISENÇÕES EM RESCISÃO

Base de Cálculo Padrão: [ Salário Nominal (VG_VlrSalNom) v ] [X] Isentar desconto na Rescisão se os dias pagos pelo empregador forem inferiores ao limite └─ Quantidade Mínima de Dias Pagos para Incidência: [ 15 ] dias

Percentual Padrão para Cálculo Automático: [ 0.00 ] % Valor Fixo Padrão para Cálculo Automático: R$ [ 0.00 ]

3. CUSTOMIZAÇÃO DE EXIBIÇÃO E ROTULAGEM

[X] Exibir o percentual aplicado na descrição do holerite [ ] Permitir sobregravação de Descrição no Holerite via Configuração └─ Descrição Personalizada: [ Desc. Contrib. Associativa ] [X] Herdar descrição customizada do campo de observação do Lançamento (se preenchido)

4. LIMITES, TETOS E IMPACTOS OPERACIONAIS

[X] Aplicar Teto Máximo de Desconto por Colaborador └─ Valor Limite Máximo: R$ [ 0.00 ] [X] Ativar Impacto Financeiro (Ajuste para Liquidação/Pagamento Líquido do Holerite) [X] Ativar Impacto Contábil (Lançamento de Débito/Crédito)

5. ENCARGOS ESOCIAL E CONFIGURAÇÃO TRIBUTÁRIA

Código da Rubrica Destino: [ 656 ] Natureza eSocial: [ 9299 - Outros descontos ] Incidência INSS: [ ISE - Isento ] DSR: [ Não ] Incidência FGTS: [ ISE - Isento ] Médias: [ Não ] Incidência IRRF: [ ISE - Isento ] Impacto Financeiro: [ Sim ]

Clientes com mesma regra

  • Syngenta: A verba possuía uma validação hardcoded explícita direcionada ao cliente (Solicitacao.Cliente.ToLower() == "syngenta") para abortar o cálculo em desligamentos onde os dias pagos pelo empregador fossem menores que 15. No Dynamic Engine, essa tratativa foi convertida no parâmetro configurável Isentar desconto na Rescisão se os dias pagos pelo empregador forem inferiores ao limite (com gatilho padrão em 15 dias). Com a chave ativada para o cadastro da Syngenta, a regra é executada nativamente sem depender da verificação de nome do cliente.
  • Regra Geral / Demais Clientes: Processavam a verba exclusivamente via lançamento manual com percentual sobre o salário nominal quando houvesse proventos no holerite. A reestruturação unificada preserva integralmente esse fluxo no Priority Fallback 2 (Lançamento Manual em Percentual) e na trava global de verificação de proventos, permitindo ainda a liberação de lançamentos em valor fixo ou cálculo automático por cadastro de associado para outras empresas.

Status Documental

  • Status: Documentada
  • Origem: export do Notion + catálogo da wiki
  • Fonte rastreável: 30dc75ea2e8381a2a105d6f10ea9dad7

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