Module: Brcobranca::Formatacao

Defined in:
lib/brcobranca/formatacao.rb

Overview

Métodos auxiliares de formatação

Instance Method Summary collapse

Instance Method Details

#formata_documentoString

Gera formatação automática do documento baseado no tamanho do campo.

Examples:

"12345678000901".formata_documento #=> 12.345.678/0009-01
"85253100".formata_documento #=> "85253-100"
"12345678901".formata_documento #=> 123.456.789-01
"12345".formata_documento #=> 12345

Returns:

  • (String)

    Retorna a mesma caso não encontre o formato adequado.



44
45
46
47
48
49
50
51
52
# File 'lib/brcobranca/formatacao.rb', line 44

def formata_documento
  case somente_numeros.size
  when 8 then to_br_cep
  when 11 then to_br_cpf
  when 14 then to_br_cnpj
  else
    self
  end
end

#linha_digitavelString

Monta a linha digitável padrão para todos os bancos segundo a BACEN.

A linha digitável será composta por cinco campos:<br/> 1º campo: <br/> Composto pelo código de Banco, código da moeda, as cinco primeiras posições do campo livre e o dígito verificador deste campo.<br/> 2º campo: <br/> Composto pelas posições 6ª a 15ª do campo livre e o dígito verificador deste campo.<br/> 3º campo: <br/> Composto pelas posições 16ª a 25ª do campo livre e o dígito verificador deste campo.<br/> 4º campo: <br/> Composto pelo dígito verificador do código de barras, ou seja, a 5ª posição do código de barras.<br/> 5º campo: <br/> Composto pelo fator de vencimento com 4(quatro) caracteres e o valor do documento com 10(dez) caracteres, sem separadores e sem edição.<br/>

Examples:

"00192376900000135000000001238798777770016818".linha_digitavel #=> "00190.00009 01238.798779 77700.168188 2 37690000013500"

Returns:

  • (String)

Raises:

  • (ArgumentError)

    Caso não seja um número de 44 dígitos.



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/brcobranca/formatacao.rb', line 83

def linha_digitavel
  if self =~ /^(\d{4})(\d{1})(\d{14})(\d{5})(\d{10})(\d{10})$/
    linha = Regexp.last_match[1]
    linha << Regexp.last_match[4]
    linha << linha.modulo10.to_s
    linha << Regexp.last_match[5]
    linha << Regexp.last_match[5].modulo10.to_s
    linha << Regexp.last_match[6]
    linha << Regexp.last_match[6].modulo10.to_s
    linha << Regexp.last_match[2]
    linha << Regexp.last_match[3]
    linha.gsub(/^(.{5})(.{5})(.{5})(.{6})(.{5})(.{6})(.{1})(.{14})$/, '\1.\2 \3.\4 \5.\6 \7 \8')
  else
    raise ArgumentError, "#{self} Precisa conter 44 caracteres numéricos."
  end
end

#somente_numerosString

Remove caracteres que não sejam numéricos.

Examples:

1a23e45+".somente_numeros #=> 12345

Returns:

  • (String)


59
60
61
# File 'lib/brcobranca/formatacao.rb', line 59

def somente_numeros
  to_s.gsub(/\D/, '')
end

#to_br_cepString

Formata como CEP

Examples:

"85253100".to_br_cep #=> "85253-100"
85253100.to_br_cep #=> "85253-100"

Returns:

  • (String)


23
24
25
# File 'lib/brcobranca/formatacao.rb', line 23

def to_br_cep
  somente_numeros.gsub(/^(.{5})(.{3})$/, '\1-\2')
end

#to_br_cnpjString

Formata como CNPJ

Examples:

"12345678000901".to_br_cnpj #=> 12.345.678/0009-01

Returns:

  • (String)


32
33
34
# File 'lib/brcobranca/formatacao.rb', line 32

def to_br_cnpj
  somente_numeros.gsub(/^(.{2})(.{3})(.{3})(.{4})(.{2})$/, '\1.\2.\3/\4-\5')
end

#to_br_cpfString

Formata como CPF

Examples:

"12345678901".to_br_cpf #=> 123.456.789-01

Returns:

  • (String)


13
14
15
# File 'lib/brcobranca/formatacao.rb', line 13

def to_br_cpf
  somente_numeros.gsub(/^(.{3})(.{3})(.{3})(.{2})$/, '\1.\2.\3-\4')
end