Class: Brcobranca::Boleto::Caixa

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/boleto/caixa.rb

Overview

Caixa

Instance Attribute Summary collapse

Attributes inherited from Base

#aceite, #agencia, #avalista, #avalista_documento, #carteira, #carteira_label, #cedente, #cedente_endereco, #codigo_servico, #conta_corrente, #convenio, #data_documento, #data_processamento, #data_vencimento, #demonstrativo, #documento_cedente, #documento_numero, #especie, #especie_documento, #instrucao1, #instrucao2, #instrucao3, #instrucao4, #instrucao5, #instrucao6, #instrucao7, #instrucoes, #local_pagamento, #moeda, #nosso_numero, #quantidade, #sacado, #sacado_documento, #sacado_endereco, #valor, #variacao

Instance Method Summary collapse

Methods inherited from Base

#agencia_dv, #codigo_barras, #conta_corrente_dv, #fator_vencimento, #logotipo, #valor_documento

Methods included from Template::Base

#define_template

Methods included from Validations

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

Constructor Details

#initialize(campos = {}) ⇒ Caixa

Nova instância da CaixaEconomica

Parameters:

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

24
25
26
27
28
29
30
31
32
33
34
# File 'lib/brcobranca/boleto/caixa.rb', line 24

def initialize(campos = {})
  campos = {
    carteira: '1',
    carteira_label: 'RG',
    emissao: '4'
  }.merge!(campos)

  campos[:local_pagamento] = 'PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE'

  super(campos)
end

Instance Attribute Details

#emissaoObject

REQUERIDO: Emissão do boleto


12
13
14
# File 'lib/brcobranca/boleto/caixa.rb', line 12

def emissao
  @emissao
end

Instance Method Details

#agencia_conta_boletoString

Número da agência/código cedente do cliente para exibir no boleto.

Examples:

boleto.agencia_conta_boleto #=> "1565/100000-4"

Returns:

  • (String)

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

def agencia_conta_boleto
  "#{agencia}/#{convenio}-#{convenio_dv}"
end

#bancoString

Código do banco emissor

Returns:

  • (String)

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

def banco
  '104'
end

#banco_dvString

Dígito verificador do código do banco em módulo 10 Módulo 10 de 104 é 0

Returns:

  • (String)

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

def banco_dv
  '0'
end

#codigo_barras_segunda_parteString

Monta a segunda parte do código de barras.

1 à 6: código do cedente, também conhecido como convênio
7: dígito verificador do código do cedente
8 à 10: dígito 3 à 5 do nosso número
11: dígito 1 do nosso número (modalidade da cobrança)
12 à 14: dígito 6 à 8 do nosso número
15: dígito 2 do nosso número (emissão do boleto)
16 à 24: dígito 9 à 17 do nosso número
25: dígito verificador do campo livre

Returns:

  • (String)

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/brcobranca/boleto/caixa.rb', line 104

def codigo_barras_segunda_parte
  campo_livre = "#{convenio}" \
  "#{convenio_dv}" \
  "#{nosso_numero_boleto[2..4]}" \
  "#{nosso_numero_boleto[0..0]}" \
  "#{nosso_numero_boleto[5..7]}" \
  "#{nosso_numero_boleto[1..1]}" \
  "#{nosso_numero_boleto[8..16]}"

  campo_livre.to_s +
    campo_livre.modulo11(
      multiplicador: (2..9).to_a,
      mapeamento: { 10 => 0, 11 => 0 }
    ) { |total| 11 - (total % 11) }.to_s
end

#convenio=(valor) ⇒ String

Número do convênio/contrato do cliente junto ao banco.

Returns:

  • (String)

    6 caracteres numéricos.


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

def convenio=(valor)
  @convenio = valor.to_s.rjust(6, '0') if valor
end

#convenio_dvString

Dígito verificador do convênio ou código do cedente

Returns:

  • (String)

87
88
89
90
91
92
# File 'lib/brcobranca/boleto/caixa.rb', line 87

def convenio_dv
  convenio.modulo11(
    multiplicador: (2..9).to_a,
    mapeamento: { 10 => 0, 11 => 0 }
  ) { |total| 11 - (total % 11) }.to_s
end

#nosso_numero=(valor) ⇒ String

Número seqüencial utilizado para identificar o boleto.

Returns:

  • (String)

    15 caracteres numéricos.


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

def nosso_numero=(valor)
  @nosso_numero = valor.to_s.rjust(15, '0') if valor
end

#nosso_numero_boletoString

Nosso número, 17 dígitos

Returns:

  • (String)

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

def nosso_numero_boleto
  "#{carteira}#{emissao}#{nosso_numero}-#{nosso_numero_dv}"
end

#nosso_numero_dvString

Dígito verificador do Nosso Número Utiliza-se o [-1..-1] para retornar o último caracter

Returns:

  • (String)

70
71
72
73
74
75
# File 'lib/brcobranca/boleto/caixa.rb', line 70

def nosso_numero_dv
  "#{carteira}#{emissao}#{nosso_numero}".modulo11(
    multiplicador: (2..9).to_a,
    mapeamento: { 10 => 0, 11 => 0 }
  ) { |total| 11 - (total % 11) }.to_s
end