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.



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

def formata_documento
  case self.to_s.size
  when 8 then self.to_br_cep
  when 11 then self.to_br_cpf
  when 14 then self.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.



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

def linha_digitavel
  if self =~ /^(\d{4})(\d{1})(\d{14})(\d{5})(\d{10})(\d{10})$/
    linha = $1
    linha << $4
    linha << linha.modulo10.to_s
    linha << $5
    linha << $5.modulo10.to_s
    linha << $6
    linha << $6.modulo10.to_s
    linha << $2
    linha << $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)


57
58
59
# File 'lib/brcobranca/formatacao.rb', line 57

def somente_numeros
  self.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)


21
22
23
# File 'lib/brcobranca/formatacao.rb', line 21

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

#to_br_cnpjString

Formata como CNPJ

Examples:

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

Returns:

  • (String)


30
31
32
# File 'lib/brcobranca/formatacao.rb', line 30

def to_br_cnpj
  self.to_s.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)


11
12
13
# File 'lib/brcobranca/formatacao.rb', line 11

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