bbrcobranca 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +1 -0
  3. data/LICENSE +20 -0
  4. data/README.md +12 -0
  5. data/Rakefile +13 -0
  6. data/lib/bbrcobranca.rb +196 -0
  7. data/lib/bbrcobranca/arquivos/logos/bancobrasil.eps +5402 -0
  8. data/lib/bbrcobranca/arquivos/logos/bancobrasil_carne.eps +5410 -0
  9. data/lib/bbrcobranca/arquivos/logos/bancobrasilia.eps +0 -0
  10. data/lib/bbrcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
  11. data/lib/bbrcobranca/arquivos/logos/banconordeste.eps +0 -0
  12. data/lib/bbrcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
  13. data/lib/bbrcobranca/arquivos/logos/banestes.eps +5198 -0
  14. data/lib/bbrcobranca/arquivos/logos/banestes_carne.eps +5206 -0
  15. data/lib/bbrcobranca/arquivos/logos/banrisul.eps +121 -0
  16. data/lib/bbrcobranca/arquivos/logos/banrisul_carne.eps +121 -0
  17. data/lib/bbrcobranca/arquivos/logos/bradesco.eps +5210 -0
  18. data/lib/bbrcobranca/arquivos/logos/bradesco_carne.eps +5214 -0
  19. data/lib/bbrcobranca/arquivos/logos/caixa.eps +5111 -0
  20. data/lib/bbrcobranca/arquivos/logos/caixa_carne.eps +5115 -0
  21. data/lib/bbrcobranca/arquivos/logos/cecred.eps +0 -0
  22. data/lib/bbrcobranca/arquivos/logos/cecred_carne.eps +0 -0
  23. data/lib/bbrcobranca/arquivos/logos/credisis.eps +0 -0
  24. data/lib/bbrcobranca/arquivos/logos/credisis_carne.eps +0 -0
  25. data/lib/bbrcobranca/arquivos/logos/hsbc.eps +5124 -0
  26. data/lib/bbrcobranca/arquivos/logos/hsbc_carne.eps +5128 -0
  27. data/lib/bbrcobranca/arquivos/logos/itau.eps +5318 -0
  28. data/lib/bbrcobranca/arquivos/logos/itau_carne.eps +5322 -0
  29. data/lib/bbrcobranca/arquivos/logos/santander.eps +5305 -0
  30. data/lib/bbrcobranca/arquivos/logos/santander_carne.eps +5313 -0
  31. data/lib/bbrcobranca/arquivos/logos/sicoob.eps +5375 -0
  32. data/lib/bbrcobranca/arquivos/logos/sicoob_carne.eps +5379 -0
  33. data/lib/bbrcobranca/arquivos/logos/sicredi.eps +5379 -0
  34. data/lib/bbrcobranca/arquivos/logos/sicredi_carne.eps +5383 -0
  35. data/lib/bbrcobranca/arquivos/logos/unicred.eps +0 -0
  36. data/lib/bbrcobranca/arquivos/logos/unicred_carne.eps +0 -0
  37. data/lib/bbrcobranca/arquivos/templates/modelo_carne.eps +1112 -0
  38. data/lib/bbrcobranca/arquivos/templates/modelo_generico.eps +0 -0
  39. data/lib/bbrcobranca/boleto/banco_brasil.rb +157 -0
  40. data/lib/bbrcobranca/boleto/banco_brasilia.rb +102 -0
  41. data/lib/bbrcobranca/boleto/banco_nordeste.rb +79 -0
  42. data/lib/bbrcobranca/boleto/banestes.rb +85 -0
  43. data/lib/bbrcobranca/boleto/banrisul.rb +94 -0
  44. data/lib/bbrcobranca/boleto/base.rb +256 -0
  45. data/lib/bbrcobranca/boleto/bradesco.rb +99 -0
  46. data/lib/bbrcobranca/boleto/bradesco_grb.rb +85 -0
  47. data/lib/bbrcobranca/boleto/caixa.rb +121 -0
  48. data/lib/bbrcobranca/boleto/cecred.rb +86 -0
  49. data/lib/bbrcobranca/boleto/credisis.rb +116 -0
  50. data/lib/bbrcobranca/boleto/hsbc.rb +94 -0
  51. data/lib/bbrcobranca/boleto/itau.rb +138 -0
  52. data/lib/bbrcobranca/boleto/itau_adimplere.rb +159 -0
  53. data/lib/bbrcobranca/boleto/santander.rb +84 -0
  54. data/lib/bbrcobranca/boleto/santander_adimplere.rb +73 -0
  55. data/lib/bbrcobranca/boleto/sicoob.rb +119 -0
  56. data/lib/bbrcobranca/boleto/sicredi.rb +142 -0
  57. data/lib/bbrcobranca/boleto/template/base.rb +25 -0
  58. data/lib/bbrcobranca/boleto/template/rghost.rb +315 -0
  59. data/lib/bbrcobranca/boleto/template/rghost_carne.rb +317 -0
  60. data/lib/bbrcobranca/boleto/unicred.rb +141 -0
  61. data/lib/bbrcobranca/calculo.rb +115 -0
  62. data/lib/bbrcobranca/calculo_data.rb +62 -0
  63. data/lib/bbrcobranca/currency.rb +69 -0
  64. data/lib/bbrcobranca/formatacao.rb +103 -0
  65. data/lib/bbrcobranca/formatacao_string.rb +35 -0
  66. data/lib/bbrcobranca/limpeza.rb +20 -0
  67. data/lib/bbrcobranca/remessa/base.rb +76 -0
  68. data/lib/bbrcobranca/remessa/cnab240/banco_brasil.rb +246 -0
  69. data/lib/bbrcobranca/remessa/cnab240/base.rb +512 -0
  70. data/lib/bbrcobranca/remessa/cnab240/base_correspondente.rb +299 -0
  71. data/lib/bbrcobranca/remessa/cnab240/caixa.rb +163 -0
  72. data/lib/bbrcobranca/remessa/cnab240/cecred.rb +151 -0
  73. data/lib/bbrcobranca/remessa/cnab240/sicoob.rb +226 -0
  74. data/lib/bbrcobranca/remessa/cnab240/sicoob_banco_brasil.rb +94 -0
  75. data/lib/bbrcobranca/remessa/cnab240/sicredi.rb +177 -0
  76. data/lib/bbrcobranca/remessa/cnab240/unicred.rb +9 -0
  77. data/lib/bbrcobranca/remessa/cnab400/banco_brasil.rb +169 -0
  78. data/lib/bbrcobranca/remessa/cnab400/banco_brasilia.rb +166 -0
  79. data/lib/bbrcobranca/remessa/cnab400/banco_nordeste.rb +160 -0
  80. data/lib/bbrcobranca/remessa/cnab400/banrisul.rb +155 -0
  81. data/lib/bbrcobranca/remessa/cnab400/base.rb +119 -0
  82. data/lib/bbrcobranca/remessa/cnab400/bradesco.rb +130 -0
  83. data/lib/bbrcobranca/remessa/cnab400/citibank.rb +138 -0
  84. data/lib/bbrcobranca/remessa/cnab400/credisis.rb +128 -0
  85. data/lib/bbrcobranca/remessa/cnab400/itau.rb +157 -0
  86. data/lib/bbrcobranca/remessa/cnab400/santander.rb +231 -0
  87. data/lib/bbrcobranca/remessa/cnab400/sicoob.rb +308 -0
  88. data/lib/bbrcobranca/remessa/cnab400/unicred.rb +143 -0
  89. data/lib/bbrcobranca/remessa/pagamento.rb +288 -0
  90. data/lib/bbrcobranca/retorno/base.rb +49 -0
  91. data/lib/bbrcobranca/retorno/cnab240/base.rb +42 -0
  92. data/lib/bbrcobranca/retorno/cnab240/caixa.rb +48 -0
  93. data/lib/bbrcobranca/retorno/cnab240/cecred.rb +102 -0
  94. data/lib/bbrcobranca/retorno/cnab240/santander.rb +95 -0
  95. data/lib/bbrcobranca/retorno/cnab240/sicoob.rb +99 -0
  96. data/lib/bbrcobranca/retorno/cnab240/sicredi.rb +79 -0
  97. data/lib/bbrcobranca/retorno/cnab400/banco_brasil.rb +127 -0
  98. data/lib/bbrcobranca/retorno/cnab400/banco_brasilia.rb +89 -0
  99. data/lib/bbrcobranca/retorno/cnab400/banco_nordeste.rb +112 -0
  100. data/lib/bbrcobranca/retorno/cnab400/banrisul.rb +42 -0
  101. data/lib/bbrcobranca/retorno/cnab400/base.rb +50 -0
  102. data/lib/bbrcobranca/retorno/cnab400/bradesco.rb +124 -0
  103. data/lib/bbrcobranca/retorno/cnab400/credisis.rb +115 -0
  104. data/lib/bbrcobranca/retorno/cnab400/itau.rb +143 -0
  105. data/lib/bbrcobranca/retorno/cnab400/santander.rb +57 -0
  106. data/lib/bbrcobranca/retorno/cnab400/unicred.rb +118 -0
  107. data/lib/bbrcobranca/retorno/retorno_cbr643.rb +49 -0
  108. data/lib/bbrcobranca/retorno/retorno_cnab240.rb +97 -0
  109. data/lib/bbrcobranca/retorno/retorno_cnab400.rb +70 -0
  110. data/lib/bbrcobranca/util/date.rb +20 -0
  111. data/lib/bbrcobranca/util/empresa.rb +28 -0
  112. data/lib/bbrcobranca/util/errors.rb +76 -0
  113. data/lib/bbrcobranca/validations.rb +232 -0
  114. data/lib/bbrcobranca/version.rb +6 -0
  115. data/spec/arquivos/CBR64310.RET +28 -0
  116. data/spec/arquivos/CNAB240.RET +74 -0
  117. data/spec/arquivos/CNAB240CECRED.RET +10 -0
  118. data/spec/arquivos/CNAB240SANTANDER.RET +8 -0
  119. data/spec/arquivos/CNAB240SICOOB.RET +10 -0
  120. data/spec/arquivos/CNAB240SICREDI.CRT +8 -0
  121. data/spec/arquivos/CNAB400.RET +54 -0
  122. data/spec/arquivos/CNAB400BANCOBRASILIA.RET +3 -0
  123. data/spec/arquivos/CNAB400BANCONORDESTE.RET +3 -0
  124. data/spec/arquivos/CNAB400BANRISUL.RET +3 -0
  125. data/spec/arquivos/CNAB400BRADESCO.RET +8 -0
  126. data/spec/arquivos/CNAB400CREDISIS.RET +3 -0
  127. data/spec/arquivos/CNAB400ITAU.RET +54 -0
  128. data/spec/arquivos/CNAB400SANTANDER.RET +54 -0
  129. data/spec/arquivos/CNAB400UNICRED.RET +3 -0
  130. data/spec/bbrcobranca_spec.rb +34 -0
  131. data/spec/brcobranca/base_spec.rb +170 -0
  132. data/spec/brcobranca/boleto/banco_brasil_spec.rb +334 -0
  133. data/spec/brcobranca/boleto/banco_brasilia_spec.rb +152 -0
  134. data/spec/brcobranca/boleto/banco_nordeste_spec.rb +161 -0
  135. data/spec/brcobranca/boleto/banestes_spec.rb +194 -0
  136. data/spec/brcobranca/boleto/banrisul_spec.rb +182 -0
  137. data/spec/brcobranca/boleto/bradesco_spec.rb +211 -0
  138. data/spec/brcobranca/boleto/caixa_spec.rb +161 -0
  139. data/spec/brcobranca/boleto/cecred_spec.rb +147 -0
  140. data/spec/brcobranca/boleto/credisis_spec.rb +159 -0
  141. data/spec/brcobranca/boleto/hsbc_spec.rb +172 -0
  142. data/spec/brcobranca/boleto/itau_spec.rb +262 -0
  143. data/spec/brcobranca/boleto/santander_spec.rb +143 -0
  144. data/spec/brcobranca/boleto/sicoob_spec.rb +193 -0
  145. data/spec/brcobranca/boleto/sicredi_spec.rb +190 -0
  146. data/spec/brcobranca/boleto/unicred_spec.rb +149 -0
  147. data/spec/brcobranca/boletos_em_lote_spec.rb +38 -0
  148. data/spec/brcobranca/calculo_data_spec.rb +33 -0
  149. data/spec/brcobranca/calculo_spec.rb +185 -0
  150. data/spec/brcobranca/currency_spec.rb +79 -0
  151. data/spec/brcobranca/formatacao_spec.rb +46 -0
  152. data/spec/brcobranca/formatacao_string_spec.rb +24 -0
  153. data/spec/brcobranca/limpeza_spec.rb +10 -0
  154. data/spec/brcobranca/remessa/base_spec.rb +67 -0
  155. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +217 -0
  156. data/spec/brcobranca/remessa/cnab240/base_spec.rb +91 -0
  157. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +163 -0
  158. data/spec/brcobranca/remessa/cnab240/cecred_spec.rb +164 -0
  159. data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +268 -0
  160. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +198 -0
  161. data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +201 -0
  162. data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +193 -0
  163. data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +187 -0
  164. data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +183 -0
  165. data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +187 -0
  166. data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +190 -0
  167. data/spec/brcobranca/remessa/cnab400/base_spec.rb +53 -0
  168. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +201 -0
  169. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +126 -0
  170. data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +188 -0
  171. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +190 -0
  172. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +152 -0
  173. data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +217 -0
  174. data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +185 -0
  175. data/spec/brcobranca/remessa/pagamento_spec.rb +227 -0
  176. data/spec/brcobranca/retorno/cnab240/base_spec.rb +23 -0
  177. data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +50 -0
  178. data/spec/brcobranca/retorno/cnab240/santander_spec.rb +50 -0
  179. data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +50 -0
  180. data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +31 -0
  181. data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +36 -0
  182. data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +39 -0
  183. data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +41 -0
  184. data/spec/brcobranca/retorno/cnab400/base_spec.rb +57 -0
  185. data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +58 -0
  186. data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +25 -0
  187. data/spec/brcobranca/retorno/cnab400/itau_spec.rb +58 -0
  188. data/spec/brcobranca/retorno/cnab400/santander_spec.rb +39 -0
  189. data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +42 -0
  190. data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +69 -0
  191. data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +57 -0
  192. data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +52 -0
  193. data/spec/brcobranca/rghost_spec.rb +29 -0
  194. data/spec/brcobranca/util/empresa_spec.rb +36 -0
  195. data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +3 -0
  196. data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +3 -0
  197. data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +3 -0
  198. data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +7 -0
  199. data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +7 -0
  200. data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +3 -0
  201. data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +3 -0
  202. data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +7 -0
  203. data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +7 -0
  204. data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +3 -0
  205. data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +3 -0
  206. data/spec/fixtures/remessa/remessa-itau-cnab400.rem +4 -0
  207. data/spec/fixtures/remessa/remessa-santander-cnab400.rem +3 -0
  208. data/spec/fixtures/remessa/remessa-sicoob-cnab400.rem +3 -0
  209. data/spec/fixtures/remessa/remessa-sicoob-correspondente-bb-cnab240.rem +4 -0
  210. data/spec/fixtures/remessa/remessa-sicredi-cnab240.rem +7 -0
  211. data/spec/fixtures/remessa/remessa-unicred-cnab240.rem +7 -0
  212. data/spec/fixtures/remessa/remessa-unicred-cnab400.rem +3 -0
  213. data/spec/spec.opts +8 -0
  214. data/spec/spec_helper.rb +38 -0
  215. data/spec/support/remessa_helpers.rb +13 -0
  216. data/spec/support/shared_examples/busca_logotipo.rb +15 -0
  217. data/spec/support/shared_examples/cnab240.rb +259 -0
  218. data/spec/support/shared_examples/cnab400.rb +180 -0
  219. data/spec/support/shared_examples/formatos_validos.rb +36 -0
  220. metadata +422 -0
