brcobranca 2.0.6 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/.document +5 -0
  2. data/.gitignore +30 -0
  3. data/Gemfile +11 -0
  4. data/Gemfile.lock +48 -0
  5. data/History.txt +13 -1
  6. data/LICENSE +20 -0
  7. data/README.rdoc +12 -5
  8. data/Rakefile +33 -37
  9. data/VERSION +1 -0
  10. data/brcobranca.gemspec +26 -35
  11. data/lib/brcobranca/arquivos/logos/{bb.jpg → bancobrasil.jpg} +0 -0
  12. data/lib/brcobranca/arquivos/logos/banespa.jpg +0 -0
  13. data/lib/brcobranca/arquivos/logos/caixa.jpg +0 -0
  14. data/lib/brcobranca/boleto/banco_brasil.rb +150 -77
  15. data/lib/brcobranca/boleto/base.rb +146 -75
  16. data/lib/brcobranca/boleto/bradesco.rb +69 -0
  17. data/lib/brcobranca/boleto/caixa.rb +100 -0
  18. data/lib/brcobranca/boleto/hsbc.rb +95 -0
  19. data/lib/brcobranca/boleto/itau.rb +133 -0
  20. data/lib/brcobranca/boleto/real.rb +74 -0
  21. data/lib/brcobranca/boleto/template/base.rb +13 -0
  22. data/lib/brcobranca/boleto/template/rghost.rb +136 -62
  23. data/lib/brcobranca/boleto/unibanco.rb +115 -0
  24. data/lib/brcobranca/calculo.rb +132 -0
  25. data/lib/brcobranca/calculo_data.rb +42 -0
  26. data/lib/brcobranca/currency.rb +3 -4
  27. data/lib/brcobranca/formatacao.rb +102 -0
  28. data/lib/brcobranca/limpeza.rb +19 -0
  29. data/lib/brcobranca/retorno/base.rb +1 -2
  30. data/lib/brcobranca/retorno/retorno_cbr643.rb +42 -40
  31. data/lib/brcobranca/version.rb +3 -0
  32. data/lib/brcobranca.rb +93 -16
  33. data/spec/brcobranca/banco_bradesco_spec.rb +63 -50
  34. data/spec/brcobranca/banco_brasil_spec.rb +102 -136
  35. data/spec/brcobranca/banco_caixa_spec.rb +166 -0
  36. data/spec/brcobranca/banco_hsbc_spec.rb +83 -76
  37. data/spec/brcobranca/banco_real_spec.rb +54 -37
  38. data/spec/brcobranca/banco_unibanco_spec.rb +69 -52
  39. data/spec/brcobranca/base_spec.rb +24 -79
  40. data/spec/brcobranca/boletos_em_lote_spec.rb +46 -0
  41. data/spec/brcobranca/core_ext_spec.rb +24 -114
  42. data/spec/brcobranca/currency_spec.rb +1 -0
  43. data/spec/brcobranca/{banco_itau_spec.rb → itau_spec.rb} +112 -67
  44. data/spec/brcobranca/retorno_cbr643_spec.rb +13 -12
  45. data/spec/brcobranca/rghost_spec.rb +8 -7
  46. data/spec/brcobranca_spec.rb +16 -6
  47. data/spec/spec_helper.rb +11 -8
  48. metadata +107 -58
  49. data/Manifest.txt +0 -51
  50. data/PostInstall.txt +0 -4
  51. data/lib/brcobranca/boleto/banco_banespa.rb +0 -85
  52. data/lib/brcobranca/boleto/banco_bradesco.rb +0 -44
  53. data/lib/brcobranca/boleto/banco_hsbc.rb +0 -77
  54. data/lib/brcobranca/boleto/banco_itau.rb +0 -115
  55. data/lib/brcobranca/boleto/banco_real.rb +0 -70
  56. data/lib/brcobranca/boleto/banco_unibanco.rb +0 -79
  57. data/lib/brcobranca/boleto/template/util.rb +0 -32
  58. data/lib/brcobranca/config.rb +0 -9
  59. data/lib/brcobranca/core_ext.rb +0 -279
  60. data/spec/brcobranca/banco_banespa_spec.rb +0 -195
  61. data/spec/brcobranca/template/rghost_spec.rb +0 -65
  62. data/spec/brcobranca/template/util_spec.rb +0 -42
  63. data/spec/rcov.opts +0 -2
  64. data/spec/spec.opts +0 -6
  65. data/tasks/rcov.rake +0 -12
  66. data/tasks/rspec.rake +0 -21
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brcobranca
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.6
4
+ hash: 7
5
+ prerelease:
6
+ segments:
7
+ - 3
8
+ - 0
9
+ - 0
10
+ version: 3.0.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - Kivanio Barbosa
@@ -9,140 +15,183 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2009-08-17 00:00:00 -04:00
18
+ date: 2011-04-14 00:00:00 -04:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: rghost
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 49
30
+ segments:
31
+ - 0
32
+ - 8
33
+ - 7
23
34
  version: 0.8.7
