Wiki / SuperCalculo ~38 min

316 - Média Abono Pecun. Férias

⚙️ Metadados

  • Código: 316
  • Tipo: Provento
  • INSS: ISE
  • FGTS: ISE
  • IRRF: ISE
  • Natureza eSocial: 1023 - Férias - Abono pecuniário
  • DSR: Não
  • Médias: Não
  • Impacto Financeiro: Não
  • Impacto Contábil: Sim
  • Sequência: 4106

🧮 Regra Geral

  • Lógica de Cálculo:

    1. A verba não é calculada se já houver um Lancamento.ValorTotal positivo ou se o cliente for “tiautomotive” e o tipo de vínculo do empregado for “Impatriado”.
    2. O cálculo prossegue apenas se o empregado possui férias (VG_PossuiFerias) e há dias de abono pecuniário (VG_PeriodoFeriasReferencia.DiasAbono > 0).
    3. São inicializados parâmetros como prmCodVerba = "316", prmDescricao, prmDtaInicio, prmDtaFim, prmConsiderarSomenteHoleritesPagos = true, prmLogar = true, prmCodVerbaDSR = "317", e prmDiasFeriasAbono com base nos dias de abono.
    4. A lógica itera sobre um dicionário de verbas (VG_VerbasMediaVlr) para as quais as médias devem ser calculadas.
    5. Para cada verba de origem (Codigo):
      • A descrição da verba de média é formatada.
      • As datas de início e fim para o cálculo da média (prmDtaInicio, prmDtaFim) são determinadas pelas funções SysFunc_DtaIniMedFeriasPA e SysFunc_DtaFimMedFeriasPA, baseadas no período aquisitivo de referência.
      • Condição especial para verba de origem “5” (Comissão): As datas são ajustadas para considerar os 12 meses anteriores ao mês da data de referência da solicitação, ou a data de admissão, se posterior.
      • Customizações de datas por cliente: Existem ajustes específicos para os clientes “influx”, “syngentacom” e “pratafina”, que podem alterar o período de cálculo da média (ver seção “Clientes Hardcoded”).
      • As datas são então ajustadas por funções genéricas SysFunc_Altera_DataFim_Medias e SysFunc_Altera_DataInicio_Medias.
      • A média é calculada utilizando a função SysFunc_MediaFeGoz_Vlr_AgrupadoPrc, que retorna uma lista de HoleriteVerbaBO.
      • Bloco DSR: Se a verba de origem compõe DSR (SysFunc_VerbaPossuiDSR), o valor da média é positivo e VG_CalcularDSRMedia é verdadeiro:
        • Se o cliente for “veibras”, o DSR é calculado por Func_DSR_MediaVlr.
        • Caso contrário, para cada item calculado na média, o DSR é calculado por Func_DSR (verba 317) e um lançamento futuro é criado para ele.
    6. Há um bloco de código extenso e comentado sobre “PROCESSOS ESPECIAIS” para verbas de comissão (código “5”), que não é executado.
    7. Ao final, a verba principal (HoleriteVerba) é definida como null, indicando que esta verba atua como um “container” para gerar outras verbas de média e DSR.
  • Variáveis Utilizadas:

    • Lancamento.ValorTotal
    • Solicitacao.Cliente
    • Empregado.TipoVinculo
    • VG_PossuiFerias
    • VG_PeriodoFeriasReferencia.DiasAbono
    • VG_VerbasMediaVlr
    • Solicitacao.DataReferencia
    • Empregado.DataAdmissao
    • Sindicato.CNPJ
    • Empregador.CNPJEmpregador
    • Empregado.Historico.ListaHolerite
    • VG_CalcularDSRMedia.
  • Condições Especiais:

    • if (Lancamento.ValorTotal > 0M || (Solicitacao.Cliente.ToLower() == "tiautomotive" && Empregado.TipoVinculo == EnumTipoVinculoBO.Impatriado))
    • if (VG_PossuiFerias && VG_PeriodoFeriasReferencia.DiasAbono > 0)
    • if (prmCodVerbaOrigem == "5") (ajuste de período para comissões)
    • Condições específicas para clientes “influx”, “syngentacom”, “pratafina” e “veibras” (detalhadas em “Clientes Hardcoded”).
    • if (SysFunc_VerbaPossuiDSR(prmCodVerbaOrigem) && VerbasCalculadas.Sum(vlr => vlr.ValorTotal) > 0M && VG_CalcularDSRMedia == true) (condição para cálculo de DSR).

🔗 Dependências

  • Verbas Relacionadas:
    • VG_VerbasMediaVlr: Dicionário de verbas de provento (ex: comissões, horas extras) cujos valores médios serão calculados para o abono pecuniário de férias.
    • Verba “5”: Código de verba de comissão, com lógica de período de cálculo específica.
    • Verba “317”: Verba de DSR sobre Média Abono Pecun. Férias.
  • Tipo de Relação:
    • VG_VerbasMediaVlr e Verba “5”: Dependência (a verba 316 utiliza os valores e regras dessas verbas para seu cálculo).
    • Verba “317”: Geração (a verba 316, sob certas condições, gera a verba 317).
  • Fluxo de Cálculo: A verba 316 é calculada após as verbas que compõem suas médias (definidas em VG_VerbasMediaVlr). Após o cálculo da média de cada verba de origem, a verba 316 pode gerar a verba 317 (DSR) para essa média.

🧩 Funções

  • SysFunc_DtaIniMedFeriasPA: Determina a data de início do período aquisitivo para cálculo de médias de férias.
  • SysFunc_DtaFimMedFeriasPA: Determina a data de fim do período aquisitivo para cálculo de médias de férias.
  • SysFunc_PrimeiroDiaMes: Retorna o primeiro dia do mês de uma data.
  • SysFunc_MaiorData: Retorna a data mais recente entre duas.
  • SysFunc_Altera_DataFim_Medias (form 17100): Ajusta a data final para o cálculo de médias.
  • SysFunc_Altera_DataInicio_Medias (form 17099): Ajusta a data inicial para o cálculo de médias.
  • SysFunc_MediaFeGoz_Vlr_AgrupadoPrc (form 370): Calcula a média de valores para férias e gozo, agrupando por percentual.
  • SysFunc_VerbaPossuiDSR: Verifica se uma verba de origem deve ter DSR calculado.
  • Func_DSR_MediaVlr (form 17078): Calcula o DSR sobre médias de valores (usado para cliente “veibras”).
  • Func_DSR (form 10572): Calcula o DSR (usado para a maioria dos clientes).
  • SysFunc_CriarLancamentoFuturo: Cria um lançamento de verba que será processado em um cálculo futuro.

🎯 Particularidades por Cliente/Setor

👤 Acal

Fórmula 5909 - Abono Pecun. Férias - Média Vlr [ ACAL ]

  • Condições de Retorno Nulo Iniciais: Apenas verifica se Lancamento.ValorTotal > 0M, não incluindo a condição específica para o cliente tiautomotive e tipo de vínculo Impatriado presente na regra geral.
  • Inicialização de Variável: Inicializa a variável VG_VlrHEValor com 0M no início do cálculo.
  • Flag de Processo Especial: Declara e utiliza uma variável booleana ProcEspecial para controlar fluxos específicos.
  • Exclusão Condicional de Verba “5” (Comissão): Remove a verba “5” (Comissão) do dicionário VG_VerbasMediaVlr e define ProcEspecial = true se o empregador ou sindicato corresponder a uma lista específica de CNPJs (Gucci, Saint Laurent, Bottega, Vida Melhor Editora, Casa dos Livros Editora, e combinações de CNPJ de empregador/sindicato para Gucci em Recife, Rio de Janeiro, São Roque, Curitiba).
  • Ajustes de Período para Verba “5” (Comissão):
    • Para Dynatrace (CNPJ iniciado em 7185309700), ajusta prmDtaFim para o último dia do mês anterior à data de referência e prmDtaInicio para 12 meses antes ou a data de admissão.
    • Para BALENCIAGA SP (CNPJs 49885819000172, 49885819000334, 49885819000415 com SECSP 60989944000165), ajusta prmDtaFim para o último dia do mês anterior à data de referência e prmDtaInicio para 6 meses antes ou a data de admissão.
    • Para BALENCIAGA RJ (CNPJ 49885819000253 com SEC RJ 33644360000185), ajusta prmDtaFim para o último dia do mês anterior à data de referência e prmDtaInicio para 12 meses antes ou a data de admissão.
  • Cálculo de DSR para veibras: Não possui o bloco if (Solicitacao.Cliente.ToLower() == "veibras") com a função Func_DSR_MediaVlr presente na regra geral.
  • Processo Especial de Comissões: Contém um bloco de código ativo para o cálculo de médias de comissão (prmCodVerbaOrigem = "5") e seu DSR, que está comentado na regra geral. Este bloco:
    • Define variáveis como UsaINPC, TotalComisSemINPC, ComisComINPC, TotalComisAjustINPC, QtdMesesComComis.
    • Define Comis_e_DSR_Junto para agrupar comissão e DSR em um único cálculo para CNPJs específicos (Gucci, Saint Laurent, Bottega).
    • Ativa o uso de INPC (UsaINPC = true) para Gucci - Curitiba (CNPJ 8338986000973 e Sindicato 73301632000169).
    • Ajusta as datas de início (DtaIni) e fim (DtaFim) para o cálculo da média de comissão com diversas condições específicas de CNPJ de empregador e sindicato (Gucci São Roque, Vida Melhor Editora, Casa dos Livros Editora, Bottega, Gucci Rio de Janeiro, Saint Laurent 2).
    • Itera sobre os holerites pagos para somar valores de verbas de comissão (“5”) e DSR relacionadas (“205”, “340”, “297”, “342”, “346”), aplicando correção por INPC se UsaINPC for verdadeiro.
    • Inclui tratamento especial para SAINT LAURENT 04 (CNPJ 21756072000486) para somar DSR de comissão (verbas “55”, “342”, “346”).
    • Calcula a MediaComissao e cria uma nova verba (NovaMedia) para o resultado, adicionando-a à lista de verbas do holerite e gerando um lançamento futuro.
    • Calcula o DSR para esta média de comissão (se Comis_e_DSR_Junto for falso) e gera um lançamento futuro para o DSR.
  • Restituição de Verba “5”: Ao final, adiciona a verba “5” (Comissão) de volta ao dicionário VG_VerbasMediaVlr se ela tiver sido removida.

