Class: BoletoBancario::Calculos::LinhaDigitavel
- Inherits:
-
String
- Object
- String
- BoletoBancario::Calculos::LinhaDigitavel
- Defined in:
- lib/boleto_bancario/calculos/linha_digitavel.rb
Overview
Representação numérica do código de barras, mais conhecida como linha digitável! :p
A representação numérica do código de barras é composta, por cinco campos. Sendo os três primeiros campos, amarrados por DAC’s (dígitos verificadores), todos calculados pelo módulo 10.
OBS.: Para mais detalhes deste cálculo, veja a descrição em Modulo10.
Linha Digitável
A linha digitável contêm exatamente 47 posições nessa sequência:
_____________________________________________________________________________________________________________
|Campo | Posição | Tamanho | Descrição |
|------|----------|---------|--------------------------------------------------------------------------------|
| 1º | 01-03 | 03 | Código do banco (posições 1 a 3 do código de barras) |
| | 04 | 01 | Código da moeda (posição 4 do código de barras) |
| | 05-09 | 5 | Cinco primeiras posições do campo livre (posições 20 a 24 do código de barras) |
| | 10 | 1 | Dígito verificador do primeiro campo (Módulo10) |
|------------------------------------------------------------------------------------------------------------|
| 2º | 11-20 | 10 | 6º a 15º posições do campo livre (posições 25 a 34 do código de barras) |
| | 21 | 01 | Dígito verificador do segundo campo (Módulo10) |
|------------------------------------------------------------------------------------------------------------|
| 3º | 22-31 | 10 | 16º a 25º posições do campo livre (posições 35 a 44 do código de barras) |
| | 32 | 01 | Dígito verificador do terceiro campo (Módulo10) |
|------------------------------------------------------------------------------------------------------------|
| 4º | 33 | 01 | Dígito verificador do código de barras (posição 5 do código de barras) |
|------------------------------------------------------------------------------------------------------------|
| 5ª | 34-37 | 04 | Fator de vencimento (posições 6 a 9 do código de barras) |
| | 38-47 | 10 | Valor nominal do documento (posições 10 a 19 do código de barras) |
-------------------------------------------------------------------------------------------------------------|
Instance Attribute Summary collapse
-
#codigo_de_barras ⇒ Object
readonly
Returns the value of attribute codigo_de_barras.
Instance Method Summary collapse
-
#initialize(codigo_de_barras) ⇒ String
constructor
Representação numérica do código de barras.
-
#primeiro_campo ⇒ String
private
Retorna o primeiro campo da linha digitável com seu respectivo dígito verificador.
-
#quarto_campo ⇒ String
private
Retorna o dígito verificador do código de barras (posição 5 do código de barras).
-
#quinto_campo ⇒ String
private
Retorna o quinto e último campo da linha digitável.
-
#representacao_numerica_do_codigo_de_barras ⇒ String
Retorna todos os campos da linha digitável pegando as posições exatas do código de barras.
-
#segundo_campo ⇒ String
private
Retorna o segundo campo da linha digitável com seu respectivo dígito verificador.
-
#terceiro_campo ⇒ String
private
Retorna o terceiro campo da linha digitável com seu respectivo dígito verificador.
Constructor Details
#initialize(codigo_de_barras) ⇒ String
Representação numérica do código de barras
85 86 87 88 89 90 91 92 93 |
# File 'lib/boleto_bancario/calculos/linha_digitavel.rb', line 85 def initialize() @codigo_de_barras = .to_s if @codigo_de_barras.present? and @codigo_de_barras.size == 44 super() else super('') end end |
Instance Attribute Details
#codigo_de_barras ⇒ Object (readonly)
Returns the value of attribute codigo_de_barras.
52 53 54 |
# File 'lib/boleto_bancario/calculos/linha_digitavel.rb', line 52 def @codigo_de_barras end |
Instance Method Details
#primeiro_campo ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Retorna o primeiro campo da linha digitável com seu respectivo dígito verificador.
107 108 109 110 111 |
# File 'lib/boleto_bancario/calculos/linha_digitavel.rb', line 107 def primeiro_campo primeiro_campo_sem_digito = "#{[0..3]}#{[19..23]}" digito_verificador = Modulo10.new(primeiro_campo_sem_digito) "#{primeiro_campo_sem_digito}#{digito_verificador}".gsub(/^(.{5})(.{5})/, '\1.\2') end |
#quarto_campo ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Retorna o dígito verificador do código de barras (posição 5 do código de barras)
143 144 145 |
# File 'lib/boleto_bancario/calculos/linha_digitavel.rb', line 143 def quarto_campo "#{[4]}" end |
#quinto_campo ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Retorna o quinto e último campo da linha digitável.
153 154 155 |
# File 'lib/boleto_bancario/calculos/linha_digitavel.rb', line 153 def quinto_campo "#{[5..8]}#{[9..18]}" end |
#representacao_numerica_do_codigo_de_barras ⇒ String
Returns Retorna todos os campos da linha digitável pegando as posições exatas do código de barras.
97 98 99 |
# File 'lib/boleto_bancario/calculos/linha_digitavel.rb', line 97 def "#{primeiro_campo} #{segundo_campo} #{terceiro_campo} #{quarto_campo} #{quinto_campo}" end |
#segundo_campo ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Retorna o segundo campo da linha digitável com seu respectivo dígito verificador.
119 120 121 122 123 |
# File 'lib/boleto_bancario/calculos/linha_digitavel.rb', line 119 def segundo_campo segundo_campo_sem_digito = "#{[24..33]}" digito_verificador = Modulo10.new(segundo_campo_sem_digito) "#{segundo_campo_sem_digito}#{digito_verificador}".gsub(/(.{5})(.{6})/, '\1.\2') end |
#terceiro_campo ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Retorna o terceiro campo da linha digitável com seu respectivo dígito verificador.
131 132 133 134 135 |
# File 'lib/boleto_bancario/calculos/linha_digitavel.rb', line 131 def terceiro_campo terceiro_campo_sem_digito = "#{[34..46]}" digito_verificador = Modulo10.new(terceiro_campo_sem_digito) "#{terceiro_campo_sem_digito}#{digito_verificador}".gsub(/(.{5})(.{6})/, '\1.\2') end |