24
- version:
35
+ type: :runtime
36
+ version_requirements: *id001
25
37
  - !ruby/object:Gem::Dependency
26
38
  name: rghost_barcode
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
30
42
  requirements:
31
43
  - - ">="
32
44
  - !ruby/object:Gem::Version
45
+ hash: 27
46
+ segments:
47
+ - 0
48
+ - 8
33
49
  version: "0.8"
34
- version:
50
+ type: :runtime
51
+ version_requirements: *id002
35
52
  - !ruby/object:Gem::Dependency
36
53
  name: parseline
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
40
57
  requirements:
41
58
  - - ">="
42
59
  - !ruby/object:Gem::Version
60
+ hash: 17
61
+ segments:
62
+ - 1
63
+ - 0
64
+ - 3
43
65
  version: 1.0.3
44
- version:
66
+ type: :runtime
67
+ version_requirements: *id003
45
68
  - !ruby/object:Gem::Dependency
46
- name: hoe
47
- type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
69
+ name: activemodel
70
+ prerelease: false
71
+ requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
50
73
  requirements:
51
74
  - - ">="
52
75
  - !ruby/object:Gem::Version
53
- version: 2.3.3
54
- version:
76
+ hash: 7
77
+ segments:
78
+ - 3
79
+ - 0
80
+ - 0
81
+ version: 3.0.0
82
+ type: :runtime
83
+ version_requirements: *id004
55
84
  description: "Gem para emiss\xC3\xA3o de bloquetos de cobran\xC3\xA7a de bancos brasileiros."
56
- email:
57
- - kivanio@gmail.com
85
+ email: kivanio@gmail.com
58
86
  executables: []
59
87
 
60
88
  extensions: []
61
89
 
62
- extra_rdoc_files:
63
- - History.txt
64
- - Manifest.txt
65
- - PostInstall.txt
90
+ extra_rdoc_files: []
91
+
66
92
  files:
93
+ - .document
94
+ - .gitignore
95
+ - Gemfile
96
+ - Gemfile.lock
67
97
  - History.txt
68
- - Manifest.txt
69
- - PostInstall.txt
98
+ - LICENSE
70
99
  - README.rdoc
71
100
  - Rakefile
101
+ - VERSION
72
102
  - brcobranca.gemspec
73
103
  - lib/brcobranca.rb
104
+ - lib/brcobranca/arquivos/logos/bancobrasil.jpg
74
105
  - lib/brcobranca/arquivos/logos/banespa.jpg
75
- - lib/brcobranca/arquivos/logos/bb.jpg
76
106
  - lib/brcobranca/arquivos/logos/bradesco.jpg
107
+ - lib/brcobranca/arquivos/logos/caixa.jpg
77
108
  - lib/brcobranca/arquivos/logos/hsbc.jpg
78
109
  - lib/brcobranca/arquivos/logos/itau.jpg
79
110
  - lib/brcobranca/arquivos/logos/real.jpg
80
111
  - lib/brcobranca/arquivos/logos/unibanco.jpg
81
112
  - lib/brcobranca/arquivos/templates/modelo_generico.eps
82
- - lib/brcobranca/boleto/banco_banespa.rb
83
- - lib/brcobranca/boleto/banco_bradesco.rb
84
113
  - lib/brcobranca/boleto/banco_brasil.rb
