brcobranca 3.1.3 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +11 -0
  6. data/Gemfile +2 -6
  7. data/Gemfile.lock +72 -23
  8. data/README.md +64 -0
  9. data/Rakefile +4 -8
  10. data/brcobranca.gemspec +27 -27
  11. data/lib/brcobranca/boleto/caixa.rb +2 -1
  12. data/lib/brcobranca/boleto/hsbc.rb +41 -22
  13. data/lib/brcobranca/boleto/sicredi.rb +10 -5
  14. data/lib/brcobranca/boleto/template/base.rb +2 -0
  15. data/lib/brcobranca/calculo.rb +0 -18
  16. data/lib/brcobranca/formatacao.rb +8 -8
  17. data/lib/brcobranca/retorno/retorno_cbr643.rb +2 -0
  18. data/lib/brcobranca/retorno/retorno_cnab240.rb +2 -0
  19. data/lib/brcobranca/retorno/retorno_cnab400.rb +2 -0
  20. data/lib/brcobranca/version.rb +3 -1
  21. data/lib/brcobranca.rb +3 -5
  22. data/spec/brcobranca/banco_bradesco_spec.rb +70 -70
  23. data/spec/brcobranca/banco_brasil_spec.rb +119 -119
  24. data/spec/brcobranca/banco_caixa_spec.rb +57 -58
  25. data/spec/brcobranca/banco_hsbc_spec.rb +74 -84
  26. data/spec/brcobranca/banco_sicredi_spec.rb +54 -54
  27. data/spec/brcobranca/base_spec.rb +77 -77
  28. data/spec/brcobranca/boletos_em_lote_spec.rb +6 -6
  29. data/spec/brcobranca/core_ext_spec.rb +128 -127
  30. data/spec/brcobranca/currency_spec.rb +52 -52
  31. data/spec/brcobranca/itau_spec.rb +81 -81
  32. data/spec/brcobranca/retorno_cbr643_spec.rb +25 -25
  33. data/spec/brcobranca/retorno_cnab400_spec.rb +23 -23
  34. data/spec/brcobranca/retorno_cnab_240_spec.rb +20 -20
  35. data/spec/brcobranca/rghost_spec.rb +5 -5
  36. data/spec/brcobranca/santander_spec.rb +58 -58
  37. data/spec/brcobranca_spec.rb +5 -5
  38. data/spec/spec.opts +8 -0
  39. data/spec/spec_helper.rb +10 -7
  40. metadata +123 -108
  41. data/.document +0 -5
  42. data/README.rdoc +0 -92
  43. data/lib/brcobranca/arquivos/logos/banespa.jpg +0 -0
  44. data/lib/brcobranca/arquivos/logos/real.jpg +0 -0
  45. data/lib/brcobranca/arquivos/logos/unibanco.jpg +0 -0
  46. data/lib/brcobranca/boleto/real.rb +0 -74
  47. data/lib/brcobranca/boleto/unibanco.rb +0 -115
  48. data/spec/brcobranca/banco_real_spec.rb +0 -162
  49. data/spec/brcobranca/banco_unibanco_spec.rb +0 -210
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f95231aca22a9e14c034c3859fcbcab148e4f47b
4
+ data.tar.gz: 9ae0c0ec252a27b78d4fd3afe932cf91b52cc031
5
+ SHA512:
6
+ metadata.gz: 6f297afaaacf0d70e94980ab62464a3ecf45bfea3d9f4e2a09c88c9414328d385d13a886b6941971e8df517e583ed805d2b9b1a2d91b82e2a49e27361ef51773
7
+ data.tar.gz: 29cbd36a25a62dad1e8a6428cda582174e89686edd0e94beb0d7dd0335d2be7583127f61f39f8661c156f1be83896f69e97a4e436a8a21c54c6bbf9ce4991064
data/.coveralls.yml ADDED
@@ -0,0 +1,2 @@
1
+ service_name: travis-ci
2
+ repo_token: EggczsM2SSumFitxyrqRNWaymPbvyXQwL
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ brcobranca
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.2
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm:
3
+ - '2.1.1'
4
+ - '2.0.0'
5
+ - '1.9.3'
6
+ branches:
7
+ only:
8
+ - master
9
+ addons:
10
+ code_climate:
11
+ repo_token: 69a23bee43b8c53271b1a6fbe18b6167de91a06d66ab19908dd52f73158ab71b
data/Gemfile CHANGED
@@ -2,9 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in brcobranca.gemspec
4
4
  gemspec
