br_boleto 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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