ERP – EFD-Reinf – MS1183 - Crítica: O valor da retenção {vlrRetencao} informado não pode ser maior que 11% da Base de cálculo da retenção da contribuição previdenciária {vlrBaseRet}
Incidente
No módulo Gestão de Tributo, ao gerar o evento R-2010 ou R-2020, é apresentada a mensagem: MS1183 - Crítica: O valor da retenção {vlrRetencao} informado não pode ser maior que 11% da Base de cálculo da retenção da contribuição previdenciária {vlrBaseRet}.
Causa
Esta mensagem é apresentada, pois o valor do INSS está utilizando a função de arredondar, e o critério de arredondamento usado pela Receita Federal é truncar.
Solução
Para que o valor do INSS seja truncado na Gestão de Mercado ou Suprimento, realize os passos a seguir:
1. Na tela F095CAD - Cadastros / Clientes e Fornecedores / Fornecedores / Cadastro) o campo Tipo acerto (arredondamento) previdenciário para a '2 - Trunca', para o evento R-2010;
2. Na tela F085CAD - Cadastros / Clientes e Fornecedores / Clientes / Cadastro) o campo Tipo acerto (arredondamento) previdenciário para a 2 - Trunca, para o evento R-2020.
Para que o valor do INSS seja truncado na integração para a Gestão de Tributos , realize os passos a seguir:
1. Na tela F070FEF - Cadastros / Filiais / Parâmetros por Gestão / Tributos, informe no campo Código Regra Integração o exemplo de regra abaixo:
Definir Alfa TipMov;
Definir Alfa aTipMov;
Definir Alfa aAux;
Definir Numero PerIns;
Definir Numero VlrBin;
Definir Numero VlrIns;
Definir Numero nPerIns;
Definir Numero nVlrBin;
Definir Numero nVlrIns;
Definir Numero nPos;
aTipMov = "";
nPerIns = 0;
nVlrBin = 0;
nVlrIns = 0;
nVlrAux = 0;
nPos = 0;
aTipMov = TipMov;
Se ((aTipMov = "ITEENT") OU (aTipMov = "ITESAI")) {
nPerIns = PerIns;
Se (nPerIns > 0) {
nVlrBin = VlrBin;
nVlrIns = VlrIns;
nVlrAux = (nVlrBin * nPerIns) / 100;
DecimalParaAlfa(nVlrAux, aAux);
PosicaoAlfa(",", aAux, nPos);
CopiarAlfa(aAux, 1, nPos+2);
AlfaParaDecimal(aAux, nVlrAux);
VlrIns = nVlrAux;
}
}
Para que o valor do INSS seja truncado diretamente na Gestão de Tributos , realize os passos a seguir em uma ferramenta de banco de dados:
1. Para banco Oracle:
UPDATE E660INC SET VLRINS = TRUNC(((VLRBIN * PERINS) / 100), 2) WHERE PERINS > 0 AND TRUNC(((VLRBIN * PERINS) / 100), 2) <> ROUND(VLRINS, 2)
UPDATE E660INV SET VLRINS = TRUNC(((VLRBIN * PERINS) / 100), 2) WHERE PERINS > 0 AND TRUNC(((VLRBIN * PERINS) / 100), 2) <> ROUND(VLRINS, 2)
UPDATE E690INC SET VLRRET = TRUNC(VLRBCP * TRUNC(VLRRET/VLRBCP,2), 2) WHERE ROUND(VLRBCP, 2) > 0 AND TRUNC(VLRBCP * TRUNC(VLRRET/VLRBCP,2), 2) <> VLRRET
2. Para banco SQL Server:
UPDATE E660INC SET VLRINS = ROUND(((VLRBIN * PERINS) / 100), 2) WHERE PERINS > 0 AND ROUND(((VLRBIN * PERINS) / 100), 2) <> ROUND(VLRINS, 2)
UPDATE E660INV SET VLRINS = ROUND (((VLRBIN * PERINS) / 100), 2,1) WHERE PERINS > 0 AND ROUND(((VLRBIN * PERINS) / 100), 2,1) <> ROUND(VLRINS, 2)
UPDATE E690INC SET VLRRET = ROUND(VLRBCP * ROUND(VLRRET/VLRBCP,2), 2) WHERE ROUND(VLRBCP, 2) > 0 AND ROUND(VLRBCP * ROUND(VLRRET/VLRBCP,2), 2) <> VLRRET