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:



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/brcobranca/boleto/base.rb', line 103

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)



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

def aceite
  @aceite
end

#agenciaObject

REQUERIDO: Número da agencia sem Digito Verificador



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

def agencia
  @agencia
end

#avalistaObject

OPCIONAL: Nome do avalista



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

def avalista
  @avalista
end

#avalista_documentoObject

OPCIONAL: Documento do avalista



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

def avalista_documento
  @avalista_documento
end

#carteiraObject

REQUERIDO: Carteira utilizada



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

def carteira
  @carteira
end

#carteira_labelObject

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



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

def carteira_label
  @carteira_label
end

#cedenteObject

REQUERIDO: Nome do beneficiário



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

def cedente
  @cedente
end

#cedente_enderecoObject

OPCIONAL: Endereço do beneficiário



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

def cedente_endereco
  @cedente_endereco
end

#codigo_servicoObject

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



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

def codigo_servico
  @codigo_servico
end

#conta_correnteObject

REQUERIDO: Número da conta corrente sem Digito Verificador



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

def conta_corrente
  @conta_corrente
end

#convenioObject

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



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

def convenio
  @convenio
end

#data_documentoObject

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



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

def data_documento
  @data_documento
end

#data_processamentoObject

OPCIONAL: Data de processamento do boleto



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

def data_processamento
  @data_processamento
end

#data_vencimentoObject

REQUERIDO: Data de vencimento do boleto



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

def data_vencimento
  @data_vencimento
end

#demonstrativoObject

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



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

def demonstrativo
  @demonstrativo
end

#documento_cedenteObject

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



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

def documento_cedente
  @documento_cedente
end

#documento_numeroObject

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



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

def documento_numero
  @documento_numero
end

#emvObject

OPCIONAL: EMV para gerar QRCode para pagamento via PIX



93
94
95
# File 'lib/brcobranca/boleto/base.rb', line 93

def emv
  @emv
end

#especieObject

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



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

def especie
  @especie
end

#especie_documentoObject

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



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

def especie_documento
  @especie_documento
end

#instrucao1Object

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



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

def instrucao1
  @instrucao1
end

#instrucao2Object

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



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

def instrucao2
  @instrucao2
end

#instrucao3Object

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



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

def instrucao3
  @instrucao3
end

#instrucao4Object

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



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

def instrucao4
  @instrucao4
end

#instrucao5Object

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



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

def instrucao5
  @instrucao5
end

#instrucao6Object

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



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

def instrucao6
  @instrucao6
end

#instrucao7Object

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



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

def instrucao7
  @instrucao7
end

#instrucoesObject

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



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

def instrucoes
  @instrucoes
end

#local_pagamentoObject

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



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

def local_pagamento
  @local_pagamento
end

#moedaObject

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



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

def moeda
  @moeda
end

#nosso_numeroObject

OPCIONAL: Número sequencial utilizado para identificar o boleto



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

def nosso_numero
  @nosso_numero
end

#quantidadeObject

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



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

def quantidade
  @quantidade
end

#sacadoObject

REQUERIDO: Nome do pagador



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

def sacado
  @sacado
end

#sacado_documentoObject

REQUERIDO: Documento do pagador



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

def sacado_documento
  @sacado_documento
end

#sacado_enderecoObject

OPCIONAL: Endereco do pagador



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

def sacado_endereco
  @sacado_endereco
end

#valorObject

REQUERIDO: Valor do boleto



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

def valor
  @valor
end

#variacaoObject

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



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

def variacao
  @variacao
end

Instance Method Details

#agencia_conta_boletoObject

This method is abstract.

Deverá ser sobreescrito para cada banco.



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

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.



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

def agencia_dv
  agencia.modulo11
end

#banco_dvInteger

Dígito verificador do banco

Returns:

  • (Integer)

    1 caracteres numéricos.



136
137
138
# File 'lib/brcobranca/boleto/base.rb', line 136

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:



205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# File 'lib/brcobranca/boleto/base.rb', line 205

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) }

    "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}"

  else
    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.



229
230
231
# File 'lib/brcobranca/boleto/base.rb', line 229

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.



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

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.



182
183
184
# File 'lib/brcobranca/boleto/base.rb', line 182

def fator_vencimento
  data_vencimento.fator_vencimento
end

#logotipoPath

Logotipo do banco

Returns:

  • (Path)

    Caminho para o arquivo de logotipo do banco.



126
127
128
129
130
131
132
# File 'lib/brcobranca/boleto/base.rb', line 126

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.



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

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.



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

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

#valor_documentoFloat

Valor total do documento: quantidate * valor

Returns:

  • (Float)


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

def valor_documento
  quantidade.to_f * valor.to_f
end