5
-
6
- gem "rake"
7
-
8
- group :test do
9
- gem "rspec", :require => false
10
- end
5
+ gem 'codeclimate-test-reporter', group: :test, require: nil
6
+ gem 'coveralls', require: false
data/Gemfile.lock CHANGED
@@ -2,36 +2,82 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  brcobranca (3.1.3)
5
- activemodel (~> 3)
6
- parseline (>= 1.0.3)
7
- rghost (~> 0.9)
5
+ activemodel (>= 3)
6
+ parseline (~> 1.0.3)
7
+ rghost (= 0.9.3)
8
8
  rghost_barcode (~> 0.9)
9
9
 
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- activemodel (3.2.13)
14
- activesupport (= 3.2.13)
15
- builder (~> 3.0.0)
16
- activesupport (3.2.13)
17
- i18n (= 0.6.1)
18
- multi_json (~> 1.0)
19
- builder (3.0.4)
20
- diff-lcs (1.2.4)
21
- i18n (0.6.1)
22
- multi_json (1.7.6)
13
+ activemodel (4.1.4)
14
+ activesupport (= 4.1.4)
15
+ builder (~> 3.1)
16
+ activesupport (4.1.4)
17
+ i18n (~> 0.6, >= 0.6.9)
18
+ json (~> 1.7, >= 1.7.7)
19
+ minitest (~> 5.1)
20
+ thread_safe (~> 0.1)
21
+ tzinfo (~> 1.1)
22
+ builder (3.2.2)
23
+ codeclimate-test-reporter (0.3.0)
24
+ simplecov (>= 0.7.1, < 1.0.0)
25
+ coderay (1.1.0)
26
+ coveralls (0.7.0)
27
+ multi_json (~> 1.3)
28
+ rest-client
29
+ simplecov (>= 0.7)
30
+ term-ansicolor
31
+ thor
32
+ diff-lcs (1.2.5)
33
+ docile (1.1.3)
34
+ i18n (0.6.11)
35
+ json (1.8.1)
36
+ method_source (0.8.2)
37
+ mime-types (2.3)
38
+ minitest (5.4.0)
39
+ multi_json (1.10.1)
23
40
  parseline (1.0.3)
24
- rake (10.0.4)
41
+ pry (0.10.0)
42
+ coderay (~> 1.1.0)
43
+ method_source (~> 0.8.1)
44
+ slop (~> 3.4)
45
+ pry (0.10.0-x86-mingw32)
46
+ coderay (~> 1.1.0)
47
+ method_source (~> 0.8.1)
48
+ slop (~> 3.4)
49
+ win32console (~> 1.3)
50
+ rake (10.3.2)
51
+ rest-client (1.6.7)
52
+ mime-types (>= 1.16)
25
53
  rghost (0.9.3)
26
54
  rghost_barcode (0.9)
27
- rspec (2.13.0)
28
- rspec-core (~> 2.13.0)
29
- rspec-expectations (~> 2.13.0)
30
- rspec-mocks (~> 2.13.0)
31
- rspec-core (2.13.1)
32
- rspec-expectations (2.13.0)
33
- diff-lcs (>= 1.1.3, < 2.0)
34
- rspec-mocks (2.13.1)
55
+ rspec (3.0.0)
56
+ rspec-core (~> 3.0.0)
57
+ rspec-expectations (~> 3.0.0)
58
+ rspec-mocks (~> 3.0.0)
59
+ rspec-core (3.0.3)
60
+ rspec-support (~> 3.0.0)
61
+ rspec-expectations (3.0.3)
62
+ diff-lcs (>= 1.2.0, < 2.0)
63
+ rspec-support (~> 3.0.0)
64
+ rspec-mocks (3.0.3)
65
+ rspec-support (~> 3.0.0)
66
+ rspec-support (3.0.3)
67
+ simplecov (0.8.2)
68
+ docile (~> 1.1.0)
69
+ multi_json
70
+ simplecov-html (~> 0.8.0)
71
+ simplecov-html (0.8.0)
72
+ slop (3.6.0)
73
+ term-ansicolor (1.3.0)
74
+ tins (~> 1.0)
75
+ thor (0.19.1)
76
+ thread_safe (0.3.4)
77
+ tins (1.3.0)
78
+ tzinfo (1.2.1)
79
+ thread_safe (~> 0.1)
80
+ win32console (1.3.2-x86-mingw32)
35
81
 