@@ -0,0 +1,334 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Bbrcobranca::Boleto::BancoBrasil do #:nodoc:[all]
6
+ before do
7
+ @valid_attributes = {
8
+ valor: 0.0,
9
+ local_pagamento: 'QUALQUER BANCO ATÉ O VENCIMENTO',
10
+ cedente: 'Kivanio Barbosa',
11
+ documento_cedente: '12345678912',
12
+ sacado: 'Claudio Pozzebom',
13
+ sacado_documento: '12345678900',
14
+ agencia: '4042',
15
+ conta_corrente: '61900',
16
+ convenio: 12_387_989,
17
+ nosso_numero: '777700168'
18
+ }
19
+ end
20
+
21
+ it 'Criar nova instancia com atributos padrões' do
22
+ boleto_novo = described_class.new
23
+ expect(boleto_novo.banco).to eql('001')
24
+ expect(boleto_novo.especie_documento).to eql('DM')
25
+ expect(boleto_novo.especie).to eql('R$')
26
+ expect(boleto_novo.moeda).to eql('9')
27
+ expect(boleto_novo.data_processamento).to eql(Date.current)
28
+ expect(boleto_novo.data_vencimento).to eql(Date.current)
29
+ expect(boleto_novo.aceite).to eql('S')
30
+ expect(boleto_novo.quantidade).to be(1)
31
+ expect(boleto_novo.valor).to be(0.0)
32
+ expect(boleto_novo.valor_documento).to be(0.0)
33
+ expect(boleto_novo.local_pagamento).to eql('QUALQUER BANCO ATÉ O VENCIMENTO')
34
+ expect(boleto_novo.carteira).to eql('18')
35
+ expect(boleto_novo.codigo_servico).to be_falsey
36
+ end
37
+
38
+ it 'Criar nova instancia com atributos válidos' do
39
+ boleto_novo = described_class.new(@valid_attributes)
40
+ expect(boleto_novo.banco).to eql('001')
41
+ expect(boleto_novo.especie_documento).to eql('DM')
42
+ expect(boleto_novo.especie).to eql('R$')
43
+ expect(boleto_novo.moeda).to eql('9')
44
+ expect(boleto_novo.data_processamento).to eql(Date.current)
45
+ expect(boleto_novo.data_vencimento).to eql(Date.current)
46
+ expect(boleto_novo.aceite).to eql('S')
47
+ expect(boleto_novo.quantidade).to be(1)
48
+ expect(boleto_novo.valor).to be(0.0)
49
+ expect(boleto_novo.valor_documento).to be(0.0)
50
+ expect(boleto_novo.local_pagamento).to eql('QUALQUER BANCO ATÉ O VENCIMENTO')
51
+ expect(boleto_novo.cedente).to eql('Kivanio Barbosa')
52
+ expect(boleto_novo.documento_cedente).to eql('12345678912')
53
+ expect(boleto_novo.sacado).to eql('Claudio Pozzebom')
54
+ expect(boleto_novo.sacado_documento).to eql('12345678900')
55
+ expect(boleto_novo.conta_corrente).to eql('00061900')
56
+ expect(boleto_novo.agencia).to eql('4042')
57
+ expect(boleto_novo.convenio).to be(12_387_989)
58
+ expect(boleto_novo.nosso_numero).to eql('777700168')
59
+ expect(boleto_novo.carteira).to eql('18')
60
+ expect(boleto_novo.codigo_servico).to be_falsey
61
+ end
62
+
63
+ it 'Montar código de barras para convenio de 8 digitos e nosso número de 9' do
64
+ @valid_attributes[:valor] = 135.00
65
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
66
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-01')
67
+ boleto_novo = described_class.new(@valid_attributes)
68
+
69
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('0000001238798977770016818')
70
+ expect(boleto_novo.codigo_barras).to eql('00193376900000135000000001238798977770016818')
71
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00190.00009 01238.798977 77700.168188 3 37690000013500')
72
+ expect(boleto_novo.conta_corrente_dv).to be(0)
73
+ expect(boleto_novo.nosso_numero_dv).to be(7)
74
+
75
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-02')
76
+ @valid_attributes[:nosso_numero] = '7700168'
77
+ boleto_novo = described_class.new(@valid_attributes)
78
+
79
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('0000001238798900770016818')
80
+ expect(boleto_novo.codigo_barras).to eql('00193377000000135000000001238798900770016818')
81
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00190.00009 01238.798902 07700.168185 3 37700000013500')
82
+ expect(boleto_novo.conta_corrente_dv).to be(0)
83
+ expect(boleto_novo.nosso_numero_dv).to be(7)
84
+ end
85
+
86
+ it 'Montar código de barras para convenio de 7 digitos e nosso numero de 10' do
87
+ @valid_attributes[:valor] = 135.00
88
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
89
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-03')
90
+ @valid_attributes[:convenio] = 1_238_798
91
+ @valid_attributes[:nosso_numero] = '7777700168'
92
+ boleto_novo = described_class.new(@valid_attributes)
93
+
94
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('0000001238798777770016818')
95
+ expect(boleto_novo.codigo_barras).to eql('00193377100000135000000001238798777770016818')
96
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00190.00009 01238.798779 77700.168188 3 37710000013500')
97
+ expect(boleto_novo.conta_corrente_dv).to be(0)
98
+
99
+ @valid_attributes[:valor] = 723.56
100
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
101
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-03')
102
+ @valid_attributes[:convenio] = 1_238_798
103
+ @valid_attributes[:nosso_numero] = '7777700168'
104
+ boleto_novo = described_class.new(@valid_attributes)
105
+
106
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('0000001238798777770016818')
107
+ expect(boleto_novo.codigo_barras).to eql('00195377100000723560000001238798777770016818')
108
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00190.00009 01238.798779 77700.168188 5 37710000072356')
109
+ expect(boleto_novo.conta_corrente_dv).to be(0)
110
+
111
+ @valid_attributes[:valor] = 723.56
112
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
113
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-01')
114
+ @valid_attributes[:convenio] = 1_238_798
115
+ @valid_attributes[:nosso_numero] = '7777700168'
116
+ boleto_novo = described_class.new(@valid_attributes)
117
+
118
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('0000001238798777770016818')
119
+ expect(boleto_novo.codigo_barras).to eql('00194376900000723560000001238798777770016818')
120
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00190.00009 01238.798779 77700.168188 4 37690000072356')
121
+ expect(boleto_novo.conta_corrente_dv).to be(0)
122
+ end
123
+
124
+ it 'Montar código de barras para convenio de 6 digitos e nosso numero de 5' do
125
+ @valid_attributes[:valor] = 135.00
126
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
127
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-01')
128
+ @valid_attributes[:convenio] = 123_879
129
+ @valid_attributes[:nosso_numero] = '1234'
130
+ boleto_novo = described_class.new(@valid_attributes)
131
+
132
+ expect(boleto_novo.conta_corrente_dv).to be(0)
133
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('1238790123440420006190018')
134
+ expect(boleto_novo.codigo_barras).to eql('00192376900000135001238790123440420006190018')
135
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00191.23876 90123.440423 00061.900189 2 37690000013500')
136
+ end
137
+
138
+ it 'Montar código de barras para convenio de 6 digitos, nosso numero de 17 e carteira 16' do
139
+ @valid_attributes[:valor] = 135.00
140
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
141
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-01')
142
+ @valid_attributes[:convenio] = 123_879
143
+ @valid_attributes[:nosso_numero] = '1234567899'
144
+ @valid_attributes[:carteira] = '16'
145
+ @valid_attributes[:codigo_servico] = true
146
+ boleto_novo = described_class.new(@valid_attributes)
147
+
148
+ expect(boleto_novo.conta_corrente_dv).to be(0)
149
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('1238790000000123456789921')
150
+ expect(boleto_novo.codigo_barras).to eql('00199376900000135001238790000000123456789921')
151
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00191.23876 90000.000126 34567.899215 9 37690000013500')
152
+ end
153
+
154
+ it 'Montar código de barras para convenio de 6 digitos, nosso numero de 17 e carteira 18' do
155
+ @valid_attributes[:valor] = 135.00
156
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
157
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-01')
158
+ @valid_attributes[:convenio] = 123_879
159
+ @valid_attributes[:nosso_numero] = '1234567899'
160
+ @valid_attributes[:carteira] = '18'
161
+ @valid_attributes[:codigo_servico] = true
162
+ boleto_novo = described_class.new(@valid_attributes)
163
+
164
+ expect(boleto_novo.conta_corrente_dv).to be(0)
165
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('1238790000000123456789921')
166
+ expect(boleto_novo.codigo_barras).to eql('00199376900000135001238790000000123456789921')
167
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00191.23876 90000.000126 34567.899215 9 37690000013500')
168
+ end
169
+
170
+ it 'Não montar código de barras para convenio de 6 digitos, nosso numero de 17 e carteira 17' do
171
+ @valid_attributes[:valor] = 135.00
172
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
173
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-01')
174
+ @valid_attributes[:convenio] = 123_879
175
+ @valid_attributes[:nosso_numero] = '1234567899'
176
+ @valid_attributes[:carteira] = '17'
177
+ @valid_attributes[:codigo_servico] = true
178
+ boleto_novo = described_class.new(@valid_attributes)
179
+
180
+ expect(boleto_novo.conta_corrente_dv).to be(0)
181
+ expect { boleto_novo.codigo_barras_segunda_parte }.to raise_error(RuntimeError)
182
+ expect { boleto_novo.codigo_barras_segunda_parte }.to raise_error('Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é 17')
183
+ end
184
+
185
+ it 'Montar código de barras para convenio de 4 digitos e nosso numero de 7' do
186
+ @valid_attributes[:valor] = 135.00
187
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
188
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-01')
189
+ @valid_attributes[:convenio] = 1238
190
+ @valid_attributes[:nosso_numero] = '123456'
191
+ @valid_attributes[:codigo_servico] = true
192
+ boleto_novo = described_class.new(@valid_attributes)
193
+
194
+ expect(boleto_novo.conta_corrente_dv).to be(0)
195
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('1238012345640420006190018')
196
+ expect(boleto_novo.codigo_barras).to eql('00191376900000135001238012345640420006190018')
197
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00191.23801 12345.640424 00061.900189 1 37690000013500')
198
+ end
199
+
200
+ it 'Montar código de barras para convenio de 7 digitos e nosso número de 10 e carteira 17' do
201
+ valid_attributes = {
202
+ valor: 2246.74,
203
+ local_pagamento: 'QUALQUER BANCO ATÉ O VENCIMENTO',
204
+ cedente: 'Kivanio Barbosa',
205
+ documento_cedente: '12345678912',
206
+ sacado: 'Claudio Pozzebom',
207
+ sacado_documento: '12345678900',
208
+ agencia: '3174',
209
+ conta_corrente: '00011672',
210
+ convenio: 1_474_166,
211
+ nosso_numero: '0000000328',
212
+ carteira: '17',
213
+ data_documento: Date.parse('2016-07-05'),
214
+ data_vencimento: Date.parse('2016-07-05')
215
+ }
216
+
217
+ boleto_novo = described_class.new(valid_attributes)
218
+
219
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('0000001474166000000032817')
220
+ expect(boleto_novo.codigo_barras).to eql('00191684600002246740000001474166000000032817')
221
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00190.00009 01474.166004 00000.328179 1 68460000224674')
222
+ expect(boleto_novo.conta_corrente_dv).to be(6)
223
+ expect(boleto_novo.nosso_numero_dv).to be(4)
224
+ end
225
+
226
+ it 'Não permitir gerar boleto com atributos inválido' do
227
+ boleto_novo = described_class.new
228
+ expect { boleto_novo.codigo_barras }.to raise_error(Bbrcobranca::NaoImplementado)
229
+ expect(boleto_novo.errors.count).to be(2)
230
+ end
231
+
232
+ it 'Calcular agencia_dv' do
233
+ boleto_novo = described_class.new(@valid_attributes)
234
+ boleto_novo.agencia = '85068014982'
235
+ expect(boleto_novo.agencia_dv).to be(9)
236
+ boleto_novo.agencia = '05009401448'
237
+ expect(boleto_novo.agencia_dv).to be(1)
238
+ boleto_novo.agencia = '12387987777700168'
239
+ expect(boleto_novo.agencia_dv).to be(2)
240
+ boleto_novo.agencia = '4042'
241
+ expect(boleto_novo.agencia_dv).to be(8)
242
+ boleto_novo.agencia = '61900'
243
+ expect(boleto_novo.agencia_dv).to be(0)
244
+ boleto_novo.agencia = '0719'
245
+ expect(boleto_novo.agencia_dv).to be(6)
246
+ boleto_novo.agencia = 85_068_014_982
247
+ expect(boleto_novo.agencia_dv).to be(9)
248
+ boleto_novo.agencia = 5_009_401_448
249
+ expect(boleto_novo.agencia_dv).to be(1)
250
+ boleto_novo.agencia = 12_387_987_777_700_168
251
+ expect(boleto_novo.agencia_dv).to be(2)
252
+ boleto_novo.agencia = 4042
253
+ expect(boleto_novo.agencia_dv).to be(8)
254
+ boleto_novo.agencia = 61_900
255
+ expect(boleto_novo.agencia_dv).to be(0)
256
+ boleto_novo.agencia = 719
257
+ expect(boleto_novo.agencia_dv).to be(6)
258
+ end
259
+
260
+ it 'Montar nosso_numero_boleto' do
261
+ boleto_novo = described_class.new(@valid_attributes)
262
+ boleto_novo.nosso_numero = '4042'
263
+ expect(boleto_novo.nosso_numero_boleto).to eql('12387989000004042')
264
+ expect(boleto_novo.nosso_numero_dv).to be(4)
265
+ boleto_novo.nosso_numero = '61900'
266
+ expect(boleto_novo.nosso_numero_boleto).to eql('12387989000061900')
267
+ expect(boleto_novo.nosso_numero_dv).to be(7)
268
+ boleto_novo.nosso_numero = '0719'
269
+ expect(boleto_novo.nosso_numero_boleto).to eql('12387989000000719')
270
+ expect(boleto_novo.nosso_numero_dv).to be(2)
271
+ boleto_novo.nosso_numero = 4042
272
+ expect(boleto_novo.nosso_numero_boleto).to eql('12387989000004042')
273
+ expect(boleto_novo.nosso_numero_dv).to be(4)
274
+ boleto_novo.nosso_numero = 61_900
275
+ expect(boleto_novo.nosso_numero_boleto).to eql('12387989000061900')
276
+ expect(boleto_novo.nosso_numero_dv).to be(7)
277
+ boleto_novo.nosso_numero = 719
278
+ expect(boleto_novo.nosso_numero_boleto).to eql('12387989000000719')
279
+ expect(boleto_novo.nosso_numero_dv).to be(2)
280
+ end
281
+
282
+ it 'Montar agencia_conta_boleto' do
283
+ boleto_novo = described_class.new(@valid_attributes)
284
+
285
+ expect(boleto_novo.agencia_conta_boleto).to eql('4042-8 / 00061900-0')
286
+ boleto_novo.agencia = '0719'
287
+ expect(boleto_novo.agencia_conta_boleto).to eql('0719-6 / 00061900-0')
288
+ boleto_novo.agencia = '0548'
289
+ boleto_novo.conta_corrente = '1448'
290
+ expect(boleto_novo.agencia_conta_boleto).to eql('0548-7 / 00001448-6')
291
+ end
292
+
293
+ describe 'Busca logotipo do banco' do
294
+ it_behaves_like 'busca_logotipo'
295
+ end
296
+
297
+ it 'Gerar boleto nos formatos válidos com método to_' do
298
+ @valid_attributes[:valor] = 135.00
299
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
300
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-03')
301
+ @valid_attributes[:convenio] = 1_238_798
302
+ @valid_attributes[:nosso_numero] = '7777700168'
303
+ boleto_novo = described_class.new(@valid_attributes)
304
+ %w(pdf jpg tif png).each do |format|
305
+ file_body = boleto_novo.send("to_#{format}".to_sym)
306
+ tmp_file = Tempfile.new(['foobar.', format])
307
+ tmp_file.puts file_body
308
+ tmp_file.close
309
+ expect(File.exist?(tmp_file.path)).to be_truthy
310
+ expect(File.stat(tmp_file.path).zero?).to be_falsey
311
+ expect(File.delete(tmp_file.path)).to be(1)
312
+ expect(File.exist?(tmp_file.path)).to be_falsey
313
+ end
314
+ end
315
+
316
+ it 'Gerar boleto nos formatos válidos' do
317
+ @valid_attributes[:valor] = 135.00
318
+ @valid_attributes[:data_documento] = Date.parse('2008-02-01')
319
+ @valid_attributes[:data_vencimento] = Date.parse('2008-02-03')
320
+ @valid_attributes[:convenio] = 1_238_798
321
+ @valid_attributes[:nosso_numero] = '7777700168'
322
+ boleto_novo = described_class.new(@valid_attributes)
323
+ %w(pdf jpg tif png).each do |format|
324
+ file_body = boleto_novo.to(format)
325
+ tmp_file = Tempfile.new(['foobar.', format])
326
+ tmp_file.puts file_body
327
+ tmp_file.close
328
+ expect(File.exist?(tmp_file.path)).to be_truthy
329
+ expect(File.stat(tmp_file.path).zero?).to be_falsey
330
+ expect(File.delete(tmp_file.path)).to be(1)
331
+ expect(File.exist?(tmp_file.path)).to be_falsey
332
+ end
333
+ end
334
+ end
@@ -0,0 +1,152 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Bbrcobranca::Boleto::BancoBrasilia do #:nodoc:[all]
5
+ before do
6
+ @valid_attributes = {
7
+ valor: 10.00,
8
+ cedente: 'PREFEITURA MUNICIPAL DE VILHENA',
9
+ documento_cedente: '04092706000181',
10
+ sacado: 'João Paulo Barbosa',
11
+ sacado_documento: '77777777777',
12
+ agencia: '082',
13
+ conta_corrente: '0000528',
14
+ nosso_numero: '000001'
15
+ }
16
+ end
17
+
18
+ it 'Criar nova instância com atributos padrões' do
19
+ boleto_novo = described_class.new
20
+ expect(boleto_novo.banco).to eql('070')
21
+ expect(boleto_novo.especie_documento).to eql('DM')
22
+ expect(boleto_novo.especie).to eql('R$')
23
+ expect(boleto_novo.moeda).to eql('9')
24
+ expect(boleto_novo.data_processamento).to eql(Date.current)
25
+ expect(boleto_novo.data_vencimento).to eql(Date.current)
26
+ expect(boleto_novo.aceite).to eql('S')
27
+ expect(boleto_novo.quantidade).to eql(1)
28
+ expect(boleto_novo.valor).to eql(0.0)
29
+ expect(boleto_novo.valor_documento).to eql(0.0)
30
+ expect(boleto_novo.local_pagamento).to eql('PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO')
31
+ expect(boleto_novo.codigo_servico).to be_falsey
32
+ expect(boleto_novo.carteira).to eql('2')
33
+ end
34
+
35
+ it 'Criar nova instancia com atributos válidos' do
36
+ boleto_novo = described_class.new @valid_attributes
37
+ @valid_attributes.keys.each do |key|
38
+ expect(boleto_novo.send(key)).to eql(@valid_attributes[key])
39
+ end
40
+ expect(boleto_novo).to be_valid
41
+ end
42
+
43
+ it 'Gerar o código de barras' do
44
+ @valid_attributes[:data_documento] = Date.parse('2015-04-30')
45
+ @valid_attributes[:data_vencimento] = Date.parse('2015-04-30')
46
+
47
+ boleto_novo = described_class.new @valid_attributes
48
+
49
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('0000820000528200000107013')
50
+ expect(boleto_novo.codigo_barras).to eql('07099641400000010000000820000528200000107013')
51
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('07090.00087 20000.528206 00001.070135 9 64140000001000')
52
+
53
+ @valid_attributes[:data_documento] = Date.parse('2016-07-25')
54
+ @valid_attributes[:data_vencimento] = Date.parse('2016-07-25')
55
+ @valid_attributes[:valor] = 372.77
56
+ @valid_attributes[:carteira] = 1
57
+ @valid_attributes[:agencia] = 240
58
+ @valid_attributes[:conta_corrente] = 44990
59
+ @valid_attributes[:nosso_numero] = 1
60
+ @valid_attributes[:nosso_numero_incremento] = 2
61
+
62
+ boleto_novo = described_class.new @valid_attributes
63
+ expect(boleto_novo.codigo_barras_segunda_parte).to eql('0022400044990100000107070')
64
+ expect(boleto_novo.codigo_barras).to eql('07099686600000372770022400044990100000107070')
65
+ expect(boleto_novo.codigo_barras.linha_digitavel).to eql('07090.02240 00044.990109 00001.070705 9 68660000037277')
66
+ end
67
+
68
+ it 'Não permitir gerar boleto com atributos inválidos' do
69
+ boleto_novo = described_class.new
70
+ expect { boleto_novo.codigo_barras }.to raise_error(Bbrcobranca::BoletoInvalido)
71
+ end
72
+
73
+ it 'Tamanho do número da agência deve ser de 3 dígitos' do
74
+ boleto_novo = described_class.new @valid_attributes.merge(agencia: "80")
75
+ expect(boleto_novo.agencia).to eq('080')
76
+
77
+ boleto_novo = described_class.new @valid_attributes.merge(agencia: "0080")
78
+ expect(boleto_novo).not_to be_valid
79
+ end
80
+
81
+ it 'Tamanho do número de nosso_numero_incremento deve ser de 3 dígitos' do
82
+ boleto_novo = described_class.new @valid_attributes.merge(nosso_numero_incremento: '12345678')
83
+ expect(boleto_novo).not_to be_valid
84
+ end
85
+
86
+ it 'Tamanho do número de conta corrente deve ser de 7 dígitos' do
87
+ boleto_novo = described_class.new @valid_attributes.merge(conta_corrente: '12345678')
88
+ expect(boleto_novo).not_to be_valid
89
+ end
90
+
91
+ it 'Número do conta corrente deve ser preenchido com zeros à esquerda quando menor que 7 dígitos' do
92
+ boleto_novo = described_class.new @valid_attributes.merge(conta_corrente: '12345')
93
+ expect(boleto_novo.conta_corrente).to eq('0012345')
94
+ expect(boleto_novo).to be_valid
95
+ end
96
+
97
+ it 'Tamanho da carteira deve ser de 1 dígitos' do
98
+ boleto_novo = described_class.new @valid_attributes.merge(carteira: '145')
99
+ expect(boleto_novo).not_to be_valid
100
+
101
+ boleto_novo = described_class.new @valid_attributes.merge(carteira: '24')
102
+ expect(boleto_novo).not_to be_valid
103
+ end
104
+
105
+ it 'Tamanho do número documento deve ser de 6 dígitos' do
106
+ boleto_novo = described_class.new @valid_attributes.merge(nosso_numero: '1234567')
107
+ expect(boleto_novo).not_to be_valid
108
+ end
109
+
110
+ it 'Número do documento deve ser preenchido com zeros à esquerda quando menor que 6 dígitos' do
111
+ boleto_novo = described_class.new @valid_attributes.merge(nosso_numero: '1')
112
+ expect(boleto_novo.nosso_numero).to eq('000001')
113
+ expect(boleto_novo).to be_valid
114
+ end
115
+
116
+ it 'Montar nosso_numero_boleto' do
117
+ boleto_novo = described_class.new @valid_attributes
118
+ expect(boleto_novo.nosso_numero_boleto).to eq('200000107013')
119
+
120
+ @valid_attributes[:carteira] = 1
121
+ @valid_attributes[:agencia] = '058'
122
+ @valid_attributes[:conta_corrente] = 6002006
123
+ @valid_attributes[:nosso_numero] = 1
124
+ boleto_novo = described_class.new @valid_attributes
125
+ expect(boleto_novo.nosso_numero_boleto).to eq('100000107045')
126
+ end
127
+
128
+ it 'Montar agencia_conta_boleto' do
129
+ boleto_novo = described_class.new(@valid_attributes)
130
+
131
+ expect(boleto_novo.agencia_conta_boleto).to eql('000 - 082 - 0000528')
132
+
133
+ boleto_novo.conta_corrente = '123456'
134
+ expect(boleto_novo.agencia_conta_boleto).to eql('000 - 082 - 0123456')
135
+
136
+ boleto_novo.agencia = '030'
137
+ boleto_novo.conta_corrente = '654321'
138
+ expect(boleto_novo.agencia_conta_boleto).to eql('000 - 030 - 0654321')
139
+ end
140
+
141
+ describe 'Busca logotipo do banco' do
142
+ it_behaves_like 'busca_logotipo'
143
+ end
144
+
145
+ describe 'Formato do boleto' do
146
+ before do
147
+ @valid_attributes[:nosso_numero] = '000168'
148
+ end
149
+
150
+ it_behaves_like 'formatos_validos'
151
+ end
152
+ end