Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Validando qualquer CNPJ

Eu segui o código do vídeo, mas está dando erro e validando qualquer coisa: main.py

from cpf_cnpj import CpfCnpj

exemplo_cnpj = '10'

documento = CpfCnpj(exemplo_cnpj, 'cnpj')
print(documento)

cpf_cnpj:

from validate_docbr import CPF, CNPJ

class CpfCnpj:
    def __init__(self, documento, tipo_documento):
        self.tipo_documento = tipo_documento
        documento = str(documento)
        if self.tipo_documento == "cpf":
            if self.cpf_eh_Valido(documento):
                self.cpf = documento
            else:
                raise ValueError("CPF Inválido!")
        elif self.tipo_documento == "cnpj":
            if self.cnpj_e_valido(documento):
                self.cnpj = documento
            else:
                raise ValueError("CNPJ Inválido!")

    def __str__(self):
        if self.tipo_documento == "cpf":
            return self.format_cpf()
        elif self.tipo_documento == "cnpj":
            return self.formar_cnpj()

    def cpf_eh_Valido(self, cpf):
        if len(cpf) == 11:
            validador = CPF()
            return validador.validate(cpf)
        else:
            return ValueError("Quantidade de digitos inválida")

    def cnpj_e_valido(self, cnpj):
        if len(cnpj) == 14:
            validate_cnpj = CNPJ()
            return validate_cnpj.validate(cnpj)
        else:
            return ValueError("Quantidade de digitos inválida")

    def format_cpf(self):
        mascara = CPF()
        return mascara.mask(self.cpf)

    def formar_cnpj(self):
        mascara = CNPJ()
        return mascara.mask(self.cnpj)

Saída do código:

10../-10

Alguém consegue ver o que errei?

Obrigado

3 respostas

PS: Ele não apenas aceita qualquer coisa como ele cria números:

main.py

from cpf_cnpj import CpfCnpj
# from validate_docbr import CNPJ
# from validate_docbr import CPF

exemplo_cnpj = '100011100'
# cnpj = CNPJ()
documento = CpfCnpj(exemplo_cnpj, 'cpf')
print(documento)

Saída:

100.011.100-00
solução!

Olá Mauricio, tudo bem?

Isso está ocorrendo porque em seu código nunca estamos lançando exceções quando o CPF ou o CNPJ é invalido, para corrigir isso precisamos apenas trocar o return para o raise:

No método cpf_eh_Valido:

    def cpf_eh_Valido(self, cpf):
        if len(cpf) == 11:
            validador = CPF()
            return validador.validate(cpf)
        else:
            raise ValueError("Quantidade de digitos inválida")

No método cnpj_e_valido:

    def cnpj_e_valido(self, cnpj):
        if len(cnpj) == 14:
            validate_cnpj = CNPJ()
            return validate_cnpj.validate(cnpj)
        else:
            raise ValueError("Quantidade de digitos inválida")

Agora seu programa deve estar validando corretamente e caso o valor passado não funcione ele já irá dar o erro :)

Abraços e Bons Estudos!

Que distração! Nisso que dá fazer o código com sono! Deu certo! Obrigado!

PS: É Mauricio, não Murilo! Hahahahhaha