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:
- A verba é calculada apenas se a base
3060(SC_SAL) for maior que zero. - A alíquota inicial do INSS Patronal (
PRC_INSS_Patronal) é definida pelo percentual configurado para o empregador (Empregador.PercentualPatronal). - Customização por CPF: Se o
Empregado.CPFfor7471327553ou15930042810, oTipoFolhaforRescisaoe aDataReferenciafor01/03/2024, a alíquotaPRC_INSS_Patronalé fixada em 20%. - Customização por Tomador CEI: Se
VG_TomadorTemCEIfortrue, a alíquotaPRC_INSS_Patronalé zerada (0%). - Validação de Alíquota Zero: Um erro (
SysFunc_Panico) é disparado se:VG_TomadorTemCEIforfalse(Tomador com CNPJ).- O empregador não for
OptanteSimples. - A alíquota
PRC_INSS_Patronalfor0%. - E o
CNPJEmpregadorouSolicitacao.Clientenão corresponder a uma lista de exceções hardcoded (J Malucelli, KWS, Syngenta, Rummo). - E o
TipoProcessonão forProvisoes.
- Validação de Alíquota Máxima: Um erro (
SysFunc_Panico) é disparado se a alíquotaPRC_INSS_Patronalultrapassar 22,5%. - Cálculo Final: O cálculo é realizado se uma das seguintes condições for verdadeira:
- A alíquota
PRC_INSS_Patronalfor maior que0%e o empregador não forOptanteSimples. - A alíquota
PRC_INSS_Patronalfor maior que0%e oCNPJEmpregadorfor27270258000164(Letícia Aymoré Azeredo). - A condição
ESCfortrue(empregador8836013000107- Construtora Esc Ltda,OptanteSimpleseCodigoSimples == 5).
- A alíquota
- O
ValorBaseda verba é definido comoSC_SAL(Base 3060) e aAliquotacomoPRC_INSS_Patronal. - O
ValorEncargoé calculado e arredondado.
- A verba é calculada apenas se a base
- 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_TomadorTemCEIfortrue. - Validações com
SysFunc_Panicopara 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” em01/11/2020está comentado e inativo.
- Cálculo condicionado a
🔗 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álculo3060.AdicionarMensagemInfoPublicaCalculo(): Adiciona mensagens informativas ao log de cálculo.SysFunc_NovaData(dia, mes, ano): Cria um objetoDateTimepara 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 base3060, 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