Class: BrBoleto::Boleto::Base Abstract
- Inherits:
-
ActiveModelBase
- Object
- ActiveModelBase
- BrBoleto::Boleto::Base
- Includes:
- Calculos, HaveConta, HavePagador
- Defined in:
- lib/br_boleto/boleto/base.rb
Overview
Métodos { #nosso_numero, #codigo_de_barras_do_banco}
Métodos para serem escritos nas subclasses (exitem outros opcionais, conforme visto nessa documentação).
Instance Attribute Summary collapse
-
#aceite ⇒ Object
Aceitar após o vencimento.
-
#codigo_moeda ⇒ Object
Código da moeda.
-
#data_documento ⇒ Object
Data em que o documento foi gerado.
-
#data_vencimento ⇒ Object
Data do vencimento do boleto.
-
#especie ⇒ Object
Essencial para identificação da moeda em que a operação foi efetuada.
-
#especie_documento ⇒ Object
Normalmente se vê neste campo a informação “DM” que quer dizer duplicata mercantil, mas existem inúmeros tipos de espécie, neste caso é aconselhável discutir com o banco qual a espécie de documento será utilizada, a identificação incorreta da espécie do documento não vai impedir que o boleto seja pago e nem que o credito seja efetuado na conta do cliente, mas pode ocasionar na impossibilidade de se protestar o boleto caso venha a ser necessário..
-
#instrucoes1 ⇒ Object
Campos de instruções.
-
#instrucoes2 ⇒ Object
Campos de instruções.
-
#instrucoes3 ⇒ Object
Campos de instruções.
-
#instrucoes4 ⇒ Object
Campos de instruções.
-
#instrucoes5 ⇒ Object
Campos de instruções.
-
#instrucoes6 ⇒ Object
Campos de instruções.
-
#local_pagamento ⇒ Object
Descrição do local do pagamento.
-
#logo ⇒ Object
Caminho do logo do banco.
-
#numero_documento ⇒ Object
Número do documento que será mostrado no boleto.
-
#parcelas ⇒ Object
Quantidade de parcelas que o boleto possui Liberando a possibilidade de edição.
-
#valor_documento ⇒ Object
Valor total do documento.
Instance Method Summary collapse
-
#aceite_formatado ⇒ String
Se o aceite for ‘true’, retorna ‘S’.
-
#codigo_de_barras ⇒ String
Código de Barras.
-
#codigo_de_barras_do_banco ⇒ String
Segunda parte do código de barras.
-
#codigo_de_barras_padrao ⇒ String
Primeira parte do código de barras.
-
#data_vencimento_deve_ser_uma_data ⇒ Object
Verifica e valida se a data do vencimento deve ser uma data válida.
-
#default_values ⇒ Hash
Opções default.
-
#digito_codigo_de_barras ⇒ String
Dígito verificador do código de barras (DAC).
-
#fator_de_vencimento ⇒ String
Fator de vencimento que é calculado a partir de uma data base.
-
#linha_digitavel ⇒ String
Representação numérica do código de barras, mais conhecida como linha digitável! :p.
-
#nosso_numero ⇒ String
O Nosso Número é o número que identifica unicamente um boleto para uma conta.
-
#nosso_numero_retorno ⇒ String
Esse método deve ser utilizado para salvar o nosso número que será retornado no arquivo de retorno.
-
#persisted? ⇒ False
Seguindo a interface do Active Model.
-
#to_partial_path ⇒ String
Returns a string that identifying the render path associated with the object.
-
#valid_numero_documento_maximum ⇒ Object
VALIDAÇÕES DINÂMICAS #################.
-
#valid_valor_documento_tamanho_maximo ⇒ Float
Tamanho maximo do valor do documento do boleto.
-
#valor_formatado_para_codigo_de_barras ⇒ String
Formata o valor do documentado para ser mostrado no código de barras e na linha digitável com 08 dígitos na casa dos Reais e 02 dígitos nas casas dos centavos.
Methods included from HavePagador
Methods included from HaveConta
Methods inherited from ActiveModelBase
#assign_attributes, #initialize
Constructor Details
This class inherits a constructor from BrBoleto::ActiveModelBase
Instance Attribute Details
#aceite ⇒ Object
Aceitar após o vencimento. Nessa gem utilizamos o campo aceite como Boolean. Obviamente, true para ‘S’ e false/nil para ‘N’.
85 86 87 |
# File 'lib/br_boleto/boleto/base.rb', line 85 def aceite @aceite end |
#codigo_moeda ⇒ Object
Código da moeda. Campo auto explicativo. Padrão ‘9’ (Real).
40 41 42 |
# File 'lib/br_boleto/boleto/base.rb', line 40 def codigo_moeda @codigo_moeda end |
#data_documento ⇒ Object
Data em que o documento foi gerado. Campo auto explicativo.
75 76 77 |
# File 'lib/br_boleto/boleto/base.rb', line 75 def data_documento @data_documento end |
#data_vencimento ⇒ Object
Data do vencimento do boleto. Campo auto explicativo.
Campo Obrigatório
16 17 18 |
# File 'lib/br_boleto/boleto/base.rb', line 16 def data_vencimento @data_vencimento end |
#especie ⇒ Object
Essencial para identificação da moeda em que a operação foi efetuada.
Padrão ‘R$’ (Real).
46 47 48 |
# File 'lib/br_boleto/boleto/base.rb', line 46 def especie @especie end |
#especie_documento ⇒ Object
Normalmente se vê neste campo a informação “DM” que quer dizer duplicata mercantil, mas existem inúmeros tipos de espécie, neste caso é aconselhável discutir com o banco qual a espécie de documento será utilizada, a identificação incorreta da espécie do documento não vai impedir que o boleto seja pago e nem que o credito seja efetuado na conta do cliente, mas pode ocasionar na impossibilidade de se protestar o boleto caso venha a ser necessário.
Segue a sigla e descrição do campo especie do documento:
---------------------------------
| Sigla | Descri
Padrão ‘DM’ (Duplicata Mercantil)
71 72 73 |
# File 'lib/br_boleto/boleto/base.rb', line 71 def especie_documento @especie_documento end |
#instrucoes1 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
90 91 92 |
# File 'lib/br_boleto/boleto/base.rb', line 90 def instrucoes1 @instrucoes1 end |
#instrucoes2 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
90 91 92 |
# File 'lib/br_boleto/boleto/base.rb', line 90 def instrucoes2 @instrucoes2 end |
#instrucoes3 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
90 91 92 |
# File 'lib/br_boleto/boleto/base.rb', line 90 def instrucoes3 @instrucoes3 end |
#instrucoes4 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
90 91 92 |
# File 'lib/br_boleto/boleto/base.rb', line 90 def instrucoes4 @instrucoes4 end |
#instrucoes5 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
90 91 92 |
# File 'lib/br_boleto/boleto/base.rb', line 90 def instrucoes5 @instrucoes5 end |
#instrucoes6 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
90 91 92 |
# File 'lib/br_boleto/boleto/base.rb', line 90 def instrucoes6 @instrucoes6 end |
#local_pagamento ⇒ Object
Descrição do local do pagamento.
79 80 81 |
# File 'lib/br_boleto/boleto/base.rb', line 79 def local_pagamento @local_pagamento end |
#logo ⇒ Object
Caminho do logo do banco.
99 100 101 |
# File 'lib/br_boleto/boleto/base.rb', line 99 def logo @logo end |
#numero_documento ⇒ Object
Número do documento que será mostrado no boleto. Campo de resposabilidade do Cedente e cada banco possui um tamanho esperado.
21 22 23 |
# File 'lib/br_boleto/boleto/base.rb', line 21 def numero_documento @numero_documento end |
#parcelas ⇒ Object
Quantidade de parcelas que o boleto possui Liberando a possibilidade de edição
103 104 105 |
# File 'lib/br_boleto/boleto/base.rb', line 103 def parcelas @parcelas end |
#valor_documento ⇒ Object
Valor total do documento. Campo auto explicativo.
Campo Obrigatório.
34 35 36 |
# File 'lib/br_boleto/boleto/base.rb', line 34 def valor_documento @valor_documento end |
Instance Method Details
#aceite_formatado ⇒ String
Se o aceite for ‘true’, retorna ‘S’. Retorna ‘N’, caso contrário.
223 224 225 226 227 228 229 |
# File 'lib/br_boleto/boleto/base.rb', line 223 def aceite_formatado if @aceite.present? 'S' else 'N' end end |
#codigo_de_barras ⇒ String
Código de Barras
O código de barras contêm exatamente 44 posições nessa sequência:
____________________________________________________________
| Posi
257 258 259 |
# File 'lib/br_boleto/boleto/base.rb', line 257 def "#{codigo_de_barras_padrao}#{codigo_de_barras_do_banco}".insert(4, ) end |
#codigo_de_barras_do_banco ⇒ String
Segunda parte do código de barras. Esse campo é específico para cada banco.
276 277 278 |
# File 'lib/br_boleto/boleto/base.rb', line 276 def raise NotImplementedError.new("Not implemented #codigo_de_barras_do_banco in #{self}.") end |
#codigo_de_barras_padrao ⇒ String
Primeira parte do código de barras. Essa parte do código de barras é padrão para todos os bancos..
266 267 268 |
# File 'lib/br_boleto/boleto/base.rb', line 266 def "#{conta.codigo_banco}#{codigo_moeda}#{fator_de_vencimento}#{valor_formatado_para_codigo_de_barras}" end |
#data_vencimento_deve_ser_uma_data ⇒ Object
Verifica e valida se a data do vencimento deve ser uma data válida. Precisa ser uma data para o cálculo do fator do vencimento.
354 355 356 |
# File 'lib/br_boleto/boleto/base.rb', line 354 def data_vencimento_deve_ser_uma_data errors.add(:data_vencimento, :invalid) unless data_vencimento.kind_of?(Date) end |
#default_values ⇒ Hash
Opções default.
Caso queira sobrescrever as opções, você pode simplesmente instanciar o objeto passando a opção desejada:
class Bradesco < BrBoleto::Bradesco
end
Bradesco.new do |bradesco|
bradesco.codigo_moeda = 'outro_codigo_da_moeda'
bradesco.especie = 'outra_especie_que_nao_seja_em_reais'
bradesco.especie_documento = 'outra_especie_do_documento'
bradesco.data_documento = Date.tomorrow
bradesco.aceite = false
end
150 151 152 153 154 155 156 157 158 159 |
# File 'lib/br_boleto/boleto/base.rb', line 150 def default_values { codigo_moeda: '9', especie: 'R$', especie_documento: 'DM', local_pagamento: 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO', data_documento: Date.current, aceite: false } end |
#digito_codigo_de_barras ⇒ String
Dígito verificador do código de barras (DAC).
Por definição da FEBRABAN e do Banco Central do Brasil, na 5º posição do Código de Barras, deve ser indicado obrigatoriamente o “dígito verificador” (DAC), calculado através do módulo 11.
OBS.: Para mais detalhes deste cálculo, veja a descrição em BrBoleto::Calculos::Modulo11FatorDe2a9.
291 292 293 |
# File 'lib/br_boleto/boleto/base.rb', line 291 def Modulo11FatorDe2a9.new("#{codigo_de_barras_padrao}#{codigo_de_barras_do_banco}") end |
#fator_de_vencimento ⇒ String
Fator de vencimento que é calculado a partir de uma data base. Veja FatorVencimento para mais detalhes.
236 237 238 |
# File 'lib/br_boleto/boleto/base.rb', line 236 def fator_de_vencimento FatorVencimento.new(data_vencimento) end |
#linha_digitavel ⇒ String
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
329 330 331 |
# File 'lib/br_boleto/boleto/base.rb', line 329 def linha_digitavel LinhaDigitavel.new() end |
#nosso_numero ⇒ String
O Nosso Número é o número que identifica unicamente um boleto para uma conta. O tamanho máximo do Nosso Número depende do banco e carteira.
Para carteiras registradas, você deve solicitar ao seu banco um intervalo de números para utilização. Quando estiver perto do fim do intervalo, deve solicitar um novo intervalo.
Para carteiras não registradas o Nosso Número é livre. Ao receber o retorno do banco, é através do Nosso Número que será possível identificar os boletos pagos.
Esse campo é específico para cada banco.
175 176 177 |
# File 'lib/br_boleto/boleto/base.rb', line 175 def nosso_numero raise NotImplementedError.new("Not implemented #nosso_numero in #{self}.") end |
#nosso_numero_retorno ⇒ String
Esse método deve ser utilizado para salvar o nosso número que será retornado no arquivo de retorno. Foi necessário fazer esse método pois alguns bancos como o Bradesco e Itaú desconsideram o número da carteira no retorno, porém a carteira deve ser apresentada no boleto. Com o bjetivo de facilitar o desenvolvimento para não fazer essa regra da aplicação, foi desenvolvido esse método para que seja salvo o valor desse método na aplicação para que posteriormente a conciliação dos boletos funcione adecuadamente.
Por padrão retorna os núemros e letras do nosso número, na qual é utilizada para a maioria dos bancos. Deve ser sobrescrito para os bancos que utilizam de forma diferente.
O retorno é uma string pois em alguns bancos o DV do nosso número pode ser uma Letra.
198 199 200 |
# File 'lib/br_boleto/boleto/base.rb', line 198 def nosso_numero_retorno "#{nosso_numero}".gsub(/[^\w\d]/i, '') end |
#persisted? ⇒ False
Seguindo a interface do Active Model.
347 348 349 |
# File 'lib/br_boleto/boleto/base.rb', line 347 def persisted? false end |
#to_partial_path ⇒ String
Returns a string that identifying the render path associated with the object.
ActionPack uses this to find a suitable partial to represent the object.
339 340 341 |
# File 'lib/br_boleto/boleto/base.rb', line 339 def to_partial_path "br_boleto/#{self.class.name.demodulize.underscore}" end |
#valid_numero_documento_maximum ⇒ Object
VALIDAÇÕES DINÂMICAS #################
114 |
# File 'lib/br_boleto/boleto/base.rb', line 114 def valid_numero_documento_maximum; 6 end |
#valid_valor_documento_tamanho_maximo ⇒ Float
Tamanho maximo do valor do documento do boleto. Acredito que não existirá valor de documento nesse valor, porém a biblioteca precisa manter a consistência.
No código de barras o valor do documento precisa ter um tamanho de 8 caracteres para os reais (acrescentando zeros à esquerda), e 2 caracteres nos centavos (acrescentando zeros à esquerda).
127 |
# File 'lib/br_boleto/boleto/base.rb', line 127 def valid_valor_documento_tamanho_maximo; 99999999.99 end |
#valor_formatado_para_codigo_de_barras ⇒ String
Formata o valor do documentado para ser mostrado no código de barras e na linha digitável com 08 dígitos na casa dos Reais e 02 dígitos nas casas dos centavos.
212 213 214 215 216 |
# File 'lib/br_boleto/boleto/base.rb', line 212 def valor_documento_formatado = (Integer(valor_documento.to_f * 100) / Float(100)) real, centavos = valor_documento_formatado.to_s.split(/\./) "#{real.rjust(8, '0')}#{centavos.ljust(2, '0')}" end |