Fórmula 5910 - Abono Pecun. Férias - Média Vlr (Inibindo Duplicação de Lcto) [ ACAL ]

  • Lógica de Cálculo: Define HoleriteVerba = null e contém um comentário indicando que o objetivo é inibir a duplicação de médias de férias provenientes de lançamentos antigos (Tab_Lancamento do WFP).

Fórmula 4046 - Abono Pecun. Férias - Média Qtde. [ ACAL ]

  • Tratamento de Lançamento Existente: Se Lancamento.ValorTotal > 0M, cria um HoleriteLancamentoFuturoBO a partir da verba atual, define sua data de referência e tipo de folha, e retorna a verba, em vez de retornar null.
  • Base de Cálculo da Média por Quantidade: Inicializa prmValorHoraBaseMedia como VG_BCHExtAdNot / VG_HsMes.
  • Ajuste da Base para Comissionados Puros: Se o Empregado.TipoPagamento for ComissaoPura, recalcula prmValorHoraBaseMedia com base no valor total da verba 316 (média de comissão) dividido pelos dias de abono e horas do mês.
  • Ajuste da Base para Baru: Para o empregador Baru (CNPJ iniciado em 1442632700) e verbas de origem “1133” ou “1134”, define prmValorHoraBaseMedia como VG_VlrSalNom / 30M.
  • Função de Cálculo de Média: Utiliza a função SysFunc_MediaFeGoz_Qtde_AgrupadoPrc para calcular médias baseadas em quantidade, diferente da função de valor utilizada na regra geral.
  • Descrição Complementar do DSR: Adiciona detalhes à DescricaoComplementar do HoleriteLancamentoFuturoBO do DSR, incluindo o percentual da verba e o tipo de DSR (UmSexto ou XxY).

Fórmula 4047 - Abono Pecun. Férias - Média Qtde (circulando Regular) [ ACAL ]

  • Lógica de Cálculo: Se houver um lançamento existente (Func_ValidarExistenciaLancamento(Lancamento) == true) e a flag VG_JaPassou_A for falsa, cria uma nova HoleriteVerbaBO (HV316), atribui o ValorTotal do lançamento, define as incidências de INSS, FGTS e IRRF como ISE (Isento), adiciona HV316 à lista de verbas do holerite, e marca VG_JaPassou_A = true. Em seguida, chama SysFunc_ReceberLancamentoFuturo(HoleriteVerba) e define HoleriteVerba = null.

Fórmula 5911 - Abono Pecun. Férias - Média Lcto Continuo Prc [ ACAL ]

  • Período de Referência da Média: Define prmDtaInicio como o primeiro dia do mês da Solicitacao.DataReferencia e prmDtaFim como o último dia do mesmo mês, em vez de usar o período aquisitivo de férias.
  • Base de Cálculo da Média: Inicializa prmValorHoraBaseMedia como VG_VlrSalNom.
  • Ajustes da Base de Cálculo:
    • Para verba de origem “80”, define prmValorHoraBaseMedia como VG_VlrBaseCalcInsal.
    • Para verbas de origem “1312” ou “1313” e empregadores Baru ou Mercosul, define prmValorHoraBaseMedia como VG_BCHExtAdNot + VG_VlrLcto1311.
  • Função de Cálculo de Média: Utiliza a função SysFunc_MediaFeGoz_LctoContinuo_Prc para calcular médias de lançamentos contínuos baseadas em percentual.
  • Processo Especial de Adicional por Tempo de Serviço (ATS) - Percentual: Contém um bloco de código ativo para o cálculo de ATS (quando VG_PrcATS > 0M e VG_VlrCada_enio == 0M), que não está presente na regra geral. Este bloco:
    • Calcula a base de cálculo do ATS (BC_ATS), com ajustes para Gucci, Bottega, Saint Laurent (incluindo Adic. Exercício Cargo Confiança - verba “1181”) e Mercosul.
    • Cria uma nova verba (NovaMedia) para o ATS, calculando seu ValorReferencia e ValorTotal proporcional aos dias de abono.
    • Inclui tratamento especial para SINDPPD-RS (adicionando Gratificação de Função - verba “1151” à base de cálculo).
    • Gera MemoriaCalculo e Demonstrativo de Média.
    • Adiciona a verba à lista de verbas do holerite e cria um lançamento futuro.

Fórmula 5912 - Abono Pecun. Férias - Média Lcto Continuo Prc (Inibindo Duplicação de Lcto) [ ACAL ]

  • Lógica de Cálculo: Define HoleriteVerba = null e contém um comentário indicando que o objetivo é inibir a duplicação de médias de férias provenientes de lançamentos antigos (Tab_Lancamento do WFP).

Fórmula 5913 - Abono Pecun. Férias - Média Lcto. Continuo Vlr [ ACAL ]

  • Exclusão Condicional de Verba “1062” (Bônus por Tempo de Empresa): Para o empregador Baru (CNPJ iniciado em 1442632700) e Solicitacao.TipoFolha == EnumTipoFolhaBO.Ferias, remove a verba “1062” do dicionário VG_VerbasMediaLctoContinuoVlr.
  • Período de Referência da Média: Para verbas de origem “241”, “1151”, “1198” (para Dynatrace), ou para empregadores Baru ou Mercosul com verbas específicas, define prmDtaInicio como o primeiro dia do mês da Solicitacao.DataReferencia e prmDtaFim como o último dia do mesmo mês.
  • Descrição para DSR Marítimo: Para o empregador Baru e verba de origem “1458”, ajusta a prmDescricao para incluir “DSR”.
  • Função de Cálculo de Média: Utiliza a função SysFunc_MediaFeGoz_LctoContinuo_UltimoVlr para calcular médias de lançamentos contínuos baseadas no último valor.
  • Processo Especial de Adicional por Tempo de Serviço (ATS) - Valor: Contém um bloco de código ativo para o cálculo de ATS (quando VG_PrcATS > 0M e VG_VlrCada_enio > 0M), que não está presente na regra geral. Este bloco:
    • Calcula NovaMedia.ValorReferencia como VG_PrcATS * VG_VlrCada_enio.
    • Calcula NovaMedia.ValorTotal proporcional aos dias de abono.
    • Gera MemoriaCalculo e Demonstrativo de Média.
    • Adiciona a verba à lista de verbas do holerite e cria um lançamento futuro.
  • Restituição de Verba “1062”: Ao final, adiciona a verba “1062” (Bônus por Tempo de Empresa) de volta ao dicionário VG_VerbasMediaLctoContinuoVlr se ela tiver sido removida.

Fórmula 5914 - Abono Pecun. Férias - Média Lcto. Continuo Vlr (Inibindo Duplicação de Lcto) [ ACAL ]

  • Lógica de Cálculo: Define HoleriteVerba = null e contém um comentário indicando que o objetivo é inibir a duplicação de médias de férias provenientes de lançamentos antigos (Tab_Lancamento do WFP).
