Wiki / SuperCalculo ~6 min

915 - INSS Patronal

⚙️ Metadados

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

🧮 Regra Geral

  • Lógica de Cálculo:
    1. A verba é calculada apenas se a base 3060 (SC_SAL) for maior que zero.
    2. A alíquota inicial do INSS Patronal (PRC_INSS_Patronal) é definida pelo percentual configurado para o empregador (Empregador.PercentualPatronal).
    3. Customização por CPF: Se o Empregado.CPF for 7471327553 ou 15930042810, o TipoFolha for Rescisao e a DataReferencia for 01/03/2024, a alíquota PRC_INSS_Patronal é fixada em 20%.
    4. Customização por Tomador CEI: Se VG_TomadorTemCEI for true, a alíquota PRC_INSS_Patronal é zerada (0%).
    5. Validação de Alíquota Zero: Um erro (SysFunc_Panico) é disparado se:
      • VG_TomadorTemCEI for false (Tomador com CNPJ).
      • O empregador não for OptanteSimples.
      • A alíquota PRC_INSS_Patronal for 0%.
      • E o CNPJEmpregador ou Solicitacao.Cliente não corresponder a uma lista de exceções hardcoded (J Malucelli, KWS, Syngenta, Rummo).
      • E o TipoProcesso não for Provisoes.
    6. Validação de Alíquota Máxima: Um erro (SysFunc_Panico) é disparado se a alíquota PRC_INSS_Patronal ultrapassar 22,5%.
    7. Cálculo Final: O cálculo é realizado se uma das seguintes condições for verdadeira:
      • A alíquota PRC_INSS_Patronal for maior que 0% e o empregador não for OptanteSimples.
      • A alíquota PRC_INSS_Patronal for maior que 0% e o CNPJEmpregador for 27270258000164 (Letícia Aymoré Azeredo).
      • A condição ESC for true (empregador 8836013000107 - Construtora Esc Ltda, OptanteSimples e CodigoSimples == 5).
    8. O ValorBase da verba é definido como SC_SAL (Base 3060) e a Aliquota como PRC_INSS_Patronal.
    9. O ValorEncargo é calculado e arredondado.
  • Fórmula matemática: Valor Encargo = Func_ArredondamentoPadrao(Base INSS Patronal * (Alíquota Patronal / 100))
  • Variáveis Utilizadas: SC_SAL (valor da base 3060), Empregador.PercentualPatronal, PRC_INSS_Patronal, Empregado.CPF, Solicitacao.TipoFolha, Solicitacao.DataReferencia, VG_TomadorTemCEI, Empregador.OptanteSimples, Empregador.CodigoSimples, Empregador.CNPJEmpregador, Solicitacao.Cliente, Solicitacao.TipoProcesso.
  • Condições Especiais:
    • Cálculo condicionado a SC_SAL > 0M.
    • Alíquota patronal pode ser sobrescrita por CPFs específicos em rescisão.
    • Alíquota patronal pode ser zerada se VG_TomadorTemCEI for true.
    • Validações com SysFunc_Panico para alíquota zero inesperada ou alíquota acima de 22,5%.
    • Cálculo final condicionado a tipo de empregador (Simples Nacional) ou CNPJs específicos.
    • Um bloco de código inicial para ajuste de base de Salário-Maternidade (RecuperarValorTotalVerba("30"), etc.) para o cliente “nuubes” em 01/11/2020 está comentado e inativo.

🔗 Dependências

  • Verbas Relacionadas:
    • 3060: Utilizada como base de cálculo (SC_SAL).
    • 30, 472, 297, 346, 31, 831, 832, 833, 841: Mencionadas no bloco de código comentado para ajuste de base de Salário-Maternidade.
  • Tipo de Relação: A verba 3060 é uma dependência para o cálculo da verba 915. As demais verbas seriam dependências se o bloco comentado estivesse ativo.

🧩 Funções

  • RecuperarValorTotalBase("3060"): Recupera o valor total da base de cálculo 3060.
  • AdicionarMensagemInfoPublicaCalculo(): Adiciona mensagens informativas ao log de cálculo.
  • SysFunc_NovaData(dia, mes, ano): Cria um objeto DateTime para uma data específica.
  • SysFunc_Panico(): Dispara um erro de cálculo, interrompendo o processamento.
  • Func_ArredondamentoPadrao(): Realiza o arredondamento padrão do sistema.

🎯 Particularidades por Cliente/Setor

👤 ESC
  • 8836013000107 (ESC, Construtora Esc Ltda - nuubes 205240) tem uma condição específica para cálculo se for OptanteSimples e CodigoSimples == 5.
👤 Jmalucelli
  • 2799411000114 (J Malucelli Futebol S/A): Excluído da validação que dispara SysFunc_Panico se a alíquota patronal for zero.
👤 KWS
  • Excluído da validação que dispara SysFunc_Panico se a alíquota patronal for zero.
👤 Syngenta
  • 2840353200 (Syngenta Seeds) e 6074446300 (Syngenta Proteção de Cultivos LTDA): Excluído da validação que dispara SysFunc_Panico se a alíquota patronal for zero.
