Current section

Files

Jump to
brcpfcnpj lib brcpfcnpj.ex
Raw

lib/brcpfcnpj.ex

defmodule Brcpfcnpj do
@moduledoc """
Valida Cpf/Cnpj e formata em String caso necessário
1. O formato da string, que deve seguir o padrão xx.xxx.xxx/xxxx-xx,
onde 'x' pode ser qualquer dígito de 0 a 9 e os traços (-), barra (/)
e pontos (.) *são opcionais*.
2. O conteúdo numérico desta string, que é validado através do cálculo
do 'módulo 11' dos dígitos que compõem a string.
## Examples
iex> Brcpfcnpj.cpf_valid?("111.444.777-35")
true
iex> Brcpfcnpj.cpf_format("11144477735")
"111.444.777-35"
Com ou sem os caracteres especiais os mesmos serão validados
"""
@doc """
## Examples
iex> Brcpfcnpj.cpf_valid?("11144477735")
true
iex> Brcpfcnpj.cpf_valid?("111.444.777-35")
true
iex> Brcpfcnpj.cpf_valid?("1127772-35")
false
Com ou sem os caracteres especiais os mesmos serão validados
"""
@spec cpf_valid?(String.t()) :: boolean()
def cpf_valid?(cpf) do
Cpfcnpj.valid?({:cpf, cpf})
end
@doc """
Valida Cnpj, realiza a chamada ao módulo Cpfcnpj com a estrutura correta.
Força o desenvolvedor passar os parâmetros de forma correta
## Examples
iex> Brcpfcnpj.cnpj_valid?("69103604000160")
true
iex> Brcpfcnpj.cnpj_valid?("69.103.604/0001-60")
true
iex> Brcpfcnpj.cnpj_valid?("69./0001-60")
false
"""
@spec cnpj_valid?(String.t()) :: boolean()
def cnpj_valid?(cnpj) do
Cpfcnpj.valid?({:cnpj, cnpj})
end
@doc """
Valida o Cpf e retorna uma String do Cpf formatado.
Caso seja inválido retorna `nil`
## Examples
iex> Brcpfcnpj.cpf_format("11144477735")
"111.444.777-35"
iex> Brcpfcnpj.cpf_format("11144477734")
nil
"""
@spec cpf_format(String.t()) :: String.t() | nil
def cpf_format(cpf) do
Cpfcnpj.format_number({:cpf, cpf})
end
@doc """
Valida o Cnpj e retorna uma String do Cnpj formatado.
Caso seja inválido retorna `nil`
## Examples
iex> Brcpfcnpj.cnpj_format("69103604000160")
"69.103.604/0001-60"
iex> Brcpfcnpj.cnpj_format("69103604000161")
nil
"""
@spec cnpj_format(String.t()) :: String.t() | nil
def cnpj_format(cnpj) do
Cpfcnpj.format_number({:cnpj, cnpj})
end
@doc """
Responsavel por gerar um Cpf válido, formatado ou não.
Caso seja passado o parâmetro true retornará o mesmo formatado
"""
@spec cpf_generate() :: String.t()
@spec cpf_generate(boolean()) :: String.t()
def cpf_generate(format \\ false) do
cpf = Cpfcnpj.generate(:cpf)
if format do
Cpfcnpj.format_number({:cpf, cpf})
else
cpf
end
end
@doc """
Responsavel por gerar um Cnpj válido, formatado ou não.
Caso seja passado o parâmetro true retornará o mesmo formatado
"""
@spec cnpj_generate() :: String.t()
@spec cnpj_generate(boolean()) :: String.t()
def cnpj_generate(format \\ false) do
cnpj = Cpfcnpj.generate(:cnpj)
if format do
Cpfcnpj.format_number({:cnpj, cnpj})
else
cnpj
end
end
end