Class: Brcobranca::Boleto::Base
- Inherits:
-
Object
- Object
- Brcobranca::Boleto::Base
- Extended by:
- Template::Base
- Includes:
- ActiveModel::Validations
- Defined in:
- lib/brcobranca/boleto/base.rb
Overview
Classe base para todas as classes de boletos
Instance Attribute Summary collapse
-
#aceite ⇒ Object
REQUERIDO: Informa se o banco deve aceitar o boleto após o vencimento ou não( S ou N, quase sempre S).
-
#agencia ⇒ Object
REQUERIDO: Número da agencia sem Digito Verificador.
-
#carteira ⇒ Object
REQUERIDO: Carteira utilizada.
-
#cedente ⇒ Object
REQUERIDO: Nome do proprietario da conta corrente.
-
#codigo_servico ⇒ Object
OPCIONAL: Código utilizado para identificar o tipo de serviço cobrado.
-
#conta_corrente ⇒ Object
REQUERIDO: Número da conta corrente sem Digito Verificador.
-
#convenio ⇒ Object
REQUERIDO: Número do convênio/contrato do cliente junto ao banco emissor.
-
#data_documento ⇒ Object
REQUERIDO: Data em que foi emitido o boleto.
-
#data_processamento ⇒ Object
OPCIONAL: Data de processamento do boleto, geralmente igual a data_documento.
-
#dias_vencimento ⇒ Object
REQUERIDO: Número de dias a vencer.
-
#documento_cedente ⇒ Object
REQUERIDO: Documento do proprietario da conta corrente (CPF ou CNPJ).
-
#especie ⇒ Object
REQUERIDO: Símbolo da moeda utilizada (R$ no brasil).
-
#especie_documento ⇒ Object
REQUERIDO: Tipo do documento (Geralmente DM que quer dizer Duplicata Mercantil).
-
#instrucao1 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado.
-
#instrucao2 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado.
-
#instrucao3 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado.
-
#instrucao4 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado.
-
#instrucao5 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado.
-
#instrucao6 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado.
-
#instrucao7 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado.
-
#local_pagamento ⇒ Object
REQUERIDO: Informação sobre onde o sacado podera efetuar o pagamento.
-
#moeda ⇒ Object
REQUERIDO: Tipo de moeda utilizada (Real(R$) e igual a 9).
-
#numero_documento ⇒ Object
OPCIONAL: Número sequencial utilizado para identificar o boleto.
-
#quantidade ⇒ Object
REQUERIDO: Quantidade de boleto(padrão = 1).
-
#sacado ⇒ Object
REQUERIDO: Nome da pessoa que receberá o boleto.
-
#sacado_documento ⇒ Object
REQUERIDO: Documento da pessoa que receberá o boleto.
-
#sacado_endereco ⇒ Object
OPCIONAL: Endereco da pessoa que receberá o boleto.
-
#valor ⇒ Object
REQUERIDO: Valor do boleto.
-
#variacao ⇒ Object
OPCIONAL: Variacao da carteira(opcional para a maioria dos bancos).
Instance Method Summary collapse
- #agencia_conta_boleto ⇒ Object abstract
-
#agencia_dv ⇒ Integer
Dígito verificador da agência.
-
#banco_dv ⇒ Integer
Dígito verificador do banco.
-
#codigo_barras ⇒ String
Codigo de barras do boleto.
-
#codigo_barras_segunda_parte ⇒ Object
abstract
Monta a segunda parte do código de barras, que é específico para cada banco.
-
#conta_corrente_dv ⇒ Integer
Dígito verificador da conta corrente.
-
#data_vencimento ⇒ Date
Data de vencimento baseado na data_documento + dias_vencimento.
-
#fator_vencimento ⇒ String
Fator de vencimento calculado com base na data de vencimento do boleto.
-
#initialize(campos = {}) {|_self| ... } ⇒ Base
constructor
Nova instancia da classe Base.
-
#logotipo ⇒ Path
Logotipo do banco.
- #nosso_numero_boleto ⇒ Object abstract
-
#nosso_numero_dv ⇒ Integer
Dígito verificador do nosso número.
-
#valor_documento ⇒ Float
Valor total do documento: quantidate * valor.
Methods included from Template::Base
Constructor Details
#initialize(campos = {}) {|_self| ... } ⇒ Base
Nova instancia da classe Base
81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/brcobranca/boleto/base.rb', line 81 def initialize(campos={}) padrao = { :moeda => "9", :data_documento => Date.today, :dias_vencimento => 1, :quantidade => 1, :especie_documento => "DM", :especie => "R$", :aceite => "S", :valor => 0.0, :local_pagamento => "QUALQUER BANCO ATÉ O VENCIMENTO" } campos = padrao.merge!(campos) campos.each do |campo, valor| send "#{campo}=", valor end yield self if block_given? end |
Instance Attribute Details
#aceite ⇒ Object
REQUERIDO: Informa se o banco deve aceitar o boleto após o vencimento ou não( S ou N, quase sempre S)
67 68 69 |
# File 'lib/brcobranca/boleto/base.rb', line 67 def aceite @aceite end |
#agencia ⇒ Object
REQUERIDO: Número da agencia sem Digito Verificador
33 34 35 |
# File 'lib/brcobranca/boleto/base.rb', line 33 def agencia @agencia end |
#carteira ⇒ Object
REQUERIDO: Carteira utilizada
21 22 23 |
# File 'lib/brcobranca/boleto/base.rb', line 21 def carteira @carteira end |
#cedente ⇒ Object
REQUERIDO: Nome do proprietario da conta corrente
37 38 39 |
# File 'lib/brcobranca/boleto/base.rb', line 37 def cedente @cedente end |
#codigo_servico ⇒ Object
OPCIONAL: Código utilizado para identificar o tipo de serviço cobrado
49 50 51 |
# File 'lib/brcobranca/boleto/base.rb', line 49 def codigo_servico @codigo_servico end |
#conta_corrente ⇒ Object
REQUERIDO: Número da conta corrente sem Digito Verificador
35 36 37 |
# File 'lib/brcobranca/boleto/base.rb', line 35 def conta_corrente @conta_corrente end |
#convenio ⇒ Object
REQUERIDO: Número do convênio/contrato do cliente junto ao banco emissor
17 18 19 |
# File 'lib/brcobranca/boleto/base.rb', line 17 def convenio @convenio end |
#data_documento ⇒ Object
REQUERIDO: Data em que foi emitido o boleto
47 48 49 |
# File 'lib/brcobranca/boleto/base.rb', line 47 def data_documento @data_documento end |
#data_processamento ⇒ Object
OPCIONAL: Data de processamento do boleto, geralmente igual a data_documento
25 26 27 |
# File 'lib/brcobranca/boleto/base.rb', line 25 def data_processamento @data_processamento end |
#dias_vencimento ⇒ Object
REQUERIDO: Número de dias a vencer
27 28 29 |
# File 'lib/brcobranca/boleto/base.rb', line 27 def dias_vencimento @dias_vencimento end |
#documento_cedente ⇒ Object
REQUERIDO: Documento do proprietario da conta corrente (CPF ou CNPJ)
39 40 41 |
# File 'lib/brcobranca/boleto/base.rb', line 39 def documento_cedente @documento_cedente end |
#especie ⇒ Object
REQUERIDO: Símbolo da moeda utilizada (R$ no brasil)
43 44 45 |
# File 'lib/brcobranca/boleto/base.rb', line 43 def especie @especie end |
#especie_documento ⇒ Object
REQUERIDO: Tipo do documento (Geralmente DM que quer dizer Duplicata Mercantil)
45 46 47 |
# File 'lib/brcobranca/boleto/base.rb', line 45 def especie_documento @especie_documento end |
#instrucao1 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado
51 52 53 |
# File 'lib/brcobranca/boleto/base.rb', line 51 def instrucao1 @instrucao1 end |
#instrucao2 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado
53 54 55 |
# File 'lib/brcobranca/boleto/base.rb', line 53 def instrucao2 @instrucao2 end |
#instrucao3 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado
55 56 57 |
# File 'lib/brcobranca/boleto/base.rb', line 55 def instrucao3 @instrucao3 end |
#instrucao4 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado
57 58 59 |
# File 'lib/brcobranca/boleto/base.rb', line 57 def instrucao4 @instrucao4 end |
#instrucao5 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado
59 60 61 |
# File 'lib/brcobranca/boleto/base.rb', line 59 def instrucao5 @instrucao5 end |
#instrucao6 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado
61 62 63 |
# File 'lib/brcobranca/boleto/base.rb', line 61 def instrucao6 @instrucao6 end |
#instrucao7 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado
63 64 65 |
# File 'lib/brcobranca/boleto/base.rb', line 63 def instrucao7 @instrucao7 end |
#local_pagamento ⇒ Object
REQUERIDO: Informação sobre onde o sacado podera efetuar o pagamento
65 66 67 |
# File 'lib/brcobranca/boleto/base.rb', line 65 def local_pagamento @local_pagamento end |
#moeda ⇒ Object
REQUERIDO: Tipo de moeda utilizada (Real(R$) e igual a 9)
19 20 21 |
# File 'lib/brcobranca/boleto/base.rb', line 19 def moeda @moeda end |
#numero_documento ⇒ Object
OPCIONAL: Número sequencial utilizado para identificar o boleto
41 42 43 |
# File 'lib/brcobranca/boleto/base.rb', line 41 def numero_documento @numero_documento end |
#quantidade ⇒ Object
REQUERIDO: Quantidade de boleto(padrão = 1)
29 30 31 |
# File 'lib/brcobranca/boleto/base.rb', line 29 def quantidade @quantidade end |
#sacado ⇒ Object
REQUERIDO: Nome da pessoa que receberá o boleto
69 70 71 |
# File 'lib/brcobranca/boleto/base.rb', line 69 def sacado @sacado end |
#sacado_documento ⇒ Object
REQUERIDO: Documento da pessoa que receberá o boleto
73 74 75 |
# File 'lib/brcobranca/boleto/base.rb', line 73 def sacado_documento @sacado_documento end |
#sacado_endereco ⇒ Object
OPCIONAL: Endereco da pessoa que receberá o boleto
71 72 73 |
# File 'lib/brcobranca/boleto/base.rb', line 71 def sacado_endereco @sacado_endereco end |
#valor ⇒ Object
REQUERIDO: Valor do boleto
31 32 33 |
# File 'lib/brcobranca/boleto/base.rb', line 31 def valor @valor end |
#variacao ⇒ Object
OPCIONAL: Variacao da carteira(opcional para a maioria dos bancos)
23 24 25 |
# File 'lib/brcobranca/boleto/base.rb', line 23 def variacao @variacao end |
Instance Method Details
#agencia_conta_boleto ⇒ Object
Deverá ser sobreescrito para cada banco.
138 139 140 |
# File 'lib/brcobranca/boleto/base.rb', line 138 def agencia_conta_boleto raise Brcobranca::NaoImplementado.new("Sobreescreva este método na classe referente ao banco que você esta criando") end |
#agencia_dv ⇒ Integer
Dígito verificador da agência
116 117 118 |
# File 'lib/brcobranca/boleto/base.rb', line 116 def agencia_dv self.agencia.modulo11_9to2 end |
#banco_dv ⇒ Integer
Dígito verificador do banco
104 105 106 |
# File 'lib/brcobranca/boleto/base.rb', line 104 def banco_dv self.banco.modulo11_9to2 end |
#codigo_barras ⇒ String
Codigo de barras do boleto
O codigo de barra para cobrança contém 44 posições dispostas da seguinte forma:<br/> Posição |Tamanho |Conteúdo<br/> 01 a 03 | 3 | Identificação do Banco<br/> 04 a 04 | 1 | Código da Moeda (Real = 9, Outras=0)<br/> 05 a 05 | 1 | Dígito verificador do Código de Barras<br/> 06 a 09 | 4 | Fator de Vencimento (Vide Nota)<br/> 10 a 19 | 10 | Valor<br/> 20 a 44 | 25 | Campo Livre - As posições do campo livre ficam a critério de cada Banco arrecadador.<br/>
183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/brcobranca/boleto/base.rb', line 183 def raise Brcobranca::BoletoInvalido.new(self) unless self.valid? codigo = #18 digitos codigo << #25 digitos if codigo =~ /^(\d{4})(\d{39})$/ codigo_dv = codigo.modulo11_2to9 codigo = "#{$1}#{codigo_dv}#{$2}" codigo else raise Brcobranca::BoletoInvalido.new(self) end end |
#codigo_barras_segunda_parte ⇒ Object
Deverá ser sobreescrito para cada banco.
Monta a segunda parte do código de barras, que é específico para cada banco.
199 200 201 |
# File 'lib/brcobranca/boleto/base.rb', line 199 def raise Brcobranca::NaoImplementado.new("Sobreescreva este método na classe referente ao banco que você esta criando") end |
#conta_corrente_dv ⇒ Integer
Dígito verificador da conta corrente
122 123 124 |
# File 'lib/brcobranca/boleto/base.rb', line 122 def conta_corrente_dv self.conta_corrente.modulo11_9to2 end |
#data_vencimento ⇒ Date
Data de vencimento baseado na data_documento + dias_vencimento
152 153 154 155 156 |
# File 'lib/brcobranca/boleto/base.rb', line 152 def data_vencimento raise ArgumentError, "data_documento não pode estar em branco." unless self.data_documento return self.data_documento unless self.dias_vencimento (self.data_documento + self.dias_vencimento.to_i) end |
#fator_vencimento ⇒ String
Fator de vencimento calculado com base na data de vencimento do boleto.
160 161 162 |
# File 'lib/brcobranca/boleto/base.rb', line 160 def fator_vencimento self.data_vencimento.fator_vencimento end |
#logotipo ⇒ Path
Logotipo do banco
98 99 100 |
# File 'lib/brcobranca/boleto/base.rb', line 98 def logotipo File.join(File.dirname(__FILE__),'..','arquivos','logos',"#{class_name}.jpg") end |
#nosso_numero_boleto ⇒ Object
Deverá ser sobreescrito para cada banco.
133 134 135 |
# File 'lib/brcobranca/boleto/base.rb', line 133 def nosso_numero_boleto raise Brcobranca::NaoImplementado.new("Sobreescreva este método na classe referente ao banco que você esta criando") end |
#nosso_numero_dv ⇒ Integer
Dígito verificador do nosso número
128 129 130 |
# File 'lib/brcobranca/boleto/base.rb', line 128 def nosso_numero_dv self.numero_documento.modulo11_9to2 end |
#valor_documento ⇒ Float
Valor total do documento: quantidate * valor
144 145 146 |
# File 'lib/brcobranca/boleto/base.rb', line 144 def valor_documento self.quantidade.to_f * self.valor.to_f end |