👤 Advantech
  • Condições de Retorno Nulo Iniciais: Não possui as condições de retorno nulo presentes na regra geral, que verificam Lancamento.ValorTotal > 0M ou condições específicas para o cliente “tiautomotive”.
  • Dicionário de Verbas para Média: Utiliza o dicionário VG_VerbasMediaLctoContinuoVlr para identificar as verbas que compõem a média, diferentemente da regra geral que usa VG_VerbasMediaVlr.
  • Função de Cálculo da Média: Emprega a função SysFunc_MediaFeGoz_LctoContinuo_UltimoVlr (form 383) para calcular as médias, que foca em lançamentos contínuos e o último valor, ao invés de SysFunc_MediaFeGoz_Vlr_AgrupadoPrc (form 370) da regra geral.
  • Lógica de Período para Verba de Origem “5” (Comissão): Não possui a lógica específica de ajuste de datas para a verba de origem “5” (Comissão) que existe na regra geral.
  • Ajustes de Período por Cliente/Sindicato: Não inclui os blocos condicionais para ajustes de prmDtaInicio e prmDtaFim baseados em clientes como “influx”, “syngentacom” ou “pratafina”, nem em CNPJ de sindicato, presentes na regra geral.
  • Ajustes de Data Fim/Início de Médias: Não utiliza as funções SysFunc_Altera_DataFim_Medias e SysFunc_Altera_DataInicio_Medias para ajustes adicionais nas datas de início e fim das médias.
  • Cálculo de DSR Específico para “veibras”: Não possui o bloco condicional para o cliente “veibras” no cálculo do DSR, que utiliza uma função Func_DSR_MediaVlr diferente.
  • Processos Especiais (Comissões): Não inclui o bloco de “PROCESSOS ESPECIAIS” (que está comentado na regra geral) para cálculo de médias de comissões.
  • Inibição de Duplicação de Lançamento (Fórmula 5989): Possui uma segunda fórmula exclusiva que define HoleriteVerba = null; para inibir a duplicação de médias de férias que poderiam vir de lançamentos antigos (Tab_Lancamento do WFP).
👤 Brabus
  • Condições de Retorno Nulo Iniciais: A verba retorna nulo apenas se Lancamento.ValorTotal for maior que 0. Não possui as condições adicionais de cliente (tiautomotive e Impatriado) presentes na regra geral.

  • Dicionário de Verbas para Média: Utiliza o dicionário VG_VerbasMediaLctoContinuoVlr para identificar as verbas que terão suas médias calculadas.

  • Período de Cálculo das Médias: Define o período de início e fim para o cálculo das médias usando SysFunc_DtaIniMedFeriasPA e SysFunc_DtaFimMedFeriasPA diretamente, sem as customizações de data específicas para clientes ou as funções SysFunc_Altera_DataFim_Medias e SysFunc_Altera_DataInicio_Medias presentes na regra geral.

  • Função de Cálculo de Média: Emprega a função SysFunc_MediaFeGoz_LctoContinuo_UltimoVlr (form 383) para calcular as médias das verbas.

  • Cálculo de DSR sobre Médias: Não inclui a condição específica para o cliente veibras ao calcular o DSR sobre as médias.

  • Processo Especial - Adicional Tempo de Serviço (ATS): Inclui um bloco de cálculo específico para a média do Adicional por Tempo de Serviço (verba 95). Se VG_PrcATS e VG_VlrCada_enio forem maiores que zero, calcula (VG_PrcATS * VG_VlrCada_enio / 30M * VG_PeriodoFeriasReferencia.DiasAbono), arredonda o valor e adiciona como uma nova verba ao holerite, com memória de cálculo e demonstrativo de média.

  • Processo Especial - Garantia de Salário: Contém um bloco de cálculo para complementar a média do abono pecuniário de férias caso o valor total das médias calculadas até o momento (incluindo verba 315 e 316) seja inferior ao valor da garantia de salário (VG_VlrGarantiaSalario). Calcula a diferença e a adiciona como uma nova verba ao holerite, com memória de cálculo e demonstrativo de média.

  • Inibição de Duplicação de Lançamento (Fórmula 43173): Possui uma segunda fórmula específica que define HoleriteVerba = null;. Esta regra tem como objetivo inibir a duplicação de médias de férias originadas de lançamentos da folha antiga (WFP).

  • Ausência de Processos de Comissões Comentados: A regra do Brabus não contém o bloco de código extenso e comentado referente a diferentes opções de cálculo de comissões (verba 5), presente na regra geral.

👤 Influx
  • Se Solicitacao.Cliente.ToLower() == “influx” e Sindicato.CNPJ == “76690353000122”, o período de cálculo da média é ajustado: prmDtaFim é o mês anterior à data de referência, e prmDtaInicio é 5 meses antes de prmDtaFim (ou a data de admissão, se posterior).
👤 Jmalucelli
  • Condições de Retorno Nulo Iniciais: Apenas verifica se Lancamento.ValorTotal > 0M. Não inclui a condição específica para o cliente “tiautomotive” com vínculo “Impatriado” presente na regra geral.
  • Processamento de Média de Comissão (Verba 5):
    • Para empregadores com CNPJ iniciado em 1149214100 (Forza Maquinas Agricolas e Construção Ltda) ou 9542432100 (JMalucelli Rental S/A), a verba 5 (Comissão) é removida do dicionário padrão VG_VerbasMediaVlr antes do cálculo das médias gerais.
    • A data de início para o cálculo da média da verba 5 é definida como SysFunc_PrimeiroDiaMes(prmDtaFim.AddMonths(-11)), não considerando a data de admissão do empregado (SysFunc_MaiorData(..., Empregado.DataAdmissao)) como limite inferior, diferentemente da regra geral.
    • Existe um bloco de “PROCESSOS ESPECIAIS” exclusivo para esses CNPJs, que calcula a média de comissão (verba 5) de forma customizada, considerando os últimos 12 meses e aplicando ajuste por INPC (HistoricoDadosGoverno.ListaTabelaINPC) se UsaINPC for true. Este bloco cria uma nova verba de holerite (NovaMedia) e um lançamento futuro.
    • Após o processamento, a verba 5 é adicionada de volta ao dicionário VG_VerbasMediaVlr se tiver sido removida.
  • Ausência de Regras Específicas de Outros Clientes: As condições de ajuste de período para clientes como “influx”, “syngentacom”, “pratafina” e a condição específica de DSR para “veibras” presentes na regra geral não são aplicadas para jmalucelli.
  • Cálculo de Médias de Lançamento Contínuo por Percentual (Fórmula 16106):
    • Utiliza um dicionário diferente, VG_VerbasMediaLctoContinuoPrc, para verbas de lançamento contínuo por percentual.
    • Ajusta o período de cálculo para o mês atual (Solicitacao.DataReferencia) para verbas específicas como 70 (Acúmulo de Função), 71 (Acúmulo de Função II), 80 (Insalubridade), 85 (Periculosidade), 100 (Adicional de Transferência), 557 (Indenização Supressão Comissão) e 1151 (Gratificação de Função).
    • Ajusta a base de cálculo (prmValorHoraBaseMedia) para verbas 80, 85 e 1151.
    • Utiliza a função SysFunc_MediaFeGoz_LctoContinuo_Prc para o cálculo.
    • Inclui processos especiais para calcular médias de Adicional Tempo Serviço (ATS) (verba 95) e ATS Legado (verba 97) quando pagos por percentual (VG_PrcATS > 0M && VG_VlrCada_enio == 0M ou VG_PrcATSLegado > 0M && VG_VlrCada_enio_Legado == 0M), criando novas verbas e lançamentos futuros.
  • Cálculo de Médias de Lançamento Contínuo por Valor (Fórmula 16214):
    • Utiliza um dicionário diferente, VG_VerbasMediaLctoContinuoVlr, para verbas de lançamento contínuo por valor.
    • Ajusta o período de cálculo para o mês atual (Solicitacao.DataReferencia) para verbas específicas como 70 (Acúmulo de Função), 110 (Quebra de Caixa), 557 (Indenização Supressão Comissão) e 559 (Indenização Supressão Horas Extras).
    • Utiliza a função SysFunc_MediaFeGoz_LctoContinuo_UltimoVlr para o cálculo.
    • Inclui processos especiais para calcular médias de Adicional Tempo Serviço (ATS) (verba 95) e ATS Legado (verba 97) quando pagos por valor (VG_PrcATS > 0M && VG_VlrCada_enio > 0M ou VG_PrcATSLegado > 0M && VG_VlrCada_enio_Legado > 0M), criando novas verbas e lançamentos futuros.
  • Fórmulas de Inibição de Duplicação (Fórmulas 16761, 16107, 16215): Existem três fórmulas adicionais que simplesmente definem HoleriteVerba = null. O objetivo é inibir a duplicação de médias de férias que possam vir do sistema antigo (Tab_Lancamento - WFP).
