Open leandro opened 3 years ago
Eu acho uma boa ideia adicionar mais lógica na validação sim para poder pegar mais casos de CNPJ inválidos. O algoritmo atual foi inspirado na Wikipedia mesmo: https://pt.wikipedia.org/wiki/Cadastro_Nacional_da_Pessoa_Jur%C3%ADdica
Você sabe de onde o participante do fórum tirou essas regras adicionais? Não que eu não confie nele, mas seria legal ter mais alguma fonte que suporta essas regras adicionais.
Acredito que ele tenha tirado desse link aqui: http://www.receita.fazenda.gov.br/publico/Legislacao/atos/AtosConjuntos/AnexoIADEConjuntoCoratCotec0012002.doc
Se assim, você achar procedente, eu posso prover um PR para resolver essas questões.
Maravilha! Manda bala ❤️
Eu havia reportado o mesmo problema nessa outra lib aqui. E um dos contribuidores já propôs uma solução: https://github.com/williamgueiros/Brcpfcnpj/pull/30.
Acha que vale usarmos algo parecido?
Opa, algo parecido parece bacana.
Acho que a lógica vai precisar ser adicionada aqui com a variável safe_digits
https://github.com/ulissesalmeida/cnpj/blob/master/lib/cnpj/cnpj.ex#L147
A diferença aqui, é que o safe_digits
é uma lista de inteiros, então ao invés de usar o modulo String, você vai precisar usar Enum
ou List
, ou pattern matching com listas.
Tambem seria legal adicionar bastantes exemplos de invalidos para exercitar os ramos de excessões do codigo.
Eu que fiz o pr na outra lib, e encontrei problemas no mundo real. O cpnj 11111111000191
não só é valido, como ele existe, e pelas regras desse documento, não deveria ser válido. Sugiro não continuar com esse pr até que uma fonte de regras mais confiável seja encontrada.
Em paralelo: Não encontrei lib em outra linguagem que também faça essa validação, mas não acredito que elixir foi a primeira linguaguem a ter esse problema
Obrigado @VitorTrin pelo feedback!
Lembro quando eu estava pesquisando outras libs em outras linguagens, as validações eram bem diretas, não continham essa lista.
É melhor aguardar por mais confirmações mesmo. Enquanto isso, cada aplicação por criar sua própria lista de CNPJs proibidos ou inválidos.
Eu percebi que há alguns casos em que certas entradas de 14 dígitos não deveriam estar sendo consideradas como CNPJ válidos.
A questão é: há casos onde me é informado entradas variadas de 14 dígitos, onde precisamos verificar se essa entrada é um CNPJ válido ou um CPF válido (removendo os 3 primeiros dígitos). E por conta disso me deparei com um caso onde tanto os 14 dígitos configuram como um CNPJ válido, quanto os últimos 11 dígitos configuram como um CPF válido (quando a realidade é que essa entrada é apenas um CPF válido).
Percebi que a solução se dá fazendo certas verificações para o caso de CNPJs e, para isso, segue uma citação que extraí desse link aqui:
Acredito que atualmente a lib não está levando em consideração essas regras acima na hora de validar o CNPJ. O que acha de incluirmos isso no algoritmo de validação de CNPJ? Se precisarem de um suposto CNPJ (que na verdade é um CPF) que caia nesse caso, me peçam no privado (meu e-mail: leandroico@gmail.com), para que não se exponha publicamente CPF de terceiros por aqui.