brcobranca 4.1.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -1
- data/.rspec +1 -0
- data/.rubocop.yml +1 -1
- data/.travis.yml +2 -1
- data/Gemfile +4 -4
- data/Gemfile.lock +65 -53
- data/README.md +18 -5
- data/brcobranca.gemspec +8 -6
- data/lib/brcobranca/boleto/banco_brasil.rb +25 -27
- data/lib/brcobranca/boleto/base.rb +13 -6
- data/lib/brcobranca/boleto/bradesco.rb +4 -1
- data/lib/brcobranca/boleto/caixa.rb +14 -4
- data/lib/brcobranca/boleto/hsbc.rb +26 -26
- data/lib/brcobranca/boleto/santander.rb +6 -3
- data/lib/brcobranca/boleto/sicredi.rb +3 -5
- data/lib/brcobranca/boleto/template/rghost.rb +7 -5
- data/lib/brcobranca/boleto/template/rghost_carne.rb +1 -2
- data/lib/brcobranca/calculo.rb +19 -93
- data/lib/brcobranca/formatacao_string.rb +21 -0
- data/lib/brcobranca/remessa/base.rb +59 -0
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +117 -0
- data/lib/brcobranca/remessa/cnab240/base.rb +379 -0
- data/lib/brcobranca/remessa/cnab240/caixa.rb +103 -0
- data/lib/brcobranca/remessa/cnab400/base.rb +112 -0
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +128 -0
- data/lib/brcobranca/remessa/cnab400/itau.rb +149 -0
- data/lib/brcobranca/remessa/pagamento.rb +159 -0
- data/lib/brcobranca/retorno/base.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cnab400.rb +0 -2
- data/lib/brcobranca/version.rb +1 -1
- data/lib/brcobranca.rb +33 -17
- data/spec/brcobranca/banco_bradesco_spec.rb +0 -2
- data/spec/brcobranca/banco_brasil_spec.rb +0 -2
- data/spec/brcobranca/banco_caixa_spec.rb +0 -2
- data/spec/brcobranca/banco_hsbc_spec.rb +0 -3
- data/spec/brcobranca/banco_itau_spec.rb +0 -1
- data/spec/brcobranca/banco_santander_spec.rb +14 -14
- data/spec/brcobranca/banco_sicredi_spec.rb +0 -2
- data/spec/brcobranca/base_spec.rb +11 -0
- data/spec/brcobranca/boletos_em_lote_spec.rb +0 -2
- data/spec/brcobranca/core_ext_spec.rb +104 -58
- data/spec/brcobranca/remessa/base_spec.rb +87 -0
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +200 -0
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +88 -0
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +137 -0
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +51 -0
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +174 -0
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +160 -0
- data/spec/brcobranca/remessa/pagamento_spec.rb +197 -0
- data/spec/brcobranca/retorno_cbr643_spec.rb +0 -2
- data/spec/brcobranca/rghost_spec.rb +0 -2
- data/spec/shared_examples/cnab240.rb +206 -0
- data/spec/shared_examples/cnab400.rb +85 -0
- metadata +34 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 191577bf1cc0eef88703781e90a0fd8a09a84a3c
|
|
4
|
+
data.tar.gz: 14c1e24db904b85354cb45ccbe472e399667dab3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ccaf00a578c7470296d4716a7330426d80943dc17bff9844c9f65c9d35ec6297f311bc99a1bb5f8842831f9111636a9fe48f88c083f545d4c377af3a118cafd9
|
|
7
|
+
data.tar.gz: d30517c1f8a64a4279009b4c06ee5eaec0e4c26c9d3d2f0bbae5d4511838a1ba079e538354d9cf12875fb20dba20fa398990bf277d6e5647f0e1603a1cdfe8a4
|
data/.coveralls.yml
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
service_name: travis-ci
|
|
2
|
-
repo_token:
|
|
2
|
+
repo_token: BY52FW2I5Fbe6DGDfaxZajyneZ8uFszoU
|
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--color
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
|
@@ -5,13 +5,13 @@ gemspec
|
|
|
5
5
|
|
|
6
6
|
group :development do
|
|
7
7
|
gem 'pry', '~> 0.10.0'
|
|
8
|
-
gem 'rubocop', '~> 0.
|
|
9
|
-
gem 'rubocop-rspec', '~> 1.
|
|
8
|
+
gem 'rubocop', '~> 0.32.1'
|
|
9
|
+
gem 'rubocop-rspec', '~> 1.3.0'
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
group :test do
|
|
13
13
|
gem 'codeclimate-test-reporter', require: nil
|
|
14
14
|
gem 'coveralls', require: false
|
|
15
|
-
gem 'rspec', '~> 3.
|
|
16
|
-
gem 'rake', '~> 10.
|
|
15
|
+
gem 'rspec', '~> 3.3'
|
|
16
|
+
gem 'rake', '~> 10.4'
|
|
17
17
|
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
brcobranca (
|
|
4
|
+
brcobranca (5.0.0)
|
|
5
5
|
activemodel (>= 3)
|
|
6
6
|
parseline (~> 1.0.3)
|
|
7
7
|
rghost (= 0.9.5)
|
|
@@ -10,43 +10,45 @@ PATH
|
|
|
10
10
|
GEM
|
|
11
11
|
remote: https://rubygems.org/
|
|
12
12
|
specs:
|
|
13
|
-
activemodel (4.
|
|
14
|
-
activesupport (= 4.
|
|
13
|
+
activemodel (4.2.3)
|
|
14
|
+
activesupport (= 4.2.3)
|
|
15
15
|
builder (~> 3.1)
|
|
16
|
-
activesupport (4.
|
|
17
|
-
i18n (~> 0.
|
|
16
|
+
activesupport (4.2.3)
|
|
17
|
+
i18n (~> 0.7)
|
|
18
18
|
json (~> 1.7, >= 1.7.7)
|
|
19
19
|
minitest (~> 5.1)
|
|
20
|
-
thread_safe (~> 0.
|
|
20
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
|
21
21
|
tzinfo (~> 1.1)
|
|
22
22
|
ast (2.0.0)
|
|
23
23
|
astrolabe (1.3.0)
|
|
24
24
|
parser (>= 2.2.0.pre.3, < 3.0)
|
|
25
25
|
builder (3.2.2)
|
|
26
|
-
codeclimate-test-reporter (0.4.
|
|
26
|
+
codeclimate-test-reporter (0.4.7)
|
|
27
27
|
simplecov (>= 0.7.1, < 1.0.0)
|
|
28
28
|
coderay (1.1.0)
|
|
29
|
-
coveralls (0.
|
|
30
|
-
|
|
31
|
-
rest-client
|
|
32
|
-
simplecov (
|
|
33
|
-
term-ansicolor
|
|
34
|
-
thor
|
|
29
|
+
coveralls (0.8.2)
|
|
30
|
+
json (~> 1.8)
|
|
31
|
+
rest-client (>= 1.6.8, < 2)
|
|
32
|
+
simplecov (~> 0.10.0)
|
|
33
|
+
term-ansicolor (~> 1.3)
|
|
34
|
+
thor (~> 0.19.1)
|
|
35
35
|
diff-lcs (1.2.5)
|
|
36
36
|
docile (1.1.5)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
domain_name (0.5.24)
|
|
38
|
+
unf (>= 0.0.5, < 1.0.0)
|
|
39
|
+
ffi (1.9.10)
|
|
40
|
+
http-cookie (1.0.2)
|
|
41
|
+
domain_name (~> 0.5)
|
|
42
|
+
i18n (0.7.0)
|
|
43
|
+
json (1.8.3)
|
|
40
44
|
method_source (0.8.2)
|
|
41
|
-
mime-types (2.
|
|
42
|
-
minitest (5.
|
|
43
|
-
|
|
44
|
-
netrc (0.7.7)
|
|
45
|
+
mime-types (2.6.1)
|
|
46
|
+
minitest (5.7.0)
|
|
47
|
+
netrc (0.10.3)
|
|
45
48
|
parseline (1.0.3)
|
|
46
|
-
parser (2.2.
|
|
49
|
+
parser (2.2.2.6)
|
|
47
50
|
ast (>= 1.1, < 3.0)
|
|
48
|
-
|
|
49
|
-
powerpack (0.0.9)
|
|
51
|
+
powerpack (0.1.1)
|
|
50
52
|
pry (0.10.1)
|
|
51
53
|
coderay (~> 1.1.0)
|
|
52
54
|
method_source (~> 0.8.1)
|
|
@@ -57,49 +59,56 @@ GEM
|
|
|
57
59
|
slop (~> 3.4)
|
|
58
60
|
win32console (~> 1.3)
|
|
59
61
|
rainbow (2.0.0)
|
|
60
|
-
rake (10.
|
|
61
|
-
rest-client (1.
|
|
62
|
+
rake (10.4.2)
|
|
63
|
+
rest-client (1.8.0)
|
|
64
|
+
http-cookie (>= 1.0.2, < 2.0)
|
|
62
65
|
mime-types (>= 1.16, < 3.0)
|
|
63
66
|
netrc (~> 0.7)
|
|
64
|
-
rest-client (1.
|
|
67
|
+
rest-client (1.8.0-x86-mingw32)
|
|
65
68
|
ffi (~> 1.9)
|
|
69
|
+
http-cookie (>= 1.0.2, < 2.0)
|
|
66
70
|
mime-types (>= 1.16, < 3.0)
|
|
67
71
|
netrc (~> 0.7)
|
|
68
72
|
rghost (0.9.5)
|
|
69
73
|
rghost_barcode (0.9)
|
|
70
|
-
rspec (3.
|
|
71
|
-
rspec-core (~> 3.
|
|
72
|
-
rspec-expectations (~> 3.
|
|
73
|
-
rspec-mocks (~> 3.
|
|
74
|
-
rspec-core (3.1
|
|
75
|
-
rspec-support (~> 3.
|
|
76
|
-
rspec-expectations (3.
|
|
74
|
+
rspec (3.3.0)
|
|
75
|
+
rspec-core (~> 3.3.0)
|
|
76
|
+
rspec-expectations (~> 3.3.0)
|
|
77
|
+
rspec-mocks (~> 3.3.0)
|
|
78
|
+
rspec-core (3.3.1)
|
|
79
|
+
rspec-support (~> 3.3.0)
|
|
80
|
+
rspec-expectations (3.3.0)
|
|
81
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
82
|
+
rspec-support (~> 3.3.0)
|
|
83
|
+
rspec-mocks (3.3.1)
|
|
77
84
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
78
|
-
rspec-support (~> 3.
|
|
79
|
-
rspec-
|
|
80
|
-
|
|
81
|
-
rspec-support (3.1.1)
|
|
82
|
-
rubocop (0.26.1)
|
|
85
|
+
rspec-support (~> 3.3.0)
|
|
86
|
+
rspec-support (3.3.0)
|
|
87
|
+
rubocop (0.32.1)
|
|
83
88
|
astrolabe (~> 1.3)
|
|
84
|
-
parser (>= 2.2.
|
|
85
|
-
powerpack (~> 0.
|
|
89
|
+
parser (>= 2.2.2.5, < 3.0)
|
|
90
|
+
powerpack (~> 0.1)
|
|
86
91
|
rainbow (>= 1.99.1, < 3.0)
|
|
87
92
|
ruby-progressbar (~> 1.4)
|
|
88
|
-
rubocop-rspec (1.
|
|
89
|
-
ruby-progressbar (1.
|
|
90
|
-
simplecov (0.
|
|
93
|
+
rubocop-rspec (1.3.0)
|
|
94
|
+
ruby-progressbar (1.7.5)
|
|
95
|
+
simplecov (0.10.0)
|
|
91
96
|
docile (~> 1.1.0)
|
|
92
|
-
|
|
93
|
-
simplecov-html (~> 0.
|
|
94
|
-
simplecov-html (0.
|
|
97
|
+
json (~> 1.8)
|
|
98
|
+
simplecov-html (~> 0.10.0)
|
|
99
|
+
simplecov-html (0.10.0)
|
|
95
100
|
slop (3.6.0)
|
|
96
|
-
term-ansicolor (1.3.
|
|
101
|
+
term-ansicolor (1.3.2)
|
|
97
102
|
tins (~> 1.0)
|
|
98
103
|
thor (0.19.1)
|
|
99
|
-
thread_safe (0.3.
|
|
100
|
-
tins (1.
|
|
104
|
+
thread_safe (0.3.5)
|
|
105
|
+
tins (1.5.4)
|
|
101
106
|
tzinfo (1.2.2)
|
|
102
107
|
thread_safe (~> 0.1)
|
|
108
|
+
unf (0.1.4)
|
|
109
|
+
unf_ext
|
|
110
|
+
unf_ext (0.0.7.1)
|
|
111
|
+
unf_ext (0.0.7.1-x86-mingw32)
|
|
103
112
|
win32console (1.3.2-x86-mingw32)
|
|
104
113
|
|
|
105
114
|
PLATFORMS
|
|
@@ -111,7 +120,10 @@ DEPENDENCIES
|
|
|
111
120
|
codeclimate-test-reporter
|
|
112
121
|
coveralls
|
|
113
122
|
pry (~> 0.10.0)
|
|
114
|
-
rake (~> 10.
|
|
115
|
-
rspec (~> 3.
|
|
116
|
-
rubocop (~> 0.
|
|
117
|
-
rubocop-rspec (~> 1.
|
|
123
|
+
rake (~> 10.4)
|
|
124
|
+
rspec (~> 3.3)
|
|
125
|
+
rubocop (~> 0.32.1)
|
|
126
|
+
rubocop-rspec (~> 1.3.0)
|
|
127
|
+
|
|
128
|
+
BUNDLED WITH
|
|
129
|
+
1.10.5
|
data/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros.
|
|
|
4
4
|
[][travis]
|
|
5
5
|
[][gemnasium]
|
|
6
6
|
[][codeclimate]
|
|
7
|
-
[](https://coveralls.io/r/kivanio/brcobranca)
|
|
8
8
|
|
|
9
9
|
[gem]: https://rubygems.org/gems/brcobranca
|
|
10
10
|
[travis]: http://travis-ci.org/kivanio/brcobranca
|
|
@@ -14,6 +14,7 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros.
|
|
|
14
14
|
|
|
15
15
|
### Exemplos
|
|
16
16
|
|
|
17
|
+
- https://brcobranca.herokuapp.com
|
|
17
18
|
- http://github.com/kivanio/brcobranca_exemplo
|
|
18
19
|
|
|
19
20
|
### Bancos Disponíveis
|
|
@@ -44,10 +45,20 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros.
|
|
|
44
45
|
|
|
45
46
|
* CBR643
|
|
46
47
|
* CNAB240
|
|
48
|
+
* CNAB400
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
Para CNABs do tipo 240 indico usar a gem [cnab240](https://github.com/eduardordm/cnab240) que é muito completa.
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
### Remessas Disponíveis
|
|
53
|
+
|
|
54
|
+
* Banco do Brasil (CNAB240) [Isabella](https://github.com/isabellaSantos) da [Zaez](http://www.zaez.net)
|
|
55
|
+
* Caixa Economica Federal (CNAB240) [Isabella](https://github.com/isabellaSantos) da [Zaez](http://www.zaez.net)
|
|
56
|
+
* Bradesco (CNAB400) [Isabella](https://github.com/isabellaSantos) da [Zaez](http://www.zaez.net)
|
|
57
|
+
* Itaú (CNAB400) [Isabella](https://github.com/isabellaSantos) da [Zaez](http://www.zaez.net)
|
|
58
|
+
|
|
59
|
+
### Documentação
|
|
60
|
+
|
|
61
|
+
Caso queira verificar(ou adicionar) alguma documentação, acesse [nosso wiki](https://github.com/kivanio/brcobranca/wiki).
|
|
51
62
|
|
|
52
63
|
### Rubydoc
|
|
53
64
|
|
|
@@ -58,7 +69,9 @@ Caso queira verificar(ou adicionar) alguma documentação sobre os boletos, aces
|
|
|
58
69
|
|
|
59
70
|
[](http://www.jetbrains.com/ruby/features?utm_source=RubyMineUser&utm_medium=Banner&utm_campaign=RubyMine)
|
|
60
71
|
|
|
72
|
+
[Boleto Simples](https://wwww.boletosimples.com.br)
|
|
73
|
+
|
|
61
74
|
### Licença
|
|
62
75
|
|
|
63
|
-
|
|
64
|
-
|
|
76
|
+
* BSD
|
|
77
|
+
* Copyleft 2009 [Kivanio Barbosa](http://www.workingwithrails.com/recommendation/new/person/5679-kivanio-pereira-barbosa)
|
data/brcobranca.gemspec
CHANGED
|
@@ -6,18 +6,20 @@ require 'brcobranca/version'
|
|
|
6
6
|
Gem::Specification.new do |gem|
|
|
7
7
|
gem.name = 'brcobranca'
|
|
8
8
|
gem.version = Brcobranca::VERSION
|
|
9
|
-
gem.authors = [
|
|
10
|
-
gem.description =
|
|
11
|
-
gem.summary =
|
|
12
|
-
gem.email =
|
|
13
|
-
gem.homepage =
|
|
14
|
-
gem.files = `git ls-files`.split(
|
|
9
|
+
gem.authors = ['Kivanio Barbosa']
|
|
10
|
+
gem.description = 'Gem para emissao de bloquetos de cobranca de bancos brasileiros.'
|
|
11
|
+
gem.summary = 'Gem que permite trabalhar com bloquetos de cobranca para bancos brasileiros.'
|
|
12
|
+
gem.email = 'kivanio@gmail.com'
|
|
13
|
+
gem.homepage = 'http://rubygems.org/gems/brcobranca'
|
|
14
|
+
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
|
15
15
|
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
|
16
16
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
17
17
|
gem.require_paths = ['lib']
|
|
18
18
|
|
|
19
19
|
gem.requirements = ['GhostScript > 9.0, para gear PDF e código de Barras']
|
|
20
20
|
|
|
21
|
+
gem.required_ruby_version = '>= 1.9'
|
|
22
|
+
|
|
21
23
|
# Gems that must be intalled for sift to work
|
|
22
24
|
gem.add_dependency 'rghost', '0.9.5'
|
|
23
25
|
gem.add_dependency 'rghost_barcode', '~> 0.9'
|
|
@@ -11,19 +11,17 @@ module Brcobranca
|
|
|
11
11
|
valor_tamanho = value.to_s.size
|
|
12
12
|
registro_tamanho = record.convenio.to_s.size
|
|
13
13
|
quantidade = case
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
nil
|
|
26
|
-
end
|
|
14
|
+
when (valor_tamanho > 9) && (registro_tamanho == 8)
|
|
15
|
+
'9'
|
|
16
|
+
when (valor_tamanho > 10) && (registro_tamanho == 7)
|
|
17
|
+
'10'
|
|
18
|
+
when (valor_tamanho > 7) && (registro_tamanho == 4)
|
|
19
|
+
'7'
|
|
20
|
+
when (valor_tamanho > 5) && (registro_tamanho == 6) && (!record.codigo_servico)
|
|
21
|
+
'5'
|
|
22
|
+
when (valor_tamanho > 17) && (registro_tamanho == 6) && (record.codigo_servico)
|
|
23
|
+
'17'
|
|
24
|
+
end
|
|
27
25
|
record.errors.add attr, "deve ser menor ou igual a #{quantidade} dígitos." if quantidade
|
|
28
26
|
end
|
|
29
27
|
|
|
@@ -52,14 +50,14 @@ module Brcobranca
|
|
|
52
50
|
#
|
|
53
51
|
# @return [String] 1 caracteres numéricos.
|
|
54
52
|
def banco_dv
|
|
55
|
-
banco.
|
|
53
|
+
banco.modulo11(mapeamento: { 10 => 'X' })
|
|
56
54
|
end
|
|
57
55
|
|
|
58
56
|
# Retorna dígito verificador da agência
|
|
59
57
|
#
|
|
60
58
|
# @return [String] 1 caracteres numéricos.
|
|
61
59
|
def agencia_dv
|
|
62
|
-
agencia.
|
|
60
|
+
agencia.modulo11(mapeamento: { 10 => 'X' })
|
|
63
61
|
end
|
|
64
62
|
|
|
65
63
|
# Conta corrente
|
|
@@ -71,7 +69,7 @@ module Brcobranca
|
|
|
71
69
|
# Dígito verificador da conta corrente
|
|
72
70
|
# @return [String] 1 caracteres numéricos.
|
|
73
71
|
def conta_corrente_dv
|
|
74
|
-
conta_corrente.
|
|
72
|
+
conta_corrente.modulo11(mapeamento: { 10 => 'X' })
|
|
75
73
|
end
|
|
76
74
|
|
|
77
75
|
# Número seqüencial utilizado para identificar o boleto.
|
|
@@ -95,16 +93,16 @@ module Brcobranca
|
|
|
95
93
|
# @return [String] 17 caracteres numéricos.
|
|
96
94
|
def numero_documento
|
|
97
95
|
quantidade = case @convenio.to_s.size
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
96
|
+
when 8
|
|
97
|
+
9
|
|
98
|
+
when 7
|
|
99
|
+
10
|
|
100
|
+
when 4
|
|
101
|
+
7
|
|
102
|
+
when 6
|
|
103
|
+
codigo_servico ? 17 : 5
|
|
104
|
+
else
|
|
105
|
+
fail Brcobranca::NaoImplementado.new('Tipo de convênio não implementado.')
|
|
108
106
|
end
|
|
109
107
|
quantidade ? @numero_documento.to_s.rjust(quantidade, '0') : @numero_documento
|
|
110
108
|
end
|
|
@@ -113,7 +111,7 @@ module Brcobranca
|
|
|
113
111
|
# @return [String] 1 caracteres numéricos.
|
|
114
112
|
# @see BancoBrasil#numero_documento
|
|
115
113
|
def nosso_numero_dv
|
|
116
|
-
"#{convenio}#{numero_documento}".
|
|
114
|
+
"#{convenio}#{numero_documento}".modulo11(mapeamento: { 10 => 'X' })
|
|
117
115
|
end
|
|
118
116
|
|
|
119
117
|
# Nosso número para exibir no boleto.
|
|
@@ -108,7 +108,7 @@ module Brcobranca
|
|
|
108
108
|
# Dígito verificador do banco
|
|
109
109
|
# @return [Integer] 1 caracteres numéricos.
|
|
110
110
|
def banco_dv
|
|
111
|
-
banco.
|
|
111
|
+
banco.modulo11
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
# Código da agencia
|
|
@@ -120,19 +120,19 @@ module Brcobranca
|
|
|
120
120
|
# Dígito verificador da agência
|
|
121
121
|
# @return [Integer] 1 caracteres numéricos.
|
|
122
122
|
def agencia_dv
|
|
123
|
-
agencia.
|
|
123
|
+
agencia.modulo11
|
|
124
124
|
end
|
|
125
125
|
|
|
126
126
|
# Dígito verificador da conta corrente
|
|
127
127
|
# @return [Integer] 1 caracteres numéricos.
|
|
128
128
|
def conta_corrente_dv
|
|
129
|
-
conta_corrente.
|
|
129
|
+
conta_corrente.modulo11
|
|
130
130
|
end
|
|
131
131
|
|
|
132
132
|
# Dígito verificador do nosso número
|
|
133
133
|
# @return [Integer] 1 caracteres numéricos.
|
|
134
134
|
def nosso_numero_dv
|
|
135
|
-
numero_documento.
|
|
135
|
+
numero_documento.modulo11
|
|
136
136
|
end
|
|
137
137
|
|
|
138
138
|
# @abstract Deverá ser sobreescrito para cada banco.
|
|
@@ -156,8 +156,10 @@ module Brcobranca
|
|
|
156
156
|
# @return [Date]
|
|
157
157
|
# @raise [ArgumentError] Caso {#data_documento} esteja em branco.
|
|
158
158
|
def data_vencimento
|
|
159
|
-
fail ArgumentError, '
|
|
159
|
+
fail ArgumentError, 'Data Documento não pode estar em branco.' unless data_documento.present?
|
|
160
160
|
return data_documento unless dias_vencimento
|
|
161
|
+
|
|
162
|
+
self.data_documento = Date.parse(data_documento) if data_documento.is_a?(String)
|
|
161
163
|
(data_documento + dias_vencimento.to_i)
|
|
162
164
|
end
|
|
163
165
|
|
|
@@ -191,7 +193,12 @@ module Brcobranca
|
|
|
191
193
|
codigo = codigo_barras_primeira_parte # 18 digitos
|
|
192
194
|
codigo << codigo_barras_segunda_parte # 25 digitos
|
|
193
195
|
if codigo =~ /^(\d{4})(\d{39})$/
|
|
194
|
-
|
|
196
|
+
|
|
197
|
+
codigo_dv = codigo.modulo11(
|
|
198
|
+
multiplicador: (2..9).to_a,
|
|
199
|
+
mapeamento: { 0 => 1, 10 => 1, 11 => 1 }
|
|
200
|
+
) { |t| 11 - (t % 11) }
|
|
201
|
+
|
|
195
202
|
codigo = "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}"
|
|
196
203
|
codigo
|
|
197
204
|
else
|
|
@@ -46,7 +46,10 @@ module Brcobranca
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def nosso_numero_dv
|
|
49
|
-
"#{carteira}#{numero_documento}".
|
|
49
|
+
"#{carteira}#{numero_documento}".modulo11(
|
|
50
|
+
multiplicador: [2, 3, 4, 5, 6, 7],
|
|
51
|
+
mapeamento: { 10 => 'P', 11 => 0 }
|
|
52
|
+
) { |total| 11 - (total % 11) }
|
|
50
53
|
end
|
|
51
54
|
|
|
52
55
|
# Agência + conta corrente do cliente para exibir no boleto.
|
|
@@ -45,7 +45,7 @@ module Brcobranca
|
|
|
45
45
|
def banco_dv
|
|
46
46
|
'0'
|
|
47
47
|
end
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
# Número do convênio/contrato do cliente junto ao banco.
|
|
50
50
|
# @return [String] 6 caracteres numéricos.
|
|
51
51
|
def convenio=(valor)
|
|
@@ -70,7 +70,10 @@ module Brcobranca
|
|
|
70
70
|
# Utiliza-se o [-1..-1] para retornar o último caracter
|
|
71
71
|
# @return [String]
|
|
72
72
|
def nosso_numero_dv
|
|
73
|
-
"#{carteira}#{numero_documento}".
|
|
73
|
+
"#{carteira}#{numero_documento}".modulo11(
|
|
74
|
+
multiplicador: (2..9).to_a,
|
|
75
|
+
mapeamento: { 10 => 0, 11 => 0 }
|
|
76
|
+
) { |total| 11 - (total % 11) }.to_s
|
|
74
77
|
end
|
|
75
78
|
|
|
76
79
|
# Número da agência/código cedente do cliente para exibir no boleto.
|
|
@@ -84,7 +87,10 @@ module Brcobranca
|
|
|
84
87
|
# Dígito verificador do convênio ou código do cedente
|
|
85
88
|
# @return [String]
|
|
86
89
|
def convenio_dv
|
|
87
|
-
|
|
90
|
+
convenio.modulo11(
|
|
91
|
+
multiplicador: (2..9).to_a,
|
|
92
|
+
mapeamento: { 10 => 0, 11 => 0 }
|
|
93
|
+
) { |total| 11 - (total % 11) }.to_s
|
|
88
94
|
end
|
|
89
95
|
|
|
90
96
|
# Monta a segunda parte do código de barras.
|
|
@@ -106,7 +112,11 @@ module Brcobranca
|
|
|
106
112
|
"#{nosso_numero_boleto[1..1]}" \
|
|
107
113
|
"#{nosso_numero_boleto[8..16]}"
|
|
108
114
|
|
|
109
|
-
"#{campo_livre}
|
|
115
|
+
"#{campo_livre}" +
|
|
116
|
+
campo_livre.modulo11(
|
|
117
|
+
multiplicador: (2..9).to_a,
|
|
118
|
+
mapeamento: { 10 => 0, 11 => 0 }
|
|
119
|
+
) { |total| 11 - (total % 11) }.to_s
|
|
110
120
|
end
|
|
111
121
|
end
|
|
112
122
|
end
|
|
@@ -42,29 +42,29 @@ module Brcobranca
|
|
|
42
42
|
# @raise [Brcobranca::NaoImplementado] Caso a carteira informada não for CNR/CSB.
|
|
43
43
|
def nosso_numero
|
|
44
44
|
case carteira
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
when 'CNR' then
|
|
46
|
+
if data_vencimento.is_a?(Date)
|
|
47
|
+
self.codigo_servico = '4'
|
|
48
|
+
dia = data_vencimento.day.to_s.rjust(2, '0')
|
|
49
|
+
mes = data_vencimento.month.to_s.rjust(2, '0')
|
|
50
|
+
ano = data_vencimento.year.to_s[2..3]
|
|
51
|
+
data = "#{dia}#{mes}#{ano}"
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
else
|
|
57
|
-
fail 'data_vencimento não é uma data.'
|
|
58
|
-
end
|
|
59
|
-
when 'CSB'
|
|
60
|
-
@nosso_numero
|
|
53
|
+
parte_1 = "#{numero_documento}#{numero_documento.modulo11(mapeamento: { 10 => 0 })}#{codigo_servico}"
|
|
54
|
+
soma = parte_1.to_i + conta_corrente.to_i + data.to_i
|
|
55
|
+
"#{parte_1}#{soma.to_s.modulo11(mapeamento: { 10 => 0 })}"
|
|
61
56
|
else
|
|
62
|
-
fail
|
|
57
|
+
fail 'data_vencimento não é uma data.'
|
|
58
|
+
end
|
|
59
|
+
when 'CSB'
|
|
60
|
+
@nosso_numero
|
|
61
|
+
else
|
|
62
|
+
fail Brcobranca::NaoImplementado.new('Tipo de carteira não implementado.')
|
|
63
63
|
# TODO - Verificar outras carteiras.
|
|
64
64
|
# self.codigo_servico = "5"
|
|
65
|
-
# parte_1 = "#{self.numero_documento}#{self.numero_documento.
|
|
65
|
+
# parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11(mapeamento: { 10 => 0 })}#{self.codigo_servico}"
|
|
66
66
|
# soma = parte_1.to_i + self.conta_corrente.to_i
|
|
67
|
-
# numero = "#{parte_1}#{soma.to_s.
|
|
67
|
+
# numero = "#{parte_1}#{soma.to_s.modulo11(mapeamento: { 10 => 0 })}"
|
|
68
68
|
# numero
|
|
69
69
|
end
|
|
70
70
|
end
|
|
@@ -94,14 +94,14 @@ module Brcobranca
|
|
|
94
94
|
# @raise [Brcobranca::NaoImplementado] Caso a carteira informada não for CNR/CSB.
|
|
95
95
|
def codigo_barras_segunda_parte
|
|
96
96
|
case carteira
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
when 'CNR'
|
|
98
|
+
dias_julianos = data_vencimento.to_juliano
|
|
99
|
+
"#{conta_corrente}#{numero_documento}#{dias_julianos}2"
|
|
100
|
+
when 'CSB'
|
|
101
|
+
fail Brcobranca::NaoImplementado.new('Nosso número não definido.') unless @nosso_numero
|
|
102
|
+
"#{nosso_numero}#{agencia}#{conta_corrente}001"
|
|
103
|
+
else
|
|
104
|
+
fail Brcobranca::NaoImplementado.new('Tipo de carteira não implementado.')
|
|
105
105
|
end
|
|
106
106
|
end
|
|
107
107
|
end
|
|
@@ -54,8 +54,11 @@ module Brcobranca
|
|
|
54
54
|
# Dígito verificador do nosso número.
|
|
55
55
|
# @return [String] 1 caracteres numéricos.
|
|
56
56
|
def nosso_numero_dv
|
|
57
|
-
nosso_numero =
|
|
58
|
-
nosso_numero.
|
|
57
|
+
nosso_numero = numero_documento.to_s.rjust(12, '0') unless numero_documento.nil?
|
|
58
|
+
nosso_numero.modulo11(
|
|
59
|
+
multiplicador: (2..9).to_a,
|
|
60
|
+
mapeamento: { 10 => 0, 11 => 0 }
|
|
61
|
+
) { |total| 11 - (total % 11) }
|
|
59
62
|
end
|
|
60
63
|
|
|
61
64
|
# Nosso número para exibir no boleto.
|
|
@@ -85,7 +88,7 @@ module Brcobranca
|
|
|
85
88
|
#
|
|
86
89
|
# @return [String] 25 caracteres numéricos.
|
|
87
90
|
def codigo_barras_segunda_parte
|
|
88
|
-
"9#{
|
|
91
|
+
"9#{convenio}0000#{numero_documento}#{nosso_numero_dv}0#{carteira}"
|
|
89
92
|
end
|
|
90
93
|
end
|
|
91
94
|
end
|
|
@@ -86,14 +86,12 @@ module Brcobranca
|
|
|
86
86
|
# Codigo referente ao tipo de carteira
|
|
87
87
|
# @return [String]: 1 caractere numérico
|
|
88
88
|
def tipo_carteira
|
|
89
|
-
if carteira == '03'
|
|
90
|
-
'1'
|
|
91
|
-
end
|
|
89
|
+
'1' if carteira == '03'
|
|
92
90
|
end
|
|
93
91
|
# Dígito verificador do nosso número
|
|
94
92
|
# @return [Integer] 1 caracteres numéricos.
|
|
95
93
|
def nosso_numero_dv
|
|
96
|
-
"#{agencia_posto_conta}#{numero_documento_with_byte_idt}".
|
|
94
|
+
"#{agencia_posto_conta}#{numero_documento_with_byte_idt}".modulo11
|
|
97
95
|
end
|
|
98
96
|
|
|
99
97
|
def agencia_conta_boleto
|
|
@@ -107,7 +105,7 @@ module Brcobranca
|
|
|
107
105
|
# Segunda parte do código de barras.
|
|
108
106
|
def codigo_barras_segunda_parte
|
|
109
107
|
campo_livre = "#{tipo_cobranca}#{tipo_carteira}#{nosso_numero_boleto.gsub(/\D/, '')}#{agencia_posto_conta}10"
|
|
110
|
-
campo_livre + campo_livre.
|
|
108
|
+
campo_livre + campo_livre.modulo11(mapeamento: { 10 => 0 }).to_s
|
|
111
109
|
end
|
|
112
110
|
end
|
|
113
111
|
end
|