Class: Brcobranca::Boleto::Base

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

Overview

Classe base para todas as classes de boletos

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Template::Base

define_template

Methods included from Validations

#errors, included, #invalid?, #valid?

Constructor Details

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

Nova instancia da classe Base

Parameters:

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

Yields:

  • (_self)

Yield Parameters:


98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/brcobranca/boleto/base.rb', line 98

def initialize(campos = {})
  padrao = {
    moeda: '9',
    data_processamento: Date.current,
    data_vencimento: Date.current,
    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)


78
79
80
# File 'lib/brcobranca/boleto/base.rb', line 78

def aceite
  @aceite
end

#agenciaObject

REQUERIDO: Número da agencia sem Digito Verificador


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

def agencia
  @agencia
end

#avalistaObject

OPCIONAL: Nome do avalista


86
87
88
# File 'lib/brcobranca/boleto/base.rb', line 86

def avalista
  @avalista
end

#avalista_documentoObject

OPCIONAL: Documento do avalista


88
89
90
# File 'lib/brcobranca/boleto/base.rb', line 88

def avalista_documento
  @avalista_documento
end

#carteiraObject

REQUERIDO: Carteira utilizada


24
25
26
# File 'lib/brcobranca/boleto/base.rb', line 24

def carteira
  @carteira
end

#carteira_labelObject

OPCIONAL: Variacao da carteira(opcional para a maioria dos bancos)


26
27
28
# File 'lib/brcobranca/boleto/base.rb', line 26

def carteira_label
  @carteira_label
end

#cedenteObject

REQUERIDO: Nome do beneficiário


40
41
42
# File 'lib/brcobranca/boleto/base.rb', line 40

def cedente
  @cedente
end

#cedente_enderecoObject

OPCIONAL: Endereço do beneficiário


90
91
92
# File 'lib/brcobranca/boleto/base.rb', line 90

def cedente_endereco
  @cedente_endereco
end

#codigo_servicoObject

OPCIONAL: Código utilizado para identificar o tipo de serviço cobrado


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

def codigo_servico
  @codigo_servico
end

#conta_correnteObject

REQUERIDO: Número da conta corrente sem Digito Verificador


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

def conta_corrente
  @conta_corrente
end

#convenioObject

REQUERIDO: Número do convênio/contrato do cliente junto ao banco emissor


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

def convenio
  @convenio
end

#data_documentoObject

REQUERIDO: Data de pedido, Nota fiscal ou documento que originou o boleto


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

def data_documento
  @data_documento
end

#data_processamentoObject

OPCIONAL: Data de processamento do boleto


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

def data_processamento
  @data_processamento
end

#data_vencimentoObject

REQUERIDO: Data de vencimento do boleto


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

def data_vencimento
  @data_vencimento
end

#demonstrativoObject

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


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

def demonstrativo
  @demonstrativo
end

#documento_cedenteObject

REQUERIDO: Documento do beneficiário (CPF ou CNPJ)


42
43
44
# File 'lib/brcobranca/boleto/base.rb', line 42

def documento_cedente
  @documento_cedente
end

#documento_numeroObject

OPCIONAL: Número de pedido, Nota fiscal ou documento que originou o boleto


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

def documento_numero
  @documento_numero
end

#especieObject

REQUERIDO: Símbolo da moeda utilizada (R$ no brasil)


46
47
48
# File 'lib/brcobranca/boleto/base.rb', line 46

def especie
  @especie
end

#especie_documentoObject

REQUERIDO: Tipo do documento (Geralmente DM que quer dizer Duplicata Mercantil)


48
49
50
# File 'lib/brcobranca/boleto/base.rb', line 48

def especie_documento
  @especie_documento
end

#instrucao1Object

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


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

def instrucao1
  @instrucao1
end

#instrucao2Object

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


64
65
66
# File 'lib/brcobranca/boleto/base.rb', line 64

def instrucao2
  @instrucao2
end

#instrucao3Object

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


66
67
68
# File 'lib/brcobranca/boleto/base.rb', line 66

def instrucao3
  @instrucao3
end

#instrucao4Object

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


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

def instrucao4
  @instrucao4
end

#instrucao5Object

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


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

def instrucao5
  @instrucao5
end

#instrucao6Object

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


72
73
74
# File 'lib/brcobranca/boleto/base.rb', line 72

def instrucao6
  @instrucao6
end

#instrucao7Object

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


74
75
76
# File 'lib/brcobranca/boleto/base.rb', line 74

def instrucao7
  @instrucao7
