Class: BoletoBancario::Core::Banrisul

Inherits:
Boleto
  • Object
show all
Defined in:
lib/boleto_bancario/core/banrisul.rb

Overview

Implementação de emissão de boleto bancário do Banrisul.

Documentação Implementada

A documentação na qual essa implementação foi baseada está localizada na pasta ‘documentacoes_dos_boletos/banrisul’ dentro dessa biblioteca.

Contrato das classes de emissão de boletos

Para ver o “contrato” da Emissão de Boletos (geração de código de barras, linha digitável, etc) veja a classe BoletoBancario::Core::Boleto.

Carteiras Suportadas

00 - CCB sem registro 08 - CCB com registro

Usage

class BoletoBanrisul < BoletoBancario::Banrisul
end

boleto = BoletoBanrisul.new do |boleto|
  boleto.numero_documento      = 22832563
  boleto.agencia               = 100
  boleto.data_vencimento       = Date.parse('2004-07-04')
  boleto.codigo_cedente        = "0000001"
  boleto.valor_documento       = 5.0
end

Instance Attribute Summary

Attributes inherited from Boleto

#aceite, #cedente, #codigo_moeda, #conta_corrente, #data_documento, #data_vencimento, #documento_cedente, #documento_sacado, #endereco_cedente, #endereco_sacado, #especie, #especie_documento, #instrucoes1, #instrucoes2, #instrucoes3, #instrucoes4, #instrucoes5, #instrucoes6, #local_pagamento, #logo, #sacado, #valor_documento

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Boleto

#aceite_formatado, #carteira_formatada, #codigo_banco_formatado, #codigo_de_barras, #codigo_de_barras_padrao, #data_vencimento_deve_ser_uma_data, #default_options, #deve_validar_agencia?, #deve_validar_carteira?, #deve_validar_codigo_cedente?, #deve_validar_conta_corrente?, #deve_validar_numero_documento?, #digito_codigo_de_barras, #fator_de_vencimento, #initialize, #linha_digitavel, #persisted?, #to_partial_path, valor_documento_tamanho_maximo, #valor_formatado_para_codigo_de_barras

Constructor Details

This class inherits a constructor from BoletoBancario::Core::Boleto

Class Method Details

.carteiras_suportadasArray

Carteiras suportadas.

Método criado para validar se a carteira informada é suportada.

Returns:

  • (Array)


67
68
69
# File 'lib/boleto_bancario/core/banrisul.rb', line 67

def self.carteiras_suportadas
  %w[00 08]
end

.maximo_agenciaFixnum

Tamanho máximo de uma agência no Banrisul (sem número de controle). Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.

Returns:

  • (Fixnum)

    3



39
40
41
# File 'lib/boleto_bancario/core/banrisul.rb', line 39

def self.maximo_agencia
  3
end

.maximo_codigo_cedenteFixnum

Tamanho máximo do código cedente. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.

Returns:

  • (Fixnum)

    4



48
49
50
# File 'lib/boleto_bancario/core/banrisul.rb', line 48

def self.maximo_codigo_cedente
  7
end

.maximo_numero_documentoFixnum

Tamanho máximo do número do documento. Método criado justamente para ficar documentado o tamanho máximo aceito até a data corrente.

Returns:

  • (Fixnum)

    8



57
58
59
# File 'lib/boleto_bancario/core/banrisul.rb', line 57

def self.maximo_numero_documento
  8
end

Instance Method Details

#agenciaString

Returns 3 caracteres.

Returns:

  • (String)

    3 caracteres



81
82
83
# File 'lib/boleto_bancario/core/banrisul.rb', line 81

def agencia
  @agencia.to_s.rjust(3, '0') if @agencia.present?
end

#agencia_codigo_cedenteString

Retorna a Agencia, digito da agencia, código do cedente e o dígito do código do cedente.

Returns:

  • (String)


137
138
139
# File 'lib/boleto_bancario/core/banrisul.rb', line 137

def agencia_codigo_cedente
  "#{agencia}.#{digito_agencia} #{codigo_cedente}.#{digito_codigo_cedente}"
end

#carteiraString

Returns 2 caracteres.

