Class: Brcobranca::Boleto::Base

Inherits:
Object
  • Object
show all
Extended by:
Template::Base
Includes:
ActiveModel::Validations
Defined in:
lib/brcobranca/boleto/base.rb

Overview

Classe base para todas as classes de boletos

Direct Known Subclasses

BancoBrasil, Banespa, Bradesco, Caixa, Hsbc, Itau, Real, Unibanco

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Template::Base

define_template

Constructor Details

#initialize(campos = {}) {|_self| ... } ⇒ Base

Nova instancia da classe Base

Parameters:

  • campos (Hash) (defaults to: {})

Yields:

  • (_self)

Yield Parameters:



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

#aceiteObject

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

#agenciaObject

REQUERIDO: Número da agencia sem Digito Verificador



33
34
35
# File 'lib/brcobranca/boleto/base.rb', line 33

def agencia
  @agencia
end

#carteiraObject

REQUERIDO: Carteira utilizada



21
22
23
# File 'lib/brcobranca/boleto/base.rb', line 21

def carteira
  @carteira
end

#cedenteObject

REQUERIDO: Nome do proprietario da conta corrente



37
38
39
# File 'lib/brcobranca/boleto/base.rb', line 37

def cedente
  @cedente
end

#codigo_servicoObject

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_correnteObject

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

#convenioObject

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_documentoObject

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_processamentoObject

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_vencimentoObject

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_cedenteObject

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

#especieObject

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_documentoObject

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

#instrucao1Object

OPCIONAL: Utilizado para mostrar alguma informação ao sacado



51
52
53
# File 'lib/brcobranca/boleto/base.rb', line 51

def instrucao1
  @instrucao1
end

#instrucao2Object

OPCIONAL: Utilizado para mostrar alguma informação ao sacado



53
54
55
# File 'lib/brcobranca/boleto/base.rb', line 53

def instrucao2
  @instrucao2
end

#instrucao3Object

OPCIONAL: Utilizado para mostrar alguma informação ao sacado



55
56
57
# File 'lib/brcobranca/boleto/base.rb', line 55

def instrucao3
  @instrucao3
end

#instrucao4Object

OPCIONAL: Utilizado para mostrar alguma informação ao sacado



57
58
59
# File 'lib/brcobranca/boleto/base.rb', line 57

def instrucao4
  @instrucao4
end

#instrucao5Object

OPCIONAL: Utilizado para mostrar alguma informação ao sacado



59
60
61
# File 'lib/brcobranca/boleto/base.rb', line 59

def instrucao5
  @instrucao5
end

#instrucao6Object

OPCIONAL: Utilizado para mostrar alguma informação ao sacado



61
62
63
# File 'lib/brcobranca/boleto/base.rb', line 61

def instrucao6
  @instrucao6
end

#instrucao7Object

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_pagamentoObject

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

#moedaObject

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_documentoObject

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

#quantidadeObject

REQUERIDO: Quantidade de boleto(padrão = 1)



29
30
31
# File 'lib/brcobranca/boleto/base.rb', line 29

def quantidade
  @quantidade
end

#sacadoObject

REQUERIDO: Nome da pessoa que receberá o boleto



69
70
71
# File 'lib/brcobranca/boleto/base.rb', line 69

def sacado
  @sacado
end

#sacado_documentoObject

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_enderecoObject

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

#valorObject

REQUERIDO: Valor do boleto



31
32
33
# File 'lib/brcobranca/boleto/base.rb', line 31

def valor
  @valor
end

#variacaoObject

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_boletoObject

This method is abstract.

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_dvInteger

Dígito verificador da agência

Returns:

  • (Integer)

    1 caracteres numéricos.



116
117
118
# File 'lib/brcobranca/boleto/base.rb', line 116

def agencia_dv
  self.agencia.modulo11_9to2
end

#banco_dvInteger

Dígito verificador do banco

Returns:

  • (Integer)

    1 caracteres numéricos.



104
105
106
# File 'lib/brcobranca/boleto/base.rb', line 104

def banco_dv
  self.banco.modulo11_9to2
end

#codigo_barrasString

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/>

Returns:

  • (String)

    código de barras formado por 44 caracteres numéricos.

Raises:



183
184
185
186
187
188
189
190
191
192
193
194
# File 'lib/brcobranca/boleto/base.rb', line 183

def codigo_barras
  raise Brcobranca::BoletoInvalido.new(self) unless self.valid?
  codigo = codigo_barras_primeira_parte #18 digitos
  codigo << codigo_barras_segunda_parte #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_parteObject

This method is abstract.

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 codigo_barras_segunda_parte
  raise Brcobranca::NaoImplementado.new("Sobreescreva este método na classe referente ao banco que você esta criando")
end

#conta_corrente_dvInteger

Dígito verificador da conta corrente

Returns:

  • (Integer)

    1 caracteres numéricos.



122
123
124
# File 'lib/brcobranca/boleto/base.rb', line 122

def conta_corrente_dv
  self.conta_corrente.modulo11_9to2
end

#data_vencimentoDate

Data de vencimento baseado na data_documento + dias_vencimento

Returns:

  • (Date)

Raises:



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_vencimentoString

Fator de vencimento calculado com base na data de vencimento do boleto.

Returns:

  • (String)

    4 caracteres numéricos.



160
161
162
# File 'lib/brcobranca/boleto/base.rb', line 160

def fator_vencimento
  self.data_vencimento.fator_vencimento
end

#logotipoPath

Logotipo do banco

Returns:

  • (Path)

    Caminho para o arquivo de 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_boletoObject

This method is abstract.

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_dvInteger

Dígito verificador do nosso número

Returns:

  • (Integer)

    1 caracteres numéricos.



128
129
130
# File 'lib/brcobranca/boleto/base.rb', line 128

def nosso_numero_dv
  self.numero_documento.modulo11_9to2
end

#valor_documentoFloat

Valor total do documento: quantidate * valor

Returns:

  • (Float)


144
145
146
# File 'lib/brcobranca/boleto/base.rb', line 144

def valor_documento
  self.quantidade.to_f * self.valor.to_f
end