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.
-
#conta_corrente ⇒ Object
Número da Conta corrente.
-
#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.
-
#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’.
89 90 91 |
# File 'lib/br_boleto/boleto/base.rb', line 89 def aceite @aceite end |
#codigo_moeda ⇒ Object
Código da moeda. Campo auto explicativo. Padrão ‘9’ (Real).
44 45 46 |
# File 'lib/br_boleto/boleto/base.rb', line 44 def codigo_moeda @codigo_moeda end |
#conta_corrente ⇒ Object
Número da Conta corrente. Campo auto explicativo.
39 40 41 |
# File 'lib/br_boleto/boleto/base.rb', line 39 def conta_corrente @conta_corrente end |
#data_documento ⇒ Object
Data em que o documento foi gerado. Campo auto explicativo.
79 80 81 |
# File 'lib/br_boleto/boleto/base.rb', line 79 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).
50 51 52 |
# File 'lib/br_boleto/boleto/base.rb', line 50 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)
75 76 77 |
# File 'lib/br_boleto/boleto/base.rb', line 75 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
94 95 96 |
# File 'lib/br_boleto/boleto/base.rb', line 94 def instrucoes1 @instrucoes1 end |
#instrucoes2 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
94 95 96 |
# File 'lib/br_boleto/boleto/base.rb', line 94 def instrucoes2 @instrucoes2 end |
#instrucoes3 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
94 95 96 |
# File 'lib/br_boleto/boleto/base.rb', line 94 def instrucoes3 @instrucoes3 end |
#instrucoes4 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
94 95 96 |
# File 'lib/br_boleto/boleto/base.rb', line 94 def instrucoes4 @instrucoes4 end |
#instrucoes5 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
94 95 96 |
# File 'lib/br_boleto/boleto/base.rb', line 94 def instrucoes5 @instrucoes5 end |
#instrucoes6 ⇒ Object
Campos de instruções. São permitidas até seis linhas de instruções a serem mostradas no boleto
94 95 96 |
# File 'lib/br_boleto/boleto/base.rb', line 94 def instrucoes6 @instrucoes6 end |
#local_pagamento ⇒ Object
Descrição do local do pagamento.
83 84 85 |
# File 'lib/br_boleto/boleto/base.rb', line 83 def local_pagamento @local_pagamento end |
#logo ⇒ Object
Caminho do logo do banco.
103 104 105 |
# File 'lib/br_boleto/boleto/base.rb', line 103 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
107 108 109 |
# File 'lib/br_boleto/boleto/base.rb', line 107 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.
204 205 206 207 208 209 210 |
# File 'lib/br_boleto/boleto/base.rb', line 204 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
238 239 240 |
# File 'lib/br_boleto/boleto/base.rb', line 238 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.
257 258 259 |
# File 'lib/br_boleto/boleto/base.rb', line 257 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..
247 248 249 |
# File 'lib/br_boleto/boleto/base.rb', line 247 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.
335 336 337 |
# File 'lib/br_boleto/boleto/base.rb', line 335 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
154 155 156 157 158 159 160 161 162 163 |
# File 'lib/br_boleto/boleto/base.rb', line 154 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.
272 273 274 |
# File 'lib/br_boleto/boleto/base.rb', line 272 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.
217 218 219 |
# File 'lib/br_boleto/boleto/base.rb', line 217 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
310 311 312 |
# File 'lib/br_boleto/boleto/base.rb', line 310 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.
179 180 181 |
# File 'lib/br_boleto/boleto/base.rb', line 179 def nosso_numero raise NotImplementedError.new("Not implemented #nosso_numero in #{self}.") end |
#persisted? ⇒ False
Seguindo a interface do Active Model.
328 329 330 |
# File 'lib/br_boleto/boleto/base.rb', line 328 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.
320 321 322 |
# File 'lib/br_boleto/boleto/base.rb', line 320 def to_partial_path "br_boleto/#{self.class.name.demodulize.underscore}" end |
#valid_numero_documento_maximum ⇒ Object
VALIDAÇÕES DINÂMICAS #################
118 |
# File 'lib/br_boleto/boleto/base.rb', line 118 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).
131 |
# File 'lib/br_boleto/boleto/base.rb', line 131 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.
193 194 195 196 197 |
# File 'lib/br_boleto/boleto/base.rb', line 193 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 |