Class: BoletoBancario::Core::Hsbc

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

Overview

Implementação de emissão de boleto bancário pelo Banco HSBC.

Documentação Implementada

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

Carteiras

 ______________________________________________
| Carteira | Descrição               | Produto |
|    CNR   | Cobrança não Registrada |    2    |
|______________________________________________|

Instance Attribute Summary

Attributes inherited from Boleto

#aceite, #agencia, #carteira, #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)


41
42
43
# File 'lib/boleto_bancario/core/hsbc.rb', line 41

def self.carteiras_suportadas
  %w[CNR]
end

.tamanho_maximo_codigo_cedenteFixnum

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

Returns:

  • (Fixnum)

    7



23
24
25
# File 'lib/boleto_bancario/core/hsbc.rb', line 23

def self.tamanho_maximo_codigo_cedente
  7
end

.tamanho_maximo_numero_documentoFixnum

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

Returns:

  • (Fixnum)

    13



32
33
34
# File 'lib/boleto_bancario/core/hsbc.rb', line 32

def self.tamanho_maximo_numero_documento
  13
end

Instance Method Details

#agencia_codigo_cedenteString

Campo Agência / Código do Cedente

Returns:

  • (String)


106
107
108
# File 'lib/boleto_bancario/core/hsbc.rb', line 106

def agencia_codigo_cedente
  "#{codigo_cedente}"
end

#codigo_bancoString

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

Returns:

  • (String)

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



92
93
94
# File 'lib/boleto_bancario/core/hsbc.rb', line 92

def codigo_banco
  '399'
end

#codigo_cedenteString

Returns 7 caracteres.

Returns:

  • (String)

    7 caracteres



76
77
78
# File 'lib/boleto_bancario/core/hsbc.rb', line 76

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

#codigo_de_barras_do_bancoString

Código de barras do banco

 _______________________________________________________________________________________
| Posição  | Tamanho | Descrição                                                        |
|----------|---------|------------------------------------------------------------------|
| 20 - 26  |   07    | Código do Cedente                                                |
| 27 - 39  |   13    | Código do Documento                                              |
| 40 - 43  |   04    | Data de Vencimento no Formato Juliano.                           |
| 44 – 44  |   01    | Código do Produto CNR, número 2.                                 |
|_______________________________________________________________________________________|

Returns:

  • (String)


157
158
159
# File 'lib/boleto_bancario/core/hsbc.rb', line 157

def codigo_de_barras_do_banco
  "#{codigo_cedente}#{numero_documento}#{data_vencimento_formato_juliano}#{produto}"
end

#data_vencimento_formato_julianoString

Data do vencimento no formato Juliano composta por 4 dígitos

Returns:

  • (String)


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

def data_vencimento_formato_juliano
  "#{@data_vencimento.yday.to_s.rjust(3, '0')}#{@data_vencimento.year.to_s.last}" if @data_vencimento.present?
end

#data_vencimento_para_calculoString

Data do vencimento para ser usada no calculo do segundto dígito identificador do nosso numero

Exemplo: 18/03/2015 => 180315

Returns:

  • (String)


140
141
142
# File 'lib/boleto_bancario/core/hsbc.rb', line 140

def data_vencimento_para_calculo
  @data_vencimento.strftime('%d%m%y') if @data_vencimento.present?
end

#digito_codigo_bancoString

Returns Não possui dígito do código do banco.

Returns:

  • (String)

    Não possui dígito do código do banco.



98
99
100
# File 'lib/boleto_bancario/core/hsbc.rb', line 98

def digito_codigo_banco
  '9'
end

#nosso_numeroString

Nosso numero calculado pelo Tipo Identificador 4 descrito na documentação

Returns:

  • (String)


114
115
116
# File 'lib/boleto_bancario/core/hsbc.rb', line 114

def nosso_numero
  "#{numero_documento}#{nosso_numero_dv_1}#{tipo_identificador}#{nosso_numero_dv_2}"
end

#nosso_numero_dv_1Object



118
119
120
# File 'lib/boleto_bancario/core/hsbc.rb', line 118

def nosso_numero_dv_1
  Modulo11FatorDe9a2.new(numero_documento)
end

#nosso_numero_dv_2Object



126
127
128
129
130
131
132
# File 'lib/boleto_bancario/core/hsbc.rb', line 126

def nosso_numero_dv_2
  soma = "#{numero_documento}#{nosso_numero_dv_1}#{tipo_identificador}".to_i
  soma += codigo_cedente.to_i
  soma += data_vencimento_para_calculo.to_i

  Modulo11FatorDe9a2.new(soma)
end

#numero_documentoString

Returns 13 caracteres.

Returns:

  • (String)

    13 caracteres



82
83
84
# File 'lib/boleto_bancario/core/hsbc.rb', line 82

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

#produtoObject



86
87
88
# File 'lib/boleto_bancario/core/hsbc.rb', line 86

def produto
  '2'
end

#tipo_identificadorObject



122
123
124
# File 'lib/boleto_bancario/core/hsbc.rb', line 122

def tipo_identificador
  4
end