br_boleto 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +13 -0
  5. data/LICENSE +1 -1
  6. data/README.markdown +22 -7
  7. data/br_boleto.gemspec +9 -7
  8. data/lib/br_boleto/active_model_base.rb +28 -0
  9. data/lib/br_boleto/boleto/base.rb +666 -633
  10. data/lib/br_boleto/boleto/caixa.rb +257 -0
  11. data/lib/br_boleto/boleto/sicoob.rb +6 -18
  12. data/lib/br_boleto/helper/format_value.rb +18 -0
  13. data/lib/br_boleto/remessa/base.rb +1 -22
  14. data/lib/br_boleto/remessa/cnab240/base.rb +12 -9
  15. data/lib/br_boleto/remessa/cnab240/caixa.rb +201 -0
  16. data/lib/br_boleto/remessa/cnab240/helper/header_arquivo.rb +2 -2
  17. data/lib/br_boleto/remessa/cnab240/helper/header_lote.rb +10 -1
  18. data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +2 -2
  19. data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +2 -2
  20. data/lib/br_boleto/remessa/cnab240/helper/trailer_arquivo.rb +7 -0
  21. data/lib/br_boleto/remessa/cnab240/sicoob.rb +6 -6
  22. data/lib/br_boleto/remessa/lote.rb +1 -21
  23. data/lib/br_boleto/remessa/pagamento.rb +22 -36
  24. data/lib/br_boleto/retorno/base.rb +31 -0
  25. data/lib/br_boleto/retorno/cnab240/base.rb +101 -0
  26. data/lib/br_boleto/retorno/cnab240/caixa.rb +30 -0
  27. data/lib/br_boleto/retorno/cnab240/sicoob.rb +35 -0
  28. data/lib/br_boleto/retorno/pagamento.rb +242 -0
  29. data/lib/br_boleto/version.rb +2 -2
  30. data/lib/br_boleto.rb +23 -11
  31. data/test/br_boleto/boleto/base_test.rb +6 -6
  32. data/test/br_boleto/boleto/caixa_test.rb +191 -0
  33. data/test/br_boleto/boleto/sicoob_test.rb +18 -11
  34. data/test/br_boleto/remessa/cnab240/base_test.rb +5 -5
  35. data/test/br_boleto/remessa/cnab240/caixa_test.rb +271 -0
  36. data/test/br_boleto/remessa/cnab240/helper/header_arquivo_test.rb +2 -2
  37. data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +1 -1
  38. data/test/br_boleto/remessa/cnab240/sicoob_test.rb +27 -27
  39. data/test/br_boleto/remessa/pagamento_test.rb +12 -2
  40. data/test/br_boleto/retorno/cnab240/base_test.rb +217 -0
  41. data/test/br_boleto/retorno/cnab240/caixa_test.rb +217 -0
  42. data/test/br_boleto/retorno/cnab240/sicoob_test.rb +217 -0
  43. data/test/br_boleto/retorno/pagamento_test.rb +179 -0
  44. data/test/factories/boleto/boleto_caixa.rb +25 -0
  45. data/test/factories/remessa/cnab240/caixa.rb +14 -0
  46. data/test/factories/remessa/pagamento.rb +1 -0
  47. data/test/factories/retorno/pagamento.rb +6 -0
  48. data/test/files/retorno/cnab240/caixa.ret +14 -0
  49. data/test/files/retorno/cnab240/padrao240.ret +14 -0
  50. metadata +51 -6
@@ -164,9 +164,9 @@ describe BrBoleto::Remessa::Cnab240::Sicoob do
164
164
  end
165
165
  end
166
166
 
167
- describe "#complemento_header" do
167
+ describe "#complemento_header_arquivo" do
168
168
  it "deve ter 29 posições em branco" do
169
- subject.complemento_header.must_equal ''.rjust(29, ' ')
169
+ subject.complemento_header_arquivo.must_equal ''.rjust(29, ' ')
170
170
  end
171
171
  end
172
172
 
@@ -191,23 +191,23 @@ describe BrBoleto::Remessa::Cnab240::Sicoob do
191
191
  end
192
192
 
193
193
  describe "#complemento_trailer_lote_posicao_024_a_029" do
194
- it "se o tipo_cobranca for simples, então deve contar o total de pagamentos do lote" do
195
- subject.expects(:tipo_cobranca).returns(:simples)
194
+ it "se o tipo_cobranca_formatada for simples, então deve contar o total de pagamentos do lote" do
195
+ subject.expects(:tipo_cobranca_formatada).returns(:simples)
196
196
  subject.complemento_trailer_lote_posicao_024_a_029(lote).must_equal "2".rjust(6, "0")
197
197
  end