36
82
  PLATFORMS
37
83
  ruby
@@ -39,5 +85,8 @@ PLATFORMS
39
85
 
40
86
  DEPENDENCIES
41
87
  brcobranca!
88
+ codeclimate-test-reporter
89
+ coveralls
90
+ pry (~> 0.10.0)
42
91
  rake
43
- rspec
92
+ rspec (~> 3.0.0)
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ Gem para emissão de bloquetos de cobrança para bancos brasileiros.
2
+
3
+ [![Gem Version](http://img.shields.io/gem/v/brcobranca.svg)][gem]
4
+ [![Build Status](http://img.shields.io/travis/kivanio/brcobranca.svg)][travis]
5
+ [![Dependency Status](http://img.shields.io/gemnasium/kivanio/brcobranca.svg)][gemnasium]
6
+ [![Code Climate](http://img.shields.io/codeclimate/github/kivanio/brcobranca.svg)][codeclimate]
7
+ [![Coverage Status](http://img.shields.io/coveralls/kivanio/brcobranca.svg)][coveralls]
8
+
9
+ [gem]: https://rubygems.org/gems/brcobranca
10
+ [travis]: http://travis-ci.org/kivanio/brcobranca
11
+ [gemnasium]: https://gemnasium.com/kivanio/brcobranca
12
+ [codeclimate]: https://codeclimate.com/github/kivanio/brcobranca
13
+ [coveralls]: https://coveralls.io/r/kivanio/brcobranca
14
+
15
+ ### Exemplos
16
+
17
+ - http://github.com/kivanio/brcobranca_exemplo
18
+
19
+ ### Bancos Disponíveis
20
+
21
+ * Banco do Brasil
22
+ * Todas as carteiras presentes na documentação
23
+
24
+ * Banco Itaú
25
+ * Todas as carteiras presentes na documentação
26
+
27
+ * Banco HSBC
28
+ * CNR
29
+ * CSB - [Rafael DL](https://github.com/rafaeldl)
30
+
31
+ * Banco Bradesco
32
+ * Todas as carteiras presentes na documentação
33
+
34
+ * Banco Caixa
35
+ * Sem registro - [Túlio Ornelas](https://github.com/tulios)
36
+
37
+ * Banco SICREDI
38
+
39
+ * Banco Santander - [Ronaldo Araujo](https://github.com/ronaldoaraujo)
40
+ * Sem registro
41
+ * Com registro
42
+
43
+ ### Retornos Disponíveis
44
+
45
+ * CBR643
46
+ * CNAB240
47
+
48
+ ### Documentação dos boletos
49
+
50
+ Caso queira verificar(ou adicionar) alguma documentação sobre os boletos, acesse [nosso wiki](https://github.com/kivanio/brcobranca/wiki/Especifica%C3%A7%C3%A3o-dos-Boletos).
51
+
52
+ ### Rubydoc
53
+
54
+ - [versão estável](http://rubydoc.info/gems/brcobranca)
55
+ - [versão de desenvolvimento](http://rubydoc.info/github/kivanio/brcobranca/master/frames)
56
+
57
+ ### Apoio
58
+
59
+ [![RubyMine](http://www.jetbrains.com/ruby/features/ruby_banners/ruby1/ruby468x60_rubin.gif)](http://www.jetbrains.com/ruby/features?utm_source=RubyMineUser&utm_medium=Banner&utm_campaign=RubyMine)
60
+
61
+ ### Licença
62
+
63
+ - BSD
64
+ - Copyleft 2009 [Kivanio Barbosa](http://www.workingwithrails.com/recommendation/new/person/5679-kivanio-pereira-barbosa)
data/Rakefile CHANGED
@@ -1,11 +1,7 @@
1
- # encoding: UTF-8
2
-
3
- require 'bundler'
4
- Bundler::GemHelper.install_tasks
5
-
1
+ # -*- encoding: utf-8 -*-
2
+ require "bundler/gem_tasks"
6
3
  require 'rspec/core/rake_task'
7
4
 
8
- RSpec::Core::RakeTask.new('spec')
5
+ RSpec::Core::RakeTask.new(:spec)
9
6
 
10
- # If you want to make this the default task
11
- task :default => :spec
7
+ task :default => :spec
data/brcobranca.gemspec CHANGED
@@ -1,34 +1,34 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
4
  require "brcobranca/version"
4
5
 
5
- Gem::Specification.new do |s|
6
- s.name = "brcobranca"
7
- s.version = Brcobranca::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.authors = ["Kivanio Barbosa"]
10
- s.date = %q{2013-06-17}
11
- s.description = %q{Gem para emissão de bloquetos de cobrança de bancos brasileiros.}
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}
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "brcobranca"
8
+ gem.version = Brcobranca::VERSION
9
+ gem.platform = Gem::Platform::RUBY
10
+ gem.authors = ["Kivanio Barbosa"]
11
+ gem.date = %q{2013-06-17}
12
+ gem.description = %q{Gem para emissão de bloquetos de cobrança de bancos brasileiros.}
13
+ gem.summary = %q{Gem que permite trabalhar com bloquetos de cobrança para bancos brasileiros.}
14
+ gem.email = %q{kivanio@gmail.com}
15
+ gem.homepage = %q{http://rubygems.org/gems/brcobranca}
15
16
 
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"]
17
+ gem.files = `git ls-files`.split($/)
18
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
+ gem.require_paths = ['lib']
20
21
 
21
- s.requirements = ["GhostScript > 8.0, para gear PDF e código de Barras"]
22
- s.rubyforge_project = "brcobranca"
22
+ gem.requirements = ["GhostScript > 9.0, para gear PDF e código de Barras"]
23
23
 
24
- s.add_runtime_dependency(%q<rghost>, ["~> 0.9"])
25
- s.add_runtime_dependency(%q<rghost_barcode>, ["~> 0.9"])
26
- s.add_runtime_dependency(%q<parseline>, [">= 1.0.3"])
27
- s.add_runtime_dependency(%q<activemodel>, ["~> 3"])
24
+ # Gems that must be installed for sift to compile and build
25
+ gem.add_development_dependency 'pry', '~> 0.10.0'
26
+ gem.add_development_dependency 'rspec', '~> 3.0.0'
27
+ gem.add_development_dependency 'rake'
28
28
 
29
- s.post_install_message = %[
30
- ===========================================================================
31
- Visite http://www.boletorails.com.br para ver exemplos!
32
- ===========================================================================
33
- ]
34
- end
29
+ # Gems that must be intalled for sift to work
30
+ gem.add_dependency 'rghost', '0.9.3'
31
+ gem.add_dependency 'rghost_barcode', '~> 0.9'
32
+ gem.add_dependency 'parseline', '~> 1.0.3'
33
+ gem.add_dependency 'activemodel', '>= 3'
34
+ end
@@ -26,11 +26,12 @@ module Brcobranca
26
26
  # @param (see Brcobranca::Boleto::Base#initialize)
27
27
  def initialize campos = {}
28
28
  campos = {
29
- :carteira => "#{MODALIDADE_COBRANCA[:sem_registro]}#{EMISSAO_BOLETO[:cedente]}"
29
+ :carteira => "#{MODALIDADE_COBRANCA[:sem_registro]}#{EMISSAO_BOLETO[:cedente]}"
30
30
  }.merge!(campos)
31
31
 
32
32
  campos.merge!(:convenio => campos[:convenio].rjust(6, '0')) if campos[:convenio]
33
33
  campos.merge!(:numero_documento => campos[:numero_documento].rjust(15, '0')) if campos[:numero_documento]
34
+ campos.merge!(:local_pagamento => "PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE")
34
35
 
35
36
  super(campos)
36
37
  end
@@ -3,7 +3,7 @@ module Brcobranca
3
3
  module Boleto
4
4
  class Hsbc < Base # Banco HSBC
5
5
 
6
- validates_inclusion_of :carteira, :in => %w( CNR ), :message => "não existente para este banco."
6
+ validates_inclusion_of :carteira, :in => %w( CNR CSB ), :message => "não existente para este banco."
7
7
  validates_length_of :agencia, :maximum => 4, :message => "deve ser menor ou igual a 4 dígitos."
8
8
  validates_length_of :numero_documento, :maximum => 13, :message => "deve ser menor ou igual a 13 dígitos."
9
9
  validates_length_of :conta_corrente, :maximum => 7, :message => "deve ser menor ou igual a 7 dígitos."
@@ -28,26 +28,41 @@ module Brcobranca
28
28
  @numero_documento = valor.to_s.rjust(13,'0') if valor
29
29
  end
30
30
 
31
+ # Número seqüencial utilizado para identificar o boleto.
32
+ #
33
+ # O desenvolvedor poderá informar o código do nosso número quando gerado pelo banco
34
+ # @param valor Nosso número
35
+ def nosso_numero=(valor)
36
+ @nosso_numero = valor
37
+ end
38
+
31
39
  # Número seqüencial utilizado para identificar o boleto.
32
40
  #
33
41
  # Montagem é baseada na presença da data de vencimento.<br/>
34
- # <b>OBS:</b> Somente a carteira <b>CNR</b> está implementada.<br/>
42
+ # <b>OBS:</b> Somente as carteiras <b>CNR/CSB</b> estão implementadas.<br/>
35
43
  #
36
44
  # @return [String]
37
- # @raise [Brcobranca::NaoImplementado] Caso a carteira informada não for CNR.
45
+ # @raise [Brcobranca::NaoImplementado] Caso a carteira informada não for CNR/CSB.
38
46
  def nosso_numero
39
- if self.data_vencimento.kind_of?(Date)
40
- self.codigo_servico = "4"
41
- dia = self.data_vencimento.day.to_s.rjust(2,'0')
42
- mes = self.data_vencimento.month.to_s.rjust(2,'0')
43
- ano = self.data_vencimento.year.to_s[2..3]
44
- data = "#{dia}#{mes}#{ano}"
47
+ case self.carteira
48
+ when 'CNR' then
49
+ if self.data_vencimento.kind_of?(Date)
50
+ self.codigo_servico = "4"
51
+ dia = self.data_vencimento.day.to_s.rjust(2,'0')
52
+ mes = self.data_vencimento.month.to_s.rjust(2,'0')
53
+ ano = self.data_vencimento.year.to_s[2..3]
54
+ data = "#{dia}#{mes}#{ano}"
45
55
 
46
- parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11_9to2_10_como_zero}#{self.codigo_servico}"
47
- soma = parte_1.to_i + self.conta_corrente.to_i + data.to_i
48
- "#{parte_1}#{soma.to_s.modulo11_9to2_10_como_zero}"
49
- else
50
- raise Brcobranca::NaoImplementado.new("Tipo de carteira não implementado.")
56
+ parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11_9to2_10_como_zero}#{self.codigo_servico}"
57
+ soma = parte_1.to_i + self.conta_corrente.to_i + data.to_i
58
+ "#{parte_1}#{soma.to_s.modulo11_9to2_10_como_zero}"
59
+ else
60
+ raise "data_vencimento não é uma data."
61
+ end
62
+ when 'CSB'
63
+ @nosso_numero
64
+ else
65
+ raise Brcobranca::NaoImplementado.new("Tipo de carteira não implementado.")
51
66
  # TODO - Verificar outras carteiras.
52
67
  # self.codigo_servico = "5"
53
68
  # parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11_9to2_10_como_zero}#{self.codigo_servico}"
@@ -76,19 +91,23 @@ module Brcobranca
76
91
  # Segunda parte do código de barras.
77
92
  #
78
93
  # Montagem é baseada no tipo de carteira e na presença da data de vencimento<br/>
79
- # <b>OBS:</b> Somente a carteira <b>CNR</b> está implementada.<br/>
94
+ # <b>OBS:</b> Somente as carteiras <b>CNR/CSB</b> estão implementadas.<br/>
80
95
  #
81
96
  # @return [String] 25 caracteres numéricos.
82
- # @raise [Brcobranca::NaoImplementado] Caso a carteira informada não for CNR.
97
+ # @raise [Brcobranca::NaoImplementado] Caso a carteira informada não for CNR/CSB.
83
98
  def codigo_barras_segunda_parte
84
- if self.carteira == "CNR"
85
- dias_julianos = self.data_vencimento.to_juliano
86
- "#{self.conta_corrente}#{self.numero_documento}#{dias_julianos}2"
87
- else
88
- raise Brcobranca::NaoImplementado.new("Tipo de carteira não implementado.")
99
+ case self.carteira
100
+ when "CNR"
101
+ dias_julianos = self.data_vencimento.to_juliano
102
+ "#{self.conta_corrente}#{self.numero_documento}#{dias_julianos}2"
103
+ when "CSB"
104
+ raise Brcobranca::NaoImplementado.new("Nosso número não definido.") unless @nosso_numero
105
+ "#{self.nosso_numero}#{self.agencia}#{self.conta_corrente}001"
106
+ else
107
+ raise Brcobranca::NaoImplementado.new("Tipo de carteira não implementado.")
89
108
  end
90
109
  end
91
110
 
92
111
  end
93
112
  end
94
- end
113
+ end
@@ -1,4 +1,8 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ #
3
+ # Sicredi
4
+ # Documentação: http://www.shapeness.net.br/upload//Sicredi_240.pdf
5
+ #
2
6
  module Brcobranca
3
7
  module Boleto
4
8
  class Sicredi < Base # Banco SICREDI
@@ -8,10 +12,11 @@ module Brcobranca
8
12
  # <b>REQUERIDO</b>: Byte de identificação do cedente do bloqueto utilizado para compor o nosso número.
9
13
  attr_accessor :byte_idt
10
14
 
11
- validates_length_of :agencia, :maximum => 4, :message => "deve ser menor ou igual a 4 dígitos."
12
- validates_length_of :numero_documento, :maximum => 5, :message => "deve ser menor ou igual a 5 dígitos."
13
- validates_length_of :conta_corrente, :maximum => 5, :message => "deve ser menor ou igual a 5 dígitos."
14
- validates_length_of :carteira, :maximum => 2, :message => "deve ser menor ou igual a 2 dígitos."
15
+ validates_length_of :agencia, :maximum => 4, :message => 'deve ser menor ou igual a 4 dígitos.'
16
+ validates_length_of :numero_documento, :maximum => 5, :message => 'deve ser menor ou igual a 5 dígitos.'
17
+ validates_length_of :conta_corrente, :maximum => 5, :message => 'deve ser menor ou igual a 5 dígitos.'
18
+ validates_length_of :carteira, :maximum => 2, :message => 'deve ser menor ou igual a 2 dígitos.'
19
+ validates_length_of :byte_idt, :is => 1, :message => 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo cedente'
15
20
 
16
21
  # Nova instancia do Bradesco
17
22
  # @param (see Brcobranca::Boleto::Base#initialize)
@@ -56,7 +61,7 @@ module Brcobranca
56
61
  # Nosso número para exibir no boleto.
57
62
  # @return [String]
58
63
  # @example
59
- # boleto.nosso_numero_boleto #=> "06/00000004042-8"
64
+ # boleto.nosso_numero_boleto #=> "14/200022-5"
60
65
  def nosso_numero_boleto
61
66
  "#{numero_documento_with_byte_idt[0..1]}/#{numero_documento_with_byte_idt[2..-1]}-#{self.nosso_numero_dv}"
62
67
  end
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Brcobranca
2
4
  module Boleto
3
5
  module Template
@@ -22,24 +22,6 @@ module Brcobranca
22
22
  valor == 10 ? 0 : valor
23
23
  end
24
24
 
25
- # Calcula módulo 10 do Banespa.
26
- #
27
- # @return [Integer]
28
- # @raise [ArgumentError] Caso não seja um número inteiro.
29
- def modulo_10_banespa
30
- raise ArgumentError, "Número inválido" unless self.is_number?
31
-
32
- fatores = [7,3,1,9,7,3,1,9,7,3]
33
- total = 0
34
- posicao = 0
35
- self.to_s.split(//).each do |digito|
36
- total += (digito.to_i * fatores[posicao]).to_s.split(//)[-1].to_i
37
- posicao = (posicao < (fatores.size - 1)) ? (posicao + 1) : 0
38
- end
39
- dv = 10 - total.to_s.split(//)[-1].to_i
40
- dv == 10 ? 0 : dv
41
- end
42
-
43
25
  # Calcula módulo 11 com multiplicaroes de 9 a 2 segundo a BACEN.
44
26
  #
45
27
  # @return [Integer]
@@ -9,7 +9,7 @@ module Brcobranca
9
9
  # @example
10
10
  # "12345678901".to_br_cpf #=> 123.456.789-01
11
11
  def to_br_cpf
12
- self.to_s.gsub(/^(.{3})(.{3})(.{3})(.{2})$/,'\1.\2.\3-\4')
12
+ somente_numeros.gsub(/^(.{3})(.{3})(.{3})(.{2})$/,'\1.\2.\3-\4')
13
13
  end
14
14
 
15
15
  # Formata como CEP
@@ -19,7 +19,7 @@ module Brcobranca
19
19
  # "85253100".to_br_cep #=> "85253-100"
20
20
  # 85253100.to_br_cep #=> "85253-100"
21
21
  def to_br_cep
22
- self.to_s.gsub(/^(.{5})(.{3})$/,'\1-\2')
22
+ somente_numeros.gsub(/^(.{5})(.{3})$/,'\1-\2')
23
23
  end
24
24
 
25
25
  # Formata como CNPJ
@@ -28,7 +28,7 @@ module Brcobranca
28
28
  # @example
29
29
  # "12345678000901".to_br_cnpj #=> 12.345.678/0009-01
30
30
  def to_br_cnpj
31
- self.to_s.gsub(/^(.{2})(.{3})(.{3})(.{4})(.{2})$/,'\1.\2.\3/\4-\5')
31
+ somente_numeros.gsub(/^(.{2})(.{3})(.{3})(.{4})(.{2})$/,'\1.\2.\3/\4-\5')
32
32
  end
33
33
 
34
34
  # Gera formatação automática do documento baseado no tamanho do campo.
@@ -40,10 +40,10 @@ module Brcobranca
40
40
  # "12345678901".formata_documento #=> 123.456.789-01
41
41
  # "12345".formata_documento #=> 12345
42
42
  def formata_documento
43
- case self.to_s.size
44
- when 8 then self.to_br_cep
45
- when 11 then self.to_br_cpf
46
- when 14 then self.to_br_cnpj
43
+ case somente_numeros.size
44
+ when 8 then to_br_cep
45
+ when 11 then to_br_cpf
46
+ when 14 then to_br_cnpj
47
47
  else
48
48
  self
49
49
  end
@@ -55,7 +55,7 @@ module Brcobranca
55
55
  # @example
56
56
  # 1a23e45+".somente_numeros #=> 12345
57
57
  def somente_numeros
58
- self.to_s.gsub(/\D/,'')
58
+ to_s.gsub(/\D/,'')
59
59
  end
60
60
 
61
61
  # Monta a linha digitável padrão para todos os bancos segundo a BACEN.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'parseline'
2
4
  module Brcobranca
3
5
  module Retorno
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'parseline'
2
4
  module Brcobranca
3
5
  module Retorno
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'parseline'
2
4
  module Brcobranca
3
5
  module Retorno
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Brcobranca
2
- VERSION = "3.1.3"
4
+ VERSION = "3.2.0"
3
5
  end
data/lib/brcobranca.rb CHANGED
@@ -68,9 +68,8 @@ module Brcobranca
68
68
  # @param [Integer] (Padrão: 150)
69
69
  attr_accessor :resolucao
70
70
 
71
- # Ajusta o Encoding externo (do arquivo) - Ruby 1.9
72
- # Ex: Caso esteja dando UndefinedConversionError - from ASCII-8BIT to UTF-8
73
- # configurar com a string 'ascii-8bit'
71
+ # Ajusta o encoding do texto do boleto enviado para o GhostScript
72
+ # O valor 'ascii-8bit' evita problemas com acentos e cedilha
74
73
  # @return [String]
75
74
  # @param [String] (Padrão: nil)
76
75
  attr_accessor :external_encoding
@@ -80,6 +79,7 @@ module Brcobranca
80
79
  self.gerador = :rghost
81
80
  self.formato = :pdf
82
81
  self.resolucao = 150
82
+ self.external_encoding = 'ascii-8bit'
83
83
  end
84
84
  end
85
85
 
@@ -99,9 +99,7 @@ module Brcobranca
99
99
  autoload :BancoBrasil, 'brcobranca/boleto/banco_brasil'
100
100
  autoload :Itau, 'brcobranca/boleto/itau'
101
101
  autoload :Hsbc, 'brcobranca/boleto/hsbc'
102
- autoload :Real, 'brcobranca/boleto/real'
103
102
  autoload :Bradesco, 'brcobranca/boleto/bradesco'
104
- autoload :Unibanco, 'brcobranca/boleto/unibanco'
105
103
  autoload :Caixa, 'brcobranca/boleto/caixa'
106
104
  autoload :Sicredi, 'brcobranca/boleto/sicredi'
107
105
  autoload :Santander, 'brcobranca/boleto/santander'