Class: BancoBrasil
- Inherits:
-
Brcobranca::Boleto::Base
- Object
- Brcobranca::Boleto::Base
- BancoBrasil
- Defined in:
- lib/brcobranca/boleto/banco_brasil.rb
Overview
Banco do Brasil
Instance Attribute Summary
Attributes inherited from Brcobranca::Boleto::Base
#aceite, #agencia, #banco, #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
-
#agencia_conta_boleto ⇒ Object
Campo usado apenas na exibição no boleto Deverá ser sobreescrito para cada banco.
-
#agencia_dv ⇒ Object
Retorna digito verificador da agencia, calculado com modulo11 de 9 para 2, porem em caso de resultado ser 10, usa-se ‘X’.
-
#banco_dv ⇒ Object
Retorna digito verificador do banco, calculado com modulo11 de 9 para 2, porem em caso de resultado ser 10, usa-se ‘X’.
-
#conta_corrente_dv ⇒ Object
Retorna digito verificador da conta corrente, calculado com modulo11 de 9 para 2, porem em caso de resultado ser 10, usa-se ‘X’.
-
#initialize(campos = {}) ⇒ BancoBrasil
constructor
Responsável por definir dados iniciais quando se cria uma nova intância da classe BancoBrasil.
-
#monta_codigo_43_digitos ⇒ Object
Responsavel por montar uma String com 43 caracteres que será usado na criacao do codigo de barras.
-
#nosso_numero_boleto ⇒ Object
Campo usado apenas na exibição no boleto Deverá ser sobreescrito para cada banco.
-
#nosso_numero_dv ⇒ Object
Retorna digito verificador do nosso numero, calculado com modulo11 de 9 para 2, porem em caso de resultado ser 10, usa-se ‘X’ Inclui ainda o numero do convenio no calculo.
Methods inherited from Brcobranca::Boleto::Base
#codigo_barras, #data_vencimento, #nosso_numero, #valor_documento
Constructor Details
#initialize(campos = {}) ⇒ BancoBrasil
Responsável por definir dados iniciais quando se cria uma nova intância da classe BancoBrasil
5 6 7 8 9 |
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 5 def initialize(campos={}) padrao={:carteira => "18", :banco => "001", :codigo_servico => false} campos = padrao.merge!(campos) super(campos) end |
Instance Method Details
#agencia_conta_boleto ⇒ Object
Campo usado apenas na exibição no boleto
Deverá ser sobreescrito para cada banco
40 41 42 |
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 40 def agencia_conta_boleto "#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}" end |
#agencia_dv ⇒ Object
Retorna digito verificador da agencia, calculado com modulo11 de 9 para 2, porem em caso de resultado ser 10, usa-se ‘X’
17 18 19 |
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 17 def agencia_dv self.agencia.modulo11_9to2_10_como_x end |
#banco_dv ⇒ Object
Retorna digito verificador do banco, calculado com modulo11 de 9 para 2, porem em caso de resultado ser 10, usa-se ‘X’
12 13 14 |
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 12 def banco_dv self.banco.modulo11_9to2_10_como_x end |
#conta_corrente_dv ⇒ Object
Retorna digito verificador da conta corrente, calculado com modulo11 de 9 para 2, porem em caso de resultado ser 10, usa-se ‘X’
22 23 24 |
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 22 def conta_corrente_dv self.conta_corrente.modulo11_9to2_10_como_x end |
#monta_codigo_43_digitos ⇒ Object
Responsavel por montar uma String com 43 caracteres que será usado na criacao do codigo de barras
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 45 def monta_codigo_43_digitos banco = self.banco.zeros_esquerda(:tamanho => 3) valor_documento = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10) convenio = self.convenio.to_s fator = self.data_vencimento.fator_vencimento # A montagem é feita baseada na quantidade de dígitos do convênio. case convenio.size when 8 # Nosso Numero de 17 dígitos com Convenio de 8 dígitos e numero_documento de 9 dígitos numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 9) raise "Seu complemento está com #{numero_documento.size} dígitos. Com convênio de 8 dígitos, somente permite-se até 9 dígitos no numero_documento do nosso numero." if numero_documento.size > 9 numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{convenio}#{numero_documento}#{self.carteira}" when 7 # Nosso Numero de 17 dígitos com Convenio de 7 dígitos e numero_documento de 10 dígitos numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 10) raise "Seu complemento está com #{numero_documento.size} dígitos. Com convênio de 7 dígitos, somente permite-se até 10 dígitos no numero_documento do nosso numero." if numero_documento.size > 10 numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{convenio}#{numero_documento}#{self.carteira}" when 6 # Convenio de 6 dígitos if self.codigo_servico == false # Nosso Numero de 11 dígitos com Convenio de 6 dígitos e numero_documento de 5 digitos numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 5) raise "Seu numero_documento está com #{numero_documento.size} dígitos. Com convênio de 6 dígitos, somente permite-se até 5 dígitos no numero_documento do nosso numero. Para emitir boletos com nosso numero de 17 dígitos, coloque o atributo codigo_servico=true" if numero_documento.size > 5 agencia = self.agencia.zeros_esquerda(:tamanho => 4) conta = self.conta_corrente.zeros_esquerda(:tamanho => 8) numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}#{agencia}#{conta}#{self.carteira}" else # Nosso Numero de 17 dígitos com Convenio de 6 dígitos e sem numero_documento, carteira 16 e 18 numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 17) raise "Seu numero_documento está com #{numero_documento.size} dígitos. Com convênio de 6 dígitos, somente permite-se até 17 dígitos no numero_documento do nosso numero." if (numero_documento.size > 17) raise "Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é #{self.carteira}" unless (["16","18"].include?(self.carteira)) numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}21" end when 4 # Nosso Numero de 7 dígitos com Convenio de 4 dígitos e sem numero_documento numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 7) raise "Seu numero_documento está com #{numero_documento.size} dígitos. Com convênio de 4 dígitos, somente permite-se até 7 dígitos no numero_documento do nosso numero." if numero_documento.size > 7 agencia = self.agencia.zeros_esquerda(:tamanho => 4) conta = self.conta_corrente.zeros_esquerda(:tamanho => 8) numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}#{agencia}#{conta}#{self.carteira}" else numero = "" end numero.size == 43 ? numero : nil end |
#nosso_numero_boleto ⇒ Object
Campo usado apenas na exibição no boleto
Deverá ser sobreescrito para cada banco
34 35 36 |
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 34 def nosso_numero_boleto "#{self.convenio}#{self.numero_documento}-#{self.nosso_numero_dv}" end |
#nosso_numero_dv ⇒ Object
Retorna digito verificador do nosso numero, calculado com modulo11 de 9 para 2, porem em caso de resultado ser 10, usa-se ‘X’ Inclui ainda o numero do convenio no calculo
28 29 30 |
# File 'lib/brcobranca/boleto/banco_brasil.rb', line 28 def nosso_numero_dv "#{self.convenio}#{self.numero_documento}".modulo11_9to2_10_como_x end |