/// <summary>
        /// Verificar se um CNPJ é válido
        /// </summary>
        /// <param name="cnpj"></param>
        /// <returns></returns>
        public static bool IsValidCnpj(string cnpj)
        {
            cnpj = RemoveNaoNumericos(cnpj);
            string CNPJ;

            CNPJ = cnpj.Replace(".", "");
            CNPJ = CNPJ.Replace("/", "");
            CNPJ = CNPJ.Replace("-", "");

            int[]  digitos, soma, resultado;
            int    nrDig;
            string ftmt;

            bool[] CNPJOk;

            ftmt         = "6543298765432";
            digitos      = new int[14];
            soma         = new int[2];
            soma[0]      = 0;
            soma[1]      = 0;
            resultado    = new int[2];
            resultado[0] = 0;
            resultado[1] = 0;
            CNPJOk       = new bool[2];
            CNPJOk[0]    = false;
            CNPJOk[1]    = false;

            try
            {
                for (nrDig = 0; nrDig < 14; nrDig++)
                {
                    digitos[nrDig] = int.Parse(
                        CNPJ.Substring(nrDig, 1));
                    if (nrDig <= 11)
                    {
                        soma[0] += (digitos[nrDig] *
                                    int.Parse(ftmt.Substring(
                                                  nrDig + 1, 1)));
                    }
                    if (nrDig <= 12)
                    {
                        soma[1] += (digitos[nrDig] *
                                    int.Parse(ftmt.Substring(
                                                  nrDig, 1)));
                    }
                }

                for (nrDig = 0; nrDig < 2; nrDig++)
                {
                    resultado[nrDig] = (soma[nrDig] % 11);
                    if ((resultado[nrDig] == 0) || (resultado[nrDig] == 1))
                    {
                        CNPJOk[nrDig] = (
                            digitos[12 + nrDig] == 0);
                    }

                    else
                    {
                        CNPJOk[nrDig] = (
                            digitos[12 + nrDig] == (
                                11 - resultado[nrDig]));
                    }
                }

                return(CNPJOk[0] && CNPJOk[1]);
            }
            catch
            {
                return(false);
            }
        }
示例#2
0
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value == null)
            {
                return(null);
            }

            int[] multiplicador1 = new int[12] {
                5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
            };
            int[] multiplicador2 = new int[13] {
                6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
            };

            int soma, resto;

            string digito, tempCnpj, CNPJ;

            CNPJ = value.ToString().Trim();
            CNPJ = CNPJ.Replace(".", "").Replace("-", "").Replace("/", "");

            if (CNPJ.Length != 14)
            {
                return(new ValidationResult("CNPJ Inválido."));
            }

            tempCnpj = CNPJ.Substring(0, 12);
            soma     = 0;

            for (int i = 0; i < 12; i++)
            {
                soma += int.Parse(tempCnpj[i].ToString()) * multiplicador1[i];
            }
            resto = (soma % 11);

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

            digito   = resto.ToString();
            tempCnpj = tempCnpj + digito;
            soma     = 0;

            for (int i = 0; i < 13; i++)
            {
                soma += int.Parse(tempCnpj[i].ToString()) * multiplicador2[i];
            }
            resto = (soma % 11);

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

            digito = digito + resto.ToString();

            if (CNPJ.EndsWith(digito))
            {
                return(null);
            }
            else
            {
                return(new ValidationResult("CNPJ Inválido."));
            }
        }
示例#3
0
        public bool ValidaCNPJ()
        {
            int[] multiplicador1 = new int[12] {
                5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
            };
            int[] multiplicador2 = new int[13] {
                6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
            };
            int    soma;
            int    resto;
            string digito;
            string tempCnpj;

            CNPJ = CNPJ.Trim();
            CNPJ = Mascara.FormatarPropriedade(CNPJ);

            if (CNPJ.Length != 14)
            {
                return(false);
            }

            tempCnpj = CNPJ.Substring(0, 12);
            soma     = 0;

            for (int i = 0; i < 12; i++)
            {
                soma += int.Parse(tempCnpj[i].ToString()) * multiplicador1[i];
            }

            resto = (soma % 11);

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

            digito   = resto.ToString();
            tempCnpj = tempCnpj + digito;
            soma     = 0;

            for (int i = 0; i < 13; i++)
            {
                soma += int.Parse(tempCnpj[i].ToString()) * multiplicador2[i];
            }

            resto = (soma % 11);

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

            digito = digito + resto.ToString();
            return(CNPJ.EndsWith(digito));
        }