1519 - Base INSS Outro Vínculo - RPA
⚙️ Metadados
- Código: 1519
- Tipo: Informação
- INSS: ISE
- FGTS: ISE
- IRRF: ISE
- Natureza eSocial: -
- DSR: Não
- Médias: Não
- Impacto Financeiro: Não
- Impacto Contábil: Sim
- Sequência: 102
🧮 Regra Geral
-
Lógica de Cálculo:
- Inicializa
valor5001_5012somando oValorTotalde lançamentos das verbas5001(Direitos Autorais - RPA) ou5012presentes naSolicitacaoRPA. - Condição de Exclusão: Se
valor5001_5012for maior que zero, a verba1519não é calculada (return null). - Inicializa
valor10070evalor10080somando oValorTotalde lançamentos das verbas10070e10080, respectivamente, naSolicitacaoRPA. - Condição Principal de Cálculo: Se a soma de
VG_ValorServicoRPAcomvalor10070for maior que zero, OU sevalor10080for diferente de zero, então:- Adiciona o
Lancamento.ValorTotalatual à variávelVG_BaseINSS_RPA_OutrosVinculos. - Agregação de Valores Anteriores: Se a variável
VG_RPA_JaPassouforfalse(indicando que a agregação ainda não foi feita nesta execução):- Percorre todos os holerites (
HoleriteBO) do autônomo para o mesmo mês e ano daDataReferenciada solicitação atual. - Para cada holerite encontrado, busca lançamentos da própria verba
1519(HoleriteInformacaoBO). - Se encontrar, adiciona o
ValorTotal(garantindo que seja positivo comPositivo()) àVG_BaseINSS_RPA_OutrosVinculos. - Define
VG_RPA_JaPassoucomotruepara evitar reprocessamento.
- Percorre todos os holerites (
- Teto de Incidência: Se
VG_BaseINSS_RPA_OutrosVinculosexcederVG_VlrTetoSCINSS_RPA(Teto de Salário de Contribuição INSS para RPA), o valor da base é limitado aVG_VlrTetoSCINSS_RPA.
- Adiciona o
- Condição de Erro: Caso a condição principal de cálculo (passo 4) não seja atendida, e houver lançamentos da verba
1519comValorTotalmaior que zero naSolicitacaoRPA, um erro crítico é disparado (SysFunc_Panico) indicando um lançamento inconsistente da verba1519sem as verbas de serviço correspondentes.
- Inicializa
-
Variáveis Utilizadas:
valor5001_5012valor10070valor10080VG_ValorServicoRPALancamento.ValorTotalVG_BaseINSS_RPA_OutrosVinculosVG_RPA_JaPassouSolicitacaoRPA.Autonomo.ListaHoleriteSolicitacao.DataReferenciaR.PeriodoCalculo.DataReferenciaHI_1519_DesteMes.ValorTotalVG_VlrTetoSCINSS_RPA.
-
Condições Especiais:
if (valor5001_5012 > 0M): Impede o cálculo se verbas de Direitos Autorais (5001ou5012) estiverem presentes.if ((VG_ValorServicoRPA + valor10070) > 0M || valor10080 != 0M): Condição principal para ativar o cálculo da base.if (VG_RPA_JaPassou == false): Garante que a agregação de bases anteriores da verba1519ocorra apenas uma vez por execução.if (VG_BaseINSS_RPA_OutrosVinculos > VG_VlrTetoSCINSS_RPA): Aplica o teto de contribuição do INSS.if (this.SolicitacaoRPA.ListaLancamento.Where(lct => lct.CodigoVerbaLancamento == "1519").Sum(v => v.ValorTotal) > 0): Validação de consistência para lançamentos manuais da verba1519.
🔔 Eventos/Gatilhos
- Condição de Ativação:
inf Base INSS Outro Vínculo - RPA - Quando a verba é calculada: A verba é calculada automaticamente no processo de RPA (Recibo de Pagamento Autônomo) (
IdProcesso = 70) quando há valores de serviço (VG_ValorServicoRPA) ou verbas10070ou10080lançadas, e não há verbas de Direitos Autorais (5001ou5012). Também é influenciada por lançamentos manuais da própria verba1519, que são validados para consistência.
🔗 Dependências
- Verbas Relacionadas:
5001,5012: Verbas de Direitos Autorais - RPA.10070,10080: Verbas de serviço ou outras bases de RPA.1519: A própria verba, para agregação de valores de holerites anteriores no mesmo mês.
- Tipo de Relação:
5001,5012: Dependência de exclusão. A presença dessas verbas impede o cálculo da verba1519.10070,10080,VG_ValorServicoRPA: Dependência de ativação. A presença de valores nessas variáveis/verbas ativa o cálculo da verba1519.1519(em holerites anteriores): Dependência de agregação. Valores pré-existentes da mesma verba no mês são somados à base atual.
🧩 Funções
SysFunc_MesmoMesAno(data1, data2): Compara se duas datas (mês e ano) são iguais.Positivo(valor): Garante que o valor retornado seja positivo.SysFunc_Panico(mensagem): Registra um erro crítico no sistema e interrompe o processamento.
💡 Proposta de Novo Cálculo
Fórmula proposta (padronizada):
Base_INSS_Outro_Vinculo_RPA = MIN(OBTER_VALOR(Lancamento_Manual_1519, Base_Cadastrada_Outros_Vinculos) + SUM(Base_1519_RPAs_Anteriores_Mes), Teto_INSS_Vigente)
1. FILTROS DE ELEGIBILIDADE E ISENÇÕES (PISO SEGURO)
SE NAO Config_Verba.Ativa_Para_Empresa(Autonomo.EmpresaId) ENTAO RETORNAR NULO FIM SE
Validação do Processo Ativo (Restrito a Processamento de RPA / Autônomos) SE Config_Verba.PossuiFiltroProcesso E NAO Config_Verba.ProcessosPermitidos.Contem(Periodo.TipoProcessoId) ENTAO RETORNAR NULO FIM SE
Validação de Exclusão por Verbas Incompatíveis (Ex: Direitos Autorais 5001, 5012) ValorVerbasExcludentes = ObterSomaVerbasDigitadasOuCalculadas(Autonomo, Periodo, Config_Verba.ListaVerbasExcludentes) SE ValorVerbasExcludentes > 0 ENTAO RETORNAR NULO FIM SE
2. DETERMINAÇÃO DA BASE DE CÁLCULO E PERCENTUAIS
SomaServicosRPA = ObterValorServicoRPA(Autonomo, Periodo) + ObterSomaVerbasDigitadasOuCalculadas(Autonomo, Periodo, Config_Verba.ListaVerbasBaseServico)
LancamentoManual1519 = ObterLancamentoManual(Autonomo, Periodo, Verba.Codigo) TemLancamentoManual1519 = Func_ValidarExistenciaLancamento(LancamentoManual1519) E LancamentoManual1519.ValorTotal > 0
Validação de Consistência (Garante que existe serviço prestado ou emissão válida de RPA) SE SomaServicosRPA <= 0 E NAO Config_Verba.PermitirBaseOutrosVinculosSemServicoLocal ENTAO SE TemLancamentoManual1519 ENTAO RegistrarErroCalculo(“Lançamento inconsistente da Verba 1519 sem o correspondente lançamento de verba de serviço de RPA.”) RETORNAR NULO SENAO RETORNAR NULO FIM SE FIM SE
Captura da Base Informada de Outros Vínculos do Autônomo BaseInformadaOutrosVinculos = 0
SE TemLancamentoManual1519 ENTAO BaseInformadaOutrosVinculos = LancamentoManual1519.ValorTotal SENAO BaseInformadaOutrosVinculos = ObterBaseINSSOutrosVinculosCadastrada(Autonomo, Periodo.DataReferencia) FIM SE
SE BaseInformadaOutrosVinculos <= 0 ENTAO RETORNAR NULO FIM SE
3. AGREGAÇÃO DE VALORES ANTERIORES E APLICAÇÃO DE LIMITES (TETO INSS)
Agregação de RPAs já calculados no mesmo mês/ano SomaBasesAnterioresMes = 0 SE Config_Verba.AcumularRPAsDoMes ENTAO SomaBasesAnterioresMes = Autonomo.ListaHolerites.Onde(h => Func_MesmoMesEAno(h.PeriodoCalculo.DataReferencia, Periodo.DataReferencia) E h.IdHolerite != Periodo.HoleriteAtualId ).Somar(h => Func_Absoluto(h.ObterVerbaInformacao(Verba.Codigo).ValorTotal)) FIM SE
BaseTotalINSSOutrosVinculos = BaseInformadaOutrosVinculos + SomaBasesAnterioresMes
Teto Máximo de Contribuição INSS Vigente na Tabela da Previdência TetoINSSVigente = ObterTetoSalarioContribucionINSS(Periodo.DataReferencia)
ValorFinalBase = BaseTotalINSSOutrosVinculos SE Config_Verba.AplicarTetoINSS E ValorFinalBase > TetoINSSVigente ENTAO ValorFinalBase = TetoINSSVigente FIM SE
ValorFinalBase = Func_ArredondamentoPadrao(ValorFinalBase)
4. GRAVAÇÃO DE CAMPOS E DISPARO DE VERBAS DE INFORMAÇÃO
InfoBO = CriarObterHoleriteInformacao(Verba.Codigo, Config_Verba.DescricaoPadrao) InfoBO.ValorTotal = ValorFinalBase InfoBO.IncidenciaINSS = EnumTipoIncidencia.ISE InfoBO.IncidenciaFGTS = EnumTipoIncidencia.ISE InfoBO.IncidenciaIRRF = EnumTipoIncidencia.ISE
RegistrarArgumento(“BASE_INSS_RPA_OUTROS_VINCULOS_TOTAL”, ValorFinalBase) EscreverMemoria(“BaseINSSOutrosVinculosRPA = ” + ValorFinalBase)
AdicionarHoleriteInformacao(Autonomo, InfoBO)
RETORNAR NULO // Verba exclusivamente informativa/contábil
FIM PROCESSO_CALCULO_VERBA_1519
Parametrizações Propostas para Reestruturação
1. CONDICIONANTES E REGRAS DE ATIVAÇÃO
[X] Ativo na Empresa
Processos Permitidos para Cálculo:
[X] RPA / Pagamento a Autônomos (Processo ID 70)
Rubricas Excludentes (Impedem a geração desta verba se presentes no movimento):
[ 5001 - Direitos Autorais - RPA ], [ 5012 - Direitos Autorais Exclusivos ]
Rubricas Elegíveis de Serviço de RPA (Base de Ativação Local):
[ 10070 - Serv. Prestados Autônomo], [ 10080 - Outras Bases de RPA ]
2. INTEGRACÃO DE BASES E ACÚMULO MENSAL
[X] Permitir Entrada via Lançamento Manual (Sobrescrita do Cadastro de Outros Vínculos)
[X] Acumular Múltiplas Emissões de RPA do Autônomo no Mesmo Mês/Ano
[X] Validar Consistência: Bloquear Entrada Manual da Verba 1519 sem Serviço Prestado no Mês
[X] Registrar Erro Informativo no Log de Cálculo (Substitui Paralisação Forçada do Sistema)
3. LIMITES E RETENÇÕES
[X] Aplicar Teto Máximo de Salário de Contribuição do INSS Vigente na Tabela Oficial
4. CLASSIFICAÇÃO ESOCIAL E INCIDÊNCIAS
Natureza da Rubrica eSocial: [ Isento / Não Informável v ]
Incidência INSS: [ ISE - Isento v ]
Incidência FGTS: [ ISE - Isento v ]
Incidência IRRF: [ ISE - Isento v ]
Gera DSR / Compõe Médias: [ NÃO v ]
Clientes com mesma regra
- Clientes Genéricos / Operação de Autônomos (RPA): A regra legada dependia de código compilado que executava laços manuais de repetição sobre
HoleriteBOpara acumular pagamentos anteriores no mesmo mês, além de disparar interrupções bruscas (SysFunc_Panico) quando detectava divergências entre a base digitada e a prestação de serviços. O novo motor dynamic substitui as paradas do sistema por tratamento gracioso de log, consolida a consulta de RPAs emitidos no mês por meio de serviços de busca otimizados e utiliza a parametrização em tela das rubricas ativadoras (10070, 10080) e excludentes (5001, 5012), eliminando o engessamento da regra no código.
Status Documental
- Status: Documentada
- Origem: export do Notion + catálogo da wiki
- Fonte rastreável:
30dc75ea2e83818bbe5dc268e34bf93e