Class: Brcobranca::Boleto::Hsbc

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

Overview

Banco HSBC

Instance Attribute Summary

Attributes inherited from Base

#aceite, #agencia, #carteira, #cedente, #codigo_servico, #conta_corrente, #convenio, #data_documento, #data_processamento, #dias_vencimento, #documento_cedente, #especie, #especie_documento, #instrucao1, #instrucao2, #instrucao3, #instrucao4, #instrucao5, #instrucao6, #instrucao7, #local_pagamento, #moeda, #numero_documento, #quantidade, #sacado, #sacado_documento, #sacado_endereco, #valor, #variacao

Instance Method Summary collapse

Methods inherited from Base

#agencia_dv, #banco_dv, #codigo_barras, #conta_corrente_dv, #data_vencimento, #fator_vencimento, #logotipo, #nosso_numero_dv, #valor_documento

Methods included from Template::Base

#define_template

Constructor Details

#initialize(campos = {}) ⇒ Hsbc

Nova instancia do Hsbc

Parameters:

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


13
14
15
16
# File 'lib/brcobranca/boleto/hsbc.rb', line 13

def initialize(campos={})
  campos = {:carteira => "CNR"}.merge!(campos)
  super(campos)
end

Instance Method Details

#agencia_conta_boletoString

Número do convênio/contrato do cliente para exibir no boleto.

Examples:

boleto.agencia_conta_boleto #=> "0061900"

Returns:

  • (String)


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

def agencia_conta_boleto
  self.conta_corrente
end

#bancoString

Codigo do banco emissor (3 dígitos sempre)

Returns:

  • (String)

    3 caracteres numéricos.



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

def banco
  "399"
end

#codigo_barras_segunda_parteString

Segunda parte do código de barras.

Montagem é baseada no tipo de carteira e na presença da data de vencimento<br/> OBS: Somente a carteira CNR está implementada.<br/>

Returns:

  • (String)

    25 caracteres numéricos.

Raises:



84
85
86
87
88
89
90
91
# File 'lib/brcobranca/boleto/hsbc.rb', line 84

def codigo_barras_segunda_parte
  if self.carteira == "CNR"
    dias_julianos = self.data_vencimento.to_juliano
    "#{self.conta_corrente}#{self.numero_documento}#{dias_julianos}2"
  else
    raise Brcobranca::NaoImplementado.new("Tipo de carteira não implementado.")
  end
end

#nosso_numeroString

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

Montagem é baseada na presença da data de vencimento.<br/> OBS: Somente a carteira CNR está implementada.<br/>

Returns:

  • (String)

Raises:



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/brcobranca/boleto/hsbc.rb', line 38

def nosso_numero
  if self.data_vencimento.kind_of?(Date)
    self.codigo_servico = "4"
    dia = self.data_vencimento.day.to_s.rjust(2,'0')
    mes = self.data_vencimento.month.to_s.rjust(2,'0')
    ano = self.data_vencimento.year.to_s[2..3]
    data = "#{dia}#{mes}#{ano}"

    parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11_9to2_10_como_zero}#{self.codigo_servico}"
    soma = parte_1.to_i + self.conta_corrente.to_i + data.to_i
    numero = "#{parte_1}#{soma.to_s.modulo11_9to2_10_como_zero}"
    numero
  else
    raise Brcobranca::NaoImplementado.new("Tipo de carteira não implementado.")
    # TODO - Verificar outras carteiras.
    # self.codigo_servico = "5"
    # parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11_9to2_10_como_zero}#{self.codigo_servico}"
    # soma = parte_1.to_i + self.conta_corrente.to_i
    # numero = "#{parte_1}#{soma.to_s.modulo11_9to2_10_como_zero}"
    # numero
  end
end

#nosso_numero_boletoString

Nosso número para exibir no boleto.

Examples:

boleto.nosso_numero_boleto #=> "0000000004042847"

Returns:

  • (String)


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

def nosso_numero_boleto
  self.nosso_numero
end

#numero_documento=(valor) ⇒ String

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

Returns:

  • (String)

    13 caracteres numéricos.



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

def numero_documento=(valor)
  @numero_documento = valor.to_s.rjust(13,'0') unless valor.nil?
end