Rotina para validação de IE para Goiás

2 respostas
lcn.andre

Estou usando o Brazilutils para as validações do meu sistema, porém a validação de IE para o estado de Goiás está errada. Alguém teria uma rotina para me passar?

2 Respostas

lcn.andre

Não precisa mais… vi que não ia dar tempo de ficar esperando, então eu mesmo fiz. :wink:

public class ValidaIeGoias {
    
    public static boolean valida(String ie) {
        ie = ie.replace(".", "").replace("-","").replace(" ", "");
        Integer digito;
        Integer soma = 0;
        Integer resto;

        // Número de digitos
        if (ie.length() != 9) {
            return false;
        }
        // Separação
        digito = Integer.parseInt(ie.substring(8));
        // Soma
        soma += (9 * Integer.parseInt(ie.substring(0, 1)));
        soma += (8 * Integer.parseInt(ie.substring(1, 2)));
        soma += (7 * Integer.parseInt(ie.substring(2, 3)));
        soma += (6 * Integer.parseInt(ie.substring(3, 4)));
        soma += (5 * Integer.parseInt(ie.substring(4, 5)));
        soma += (4 * Integer.parseInt(ie.substring(5, 6)));
        soma += (3 * Integer.parseInt(ie.substring(6, 7)));
        soma += (2 * Integer.parseInt(ie.substring(7, 8)));
        // Resto
        resto = soma % 11;
        // 11094402
        if (ie.equals("11094402")) {
            if (digito != 0 && digito != 1) {
                return false;
            }
        }
        // Resto 0
        if (resto == 0) {
            if (digito != 0) {
                return false;
            }
        }
        // Resto 1
        if (resto == 1) {
            if (Integer.parseInt(ie) >= 10103105 && Integer.parseInt(ie) <= 10103105) {
                if (digito != 1) {
                    return false;
                }
            } else {
                if (digito != 0) {
                    return false;
                }
            }
        }
        // Outros restos
        if (resto != 0 && resto != 1) {
            if (digito != (11 - resto)) {
                return false;
            }
        }
        return true;
    }
}
marciosantri

Mano, sugiro o uso do arquivo DllInscE32.dll, distribuido pelo governo.
De vez em quando esta rotina muda e é mais fácil substituir o arquivo do que ficar buscando novas regras de implementação.

Criado 21 de dezembro de 2009
Ultima resposta 22 de dez. de 2009
Respostas 2
Participantes 2