85
- - lib/brcobranca/boleto/banco_hsbc.rb
86
- - lib/brcobranca/boleto/banco_itau.rb
87
- - lib/brcobranca/boleto/banco_real.rb
88
- - lib/brcobranca/boleto/banco_unibanco.rb
89
114
  - lib/brcobranca/boleto/base.rb
115
+ - lib/brcobranca/boleto/bradesco.rb
116
+ - lib/brcobranca/boleto/caixa.rb
117
+ - lib/brcobranca/boleto/hsbc.rb
118
+ - lib/brcobranca/boleto/itau.rb
119
+ - lib/brcobranca/boleto/real.rb
120
+ - lib/brcobranca/boleto/template/base.rb
90
121
  - lib/brcobranca/boleto/template/rghost.rb
91
- - lib/brcobranca/boleto/template/util.rb
92
- - lib/brcobranca/config.rb
93
- - lib/brcobranca/core_ext.rb
122
+ - lib/brcobranca/boleto/unibanco.rb
123
+ - lib/brcobranca/calculo.rb
124
+ - lib/brcobranca/calculo_data.rb
94
125
  - lib/brcobranca/currency.rb
126
+ - lib/brcobranca/formatacao.rb
127
+ - lib/brcobranca/limpeza.rb
95
128
  - lib/brcobranca/retorno/base.rb
96
129
  - lib/brcobranca/retorno/retorno_cbr643.rb
130
+ - lib/brcobranca/version.rb
97
131
  - spec/arquivos/CBR64310.RET
98
- - spec/brcobranca/banco_banespa_spec.rb
99
132
  - spec/brcobranca/banco_bradesco_spec.rb
100
133
  - spec/brcobranca/banco_brasil_spec.rb
134
+ - spec/brcobranca/banco_caixa_spec.rb
101
135
  - spec/brcobranca/banco_hsbc_spec.rb
102
- - spec/brcobranca/banco_itau_spec.rb
103
136
  - spec/brcobranca/banco_real_spec.rb
104
137
  - spec/brcobranca/banco_unibanco_spec.rb
105
138
  - spec/brcobranca/base_spec.rb
139
+ - spec/brcobranca/boletos_em_lote_spec.rb
106
140
  - spec/brcobranca/core_ext_spec.rb
107
141
  - spec/brcobranca/currency_spec.rb
142
+ - spec/brcobranca/itau_spec.rb
108
143
  - spec/brcobranca/retorno_cbr643_spec.rb
109
144
  - spec/brcobranca/rghost_spec.rb
110
- - spec/brcobranca/template/rghost_spec.rb
111
- - spec/brcobranca/template/util_spec.rb
112
145
  - spec/brcobranca_spec.rb
113
- - spec/rcov.opts
114
- - spec/spec.opts
115
146
  - spec/spec_helper.rb
116
- - tasks/rcov.rake
117
- - tasks/rspec.rake
118
147
  has_rdoc: true
119
- homepage: http://brcobranca.rubyforge.org
148
+ homepage: http://rubygems.org/gems/brcobranca
120
149
  licenses: []
121
150
 
122
- post_install_message: PostInstall.txt
123
- rdoc_options:
124
- - --main
125
- - README.rdoc
151
+ post_install_message: "\n ===========================================================================\n Visite http://www.boletorails.com.br para ver exemplos!\n ===========================================================================\n "
152
+ rdoc_options: []
153
+
126
154
  require_paths:
127
155
  - lib
128
156
  required_ruby_version: !ruby/object:Gem::Requirement
157
+ none: false
129
158
  requirements:
130
159
  - - ">="
131
160
  - !ruby/object:Gem::Version
161
+ hash: 3
162
+ segments:
163
+ - 0
132
164
  version: "0"
133
- version:
134
165
  required_rubygems_version: !ruby/object:Gem::Requirement
166
+ none: false
135
167
  requirements:
136
168
  - - ">="
137
169
  - !ruby/object:Gem::Version
170
+ hash: 3
171
+ segments:
172
+ - 0
138
173
  version: "0"
139
- version:
140
- requirements: []
141
-
174
+ requirements:
175
+ - "GhostScript > 8.0, para gear PDF e c\xC3\xB3digo de Barras"
142
176
  rubyforge_project: brcobranca
