Module: Brcobranca::Formatacao

Defined in:
lib/brcobranca/core_ext.rb

Overview

Métodos auxiliares de formatação

Instance Method Summary collapse

Instance Method Details

#formata_documentoObject

Gera formatação automatica do documento baseado no tamanho do campo.



20
21
22
23
24
25
26
27
28
# File 'lib/brcobranca/core_ext.rb', line 20

def formata_documento      
  case (self.kind_of?(String) ? self : 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

#limpa_valor_moedaObject

Remove caracteres que não sejam numéricos do tipo MOEDA



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

def limpa_valor_moeda
  return self unless self.kind_of?(String) && self.moeda?
  self.somente_numeros
end

#linha_digitavelObject

Monta a linha digitável padrão para todos os bancos segundo a BACEN. Retorna + nil + para Codigo de Barras em branco, Codigo de Barras com tamanho diferente de 44 dígitos e Codigo de Barras que não tenham somente caracteres numéricos.

A linha digit

Raises:

  • (ArgumentError)


77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/brcobranca/core_ext.rb', line 77

def linha_digitavel
  valor_inicial = self.kind_of?(String) ? self : self.to_s
  raise ArgumentError, "Número em branco" if valor_inicial.nil?
  raise ArgumentError, "Somente números" unless valor_inicial.numeric?
  raise ArgumentError, "Precisa conter 44 caracteres e você passou um valor com #{valor_inicial.size} caracteres" if valor_inicial.size != 44

  dv_1 = ("#{valor_inicial[0..3]}#{valor_inicial[19..23]}").modulo10
  campo_1_dv = "#{valor_inicial[0..3]}#{valor_inicial[19..23]}#{dv_1}"
  campo_linha_1 = "#{campo_1_dv[0..4]}.#{campo_1_dv[5..9]}"

  dv_2 = "#{valor_inicial[24..33]}".modulo10
  campo_2_dv = "#{valor_inicial[24..33]}#{dv_2}"
  campo_linha_2 = "#{campo_2_dv[0..4]}.#{campo_2_dv[5..10]}"

  dv_3 = "#{valor_inicial[34..43]}".modulo10
  campo_3_dv = "#{valor_inicial[34..43]}#{dv_3}"
  campo_linha_3 = "#{campo_3_dv[0..4]}.#{campo_3_dv[5..10]}"

  campo_linha_4 = "#{valor_inicial[4..4]}"

  campo_linha_5 = "#{valor_inicial[5..18]}"

  "#{campo_linha_1} #{campo_linha_2} #{campo_linha_3} #{campo_linha_4} #{campo_linha_5}"
end

#somente_numerosObject

Remove caracteres que não sejam numéricos



37
38
39
40
# File 'lib/brcobranca/core_ext.rb', line 37

def somente_numeros
  return self unless self.kind_of?(String)
  self.gsub(/\D/,'')
end

#to_br_cepObject

Formata como CEP



10
11
12
# File 'lib/brcobranca/core_ext.rb', line 10

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

#to_br_cnpjObject

Formata como CNPJ



15
16
17
# File 'lib/brcobranca/core_ext.rb', line 15

def to_br_cnpj
  (self.kind_of?(String) ? self : self.to_s).gsub(/^(.{2})(.{3})(.{3})(.{4})(.{2})$/,'\1.\2.\3/\4-\5')
end

#to_br_cpfObject

Formata como CPF



5
6
7
# File 'lib/brcobranca/core_ext.rb', line 5

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

#zeros_esquerda(options = {}) ⇒ Object

Completa zeros a esquerda.

Ex. numero="123" :tamanho=>3 | numero="123"
Ex. numero="123" :tamanho=>4 | numero="0123"
Ex. numero="123" :tamanho=>5 | numero="00123"


46
47
48
49
50
51
52
53
54
55
# File 'lib/brcobranca/core_ext.rb', line 46

def zeros_esquerda(options={})
  valor_inicial = self.kind_of?(String) ? self : self.to_s
  return valor_inicial if (valor_inicial !~ /\S/)
  digitos = options[:tamanho] || valor_inicial.size

  diferenca = (digitos - valor_inicial.size)

  return valor_inicial if (diferenca <= 0)
  return (("0" * diferenca) + valor_inicial )
end