👤 Lechler
  • Condições de Retorno Nulo Iniciais: A regra de lechler (fórmula 17369) possui uma condição de retorno nulo mais restrita, ativando return null apenas se Lancamento.ValorTotal > 0M. A condição específica para o cliente “tiautomotive” e tipo de vínculo “Impatriado” presente na regra geral não é aplicada.
  • Inibição de Duplicação de Lançamento (Fórmula 17370): Existe uma segunda fórmula específica para lechler que define HoleriteVerba = null imediatamente. Esta regra tem como objetivo inibir a duplicação de médias de férias que possam vir de lançamentos de sistemas legados (WFP), garantindo que o cálculo seja feito exclusivamente pelo SuperCalc.
  • Dicionário de Verbas para Média: O cliente lechler utiliza o dicionário VG_VerbasMediaLctoContinuoPrc para determinar quais verbas terão suas médias calculadas, diferentemente da regra geral que usa VG_VerbasMediaVlr.
  • Re-inicialização de Período de Cálculo de Médias: Dentro do loop de cálculo de médias, lechler (fórmula 17369) re-inicializa prmDtaInicio e prmDtaFim a cada iteração com SysFunc_DtaIniMedFeriasPA e SysFunc_DtaFimMedFeriasPA, respectivamente.
  • Ajustes de Período Específicos para Verbas: lechler (fórmula 17369) ajusta prmDtaInicio e prmDtaFim para o mês da referência (Solicitacao.DataReferencia) se o Codigo da verba for "80" (Insalubridade) ou "85" (Periculosidade). A regra geral possui ajustes para a verba "5" (Comissão) e para clientes específicos como “influx”, “syngentacom” e “pratafina”, que não são aplicados para lechler.
  • Função de Cálculo de Média Principal: lechler (fórmula 17369) utiliza a função SysFunc_MediaFeGoz_LctoContinuo_Prc (form 382) para calcular as médias, que é diferente da SysFunc_MediaFeGoz_Vlr_AgrupadoPrc (form 370) usada na regra geral. Esta função de lechler também recebe prmValorHoraBaseMedia como parâmetro, que é inicializado com VG_VlrSalNom e pode ser alterado para VG_VlrBaseCalcInsal se a verba for "80".
  • Cálculo de DSR Específico para Cliente “veibras”: O bloco de cálculo de DSR da regra geral contém uma condição exclusiva para o cliente “veibras”, que não está presente na regra de lechler.
  • Processos Especiais de Adicional Tempo de Serviço (ATS): lechler (fórmula 17369) inclui blocos de cálculo ativos para as verbas "95" (Adicional Tempo Serviço) e "97" (Adic. Tempo Serviço Legado), caso VG_PrcATS ou VG_PrcATSLegado sejam maiores que zero e VG_VlrCada_enio ou VG_VlrCada_enio_Legado sejam zero. Estes cálculos geram novas verbas de média com base no salário nominal, percentual de ATS e dias de abono de férias, e criam lançamentos futuros. A regra geral possui blocos de “PROCESSOS ESPECIAIS” para “Comissões” que estão comentados e inativos.
👤 Monsanto
  • Condições de Retorno Nulo Iniciais:
    • As fórmulas 10509 e 10511 de monsanto apenas verificam se Lancamento.ValorTotal > 0M para retornar null, sem a condição adicional para o cliente tiautomotive e tipo de vínculo Impatriado presente na regra geral.
    • A fórmula 10396, se Lancamento.ValorTotal > 0M, cria um lançamento futuro e retorna HoleriteVerba, um comportamento distinto de return null.
    • As fórmulas 10510 e 10512 são exclusivas para monsanto e simplesmente definem HoleriteVerba = null; para inibir duplicação de lançamentos.
  • Cálculo de Data para Verba de Comissão (prmCodVerbaOrigem == "5"): Na fórmula 10509, a data de início (prmDtaInicio) para verbas de comissão não é limitada pela data de admissão do empregado (Empregado.DataAdmissao), diferentemente da regra geral que usa SysFunc_MaiorData para garantir que a data não seja anterior à admissão.
  • Ajustes de Data Específicos por Cliente: As fórmulas de monsanto não incluem os blocos de código para ajustes de datas de início e fim de médias que são específicos para clientes como influx, syngentacom e pratafina, presentes na regra geral.
  • Funções de Ajuste de Data Genéricas: As fórmulas de monsanto não utilizam as funções SysFunc_Altera_DataFim_Medias e SysFunc_Altera_DataInicio_Medias para ajustes genéricos de datas de médias, que estão presentes na regra geral.
  • Tipos de Médias Calculadas: Monsanto possui fórmulas distintas para diferentes tipos de médias, utilizando dicionários e funções de cálculo específicos:
    • Média de Valor (Fórmula 10509): Utiliza VG_VerbasMediaVlr e SysFunc_MediaFeGoz_Vlr_AgrupadoPrc.
    • Média de Quantidade (Fórmula 10396): Utiliza VG_VerbasMediaQtde e SysFunc_MediaFeGoz_Qtde_AgrupadoPrc, com lógica específica para prmValorHoraBaseMedia (baseado em VG_BCHExtAdNot ou VG_VlrSalNom).
    • Média de Lançamento Contínuo Percentual (Fórmula 10511): Utiliza VG_VerbasMediaLctoContinuoPrc e SysFunc_MediaFeGoz_LctoContinuo_Prc, com lógica específica para prmValorHoraBaseMedia (baseado em VG_VlrSalNom ou VG_VlrBaseCalcInsal).
  • Tratamento de DSR para veibras: As fórmulas de monsanto não contêm o bloco de código específico para o cliente veibras que utiliza Func_DSR_MediaVlr para o cálculo do DSR sobre médias, presente na regra geral.
  • Descrição Complementar do DSR (Fórmula 10396): A fórmula 10396 adiciona uma DescricaoComplementar ao lançamento futuro do DSR, detalhando o percentual ou a base de cálculo (1/6 ou DiasUteis x DiasDSR), o que não ocorre na regra geral.
  • Cálculo de Média de Adicional Tempo Serviço (ATS) (Fórmula 10511): A fórmula 10511 inclui um bloco de “PROCESSOS ESPECIAIS” para calcular a média do Adicional Tempo de Serviço (verba 95) proporcional aos dias de abono pecuniário de férias, caso VG_PrcATS > 0M e VG_VlrCada_enio == 0M. Este cálculo cria uma nova verba de holerite e um lançamento futuro, funcionalidade ausente na regra geral.
  • Inibição de Duplicação de Lançamentos (Fórmulas 10510 e 10512): Monsanto possui fórmulas dedicadas (10510 e 10512) que simplesmente definem HoleriteVerba = null; para inibir a duplicação de médias de férias que possam vir de sistemas legados (Tab_Lancamento - WFP). A regra geral não possui essa lógica explícita de inibição via uma fórmula separada.
  • Recebimento de Lançamento Futuro (Fórmula 10397): A fórmula 10397 de monsanto é exclusiva para receber lançamentos futuros (SysFunc_ReceberLancamentoFuturo(HoleriteVerba)), indicando um fluxo de processamento que envolve a criação e posterior consumo de lançamentos futuros para esta verba.
  • Bloco de Comissões Comentado: O bloco de “PROCESSOS ESPECIAIS” referente a Comissões (verba 5) está comentado em todas as fórmulas de monsanto (10509, 10396, 10511), assim como na regra geral.
👤 Pratafina
  • Se Solicitacao.Cliente.ToLower() == “pratafina” e prmCodVerbaOrigem == “5” (comissão), o período de cálculo da média é ajustado de forma similar à “syngentacom”.
  • Sub-regra para Pratafina: Se Solicitacao.Cliente.ToLower() == “pratafina” e Sindicato.CNPJ == “82666025000193” (Sec - Blumenau) e Codigo == “5”, o prmDtaFim é o mês anterior à data de referência e prmDtaInicio é 11 meses antes de prmDtaFim (ou a data de admissão, se posterior).