198
- it "se o tipo_cobranca não for simples, então não deve contar o total de pagamentos do lote" do
199
- subject.expects(:tipo_cobranca).returns(:caucionada)
198
+ it "se o tipo_cobranca_formatada não for simples, então não deve contar o total de pagamentos do lote" do
199
+ subject.expects(:tipo_cobranca_formatada).returns(:caucionada)
200
200
  subject.complemento_trailer_lote_posicao_024_a_029(lote).must_equal "".rjust(6, "0")
201
201
  end
202
202
  end
203
203
 
204
204
  describe "#complemento_trailer_lote_posicao_030_a_046" do
205
- it "se o tipo_cobranca for simples, então deve somar o valor_documento dos pagamentos do lote" do
206
- subject.expects(:tipo_cobranca).returns(:simples)
205
+ it "se o tipo_cobranca_formatada for simples, então deve somar o valor_documento dos pagamentos do lote" do
206
+ subject.expects(:tipo_cobranca_formatada).returns(:simples)
207
207
  subject.complemento_trailer_lote_posicao_030_a_046(lote).must_equal "15025".rjust(17, "0")
208
208
  end
209
- it "se o tipo_cobranca não for simples, então não deve somar o valor_documento dos pagamentos do lote" do
210
- subject.expects(:tipo_cobranca).returns(:caucionada)
209
+ it "se o tipo_cobranca_formatada não for simples, então não deve somar o valor_documento dos pagamentos do lote" do
210
+ subject.expects(:tipo_cobranca_formatada).returns(:caucionada)
211
211
  subject.complemento_trailer_lote_posicao_030_a_046(lote).must_equal "".rjust(17, "0")
212
212
  end
213
213
  end
@@ -221,23 +221,23 @@ describe BrBoleto::Remessa::Cnab240::Sicoob do
221
221
  end
222
222
 
223
223
  describe "#complemento_trailer_lote_posicao_070_a_075" do
224
- it "se o tipo_cobranca for caucionada, então deve contar o total de pagamentos do lote" do
225
- subject.expects(:tipo_cobranca).returns(:caucionada)
224
+ it "se o tipo_cobranca_formatada for caucionada, então deve contar o total de pagamentos do lote" do
225
+ subject.expects(:tipo_cobranca_formatada).returns(:caucionada)
226
226
  subject.complemento_trailer_lote_posicao_070_a_075(lote).must_equal "2".rjust(6, "0")
227
227
  end
228
- it "se o tipo_cobranca não for caucionada, então não deve contar o total de pagamentos do lote" do
229
- subject.expects(:tipo_cobranca).returns(:simples)
228
+ it "se o tipo_cobranca_formatada não for caucionada, então não deve contar o total de pagamentos do lote" do
229
+ subject.expects(:tipo_cobranca_formatada).returns(:simples)
230
230
  subject.complemento_trailer_lote_posicao_070_a_075(lote).must_equal "".rjust(6, "0")
231
231
  end
232
232
  end
233
233
 
234
234
  describe "#complemento_trailer_lote_posicao_076_a_092" do
235
- it "se o tipo_cobranca for caucionada, então deve somar o valor_documento dos pagamentos do lote" do
236
- subject.expects(:tipo_cobranca).returns(:caucionada)
235
+ it "se o tipo_cobranca_formatada for caucionada, então deve somar o valor_documento dos pagamentos do lote" do
236
+ subject.expects(:tipo_cobranca_formatada).returns(:caucionada)
237
237
  subject.complemento_trailer_lote_posicao_076_a_092(lote).must_equal "15025".rjust(17, "0")
238
238
  end
239
- it "se o tipo_cobranca não for caucionada, então não deve somar o valor_documento dos pagamentos do lote" do
240
- subject.expects(:tipo_cobranca).returns(:simples)
239
+ it "se o tipo_cobranca_formatada não for caucionada, então não deve somar o valor_documento dos pagamentos do lote" do
240
+ subject.expects(:tipo_cobranca_formatada).returns(:simples)
241
241
  subject.complemento_trailer_lote_posicao_076_a_092(lote).must_equal "".rjust(17, "0")
242
242
  end
243
243
  end
@@ -310,38 +310,38 @@ describe BrBoleto::Remessa::Cnab240::Sicoob do
310
310
  end
311
311
  end
312
312
 
313
- describe "#tipo_cobranca" do
313
+ describe "#tipo_cobranca_formatada" do
314
314
  it "deve ser :simples se modalidade_carteira for 01" do
315
315
  subject.modalidade_carteira = '01'
316
- subject.tipo_cobranca.must_equal :simples
316
+ subject.tipo_cobranca_formatada.must_equal :simples
317
317
  end
318
318
  it "deve ser :simples se modalidade_carteira for 1" do
