brcobranca 2.0.6 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +30 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +48 -0
- data/History.txt +13 -1
- data/LICENSE +20 -0
- data/README.rdoc +12 -5
- data/Rakefile +33 -37
- data/VERSION +1 -0
- data/brcobranca.gemspec +26 -35
- data/lib/brcobranca/arquivos/logos/{bb.jpg → bancobrasil.jpg} +0 -0
- data/lib/brcobranca/arquivos/logos/banespa.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/caixa.jpg +0 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +150 -77
- data/lib/brcobranca/boleto/base.rb +146 -75
- data/lib/brcobranca/boleto/bradesco.rb +69 -0
- data/lib/brcobranca/boleto/caixa.rb +100 -0
- data/lib/brcobranca/boleto/hsbc.rb +95 -0
- data/lib/brcobranca/boleto/itau.rb +133 -0
- data/lib/brcobranca/boleto/real.rb +74 -0
- data/lib/brcobranca/boleto/template/base.rb +13 -0
- data/lib/brcobranca/boleto/template/rghost.rb +136 -62
- data/lib/brcobranca/boleto/unibanco.rb +115 -0
- data/lib/brcobranca/calculo.rb +132 -0
- data/lib/brcobranca/calculo_data.rb +42 -0
- data/lib/brcobranca/currency.rb +3 -4
- data/lib/brcobranca/formatacao.rb +102 -0
- data/lib/brcobranca/limpeza.rb +19 -0
- data/lib/brcobranca/retorno/base.rb +1 -2
- data/lib/brcobranca/retorno/retorno_cbr643.rb +42 -40
- data/lib/brcobranca/version.rb +3 -0
- data/lib/brcobranca.rb +93 -16
- data/spec/brcobranca/banco_bradesco_spec.rb +63 -50
- data/spec/brcobranca/banco_brasil_spec.rb +102 -136
- data/spec/brcobranca/banco_caixa_spec.rb +166 -0
- data/spec/brcobranca/banco_hsbc_spec.rb +83 -76
- data/spec/brcobranca/banco_real_spec.rb +54 -37
- data/spec/brcobranca/banco_unibanco_spec.rb +69 -52
- data/spec/brcobranca/base_spec.rb +24 -79
- data/spec/brcobranca/boletos_em_lote_spec.rb +46 -0
- data/spec/brcobranca/core_ext_spec.rb +24 -114
- data/spec/brcobranca/currency_spec.rb +1 -0
- data/spec/brcobranca/{banco_itau_spec.rb → itau_spec.rb} +112 -67
- data/spec/brcobranca/retorno_cbr643_spec.rb +13 -12
- data/spec/brcobranca/rghost_spec.rb +8 -7
- data/spec/brcobranca_spec.rb +16 -6
- data/spec/spec_helper.rb +11 -8
- metadata +107 -58
- data/Manifest.txt +0 -51
- data/PostInstall.txt +0 -4
- data/lib/brcobranca/boleto/banco_banespa.rb +0 -85
- data/lib/brcobranca/boleto/banco_bradesco.rb +0 -44
- data/lib/brcobranca/boleto/banco_hsbc.rb +0 -77
- data/lib/brcobranca/boleto/banco_itau.rb +0 -115
- data/lib/brcobranca/boleto/banco_real.rb +0 -70
- data/lib/brcobranca/boleto/banco_unibanco.rb +0 -79
- data/lib/brcobranca/boleto/template/util.rb +0 -32
- data/lib/brcobranca/config.rb +0 -9
- data/lib/brcobranca/core_ext.rb +0 -279
- data/spec/brcobranca/banco_banespa_spec.rb +0 -195
- data/spec/brcobranca/template/rghost_spec.rb +0 -65
- data/spec/brcobranca/template/util_spec.rb +0 -42
- data/spec/rcov.opts +0 -2
- data/spec/spec.opts +0 -6
- data/tasks/rcov.rake +0 -12
- data/tasks/rspec.rake +0 -21
data/.document
ADDED
data/.gitignore
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
## MAC OS
|
2
|
+
.DS_Store
|
3
|
+
|
4
|
+
## TEXTMATE
|
5
|
+
*.tmproj
|
6
|
+
tmtags
|
7
|
+
|
8
|
+
## EMACS
|
9
|
+
*~
|
10
|
+
\#*
|
11
|
+
.\#*
|
12
|
+
|
13
|
+
## VIM
|
14
|
+
*.swp
|
15
|
+
|
16
|
+
## PROJECT::GENERAL
|
17
|
+
coverage
|
18
|
+
rdoc
|
19
|
+
pkg
|
20
|
+
scratch_directory
|
21
|
+
tmp
|
22
|
+
.yardoc
|
23
|
+
|
24
|
+
## PROJECT::SPECIFIC
|
25
|
+
config
|
26
|
+
config/*.*
|
27
|
+
pkg
|
28
|
+
pkg/*.8
|
29
|
+
doc
|
30
|
+
doc/*.*
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
brcobranca (3.0.0)
|
5
|
+
activemodel (>= 3.0.0)
|
6
|
+
parseline (>= 1.0.3)
|
7
|
+
rghost (>= 0.8.7)
|
8
|
+
rghost_barcode (>= 0.8)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
activemodel (3.0.6)
|
14
|
+
activesupport (= 3.0.6)
|
15
|
+
builder (~> 2.1.2)
|
16
|
+
i18n (~> 0.5.0)
|
17
|
+
activesupport (3.0.6)
|
18
|
+
builder (2.1.2)
|
19
|
+
columnize (0.3.2)
|
20
|
+
diff-lcs (1.1.2)
|
21
|
+
i18n (0.5.0)
|
22
|
+
linecache (0.43)
|
23
|
+
parseline (1.0.3)
|
24
|
+
rake (0.8.7)
|
25
|
+
rghost (0.8.7.5)
|
26
|
+
rghost_barcode (0.9)
|
27
|
+
rspec (2.5.0)
|
28
|
+
rspec-core (~> 2.5.0)
|
29
|
+
rspec-expectations (~> 2.5.0)
|
30
|
+
rspec-mocks (~> 2.5.0)
|
31
|
+
rspec-core (2.5.1)
|
32
|
+
rspec-expectations (2.5.0)
|
33
|
+
diff-lcs (~> 1.1.2)
|
34
|
+
rspec-mocks (2.5.0)
|
35
|
+
ruby-debug (0.10.4)
|
36
|
+
columnize (>= 0.1)
|
37
|
+
ruby-debug-base (~> 0.10.4.0)
|
38
|
+
ruby-debug-base (0.10.4)
|
39
|
+
linecache (>= 0.3)
|
40
|
+
|
41
|
+
PLATFORMS
|
42
|
+
ruby
|
43
|
+
|
44
|
+
DEPENDENCIES
|
45
|
+
brcobranca!
|
46
|
+
rake
|
47
|
+
rspec
|
48
|
+
ruby-debug
|
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
== 3.0.0 14-04-2011
|
2
|
+
|
3
|
+
* Múltiplos boletos em lote com RGhost
|
4
|
+
* Validações
|
5
|
+
* Incluindo boleto para CAIXA by Túlio Ornelas
|
6
|
+
* Removendo BANESPA que virou Santander
|
7
|
+
|
8
|
+
== 2.0.7 14-05-2010
|
9
|
+
|
10
|
+
* Resolução de imagens com maior qualidade - Anderson Dias
|
11
|
+
* Correção do campo de exibição agencia/conta no boleto do Itáu (Solicitado pelo banco em homologação) - Antonio Carlos
|
12
|
+
|
1
13
|
== 2.0.6 16-08-2009
|
2
14
|
|
3
15
|
* Incluindo boleto para banco Santander Banespa - Diego Lucena
|
@@ -22,4 +34,4 @@
|
|
22
34
|
== 2.0.0 06-04-2009
|
23
35
|
|
24
36
|
* 1 acts_as_payment torna-se brcobranca:
|
25
|
-
* Release inicial com versão em 2.0.0
|
37
|
+
* Release inicial com versão em 2.0.0
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Kivanio Barbosa
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
= brcobranca
|
2
2
|
|
3
|
-
* http://
|
3
|
+
* http://rubygems.org/gems/brcobranca
|
4
4
|
|
5
5
|
== EXEMPLO
|
6
6
|
|
7
7
|
* http://www.boletorails.com.br
|
8
|
+
* http://github.com/kivanio/brcobranca_exemplo
|
8
9
|
|
9
10
|
== DESCRIÇÃO
|
10
11
|
|
@@ -12,6 +13,9 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros
|
|
12
13
|
|
13
14
|
== Bancos Disponíveis
|
14
15
|
|
16
|
+
* Banco Banespa
|
17
|
+
* COB
|
18
|
+
|
15
19
|
* Banco do Brasil
|
16
20
|
* TODAS AS CARTEIRAS PRESENTES NA DOCUMENTAÇÃO
|
17
21
|
|
@@ -32,15 +36,18 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros
|
|
32
36
|
* Sem registro
|
33
37
|
* Com registro
|
34
38
|
|
39
|
+
* Banco Caixa
|
40
|
+
* Sem registro (SR) by Túlio Ornelas - https://github.com/tulios
|
41
|
+
|
35
42
|
== Esta perdido?
|
36
43
|
|
37
|
-
Veja a documentação em http://brcobranca.
|
44
|
+
Veja a documentação da versão atual em http://rubydoc.info/gems/brcobranca e da versão de desenvolvimento em http://rubydoc.info/github/kivanio/brcobranca/master/frames
|
38
45
|
|
39
46
|
== REQUISITOS
|
40
47
|
|
41
|
-
* rghost
|
42
|
-
* rghost_barcode
|
43
|
-
* parseline
|
48
|
+
* rghost >= 0.8.7
|
49
|
+
* rghost_barcode >= 0.8
|
50
|
+
* parseline >= 1.0.3
|
44
51
|
* GhostScript > 8.0
|
45
52
|
|
46
53
|
== INSTALAÇÃO
|
data/Rakefile
CHANGED
@@ -1,37 +1,33 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require '
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
36
|
-
# remove_task :default
|
37
|
-
# task :default => [:spec, :features]
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
Bundler::GemHelper.install_tasks
|
5
|
+
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
|
8
|
+
RSpec::Core::RakeTask.new('spec')
|
9
|
+
|
10
|
+
# If you want to make this the default task
|
11
|
+
task :default => :spec
|
12
|
+
|
13
|
+
#
|
14
|
+
# begin
|
15
|
+
# gem 'metric_fu'
|
16
|
+
# require 'metric_fu'
|
17
|
+
# MetricFu::Configuration.run do |config|
|
18
|
+
# #define which metrics you want to use
|
19
|
+
# config.metrics = [:churn, :saikuro, :flay, :flog, :reek, :roodi]
|
20
|
+
# config.graphs = []
|
21
|
+
# config.flay = { :dirs_to_flay => ['lib'], :minimum_score => 20, :filetypes => ['rb'] }
|
22
|
+
# config.flog = { :dirs_to_flog => ['lib'] }
|
23
|
+
# config.reek = { :dirs_to_reek => ['lib'] }
|
24
|
+
# config.roodi = { :dirs_to_roodi => ['lib'] }
|
25
|
+
# config.saikuro = {
|
26
|
+
# :output_directory => 'scratch_directory/saikuro', :input_directory => ['lib'],
|
27
|
+
# :cyclo => "", :filter_cyclo => "0", :warn_cyclo => "5", :error_cyclo => "7",
|
28
|
+
# :formater => "text"
|
29
|
+
# }
|
30
|
+
# config.churn = { :start_date => "3 year ago", :minimum_churn_count => 10}
|
31
|
+
# end
|
32
|
+
# rescue LoadError
|
33
|
+
# end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.0.0
|
data/brcobranca.gemspec
CHANGED
@@ -1,43 +1,34 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "brcobranca/version"
|
2
4
|
|
3
5
|
Gem::Specification.new do |s|
|
4
|
-
s.name
|
5
|
-
s.version
|
6
|
-
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
|
+
s.name = "brcobranca"
|
7
|
+
s.version = Brcobranca::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
8
9
|
s.authors = ["Kivanio Barbosa"]
|
9
|
-
s.date = %q{
|
10
|
+
s.date = %q{2011-04-14}
|
10
11
|
s.description = %q{Gem para emissão de bloquetos de cobrança de bancos brasileiros.}
|
11
|
-
s.email = ["kivanio@gmail.com"]
|
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
|
-
s.homepage = %q{http://brcobranca.rubyforge.org}
|
15
|
-
s.post_install_message = %q{PostInstall.txt}
|
16
|
-
s.rdoc_options = ["--main", "README.rdoc"]
|
17
|
-
s.require_paths = ["lib"]
|
18
|
-
s.rubyforge_project = %q{brcobranca}
|
19
|
-
s.rubygems_version = %q{1.3.5}
|
20
12
|
s.summary = %q{Gem que permite trabalhar com bloquetos de cobrança para bancos brasileiros.}
|
13
|
+
s.email = %q{kivanio@gmail.com}
|
14
|
+
s.homepage = %q{http://rubygems.org/gems/brcobranca}
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.requirements = ["GhostScript > 8.0, para gear PDF e c\303\263digo de Barras"]
|
22
|
+
s.rubyforge_project = "brcobranca"
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
s.add_runtime_dependency(%q<rghost>, [">= 0.8.7"])
|
25
|
+
s.add_runtime_dependency(%q<rghost_barcode>, [">= 0.8"])
|
26
|
+
s.add_runtime_dependency(%q<parseline>, [">= 1.0.3"])
|
27
|
+
s.add_runtime_dependency(%q<activemodel>, [">= 3.0.0"])
|
25
28
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
s.add_dependency(%q<rghost>, [">= 0.8.7"])
|
33
|
-
s.add_dependency(%q<rghost_barcode>, [">= 0.8"])
|
34
|
-
s.add_dependency(%q<parseline>, [">= 1.0.3"])
|
35
|
-
s.add_dependency(%q<hoe>, [">= 2.3.3"])
|
36
|
-
end
|
37
|
-
else
|
38
|
-
s.add_dependency(%q<rghost>, [">= 0.8.7"])
|
39
|
-
s.add_dependency(%q<rghost_barcode>, [">= 0.8"])
|
40
|
-
s.add_dependency(%q<parseline>, [">= 1.0.3"])
|
41
|
-
s.add_dependency(%q<hoe>, [">= 2.3.3"])
|
42
|
-
end
|
43
|
-
end
|
29
|
+
s.post_install_message = %[
|
30
|
+
===========================================================================
|
31
|
+
Visite http://www.boletorails.com.br para ver exemplos!
|
32
|
+
===========================================================================
|
33
|
+
]
|
34
|
+
end
|
File without changes
|
File without changes
|
Binary file
|
@@ -1,88 +1,161 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Brcobranca
|
3
|
+
module Boleto
|
4
|
+
class BancoBrasil < Base # Banco do Brasil
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
super(campos)
|
9
|
-
end
|
6
|
+
validates_length_of :agencia, :maximum => 4, :message => "deve ser menor ou igual a 4 dígitos."
|
7
|
+
validates_length_of :conta_corrente, :maximum => 8, :message => "deve ser menor ou igual a 8 dígitos."
|
8
|
+
validates_length_of :carteira, :maximum => 2, :message => "deve ser menor ou igual a 2 dígitos."
|
9
|
+
validates_length_of :convenio, :in => 4..8, :message => "não existente para este banco."
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
validates_each :numero_documento do |record, attr, value|
|
12
|
+
valor_tamanho = value.to_s.size
|
13
|
+
registro_tamanho = record.convenio.to_s.size
|
14
|
+
quantidade = case
|
15
|
+
when (valor_tamanho > 9) && (registro_tamanho == 8)
|
16
|
+
'9'
|
17
|
+
when (valor_tamanho > 10) && (registro_tamanho == 7)
|
18
|
+
'10'
|
19
|
+
when (valor_tamanho > 7) && (registro_tamanho == 4)
|
20
|
+
'7'
|
21
|
+
when (valor_tamanho > 5) && (registro_tamanho == 6) && (!record.codigo_servico)
|
22
|
+
'5'
|
23
|
+
when (valor_tamanho > 17) && (registro_tamanho == 6) && (record.codigo_servico)
|
24
|
+
'17'
|
25
|
+
else
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
record.errors.add attr, "deve ser menor ou igual a #{quantidade} dígitos." if quantidade
|
29
|
+
end
|
15
30
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
31
|
+
# Nova instancia do BancoBrasil
|
32
|
+
# @param (see Brcobranca::Boleto::Base#initialize)
|
33
|
+
def initialize(campos={})
|
34
|
+
campos = {:carteira => "18", :codigo_servico => false}.merge!(campos)
|
35
|
+
super(campos)
|
36
|
+
end
|
20
37
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
38
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
39
|
+
#
|
40
|
+
# @return [String] 3 caracteres numéricos.
|
41
|
+
def banco
|
42
|
+
"001"
|
43
|
+
end
|
25
44
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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
|
45
|
+
# Carteira
|
46
|
+
#
|
47
|
+
# @return [String] 2 caracteres numéricos.
|
48
|
+
def carteira=(valor)
|
49
|
+
@carteira = valor.to_s.rjust(2,'0') unless valor.nil?
|
50
|
+
end
|
37
51
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
52
|
+
# Dígito verificador do banco
|
53
|
+
#
|
54
|
+
# @return [String] 1 caracteres numéricos.
|
55
|
+
def banco_dv
|
56
|
+
self.banco.modulo11_9to2_10_como_x
|
57
|
+
end
|
43
58
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
fator = self.data_vencimento.fator_vencimento
|
50
|
-
# A montagem é feita baseada na quantidade de dígitos do convênio.
|
51
|
-
case convenio.size
|
52
|
-
when 8 # Nosso Numero de 17 dígitos com Convenio de 8 dígitos e numero_documento de 9 dígitos
|
53
|
-
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 9)
|
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
|
55
|
-
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{convenio}#{numero_documento}#{self.carteira}"
|
56
|
-
when 7 # Nosso Numero de 17 dígitos com Convenio de 7 dígitos e numero_documento de 10 dígitos
|
57
|
-
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 10)
|
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
|
59
|
-
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}000000#{convenio}#{numero_documento}#{self.carteira}"
|
60
|
-
when 6 # Convenio de 6 dígitos
|
61
|
-
if self.codigo_servico == false
|
62
|
-
# Nosso Numero de 11 dígitos com Convenio de 6 dígitos e numero_documento de 5 digitos
|
63
|
-
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 5)
|
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
|
65
|
-
agencia = self.agencia.zeros_esquerda(:tamanho => 4)
|
66
|
-
conta = self.conta_corrente.zeros_esquerda(:tamanho => 8)
|
67
|
-
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}#{agencia}#{conta}#{self.carteira}"
|
68
|
-
else
|
69
|
-
# Nosso Numero de 17 dígitos com Convenio de 6 dígitos e sem numero_documento, carteira 16 e 18
|
70
|
-
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 17)
|
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)
|
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))
|
73
|
-
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}21"
|
59
|
+
# Retorna dígito verificador da agência
|
60
|
+
#
|
61
|
+
# @return [String] 1 caracteres numéricos.
|
62
|
+
def agencia_dv
|
63
|
+
self.agencia.modulo11_9to2_10_como_x
|
74
64
|
end
|
75
|
-
when 4 # Nosso Numero de 7 dígitos com Convenio de 4 dígitos e sem numero_documento
|
76
|
-
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 7)
|
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
|
78
|
-
agencia = self.agencia.zeros_esquerda(:tamanho => 4)
|
79
|
-
conta = self.conta_corrente.zeros_esquerda(:tamanho => 8)
|
80
|
-
numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{convenio}#{numero_documento}#{agencia}#{conta}#{self.carteira}"
|
81
|
-
else
|
82
|
-
numero = ""
|
83
|
-
end
|
84
65
|
|
85
|
-
|
86
|
-
|
66
|
+
# Conta corrente
|
67
|
+
# @return [String] 8 caracteres numéricos.
|
68
|
+
def conta_corrente=(valor)
|
69
|
+
@conta_corrente = valor.to_s.rjust(8,'0') unless valor.nil?
|
70
|
+
end
|
87
71
|
|
72
|
+
# Dígito verificador da conta corrente
|
73
|
+
# @return [String] 1 caracteres numéricos.
|
74
|
+
def conta_corrente_dv
|
75
|
+
self.conta_corrente.modulo11_9to2_10_como_x
|
76
|
+
end
|
77
|
+
|
78
|
+
# Número seqüencial utilizado para identificar o boleto.
|
79
|
+
# (Número de dígitos depende do tipo de convênio).
|
80
|
+
# @raise [Brcobranca::NaoImplementado] Caso o tipo de convênio não seja suportado pelo Brcobranca.
|
81
|
+
#
|
82
|
+
# @overload numero_documento
|
83
|
+
# Nosso Número de 17 dígitos com Convenio de 8 dígitos.
|
84
|
+
# @return [String] 9 caracteres numéricos.
|
85
|
+
# @overload numero_documento
|
86
|
+
# Nosso Número de 17 dígitos com Convenio de 7 dígitos.
|
87
|
+
# @return [String] 10 caracteres numéricos.
|
88
|
+
# @overload numero_documento
|
89
|
+
# Nosso Número de 7 dígitos com Convenio de 4 dígitos.
|
90
|
+
# @return [String] 4 caracteres numéricos.
|
91
|
+
# @overload numero_documento
|
92
|
+
# Nosso Número de 11 dígitos com Convenio de 6 dígitos e {#codigo_servico} false.
|
93
|
+
# @return [String] 5 caracteres numéricos.
|
94
|
+
# @overload numero_documento
|
95
|
+
# Nosso Número de 17 dígitos com Convenio de 6 dígitos e {#codigo_servico} true. (carteira 16 e 18)
|
96
|
+
# @return [String] 17 caracteres numéricos.
|
97
|
+
def numero_documento
|
98
|
+
quantidade = case @convenio.to_s.size
|
99
|
+
when 8
|
100
|
+
9
|
101
|
+
when 7
|
102
|
+
10
|
103
|
+
when 4
|
104
|
+
7
|
105
|
+
when 6
|
106
|
+
self.codigo_servico ? 17 : 5
|
107
|
+
else
|
108
|
+
raise Brcobranca::NaoImplementado.new("Tipo de convênio não implementado.")
|
109
|
+
end
|
110
|
+
quantidade ? @numero_documento.to_s.rjust(quantidade,'0') : @numero_documento
|
111
|
+
end
|
112
|
+
|
113
|
+
# Dígito verificador do nosso número.
|
114
|
+
# @return [String] 1 caracteres numéricos.
|
115
|
+
# @see BancoBrasil#numero_documento
|
116
|
+
def nosso_numero_dv
|
117
|
+
"#{self.convenio}#{self.numero_documento}".modulo11_9to2_10_como_x
|
118
|
+
end
|
119
|
+
|
120
|
+
# Nosso número para exibir no boleto.
|
121
|
+
# @return [String]
|
122
|
+
# @example
|
123
|
+
# boleto.nosso_numero_boleto #=> "12387989000004042-4"
|
124
|
+
def nosso_numero_boleto
|
125
|
+
"#{self.convenio}#{self.numero_documento}-#{self.nosso_numero_dv}"
|
126
|
+
end
|
127
|
+
|
128
|
+
# Agência + conta corrente do cliente para exibir no boleto.
|
129
|
+
# @return [String]
|
130
|
+
# @example
|
131
|
+
# boleto.agencia_conta_boleto #=> "0548-7 / 00001448-6"
|
132
|
+
def agencia_conta_boleto
|
133
|
+
"#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}"
|
134
|
+
end
|
135
|
+
|
136
|
+
# Segunda parte do código de barras.
|
137
|
+
# A montagem é feita baseada na quantidade de dígitos do convênio.
|
138
|
+
# @return [String] 25 caracteres numéricos.
|
139
|
+
def codigo_barras_segunda_parte
|
140
|
+
case self.convenio.to_s.size
|
141
|
+
when 8 # Nosso Número de 17 dígitos com Convenio de 8 dígitos e numero_documento de 9 dígitos
|
142
|
+
"000000#{self.convenio}#{self.numero_documento}#{self.carteira}"
|
143
|
+
when 7 # Nosso Número de 17 dígitos com Convenio de 7 dígitos e numero_documento de 10 dígitos
|
144
|
+
"000000#{self.convenio}#{self.numero_documento}#{self.carteira}"
|
145
|
+
when 6 # Convenio de 6 dígitos
|
146
|
+
if self.codigo_servico == false
|
147
|
+
# Nosso Número de 11 dígitos com Convenio de 6 dígitos e numero_documento de 5 dígitos
|
148
|
+
"#{self.convenio}#{self.numero_documento}#{self.agencia}#{self.conta_corrente}#{self.carteira}"
|
149
|
+
else
|
150
|
+
# Nosso Número de 17 dígitos com Convenio de 6 dígitos e sem numero_documento, carteira 16 e 18
|
151
|
+
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))
|
152
|
+
"#{self.convenio}#{self.numero_documento}21"
|
153
|
+
end
|
154
|
+
when 4 # Nosso Número de 7 dígitos com Convenio de 4 dígitos e sem numero_documento
|
155
|
+
"#{self.convenio}#{self.numero_documento}#{self.agencia}#{self.conta_corrente}#{self.carteira}"
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
160
|
+
end
|
88
161
|
end
|