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,23 @@
1
+ # -*_ encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Bbrcobranca::Retorno::Cnab240::Base do
5
+ let(:arquivo) { File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', nome_arquivo) }
6
+
7
+ describe "#load_lines" do
8
+ it "retorna nil se o arquivo é nil" do
9
+ expect(Bbrcobranca::Retorno::Cnab240::Base.load_lines(nil)).to be_nil
10
+ end
11
+
12
+ context "Sicoob" do
13
+ let(:nome_arquivo) { "CNAB240SICOOB.RET" }
14
+
15
+ subject { Bbrcobranca::Retorno::Cnab240::Sicoob }
16
+
17
+ it "lê o arquivo pela classe do Sicoob" do
18
+ expect(subject).to receive(:load_lines).with(arquivo, {})
19
+ Bbrcobranca::Retorno::Cnab240::Base.load_lines(arquivo)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,50 @@
1
+ RSpec.describe Bbrcobranca::Retorno::Cnab240::Cecred do
2
+ before do
3
+ @arquivo = File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', 'CNAB240CECRED.RET')
4
+ end
5
+
6
+ it 'Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos de títulos sem registro' do
7
+ pagamentos = described_class.load_lines(@arquivo)
8
+ expect(pagamentos.size).to eq(3)
9
+ pagamento = pagamentos.first
10
+ expect(pagamento.agencia_com_dv).to eql('030390')
11
+ expect(pagamento.cedente_com_dv).to eql('0000000489816')
12
+ expect(pagamento.nosso_numero).to eql('000000000000083')
13
+ expect(pagamento.carteira).to eql('1')
14
+ expect(pagamento.data_vencimento).to eql('13082015')
15
+ expect(pagamento.valor_titulo).to eql('000000000000200')
16
+ expect(pagamento.banco_recebedor).to eql('085')
17
+ expect(pagamento.agencia_recebedora_com_dv).to eql('030390')
18
+ expect(pagamento.data_credito).to eql('10082015')
19
+ expect(pagamento.data_ocorrencia).to eql('10082015')
20
+ expect(pagamento.codigo_ocorrencia).to eql('06')
21
+ expect(pagamento.outras_despesas).to eql('000000000000000')
22
+ expect(pagamento.iof_desconto).to eql('000000000000000')
23
+ expect(pagamento.valor_abatimento).to eql('000000000000000')
24
+ expect(pagamento.desconto_concedito).to eql('000000000000000')
25
+ expect(pagamento.valor_recebido).to eql('000000000000200')
26
+ expect(pagamento.juros_mora).to eql('000000000000000')
27
+ expect(pagamento.outros_recebimento).to eql('000000000000000')
28
+ expect(pagamento.sequencial).to eql('00001')
29
+ expect(pagamento.valor_tarifa).to eql('000000000000170')
30
+ expect(pagamento.motivo_ocorrencia).to eql(['03'])
31
+
32
+ # Dados que não consegui extrair dos registros T e U
33
+ # pagamento.convenio.should eql('')
34
+ # pagamento.tipo_cobranca.should eql('')
35
+ # pagamento.tipo_cobranca_anterior.should eql('')
36
+ # pagamento.natureza_recebimento.should eql('')
37
+ # pagamento.carteira_variacao.should eql('7')
38
+ # pagamento.iof.should eql('')
39
+ # pagamento.comando.should eql('')
40
+ # pagamento.data_liquidacao.should eql('')
41
+ # pagamento.especie_documento.should eql('')
42
+ # pagamento.valor_tarifa.should eql('')
43
+ # pagamento.juros_desconto.should eql('')
44
+ # pagamento.abatimento_nao_aproveitado.should eql('')
45
+ # pagamento.valor_lancamento.should eql('')
46
+ # pagamento.indicativo_lancamento.should eql('')
47
+ # pagamento.indicador_valor.should eql('')
48
+ # pagamento.valor_ajuste.should eql('')
49
+ end
50
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Bbrcobranca::Retorno::Cnab240::Santander do
4
+ before do
5
+ @arquivo = File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', 'CNAB240SANTANDER.RET')
6
+ end
7
+
8
+ it 'Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos' do
9
+ pagamentos = described_class.load_lines(@arquivo)
10
+ expect(pagamentos.size).to eq(2)
11
+ pagamento = pagamentos.first
12
+ expect(pagamento.agencia_com_dv).to eql('31638')
13
+ expect(pagamento.cedente_com_dv).to eql('0130028625')
14
+ expect(pagamento.nosso_numero).to eql('0000000001406')
15
+ expect(pagamento.carteira).to eql('2')
16
+ expect(pagamento.data_vencimento).to eql('01042016')
17
+ expect(pagamento.valor_titulo).to eql('000000000001000')
18
+ expect(pagamento.banco_recebedor).to eql('033')
19
+ expect(pagamento.agencia_recebedora_com_dv).to eql('31638')
20
+ expect(pagamento.data_credito).to eql('01042016')
21
+ expect(pagamento.outras_despesas).to eql('000000000000000')
22
+ expect(pagamento.iof_desconto).to eql('000000000000000')
23
+ expect(pagamento.valor_abatimento).to eql('000000000000000')
24
+ expect(pagamento.desconto_concedito).to eql('000000000000000')
25
+ expect(pagamento.valor_recebido).to eql('000000000001000')
26
+ expect(pagamento.juros_mora).to eql('000000000000000')
27
+ expect(pagamento.outros_recebimento).to eql('000000000000000')
28
+ expect(pagamento.sequencial).to eql('00001')
29
+ expect(pagamento.valor_tarifa).to eql('000000000000392')
30
+ expect(pagamento.motivo_ocorrencia).to eql([])
31
+
32
+ # Dados que não consegui extrair dos registros T e U
33
+ # pagamento.convenio.should eql('')
34
+ # pagamento.tipo_cobranca.should eql('')
35
+ # pagamento.tipo_cobranca_anterior.should eql('')
36
+ # pagamento.natureza_recebimento.should eql('')
37
+ # pagamento.carteira_variacao.should eql('7')
38
+ # pagamento.iof.should eql('')
39
+ # pagamento.comando.should eql('')
40
+ # pagamento.data_liquidacao.should eql('')
41
+ # pagamento.especie_documento.should eql('')
42
+ # pagamento.valor_tarifa.should eql('')
43
+ # pagamento.juros_desconto.should eql('')
44
+ # pagamento.abatimento_nao_aproveitado.should eql('')
45
+ # pagamento.valor_lancamento.should eql('')
46
+ # pagamento.indicativo_lancamento.should eql('')
47
+ # pagamento.indicador_valor.should eql('')
48
+ # pagamento.valor_ajuste.should eql('')
49
+ end
50
+ end
@@ -0,0 +1,50 @@
1
+ RSpec.describe Bbrcobranca::Retorno::Cnab240::Sicoob do
2
+ before do
3
+ @arquivo = File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', 'CNAB240SICOOB.RET')
4
+ end
5
+
6
+ it 'Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos de títulos sem registro' do
7
+ pagamentos = described_class.load_lines(@arquivo)
8
+ expect(pagamentos.size).to eq(3)
9
+ pagamento = pagamentos.first
10
+ expect(pagamento.agencia_com_dv).to eql('030390')
11
+ expect(pagamento.cedente_com_dv).to eql('0000000489816')
12
+ expect(pagamento.nosso_numero).to eql('0000000083')
13
+ expect(pagamento.carteira).to eql('1')
14
+ expect(pagamento.data_vencimento).to eql('13082015')
15
+ expect(pagamento.valor_titulo).to eql('000000000000200')
16
+ expect(pagamento.banco_recebedor).to eql('756')
17
+ expect(pagamento.agencia_recebedora_com_dv).to eql('030390')
18
+ expect(pagamento.codigo_ocorrencia).to eql('06')
19
+ expect(pagamento.data_ocorrencia).to eql('10082015')
20
+ expect(pagamento.data_credito).to eql('10082015')
21
+ expect(pagamento.outras_despesas).to eql('000000000000000')
22
+ expect(pagamento.iof_desconto).to eql('000000000000000')
23
+ expect(pagamento.valor_abatimento).to eql('000000000000000')
24
+ expect(pagamento.desconto_concedito).to eql('000000000000000')
25
+ expect(pagamento.valor_recebido).to eql('000000000000200')
26
+ expect(pagamento.juros_mora).to eql('000000000000000')
27
+ expect(pagamento.outros_recebimento).to eql('000000000000000')
28
+ expect(pagamento.sequencial).to eql('00001')
29
+ expect(pagamento.valor_tarifa).to eql('000000000000170')
30
+ expect(pagamento.motivo_ocorrencia).to eql(['03'])
31
+
32
+ # Dados que não consegui extrair dos registros T e U
33
+ # pagamento.convenio.should eql('')
34
+ # pagamento.tipo_cobranca.should eql('')
35
+ # pagamento.tipo_cobranca_anterior.should eql('')
36
+ # pagamento.natureza_recebimento.should eql('')
37
+ # pagamento.carteira_variacao.should eql('7')
38
+ # pagamento.iof.should eql('')
39
+ # pagamento.comando.should eql('')
40
+ # pagamento.data_liquidacao.should eql('')
41
+ # pagamento.especie_documento.should eql('')
42
+ # pagamento.valor_tarifa.should eql('')
43
+ # pagamento.juros_desconto.should eql('')
44
+ # pagamento.abatimento_nao_aproveitado.should eql('')
45
+ # pagamento.valor_lancamento.should eql('')
46
+ # pagamento.indicativo_lancamento.should eql('')
47
+ # pagamento.indicador_valor.should eql('')
48
+ # pagamento.valor_ajuste.should eql('')
49
+ end
50
+ end
@@ -0,0 +1,31 @@
1
+ RSpec.describe Bbrcobranca::Retorno::Cnab240::Sicredi do
2
+ before do
3
+ @arquivo = File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', 'CNAB240SICREDI.CRT')
4
+ end
5
+
6
+ it 'Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos de títulos sem registro' do
7
+ pagamentos = described_class.load_lines(@arquivo)
8
+ expect(pagamentos.size).to eq(2)
9
+ pagamento = pagamentos.first
10
+ expect(pagamento.agencia_com_dv).to eql('00390')
11
+ expect(pagamento.cedente_com_dv).to eql('0000000041468')
12
+ expect(pagamento.nosso_numero).to eql('172000595')
13
+ expect(pagamento.carteira).to eql('1')
14
+ expect(pagamento.data_vencimento).to eql('13042017')
15
+ expect(pagamento.valor_titulo).to eql('000000000000995')
16
+ expect(pagamento.banco_recebedor).to eql('000')
17
+ expect(pagamento.codigo_ocorrencia).to eql('02')
18
+ expect(pagamento.data_ocorrencia).to eql('06042017')
19
+ expect(pagamento.data_credito).to eql('')
20
+ expect(pagamento.outras_despesas).to eql('000000000000000')
21
+ expect(pagamento.iof_desconto).to eql('000000000000000')
22
+ expect(pagamento.valor_abatimento).to eql('000000000000000')
23
+ expect(pagamento.desconto_concedito).to eql('000000000000000')
24
+ expect(pagamento.valor_recebido).to eql('000000000000000')
25
+ expect(pagamento.juros_mora).to eql('000000000000000')
26
+ expect(pagamento.outros_recebimento).to eql('000000000000000')
27
+ expect(pagamento.sequencial).to eql('00001')
28
+ expect(pagamento.valor_tarifa).to eql('000000000000000')
29
+ expect(pagamento.motivo_ocorrencia).to eql(['A4'])
30
+ end
31
+ end
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Bbrcobranca::Retorno::Cnab400::BancoBrasilia do
5
+ before do
6
+ @arquivo = File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', 'CNAB400BANCOBRASILIA.RET')
7
+ end
8
+
9
+ it 'Ignora primeira linha que é header' do
10
+ pagamentos = described_class.load_lines(@arquivo)
11
+ pagamento = pagamentos.first
12
+ expect(pagamento.sequencial).to eql('000002')
13
+ end
14
+
15
+ it 'Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos de títulos sem registro' do
16
+ pagamentos = described_class.load_lines(@arquivo)
17
+ expect(pagamentos.size).to eq(2) # deve ignorar a primeira linha que é header
18
+ pagamento = pagamentos.first
19
+ expect(pagamento.cedente_com_dv).to eql('00000000279998886')
20
+ expect(pagamento.nosso_numero).to eql('107851907015')
21
+ expect(pagamento.valor_recebido).to eql('0000000026492')
22
+ expect(pagamento.data_credito).to eql('26072012')
23
+ expect(pagamento.codigo_ocorrencia).to eql('05')
24
+ expect(pagamento.data_ocorrencia).to eql('26072012')
25
+ expect(pagamento.data_vencimento).to eql('26072012')
26
+ expect(pagamento.valor_titulo).to eql('0000000026492')
27
+ expect(pagamento.banco_recebedor).to eql('070')
28
+ expect(pagamento.especie_documento).to eql('00')
29
+ expect(pagamento.valor_tarifa).to eql('0000000000000')
30
+ expect(pagamento.iof).to eql('0000000000000')
31
+ expect(pagamento.valor_abatimento).to eql('0000000000000')
32
+ expect(pagamento.desconto).to eql('0000000000000')
33
+ expect(pagamento.outros_recebimento).to eql('0000000000000')
34
+ expect(pagamento.motivo_ocorrencia).to eql('')
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Bbrcobranca::Retorno::Cnab400::BancoNordeste do
5
+ before do
6
+ @arquivo = File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', 'CNAB400BANCONORDESTE.RET')
7
+ end
8
+
9
+ it 'Ignora primeira linha que é header' do
10
+ pagamentos = described_class.load_lines(@arquivo)
11
+ pagamento = pagamentos.first
12
+ expect(pagamento.sequencial).to eql('000002')
13
+ end
14
+
15
+ it 'Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos de títulos sem registro' do
16
+ pagamentos = described_class.load_lines(@arquivo)
17
+ expect(pagamentos.size).to eq(2) # deve ignorar a primeira linha que é header
18
+ pagamento = pagamentos.first
19
+
20
+ expect(pagamento.agencia_sem_dv).to eql('0217')
21
+ expect(pagamento.cedente_com_dv).to eql('00056911')
22
+ expect(pagamento.nosso_numero).to eql('00000116')
23
+ expect(pagamento.valor_recebido).to eql('0000000017500')
24
+ expect(pagamento.carteira).to eql('I')
25
+ expect(pagamento.codigo_ocorrencia).to eql('06')
26
+ expect(pagamento.data_ocorrencia).to eql('191114')
27
+ expect(pagamento.data_vencimento).to eql('191114')
28
+ expect(pagamento.valor_titulo).to eql('0000000017500')
29
+ expect(pagamento.banco_recebedor).to eql('004')
30
+ expect(pagamento.especie_documento).to eql('01')
31
+ expect(pagamento.valor_tarifa).to eql('0000000000260')
32
+ expect(pagamento.valor_abatimento).to eql('0000000000000')
33
+ expect(pagamento.desconto).to eql('0000000000000')
34
+ expect(pagamento.valor_recebido).to eql('0000000017500')
35
+ expect(pagamento.juros_mora).to eql('0000000000000')
36
+ expect(pagamento.data_credito).to eql('191114')
37
+ expect(pagamento.motivo_ocorrencia).to eql('00000000000000000011100000000000000000000000000000000000000000000000000000000')
38
+ end
39
+ end
@@ -0,0 +1,41 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Bbrcobranca::Retorno::Cnab400::Banrisul do
5
+ before do
6
+ @arquivo = File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', 'CNAB400BANRISUL.RET')
7
+ end
8
+
9
+ it 'Ignora primeira linha que é header' do
10
+ pagamentos = described_class.load_lines(@arquivo)
11
+ pagamento = pagamentos.first
12
+ expect(pagamento.sequencial).to eql('000002')
13
+ end
14
+
15
+ it 'Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos de títulos sem registro' do
16
+ pagamentos = described_class.load_lines(@arquivo)
17
+ expect(pagamentos.size).to eq(2) # deve ignorar a primeira linha que é header
18
+ pagamento = pagamentos.first
19
+ expect(pagamento.agencia_sem_dv).to eql('1102')
20
+ expect(pagamento.cedente_com_dv).to eql('900015096')
21
+ expect(pagamento.nosso_numero).to eql('2283256350')
22
+ expect(pagamento.carteira).to eql('1')
23
+ expect(pagamento.codigo_ocorrencia).to eql('06')
24
+ expect(pagamento.data_ocorrencia).to eql('150515')
25
+ expect(pagamento.data_vencimento).to eql('250515')
26
+ expect(pagamento.valor_titulo).to eql('0000000145000')
27
+ expect(pagamento.banco_recebedor).to eql('041')
28
+ expect(pagamento.agencia_recebedora_com_dv).to eql('1102')
29
+ expect(pagamento.especie_documento).to eql('')
30
+ expect(pagamento.valor_tarifa).to eql('0000000000160')
31
+ expect(pagamento.iof).to eql('0000000000000')
32
+ expect(pagamento.valor_abatimento).to eql('0000000000000')
33
+ expect(pagamento.desconto).to eql('0000000000000')
34
+ expect(pagamento.valor_recebido).to eql('0000000145000')
35
+ expect(pagamento.juros_mora).to eql('0000000000000')
36
+ expect(pagamento.outros_recebimento).to eql('0000000000000')
37
+ expect(pagamento.data_credito).to eql('150515')
38
+ expect(pagamento.motivo_ocorrencia).to eql('')
39
+ expect(pagamento.sequencial).to eql('000002')
40
+ end
41
+ end
@@ -0,0 +1,57 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Bbrcobranca::Retorno::Cnab400::Base do
5
+ let(:arquivo) { File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', nome_arquivo) }
6
+
7
+ describe "#load_lines" do
8
+
9
+ it "retorna nil se o arquivo é nil" do
10
+ expect(Bbrcobranca::Retorno::Cnab400::Base.load_lines(nil)).to be_nil
11
+ end
12
+
13
+ context "Banco de Brasilia" do
14
+ let(:nome_arquivo) { "CNAB400BANCOBRASILIA.RET" }
15
+
16
+ subject { Bbrcobranca::Retorno::Cnab400::BancoBrasilia }
17
+
18
+ it "lê o arquivo pela classe do Banco de Brasilia" do
19
+ expect(subject).to receive(:load_lines).with(arquivo, {})
20
+ Bbrcobranca::Retorno::Cnab400::Base.load_lines(arquivo)
21
+ end
22
+ end
23
+
24
+ context "Bradesco" do
25
+ let(:nome_arquivo) { "CNAB400BRADESCO.RET" }
26
+
27
+ subject { Bbrcobranca::Retorno::Cnab400::Bradesco }
28
+
29
+ it "lê o arquivo pela classe do Bradesco" do
30
+ expect(subject).to receive(:load_lines).with(arquivo, {})
31
+ Bbrcobranca::Retorno::Cnab400::Base.load_lines(arquivo)
32
+ end
33
+ end
34
+
35
+ context "Itaú" do
36
+ let(:nome_arquivo) { "CNAB400ITAU.RET" }
37
+
38
+ subject { Bbrcobranca::Retorno::Cnab400::Itau }
39
+
40
+ it "lê o arquivo pela classe do Itaú" do
41
+ expect(subject).to receive(:load_lines).with(arquivo, {})
42
+ Bbrcobranca::Retorno::Cnab400::Base.load_lines(arquivo)
43
+ end
44
+ end
45
+
46
+ context "Santander" do
47
+ let(:nome_arquivo) { "CNAB400SANTANDER.RET" }
48
+
49
+ subject { Bbrcobranca::Retorno::Cnab400::Santander }
50
+
51
+ it "lê o arquivo pela classe do Santander" do
52
+ expect(subject).to receive(:load_lines).with(arquivo, {})
53
+ Bbrcobranca::Retorno::Cnab400::Base.load_lines(arquivo)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,58 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Bbrcobranca::Retorno::Cnab400::Bradesco do
5
+ before do
6
+ @arquivo = File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', 'CNAB400BRADESCO.RET')
7
+ end
8
+
9
+ it 'Ignora primeira linha que é header' do
10
+ pagamentos = described_class.load_lines(@arquivo)
11
+ pagamento = pagamentos.first
12
+ expect(pagamento.sequencial).to eql('000002')
13
+ end
14
+
15
+ it 'Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos de títulos sem registro' do
16
+ pagamentos = described_class.load_lines(@arquivo)
17
+ expect(pagamentos.size).to eq(7) # deve ignorar a primeira linha que é header
18
+ pagamento = pagamentos.first
19
+ expect(pagamento.agencia_com_dv).to eql('01467-2')
20
+ expect(pagamento.cedente_com_dv).to eql('0019669P')
21
+ expect(pagamento.nosso_numero).to eql('000000000303')
22
+ expect(pagamento.carteira).to eql('009')
23
+ expect(pagamento.data_vencimento).to eql('250515')
24
+ expect(pagamento.valor_titulo).to eql('0000000145000')
25
+ expect(pagamento.banco_recebedor).to eql('237')
26
+ expect(pagamento.agencia_recebedora_com_dv).to eql('04157')
27
+ expect(pagamento.especie_documento).to eql('')
28
+ expect(pagamento.valor_tarifa).to eql('0000000000160')
29
+ expect(pagamento.iof).to eql('0000000000000')
30
+ expect(pagamento.valor_abatimento).to eql('0000000000000')
31
+ expect(pagamento.desconto).to eql('0000000000000')
32
+ expect(pagamento.valor_recebido).to eql('0000000145000')
33
+ expect(pagamento.juros_mora).to eql('0000000000000')
34
+ expect(pagamento.outros_recebimento).to eql('0000000000000')
35
+ expect(pagamento.codigo_ocorrencia).to eql('02')
36
+ expect(pagamento.data_ocorrencia).to eql('150515')
37
+ expect(pagamento.data_credito).to eql('150515')
38
+ expect(pagamento.motivo_ocorrencia).to eql([])
39
+ expect(pagamento.sequencial).to eql('000002')
40
+
41
+ # Campos da classe base que não encontrei a relação com CNAB400
42
+ # parse.field :tipo_cobranca,80..80
43
+ # parse.field :tipo_cobranca_anterior,81..81
44
+ # parse.field :natureza_recebimento,86..87
45
+ # parse.field :convenio,31..37
46
+ # parse.field :comando,108..109
47
+ # parse.field :juros_desconto,201..213
48
+ # parse.field :iof_desconto,214..226
49
+ # parse.field :desconto_concedito,240..252
50
+ # parse.field :outras_despesas,279..291
51
+ # parse.field :abatimento_nao_aproveitado,292..304
52
+ # parse.field :data_liquidacao,295..300
53
+ # parse.field :valor_lancamento,305..317
54
+ # parse.field :indicativo_lancamento,318..318
55
+ # parse.field :indicador_valor,319..319
56
+ # parse.field :valor_ajuste,320..331
57
+ end
58
+ end