319
319
  subject.modalidade_carteira = 1
320
- subject.tipo_cobranca.must_equal :simples
320
+ subject.tipo_cobranca_formatada.must_equal :simples
321
321
  end
322
322
  it "deve ser :simples se modalidade_carteira for 02" do
323
323
  subject.modalidade_carteira = '02'
324
- subject.tipo_cobranca.must_equal :simples
324
+ subject.tipo_cobranca_formatada.must_equal :simples
325
325
  end
326
326
  it "deve ser :simples se modalidade_carteira for 2" do
327
327
  subject.modalidade_carteira = 2
328
- subject.tipo_cobranca.must_equal :simples
328
+ subject.tipo_cobranca_formatada.must_equal :simples
329
329
  end
330
330
  it "deve ser :caucionada se modalidade_carteira for 03" do
331
331
  subject.modalidade_carteira = '03'
332
- subject.tipo_cobranca.must_equal :caucionada
332
+ subject.tipo_cobranca_formatada.must_equal :caucionada
333
333
  end
334
334
  it "deve ser :caucionada se modalidade_carteira for 3" do
335
335
  subject.modalidade_carteira = 3
336
- subject.tipo_cobranca.must_equal :caucionada
336
+ subject.tipo_cobranca_formatada.must_equal :caucionada
337
337
  end
338
338
  it "deve ser nil se modalidade_carteira for outro numero" do
339
339
  subject.modalidade_carteira = 4
340
- subject.tipo_cobranca.must_be_nil
340
+ subject.tipo_cobranca_formatada.must_be_nil
341
341
  end
342
342
  it "deve ser nil se modalidade_carteira for nil" do
343
343
  subject.modalidade_carteira = nil
344
- subject.tipo_cobranca.must_be_nil
344
+ subject.tipo_cobranca_formatada.must_be_nil
345
345
  end
346
346
  end
347
347
  end
@@ -2,8 +2,18 @@
2
2
  require 'test_helper'
3
3
 
4
4
  describe BrBoleto::Remessa::Pagamento do
5
+
6
+ class Shoulda::Matchers::ActiveModel::ValidateLengthOfMatcher
7
+ # Sobrescrevo o método que gera a string para validar o tamanho
8
+ # Pois o CEP só aceita números
9
+ def string_of_length(length)
10
+ '8' * length
11
+ end
12
+ end
13
+
5
14
  subject { FactoryGirl.build(:remessa_pagamento) }
6
15
 
16
+
7
17
  describe "validations" do
8
18
  it { must validate_presence_of(:nosso_numero) }
9
19
  it { must validate_presence_of(:data_vencimento) }
@@ -83,8 +93,8 @@ describe BrBoleto::Remessa::Pagamento do
83
93
 
84
94
  describe "#assign_attributes" do
85
95
  it "posso setar varios atributos" do
86
- subject.assign_attributes({cep_sacado: "NOVO", cidade_sacado: "Valor", uf_sacado: "OK"})
87
- subject.cep_sacado.must_equal 'NOVO'
96
+ subject.assign_attributes({cep_sacado: "89809-360", cidade_sacado: "Valor", uf_sacado: "OK"})
97
+ subject.cep_sacado.must_equal '89809360'
88
98
  subject.cidade_sacado.must_equal 'Valor'
89
99
  subject.uf_sacado.must_equal 'OK'
90
100
  end