👤 Salesforce
  • Condições de Retorno Nulo Iniciais (Fórmula 16772): A condição de retorno nulo inicial não inclui a validação específica para o cliente “tiautomotive” e o tipo de vínculo “Impatriado”, presente na regra geral.
  • Inicialização de Variável (Fórmula 16772): A variável VG_VlrComissaoPagaMaior é inicializada com 0 no início do cálculo.
  • Verbas de Comissão para Média (Fórmula 16772): A lógica para determinar o período de cálculo da média de comissões foi expandida para incluir as verbas de origem “57” e “205”, além da verba “5”, com base no artigo 487, § 2º, combinado com o artigo 142, § 3º da CLT.
  • Remoção de Ajustes de Data Específicos (Fórmula 16772): Foram removidos os blocos de código que ajustavam as datas de início e fim do período de cálculo da média para clientes específicos como “influx”, “syngentacom” e “pratafina”.
  • Remoção de Funções de Alteração de Data (Fórmula 16772): As chamadas às funções SysFunc_Altera_DataFim_Medias e SysFunc_Altera_DataInicio_Medias foram removidas.
  • Condição Adicional para DSR (Fórmula 16772): A geração do DSR sobre a média de abono pecuniário de férias inclui uma condição adicional para excluir a verba de origem “5”, com a justificativa de que a verba “5” não gera a verba “55”, mas sim a “205”.
  • Remoção de Bloco de Processos Especiais (Fórmula 16772): O bloco de código comentado referente a “PROCESSOS ESPECIAIS” para cálculo de comissões (verba 5) foi explicitamente removido.
  • Fórmula de Inibição de Duplicação (Fórmula 16773): Uma nova fórmula foi introduzida com o propósito de inibir a duplicação de lançamentos de médias de férias que possam ter origem no sistema legado (Tab_Lancamento / WFP), definindo HoleriteVerba = null.
  • Cálculo de Média por Quantidade (Fórmula 16831): Uma nova fórmula foi introduzida para calcular a média de abono pecuniário de férias baseada em quantidades (Média Qtde), utilizando o dicionário VG_VerbasMediaQtde.
    • Retorno Condicional (Fórmula 16831): Se Lancamento.ValorTotal for maior que zero, a verba é criada como um lançamento futuro e retornada imediatamente.
    • Cálculo Customizado de Quantidades (Fórmula 16831): Implementa um processo especial para converter horas pagas com percentual respectivo em horas normais para verbas como “12”, “13” e “72”, incluindo a consideração do DSR (verba “55”) no cálculo da quantidade.
    • Cálculo da Média (Fórmula 16831): A média é calculada dividindo a soma das quantidades pelo número de meses no período ou por 12, dependendo da variável VG_MediaSimples_12. O valor total é arredondado e calculado como prmValorHoraBaseMedia * ValorMedia / 30M * prmDiasFeriasAbono.
    • Demonstrativo de Média (Fórmula 16831): Inclui a geração de um demonstrativo de média detalhado, registrando o período, tipo de média, unidade, valores e ocorrências de holerites.
    • Incidências (Fórmula 16831): As incidências de INSS, FGTS e IRRF são explicitamente atribuídas à nova verba criada com base nas incidências da HoleriteVerba original.
    • Lançamento Futuro (Fórmula 16831): A verba de média calculada é adicionada à lista de verbas do holerite e também criada como um lançamento futuro.
  • Processamento de Lançamento Futuro (Fórmula 16832): Uma nova fórmula foi introduzida para processar lançamentos futuros, chamando SysFunc_ReceberLancamentoFuturo(HoleriteVerba).
👤 Sugisawa
  • Múltiplas Fórmulas Específicas: Sugisawa utiliza quatro fórmulas distintas (IDs 5941, 5942, 5943, 5944) para a verba 316, enquanto a regra geral usa uma única fórmula (ID 6082).
  • Condições de Retorno Nulo Iniciais: As fórmulas de cálculo de Sugisawa (5941 e 5943) não possuem as condições iniciais de return null baseadas em Lancamento.ValorTotal ou tipo de cliente/vínculo (tiautomotive, Impatriado) presentes na regra geral.
  • Lógica de Cálculo de Média:
    • Fórmulas 5941 e 5943: Priorizam o valor ou percentual do mês de referência (Solicitacao.DataReferencia) se houver lançamento para a verba no mês atual (SysFunc_VerificaPossuiLancamentoMesAtual). Caso contrário, utilizam o período aquisitivo de férias (SysFunc_DtaIniMedFeriasPA, SysFunc_DtaFimMedFeriasPA). A regra geral, por sua vez, calcula uma média histórica sobre um período definido.
  • Dicionários de Verbas para Média:
    • Fórmula 5941: Utiliza o dicionário VG_VerbasMediaLctoContinuoPrc para verbas de lançamento contínuo por percentual.
    • Fórmula 5943: Utiliza o dicionário VG_VerbasMediaLctoContinuoVlr para verbas de lançamento contínuo por valor.
    • A regra geral usa VG_VerbasMediaVlr.
  • Variável prmValorHoraBaseMedia: A fórmula 5941 introduz e utiliza prmValorHoraBaseMedia (inicialmente VG_VlrSalNom, com exceção para verba 80 usando VG_VlrBaseCalcInsal), que não existe na lógica principal da regra geral.
  • Ajustes de Período de Cálculo: As fórmulas de Sugisawa não contêm os ajustes específicos de período de cálculo para verba 5 (Comissões) ou para os clientes “influx”, “syngentacom” e “pratafina”, presentes na regra geral.
  • Funções de Alteração de Data: As fórmulas de Sugisawa não chamam as funções SysFunc_Altera_DataFim_Medias e SysFunc_Altera_DataInicio_Medias, que são utilizadas na regra geral para ajustes de datas de média.
  • Funções de Cálculo Principal:
    • Fórmula 5941: Invoca SysFunc_MediaFeGoz_LctoContinuo_Prc (form 382).
    • Fórmula 5943: Invoca SysFunc_MediaFeGoz_LctoContinuo_UltimoVlr (form 383).
    • A regra geral utiliza SysFunc_MediaFeGoz_Vlr_AgrupadoPrc (form 370).
  • Cálculo Específico de Adicional por Tempo de Serviço (ATS):
    • Fórmula 5941: Inclui um bloco de “PROCESSOS ESPECIAIS” para calcular a média do ATS (Verba 95) proporcional aos dias de abono pecuniário de férias, com base em VG_PrcATS e VG_VlrSalNom. Este cálculo é exclusivo de Sugisawa e não existe na regra geral.
  • DescricaoComplementar no DSR:
    • Fórmula 5941: Adiciona uma DescricaoComplementar ao HoleriteLancamentoFuturo do DSR, detalhando o percentual e os dias úteis/DSR ({0}% ({1}x{2})), o que não ocorre na regra geral.
  • Lógica de Inibição de Duplicação:
    • Fórmulas 5942 e 5944: São fórmulas dedicadas exclusivamente a definir HoleriteVerba = null, com o objetivo de inibir a duplicação de médias de férias provenientes de sistemas legados (Tab_Lancamento, WFP). A regra geral não possui fórmulas com essa finalidade explícita.
  • Processos Especiais Comentados: As fórmulas de Sugisawa não contêm o extenso bloco comentado de “PROCESSOS ESPECIAIS” para Comissões (Verba 5) que está presente na regra geral.
👤 Syngentacom
  • Se Solicitacao.Cliente.ToLower() == “syngentacom” e Empregador.CNPJEmpregador não contém “633899300” (não sendo Dipagro), o período de cálculo da média é ajustado: prmDtaFim é o mês anterior à data de referência (ou dois meses antes se a folha do mês anterior não estiver paga), e prmDtaInicio é 11 meses antes de prmDtaFim (ou a data de admissão, se posterior).
👤 Tiautomotive
  • Se Solicitacao.Cliente.ToLower() == “tiautomotive” e Empregado.TipoVinculo == EnumTipoVinculoBO.Impatriado, a verba não é calculada.

  • Condições de Retorno Nulo Iniciais:

    • Fórmula 821: Se Lancamento.ValorTotal > 0, cria um lançamento futuro e retorna HoleriteVerba. Não possui a condição de retorno nulo para Empregado.TipoVinculo == EnumTipoVinculoBO.Impatriado presente na regra geral.
    • Fórmula 863: Retorna null se Lancamento.ValorTotal > 0M. Não possui a condição de retorno nulo para Empregado.TipoVinculo == EnumTipoVinculoBO.Impatriado presente na regra geral.
  • Ajustes de Período de Cálculo de Médias:

    • Fórmulas 821 e 863: Utilizam SysFunc_DtaIniMedFeriasPA e SysFunc_DtaFimMedFeriasPA diretamente, sem as customizações de data por verba de origem ou cliente presentes na regra geral.
  • Cálculo da Base Horária (VG_HsMes):

    • Fórmula 821: Se o Empregador.CNPJEmpregador for "55981351001941" (Gravataí), VG_HsMes é sobrescrito para 210.00M e restaurado ao valor original no final.
  • Cálculo do Valor Hora Base para Média:

    • Fórmula 821: Define prmValorHoraBaseMedia como VG_BCHExtAdNot / VG_HsMes.
    • Fórmula 863: Define prmValorHoraBaseMedia como VG_VlrSalNom, mas para verbas de origem "80" ou "122", utiliza VG_VlrBaseCalcInsal.
  • Processos Especiais (Adicional Tempo Serviço - ATS):

    • Fórmula 863: Inclui um bloco ativo para calcular a média do Adicional Tempo Serviço (ATS - verba 95) se VG_PrcATS > 0M e VG_VlrCada_enio == 0M. Este cálculo cria uma nova verba de holerite e um lançamento futuro.
  • Inibição de Duplicação de Lançamento:

    • Fórmula 822: Processa lançamentos futuros (SysFunc_ReceberLancamentoFuturo).
    • Fórmula 3808: Define HoleriteVerba = null; para inibir a duplicação de médias de férias que possam vir da Tab_Lancamento (sistema antigo WFP).