👤 Rummo
  • 1935518900 Rummo - Morum José Lopes Bernardino: Excluído da validação que dispara SysFunc_Panico se a alíquota patronal for zero.

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

BaseCalculo = RecuperarValorTotalBase(“3060”)

AliqPatronal = SE(TomadorTemCEI, 0, SE(PossuiExcecaoCadastrada, AliqExcecao, PercentualPatronalEmpregador))

ElegivelCalculo = (BaseCalculo > 0) E ((NAO OptanteSimples E AliqPatronal > 0) OU (OptanteSimples E CodigoSimples EM [5] E AliqPatronal > 0) OU (CNPJ EM ExcecoesSimplesPatronal))

ValorEncargo = SE(ElegivelCalculo, ARREDONDAR((BaseCalculo * AliqPatronal) / 100), 0)


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

SE VG_CalculaEncargos == FALSO OU NAO Config.CalcularEncargosPatronais ENTÃO RETORNAR NULO FIM_SE

SE Solicitacao.TipoProcesso == PROVISOES E NAO Config.PermitirCalculoEmProvisoes ENTÃO RETORNAR NULO FIM_SE

Validação Dinâmica de Tipos de Processo/Folha Permitidos SE NAO Config.TiposFolhaPermitidos.Contem(Solicitacao.TipoFolha) ENTÃO RETORNAR NULO FIM_SE

2. Determinação da Base de Cálculo

CodigoBaseINSS = Config.CodigoBaseINSS // Padrão: “3060” ValorBaseINSS = Holerite.RecuperarValorTotalBase(CodigoBaseINSS)

SE ValorBaseINSS == NULO OU ValorBaseINSS <= 0 ENTÃO RETORNAR NULO FIM_SE

3. Apuração Dinâmica da Alíquota do INSS Patronal

PrcINSSPatronal = Empregador.PercentualPatronal

Sobrescrita de Alíquota por Exceções Configuradas no Cadastro de Exceções SE Config.PossuiExcecaoAliquotaPorEmpregado ENTÃO RegraExcecao = Config.BuscarExcecaoAliquota(Empregado.Id, Solicitacao.TipoFolha, Solicitacao.DataReferencia) SE RegraExcecao != NULO ENTÃO PrcINSSPatronal = RegraExcecao.Aliquota FIM_SE FIM_SE

Zeramento de Alíquota para Tomadores com CEI/CNO SE VG_TomadorTemCEI E Config.ZerarAliqPatronalSeTomadorCEI ENTÃO PrcINSSPatronal = 0.0 FIM_SE

4. Validações Regradas e Proteção de Consistência (Eliminação de SysFunc_Panico)

AliquotaZeradaPermitida = Empregador.OptanteSimples OU VG_TomadorTemCEI OU Config.IsentoINSSPatronal OU Config.ExcecoesAliqZeroPermitida.Contem(Empregador.CNPJEmpregador)

SE PrcINSSPatronal == 0 E NAO AliquotaZeradaPermitida ENTÃO SE Config.ModoInterrupcaoInconsistencia == “PANICO” ENTÃO SysFunc_Panico(“Inconsistência Crítica: Alíquota de INSS Patronal zerada para empresa não isenta ou optante do Simples.”) SENÃO AdicionarMensagemInfoPublicaCalculo(“Alerta: Alíquota patronal zerada identificada. Cálculo do encargo suspenso por inconsistência cadastral.”) RETORNAR NULO FIM_SE FIM_SE

SE PrcINSSPatronal > Config.AliquotaPatronalMaxima ENTÃO // Padrão: 22.50% SE Config.ModoInterrupcaoInconsistencia == “PANICO” ENTÃO SysFunc_Panico(String.Format(“Inconsistência Crítica: Alíquota patronal ({0}%) excede o limite legal configurado ({1}%).”, PrcINSSPatronal, Config.AliquotaPatronalMaxima)) SENÃO PrcINSSPatronal = Config.AliquotaPatronalMaxima AdicionarMensagemInfoPublicaCalculo(String.Format(“Alíquota ajustada para o limite máximo permitido de {0}%.”, Config.AliquotaPatronalMaxima)) FIM_SE FIM_SE

5. Avaliação de Elegibilidade do Regime Tributário (Simples Nacional vs Geral)

DeveCalcularEncargo = FALSO

SE NAO Empregador.OptanteSimples E PrcINSSPatronal > 0 ENTÃO DeveCalcularEncargo = VERDADEIRO SENÃO SE Empregador.OptanteSimples ENTÃO SE Config.EmpresasSimplesComCobrancaPatronal.Contem(Empregador.CNPJEmpregador) E PrcINSSPatronal > 0 ENTÃO DeveCalcularEncargo = VERDADEIRO SENÃO SE Config.CodigosSimplesComPatronal.Contem(Empregador.CodigoSimples) E PrcINSSPatronal > 0 ENTÃO DeveCalcularEncargo = VERDADEIRO FIM_SE FIM_SE

SE NAO DeveCalcularEncargo ENTÃO RETORNAR NULO FIM_SE

6. Cálculo do Encargo e Gravação