@@ -0,0 +1,217 @@
1
+ require 'test_helper'
2
+
3
+ require 'pry'
4
+ describe BrBoleto::Retorno::Cnab240::Base do
5
+ subject { BrBoleto::Retorno::Cnab240::Base.new(file) }
6
+ let(:file) { File.join(BrBoleto.root, "test", "files", "retorno", "cnab240", "padrao240.ret") }
7
+
8
+ it "Deve ler o código do banco" do
9
+ subject.codigo_banco.must_equal '756'
10
+ end
11
+
12
+ it "Deve carregar 5 pagamentos" do
13
+ subject.pagamentos.size.must_equal 5
14
+ end
15
+
16
+ describe "deve setar as informações corretas para os pagamentos" do
17
+ it "valores para o pagamento 1" do
18
+ pagamento = subject.pagamentos[0]
19
+ pagamento.modalidade.must_equal nil
20
+ pagamento.agencia_com_dv.must_equal "030690"
21
+ pagamento.agencia_sem_dv.must_equal "03069"
22
+ pagamento.numero_conta_com_dv.must_equal "0000000777778"
23
+ pagamento.numero_conta_sem_dv.must_equal "000000077777"
24
+ pagamento.dv_conta_e_agencia.must_equal "0"
25
+ pagamento.nosso_numero.must_equal "000000033001014"
26
+ pagamento.carteira.must_equal "1"
27
+ pagamento.numero_codumento.must_equal "000000000000330"
28
+ pagamento.data_vencimento.must_equal Date.parse('03/05/2016')
29
+ pagamento.valor_titulo.must_equal 129.39
30
+ pagamento.banco_recebedor.must_equal "756"
31
+ pagamento.agencia_recebedora_com_dv.must_equal "030690"
32
+ pagamento.identificacao_titulo_empresa.must_equal ""
33
+ pagamento.codigo_moeda.must_equal "09"
34
+ pagamento.sacado_tipo_documento.must_equal "2"
35
+ pagamento.sacado_documento.must_equal "111111111111111"
36
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 1"
37
+ pagamento.numero_contrato.must_equal "0000000000"
38
+ pagamento.valor_tarifa.must_equal 2.69
39
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
40
+ pagamento.valor_juros_multa.must_equal 0.0
41
+ pagamento.valor_desconto.must_equal 0.0
42
+ pagamento.valor_abatimento.must_equal 0.0
43
+ pagamento.valor_iof.must_equal 0.0
44
+ pagamento.valor_pago.must_equal 129.39
45
+ pagamento.valor_liquido.must_equal 129.39
46
+ pagamento.valor_coutras_despesas.must_equal 0.0
47
+ pagamento.valor_coutros_creditos.must_equal 0.0
48
+ pagamento.data_ocorrencia.must_equal Date.parse('02/05/2016')
49
+ pagamento.data_credito.must_equal Date.parse('03/05/2016')
50
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
51
+ pagamento.data_ocorrencia_sacado.must_equal nil
52
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
53
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
54
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "756"
55
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
56
+ end
57
+ it "valores para o pagamento 2" do
58
+ pagamento = subject.pagamentos[1]
59
+ pagamento.modalidade.must_equal nil
60
+ pagamento.agencia_com_dv.must_equal "030690"
61
+ pagamento.agencia_sem_dv.must_equal "03069"
62
+ pagamento.numero_conta_com_dv.must_equal "0000000777778"
63
+ pagamento.numero_conta_sem_dv.must_equal "000000077777"
64
+ pagamento.dv_conta_e_agencia.must_equal "0"
65
+ pagamento.nosso_numero.must_equal "000000034801024"
66
+ pagamento.carteira.must_equal "1"
67
+ pagamento.numero_codumento.must_equal "000000000000348"
68
+ pagamento.data_vencimento.must_equal Date.parse('06/05/2016')
69
+ pagamento.valor_titulo.must_equal 29.0
70
+ pagamento.banco_recebedor.must_equal "756"
71
+ pagamento.agencia_recebedora_com_dv.must_equal "030690"
72
+ pagamento.identificacao_titulo_empresa.must_equal ""
73
+ pagamento.codigo_moeda.must_equal "09"
74
+ pagamento.sacado_tipo_documento.must_equal "2"
75
+ pagamento.sacado_documento.must_equal "222222222222222"
76
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 2"
77
+ pagamento.numero_contrato.must_equal "0000000000"
78
+ pagamento.valor_tarifa.must_equal 2.69
79
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
80
+ pagamento.valor_juros_multa.must_equal 0.0
81
+ pagamento.valor_desconto.must_equal 0.0
82
+ pagamento.valor_abatimento.must_equal 0.0
83
+ pagamento.valor_iof.must_equal 0.0
84
+ pagamento.valor_pago.must_equal 29.0
85
+ pagamento.valor_liquido.must_equal 29.0
86
+ pagamento.valor_coutras_despesas.must_equal 0.0
87
+ pagamento.valor_coutros_creditos.must_equal 0.0
88
+ pagamento.data_ocorrencia.must_equal Date.parse('05/05/2016')
89
+ pagamento.data_credito.must_equal Date.parse('06/05/2016')
90
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
91
+ pagamento.data_ocorrencia_sacado.must_equal nil
92
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
93
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
94
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "304"
95
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
96
+ end
97
+ it "valores para o pagamento 3" do
98
+ pagamento = subject.pagamentos[2]
99
+ pagamento.modalidade.must_equal nil
100
+ pagamento.agencia_com_dv.must_equal "030690"
101
+ pagamento.agencia_sem_dv.must_equal "03069"
102
+ pagamento.numero_conta_com_dv.must_equal "0000000777778"
103
+ pagamento.numero_conta_sem_dv.must_equal "000000077777"
104
+ pagamento.dv_conta_e_agencia.must_equal "0"
105
+ pagamento.nosso_numero.must_equal "000000035501014"
106
+ pagamento.carteira.must_equal "1"
107
+ pagamento.numero_codumento.must_equal "000000000000355"
108
+ pagamento.data_vencimento.must_equal Date.parse('06/05/2016')
109
+ pagamento.valor_titulo.must_equal 89.1
110
+ pagamento.banco_recebedor.must_equal "756"
111
+ pagamento.agencia_recebedora_com_dv.must_equal "030690"
112
+ pagamento.identificacao_titulo_empresa.must_equal ""
113
+ pagamento.codigo_moeda.must_equal "09"
114
+ pagamento.sacado_tipo_documento.must_equal "2"
115
+ pagamento.sacado_documento.must_equal "333333333333333"
116
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 3"
117
+ pagamento.numero_contrato.must_equal "0000000000"
118
+ pagamento.valor_tarifa.must_equal 2.69
119
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
120
+ pagamento.valor_juros_multa.must_equal 0.0
121
+ pagamento.valor_desconto.must_equal 0.0
122
+ pagamento.valor_abatimento.must_equal 0.0
123
+ pagamento.valor_iof.must_equal 0.0
124
+ pagamento.valor_pago.must_equal 89.1
125
+ pagamento.valor_liquido.must_equal 89.1
126
+ pagamento.valor_coutras_despesas.must_equal 0.0
127
+ pagamento.valor_coutros_creditos.must_equal 0.0
128
+ pagamento.data_ocorrencia.must_equal Date.parse('05/05/2016')
129
+ pagamento.data_credito.must_equal Date.parse('06/05/2016')
130
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
131
+ pagamento.data_ocorrencia_sacado.must_equal nil
132
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
133
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
134
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "100"
135
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
136
+ end
137
+ it "valores para o pagamento 4" do
138
+ pagamento = subject.pagamentos[3]
139
+ pagamento.modalidade.must_equal nil
140
+ pagamento.agencia_com_dv.must_equal "030690"
141
+ pagamento.agencia_sem_dv.must_equal "03069"
142
+ pagamento.numero_conta_com_dv.must_equal "0000000777778"
143
+ pagamento.numero_conta_sem_dv.must_equal "000000077777"
144
+ pagamento.dv_conta_e_agencia.must_equal "0"
145
+ pagamento.nosso_numero.must_equal "000000036201014"
146
+ pagamento.carteira.must_equal "1"
147
+ pagamento.numero_codumento.must_equal "000000000000362"
148
+ pagamento.data_vencimento.must_equal Date.parse('06/05/2016')
149
+ pagamento.valor_titulo.must_equal 29.0
150
+ pagamento.banco_recebedor.must_equal "104"
151
+ pagamento.agencia_recebedora_com_dv.must_equal "004140"
152
+ pagamento.identificacao_titulo_empresa.must_equal ""
153
+ pagamento.codigo_moeda.must_equal "09"
154
+ pagamento.sacado_tipo_documento.must_equal "1"
155
+ pagamento.sacado_documento.must_equal "444444444444444"
156
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 4"
157
+ pagamento.numero_contrato.must_equal "0000000000"
158
+ pagamento.valor_tarifa.must_equal 2.69
159
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
160
+ pagamento.valor_juros_multa.must_equal 0.0
161
+ pagamento.valor_desconto.must_equal 0.0
162
+ pagamento.valor_abatimento.must_equal 0.0
163
+ pagamento.valor_iof.must_equal 0.0
164
+ pagamento.valor_pago.must_equal 29.0
165
+ pagamento.valor_liquido.must_equal 29.0
166
+ pagamento.valor_coutras_despesas.must_equal 0.0
167
+ pagamento.valor_coutros_creditos.must_equal 0.0
168
+ pagamento.data_ocorrencia.must_equal Date.parse('06/05/2016')
169
+ pagamento.data_credito.must_equal nil
170
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
171
+ pagamento.data_ocorrencia_sacado.must_equal nil
172
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
173
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
174
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "756"
175
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
176
+ end
177
+ it "valores para o pagamento 4" do
178
+ pagamento = subject.pagamentos[4]
179
+ pagamento.agencia_com_dv.must_equal "030690"
180
+ pagamento.agencia_sem_dv.must_equal "03069"
181
+ pagamento.numero_conta_com_dv.must_equal "0000000777778"
182
+ pagamento.numero_conta_sem_dv.must_equal "000000077777"
183
+ pagamento.dv_conta_e_agencia.must_equal "0"
184
+ pagamento.nosso_numero.must_equal "000000036201014"
185
+ pagamento.carteira.must_equal "1"
186
+ pagamento.numero_codumento.must_equal "000000000000362"
187
+ pagamento.data_vencimento.must_equal Date.parse('06/05/2016')
188
+ pagamento.valor_titulo.must_equal 47.37
189
+ pagamento.banco_recebedor.must_equal "104"
190
+ pagamento.agencia_recebedora_com_dv.must_equal "004140"
191
+ pagamento.identificacao_titulo_empresa.must_equal ""
192
+ pagamento.codigo_moeda.must_equal "09"
193
+ pagamento.sacado_tipo_documento.must_equal "1"
194
+ pagamento.sacado_documento.must_equal "555555555555555"
195
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 5"
196
+ pagamento.numero_contrato.must_equal "0000000000"
197
+ pagamento.valor_tarifa.must_equal 2.69
198
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
199
+ pagamento.valor_juros_multa.must_equal 0.0
200
+ pagamento.valor_desconto.must_equal 0.0
201
+ pagamento.valor_abatimento.must_equal 0.0
202
+ pagamento.valor_iof.must_equal 0.0
203
+ pagamento.valor_pago.must_equal 47.37
204
+ pagamento.valor_liquido.must_equal 47.37
205
+ pagamento.valor_coutras_despesas.must_equal 0.0
206
+ pagamento.valor_coutros_creditos.must_equal 0.0
207
+ pagamento.data_ocorrencia.must_equal Date.parse('06/05/2016')
208
+ pagamento.data_credito.must_equal nil
209
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
210
+ pagamento.data_ocorrencia_sacado.must_equal nil
211
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
212
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
213
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "756"
214
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
215
+ end
216
+ end
217
+ end
@@ -0,0 +1,217 @@
1
+ require 'test_helper'
2
+
3
+ describe BrBoleto::Retorno::Cnab240::Caixa do
4
+ subject { BrBoleto::Retorno::Cnab240::Caixa.new(file) }
5
+ let(:file) { File.join(BrBoleto.root, "test", "files", "retorno", "cnab240", "caixa.ret") }
6
+
7
+ it "Deve ler o código do banco" do
8
+ subject.codigo_banco.must_equal '104'
9
+ end
10
+
11
+ it "Deve carregar 5 pagamentos" do
12
+ subject.pagamentos.size.must_equal 5
13
+ end
14
+
15
+ describe "deve setar as informações corretas para os pagamentos" do
16
+ it "valores para o pagamento 1" do
17
+ pagamento = subject.pagamentos[0]
18
+ pagamento.modalidade.must_equal 'M1'
19
+ pagamento.agencia_com_dv.must_equal "030690"
20
+ pagamento.agencia_sem_dv.must_equal "03069"
21
+ pagamento.numero_conta_com_dv.must_equal "CEDEN1"
22
+ pagamento.numero_conta_sem_dv.must_equal "CEDEN1"
23
+ pagamento.dv_conta_e_agencia.must_equal nil
24
+ pagamento.nosso_numero.must_equal "NOSSONUMERO0001"
25
+ pagamento.carteira.must_equal "X"
26
+ pagamento.numero_codumento.must_equal "NUMEROCOD01"
27
+ pagamento.data_vencimento.must_equal Date.parse('03/05/2016')
28
+ pagamento.valor_titulo.must_equal 129.39
29
+ pagamento.banco_recebedor.must_equal "104"
30
+ pagamento.agencia_recebedora_com_dv.must_equal "030690"
31
+ pagamento.identificacao_titulo_empresa.must_equal ""
32
+ pagamento.codigo_moeda.must_equal "09"
33
+ pagamento.sacado_tipo_documento.must_equal "2"
34
+ pagamento.sacado_documento.must_equal "111111111111111"
35
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 1"
36
+ pagamento.numero_contrato.must_equal "0000000000"
37
+ pagamento.valor_tarifa.must_equal 2.69
38
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
39
+ pagamento.valor_juros_multa.must_equal 0.0
40
+ pagamento.valor_desconto.must_equal 0.0
41
+ pagamento.valor_abatimento.must_equal 0.0
42
+ pagamento.valor_iof.must_equal 0.0
43
+ pagamento.valor_pago.must_equal 129.39
44
+ pagamento.valor_liquido.must_equal 129.39
45
+ pagamento.valor_coutras_despesas.must_equal 0.0
46
+ pagamento.valor_coutros_creditos.must_equal 0.0
47
+ pagamento.data_ocorrencia.must_equal Date.parse('02/05/2016')
48
+ pagamento.data_credito.must_equal Date.parse('03/05/2016')
49
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
50
+ pagamento.data_ocorrencia_sacado.must_equal nil
51
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
52
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
53
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "756"
54
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
55
+ end
56
+ it "valores para o pagamento 2" do
57
+ pagamento = subject.pagamentos[1]
58
+ pagamento.modalidade.must_equal 'M2'
59
+ pagamento.agencia_com_dv.must_equal "030690"
60
+ pagamento.agencia_sem_dv.must_equal "03069"
61
+ pagamento.numero_conta_com_dv.must_equal "CEDEN2"
62
+ pagamento.numero_conta_sem_dv.must_equal "CEDEN2"
63
+ pagamento.dv_conta_e_agencia.must_equal nil
64
+ pagamento.nosso_numero.must_equal "NOSSONUMERO0002"
65
+ pagamento.carteira.must_equal "X"
66
+ pagamento.numero_codumento.must_equal "NUMEROCOD02"
67
+ pagamento.data_vencimento.must_equal Date.parse('06/05/2016')
68
+ pagamento.valor_titulo.must_equal 29.00
69
+ pagamento.banco_recebedor.must_equal "104"
70
+ pagamento.agencia_recebedora_com_dv.must_equal "030690"
71
+ pagamento.identificacao_titulo_empresa.must_equal ""
72
+ pagamento.codigo_moeda.must_equal "09"
73
+ pagamento.sacado_tipo_documento.must_equal "2"
74
+ pagamento.sacado_documento.must_equal "222222222222222"
75
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 2"
76
+ pagamento.numero_contrato.must_equal "0000000000"
77
+ pagamento.valor_tarifa.must_equal 2.69
78
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
79
+ pagamento.valor_juros_multa.must_equal 0.0
80
+ pagamento.valor_desconto.must_equal 0.0
81
+ pagamento.valor_abatimento.must_equal 0.0
82
+ pagamento.valor_iof.must_equal 0.0
83
+ pagamento.valor_pago.must_equal 29.0
84
+ pagamento.valor_liquido.must_equal 29.0
85
+ pagamento.valor_coutras_despesas.must_equal 0.0
86
+ pagamento.valor_coutros_creditos.must_equal 0.0
87
+ pagamento.data_ocorrencia.must_equal Date.parse('05/05/2016')
88
+ pagamento.data_credito.must_equal Date.parse('06/05/2016')
89
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
90
+ pagamento.data_ocorrencia_sacado.must_equal nil
91
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
92
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
93
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "304"
94
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
95
+ end
96
+ it "valores para o pagamento 3" do
97
+ pagamento = subject.pagamentos[2]
98
+ pagamento.modalidade.must_equal 'M3'
99
+ pagamento.agencia_com_dv.must_equal "030690"
100
+ pagamento.agencia_sem_dv.must_equal "03069"
101
+ pagamento.numero_conta_com_dv.must_equal "CEDEN3"
102
+ pagamento.numero_conta_sem_dv.must_equal "CEDEN3"
103
+ pagamento.dv_conta_e_agencia.must_equal nil
104
+ pagamento.nosso_numero.must_equal "NOSSONUMERO0003"
105
+ pagamento.carteira.must_equal "X"
106
+ pagamento.numero_codumento.must_equal "NUMEROCOD03"
107
+ pagamento.data_vencimento.must_equal Date.parse('06/05/2016')
108
+ pagamento.valor_titulo.must_equal 89.1
109
+ pagamento.banco_recebedor.must_equal "104"
110
+ pagamento.agencia_recebedora_com_dv.must_equal "030690"
111
+ pagamento.identificacao_titulo_empresa.must_equal ""
112
+ pagamento.codigo_moeda.must_equal "09"
113
+ pagamento.sacado_tipo_documento.must_equal "2"
114
+ pagamento.sacado_documento.must_equal "333333333333333"
115
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 3"
116
+ pagamento.numero_contrato.must_equal "0000000000"
117
+ pagamento.valor_tarifa.must_equal 2.69
118
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
119
+ pagamento.valor_juros_multa.must_equal 0.0
120
+ pagamento.valor_desconto.must_equal 0.0
121
+ pagamento.valor_abatimento.must_equal 0.0
122
+ pagamento.valor_iof.must_equal 0.0
123
+ pagamento.valor_pago.must_equal 89.1
124
+ pagamento.valor_liquido.must_equal 89.1
125
+ pagamento.valor_coutras_despesas.must_equal 0.0
126
+ pagamento.valor_coutros_creditos.must_equal 0.0
127
+ pagamento.data_ocorrencia.must_equal Date.parse('05/05/2016')
128
+ pagamento.data_credito.must_equal Date.parse('06/05/2016')
129
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
130
+ pagamento.data_ocorrencia_sacado.must_equal nil
131
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
132
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
133
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "100"
134
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
135
+ end
136
+ it "valores para o pagamento 4" do
137
+ pagamento = subject.pagamentos[3]
138
+ pagamento.modalidade.must_equal 'M4'
139
+ pagamento.agencia_com_dv.must_equal "030690"
140
+ pagamento.agencia_sem_dv.must_equal "03069"
141
+ pagamento.numero_conta_com_dv.must_equal "CEDEN4"
142
+ pagamento.numero_conta_sem_dv.must_equal "CEDEN4"
143
+ pagamento.dv_conta_e_agencia.must_equal nil
144
+ pagamento.nosso_numero.must_equal "NOSSONUMERO0004"
145
+ pagamento.carteira.must_equal "X"
146
+ pagamento.numero_codumento.must_equal "NUMEROCOD04"
147
+ pagamento.data_vencimento.must_equal Date.parse('06/05/2016')
148
+ pagamento.valor_titulo.must_equal 29.0
149
+ pagamento.banco_recebedor.must_equal "104"
150
+ pagamento.agencia_recebedora_com_dv.must_equal "004140"
151
+ pagamento.identificacao_titulo_empresa.must_equal ""
152
+ pagamento.codigo_moeda.must_equal "09"
153
+ pagamento.sacado_tipo_documento.must_equal "1"
154
+ pagamento.sacado_documento.must_equal "444444444444444"
155
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 4"
156
+ pagamento.numero_contrato.must_equal "0000000000"
157
+ pagamento.valor_tarifa.must_equal 2.69
158
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
159
+ pagamento.valor_juros_multa.must_equal 0.0
160
+ pagamento.valor_desconto.must_equal 0.0
161
+ pagamento.valor_abatimento.must_equal 0.0
162
+ pagamento.valor_iof.must_equal 0.0
163
+ pagamento.valor_pago.must_equal 29.0
164
+ pagamento.valor_liquido.must_equal 29.0
165
+ pagamento.valor_coutras_despesas.must_equal 0.0
166
+ pagamento.valor_coutros_creditos.must_equal 0.0
167
+ pagamento.data_ocorrencia.must_equal Date.parse('06/05/2016')
168
+ pagamento.data_credito.must_equal nil
169
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
170
+ pagamento.data_ocorrencia_sacado.must_equal nil
171
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
172
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
173
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "104"
174
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
175
+ end
176
+ it "valores para o pagamento 5" do
177
+ pagamento = subject.pagamentos[4]
178
+ pagamento.modalidade.must_equal 'M5'
179
+ pagamento.agencia_com_dv.must_equal "030690"
180
+ pagamento.agencia_sem_dv.must_equal "03069"
181
+ pagamento.numero_conta_com_dv.must_equal "CEDEN5"
182
+ pagamento.numero_conta_sem_dv.must_equal "CEDEN5"
183
+ pagamento.dv_conta_e_agencia.must_equal nil
184
+ pagamento.nosso_numero.must_equal "NOSSONUMERO0005"
185
+ pagamento.carteira.must_equal "X"
186
+ pagamento.numero_codumento.must_equal "NUMEROCOD05"
187
+ pagamento.data_vencimento.must_equal Date.parse('06/05/2016')
188
+ pagamento.valor_titulo.must_equal 47.37
189
+ pagamento.banco_recebedor.must_equal "104"
190
+ pagamento.agencia_recebedora_com_dv.must_equal "004140"
191
+ pagamento.identificacao_titulo_empresa.must_equal ""
192
+ pagamento.codigo_moeda.must_equal "09"
193
+ pagamento.sacado_tipo_documento.must_equal "1"
194
+ pagamento.sacado_documento.must_equal "555555555555555"
195
+ pagamento.sacado_nome.must_equal "NOME DO CLIENTE 5"
196
+ pagamento.numero_contrato.must_equal "0000000000"
197
+ pagamento.valor_tarifa.must_equal 2.69
198
+ pagamento.motivo_ocorrencia.must_equal "0000000004"
199
+ pagamento.valor_juros_multa.must_equal 0.0
200
+ pagamento.valor_desconto.must_equal 0.0
201
+ pagamento.valor_abatimento.must_equal 0.0
202
+ pagamento.valor_iof.must_equal 0.0
203
+ pagamento.valor_pago.must_equal 47.37
204
+ pagamento.valor_liquido.must_equal 47.37
205
+ pagamento.valor_coutras_despesas.must_equal 0.0
206
+ pagamento.valor_coutros_creditos.must_equal 0.0
207
+ pagamento.data_ocorrencia.must_equal Date.parse('06/05/2016')
208
+ pagamento.data_credito.must_equal nil
209
+ pagamento.codigo_ocorrencia_sacado.must_equal ""
210
+ pagamento.data_ocorrencia_sacado.must_equal nil
211
+ pagamento.valor_ocorrencia_sacado.must_equal 0.0
212
+ pagamento.complemento_ocorrencia_sacado.must_equal ""
213
+ pagamento.codigo_ocorrencia_banco_correspondente.must_equal "104"
214
+ pagamento.nosso_numero_banco_correspondente.must_equal ""
215
+ end
216
+ end
217
+ end