👤 Veibras
  • Se Solicitacao.Cliente.ToLower() == “veibras”, o cálculo do DSR sobre a média de valores utiliza a função Func_DSR_MediaVlr (form 17078) de forma diferente, sem criar lançamentos futuros para cada item da lista VerbasCalculadas.
  • Condições de Retorno Nulo Iniciais: A fórmula de veibras (ID 17058) possui uma condição de retorno nulo simplificada, verificando apenas se Lancamento.ValorTotal > 0M. Não inclui a condição específica para o cliente tiautomotive e tipo de vínculo Impatriado presente na regra geral.
  • Dicionário de Verbas para Média: veibras utiliza o dicionário VG_VerbasMediaLctoContinuoVlr para as verbas de média, em contraste com VG_VerbasMediaVlr usado na regra geral.
  • Lógica de Cálculo de Período (Datas): Em veibras (ID 17058), as datas prmDtaInicio e prmDtaFim são inicializadas uma única vez antes do loop principal e ajustadas pelas funções SysFunc_Altera_DataFim_Medias e SysFunc_Altera_DataInicio_Medias. A regra geral, por sua vez, recalcula essas datas dentro do loop para cada verba e possui lógicas condicionais específicas para verba de origem 5 (Comissões) e para os clientes influx, syngentacom e pratafina.
  • Processamento de Verbas de Média Padrão: A fórmula de veibras (ID 17058) contém um bloco que verifica se o dicionário MediasCalcular possui itens. Se sim, ele invoca SysFunc_Panico, indicando que não há implementação para VG_VerbasMediaLctoContinuoVlr neste contexto e que a fórmula precisaria ser reescrita. O loop foreach subsequente para processar essas verbas está vazio, efetivamente desabilitando o cálculo de médias genéricas.
  • Processos Especiais Customizados: veibras (ID 17058) implementa quatro blocos de “PROCESSOS ESPECIAIS” que não estão presentes ou estão comentados na regra geral:
    • Adicional Tempo Serviço (Verba 95): Calcula uma média com base em VG_PrcATS e VG_VlrCada_enio, criando uma nova verba de holerite.
    • Prêmio do Tempo de Serviço (Verba 98): Calcula uma média com base em VG_VlrPremioTempoServico, criando uma nova verba de holerite.
    • Média das Médias e DSRs Médias de Férias: Soma valores de verbas específicas (340, 342, 434, 435, 341, 437) de holerites regulares pagos em um período, calcula uma média e cria uma nova verba de holerite.
    • Garantia de Salário (Verba 66): Calcula um complemento se o valor da garantia de salário (VG_VlrGarantiaSalario) for superior à soma de outras verbas de média de comissão e DSR (315, 316, 317, 5, 172).
  • Inibição de Duplicação de Lançamento (Fórmula 17059): veibras possui uma segunda fórmula (ID 17059) que explicitamente define HoleriteVerba = null;. Esta fórmula tem como objetivo inibir a duplicação de médias de férias que poderiam vir de lançamentos de sistemas legados (Tab_Lancamento do WFP).

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

Verba(316).ValorTotal = (HABILITAR_VERBA_316 == VERDADEIRO E VG_PossuiFerias == VERDADEIRO E VG_PeriodoFeriasReferencia.DiasAbono > 0 E CPF NOT IN CPFS_EXCLUIDOS_PROCESSAMENTO E TipoVinculo NOT IN TIPOS_VINCULO_EXCLUIDOS E (IGNORAR_SE_JA_LANCADO == FALSO OU Holerite.Verba(316) == 0)) ? ARRED_PADRAO(SOMA_MEDIAS_DICIONARIO(ModoApuracao) + (CALCULAR_EXCECOES_DIRETAS_ATS == VERDADEIRO ? (((VG_PrcATS > 0 E VG_VlrCada_enio > 0 ? VG_PrcATS * VG_VlrCada_enio : SalarioNominal * (VG_PrcATS / 100)) / 30) * DiasAbono) : 0) + (HABILITAR_GARANTIA_SALARIAL == VERDADEIRO ? MAX(VG_VlrGarantiaSalario - (Verba(315).ValorTotal + SomaMedias), 0) : 0)) : 0

Verba(317).ValorTotal = (Verba(316).ValorTotal > 0 E (VG_CalcularDSRMedia == VERDADEIRO OU FORCAR_CALCULO_DSR_MEDIA == VERDADEIRO)) ? ARRED_PADRAO(SOMA_DSR_MEDIAS(DicionarioVerbasComDSR)) : 0


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

SE NOT tabela_parametros.obter_flag(“HABILITAR_VERBA_316”) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 desabilitada nos parâmetros gerais.”) RETORNAR_VALOR(NULO) FIM_SE

Validação de Pré-requisitos de Férias e Abono Pecuniário tem_ferias = holerite_atual.obter_variavel_global_booleana(“VG_PossuiFerias”) dias_abono = holerite_atual.obter_variavel_global_inteiro(“VG_PeriodoFeriasReferencia.DiasAbono”)

SE NOT tem_ferias OU dias_abono <= 0 ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 ignorada: Colaborador não possui férias ou abono pecuniário no período (Dias Abono: ” + CONVERTER_PARA_TEXTO(dias_abono) + ”).”) RETORNAR_VALOR(NULO) FIM_SE

Validação de Exceções por CPF via Lista Dinâmica cpfs_excluidos = tabela_parametros.obter_lista_string(“CPFS_EXCLUIDOS_PROCESSAMENTO”) SE NOT cpfs_excluidos.estavazia() E cpfs_excluidos.contem(colaborador.cpf) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 ignorada: CPF ” + colaborador.cpf + ” em lista de exceção.”) RETORNAR_VALOR(NULO) FIM_SE

Validação Dinâmica de Exclusão por Tipo de Vínculo (Substitui Hardcode ‘tiautomotive’ + ‘Impatriado’) tipos_vinculo_bloqueados = tabela_parametros.obter_lista_string(“TIPOS_VINCULO_EXCLUIDOS”) SE NOT tipos_vinculo_bloqueados.estavazia() E tipos_vinculo_bloqueados.contem(colaborador.tipo_vinculo) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 ignorada: Tipo de vínculo ’” + CONVERTER_PARA_TEXTO(colaborador.tipo_vinculo) + ”’ não elegível.”) RETORNAR_VALOR(NULO) FIM_SE

Validação de Lançamento Manual / Preexistente ou Inibição WFP Legado SE holerite_atual.obter_valor_verba(“316”) > 0.00 ENTAO SE tabela_parametros.obter_flag(“INIBIR_DUPLICACAO_LEGADO_WFP”) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 atuando como container/inibidora de duplicidade legado. Retornando NULO.”) RETORNAR_VALOR(NULO) SENAO SE tabela_parametros.obter_flag(“IGNORAR_SE_JA_LANCADO”) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 interrompida: Lançamento manual pré-existente.”) RETORNAR_VALOR(NULO) FIM_SE FIM_SE

2. Determinação do Tipo de Apuração, Períodos e Cálculo das Médias

codigo_verba_dsr_gerado = tabela_parametros.obter_string_default(“CODIGO_VERBA_DSR_GERADO”, “317”) calcular_dsr_media = holerite_atual.obter_variavel_global_booleana(“VG_CalcularDSRMedia”) OU tabela_parametros.obter_flag(“FORCAR_CALCULO_DSR_MEDIA”) modo_apuracao = tabela_parametros.obter_string_default(“MODO_APURACAO_MEDIAS”, “VALOR_PADRAO”) Opções: VALOR_PADRAO, QUANTIDADE, LANCTO_CONTINUO_PRC, LANCTO_CONTINUO_VLR

Dicionário Dinâmico de Acordo com o Modo de Apuração SE modo_apuracao == “QUANTIDADE” ENTAO dicionario_verbas_media = holerite_atual.obter_variavel_global_dicionario(“VG_VerbasMediaQtde”) SENAO SE modo_apuracao == “LANCTO_CONTINUO_PRC” ENTAO dicionario_verbas_media = holerite_atual.obter_variavel_global_dicionario(“VG_VerbasMediaLctoContinuoPrc”) SENAO SE modo_apuracao == “LANCTO_CONTINUO_VLR” ENTAO dicionario_verbas_media = holerite_atual.obter_variavel_global_dicionario(“VG_VerbasMediaLctoContinuoVlr”) SENAO dicionario_verbas_media = holerite_atual.obter_variavel_global_dicionario(“VG_VerbasMediaVlr”) FIM_SE

SE dicionario_verbas_media.estavazio() E NOT tabela_parametros.obter_flag(“CALCULAR_EXCECOES_DIRETAS_ATS”) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 interrompida: Nenhum dicionário de médias localizado.”) RETORNAR_VALOR(NULO) FIM_SE