VlrEncargoBruto = ValorBaseINSS * (PrcINSSPatronal / 100.0) VlrEncargoFinal = Func_ArredondamentoPadrao(VlrEncargoBruto)

SE VlrEncargoFinal <= 0 E NAO Config.GravarEncargoZerado ENTÃO RETORNAR NULO FIM_SE

NovoEncargo = CriarVerbaHoleriteEncargoBO(“915”, Config.DescricaoPadrao) NovoEncargo.Aliquota = PrcINSSPatronal NovoEncargo.ValorBase = ValorBaseINSS NovoEncargo.ValorEncargo = VlrEncargoFinal

SE Config.FormatarDescricaoComAliquota ENTÃO NovoEncargo.DescricaoFinal = String.Format(“{0} ({1:F2}%)”, Config.DescricaoPadrao, PrcINSSPatronal).Trim() SENÃO NovoEncargo.DescricaoFinal = Config.DescricaoPadrao.Trim() FIM_SE

NovoEncargo.TipoImposto = Config.TipoImpostoTributavel // Padrão: INSS Patronal NovoEncargo.TipoIncidencia = Config.TipoIncidencia // Padrão: Isento (ISE)

CopiarIncidencias(VerbaOriginal(“915”), NovoEncargo)

NovoEncargo.ImpactoFinanceiro = Config.ImpactoFinanceiro // Conforme ficha técnica: Sim NovoEncargo.ImpactoContabil = Config.ImpactoContabil // Conforme ficha técnica: Sim

SE Config.AtualizarAcumuladorINSSPatronal ENTÃO VG_TotalINSSPatronal = VG_TotalINSSPatronal + VlrEncargoFinal FIM_SE

Registro de Memória de Cálculo Transparente EscreverMemoria(“INSS_PATRONAL”, String.Format(“Base INSS SC_SAL (3060): R$ {0}, Alíquota Patronal: {1}%, Encargo Apurado: R$ {2}”, ValorBaseINSS.ToString(“N2”), PrcINSSPatronal.ToString(“F2”), VlrEncargoFinal.ToString(“N2”)))

Holerite.ListaHoleriteEncargo.Adicionar(NovoEncargo)

FIM


Parametrizações Propostas para Reestruturação

1. REGRAS DE ENTRADA E FILTROS DE ELEGIBILIDADE

[X] Respeitar Flag Global de Encargos Patronais (VG_CalculaEncargos == true)

[ ] Permitir Execução no Processo de Provisões

Tipos de Folha Permitidos …: [X] Regular [X] Rescisão [X] Rescisão Complementar [X] 13º Salário

2. DETERMINAÇÃO DE ALÍQUOTAS E EXCEÇÕES

Código Base INSS SC_SAL …: [ 3060 ]

Alíquota Patronal Máxima Permitida …: [ 22.5000 ] %

[X] Zerar Alíquota Patronal quando Tomador de Serviço possuir CEI/CNO

[X] Habilitar Tabela de Exceção de Alíquota por Contrato / Empregado

(Permite configurar exceções com vigência e motivo de folha via cadastro)

3. REGRAS DO SIMPLES NACIONAL E EXCEÇÕES DE ALÍQUOTA ZERO

Códigos do Simples com Cobrança Patronal …: [ 5 ]

CNPJs Optantes do Simples com Cobrança …: [ 27270258000164, 8836013000107 ]

CNPJs Isentos de Alerta por Alíquota Zero ..: [ 2799411000114, 28403532000100, 60744463000100, 19355189000100 ]

Ação para Inconsistência de Alíquota Zero .: [ Log e Suspensão de Cálculo (Sem Pânico) v ]

4. FORMATAÇÃO, ARREDONDAMENTO E CRITÉRIOS DE GRAVAÇÃO

Descrição Padrão da Rubrica …: [ INSS Patronal ]

[X] Formatar Descrição Exibindo Alíquota Aplicada (Ex: INSS Patronal (22.50%))

Regra de Arredondamento/Ajuste …: [ Arredondamento Padrão (Func_ArredondamentoPadrao) v ]

Impacto Financeiro …: [X] Sim [ ] Não

Impacto Contábil …: [X] Sim [ ] Não

[X] Atualizar Acumulador Global de INSS Patronal

5. TRIBUTAÇÃO E ENVIOS ESOCIAL

Natureza eSocial …: [ Isento / Não Informar ]

Incidência INSS …: [ Isento ]

Incidência FGTS …: [ Isento ]

Incidência IRRF …: [ Isento ]

Clientes com mesma regra

  • Regra Geral / Padrão de Mercado: O motor parametrizável apura a cota patronal de INSS sobre a base 3060 (SC_SAL), aplicando a alíquota da empresa (PercentualPatronal) e respeitando o enquadramento do Simples Nacional.
  • Preserva a sequência de execução 8151, a base 3060, as isenções tributárias de INSS/IRRF/FGTS e os metadados de Impacto Financeiro “Sim” e Impacto Contábil “Sim”.
  • A desoneração por tomadores com CEI/CNO permanece controlada por parâmetro de tela.

Status Documental

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

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