143
- rubygems_version: 1.3.5
177
+ rubygems_version: 1.5.2
144
178
  signing_key:
145
179
  specification_version: 3
146
180
  summary: "Gem que permite trabalhar com bloquetos de cobran\xC3\xA7a para bancos brasileiros."
147
- test_files: []
148
-
181
+ test_files:
182
+ - spec/arquivos/CBR64310.RET
183
+ - spec/brcobranca/banco_bradesco_spec.rb
184
+ - spec/brcobranca/banco_brasil_spec.rb
185
+ - spec/brcobranca/banco_caixa_spec.rb
186
+ - spec/brcobranca/banco_hsbc_spec.rb
187
+ - spec/brcobranca/banco_real_spec.rb
188
+ - spec/brcobranca/banco_unibanco_spec.rb
189
+ - spec/brcobranca/base_spec.rb
190
+ - spec/brcobranca/boletos_em_lote_spec.rb
191
+ - spec/brcobranca/core_ext_spec.rb
192
+ - spec/brcobranca/currency_spec.rb
193
+ - spec/brcobranca/itau_spec.rb
194
+ - spec/brcobranca/retorno_cbr643_spec.rb
195
+ - spec/brcobranca/rghost_spec.rb
196
+ - spec/brcobranca_spec.rb
197
+ - spec/spec_helper.rb
data/Manifest.txt DELETED
@@ -1,51 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- PostInstall.txt
4
- README.rdoc
5
- Rakefile
6
- brcobranca.gemspec
7
- lib/brcobranca.rb
8
- lib/brcobranca/arquivos/logos/banespa.jpg
9
- lib/brcobranca/arquivos/logos/bb.jpg
10
- lib/brcobranca/arquivos/logos/bradesco.jpg
11
- lib/brcobranca/arquivos/logos/hsbc.jpg
12
- lib/brcobranca/arquivos/logos/itau.jpg
13
- lib/brcobranca/arquivos/logos/real.jpg
14
- lib/brcobranca/arquivos/logos/unibanco.jpg
15
- lib/brcobranca/arquivos/templates/modelo_generico.eps
16
- lib/brcobranca/boleto/banco_banespa.rb
17
- lib/brcobranca/boleto/banco_bradesco.rb
18
- lib/brcobranca/boleto/banco_brasil.rb
19
- lib/brcobranca/boleto/banco_hsbc.rb
20
- lib/brcobranca/boleto/banco_itau.rb
21
- lib/brcobranca/boleto/banco_real.rb
22
- lib/brcobranca/boleto/banco_unibanco.rb
23
- lib/brcobranca/boleto/base.rb
24
- lib/brcobranca/boleto/template/rghost.rb
25
- lib/brcobranca/boleto/template/util.rb
26
- lib/brcobranca/config.rb
27
- lib/brcobranca/core_ext.rb
28
- lib/brcobranca/currency.rb
29
- lib/brcobranca/retorno/base.rb
30
- lib/brcobranca/retorno/retorno_cbr643.rb
31
- spec/arquivos/CBR64310.RET
32
- spec/brcobranca/banco_banespa_spec.rb
33
- spec/brcobranca/banco_bradesco_spec.rb
34
- spec/brcobranca/banco_brasil_spec.rb
35
- spec/brcobranca/banco_hsbc_spec.rb
36
- spec/brcobranca/banco_itau_spec.rb
37
- spec/brcobranca/banco_real_spec.rb
38
- spec/brcobranca/banco_unibanco_spec.rb
39
- spec/brcobranca/base_spec.rb
40
- spec/brcobranca/core_ext_spec.rb
41
- spec/brcobranca/currency_spec.rb
42
- spec/brcobranca/retorno_cbr643_spec.rb
43
- spec/brcobranca/rghost_spec.rb
44
- spec/brcobranca/template/rghost_spec.rb
45
- spec/brcobranca/template/util_spec.rb
46
- spec/brcobranca_spec.rb
47
- spec/rcov.opts
48
- spec/spec.opts
49
- spec/spec_helper.rb
50
- tasks/rcov.rake
51
- tasks/rspec.rake
data/PostInstall.txt DELETED
@@ -1,4 +0,0 @@
1
-
2
- Para maiores informações veja http://brcobranca.rubyforge.org
3
-
4
- Para exemplos de como usar veja http://www.boletorails.com.br
@@ -1,85 +0,0 @@
1
- # Banco BANESPA
2
- class BancoBanespa < Brcobranca::Boleto::Base
3
-
4
- def initialize(campos={})
5
- padrao = {:carteira => "COB", :banco => "033"}
6
- campos = padrao.merge!(campos)
7
- super(campos)
8
- end
9
-
10
- # Número sequencial utilizado para distinguir os boletos na agência
11
- def nosso_numero
12
- "#{self.agencia.zeros_esquerda(:tamanho => 3)}#{self.numero_documento.zeros_esquerda(:tamanho => 7)}"
13
- end
14
-
15
- # Retorna dígito verificador do nosso número calculado como contas na documentação
16
- def nosso_numero_dv
17
- self.nosso_numero.zeros_esquerda(:tamanho => 10).modulo_10_banespa
18
- end
19
-
20
- # Retorna nosso numero pronto para exibir no boleto
21
- def nosso_numero_boleto
22
- "#{self.nosso_numero[0..2]} #{self.nosso_numero[3..9]} #{self.nosso_numero_dv}"
23
- end
24
-
25
- def agencia_conta_boleto
26
- convenio = self.convenio.zeros_esquerda(:tamanho => 11)
27
- "#{convenio[0..2]} #{convenio[3..4]} #{convenio[5..9]} #{convenio[10..10]}"
28
- end
29
-
30
- # Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras.
31
- def monta_codigo_43_digitos
32
- banco = self.banco.zeros_esquerda(:tamanho => 3)
33
- fator = self.data_vencimento.fator_vencimento.zeros_esquerda(:tamanho => 4)
34
- valor_documento = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10)
35
- numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{self.campo_livre_com_dv1_e_dv2}"
36
- numero.size == 43 ? numero : nil
37
- end
38
-
39
- # CAMPO LIVRE
40
- # Código do cedente PIC 9 (011)
41
- # Nosso número PIC 9 (007)
42
- # Filler PIC 9 (002) = 00
43
- # Código do banco cedente PIC 9 (003) = 033
44
- # Dígito verificador 1 PIC 9 (001)
45
- # Dígito verificador 2 PIC 9 (001)
46
- def campo_livre
47
- "#{self.convenio.zeros_esquerda(:tamanho => 11)}#{self.numero_documento.zeros_esquerda(:tamanho => 7)}00#{self.banco.zeros_esquerda(:tamanho => 3)}"
48
- end
49
-
50
- #campo livre com os digitos verificadores como conta na documentação do banco
51
- def campo_livre_com_dv1_e_dv2
52
- dv1 = self.campo_livre.modulo10 #dv 1 inicial
53
- dv2 = nil
54
- multiplicadores = [2,3,4,5,6,7]
55
- begin
56
- recalcular_dv2 = false
57
- valor_inicial = "#{self.campo_livre}#{dv1}"
58
- total = 0
59
- multiplicador_posicao = 0
60
-
61
- valor_inicial.split(//).reverse!.each do |caracter|
62
- multiplicador_posicao = 0 if (multiplicador_posicao == 6)
63
- total += (caracter.to_i * multiplicadores[multiplicador_posicao])
64
- multiplicador_posicao += 1
65
- end
66
-
67
- case total % 11
68
- when 0 then
69
- dv2 = 0
70
- when 1 then
71
- if dv1 == 9
72
- dv1 = 0
73
- else
74
- dv1 += 1
75
- end
76
- recalcular_dv2 = true
77
- else
78
- dv2 = 11 - (total % 11)
79
- end
80
- end while(recalcular_dv2)
81
-
82
- return "#{self.campo_livre}#{dv1}#{dv2}"
83
- end
84
-
85
- end
@@ -1,44 +0,0 @@
1
- # Banco BRADESCO
2
- class BancoBradesco < Brcobranca::Boleto::Base
3
- # Responsável por definir dados iniciais quando se cria uma nova intancia da classe BancoBradesco
4
- def initialize(campos={})
5
- padrao={:carteira => "06", :banco => "237"}
6
- campos = padrao.merge!(campos)
7
- super(campos)
8
- end
9
-
10
- # Campo usado apenas na exibição no boleto
11
- # Deverá ser sobreescrito para cada banco
12
- def nosso_numero_boleto
13
- "#{self.carteira}/#{self.numero_documento.zeros_esquerda(:tamanho => 11)}-#{self.nosso_numero_dv}"
14
- end
15
-
16
- # Campo usado apenas na exibição no boleto
17
- # Deverá ser sobreescrito para cada banco
18
- def agencia_conta_boleto
19
- "#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}"
20
- end
21
-
22
- # Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras
23
- # As posições do campo livre ficam a critério de cada Banco arrecadador, sendo que o
24
- # padrão do Bradesco é:
25
- # Posição Tamanho Conteúdo
26
- # 20 a 23 4 Agência Cedente (Sem o digito verificador, completar com zeros a esquerda quando necessário)
27
- # 24 a 25 2 Carteira
28
- # 26 a 36 11 Número do Nosso Número(Sem o digito verificador)
29
- # 37 a 43 7 Conta do Cedente (Sem o digito verificador, completar com zeros a esquerda quando necessário)
30
- # 44 a 44 1 Zero
31
-
32
- def monta_codigo_43_digitos
33
- banco = self.banco.zeros_esquerda(:tamanho => 3)
34
- fator = self.data_vencimento.fator_vencimento
35
- valor_documento = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10)
36
- agencia = self.agencia.zeros_esquerda(:tamanho => 4)
37
- carteira = self.carteira.zeros_esquerda(:tamanho => 2)
38
- numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 11)
39
- conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
40
-
41
- numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{agencia}#{carteira}#{numero_documento}#{conta}0"
42
- numero.size == 43 ? numero : nil
43
- end
44
- end
@@ -1,77 +0,0 @@
1
- # Banco HSBC
2
- class BancoHsbc < Brcobranca::Boleto::Base
3
-
4
- # Responsável por definir dados iniciais quando se cria uma nova intância da classe BancoBrasil
5
- def initialize(campos={})
6
- padrao={:carteira => "CNR", :banco => "399"}
7
- campos = padrao.merge!(campos)
8
- super(campos)
9
- end
10
-
11
- # Número sequencial utilizado para distinguir os boletos na agência
12
- def nosso_numero
13
- if self.data_vencimento.kind_of?(Date)
14
- self.codigo_servico = 4
15
- dia = self.data_vencimento.day.to_s.zeros_esquerda(:tamanho => 2)
16
- mes = self.data_vencimento.month.to_s.zeros_esquerda(:tamanho => 2)
17
- ano = self.data_vencimento.year.to_s[2..3]
18
- data = "#{dia}#{mes}#{ano}"
19
-
20
- numero_documento = "#{self.numero_documento.to_s}#{self.numero_documento.to_s.modulo11_9to2_10_como_zero}#{self.codigo_servico.to_s}"
21
- soma = numero_documento.to_i + self.conta_corrente.to_i + data.to_i
22
- numero = "#{numero_documento}#{soma.to_s.modulo11_9to2_10_como_zero}"
23
- numero
24
- else
25
- self.codigo_servico = 5
26
- numero_documento = "#{self.numero_documento.to_s}#{self.numero_documento.to_s.modulo11_9to2_10_como_zero}#{self.codigo_servico.to_s}"
27
- soma = numero_documento.to_i + self.conta_corrente.to_i
28
- numero = "#{numero_documento}#{soma.to_s.modulo11_9to2_10_como_zero}"
29
- numero
30
- end
31
- end
32
-
33
- # Campo usado apenas na exibição no boleto
34
- # Deverá ser sobreescrito para cada banco
35
- def nosso_numero_boleto
36
- "#{self.nosso_numero}"
37
- end
38
-
39
- # Campo usado apenas na exibição no boleto
40
- # Deverá ser sobreescrito para cada banco
41
- def agencia_conta_boleto
42
- "#{self.conta_corrente}"
43
- end
44
-
45
- # Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras
46
- def monta_codigo_43_digitos
47
- banco = self.banco.zeros_esquerda(:tamanho => 3)
48
- valor_documento = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10)
49
- convenio = self.convenio.to_s
50
- conta = self.conta_corrente.zeros_esquerda(:tamanho => 7)
51
-
52
- # Montagem é baseada no tipo de carteira e na presença da data de vencimento
53
- if self.carteira == "CNR"
54
- if self.data_vencimento.kind_of?(Date)
55
- raise "numero_documento pode ser de no máximo 13 caracteres." if (self.numero_documento.to_s.size > 13)
56
- fator = self.data_vencimento.fator_vencimento
57
- dias_julianos = self.data_vencimento.to_juliano
58
- self.codigo_servico = 4
59
- numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 13)
60
- numero = "#{banco}#{self.moeda}#{fator}#{valor_documento}#{conta}#{numero_documento}#{dias_julianos}2"
61
- numero.size == 43 ? numero : nil
62
- else
63
- # TODO
64
- nil
65
- end
66
- else
67
- # TODO
68
- # raise "numero_documento pode ser de no máximo 6 caracteres." if (self.numero_documento.to_s.size > 6)
69
- # numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 6)
70
- # nosso_numero = self.nosso_numero.zeros_esquerda(:tamanho => 9)
71
- # self.codigo_servico = 5
72
-
73
- nil
74
- end
75
- end
76
-
77
- end
@@ -1,115 +0,0 @@
1
- # Banco Itaú
2
- class BancoItau < Brcobranca::Boleto::Base
3
- # Usado somente em carteiras especiais com registro para complementar o número do cocumento
4
- attr_accessor :seu_numero
5
-
6
- # Responsável por definir dados iniciais quando se cria uma nova intancia da classe BancoItau
7
- def initialize(campos={})
8
- padrao={:carteira => "175", :banco => "341"}
9
- campos = padrao.merge!(campos)
10
- super(campos)
11
- end
12
-
13
- # Retorna dígito verificador do nosso número, calculado com modulo10.
14
- # Para a grande maioria das carteiras, são considerados para a obtenção do DAC/DV, os dados
15
- # "AGENCIA(sem DAC/DV)/CONTA(sem DAC/DV)/CARTEIRA/NOSSO NUMERO", calculado pelo criterio do Modulo 10.
16
- # A excecao, estão as carteiras 126, 131, 146, 150 e 168 cuja obtenção esta baseada apenas nos
17
- # dados "CARTEIRA/NOSSO NUMERO".
18
- def nosso_numero_dv
19
- if %w(126 131 146 150 168).include?(self.carteira)
20
- "#{self.carteira}#{self.numero_documento}".modulo10
21
- else
22
- numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 8)
23
- "#{self.agencia}#{self.conta_corrente}#{self.carteira}#{numero_documento}".modulo10
24
- end
25
- end
26
-
27
- # Calcula o dígito verificador para conta corrente do Itau.
28
- # Retorna apenas o dígito verificador da conta ou nil caso seja impossível calcular.
29
- def agencia_conta_corrente_dv
30
- "#{self.agencia}#{self.conta_corrente}".modulo10
31
- end
32
-
33
- # Campo usado apenas na exibição no boleto
34
- # Deverá ser sobreescrito para cada banco
35
- def nosso_numero_boleto
36
- "#{self.carteira}/#{self.numero_documento}-#{self.nosso_numero_dv}"
37
- end
38
-
39
- # Campo usado apenas na exibição no boleto
40
- # Deverá ser sobreescrito para cada banco
41
- def agencia_conta_boleto
42
- "#{self.agencia}-#{self.agencia_dv} / #{self.conta_corrente}-#{self.conta_corrente_dv}"
43
- end
44
-
45
- # Responsável por montar uma String com 43 caracteres que será usado na criação do código de barras.
46
- def monta_codigo_43_digitos
47
- valor_documento_formatado = self.valor_documento.limpa_valor_moeda.zeros_esquerda(:tamanho => 10)
48
- fator_vencimento = self.data_vencimento.fator_vencimento
49
- numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 8)
50
- return nil if numero_documento.size != 8
51
-
52
- # Monta a String baseado no tipo de carteira
53
- case self.carteira.to_i
54
- when 126, 131, 146, 150, 168
55
- # CARTEIRAS 126 131 146 150 168
56
- # 01 a 03 03 9(03) Código do Banco na Câmara de Compensação = '341'
57
- # 04 a 04 01 9(01) Código da Moeda = '9'
58
- # 05 a 05 01 9(01) DAC código de Barras MOD 11-2a9
59
- # 06 a 09 04 9(04) Fator de Vencimento
60
- # 10 a 19 10 9(08)V(2) Valor
61
- # 20 a 22 03 9(03) Carteira
62
- # 23 a 30 08 9(08) Nosso Número
63
- # 31 a 31 01 9(01) DAC [Carteira/Nosso Número] MOD 10
64
- # 32 a 35 04 9(04) N.º da Agência cedente
65
- # 36 a 40 05 9(05) N.º da Conta Corrente
66
- # 41 a 41 01 9(01) DAC [Agência/Conta Corrente] MOD 10
67
- # 42 a 44 03 9(03) Zeros
68
- codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}"
69
- codigo << "#{numero_documento}#{self.nosso_numero_dv}#{self.agencia}#{self.conta_corrente}#{self.agencia_conta_corrente_dv}000"
70
- codigo
71
- codigo.size == 43 ? codigo : nil
72
- when 198, 106, 107, 122, 142, 143, 195, 196
73
- # CARTEIRAS 198, 106, 107,122, 142, 143, 195 e 196
74
- # 01 a 03 03 9(3) Código do Banco na Câmara de Compensação = ‘341’
75
- # 04 a 04 01 9(1) Código da Moeda = '9'
76
- # 05 a 05 01 9(1) DAC do Código de Barras MOD 11-2a9
77
- # 06 a 09 04 9(04) Fator de Vencimento
78
- # 10 a 19 10 9(08) V(2) Valor
79
- # 20 a 22 03 9(3) Carteira
80
- # 23 a 30 08 9(8) Nosso Número
81
- # 31 a 37 07 9(7) Seu Número (Número do Documento)
82
- # 38 a 42 05 9(5) Código do Cliente (fornecido pelo Banco)
83
- # 43 a 43 01 9(1) DAC dos campos acima (posições 20 a 42) MOD 10
84
- # 44 a 44 01 9(1) Zero
85
- seu_numero = self.seu_numero.zeros_esquerda(:tamanho => 7)
86
- return nil if seu_numero.size != 7
87
- convenio = self.convenio.zeros_esquerda(:tamanho => 5)
88
- return nil if convenio.size != 5
89
- dv = "#{self.carteira}#{numero_documento}#{seu_numero}#{convenio}".modulo10
90
-
91
- codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}"
92
- codigo << "#{numero_documento}#{seu_numero}#{convenio}#{dv}0"
93
- codigo
94
- codigo.size == 43 ? codigo : nil
95
- else
96
- # DEMAIS CARTEIRAS
97
- # 01 a 03 03 9(03) Código do Banco na Câmara de Compensação = '341'
98
- # 04 a 04 01 9(01) Código da Moeda = '9'
99
- # 05 a 05 01 9(01) DAC código de Barras MOD 11-2a9
100
- # 06 a 09 04 9(04) Fator de Vencimento
101
- # 10 a 19 10 9(08)V(2) Valor
102
- # 20 a 22 03 9(03) Carteira
103
- # 23 a 30 08 9(08) Nosso Número
104
- # 31 a 31 01 9(01) DAC [Agência /Conta/Carteira/Nosso Número] MOD 10
105
- # 32 a 35 04 9(04) N.º da Agência cedente
106
- # 36 a 40 05 9(05) N.º da Conta Corrente
107
- # 41 a 41 01 9(01) DAC [Agência/Conta Corrente] MOD 10
108
- # 42 a 44 03 9(03) Zeros
109
- codigo = "#{self.banco}#{self.moeda}#{fator_vencimento}#{valor_documento_formatado}#{self.carteira}"
110
- codigo << "#{numero_documento}#{self.nosso_numero_dv}#{self.agencia}#{self.conta_corrente}#{self.agencia_conta_corrente_dv}000"
111
- codigo
112
- codigo.size == 43 ? codigo : nil
113
- end
114
- end
115
- end