Dígito Verificador da Inscrição Estadual Antiga
O número de inscrição estadual no Cadastro de Contribuintes do Estado de Pernambuco - CACEPE possui 14 algarismos (dígitos), sendo 13 principais e 1 verificador.
O cálculo do dígito verificador envolve o uso de "pesos" e da função "módulo" com parâmetro "11", conforme pode
ser visto no exemplo abaixo:
Procedimentos de Cálculo (ex. para 18.1.001.0000004-9)
- Multiplique cada algarismo principal pelo seu respectivo peso:
1 8 1 0 0 1 0 0 0 0 0 0 4 (algarismos)
x x x x x x x x x x x x x
5 4 3 2 1 9 8 7 6 5 4 3 2 (pesos)
=============================================================
5 32 3 0 0 9 0 0 0 0 0 0 8 (produtos)
- Some os produtos obtidos para encontrar o total: 5 + 32 + 3 + 0 + 0 + 9 + 0 + 0 + 0 + 0 + 0 + 0 + 8 = 57 (total dos produtos)
- Divida esse total pela constante "11" para obter o resto:
57 / 11 = 5, Resto = 2.
- Subtraia esse resto da constante "11" para encontrar o dígito verificador: 11 - 2 = 9
Quando essa diferença for maior que "9", subtraia "10" unidades para obter o valor do dígito verificador, uma vez que o mesmo deve ser sempre representado por
apenas um algarismo.
Exemplo de rotina de cálculo da antiga inscrição estadual (exemplo em linguagem Pascal)
O parâmetro "ie" deve ser do tipo String com 14 posições.
Function teste_dv_cacepe (ie: String): Boolean;
Var a, b, c, d, e,
f, g, h,
i, j, k,
l, m, n,
total, dig: Integer;
Begin
a := StrToInt(Copy(ie,14,1));
b := StrToInt(Copy(ie,13,1)) * 2;
c := StrToInt(Copy(ie,12,1)) * 3;
d := StrToInt(Copy(ie,11,1)) * 4;
e := StrToInt(Copy(ie,10,1)) * 5;
f := StrToInt(Copy(ie,9,1)) * 6;
g := StrToInt(Copy(ie,8,1)) * 7;
h := StrToInt(Copy(ie,7,1)) * 8;
i := StrToInt(Copy(ie,6,1)) * 9;
j := StrToInt(Copy(ie,5,1)) * 1;
k := StrToInt(Copy(ie,4,1)) * 2;
l := StrToInt(Copy(ie,3,1)) * 3;
m := StrToInt(Copy(ie,2,1)) * 4;
n := StrToInt(Copy(ie,1,1)) * 5;
total := b + c + d
+ e + f + g
+ h + i + j
+ k + l + m
+ n;
dig := 11 - (total Mod 11);
If dig > 9 Then
dig := dig - 10;
If dig <> a Then
teste_dv_cacepe := False
Else
teste_dv_cacepe := True;
End; |