Período Aquisitivo Padrão de Férias data_inicio_base = SysFunc_DtaIniMedFeriasPA(colaborador) data_fim_base = SysFunc_DtaFimMedFeriasPA(colaborador)

valor_total_media_acumulado = 0.00 valor_total_dsr_acumulado = 0.00 qtd_verbas_processadas = 0

Configuração de Regras de Comissão / Parâmetros de Ajuste de Janela Temporal meses_janela_comissao = tabela_parametros.obter_inteiro_default(“MESES_JANELA_COMISSAO”, 12) usar_inpc_comissao = tabela_parametros.obter_flag(“APLICAR_INPC_MEDIAS_COMISSAO”)

Iteração do Dicionário Dynamic PARA CADA item_verba EM dicionario_verbas_media FACA codigo_verba_origem = item_verba.codigo verbas_comissao = tabela_parametros.obter_lista_string(“VERBAS_CATEGORIA_COMISSAO”) // Padrão: [“5”, “57”, “205”]

Definição do Período de Apuração da Verba Atual SE verbas_comissao.contem(codigo_verba_origem) ENTAO data_fim_item = SysFunc_PrimeiroDiaMes(holerite_atual.data_referencia).AdicionarDias(-1) data_inicio_calculada = SysFunc_PrimeiroDiaMes(data_fim_item.AdicionarMeses(-(meses_janela_comissao - 1)))

SE tabela_parametros.obter_flag(“CONSIDERAR_ADMISSAO_JANELA_COMISSAO”) ENTAO data_ini_item = SysFunc_MaiorData(data_inicio_calculada, colaborador.data_admissao) SENAO data_ini_item = data_inicio_calculada FIM_SE SENAO SE modo_apuracao == “LANCTO_CONTINUO_PRC” OU modo_apuracao == “LANCTO_CONTINUO_VLR” ENTAO data_ini_item = SysFunc_PrimeiroDiaMes(holerite_atual.data_referencia) data_fim_item = SysFunc_UltimoDiaMes(holerite_atual.data_referencia) SENAO data_ini_item = data_inicio_base data_fim_item = data_fim_base FIM_SE

Aplicação de Ajustes de Função Genérica de Datas (Ajustes de Convenção/Sindicato Parametrizados) SE tabela_parametros.obter_flag(“HABILITAR_AJUSTE_GENERICO_DATAS”) ENTAO data_ini_item = SysFunc_Altera_DataInicio_Medias(data_ini_item, codigo_verba_origem) data_fim_item = SysFunc_Altera_DataFim_Medias(data_fim_item, codigo_verba_origem) FIM_SE

Execução do Cálculo de Acordo com o Modo de Apuração SE modo_apuracao == “QUANTIDADE” ENTAO valor_hora_base = SysFunc_ObterValorHoraBaseMedia(colaborador, holerite_atual, codigo_verba_origem) lista_resultados = SysFunc_MediaFeGoz_Qtde_AgrupadoPrc(colaborador, codigo_verba_origem, data_ini_item, data_fim_item, valor_hora_base, dias_abono) SENAO SE modo_apuracao == “LANCTO_CONTINUO_PRC” ENTAO valor_hora_base = SysFunc_ObterValorHoraBaseMedia(colaborador, holerite_atual, codigo_verba_origem) lista_resultados = SysFunc_MediaFeGoz_LctoContinuo_Prc(colaborador, codigo_verba_origem, data_ini_item, data_fim_item, valor_hora_base, dias_abono) SENAO SE modo_apuracao == “LANCTO_CONTINUO_VLR” ENTAO lista_resultados = SysFunc_MediaFeGoz_LctoContinuo_UltimoVlr(colaborador, codigo_verba_origem, data_ini_item, data_fim_item, dias_abono) SENAO lista_resultados = SysFunc_MediaFeGoz_Vlr_AgrupadoPrc(colaborador, codigo_verba_origem, data_ini_item, data_fim_item, usar_inpc_comissao) FIM_SE

Consolidação dos Resultados e Apuração do DSR Relacionado SE lista_resultados != NULO E NOT lista_resultados.estavazia() ENTAO soma_parcial_media = lista_resultados.somar_campo(“ValorTotal”)

SE soma_parcial_media > 0.00 ENTAO valor_total_media_acumulado = valor_total_media_acumulado + soma_parcial_media qtd_verbas_processadas = qtd_verbas_processadas + 1

verbas_sem_dsr_explicito = tabela_parametros.obter_lista_string(“VERBAS_EXCLUIDAS_CALCULO_DSR”)

SE calcular_dsr_media E NOT verbas_sem_dsr_explicito.contem(codigo_verba_origem) E (SysFunc_VerbaPossuiDSR(codigo_verba_origem) OU tabela_parametros.obter_flag(“FORCAR_DSR_TODAS_VERBAS”)) ENTAO PARA CADA vlr EM lista_resultados FACA SE vlr.ValorTotal > 0.00 ENTAO SE tabela_parametros.obter_flag(“USAR_CALCULO_DSR_ESPECIAL_VEIBRAS”) ENTAO valor_dsr_item = Func_DSR_MediaVlr(colaborador, vlr, codigo_verba_dsr_gerado, dias_abono) SENAO valor_dsr_item = Func_DSR(colaborador, vlr, codigo_verba_dsr_gerado, dias_abono) FIM_SE valor_total_dsr_acumulado = valor_total_dsr_acumulado + valor_dsr_item FIM_SE FIM_PARAFIN FIM_SE FIM_SE FIM_SE FIM_PARAFIN

Exceção Parametrizada 1: Adicional por Tempo de Serviço (ATS / Enio) Proporcional ao Abono SE tabela_parametros.obter_flag(“CALCULAR_EXCECOES_DIRETAS_ATS”) ENTAO prc_ats = holerite_atual.obter_variavel_global_decimal(“VG_PrcATS”) vlr_cada_ts = holerite_atual.obter_variavel_global_decimal(“VG_VlrCada_enio”)

SE prc_ats > 0.00 ENTAO SE vlr_cada_ts > 0.00 ENTAO base_ats = prc_ats * vlr_cada_ts SENAO base_ats = colaborador.salario_nominal * (prc_ats / 100.00) FIM_SE

valor_ats_calculado = ARREDONDAR_PADRAO((base_ats / 30.00) * dias_abono) SE valor_ats_calculado > 0.00 ENTAO valor_total_media_acumulado = valor_total_media_acumulado + valor_ats_calculado qtd_verbas_processadas = qtd_verbas_processadas + 1 FIM_SE FIM_SE FIM_SE

Exceção Parametrizada 2: Garantia Salarial (Complemento de Média Abono) SE tabela_parametros.obter_flag(“HABILITAR_GARANTIA_SALARIAL”) ENTAO vlr_garantia = holerite_atual.obter_variavel_global_decimal(“VG_VlrGarantiaSalario”) soma_medias_existentes = holerite_atual.obter_valor_verba(“315”) + valor_total_media_acumulado

SE vlr_garantia > soma_medias_existentes ENTAO complemento_garantia = vlr_garantia - soma_medias_existentes valor_total_media_acumulado = valor_total_media_acumulado + complemento_garantia qtd_verbas_processadas = qtd_verbas_processadas + 1 FIM_SE FIM_SE

SE valor_total_media_acumulado <= 0.00 ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 interrompida: Valor total das médias apuradas é menor ou igual a zero.”) RETORNAR_VALOR(NULO) FIM_SE

3. Aplicação de Arredondamento e Limites

valor_final_316 = ARREDONDAR_PADRAO(valor_total_media_acumulado)

4. Gravação, Lançamentos Futuros e Disparo da Verba Correlacionada 317 (DSR Abono)

Processamento de Lançamento Futuro (se habilitado) SE tabela_parametros.obter_flag(“GERAR_LANCAMENTOS_FUTUROS”) ENTAO SysFunc_CriarLancamentoFuturo(colaborador, “316”, valor_final_316, holerite_atual.data_referencia) FIM_SE

Se atuando estritamente como container acumulador, não grava no holerite principal SE tabela_parametros.obter_flag(“ATUAR_COMO_CONTAINER_PURO”) ENTAO REGISTRAR_LOG_INFORMATIVO(“Verba 316 finalizada como container de médias. Disparando lançamentos futuros/filhos.”)

Disparo do DSR (Verba 317) mesmo em modo container SE valor_total_dsr_acumulado > 0.00 ENTAO valor_final_dsr = ARREDONDAR_PADRAO(valor_total_dsr_acumulado) SysFunc_CriarLancamentoFuturo(colaborador, codigo_verba_dsr_gerado, valor_final_dsr, holerite_atual.data_referencia) FIM_SE

RETORNAR_VALOR(NULO) FIM_SE

