brcobranca 2.0.5 → 2.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +24 -0
- data/PostInstall.txt +4 -0
- data/README.rdoc +4 -4
- data/Rakefile +9 -6
- data/brcobranca.gemspec +9 -9
- data/lib/brcobranca/arquivos/logos/banespa.jpg +0 -0
- data/lib/brcobranca/boleto/banco_banespa.rb +85 -0
- data/lib/brcobranca/boleto/banco_bradesco.rb +14 -1
- data/lib/brcobranca/boleto/banco_brasil.rb +18 -9
- data/lib/brcobranca/boleto/banco_hsbc.rb +22 -8
- data/lib/brcobranca/boleto/banco_itau.rb +20 -10
- data/lib/brcobranca/boleto/banco_real.rb +16 -2
- data/lib/brcobranca/boleto/banco_unibanco.rb +19 -5
- data/lib/brcobranca/boleto/base.rb +21 -15
- data/lib/brcobranca/boleto/template/rghost.rb +18 -16
- data/lib/brcobranca/boleto/template/util.rb +2 -0
- data/lib/brcobranca/core_ext.rb +57 -47
- data/lib/brcobranca/currency.rb +7 -10
- data/lib/brcobranca.rb +10 -2
- data/spec/arquivos/CBR64310.RET +28 -0
- data/spec/brcobranca/banco_banespa_spec.rb +195 -0
- data/spec/brcobranca/banco_bradesco_spec.rb +179 -0
- data/spec/brcobranca/banco_brasil_spec.rb +353 -0
- data/spec/brcobranca/banco_hsbc_spec.rb +216 -0
- data/spec/brcobranca/banco_itau_spec.rb +202 -0
- data/spec/brcobranca/banco_real_spec.rb +145 -0
- data/spec/brcobranca/banco_unibanco_spec.rb +193 -0
- data/spec/brcobranca/base_spec.rb +240 -0
- data/spec/brcobranca/core_ext_spec.rb +275 -0
- data/spec/brcobranca/currency_spec.rb +81 -0
- data/spec/brcobranca/retorno_cbr643_spec.rb +69 -0
- data/spec/brcobranca/rghost_spec.rb +36 -0
- data/spec/brcobranca/template/rghost_spec.rb +65 -0
- data/spec/brcobranca/template/util_spec.rb +42 -0
- data/spec/brcobranca_spec.rb +8 -0
- data/spec/rcov.opts +2 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +10 -0
- data/tasks/rcov.rake +12 -0
- data/tasks/rspec.rake +21 -0
- metadata +32 -18
- data/test/test_banco_bradesco.rb +0 -87
- data/test/test_banco_brasil.rb +0 -276
- data/test/test_banco_hsbc.rb +0 -81
- data/test/test_banco_itau.rb +0 -103
- data/test/test_banco_real.rb +0 -112
- data/test/test_banco_unibanco.rb +0 -92
- data/test/test_base.rb +0 -162
- data/test/test_core_ext.rb +0 -227
- data/test/test_currency.rb +0 -51
- data/test/test_helper.rb +0 -5
- data/test/test_retorno_cbr643.rb +0 -66
- data/test/test_rghost.rb +0 -49
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
History.txt
|
2
2
|
Manifest.txt
|
3
|
+
PostInstall.txt
|
3
4
|
README.rdoc
|
4
5
|
Rakefile
|
5
6
|
brcobranca.gemspec
|
6
7
|
lib/brcobranca.rb
|
8
|
+
lib/brcobranca/arquivos/logos/banespa.jpg
|
7
9
|
lib/brcobranca/arquivos/logos/bb.jpg
|
8
10
|
lib/brcobranca/arquivos/logos/bradesco.jpg
|
9
11
|
lib/brcobranca/arquivos/logos/hsbc.jpg
|
@@ -11,6 +13,7 @@ lib/brcobranca/arquivos/logos/itau.jpg
|
|
11
13
|
lib/brcobranca/arquivos/logos/real.jpg
|
12
14
|
lib/brcobranca/arquivos/logos/unibanco.jpg
|
13
15
|
lib/brcobranca/arquivos/templates/modelo_generico.eps
|
16
|
+
lib/brcobranca/boleto/banco_banespa.rb
|
14
17
|
lib/brcobranca/boleto/banco_bradesco.rb
|
15
18
|
lib/brcobranca/boleto/banco_brasil.rb
|
16
19
|
lib/brcobranca/boleto/banco_hsbc.rb
|
@@ -25,3 +28,24 @@ lib/brcobranca/core_ext.rb
|
|
25
28
|
lib/brcobranca/currency.rb
|
26
29
|
lib/brcobranca/retorno/base.rb
|
27
30
|
lib/brcobranca/retorno/retorno_cbr643.rb
|
31
|
+
spec/arquivos/CBR64310.RET
|
32
|
+
spec/brcobranca/banco_banespa_spec.rb
|
33
|
+
spec/brcobranca/banco_bradesco_spec.rb
|
34
|
+
spec/brcobranca/banco_brasil_spec.rb
|
35
|
+
spec/brcobranca/banco_hsbc_spec.rb
|
36
|
+
spec/brcobranca/banco_itau_spec.rb
|
37
|
+
spec/brcobranca/banco_real_spec.rb
|
38
|
+
spec/brcobranca/banco_unibanco_spec.rb
|
39
|
+
spec/brcobranca/base_spec.rb
|
40
|
+
spec/brcobranca/core_ext_spec.rb
|
41
|
+
spec/brcobranca/currency_spec.rb
|
42
|
+
spec/brcobranca/retorno_cbr643_spec.rb
|
43
|
+
spec/brcobranca/rghost_spec.rb
|
44
|
+
spec/brcobranca/template/rghost_spec.rb
|
45
|
+
spec/brcobranca/template/util_spec.rb
|
46
|
+
spec/brcobranca_spec.rb
|
47
|
+
spec/rcov.opts
|
48
|
+
spec/spec.opts
|
49
|
+
spec/spec_helper.rb
|
50
|
+
tasks/rcov.rake
|
51
|
+
tasks/rspec.rake
|
data/PostInstall.txt
ADDED
data/README.rdoc
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
Gem para emissão de bloquetos de cobrança para bancos brasileiros
|
12
12
|
|
13
|
-
== Bancos Disponíveis
|
13
|
+
== Bancos Disponíveis
|
14
14
|
|
15
15
|
* Banco do Brasil
|
16
16
|
* TODAS AS CARTEIRAS PRESENTES NA DOCUMENTAÇÃO
|
@@ -20,14 +20,14 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros
|
|
20
20
|
|
21
21
|
* Banco HSBC
|
22
22
|
* CNR
|
23
|
-
|
23
|
+
|
24
24
|
* Banco Real
|
25
25
|
* Sem registro
|
26
26
|
* Com registro
|
27
|
-
|
27
|
+
|
28
28
|
* Banco Bradesco
|
29
29
|
* TODAS AS CARTEIRAS PRESENTES NA DOCUMENTAÇÃO
|
30
|
-
|
30
|
+
|
31
31
|
* Banco UNIBANCO
|
32
32
|
* Sem registro
|
33
33
|
* Com registro
|
data/Rakefile
CHANGED
@@ -2,33 +2,36 @@ require 'rubygems'
|
|
2
2
|
gem 'hoe', '>= 2.1.0'
|
3
3
|
require 'hoe'
|
4
4
|
require 'fileutils'
|
5
|
-
require
|
5
|
+
require './lib/brcobranca'
|
6
6
|
|
7
7
|
Hoe.plugin :newgem
|
8
8
|
Hoe.plugin :website
|
9
|
+
# Hoe.plugin :cucumberfeatures
|
9
10
|
|
10
11
|
# Generate all the Rake tasks
|
11
12
|
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
12
13
|
$hoe = Hoe.spec 'brcobranca' do
|
13
|
-
self.developer
|
14
|
-
self.
|
14
|
+
self.developer 'Kivanio Barbosa', 'kivanio@gmail.com'
|
15
|
+
self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
16
|
+
self.rubyforge_name = self.name # TODO this is default value
|
15
17
|
self.extra_deps = [
|
16
18
|
['rghost','>= 0.8.7'],
|
17
19
|
['rghost_barcode','>= 0.8'],
|
18
20
|
['parseline','>= 1.0.3']
|
19
21
|
]
|
20
22
|
|
21
|
-
|
22
|
-
self.summary = 'Gem que permite trabalhar com cobranças via bancos brasileiros.'
|
23
|
+
self.summary = 'Gem que permite trabalhar com bloquetos de cobrança para bancos brasileiros.'
|
23
24
|
self.description = 'Gem para emissão de bloquetos de cobrança de bancos brasileiros.'
|
24
25
|
self.clean_globs |= %w[**/.DS_Store tmp *.log]
|
26
|
+
# self.rdoc_pattern = /rb$|rdoc$/
|
25
27
|
path = (self.rubyforge_name == self.name) ? self.rubyforge_name : "\#{self.rubyforge_name}/\#{self.name}"
|
26
28
|
self.remote_rdoc_dir = File.join(path.gsub(/^#{self.rubyforge_name}\/?/,''), 'rdoc')
|
27
29
|
self.rsync_args = '-av --delete --ignore-errors'
|
28
30
|
end
|
29
31
|
|
30
|
-
require 'newgem/tasks'
|
32
|
+
require 'newgem/tasks'
|
31
33
|
Dir['tasks/**/*.rake'].each { |t| load t }
|
32
34
|
|
33
35
|
# TODO - want other tests/tasks run by default? Add them to the list
|
36
|
+
# remove_task :default
|
34
37
|
# task :default => [:spec, :features]
|
data/brcobranca.gemspec
CHANGED
@@ -2,22 +2,22 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{brcobranca}
|
5
|
-
s.version = "2.0.
|
5
|
+
s.version = "2.0.6"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Kivanio Barbosa"]
|
9
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-08-17}
|
10
10
|
s.description = %q{Gem para emissão de bloquetos de cobrança de bancos brasileiros.}
|
11
11
|
s.email = ["kivanio@gmail.com"]
|
12
|
-
s.extra_rdoc_files = ["History.txt", "Manifest.txt"]
|
13
|
-
s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "brcobranca.gemspec", "lib/brcobranca.rb", "lib/brcobranca/arquivos/logos/bb.jpg", "lib/brcobranca/arquivos/logos/bradesco.jpg", "lib/brcobranca/arquivos/logos/hsbc.jpg", "lib/brcobranca/arquivos/logos/itau.jpg", "lib/brcobranca/arquivos/logos/real.jpg", "lib/brcobranca/arquivos/logos/unibanco.jpg", "lib/brcobranca/arquivos/templates/modelo_generico.eps", "lib/brcobranca/boleto/banco_bradesco.rb", "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/banco_unibanco.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/base.rb", "lib/brcobranca/retorno/retorno_cbr643.rb", "
|
12
|
+
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt"]
|
13
|
+
s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "brcobranca.gemspec", "lib/brcobranca.rb", "lib/brcobranca/arquivos/logos/banespa.jpg", "lib/brcobranca/arquivos/logos/bb.jpg", "lib/brcobranca/arquivos/logos/bradesco.jpg", "lib/brcobranca/arquivos/logos/hsbc.jpg", "lib/brcobranca/arquivos/logos/itau.jpg", "lib/brcobranca/arquivos/logos/real.jpg", "lib/brcobranca/arquivos/logos/unibanco.jpg", "lib/brcobranca/arquivos/templates/modelo_generico.eps", "lib/brcobranca/boleto/banco_banespa.rb", "lib/brcobranca/boleto/banco_bradesco.rb", "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/banco_unibanco.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/base.rb", "lib/brcobranca/retorno/retorno_cbr643.rb", "spec/arquivos/CBR64310.RET", "spec/brcobranca/banco_banespa_spec.rb", "spec/brcobranca/banco_bradesco_spec.rb", "spec/brcobranca/banco_brasil_spec.rb", "spec/brcobranca/banco_hsbc_spec.rb", "spec/brcobranca/banco_itau_spec.rb", "spec/brcobranca/banco_real_spec.rb", "spec/brcobranca/banco_unibanco_spec.rb", "spec/brcobranca/base_spec.rb", "spec/brcobranca/core_ext_spec.rb", "spec/brcobranca/currency_spec.rb", "spec/brcobranca/retorno_cbr643_spec.rb", "spec/brcobranca/rghost_spec.rb", "spec/brcobranca/template/rghost_spec.rb", "spec/brcobranca/template/util_spec.rb", "spec/brcobranca_spec.rb", "spec/rcov.opts", "spec/spec.opts", "spec/spec_helper.rb", "tasks/rcov.rake", "tasks/rspec.rake"]
|
14
14
|
s.homepage = %q{http://brcobranca.rubyforge.org}
|
15
|
+
s.post_install_message = %q{PostInstall.txt}
|
15
16
|
s.rdoc_options = ["--main", "README.rdoc"]
|
16
17
|
s.require_paths = ["lib"]
|
17
18
|
s.rubyforge_project = %q{brcobranca}
|
18
19
|
s.rubygems_version = %q{1.3.5}
|
19
|
-
s.summary = %q{Gem que permite trabalhar com
|
20
|
-
s.test_files = ["test/test_banco_bradesco.rb", "test/test_banco_brasil.rb", "test/test_banco_hsbc.rb", "test/test_banco_itau.rb", "test/test_banco_real.rb", "test/test_banco_unibanco.rb", "test/test_base.rb", "test/test_core_ext.rb", "test/test_currency.rb", "test/test_helper.rb", "test/test_retorno_cbr643.rb", "test/test_rghost.rb"]
|
20
|
+
s.summary = %q{Gem que permite trabalhar com bloquetos de cobrança para bancos brasileiros.}
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
23
23
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
@@ -27,17 +27,17 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_runtime_dependency(%q<rghost>, [">= 0.8.7"])
|
28
28
|
s.add_runtime_dependency(%q<rghost_barcode>, [">= 0.8"])
|
29
29
|
s.add_runtime_dependency(%q<parseline>, [">= 1.0.3"])
|
30
|
-
s.add_development_dependency(%q<hoe>, [">= 2.3.
|
30
|
+
s.add_development_dependency(%q<hoe>, [">= 2.3.3"])
|
31
31
|
else
|
32
32
|
s.add_dependency(%q<rghost>, [">= 0.8.7"])
|
33
33
|
s.add_dependency(%q<rghost_barcode>, [">= 0.8"])
|
34
34
|
s.add_dependency(%q<parseline>, [">= 1.0.3"])
|
35
|
-
s.add_dependency(%q<hoe>, [">= 2.3.
|
35
|
+
s.add_dependency(%q<hoe>, [">= 2.3.3"])
|
36
36
|
end
|
37
37
|
else
|
38
38
|
s.add_dependency(%q<rghost>, [">= 0.8.7"])
|
39
39
|
s.add_dependency(%q<rghost_barcode>, [">= 0.8"])
|
40
40
|
s.add_dependency(%q<parseline>, [">= 1.0.3"])
|
41
|
-
s.add_dependency(%q<hoe>, [">= 2.3.
|
41
|
+
s.add_dependency(%q<hoe>, [">= 2.3.3"])
|
42
42
|
end
|
43
43
|
end
|
Binary file
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# Banco BANESPA
|
2
|
+
class BancoBanespa < Brcobranca::Boleto::Base
|
3
|
+
|
4
|
+
def initialize(campos={})
|
5
|
+
padrao = {:carteira => "COB", :banco => "033"}
|
6
|
+
campos = padrao.merge!(campos)
|
7
|
+
super(campos)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Número sequencial utilizado para distinguir os boletos na agência
|
11
|
+
def nosso_numero
|
12
|
+
"#{self.agencia.zeros_esquerda(:tamanho => 3)}#{self.numero_documento.zeros_esquerda(:tamanho => 7)}"
|
13
|
+
end
|
14
|
+
|
15
|
+
# Retorna dígito verificador do nosso número calculado como contas na documentação
|
16
|
+
def nosso_numero_dv
|
17
|
+
self.nosso_numero.zeros_esquerda(:tamanho => 10).modulo_10_banespa
|
18
|
+
end
|
19
|
+
|
20
|
+
# Retorna nosso numero pronto para exibir no boleto
|
21
|
+
def nosso_numero_boleto
|
22
|
+
"#{self.nosso_numero[0..2]} #{self.nosso_numero[3..9]} #{self.nosso_numero_dv}"
|
23
|
+
end
|
24
|
+
|
25
|
+
def agencia_conta_boleto
|
26
|
+
convenio = self.convenio.zeros_esquerda(:tamanho => 11)
|
27
|
+
"#{convenio[0..2]} #{convenio[3..4]} #{convenio[5..9]} #{convenio[10..10]}"
|
28
|
+
end
|
29
|
+
|
30
|
+
# Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras.
|
31
|
+
def monta_codigo_43_digitos
|
32
|
+
banco = self.banco.zeros_esquerda(:tamanho => 3)
|
33
|
+
fator = self.data_vencimento.fator_vencimento.zeros_esquerda(:tamanho => 4)
|
34
|
+
valor_documento = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10)
|
35
|
+
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{self.campo_livre_com_dv1_e_dv2}"
|
36
|
+
numero.size == 43 ? numero : nil
|
37
|
+
end
|
38
|
+
|
39
|
+
# CAMPO LIVRE
|
40
|
+
# Código do cedente PIC 9 (011)
|
41
|
+
# Nosso número PIC 9 (007)
|
42
|
+
# Filler PIC 9 (002) = 00
|
43
|
+
# Código do banco cedente PIC 9 (003) = 033
|
44
|
+
# Dígito verificador 1 PIC 9 (001)
|
45
|
+
# Dígito verificador 2 PIC 9 (001)
|
46
|
+
def campo_livre
|
47
|
+
"#{self.convenio.zeros_esquerda(:tamanho => 11)}#{self.numero_documento.zeros_esquerda(:tamanho => 7)}00#{self.banco.zeros_esquerda(:tamanho => 3)}"
|
48
|
+
end
|
49
|
+
|
50
|
+
#campo livre com os digitos verificadores como conta na documentação do banco
|
51
|
+
def campo_livre_com_dv1_e_dv2
|
52
|
+
dv1 = self.campo_livre.modulo10 #dv 1 inicial
|
53
|
+
dv2 = nil
|
54
|
+
multiplicadores = [2,3,4,5,6,7]
|
55
|
+
begin
|
56
|
+
recalcular_dv2 = false
|
57
|
+
valor_inicial = "#{self.campo_livre}#{dv1}"
|
58
|
+
total = 0
|
59
|
+
multiplicador_posicao = 0
|
60
|
+
|
61
|
+
valor_inicial.split(//).reverse!.each do |caracter|
|
62
|
+
multiplicador_posicao = 0 if (multiplicador_posicao == 6)
|
63
|
+
total += (caracter.to_i * multiplicadores[multiplicador_posicao])
|
64
|
+
multiplicador_posicao += 1
|
65
|
+
end
|
66
|
+
|
67
|
+
case total % 11
|
68
|
+
when 0 then
|
69
|
+
dv2 = 0
|
70
|
+
when 1 then
|
71
|
+
if dv1 == 9
|
72
|
+
dv1 = 0
|
73
|
+
else
|
74
|
+
dv1 += 1
|
75
|
+
end
|
76
|
+
recalcular_dv2 = true
|
77
|
+
else
|
78
|
+
dv2 = 11 - (total % 11)
|
79
|
+
end
|
80
|
+
end while(recalcular_dv2)
|
81
|
+
|
82
|
+
return "#{self.campo_livre}#{dv1}#{dv2}"
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
@@ -6,6 +6,18 @@ class BancoBradesco < Brcobranca::Boleto::Base
|
|
6
6
|
campos = padrao.merge!(campos)
|
7
7
|
super(campos)
|
8
8
|
end
|
9
|
+
|
10
|
+
# Campo usado apenas na exibição no boleto
|
11
|
+
# Deverá ser sobreescrito para cada banco
|
12
|
+
def nosso_numero_boleto
|
13
|
+
"#{self.carteira}/#{self.numero_documento.zeros_esquerda(:tamanho => 11)}-#{self.nosso_numero_dv}"
|
14
|
+
end
|
15
|
+
|
16
|
+
# Campo usado apenas na exibição no boleto
|
17
|
+
# Deverá ser sobreescrito para cada banco
|
18
|
+
def agencia_conta_boleto
|
19
|
+
"#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}"
|
20
|
+
end
|
9
21
|
|
10
22
|
# Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras
|
11
23
|
# As posições do campo livre ficam a critério de cada Banco arrecadador, sendo que o
|
@@ -26,6 +38,7 @@ class BancoBradesco < Brcobranca::Boleto::Base
|
|
26
38
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 11)
|
27
39
|
conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
|
28
40
|
|
29
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}#{agencia}#{carteira}#{numero_documento}#{conta}0"
|
41
|
+
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{agencia}#{carteira}#{numero_documento}#{conta}0"
|
42
|
+
numero.size == 43 ? numero : nil
|
30
43
|
end
|
31
44
|
end
|
@@ -28,10 +28,17 @@ class BancoBrasil < Brcobranca::Boleto::Base
|
|
28
28
|
def nosso_numero_dv
|
29
29
|
"#{self.convenio}#{self.numero_documento}".modulo11_9to2_10_como_x
|
30
30
|
end
|
31
|
+
|
32
|
+
# Campo usado apenas na exibição no boleto
|
33
|
+
# Deverá ser sobreescrito para cada banco
|
34
|
+
def nosso_numero_boleto
|
35
|
+
"#{self.convenio}#{self.numero_documento}-#{self.nosso_numero_dv}"
|
36
|
+
end
|
31
37
|
|
32
|
-
#
|
33
|
-
|
34
|
-
|
38
|
+
# Campo usado apenas na exibição no boleto
|
39
|
+
# Deverá ser sobreescrito para cada banco
|
40
|
+
def agencia_conta_boleto
|
41
|
+
"#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}"
|
35
42
|
end
|
36
43
|
|
37
44
|
# Responsavel por montar uma String com 43 caracteres que será usado na criacao do codigo de barras
|
@@ -45,11 +52,11 @@ class BancoBrasil < Brcobranca::Boleto::Base
|
|
45
52
|
when 8 # Nosso Numero de 17 dígitos com Convenio de 8 dígitos e numero_documento de 9 dígitos
|
46
53
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 9)
|
47
54
|
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
|
48
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{convenio}#{numero_documento}#{self.carteira}"
|
55
|
+
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{convenio}#{numero_documento}#{self.carteira}"
|
49
56
|
when 7 # Nosso Numero de 17 dígitos com Convenio de 7 dígitos e numero_documento de 10 dígitos
|
50
57
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 10)
|
51
58
|
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
|
52
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{convenio}#{numero_documento}#{self.carteira}"
|
59
|
+
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{convenio}#{numero_documento}#{self.carteira}"
|
53
60
|
when 6 # Convenio de 6 dígitos
|
54
61
|
if self.codigo_servico == false
|
55
62
|
# Nosso Numero de 11 dígitos com Convenio de 6 dígitos e numero_documento de 5 digitos
|
@@ -57,23 +64,25 @@ class BancoBrasil < Brcobranca::Boleto::Base
|
|
57
64
|
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
|
58
65
|
agencia = self.agencia.zeros_esquerda(:tamanho => 4)
|
59
66
|
conta = self.conta_corrente.zeros_esquerda(:tamanho => 8)
|
60
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}#{agencia}#{conta}#{self.carteira}"
|
67
|
+
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}#{agencia}#{conta}#{self.carteira}"
|
61
68
|
else
|
62
69
|
# Nosso Numero de 17 dígitos com Convenio de 6 dígitos e sem numero_documento, carteira 16 e 18
|
63
70
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 17)
|
64
71
|
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)
|
65
72
|
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))
|
66
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}21"
|
73
|
+
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}21"
|
67
74
|
end
|
68
75
|
when 4 # Nosso Numero de 7 dígitos com Convenio de 4 dígitos e sem numero_documento
|
69
76
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 7)
|
70
77
|
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
|
71
78
|
agencia = self.agencia.zeros_esquerda(:tamanho => 4)
|
72
79
|
conta = self.conta_corrente.zeros_esquerda(:tamanho => 8)
|
73
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}#{agencia}#{conta}#{self.carteira}"
|
80
|
+
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}#{agencia}#{conta}#{self.carteira}"
|
74
81
|
else
|
75
|
-
|
82
|
+
numero = ""
|
76
83
|
end
|
84
|
+
|
85
|
+
numero.size == 43 ? numero : nil
|
77
86
|
end
|
78
87
|
|
79
88
|
end
|
@@ -10,7 +10,7 @@ class BancoHsbc < Brcobranca::Boleto::Base
|
|
10
10
|
|
11
11
|
# Número sequencial utilizado para distinguir os boletos na agência
|
12
12
|
def nosso_numero
|
13
|
-
if self.data_vencimento
|
13
|
+
if self.data_vencimento.kind_of?(Date)
|
14
14
|
self.codigo_servico = 4
|
15
15
|
dia = self.data_vencimento.day.to_s.zeros_esquerda(:tamanho => 2)
|
16
16
|
mes = self.data_vencimento.month.to_s.zeros_esquerda(:tamanho => 2)
|
@@ -29,6 +29,18 @@ class BancoHsbc < Brcobranca::Boleto::Base
|
|
29
29
|
numero
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
# Campo usado apenas na exibição no boleto
|
34
|
+
# Deverá ser sobreescrito para cada banco
|
35
|
+
def nosso_numero_boleto
|
36
|
+
"#{self.nosso_numero}"
|
37
|
+
end
|
38
|
+
|
39
|
+
# Campo usado apenas na exibição no boleto
|
40
|
+
# Deverá ser sobreescrito para cada banco
|
41
|
+
def agencia_conta_boleto
|
42
|
+
"#{self.conta_corrente}"
|
43
|
+
end
|
32
44
|
|
33
45
|
# Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras
|
34
46
|
def monta_codigo_43_digitos
|
@@ -39,23 +51,25 @@ class BancoHsbc < Brcobranca::Boleto::Base
|
|
39
51
|
|
40
52
|
# Montagem é baseada no tipo de carteira e na presença da data de vencimento
|
41
53
|
if self.carteira == "CNR"
|
42
|
-
if self.data_vencimento
|
54
|
+
if self.data_vencimento.kind_of?(Date)
|
43
55
|
raise "numero_documento pode ser de no máximo 13 caracteres." if (self.numero_documento.to_s.size > 13)
|
44
56
|
fator = self.data_vencimento.fator_vencimento
|
45
57
|
dias_julianos = self.data_vencimento.to_juliano
|
46
58
|
self.codigo_servico = 4
|
47
|
-
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 13)
|
48
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}#{conta}#{numero_documento}#{dias_julianos}2"
|
59
|
+
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 13)
|
60
|
+
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{conta}#{numero_documento}#{dias_julianos}2"
|
61
|
+
numero.size == 43 ? numero : nil
|
49
62
|
else
|
50
63
|
# TODO
|
51
64
|
nil
|
52
65
|
end
|
53
66
|
else
|
54
|
-
raise "numero_documento pode ser de no máximo 6 caracteres." if (self.numero_documento.to_s.size > 6)
|
55
|
-
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 6)
|
56
|
-
nosso_numero = self.nosso_numero.zeros_esquerda(:tamanho => 9)
|
57
|
-
self.codigo_servico = 5
|
58
67
|
# TODO
|
68
|
+
# raise "numero_documento pode ser de no máximo 6 caracteres." if (self.numero_documento.to_s.size > 6)
|
69
|
+
# numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 6)
|
70
|
+
# nosso_numero = self.nosso_numero.zeros_esquerda(:tamanho => 9)
|
71
|
+
# self.codigo_servico = 5
|
72
|
+
|
59
73
|
nil
|
60
74
|
end
|
61
75
|
end
|
@@ -10,10 +10,10 @@ class BancoItau < Brcobranca::Boleto::Base
|
|
10
10
|
super(campos)
|
11
11
|
end
|
12
12
|
|
13
|
-
# Retorna dígito verificador do nosso número, calculado com modulo10.
|
14
|
-
# Para a grande maioria das carteiras, são considerados para a obtenção do DAC/DV, os dados
|
15
|
-
# "AGENCIA(sem DAC/DV)/CONTA(sem DAC/DV)/CARTEIRA/NOSSO NUMERO", calculado pelo criterio do Modulo 10.
|
16
|
-
# A excecao, estão as carteiras 126, 131, 146, 150 e 168 cuja obtenção esta baseada apenas nos
|
13
|
+
# Retorna dígito verificador do nosso número, calculado com modulo10.
|
14
|
+
# Para a grande maioria das carteiras, são considerados para a obtenção do DAC/DV, os dados
|
15
|
+
# "AGENCIA(sem DAC/DV)/CONTA(sem DAC/DV)/CARTEIRA/NOSSO NUMERO", calculado pelo criterio do Modulo 10.
|
16
|
+
# A excecao, estão as carteiras 126, 131, 146, 150 e 168 cuja obtenção esta baseada apenas nos
|
17
17
|
# dados "CARTEIRA/NOSSO NUMERO".
|
18
18
|
def nosso_numero_dv
|
19
19
|
if %w(126 131 146 150 168).include?(self.carteira)
|
@@ -24,16 +24,23 @@ class BancoItau < Brcobranca::Boleto::Base
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
#
|
28
|
-
def nosso_numero
|
29
|
-
"#{self.carteira}/#{self.numero_documento}-#{self.nosso_numero_dv}"
|
30
|
-
end
|
31
|
-
|
32
|
-
# Calcula o dígito verificador para conta corrente do Itau.
|
27
|
+
# Calcula o dígito verificador para conta corrente do Itau.
|
33
28
|
# Retorna apenas o dígito verificador da conta ou nil caso seja impossível calcular.
|
34
29
|
def agencia_conta_corrente_dv
|
35
30
|
"#{self.agencia}#{self.conta_corrente}".modulo10
|
36
31
|
end
|
32
|
+
|
33
|
+
# Campo usado apenas na exibição no boleto
|
34
|
+
# Deverá ser sobreescrito para cada banco
|
35
|
+
def nosso_numero_boleto
|
36
|
+
"#{self.carteira}/#{self.numero_documento}-#{self.nosso_numero_dv}"
|
37
|
+
end
|
38
|
+
|
39
|
+
# Campo usado apenas na exibição no boleto
|
40
|
+
# Deverá ser sobreescrito para cada banco
|
41
|
+
def agencia_conta_boleto
|
42
|
+
"#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}"
|
43
|
+
end
|
37
44
|
|
38
45
|
# Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras.
|
39
46
|
def monta_codigo_43_digitos
|
@@ -61,6 +68,7 @@ class BancoItau < Brcobranca::Boleto::Base
|
|
61
68
|
codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}"
|
62
69
|
codigo << "#{numero_documento}#{self.nosso_numero_dv}#{self.agencia}#{self.conta_corrente}#{self.agencia_conta_corrente_dv}000"
|
63
70
|
codigo
|
71
|
+
codigo.size == 43 ? codigo : nil
|
64
72
|
when 198, 106, 107, 122, 142, 143, 195, 196
|
65
73
|
# CARTEIRAS 198, 106, 107,122, 142, 143, 195 e 196
|
66
74
|
# 01 a 03 03 9(3) Código do Banco na Câmara de Compensação = ‘341’
|
@@ -83,6 +91,7 @@ class BancoItau < Brcobranca::Boleto::Base
|
|
83
91
|
codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}"
|
84
92
|
codigo << "#{numero_documento}#{seu_numero}#{convenio}#{dv}0"
|
85
93
|
codigo
|
94
|
+
codigo.size == 43 ? codigo : nil
|
86
95
|
else
|
87
96
|
# DEMAIS CARTEIRAS
|
88
97
|
# 01 a 03 03 9(03) Código do Banco na Câmara de Compensação = '341'
|
@@ -100,6 +109,7 @@ class BancoItau < Brcobranca::Boleto::Base
|
|
100
109
|
codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}"
|
101
110
|
codigo << "#{numero_documento}#{self.nosso_numero_dv}#{self.agencia}#{self.conta_corrente}#{self.agencia_conta_corrente_dv}000"
|
102
111
|
codigo
|
112
|
+
codigo.size == 43 ? codigo : nil
|
103
113
|
end
|
104
114
|
end
|
105
115
|
end
|
@@ -6,7 +6,19 @@ class BancoReal < Brcobranca::Boleto::Base
|
|
6
6
|
campos = padrao.merge!(campos)
|
7
7
|
super(campos)
|
8
8
|
end
|
9
|
+
|
10
|
+
# Campo usado apenas na exibição no boleto
|
11
|
+
# Deverá ser sobreescrito para cada banco
|
12
|
+
def nosso_numero_boleto
|
13
|
+
"#{self.numero_documento}-#{self.nosso_numero_dv}"
|
14
|
+
end
|
9
15
|
|
16
|
+
# Campo usado apenas na exibição no boleto
|
17
|
+
# Deverá ser sobreescrito para cada banco
|
18
|
+
def agencia_conta_boleto
|
19
|
+
"#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}"
|
20
|
+
end
|
21
|
+
|
10
22
|
# CALCULO DO DIGITO:
|
11
23
|
# APLICA-SE OS PESOS 2,1,2,1,.... AOS ALGARISMOS DO NUMERO COMPOSTO POR:
|
12
24
|
# NUMERO DO BANCO : COM 7 DIGITOS P/ COBRANCA REGISTRADA
|
@@ -46,11 +58,13 @@ class BancoReal < Brcobranca::Boleto::Base
|
|
46
58
|
# Carteira sem registro
|
47
59
|
when 57
|
48
60
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 13)
|
49
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}#{agencia}#{conta}#{self.agencia_conta_corrente_nosso_numero_dv}#{numero_documento}"
|
61
|
+
codigo = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{agencia}#{conta}#{self.agencia_conta_corrente_nosso_numero_dv}#{numero_documento}"
|
62
|
+
codigo.size == 43 ? codigo : nil
|
50
63
|
else
|
51
64
|
# TODO verificar com o banco, pois não consta na documentação
|
52
65
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 7)
|
53
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{agencia}#{conta}#{self.agencia_conta_corrente_nosso_numero_dv}#{numero_documento}"
|
66
|
+
codigo = "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{agencia}#{conta}#{self.agencia_conta_corrente_nosso_numero_dv}#{numero_documento}"
|
67
|
+
codigo.size == 43 ? codigo : nil
|
54
68
|
end
|
55
69
|
end
|
56
70
|
end
|
@@ -10,7 +10,19 @@ class BancoUnibanco < Brcobranca::Boleto::Base
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def nosso_numero_dv
|
13
|
-
self.numero_documento.
|
13
|
+
self.numero_documento.modulo11_2to9
|
14
|
+
end
|
15
|
+
|
16
|
+
# Campo usado apenas na exibição no boleto
|
17
|
+
# Deverá ser sobreescrito para cada banco
|
18
|
+
def nosso_numero_boleto
|
19
|
+
"#{self.numero_documento.zeros_esquerda(:tamanho => 14)}-#{self.nosso_numero_dv}"
|
20
|
+
end
|
21
|
+
|
22
|
+
# Campo usado apenas na exibição no boleto
|
23
|
+
# Deverá ser sobreescrito para cada banco
|
24
|
+
def agencia_conta_boleto
|
25
|
+
"#{self.agencia} / #{self.conta_corrente}-#{self.conta_corrente_dv}"
|
14
26
|
end
|
15
27
|
|
16
28
|
# Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras
|
@@ -34,11 +46,12 @@ class BancoUnibanco < Brcobranca::Boleto::Base
|
|
34
46
|
# 21 a 27 7 número do cliente no CÓDIGO DE BARRAS + dígito verificador
|
35
47
|
# 28 a 29 2 vago. Usar 00 (número FIXO)
|
36
48
|
# 30 a 43 14 Número de referência do cliente
|
37
|
-
# 44 1 Dígito verificador
|
49
|
+
# 44 1 Dígito verificador
|
38
50
|
|
39
51
|
convenio = self.convenio.zeros_esquerda(:tamanho => 6)
|
40
52
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 14)
|
41
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}#{carteira}#{convenio}00#{numero_documento}#{self.nosso_numero_dv}"
|
53
|
+
codigo = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{carteira}#{convenio}00#{numero_documento}#{self.nosso_numero_dv}"
|
54
|
+
codigo.size == 43 ? codigo : nil
|
42
55
|
when 4
|
43
56
|
|
44
57
|
# Cobrança com registro (CÓDIGO DE BARRAS)
|
@@ -46,7 +59,7 @@ class BancoUnibanco < Brcobranca::Boleto::Base
|
|
46
59
|
# 1 a 3 3 Número de identificação do Unibanco: 409 (número FIXO)
|
47
60
|
# 4 1 Código da moeda. Real (R$)=9 (número FIXO)
|
48
61
|
# 5 1 dígito verificador do CÓDIGO DE BARRAS
|
49
|
-
# 6 a 9 4 fator de vencimento em 4 algarismos, conforme tabela da página 14
|
62
|
+
# 6 a 9 4 fator de vencimento em 4 algarismos, conforme tabela da página 14
|
50
63
|
# 10 a 19 10 valor do título com zeros à esquerda
|
51
64
|
# 20 a 21 2 Código para transação CVT: 04 (número FIXO) (04=5539-5)
|
52
65
|
# 22 a 27 6 data de vencimento (AAMMDD)
|
@@ -57,7 +70,8 @@ class BancoUnibanco < Brcobranca::Boleto::Base
|
|
57
70
|
data = self.data_vencimento.strftime('%y%m%d')
|
58
71
|
agencia = self.agencia.zeros_esquerda(:tamanho => 4)
|
59
72
|
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 11)
|
60
|
-
"#{banco}#{self.moeda}#{fator}#{valor_documento}0#{carteira}#{data}#{agencia}#{self.agencia_dv}#{numero_documento}#{self.nosso_numero_dv}"
|
73
|
+
codigo = "#{banco}#{self.moeda}#{fator}#{valor_documento}0#{carteira}#{data}#{agencia}#{self.agencia_dv}#{numero_documento}#{self.nosso_numero_dv}"
|
74
|
+
codigo.size == 43 ? codigo : nil
|
61
75
|
else
|
62
76
|
nil
|
63
77
|
end
|