Skip to content

Instantly share code, notes, and snippets.

@joel-daros
Last active August 2, 2019 12:32
Show Gist options
  • Save joel-daros/3ae9c5c26447e1f4cb5acab7fd6c0c99 to your computer and use it in GitHub Desktop.
Save joel-daros/3ae9c5c26447e1f4cb5acab7fd6c0c99 to your computer and use it in GitHub Desktop.
Valida Inscrição Estadual por Estado em Oracle PL/SQL
CREATE OR REPLACE FUNCTION validaie(pp_estado VARCHAR2,
pp_nr_inscricao_estadual VARCHAR2)
RETURN VARCHAR2 IS
v_verificador VARCHAR2(50);
v_calculo NUMBER;
v_digito NUMBER;
FUNCTION soma_algebrica(p_valor NUMBER) RETURN NUMBER IS
v_contador NUMBER := 0;
v_resultado NUMBER := 0;
BEGIN
FOR a IN 1 .. length(p_valor) LOOP
v_contador := v_contador + 1;
v_resultado := v_resultado + substr(p_valor, v_contador, 1);
END LOOP;
RETURN v_resultado;
END;
--
BEGIN
IF pp_estado = 'AC' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 13 OR
substr(pp_nr_inscricao_estadual, 1, 2) <> '01' THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 10, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 11, 1) * 2;
v_digito := (11 - mod(v_calculo, 11));
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 12, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 10, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 11, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 12, 1) * 2;
v_digito := (11 - mod(v_calculo, 11));
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 13, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'AL' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 9 OR
substr(pp_nr_inscricao_estadual, 1, 2) <> '24' THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := (11 - mod(v_calculo, 11));
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 9, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'AP' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 9 OR
substr(pp_nr_inscricao_estadual, 1, 2) <> '03' THEN
v_verificador := 'ERRADO';
ELSE
IF substr(pp_nr_inscricao_estadual, 1, 8) BETWEEN 03000001 AND
03017000 THEN
v_calculo := 5;
END IF;
IF substr(pp_nr_inscricao_estadual, 1, 8) BETWEEN 03017001 AND
03019022 THEN
v_calculo := 9;
END IF;
IF substr(pp_nr_inscricao_estadual, 1, 8) >= 03019023 THEN
v_calculo := 0;
END IF;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := (11 - mod(v_calculo, 11));
IF v_digito = 10 THEN
v_digito := 0;
END IF;
IF v_digito = 11 THEN
IF substr(pp_nr_inscricao_estadual, 1, 8) BETWEEN 03000001 AND
03017000 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 1, 8) BETWEEN 03017001 AND
03019022 THEN
v_digito := 1;
END IF;
IF substr(pp_nr_inscricao_estadual, 1, 8) >= 03019023 THEN
v_digito := 0;
END IF;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 9, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'MG' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 13 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
1,
1) * 1;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
2,
1) * 2;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
3,
1) * 1;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
4,
1) * 2;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
5,
1) * 1;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
6,
1) * 2;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
7,
1) * 1;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
8,
1) * 2;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
9,
1) * 1;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
10,
1) * 2;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
11,
1) * 1;
v_calculo := v_calculo ||
substr(substr(pp_nr_inscricao_estadual, 1, 3) || 0 ||
substr(pp_nr_inscricao_estadual, 4, 8),
12,
1) * 2;
IF soma_algebrica(v_calculo) <> trunc(soma_algebrica(v_calculo), -1) THEN
v_digito := (trunc(soma_algebrica(v_calculo), -1) + 10) - soma_algebrica(v_calculo);
ELSE
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 12, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 11;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 10;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 10, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 11, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 12, 1) * 2;
v_digito := (11 - mod(v_calculo, 11));
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 13, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'SP' THEN
IF substr(pp_nr_inscricao_estadual, 1, 1) = 'P' THEN
-- produtor rural
IF length(trim(pp_nr_inscricao_estadual)) <> 13 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 2, 1) * 1;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 9, 1) * 10;
v_digito := mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 10, 1)
THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
ELSE
IF length(trim(pp_nr_inscricao_estadual)) <> 12 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 1;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 8, 1) * 10;
v_digito := mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 9, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 2;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 10;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 9;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 7, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 8, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 9, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 10, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 11, 1) * 2;
v_digito := mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 12, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'RJ' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 8 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 8, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'BA' THEN
IF length(trim(pp_nr_inscricao_estadual)) > 9 OR
length(trim(pp_nr_inscricao_estadual)) < 8 THEN
v_verificador := 'ERRADO';
ELSE
IF length(trim(pp_nr_inscricao_estadual)) = 8 THEN
IF substr(pp_nr_inscricao_estadual, 1, 1) IN (0, 1, 2, 3, 4, 5, 8) THEN
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 2;
v_digito := 10 - mod(v_calculo, 10);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 8, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 10 - mod(v_calculo, 10);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 7, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
ELSE
---
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 8, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 7, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
ELSE
IF substr(pp_nr_inscricao_estadual, 2, 1) IN (0, 1, 2, 3, 4, 5, 8) THEN
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 7, 1) * 2;
v_digito := 10 - mod(v_calculo, 10);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 9, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 9, 1) * 2;
v_digito := 10 - mod(v_calculo, 10);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 8, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 7, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 9, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 9, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF v_digito <> substr(pp_nr_inscricao_estadual, 8, 1) THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'RS' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 10 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 10, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado IN ('AM', 'CE', 'ES', 'PB', 'PI', 'SC', 'SE') THEN
IF length(pp_nr_inscricao_estadual) <> 9 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
--
IF pp_estado = 'GO' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 9 OR
(substr(pp_nr_inscricao_estadual, 1, 2) <> 10 AND
substr(pp_nr_inscricao_estadual, 1, 2) <> 11 AND
substr(pp_nr_inscricao_estadual, 1, 2) <> 15) THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF substr(pp_nr_inscricao_estadual, 1, 8) = '11094402' AND
(substr(pp_nr_inscricao_estadual, 9, 1) = '0' OR substr(pp_nr_inscricao_estadual, 9, 1) = '1') THEN
v_verificador := 'CERTO';
ELSE
IF v_digito = 11 THEN
v_digito := 0;
END IF;
IF v_digito = 10 THEN
IF to_number(substr(pp_nr_inscricao_estadual, 1, 8)) >= 10103105 AND
to_number(substr(pp_nr_inscricao_estadual, 1, 8)) <= 10119997 THEN
v_digito := 1;
ELSE
v_digito := 0;
END IF;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'MA' THEN
IF length(pp_nr_inscricao_estadual) <> 9 OR
substr(pp_nr_inscricao_estadual, 1, 2) <> 12 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'MT' THEN
IF length(pp_nr_inscricao_estadual) <> 11 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 10, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 11, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'MS' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 9 OR
substr(pp_nr_inscricao_estadual, 1, 2) <> 28 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'PA' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 9 OR
substr(pp_nr_inscricao_estadual, 1, 2) <> 15 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'DF' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 13 OR
substr(pp_nr_inscricao_estadual, 1, 2) <> 07 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 10, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 11, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 12, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 10, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 11, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 12, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 13, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'TO' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 9 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'PR' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 10 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 10, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'RO' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 14 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 9, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 10, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 11, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 12, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 13, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito = 10 THEN
v_digito := 0;
END IF;
IF v_digito = 11 THEN
v_digito := 1;
END IF;
IF substr(pp_nr_inscricao_estadual, 14, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'RR' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 9 OR
substr(pp_nr_inscricao_estadual, 1, 2) <> 24 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 1;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 2;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 8;
v_digito := mod(v_calculo, 9);
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'PE' THEN
IF length(trim(pp_nr_inscricao_estadual)) <> 9 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 8, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_digito := 11 - mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF pp_estado = 'RN' THEN
IF substr(pp_nr_inscricao_estadual, 1, 2) <> 20 THEN
v_verificador := 'ERRADO';
ELSE
IF length(trim(pp_nr_inscricao_estadual)) = 9 THEN
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 9;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 2, 1) * 8;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 3, 1) * 7;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 4, 1) * 6;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 5, 1) * 5;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 6, 1) * 4;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 7, 1) * 3;
v_calculo := v_calculo + substr(pp_nr_inscricao_estadual, 8, 1) * 2;
v_calculo := v_calculo * 10;
v_digito := mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 9, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
ELSE
IF length(trim(pp_nr_inscricao_estadual)) <> 10 THEN
v_verificador := 'ERRADO';
ELSE
v_calculo := substr(pp_nr_inscricao_estadual, 1, 1) * 10;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 2, 1) * 9;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 3, 1) * 8;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 4, 1) * 7;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 5, 1) * 6;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 6, 1) * 5;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 7, 1) * 4;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 8, 1) * 3;
v_calculo := v_calculo +
substr(pp_nr_inscricao_estadual, 9, 1) * 2;
v_calculo := v_calculo * 10;
v_digito := mod(v_calculo, 11);
IF v_digito >= 10 THEN
v_digito := 0;
END IF;
IF substr(pp_nr_inscricao_estadual, 10, 1) <> v_digito THEN
v_verificador := 'ERRADO';
ELSE
v_verificador := 'CERTO';
END IF;
END IF;
END IF;
END IF;
RETURN v_verificador;
END IF;
IF v_verificador IS NULL THEN
RETURN 'UF INVÁLIDA';
END IF;
END;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment