Módulo para validação e geração de CNPJ (Cadastro Nacional da Pessoa Jurídica), documento de identificação empresarial brasileiro.
O CNPJ é um número de 14 dígitos que identifica uma pessoa jurídica (empresa) no Brasil. Este módulo fornece funções para:
O CNPJ numérico utiliza um algoritmo de validação com 2 dígitos verificadores calculados através do módulo 11:
Primeiro dígito verificador:
Segundo dígito verificador:
(cnpj/is-valid? cnpj-string)
Valida um CNPJ numérico com ou sem formatação.
Argumentos:
cnpj-string (string): CNPJ a validar, com ou sem formataçãoRetorna:
true se válido, false caso contrárioExemplos:
(cnpj/is-valid? "12.345.678/0001-95") ; => true/false
(cnpj/is-valid? "12345678000195") ; => true/false
(cnpj/is-valid? "11.222.333/0001-81") ; => false (dígitos verificadores inválidos)
(cnpj/format-cnpj cnpj-string)
Formata um CNPJ no padrão brasileiro XX.XXX.XXX/XXXX-XX.
Argumentos:
cnpj-string (string): CNPJ a formatar (com ou sem formatação)Retorna:
Exemplos:
(cnpj/format-cnpj "12345678000195") ; => "12.345.678/0001-95"
(cnpj/format-cnpj "12.345.678/0001-95") ; => "12.345.678/0001-95"
(cnpj/generate)
Gera um CNPJ numérico válido aleatoriamente.
Retorna:
Exemplos:
(cnpj/generate) ; => "12345678000195" (aleatório válido)
(cnpj/generate-alfanumeric)
Gera um CNPJ alfanumérico válido aleatoriamente (novo padrão).
Retorna:
Exemplos:
(cnpj/generate-alfanumeric) ; => "AB1234567000195" (aleatório válido)
(cnpj/generate-alfanumeric) ; => "XY9876543210654"
(cnpj/is-valid-alfanumeric? cnpj-string)
Valida um CNPJ alfanumérico (novo padrão).
Argumentos:
cnpj-string (string): CNPJ alfanumérico a validarRetorna:
true se válido, false caso contrárioExemplos:
(cnpj/is-valid-alfanumeric? "AB1234567000195") ; => true/false
(cnpj/is-valid-alfanumeric? "XY9876543210654") ; => true/false
(cnpj/is-valid-alfanumeric? "12345678000195") ; => false (não é alfanumérico)
(cnpj/validation-errors cnpj-string)
Retorna uma lista de erros de validação do CNPJ.
Argumentos:
cnpj-string (string): CNPJ a validarRetorna:
Exemplos:
(cnpj/validation-errors "12.345.678/0001-95") ; => [] ou ["Invalid check digit"]
(cnpj/validation-errors "123") ; => ["Invalid length"]
(cnpj/validation-errors "11.222.333/0001-81") ; => ["Invalid check digit"]
(cnpj/validation-errors "123")
; => ["Invalid length"]
(cnpj/validation-errors "12.345.678/0001-00")
; => ["Invalid check digit"]
(defn validate-cnpj-input [cnpj-input]
(if (cnpj/is-valid? cnpj-input)
{:status :valid :cnpj (cnpj/format-cnpj cnpj-input)}
{:status :invalid :errors (cnpj/validation-errors cnpj-input)}))
(validate-cnpj-input "12.345.678/0001-95")
; => {:status :valid :cnpj "12.345.678/0001-95"} ou
; => {:status :invalid :errors ["Invalid check digit"]}
(defn cnpj-type [cnpj-string]
(cond
(cnpj/is-valid? cnpj-string) :numeric
(cnpj/is-valid-alfanumeric? cnpj-string) :alfanumeric
:else :invalid))
(cnpj-type "12.345.678/0001-95") ; => :numeric
(cnpj-type "AB1234567000195") ; => :alfanumeric
(cnpj-type "INVALID") ; => :invalid
; Gerar 10 CNPJs numéricos válidos
(def test-cnpjs
(repeatedly 10 #(cnpj/format-cnpj (cnpj/generate))))
; Gerar 10 CNPJs alfanuméricos válidos
(def alfanum-cnpjs
(repeatedly 10 #(cnpj/generate-alfanumeric)))
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |