brcobranca 3.1.3 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +11 -0
- data/Gemfile +2 -6
- data/Gemfile.lock +72 -23
- data/README.md +64 -0
- data/Rakefile +4 -8
- data/brcobranca.gemspec +27 -27
- data/lib/brcobranca/boleto/caixa.rb +2 -1
- data/lib/brcobranca/boleto/hsbc.rb +41 -22
- data/lib/brcobranca/boleto/sicredi.rb +10 -5
- data/lib/brcobranca/boleto/template/base.rb +2 -0
- data/lib/brcobranca/calculo.rb +0 -18
- data/lib/brcobranca/formatacao.rb +8 -8
- data/lib/brcobranca/retorno/retorno_cbr643.rb +2 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +2 -0
- data/lib/brcobranca/retorno/retorno_cnab400.rb +2 -0
- data/lib/brcobranca/version.rb +3 -1
- data/lib/brcobranca.rb +3 -5
- data/spec/brcobranca/banco_bradesco_spec.rb +70 -70
- data/spec/brcobranca/banco_brasil_spec.rb +119 -119
- data/spec/brcobranca/banco_caixa_spec.rb +57 -58
- data/spec/brcobranca/banco_hsbc_spec.rb +74 -84
- data/spec/brcobranca/banco_sicredi_spec.rb +54 -54
- data/spec/brcobranca/base_spec.rb +77 -77
- data/spec/brcobranca/boletos_em_lote_spec.rb +6 -6
- data/spec/brcobranca/core_ext_spec.rb +128 -127
- data/spec/brcobranca/currency_spec.rb +52 -52
- data/spec/brcobranca/itau_spec.rb +81 -81
- data/spec/brcobranca/retorno_cbr643_spec.rb +25 -25
- data/spec/brcobranca/retorno_cnab400_spec.rb +23 -23
- data/spec/brcobranca/retorno_cnab_240_spec.rb +20 -20
- data/spec/brcobranca/rghost_spec.rb +5 -5
- data/spec/brcobranca/santander_spec.rb +58 -58
- data/spec/brcobranca_spec.rb +5 -5
- data/spec/spec.opts +8 -0
- data/spec/spec_helper.rb +10 -7
- metadata +123 -108
- data/.document +0 -5
- data/README.rdoc +0 -92
- data/lib/brcobranca/arquivos/logos/banespa.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/real.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/unibanco.jpg +0 -0
- data/lib/brcobranca/boleto/real.rb +0 -74
- data/lib/brcobranca/boleto/unibanco.rb +0 -115
- data/spec/brcobranca/banco_real_spec.rb +0 -162
- 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
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
brcobranca
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.2
|
data/.travis.yml
ADDED
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
|
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 (
|
6
|
-
parseline (
|
7
|
-
rghost (
|
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 (
|
14
|
-
activesupport (=
|
15
|
-
builder (~> 3.
|
16
|
-
activesupport (
|
17
|
-
i18n (
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
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 (
|
28
|
-
rspec-core (~>
|
29
|
-
rspec-expectations (~>
|
30
|
-
rspec-mocks (~>
|
31
|
-
rspec-core (
|
32
|
-
|
33
|
-
|
34
|
-
|
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:
|
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(
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
9
6
|
|
10
|
-
|
11
|
-
task :default => :spec
|
7
|
+
task :default => :spec
|
data/brcobranca.gemspec
CHANGED
@@ -1,34 +1,34 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
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 |
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
22
|
-
s.rubyforge_project = "brcobranca"
|
22
|
+
gem.requirements = ["GhostScript > 9.0, para gear PDF e código de Barras"]
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
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
|
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
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
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
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
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
|
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
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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 =>
|
12
|
-
validates_length_of :numero_documento, :maximum => 5, :message =>
|
13
|
-
validates_length_of :conta_corrente, :maximum => 5, :message =>
|
14
|
-
validates_length_of :carteira, :maximum => 2, :message =>
|
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 #=> "
|
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
|
data/lib/brcobranca/calculo.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
44
|
-
when 8 then
|
45
|
-
when 11 then
|
46
|
-
when 14 then
|
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
|
-
|
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.
|
data/lib/brcobranca/version.rb
CHANGED
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
|
72
|
-
#
|
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'
|