Skip to content
Browse files

incluindo boletos para banco real

  • Loading branch information...
1 parent 57645f8 commit 34a66c01c15639424b4cdd5375b7d0b7eadc9369 @kivanio kivanio committed Apr 21, 2009
View
8 History.txt
@@ -1,3 +1,11 @@
+== 2.0.2 21-04-2009
+
+* Incluindo cobranca do banco real(com e sem registro)
+
+== 2.0.1 19-04-2009
+
+* Ajustes finais para lancamento
+
== 2.0.0 06-04-2009
* 1 acts_as_payment torna-se brcobranca:
View
3 Manifest.txt
@@ -8,10 +8,12 @@ lib/brcobranca.rb
lib/brcobranca/arquivos/logos/bb.jpg
lib/brcobranca/arquivos/logos/hsbc.jpg
lib/brcobranca/arquivos/logos/itau.jpg
+lib/brcobranca/arquivos/logos/real.jpg
lib/brcobranca/arquivos/templates/modelo_generico.eps
lib/brcobranca/boleto/banco_brasil.rb
lib/brcobranca/boleto/banco_hsbc.rb
lib/brcobranca/boleto/banco_itau.rb
+lib/brcobranca/boleto/banco_real.rb
lib/brcobranca/boleto/base.rb
lib/brcobranca/boleto/template/rghost.rb
lib/brcobranca/boleto/template/util.rb
@@ -27,6 +29,7 @@ test/arquivos/CBR64310.RET
test/test_banco_brasil.rb
test/test_banco_hsbc.rb
test/test_banco_itau.rb
+test/test_banco_real.rb
test/test_base.rb
test/test_core_ext.rb
test/test_currency.rb
View
8 brcobranca.gemspec
@@ -2,16 +2,16 @@
Gem::Specification.new do |s|
s.name = %q{brcobranca}
- s.version = "2.0.1"
+ s.version = "2.0.2"
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Kivanio Barbosa"]
s.cert_chain = ["/Users/kivanio/.gem/gem-public_cert.pem"]
- s.date = %q{2009-04-19}
+ s.date = %q{2009-04-21}
s.description = %q{Gem para emissão de bloquetos de cobrança de bancos brasileiros.}
s.email = ["kivanio@gmail.com"]
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc", "website/index.txt"]
- s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "brcobranca.gemspec", "config/website.yml", "lib/brcobranca.rb", "lib/brcobranca/arquivos/logos/bb.jpg", "lib/brcobranca/arquivos/logos/hsbc.jpg", "lib/brcobranca/arquivos/logos/itau.jpg", "lib/brcobranca/arquivos/templates/modelo_generico.eps", "lib/brcobranca/boleto/banco_brasil.rb", "lib/brcobranca/boleto/banco_hsbc.rb", "lib/brcobranca/boleto/banco_itau.rb", "lib/brcobranca/boleto/base.rb", "lib/brcobranca/boleto/template/rghost.rb", "lib/brcobranca/boleto/template/util.rb", "lib/brcobranca/config.rb", "lib/brcobranca/core_ext.rb", "lib/brcobranca/currency.rb", "lib/brcobranca/retorno/retorno_cbr643.rb", "script/console", "script/destroy", "script/generate", "script/txt2html", "test/arquivos/CBR64310.RET", "test/test_banco_brasil.rb", "test/test_banco_hsbc.rb", "test/test_banco_itau.rb", "test/test_base.rb", "test/test_core_ext.rb", "test/test_currency.rb", "test/test_helper.rb", "test/test_retorno_cbr643.rb", "website/index.html", "website/index.txt", "website/javascripts/rounded_corners_lite.inc.js", "website/stylesheets/screen.css", "website/template.html.erb"]
+ s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "brcobranca.gemspec", "config/website.yml", "lib/brcobranca.rb", "lib/brcobranca/arquivos/logos/bb.jpg", "lib/brcobranca/arquivos/logos/hsbc.jpg", "lib/brcobranca/arquivos/logos/itau.jpg", "lib/brcobranca/arquivos/logos/real.jpg", "lib/brcobranca/arquivos/templates/modelo_generico.eps", "lib/brcobranca/boleto/banco_brasil.rb", "lib/brcobranca/boleto/banco_hsbc.rb", "lib/brcobranca/boleto/banco_itau.rb", "lib/brcobranca/boleto/banco_real.rb", "lib/brcobranca/boleto/base.rb", "lib/brcobranca/boleto/template/rghost.rb", "lib/brcobranca/boleto/template/util.rb", "lib/brcobranca/config.rb", "lib/brcobranca/core_ext.rb", "lib/brcobranca/currency.rb", "lib/brcobranca/retorno/retorno_cbr643.rb", "script/console", "script/destroy", "script/generate", "script/txt2html", "test/arquivos/CBR64310.RET", "test/test_banco_brasil.rb", "test/test_banco_hsbc.rb", "test/test_banco_itau.rb", "test/test_banco_real.rb", "test/test_base.rb", "test/test_core_ext.rb", "test/test_currency.rb", "test/test_helper.rb", "test/test_retorno_cbr643.rb", "website/index.html", "website/index.txt", "website/javascripts/rounded_corners_lite.inc.js", "website/stylesheets/screen.css", "website/template.html.erb"]
s.has_rdoc = true
s.homepage = %q{http://brcobranca.rubyforge.org}
s.rdoc_options = ["--main", "README.rdoc"]
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
s.rubygems_version = %q{1.3.2}
s.signing_key = %q{/Users/kivanio/.gem/gem-private_key.pem}
s.summary = %q{Gem para emissão de bloquetos de cobrança de bancos brasileiros.}
- s.test_files = ["test/test_banco_brasil.rb", "test/test_banco_hsbc.rb", "test/test_banco_itau.rb", "test/test_base.rb", "test/test_core_ext.rb", "test/test_currency.rb", "test/test_helper.rb", "test/test_retorno_cbr643.rb"]
+ s.test_files = ["test/test_banco_brasil.rb", "test/test_banco_hsbc.rb", "test/test_banco_itau.rb", "test/test_banco_real.rb", "test/test_base.rb", "test/test_core_ext.rb", "test/test_currency.rb", "test/test_helper.rb", "test/test_retorno_cbr643.rb"]
if s.respond_to? :specification_version then
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
View
4 lib/brcobranca.rb
@@ -2,7 +2,7 @@
%w(core_ext currency config).each {|req| require File.join(File.dirname(__FILE__),"brcobranca",req) }
-%w(base banco_brasil banco_itau banco_hsbc).each {|req| require File.join(File.dirname(__FILE__),"brcobranca","boleto",req) }
+%w(base banco_brasil banco_itau banco_hsbc banco_real).each {|req| require File.join(File.dirname(__FILE__),"brcobranca","boleto",req) }
%w(util rghost).each {|req| require File.join(File.dirname(__FILE__),"brcobranca","boleto","template",req) }
@@ -23,5 +23,5 @@ module Brcobranca::Boleto
end
module Brcobranca
- VERSION = '2.0.1'
+ VERSION = '2.0.2'
end
View
BIN lib/brcobranca/arquivos/logos/real.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
56 lib/brcobranca/boleto/banco_real.rb
@@ -0,0 +1,56 @@
+# Banco REAL
+class BancoReal < Brcobranca::Boleto::Base
+ # Responsável por definir dados iniciais quando se cria uma nova intancia da classe BancoReal
+ def initialize(campos={})
+ padrao={:carteira => "57", :banco => "356"}
+ campos = padrao.merge!(campos)
+ super(campos)
+ end
+
+ # CALCULO DO DIGITO:
+ # APLICA-SE OS PESOS 2,1,2,1,.... AOS ALGARISMOS DO NUMERO COMPOSTO POR:
+ # NUMERO DO BANCO : COM 7 DIGITOS P/ COBRANCA REGISTRADA
+ # ATE 15 DIGITOS P/ COBRANCA SEM REGISTRO
+ # CODIGO DA AGENCIA: 4 DIGITOS
+ # NUMERO DA CONTA : 7 DIGITOS
+ def agencia_conta_corrente_nosso_numero_dv
+ case self.carteira.to_i
+ when 57
+ #agencia é 4 digitos
+ agencia = self.agencia.zeros_esquerda(:tamanho => 4)
+ #conta é 7 digitos
+ conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
+ #nosso número com maximo de 13 digitos
+ numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 13)
+ "#{numero_documento}#{agencia}#{conta}".modulo10
+ else
+ #agencia é 4 digitos
+ agencia = self.agencia.zeros_esquerda(:tamanho => 4)
+ #conta é 7 digitos
+ conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
+ #nosso número com maximo de 13 digitos
+ numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 7)
+ "#{numero_documento}#{agencia}#{conta}".modulo10
+ end
+ end
+
+ # Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras
+ def monta_codigo_43_digitos
+ banco = self.banco.zeros_esquerda(:tamanho => 3)
+ valor_documento = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10)
+ conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
+ agencia = self.agencia.zeros_esquerda(:tamanho => 4)
+ fator = self.data_vencimento.fator_vencimento
+ # Montagem é baseada no tipo de carteira, com registro e sem registro
+ case self.carteira.to_i
+ # Carteira sem registro
+ when 57
+ numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 13)
+ "#{banco}#{self.moeda}#{fator}#{valor_documento}#{agencia}#{conta}#{self.agencia_conta_corrente_nosso_numero_dv}#{numero_documento}"
+ else
+ # TODO verificar com o banco, pois não consta na documentação
+ numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 7)
+ "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{agencia}#{conta}#{self.agencia_conta_corrente_nosso_numero_dv}#{numero_documento}"
+ end
+ end
+end
View
2 lib/brcobranca/boleto/template/util.rb
@@ -13,6 +13,8 @@ def monta_logo
imagem = 'itau.jpg'
when "BancoHsbc"
imagem = 'hsbc.jpg'
+ when "BancoReal"
+ imagem = 'real.jpg'
else
return false
end
View
8 lib/brcobranca/core_ext.rb
@@ -211,11 +211,11 @@ def fator_vencimento
def to_s_br
self.strftime('%d/%m/%Y')
end
- # Retorno string contendo número de dias julianos
+ # Retorna string contendo número de dias julianos:
# O cálculo é feito subtraindo-se a data atual, pelo último dia válido do ano anterior,
- # acrescentando-se o último algarismo do ano atual na quarta posição.
- # Deve retornar string com 4 digitos.
- # Ex. Data atual = 11/02/2009
+ # acrescentando-se o último algarismo do ano atual na quarta posição.
+ # Deve retornar string com 4 digitos.
+ # Ex. Data atual = 11/02/2009
# Data válida ano anterior = 31/12/2008
# (Data atual - Data válida ano anterior) = 42
# último algarismo do ano atual = 9
View
17 test/test_banco_hsbc.rb
@@ -13,6 +13,16 @@ def setup
@boleto_novo.valor = 2952.95
end
+ def boleto_carteira_cnr
+ @boleto_novo.carteira = "CNR"
+ @boleto_novo.agencia = "1234"
+ @boleto_novo.conta_corrente = "0016324"
+ @boleto_novo.numero_documento = "07778899"
+ @boleto_novo.dias_vencimento = 0
+ @boleto_novo.valor = 934.23
+ @boleto_novo.data_documento = Date.parse("2004-09-03")
+ end
+
def test_should_initialize_correctly
assert_equal '399', @boleto_novo.banco
assert_equal "DM", @boleto_novo.especie_documento
@@ -27,7 +37,7 @@ def test_should_initialize_correctly
assert_equal 2952.95, @boleto_novo.valor_documento
assert_equal "QUALQUER BANCO ATÉ O VENCIMENTO", @boleto_novo.local_pagamento
end
-
+
def test_should_return_correct_nosso_numero
@boleto_novo.conta_corrente = "1122334"
@boleto_novo.numero_documento = "12345678"
@@ -53,6 +63,9 @@ def test_should_mont_correct_codigo_barras
@boleto_novo.data_documento = Date.parse("2009-04-03")
assert_equal "3999420100002952951122334000001234567809892", @boleto_novo.monta_codigo_43_digitos
assert_equal "39998420100002952951122334000001234567809892", @boleto_novo.codigo_barras
+ boleto_carteira_cnr
+ assert_equal "3999252300000934230016324000000777889924742", @boleto_novo.monta_codigo_43_digitos
+ assert_equal "39993252300000934230016324000000777889924742", @boleto_novo.codigo_barras
end
def test_should_mont_correct_linha_digitalvel
@@ -61,6 +74,8 @@ def test_should_mont_correct_linha_digitalvel
@boleto_novo.dias_vencimento = 5
@boleto_novo.data_documento = Date.parse("2009-04-03")
assert_equal("39991.12232 34000.001239 45678.098927 8 42010000295295", @boleto_novo.codigo_barras.linha_digitavel)
+ boleto_carteira_cnr
+ assert_equal("39990.01633 24000.000778 78899.247429 3 25230000093423", @boleto_novo.codigo_barras.linha_digitavel)
end
end
View
112 test/test_banco_real.rb
@@ -0,0 +1,112 @@
+require File.join(File.dirname(__FILE__),'test_helper.rb')
+
+class BancoRealTest < Test::Unit::TestCase #:nodoc:[all]
+
+ def setup
+ @boleto_novo = BancoReal.new
+ @boleto_novo.cedente = "Kivanio Barbosa"
+ @boleto_novo.documento_cedente = "12345678912"
+ @boleto_novo.sacado = "Claudio Pozzebom"
+ @boleto_novo.sacado_documento = "12345678900"
+ @boleto_novo.aceite = "S"
+ @boleto_novo.agencia = "4042"
+ @boleto_novo.conta_corrente = "61900"
+ end
+
+ def boleto_carteira_registrada
+ @boleto_novo.banco = "356"
+ @boleto_novo.agencia = "4042"
+ @boleto_novo.conta_corrente = "61900"
+ @boleto_novo.carteira = "56"
+ @boleto_novo.moeda = "9"
+ @boleto_novo.valor = 135.00
+ @boleto_novo.numero_documento = "7701684"
+ @boleto_novo.data_documento = Date.parse("2008-02-01")
+ @boleto_novo.dias_vencimento = 0
+ end
+
+ def boleto_carteira_sem_registro
+ @boleto_novo.banco = "356"
+ @boleto_novo.agencia = "4042"
+ @boleto_novo.conta_corrente = "61900"
+ @boleto_novo.carteira = "57"
+ @boleto_novo.moeda = "9"
+ @boleto_novo.valor = 135.00
+ @boleto_novo.numero_documento = "777700168"
+ @boleto_novo.data_documento = Date.parse("2008-02-01")
+ @boleto_novo.dias_vencimento = 1
+ end
+
+ def boleto_carteira_sem_registro_2
+ @boleto_novo.banco = "356"
+ @boleto_novo.agencia = "1018"
+ @boleto_novo.conta_corrente = "0016324"
+ @boleto_novo.carteira = "57"
+ @boleto_novo.moeda = "9"
+ @boleto_novo.valor = 934.23
+ @boleto_novo.numero_documento = "00005020"
+ @boleto_novo.data_documento = Date.parse("2004-09-03")
+ @boleto_novo.dias_vencimento = 0
+ end
+
+ def boleto_nil
+ @boleto_novo.banco = ""
+ @boleto_novo.carteira = ""
+ @boleto_novo.moeda = ""
+ @boleto_novo.valor = 0
+ @boleto_novo.convenio = ""
+ @boleto_novo.numero_documento = ""
+ @boleto_novo.data_documento = Date.parse("2008-02-01")
+ @boleto_novo.dias_vencimento = 0
+ end
+
+ def test_should_initialize_correctly
+ assert_equal '356', @boleto_novo.banco
+ assert_equal '57', @boleto_novo.carteira
+ assert_equal "DM", @boleto_novo.especie_documento
+ assert_equal "R$", @boleto_novo.especie
+ assert_equal "9", @boleto_novo.moeda
+ assert_equal Date.today, @boleto_novo.data_documento
+ assert_equal 1, @boleto_novo.dias_vencimento
+ assert_equal((Date.today + 1), @boleto_novo.data_vencimento)
+ assert_equal "S", @boleto_novo.aceite
+ assert_equal 1, @boleto_novo.quantidade
+ assert_equal 0.0, @boleto_novo.valor
+ assert_equal 0.0, @boleto_novo.valor_documento
+ assert_equal "QUALQUER BANCO ATÉ O VENCIMENTO", @boleto_novo.local_pagamento
+ end
+
+ def test_should_mont_correct_codigo_barras
+ boleto_carteira_sem_registro
+ assert_equal "3569377000000135004042006190030000777700168", @boleto_novo.monta_codigo_43_digitos
+ assert_equal "35692377000000135004042006190030000777700168", @boleto_novo.codigo_barras
+ boleto_carteira_sem_registro_2
+ assert_equal "3569252300000934231018001632490000000005020", @boleto_novo.monta_codigo_43_digitos
+ assert_equal "35697252300000934231018001632490000000005020", @boleto_novo.codigo_barras
+ boleto_carteira_registrada
+ assert_equal "3569376900000135000000004042006190087701684", @boleto_novo.monta_codigo_43_digitos
+ assert_equal "35691376900000135000000004042006190087701684", @boleto_novo.codigo_barras
+ boleto_nil
+ assert_equal nil, @boleto_novo.codigo_barras
+ assert_raise RuntimeError do
+ boleto_nil
+ raise 'Verifique as informações do boleto!!!'
+ end
+ end
+
+ def test_should_mont_correct_linha_digitalvel
+ boleto_carteira_registrada
+ assert_equal("35690.00007 04042.006199 00877.016840 1 37690000013500", @boleto_novo.codigo_barras.linha_digitavel)
+ boleto_carteira_sem_registro
+ assert_equal("35694.04209 06190.030004 07777.001681 2 37700000013500", @boleto_novo.codigo_barras.linha_digitavel)
+ boleto_carteira_sem_registro_2
+ assert_equal("35691.01805 01632.490007 00000.050203 7 25230000093423", @boleto_novo.codigo_barras.linha_digitavel)
+ end
+
+ def test_should_return_agencia_conta_corrente_nosso_numero_dv
+ boleto_carteira_registrada
+ assert_equal 8, @boleto_novo.agencia_conta_corrente_nosso_numero_dv
+ boleto_carteira_sem_registro
+ assert_equal 3, @boleto_novo.agencia_conta_corrente_nosso_numero_dv
+ end
+end

0 comments on commit 34a66c0

Please sign in to comment.
Something went wrong with that request. Please try again.