Instanciação e Gravação no Holerite Atual instancia_verba = holerite_atual.criar_instancia_verba(“316”) instancia_verba.descricao_final = tabela_parametros.obter_string_default(“TEXTO_DESCRICAO”, “Média Abono Pecun. Férias”) instancia_verba.quantidade = dias_abono instancia_verba.valor_total = valor_final_316

instancia_verba.incidencia_inss = ENUM_INCIDENCIA.ISENTO instancia_verba.incidencia_fgts = ENUM_INCIDENCIA.ISENTO instancia_verba.incidencia_irrf = ENUM_INCIDENCIA.ISENTO instancia_verba.natureza_esocial = tabela_parametros.obter_string_default(“NATUREZA_ESOCIAL”, “1023”)

instancia_verba.memoria_calculo = “Média Abono Pecuniário Férias | Dias: ” + CONVERTER_PARA_TEXTO(dias_abono) + ” | Modo: ” + modo_apuracao + ” | Total Médias R$: ” + FORMATAR_TEXTO(valor_final_316, “N2”)

holerite_atual.adicionar_verba(instancia_verba)

Disparo Automático da Verba Correlacionada 317 (DSR Média Abono Pecuniário) SE valor_total_dsr_acumulado > 0.00 ENTAO valor_final_dsr = ARREDONDAR_PADRAO(valor_total_dsr_acumulado)

instancia_dsr = holerite_atual.criar_instancia_verba(codigo_verba_dsr_gerado) instancia_dsr.descricao_final = tabela_parametros.obter_string_default(“TEXTO_DESCRICAO_DSR”, “DSR Média Abono Pecun. Férias”) instancia_dsr.quantidade = dias_abono instancia_dsr.valor_total = valor_final_dsr instancia_dsr.incidencia_inss = ENUM_INCIDENCIA.ISENTO instancia_dsr.incidencia_fgts = ENUM_INCIDENCIA.ISENTO instancia_dsr.incidencia_irrf = ENUM_INCIDENCIA.ISENTO instancia_dsr.natureza_esocial = “1023” instancia_dsr.memoria_calculo = “DSR Média Abono Pecuniário Férias | Dias: ” + CONVERTER_PARA_TEXTO(dias_abono) + ” | Valor R$: ” + FORMATAR_TEXTO(valor_final_dsr, “N2”)

holerite_atual.adicionar_verba(instancia_dsr)

SE tabela_parametros.obter_flag(“GERAR_LANCAMENTOS_FUTUROS”) ENTAO SysFunc_CriarLancamentoFuturo(colaborador, codigo_verba_dsr_gerado, valor_final_dsr, holerite_atual.data_referencia) FIM_SE FIM_SE

REGISTRAR_LOG_INFORMATIVO(“Verba 316 concluída com sucesso. Valor R$: ” + FORMATAR_TEXTO(valor_final_316, “N2”)) RETORNAR_VALOR(instancia_verba) FIM_FUNCAO


Parametrizações Propostas para Reestruturação

1. REGRAS DE ELEGIBILIDADE E ISENÇÕES ESPECÍFICAS

[X] Habilitar Processamento da Verba 316

[X] Ignorar se a verba 316 já possuir lançamento manual positivo

[ ] Inibir duplicação de lançamentos vindos de sistemas legados (WFP)

[X] Exigir presença de férias ativas (VG_PossuiFerias) e Dias de Abono > 0

Exceções Individuais por CPF - Bloqueio de Processamento (Separados por Vírgula): [ ]

Tipos de Vínculo Excluídos do Processamento (substitui hardcode tiautomotive):

[ ] Estagiário

[X] Impatriado

[ ] Trabalhador Autônomo / Diretor Não Empregado

2. DIRETRIZES DE APURAÇÃO DE MÉDIAS E JANELA TEMPORAL

Modo Principai de Apuração de Médias …: [ VALOR_PADRAO v ]

(Opções: VALOR_PADRAO | QUANTIDADE | LANCTO_CONTINUO_PRC | LANCTO_CONTINUO_VLR)

Comportamento do Motor de Processamento …: [ CRIAR_VERBA_HOLERITE v ]

(Opções: CRIAR_VERBA_HOLERITE | ATUAR_COMO_CONTAINER_PURO)

Regras para Verbas de Comissão (Verbas 5, 57, 205):

└─ Janela Temporal para Média de Comissões (Meses) …: [ 12 ]

[X] Limitar início da janela de comissão à Data de Admissão (se posterior)

[ ] Aplicar correção por INPC no cálculo de média de comissões

Ajustes Adicionais de Período e Exceções:

[X] Executar ajuste genérico de datas de início/fim (SysFunc_Altera_Data)

[ ] Habilitar cálculo direto de ATS / Énio proporcional aos dias de abono

[ ] Habilitar complemento de Média por Garantia Salarial

3. GERAÇÃO E TRIBUTAÇÃO DO DSR SOBRE MÉDIA (VERBA 317)

[X] Respeitar Sinalização Global de DSR sobre Média (VG_CalcularDSRMedia)

[ ] Forçar Cálculo de DSR sobre Média em Qualquer Processamento

[ ] Forçar DSR para todas as verbas (Ignorar SysFunc_VerbaPossuiDSR)

[ ] Utilizar regra/função de cálculo especial de DSR (Veibras)

Verbas Excluídas Explicitamente do Cálculo de DSR (Separadas por Vírgula):

[ 5 ]

Mapeamento da Verba de DSR Gerada:

└─ Código da Verba de DSR do Abono Pecuniário …: [ 317 ]

4. INTEGRAÇÃO, LANÇAMENTOS FUTUROS E ENCARGOS ESOCIAL

[X] Gerar lançamentos futuros automáticos para os resultados apurados (SysFunc)

[X] Permitir sobregravação da descrição no holerite

Descrição Personalizada da Verba Principal (316) …: [ Média Abono Pecun. Férias ]

Descrição Personalizada da Verba DSR (317) …: [ DSR Média Abono Pecun. Férias ]

Impacto Financeiro …: [ Não ]

Impacto Contábil …: [ Sim ]

Configuração Padrão de Encargos:

Incidência INSS: : [ ISE - Isento v ]

Incidência IRRF: : [ ISE - Isento v ]

Incidência FGTS: : [ ISE - Isento v ]

Natureza eSocial: : [ 1023 - Férias - Abono Pecun. v ]

Clientes com mesma regra

  • Clientes da Regra Geral e Módulo Padrão: Atendidos integralmente. O mecanismo unificado executa o agrupamento de médias por valor (VALOR_PADRAO), aplica o período aquisitivo de férias, valida as flags globais de DSR (VG_CalcularDSRMedia) e gera a Verba 317 automaticamente.
  • Clientes Influx, Syngentacom e Pratafina: Atendidos integralmente. Os desvios hardcoded de janelas temporais de comissões (ex: 5, 6 ou 12 meses anteriores à solicitação) foram abstraídos através das configurações VERBAS_CATEGORIA_COMISSAO, MESES_JANELA_COMISSAO e CONSIDERAR_ADMISSAO_JANELA_COMISSAO, eliminando a checagem por nome de cliente ou CNPJ de sindicato.
  • Cliente Veibras: Atendido integralmente. A particularidade na chamada da função de DSR (Func_DSR_MediaVlr) é ativada via chave de controle USAR_CALCULO_DSR_ESPECIAL_VEIBRAS.
  • Cliente TI Automotive: Atendido integralmente. O bloqueio de processamento para empregados com vínculo Impatriado passa a ser configurado dinamicamente no campo TIPOS_VINCULO_EXCLUIDOS, removendo a string "tiautomotive" do código-fonte.
  • Cliente ACAL: Atendido integralmente. Todas as suas variações de fórmulas (médias por quantidade, lançamentos contínuos por percentual/valor, aplicação de INPC para comissões, exclusão de comissão para CNPJs do grupo Gucci/Balenciaga, ATS proporcional e garantia salarial) foram absorvidas através das chaves MODO_APURACAO_MEDIAS, APLICAR_INPC_MEDIAS_COMISSAO, CALCULAR_EXCECOES_DIRETAS_ATS e HABILITAR_GARANTIA_SALARIAL.
  • Clientes Brabus, JMalucelli, Advantech, Lechler, Monsanto, Salesforce e Sugisawa: Atendidos integralmente. As especificidades de cada um --- tais como alternância entre dicionários de média (VG_VerbasMediaLctoContinuoPrc / VG_VerbasMediaLctoContinuoVlr), inibição de duplicação de lançamentos legados do WFP (INIBIR_DUPLICACAO_LEGADO_WFP), atuação da verba como container puro (ATUAR_COMO_CONTAINER_PURO), cálculo de ATS/Énio por percentual ou valor e geração de lançamentos futuros (GERAR_LANCAMENTOS_FUTUROS) --- foram parametrizadas em chaves de controle na interface.

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