예제 #1
0
        public static bool ValidarCNPJ(Cnpj cnpj)
        {
            if (cnpj.CalculaNumeroDeDigitos() != 14)
            {
                return(false);
            }

            // Verifica os Patterns mais Comuns para CNPJ's Inválidos
            if (cnpj.VerficarSeTodosOsDigitosSaoIdenticos())
            {
                return(false);
            }

            var soma1 = 0;
            var soma2 = 0;

            for (var i = 0; i < 12; i++)
            {
                var d = cnpj.ObterDigito(i);
                soma1 += d * multiplicador1[i];
                soma2 += d * multiplicador2[i];
            }

            var resto = (soma1 % 11);

            if (resto < 2)
            {
                resto = 0;
            }
            else
            {
                resto = 11 - resto;
            }

            var dv1 = resto;

            //var digito = resto.ToString();
            soma2 += resto * multiplicador2[12];

            resto = (soma2 % 11);

            if (resto < 2)
            {
                resto = 0;
            }
            else
            {
                resto = 11 - resto;
            }

            var dv2 = resto;

            return(cnpj.ObterDigito(12) == dv1 && cnpj.ObterDigito(13) == dv2);
        }