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:
- A verba não é calculada se já houver um
Lancamento.ValorTotalpositivo ou se o cliente for “tiautomotive” e o tipo de vínculo do empregado for “Impatriado”. - O cálculo prossegue apenas se o empregado possui férias (
VG_PossuiFerias) e há dias de abono pecuniário (VG_PeriodoFeriasReferencia.DiasAbono > 0). - São inicializados parâmetros como
prmCodVerba = "316",prmDescricao,prmDtaInicio,prmDtaFim,prmConsiderarSomenteHoleritesPagos = true,prmLogar = true,prmCodVerbaDSR = "317", eprmDiasFeriasAbonocom base nos dias de abono. - A lógica itera sobre um dicionário de verbas (
VG_VerbasMediaVlr) para as quais as médias devem ser calculadas. - 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çõesSysFunc_DtaIniMedFeriasPAeSysFunc_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_MediaseSysFunc_Altera_DataInicio_Medias. - A média é calculada utilizando a função
SysFunc_MediaFeGoz_Vlr_AgrupadoPrc, que retorna uma lista deHoleriteVerbaBO. - Bloco DSR: Se a verba de origem compõe DSR (
SysFunc_VerbaPossuiDSR), o valor da média é positivo eVG_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.
- Se o cliente for “veibras”, o DSR é calculado por
- Há um bloco de código extenso e comentado sobre “PROCESSOS ESPECIAIS” para verbas de comissão (código “5”), que não é executado.
- Ao final, a verba principal (
HoleriteVerba) é definida comonull, indicando que esta verba atua como um “container” para gerar outras verbas de média e DSR.
- A verba não é calculada se já houver um
-
Variáveis Utilizadas:
Lancamento.ValorTotalSolicitacao.ClienteEmpregado.TipoVinculoVG_PossuiFeriasVG_PeriodoFeriasReferencia.DiasAbonoVG_VerbasMediaVlrSolicitacao.DataReferenciaEmpregado.DataAdmissaoSindicato.CNPJEmpregador.CNPJEmpregadorEmpregado.Historico.ListaHoleriteVG_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_VerbasMediaVlre 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 clientetiautomotivee tipo de vínculoImpatriadopresente na regra geral. - Inicialização de Variável: Inicializa a variável
VG_VlrHEValorcom0Mno início do cálculo. - Flag de Processo Especial: Declara e utiliza uma variável booleana
ProcEspecialpara controlar fluxos específicos. - Exclusão Condicional de Verba “5” (Comissão): Remove a verba “5” (Comissão) do dicionário
VG_VerbasMediaVlre defineProcEspecial = truese 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 em7185309700), ajustaprmDtaFimpara o último dia do mês anterior à data de referência eprmDtaIniciopara 12 meses antes ou a data de admissão. - Para
BALENCIAGA SP(CNPJs49885819000172,49885819000334,49885819000415com SECSP60989944000165), ajustaprmDtaFimpara o último dia do mês anterior à data de referência eprmDtaIniciopara 6 meses antes ou a data de admissão. - Para
BALENCIAGA RJ(CNPJ49885819000253com SEC RJ33644360000185), ajustaprmDtaFimpara o último dia do mês anterior à data de referência eprmDtaIniciopara 12 meses antes ou a data de admissão.
- Para
- Cálculo de DSR para
veibras: Não possui o blocoif (Solicitacao.Cliente.ToLower() == "veibras")com a funçãoFunc_DSR_MediaVlrpresente 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_Juntopara 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) paraGucci - Curitiba(CNPJ8338986000973e Sindicato73301632000169). - 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
UsaINPCfor verdadeiro. - Inclui tratamento especial para
SAINT LAURENT 04(CNPJ21756072000486) para somar DSR de comissão (verbas “55”, “342”, “346”). - Calcula a
MediaComissaoe 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_Juntofor falso) e gera um lançamento futuro para o DSR.
- Define variáveis como
- Restituição de Verba “5”: Ao final, adiciona a verba “5” (Comissão) de volta ao dicionário
VG_VerbasMediaVlrse 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 = nulle 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_Lancamentodo WFP).
Fórmula 4046 - Abono Pecun. Férias - Média Qtde. [ ACAL ]
- Tratamento de Lançamento Existente: Se
Lancamento.ValorTotal > 0M, cria umHoleriteLancamentoFuturoBOa partir da verba atual, define sua data de referência e tipo de folha, e retorna a verba, em vez de retornarnull. - Base de Cálculo da Média por Quantidade: Inicializa
prmValorHoraBaseMediacomoVG_BCHExtAdNot / VG_HsMes. - Ajuste da Base para Comissionados Puros: Se o
Empregado.TipoPagamentoforComissaoPura, recalculaprmValorHoraBaseMediacom 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 empregadorBaru(CNPJ iniciado em1442632700) e verbas de origem “1133” ou “1134”, defineprmValorHoraBaseMediacomoVG_VlrSalNom / 30M. - Função de Cálculo de Média: Utiliza a função
SysFunc_MediaFeGoz_Qtde_AgrupadoPrcpara calcular médias baseadas em quantidade, diferente da função de valor utilizada na regra geral. - Descrição Complementar do DSR: Adiciona detalhes à
DescricaoComplementardoHoleriteLancamentoFuturoBOdo DSR, incluindo o percentual da verba e o tipo de DSR (UmSextoouXxY).
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 flagVG_JaPassou_Afor falsa, cria uma novaHoleriteVerbaBO(HV316), atribui oValorTotaldo lançamento, define as incidências de INSS, FGTS e IRRF comoISE(Isento), adicionaHV316à lista de verbas do holerite, e marcaVG_JaPassou_A = true. Em seguida, chamaSysFunc_ReceberLancamentoFuturo(HoleriteVerba)e defineHoleriteVerba = null.
Fórmula 5911 - Abono Pecun. Férias - Média Lcto Continuo Prc [ ACAL ]
- Período de Referência da Média: Define
prmDtaIniciocomo o primeiro dia do mês daSolicitacao.DataReferenciaeprmDtaFimcomo 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
prmValorHoraBaseMediacomoVG_VlrSalNom. - Ajustes da Base de Cálculo:
- Para verba de origem “80”, define
prmValorHoraBaseMediacomoVG_VlrBaseCalcInsal. - Para verbas de origem “1312” ou “1313” e empregadores
BaruouMercosul, defineprmValorHoraBaseMediacomoVG_BCHExtAdNot + VG_VlrLcto1311.
- Para verba de origem “80”, define
- Função de Cálculo de Média: Utiliza a função
SysFunc_MediaFeGoz_LctoContinuo_Prcpara 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 > 0MeVG_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 paraGucci,Bottega,Saint Laurent(incluindoAdic. Exercício Cargo Confiança- verba “1181”) eMercosul. - Cria uma nova verba (
NovaMedia) para o ATS, calculando seuValorReferenciaeValorTotalproporcional aos dias de abono. - Inclui tratamento especial para
SINDPPD-RS(adicionandoGratificação de Função- verba “1151” à base de cálculo). - Gera
MemoriaCalculoeDemonstrativo de Média. - Adiciona a verba à lista de verbas do holerite e cria um lançamento futuro.
- Calcula a base de cálculo do ATS (
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 = nulle 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_Lancamentodo 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 em1442632700) eSolicitacao.TipoFolha == EnumTipoFolhaBO.Ferias, remove a verba “1062” do dicionárioVG_VerbasMediaLctoContinuoVlr. - Período de Referência da Média: Para verbas de origem “241”, “1151”, “1198” (para
Dynatrace), ou para empregadoresBaruouMercosulcom verbas específicas, defineprmDtaIniciocomo o primeiro dia do mês daSolicitacao.DataReferenciaeprmDtaFimcomo o último dia do mesmo mês. - Descrição para DSR Marítimo: Para o empregador
Barue verba de origem “1458”, ajusta aprmDescricaopara incluir “DSR”. - Função de Cálculo de Média: Utiliza a função
SysFunc_MediaFeGoz_LctoContinuo_UltimoVlrpara 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 > 0MeVG_VlrCada_enio > 0M), que não está presente na regra geral. Este bloco:- Calcula
NovaMedia.ValorReferenciacomoVG_PrcATS * VG_VlrCada_enio. - Calcula
NovaMedia.ValorTotalproporcional aos dias de abono. - Gera
MemoriaCalculoeDemonstrativo de Média. - Adiciona a verba à lista de verbas do holerite e cria um lançamento futuro.
- Calcula
- Restituição de Verba “1062”: Ao final, adiciona a verba “1062” (Bônus por Tempo de Empresa) de volta ao dicionário
VG_VerbasMediaLctoContinuoVlrse 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 = nulle 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_Lancamentodo 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 > 0Mou condições específicas para o cliente “tiautomotive”. - Dicionário de Verbas para Média: Utiliza o dicionário
VG_VerbasMediaLctoContinuoVlrpara identificar as verbas que compõem a média, diferentemente da regra geral que usaVG_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 deSysFunc_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
prmDtaInicioeprmDtaFimbaseados 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_MediaseSysFunc_Altera_DataInicio_Mediaspara 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_MediaVlrdiferente. - 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_Lancamentodo WFP).
👤 Brabus
-
Condições de Retorno Nulo Iniciais: A verba retorna nulo apenas se
Lancamento.ValorTotalfor maior que 0. Não possui as condições adicionais de cliente (tiautomotiveeImpatriado) presentes na regra geral. -
Dicionário de Verbas para Média: Utiliza o dicionário
VG_VerbasMediaLctoContinuoVlrpara 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_DtaIniMedFeriasPAeSysFunc_DtaFimMedFeriasPAdiretamente, sem as customizações de data específicas para clientes ou as funçõesSysFunc_Altera_DataFim_MediaseSysFunc_Altera_DataInicio_Mediaspresentes 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
veibrasao 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_PrcATSeVG_VlrCada_enioforem 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) ou9542432100(JMalucelli Rental S/A), a verba5(Comissão) é removida do dicionário padrãoVG_VerbasMediaVlrantes do cálculo das médias gerais. - A data de início para o cálculo da média da verba
5é definida comoSysFunc_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) seUsaINPCfortrue. 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árioVG_VerbasMediaVlrse tiver sido removida.
- Para empregadores com CNPJ iniciado em
- 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 como70(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) e1151(Gratificação de Função). - Ajusta a base de cálculo (
prmValorHoraBaseMedia) para verbas80,85e1151. - Utiliza a função
SysFunc_MediaFeGoz_LctoContinuo_Prcpara o cálculo. - Inclui processos especiais para calcular médias de Adicional Tempo Serviço (ATS) (verba
95) e ATS Legado (verba97) quando pagos por percentual (VG_PrcATS > 0M && VG_VlrCada_enio == 0MouVG_PrcATSLegado > 0M && VG_VlrCada_enio_Legado == 0M), criando novas verbas e lançamentos futuros.
- Utiliza um dicionário diferente,
- 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 como70(Acúmulo de Função),110(Quebra de Caixa),557(Indenização Supressão Comissão) e559(Indenização Supressão Horas Extras). - Utiliza a função
SysFunc_MediaFeGoz_LctoContinuo_UltimoVlrpara o cálculo. - Inclui processos especiais para calcular médias de Adicional Tempo Serviço (ATS) (verba
95) e ATS Legado (verba97) quando pagos por valor (VG_PrcATS > 0M && VG_VlrCada_enio > 0MouVG_PrcATSLegado > 0M && VG_VlrCada_enio_Legado > 0M), criando novas verbas e lançamentos futuros.
- Utiliza um dicionário diferente,
- 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 nullapenas seLancamento.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 = nullimediatamente. 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_VerbasMediaLctoContinuoPrcpara determinar quais verbas terão suas médias calculadas, diferentemente da regra geral que usaVG_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
prmDtaInicioeprmDtaFima cada iteração comSysFunc_DtaIniMedFeriasPAeSysFunc_DtaFimMedFeriasPA, respectivamente. - Ajustes de Período Específicos para Verbas: lechler (fórmula 17369) ajusta
prmDtaInicioeprmDtaFimpara o mês da referência (Solicitacao.DataReferencia) se oCodigoda 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 daSysFunc_MediaFeGoz_Vlr_AgrupadoPrc(form 370) usada na regra geral. Esta função de lechler também recebeprmValorHoraBaseMediacomo parâmetro, que é inicializado comVG_VlrSalNome pode ser alterado paraVG_VlrBaseCalcInsalse 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), casoVG_PrcATSouVG_PrcATSLegadosejam maiores que zero eVG_VlrCada_enioouVG_VlrCada_enio_Legadosejam 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 > 0Mpara retornarnull, sem a condição adicional para o clientetiautomotivee tipo de vínculoImpatriadopresente na regra geral. - A fórmula 10396, se
Lancamento.ValorTotal > 0M, cria um lançamento futuro e retornaHoleriteVerba, um comportamento distinto dereturn null. - As fórmulas 10510 e 10512 são exclusivas para monsanto e simplesmente definem
HoleriteVerba = null;para inibir duplicação de lançamentos.
- As fórmulas 10509 e 10511 de monsanto apenas verificam se
- 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 usaSysFunc_MaiorDatapara 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,syngentacomepratafina, 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_MediaseSysFunc_Altera_DataInicio_Mediaspara 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_VerbasMediaVlreSysFunc_MediaFeGoz_Vlr_AgrupadoPrc. - Média de Quantidade (Fórmula 10396): Utiliza
VG_VerbasMediaQtdeeSysFunc_MediaFeGoz_Qtde_AgrupadoPrc, com lógica específica paraprmValorHoraBaseMedia(baseado emVG_BCHExtAdNotouVG_VlrSalNom). - Média de Lançamento Contínuo Percentual (Fórmula 10511): Utiliza
VG_VerbasMediaLctoContinuoPrceSysFunc_MediaFeGoz_LctoContinuo_Prc, com lógica específica paraprmValorHoraBaseMedia(baseado emVG_VlrSalNomouVG_VlrBaseCalcInsal).
- Média de Valor (Fórmula 10509): Utiliza
- Tratamento de DSR para
veibras: As fórmulas de monsanto não contêm o bloco de código específico para o clienteveibrasque utilizaFunc_DSR_MediaVlrpara 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
DescricaoComplementarao lançamento futuro do DSR, detalhando o percentual ou a base de cálculo (1/6ouDiasUteis 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 > 0MeVG_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 com0no 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_MediaseSysFunc_Altera_DataInicio_Mediasforam 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), definindoHoleriteVerba = 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árioVG_VerbasMediaQtde.- Retorno Condicional (Fórmula 16831): Se
Lancamento.ValorTotalfor 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 comoprmValorHoraBaseMedia * 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
HoleriteVerbaoriginal. - 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.
- Retorno Condicional (Fórmula 16831): Se
- 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 nullbaseadas emLancamento.ValorTotalou 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.
- Fórmulas 5941 e 5943: Priorizam o valor ou percentual do mês de referência (
- Dicionários de Verbas para Média:
- Fórmula 5941: Utiliza o dicionário
VG_VerbasMediaLctoContinuoPrcpara verbas de lançamento contínuo por percentual. - Fórmula 5943: Utiliza o dicionário
VG_VerbasMediaLctoContinuoVlrpara verbas de lançamento contínuo por valor. - A regra geral usa
VG_VerbasMediaVlr.
- Fórmula 5941: Utiliza o dicionário
- Variável
prmValorHoraBaseMedia: A fórmula 5941 introduz e utilizaprmValorHoraBaseMedia(inicialmenteVG_VlrSalNom, com exceção para verba80usandoVG_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_MediaseSysFunc_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).
- Fórmula 5941: Invoca
- 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_PrcATSeVG_VlrSalNom. Este cálculo é exclusivo de Sugisawa e não existe na regra geral.
- 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
DescricaoComplementarno DSR:- Fórmula 5941: Adiciona uma
DescricaoComplementaraoHoleriteLancamentoFuturodo DSR, detalhando o percentual e os dias úteis/DSR ({0}% ({1}x{2})), o que não ocorre na regra geral.
- Fórmula 5941: Adiciona uma
- 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.
- Fórmulas 5942 e 5944: São fórmulas dedicadas exclusivamente a definir
- 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 retornaHoleriteVerba. Não possui a condição de retorno nulo paraEmpregado.TipoVinculo == EnumTipoVinculoBO.Impatriadopresente na regra geral. - Fórmula 863: Retorna
nullseLancamento.ValorTotal > 0M. Não possui a condição de retorno nulo paraEmpregado.TipoVinculo == EnumTipoVinculoBO.Impatriadopresente na regra geral.
- Fórmula 821: Se
-
Ajustes de Período de Cálculo de Médias:
- Fórmulas 821 e 863: Utilizam
SysFunc_DtaIniMedFeriasPAeSysFunc_DtaFimMedFeriasPAdiretamente, sem as customizações de data por verba de origem ou cliente presentes na regra geral.
- Fórmulas 821 e 863: Utilizam
-
Cálculo da Base Horária (
VG_HsMes):- Fórmula 821: Se o
Empregador.CNPJEmpregadorfor"55981351001941"(Gravataí),VG_HsMesé sobrescrito para210.00Me restaurado ao valor original no final.
- Fórmula 821: Se o
-
Cálculo do Valor Hora Base para Média:
- Fórmula 821: Define
prmValorHoraBaseMediacomoVG_BCHExtAdNot / VG_HsMes. - Fórmula 863: Define
prmValorHoraBaseMediacomoVG_VlrSalNom, mas para verbas de origem"80"ou"122", utilizaVG_VlrBaseCalcInsal.
- Fórmula 821: Define
-
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 > 0MeVG_VlrCada_enio == 0M. Este cálculo cria uma nova verba de holerite e um lançamento futuro.
- Fórmula 863: Inclui um bloco ativo para calcular a média do Adicional Tempo Serviço (ATS - verba 95) se
-
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 daTab_Lancamento(sistema antigo WFP).
- Fórmula 822: Processa lançamentos futuros (
👤 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 seLancamento.ValorTotal > 0M. Não inclui a condição específica para o clientetiautomotivee tipo de vínculoImpatriadopresente na regra geral. - Dicionário de Verbas para Média:
veibrasutiliza o dicionárioVG_VerbasMediaLctoContinuoVlrpara as verbas de média, em contraste comVG_VerbasMediaVlrusado na regra geral. - Lógica de Cálculo de Período (Datas): Em
veibras(ID 17058), as datasprmDtaInicioeprmDtaFimsão inicializadas uma única vez antes do loop principal e ajustadas pelas funçõesSysFunc_Altera_DataFim_MediaseSysFunc_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 origem5(Comissões) e para os clientesinflux,syngentacomepratafina. - Processamento de Verbas de Média Padrão: A fórmula de
veibras(ID 17058) contém um bloco que verifica se o dicionárioMediasCalcularpossui itens. Se sim, ele invocaSysFunc_Panico, indicando que não há implementação paraVG_VerbasMediaLctoContinuoVlrneste contexto e que a fórmula precisaria ser reescrita. O loopforeachsubsequente 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_PrcATSeVG_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).
- Adicional Tempo Serviço (Verba 95): Calcula uma média com base em
- Inibição de Duplicação de Lançamento (Fórmula 17059):
veibraspossui uma segunda fórmula (ID 17059) que explicitamente defineHoleriteVerba = 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_Lancamentodo 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_COMISSAOeCONSIDERAR_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 controleUSAR_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_ATSeHABILITAR_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