Returns:

  • (String)

    2 caracteres



99
100
101
# File 'lib/boleto_bancario/core/banrisul.rb', line 99

def carteira
  @carteira.to_s.rjust(2, '0') if @carteira.present?
end

#codigo_bancoString

Returns Código do Banco descrito na documentação.

Returns:

  • (String)

    Código do Banco descrito na documentação.



105
106
107
# File 'lib/boleto_bancario/core/banrisul.rb', line 105

def codigo_banco
  '041'
end

#codigo_cedenteString

Returns 7 caracteres.

Returns:

  • (String)

    7 caracteres



93
94
95
# File 'lib/boleto_bancario/core/banrisul.rb', line 93

def codigo_cedente
  @codigo_cedente.to_s.rjust(7, '0') if @codigo_cedente.present?
end

#codigo_de_barras_do_bancoObject

Código de barras do banco

 ________________________________________________________________________________________________
| Posição | Tamanho | Descrição                                                                 |
|---------|---------|---------------------------------------------------------------------------|
| 20      |  01     | Tipo da cobrança do produto (mais detalhes veja #tipo_da_cobranca)        |
| 21      |  01     | Constante '1'                                                             |
| 22-24   |  03     | Agência (sem número de controle)                                          |
| 25-31   |  07     | Código do Cedente (sem número de controle)                                |
| 32-39   |  08     | Nosso número (número do documento sem número de controle)                 |
| 40-42   |  03     | Constante '041'                                                           |
| 43-44   |  02     | Duplo Dígito referente às posições 20 a 42 (módulo do numero de controle) |
------------------------------------------------------------------------------------------------|


165
166
167
168
# File 'lib/boleto_bancario/core/banrisul.rb', line 165

def codigo_de_barras_do_banco
  codigo = "#{tipo_da_cobranca}1#{agencia}#{codigo_cedente}#{numero_documento}041"
  "#{codigo}#{ModuloNumeroDeControle.new(codigo)}"
end

#digito_agenciaString

Dígito do código da agência. Precisa mostrar esse dígito no boleto.

Returns:

  • (String)

    Dígito da agência calculado apartir do ModuloNumeroDeControle.



121
122
123
# File 'lib/boleto_bancario/core/banrisul.rb', line 121

def digito_agencia
  ModuloNumeroDeControle.new(agencia)
end

#digito_codigo_bancoString

Dígito do código do banco. Precisa mostrar esse dígito no boleto.

Returns:

  • (String)

    Dígito do código do banco descrito na documentação.



113
114
115
# File 'lib/boleto_bancario/core/banrisul.rb', line 113

def digito_codigo_banco
  '8'
end

#digito_codigo_cedenteString

Dígito do código do cedente. Precisa mostrar esse dígito no boleto.

Returns:

  • (String)

    Dígito do código do cedente calculado apartir do ModuloNumeroDeControle.



129
130
131
# File 'lib/boleto_bancario/core/banrisul.rb', line 129

def digito_codigo_cedente
  ModuloNumeroDeControle.new(codigo_cedente)
end

#nosso_numeroString

Retorna o número do documento com seu número de controle.

Para mais detalhes do cálculo, veja a classe ModuloNumeroDeControle.

Returns:

  • (String)


147
148
149
# File 'lib/boleto_bancario/core/banrisul.rb', line 147

def nosso_numero
  "#{numero_documento}.#{ModuloNumeroDeControle.new(numero_documento)}"
end

#numero_documentoString

Returns 8 caracteres.

Returns:

  • (String)

    8 caracteres



87
88
89
# File 'lib/boleto_bancario/core/banrisul.rb', line 87

def numero_documento
  @numero_documento.to_s.rjust(8, '0') if @numero_documento.present?
end

#tipo_da_cobrancaString

Tipo da cobranca do boleto

“1” Cobrança Normal, Fichário emitido pelo BANRISUL. “2” Cobrança Direta, Fichário emitido pelo CLIENTE.

Returns:

  • (String)


177
178
179
# File 'lib/boleto_bancario/core/banrisul.rb', line 177

def tipo_da_cobranca
  "2"
end