end

#instrucoesObject

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


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

def instrucoes
  @instrucoes
end

#local_pagamentoObject

REQUERIDO: Informação sobre onde o sacado podera efetuar o pagamento


76
77
78
# File 'lib/brcobranca/boleto/base.rb', line 76

def local_pagamento
  @local_pagamento
end

#moedaObject

REQUERIDO: Tipo de moeda utilizada (Real(R$) e igual a 9)


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

def moeda
  @moeda
end

#nosso_numeroObject

OPCIONAL: Número sequencial utilizado para identificar o boleto


44
45
46
# File 'lib/brcobranca/boleto/base.rb', line 44

def nosso_numero
  @nosso_numero
end

#quantidadeObject

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


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

def quantidade
  @quantidade
end

#sacadoObject

REQUERIDO: Nome do pagador


80
81
82
# File 'lib/brcobranca/boleto/base.rb', line 80

def sacado
  @sacado
end

#sacado_documentoObject

REQUERIDO: Documento do pagador


84
85
86
# File 'lib/brcobranca/boleto/base.rb', line 84

def sacado_documento
  @sacado_documento
end

#sacado_enderecoObject

OPCIONAL: Endereco do pagador


82
83
84
# File 'lib/brcobranca/boleto/base.rb', line 82

def sacado_endereco
  @sacado_endereco
end

#valorObject

REQUERIDO: Valor do boleto


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

def valor
  @valor
end

#variacaoObject

OPCIONAL: Rótulo da Carteira, RG ou SR, somente para impressão no boleto.


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

def variacao
  @variacao
end

Instance Method Details

#agencia_conta_boletoObject

This method is abstract.

Deverá ser sobreescrito para cada banco.


165
166
167
# File 'lib/brcobranca/boleto/base.rb', line 165

def agencia_conta_boleto
  raise Brcobranca::NaoImplementado, '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.


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

def agencia_dv
  agencia.modulo11
end

#banco_dvInteger

Dígito verificador do banco

Returns:

  • (Integer)

    1 caracteres numéricos.


131
132
133
# File 'lib/brcobranca/boleto/base.rb', line 131

def banco_dv
  banco.modulo11
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:


200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/brcobranca/boleto/base.rb', line 200

def codigo_barras
  raise Brcobranca::BoletoInvalido, self unless 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(
      multiplicador: (2..9).to_a,
      mapeamento: { 0 => 1, 10 => 1, 11 => 1 }
    ) { |t| 11 - (t % 11) }

    codigo = "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}"
    codigo
  else
    self.errors.add(:base, :too_long, message: "tamanho(#{codigo.size}) prévio do código de barras(#{codigo}) inválido, deveria ser 43 dígitos")
    raise Brcobranca::BoletoInvalido, 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.


222
223
224
# File 'lib/brcobranca/boleto/base.rb', line 222

def codigo_barras_segunda_parte
  raise Brcobranca::NaoImplementado, '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.


149
150
151
# File 'lib/brcobranca/boleto/base.rb', line 149

def conta_corrente_dv
  conta_corrente.modulo11
end

#fator_vencimentoString

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

Returns:

  • (String)

    4 caracteres numéricos.


177
178
179
# File 'lib/brcobranca/boleto/base.rb', line 177

def fator_vencimento
  data_vencimento.fator_vencimento
end

#logotipoPath

Logotipo do banco

Returns:

  • (Path)

    Caminho para o arquivo de logotipo do banco.


121
122
123
124
125
126
127
# File 'lib/brcobranca/boleto/base.rb', line 121

def logotipo
  if Brcobranca.configuration.gerador == :rghost_carne
    File.join(File.dirname(__FILE__), '..', 'arquivos', 'logos', "#{class_name}_carne.eps")
  else
    File.join(File.dirname(__FILE__), '..', 'arquivos', 'logos', "#{class_name}.eps")
  end
end

#nosso_numero_boletoObject

This method is abstract.

Deverá ser sobreescrito para cada banco.


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

def nosso_numero_boleto
  raise Brcobranca::NaoImplementado, '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.


155
156
157
# File 'lib/brcobranca/boleto/base.rb', line 155

def nosso_numero_dv
  nosso_numero.modulo11(mapeamento: { 10 => 0, 11 => 0 })
end

#valor_documentoFloat

Valor total do documento: quantidate * valor

Returns:

  • (Float)

171
172
173
# File 'lib/brcobranca/boleto/base.rb', line 171

def valor_documento
  quantidade.to_f * valor.to_f
end