br_boleto 2.2.7 → 2.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/br_boleto/conta/sicredi.rb +68 -24
- data/lib/br_boleto/remessa/cnab240/caixa.rb +24 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +11 -3
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +11 -11
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +4 -4
- data/lib/br_boleto/remessa/cnab400/sicredi.rb +35 -20
- data/lib/br_boleto/remessa/pagamento.rb +34 -29
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +3 -2
- data/lib/br_boleto/version.rb +1 -1
- data/test/br_boleto/conta/sicredi_test.rb +7 -7
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +26 -21
- data/test/br_boleto/remessa/cnab400/base_test.rb +9 -9
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +11 -11
- data/test/br_boleto/remessa/cnab400/sicredi_test.rb +31 -18
- data/test/br_boleto/remessa/pagamento_test.rb +9 -9
- data/test/fixtures/remessa/cnab240/caixa.rem +1 -1
- metadata +2 -2
@@ -2,13 +2,13 @@
|
|
2
2
|
module BrBoleto
|
3
3
|
module Remessa
|
4
4
|
class Pagamento < BrBoleto::ActiveModelBase
|
5
|
-
|
5
|
+
|
6
6
|
# conté o metodo 'pagador'
|
7
7
|
# CNAB: 240 e 400
|
8
8
|
include BrBoleto::HavePagador
|
9
9
|
|
10
10
|
include BrBoleto::Helper::DefaultCodes
|
11
|
-
|
11
|
+
|
12
12
|
# <b>REQUERIDO</b>: nosso numero
|
13
13
|
# CNAB: 240 e 400
|
14
14
|
attr_accessor :nosso_numero
|
@@ -37,7 +37,7 @@ module BrBoleto
|
|
37
37
|
# 1 - Frente do Bloqueto
|
38
38
|
# 2 - Verso do Bloauqto
|
39
39
|
# 3 - Corpo de instruções da Ficha de Complansação
|
40
|
-
#
|
40
|
+
#
|
41
41
|
attr_accessor :tipo_impressao # Default '1'
|
42
42
|
|
43
43
|
# <b>OPCIONAL</b>: codigo da 1a instrucao
|
@@ -55,11 +55,16 @@ module BrBoleto
|
|
55
55
|
attr_accessor :valor_desconto
|
56
56
|
|
57
57
|
# <b>OPCIONAL</b>: codigo do desconto (para CNAB240)
|
58
|
+
# Indica o tipo de desconto que deseja conceder ao Pagador do título:
|
59
|
+
# - "0" - Sem Desconto;
|
60
|
+
# - "1" - Valor Fixo até a Data do Desconto informada;
|
61
|
+
# - "2" - Percentual até a Data do Desconto informada
|
62
|
+
#
|
58
63
|
attr_accessor :cod_desconto
|
59
64
|
|
60
65
|
# <b>OPCIONAL</b>: valor do IOF
|
61
66
|
attr_accessor :valor_iof
|
62
|
-
|
67
|
+
|
63
68
|
# <b>OPCIONAL</b>: valor do abatimento
|
64
69
|
attr_accessor :valor_abatimento
|
65
70
|
|
@@ -99,18 +104,18 @@ module BrBoleto
|
|
99
104
|
|
100
105
|
# <b>OPCIONAL</b>: Informações para Juros
|
101
106
|
# Código do juros pode ser:
|
102
|
-
# - '1' Valor por Dia
|
103
|
-
# - '2' Taxa Mensal
|
107
|
+
# - '1' Valor por Dia R$
|
108
|
+
# - '2' Taxa Mensal %
|
104
109
|
# - '3' Isento
|
105
110
|
# - E Ainda alguns bancos como o SICOOB não conseguem seguir o padrão e usam o cód '0' para Isento
|
106
111
|
attr_accessor :codigo_juros, :data_juros
|
107
112
|
attr_accessor :valor_juros # Valor de acordo com o código da multa
|
108
|
-
|
113
|
+
|
109
114
|
# Cálculo para saber a taxa de juros % ao mês.
|
110
115
|
# É efetuado o calculo apenas quando o codigo de juros for setado
|
111
116
|
# com 1, na qual significa que foi setado o valor R$ diário.
|
112
117
|
# Esse método sempre deve retornar o percentual de juros MENSAL
|
113
|
-
#
|
118
|
+
#
|
114
119
|
def percentual_juros # Valor % Ex: 2.5% = 2.5
|
115
120
|
if codigo_juros.to_i == 1
|
116
121
|
(valor_juros.to_f*30/valor_documento.to_f*100).to_f.round(2)
|
@@ -129,12 +134,12 @@ module BrBoleto
|
|
129
134
|
0.0
|
130
135
|
end
|
131
136
|
end
|
132
|
-
|
137
|
+
|
133
138
|
# <b>OPCIONAL</b>: Número da parquela que o pagamento representa
|
134
139
|
# Padrão: 1
|
135
140
|
# CNAB: 240 e 400
|
136
141
|
attr_accessor :parcela
|
137
|
-
|
142
|
+
|
138
143
|
# Tipo de Emissão: 1-Banco/Cooperativa 2-Cliente
|
139
144
|
# Banco Sicoob utiliza
|
140
145
|
# CNAB: 240 e 400
|
@@ -212,7 +217,7 @@ module BrBoleto
|
|
212
217
|
# 23 = Nota Fiscal
|
213
218
|
# 24 = Documento de Dívida
|
214
219
|
# 25 = Cédula de Produto Rural
|
215
|
-
# 26 = Warrant
|
220
|
+
# 26 = Warrant
|
216
221
|
# 27 = Dívida Ativa de Estado
|
217
222
|
# 28 = Dívida Ativa de Município
|
218
223
|
# 29 = Dívida Ativa da União
|
@@ -226,7 +231,7 @@ module BrBoleto
|
|
226
231
|
# Aceite título
|
227
232
|
# "0" = Sem aceite / "1" = Com aceite" / Depende de
|
228
233
|
# "N" = Sem aceite / "S" = Com aceite" \ cada banco
|
229
|
-
# "N" = Sem aceite / "A" = Com aceite" \
|
234
|
+
# "N" = Sem aceite / "A" = Com aceite" \
|
230
235
|
# CNAB: 240 e 400
|
231
236
|
# Setar true para Aceite e false para Não aceite
|
232
237
|
attr_accessor :aceite
|
@@ -283,13 +288,13 @@ module BrBoleto
|
|
283
288
|
######################## VALIDAÇÕES PERSONALIZADAS ########################
|
284
289
|
attr_accessor :valid_tipo_impressao_required
|
285
290
|
validates :tipo_impressao, presence: true, if: :valid_tipo_impressao_required
|
286
|
-
|
291
|
+
|
287
292
|
attr_accessor :valid_cod_desconto_length
|
288
293
|
validates :cod_desconto, custom_length: {is: :valid_cod_desconto_length}, if: :valid_cod_desconto_length
|
289
294
|
|
290
295
|
attr_accessor :valid_emissao_boleto_length
|
291
296
|
validates :emissao_boleto, custom_length: {is: :valid_emissao_boleto_length}, if: :valid_emissao_boleto_length
|
292
|
-
|
297
|
+
|
293
298
|
attr_accessor :valid_distribuicao_boleto_length
|
294
299
|
validates :distribuicao_boleto, custom_length: {is: :valid_distribuicao_boleto_length}, if: :valid_distribuicao_boleto_length
|
295
300
|
#############################################################################
|
@@ -309,9 +314,9 @@ module BrBoleto
|
|
309
314
|
|
310
315
|
# Nosso número deve retornar apenas letras e números
|
311
316
|
# Ex: self.nosso_numero = '0100245-P'
|
312
|
-
# self.nosso_numero
|
317
|
+
# self.nosso_numero
|
313
318
|
# ~> '0100245P'
|
314
|
-
#
|
319
|
+
#
|
315
320
|
def nosso_numero
|
316
321
|
"#{@nosso_numero}".remove(/[^\d\w]/i)
|
317
322
|
end
|
@@ -339,7 +344,7 @@ module BrBoleto
|
|
339
344
|
identificacao_ocorrencia: '01',
|
340
345
|
especie_titulo: '01',
|
341
346
|
codigo_moeda: '9',
|
342
|
-
forma_cadastramento: '
|
347
|
+
forma_cadastramento: '1',
|
343
348
|
emissao_boleto: '2', # Cliente Emite
|
344
349
|
distribuicao_boleto: '2', # Cliente Distribui
|
345
350
|
codigo_protesto: '3', # Não protestar
|
@@ -373,7 +378,7 @@ module BrBoleto
|
|
373
378
|
formata_data(data_multa, formato)
|
374
379
|
end
|
375
380
|
def valor_multa_formatado(tamanho=13)
|
376
|
-
BrBoleto::Helper::Number.new(valor_multa).formata_valor_monetario(tamanho)
|
381
|
+
BrBoleto::Helper::Number.new(valor_multa).formata_valor_monetario(tamanho)
|
377
382
|
end
|
378
383
|
|
379
384
|
# Formatação para campos da juros
|
@@ -381,7 +386,7 @@ module BrBoleto
|
|
381
386
|
formata_data(data_juros, formato)
|
382
387
|
end
|
383
388
|
def valor_juros_formatado(tamanho=13)
|
384
|
-
BrBoleto::Helper::Number.new(valor_juros).formata_valor_monetario(tamanho)
|
389
|
+
BrBoleto::Helper::Number.new(valor_juros).formata_valor_monetario(tamanho)
|
385
390
|
end
|
386
391
|
|
387
392
|
# Formata o campo valor
|
@@ -392,7 +397,7 @@ module BrBoleto
|
|
392
397
|
# quantidade de caracteres a ser retornado
|
393
398
|
#
|
394
399
|
def valor_documento_formatado(tamanho = 13)
|
395
|
-
BrBoleto::Helper::Number.new(valor_documento).formata_valor_monetario(tamanho)
|
400
|
+
BrBoleto::Helper::Number.new(valor_documento).formata_valor_monetario(tamanho)
|
396
401
|
end
|
397
402
|
|
398
403
|
# Formata o campo valor_juros_monetario
|
@@ -403,7 +408,7 @@ module BrBoleto
|
|
403
408
|
# quantidade de caracteres a ser retornado
|
404
409
|
#
|
405
410
|
def valor_juros_monetario_formatado(tamanho = 13)
|
406
|
-
BrBoleto::Helper::Number.new(valor_juros_monetario).formata_valor_monetario(tamanho)
|
411
|
+
BrBoleto::Helper::Number.new(valor_juros_monetario).formata_valor_monetario(tamanho)
|
407
412
|
end
|
408
413
|
|
409
414
|
# Formata o campo valor_multa_monetario
|
@@ -414,7 +419,7 @@ module BrBoleto
|
|
414
419
|
# quantidade de caracteres a ser retornado
|
415
420
|
#
|
416
421
|
def valor_multa_monetario_formatado(tamanho = 13)
|
417
|
-
BrBoleto::Helper::Number.new(valor_multa_monetario).formata_valor_monetario(tamanho)
|
422
|
+
BrBoleto::Helper::Number.new(valor_multa_monetario).formata_valor_monetario(tamanho)
|
418
423
|
end
|
419
424
|
|
420
425
|
# Formata o campo valor dos descontos
|
@@ -423,13 +428,13 @@ module BrBoleto
|
|
423
428
|
# quantidade de caracteres a ser retornado
|
424
429
|
#
|
425
430
|
def valor_desconto_formatado(tamanho = 13)
|
426
|
-
BrBoleto::Helper::Number.new(valor_desconto).formata_valor_monetario(tamanho)
|
431
|
+
BrBoleto::Helper::Number.new(valor_desconto).formata_valor_monetario(tamanho)
|
427
432
|
end
|
428
433
|
def desconto_2_valor_formatado(tamanho = 13)
|
429
|
-
BrBoleto::Helper::Number.new(desconto_2_valor).formata_valor_monetario(tamanho)
|
434
|
+
BrBoleto::Helper::Number.new(desconto_2_valor).formata_valor_monetario(tamanho)
|
430
435
|
end
|
431
436
|
def desconto_3_valor_formatado(tamanho = 13)
|
432
|
-
BrBoleto::Helper::Number.new(desconto_3_valor).formata_valor_monetario(tamanho)
|
437
|
+
BrBoleto::Helper::Number.new(desconto_3_valor).formata_valor_monetario(tamanho)
|
433
438
|
end
|
434
439
|
|
435
440
|
# Formata o campo valor do IOF
|
@@ -438,7 +443,7 @@ module BrBoleto
|
|
438
443
|
# quantidade de caracteres a ser retornado
|
439
444
|
#
|
440
445
|
def valor_iof_formatado(tamanho = 13)
|
441
|
-
BrBoleto::Helper::Number.new(valor_iof).formata_valor_monetario(tamanho)
|
446
|
+
BrBoleto::Helper::Number.new(valor_iof).formata_valor_monetario(tamanho)
|
442
447
|
end
|
443
448
|
|
444
449
|
# Formata o campo valor do IOF
|
@@ -447,7 +452,7 @@ module BrBoleto
|
|
447
452
|
# quantidade de caracteres a ser retornado
|
448
453
|
# CNAB: 240 e 400
|
449
454
|
def valor_abatimento_formatado(tamanho = 13)
|
450
|
-
BrBoleto::Helper::Number.new(valor_abatimento).formata_valor_monetario(tamanho)
|
455
|
+
BrBoleto::Helper::Number.new(valor_abatimento).formata_valor_monetario(tamanho)
|
451
456
|
end
|
452
457
|
|
453
458
|
# Formata o valor percentual da multa
|
@@ -458,7 +463,7 @@ module BrBoleto
|
|
458
463
|
def percentual_multa_formatado(tamanho = 6)
|
459
464
|
BrBoleto::Helper::Number.new(percentual_multa).formata_valor_percentual(tamanho).adjust_size_to(tamanho, '0')
|
460
465
|
end
|
461
|
-
|
466
|
+
|
462
467
|
# Formata o valor percentual do juros
|
463
468
|
# Ex:
|
464
469
|
# 2.5% = 2.5 = 025000
|
@@ -468,7 +473,7 @@ module BrBoleto
|
|
468
473
|
BrBoleto::Helper::Number.new(percentual_juros).formata_valor_percentual(tamanho).adjust_size_to(tamanho, '0')
|
469
474
|
end
|
470
475
|
|
471
|
-
|
476
|
+
|
472
477
|
private
|
473
478
|
|
474
479
|
def formata_data(value, formato="%d%m%Y")
|
@@ -4,11 +4,11 @@ module BrBoleto
|
|
4
4
|
module Cnab400
|
5
5
|
class Sicredi < BrBoleto::Retorno::Cnab400::Base
|
6
6
|
private
|
7
|
-
# O valor da posição que representa o nosso_numero está
|
7
|
+
# O valor da posição que representa o nosso_numero está
|
8
8
|
# subdividido em várias partes para o sicredi.
|
9
9
|
#
|
10
10
|
# Nosso Numero (Posição 048 a 062) conforme exemplo informações abaixo:
|
11
|
-
# - Ano - 02 posições (48 a 49) - Ano Atual
|
11
|
+
# - Ano - 02 posições (48 a 49) - Ano Atual
|
12
12
|
# - Byte Idt. - 01 posições (50 a 50) - Byte de identificação
|
13
13
|
# - Número Seq. - 05 posições (51 a 55) - Número sequencial
|
14
14
|
# - DV nosso num. - 01 posição (56 a 56) - Dígito verificador nosso número
|
@@ -28,6 +28,7 @@ module BrBoleto
|
|
28
28
|
codigo_pagador_associado: 20..24,
|
29
29
|
nosso_numero_sem_dv: 48..55,
|
30
30
|
nosso_numero_dv: 56,
|
31
|
+
codigo_ocorrencia_retorno: 109..110,
|
31
32
|
data_ocorrencia: 111..116,
|
32
33
|
data_ocorrencia_sacado: 111..116,
|
33
34
|
numero_documento: 117..126,
|
data/lib/br_boleto/version.rb
CHANGED
@@ -2,7 +2,7 @@ module BrBoleto
|
|
2
2
|
module Version
|
3
3
|
MAJOR = 2 #inclui alterações de API e pode quebrar compatibilidade com versões anteriores
|
4
4
|
MINOR = 2 #inclui novas funcionalidades, sem quebrar APIs existentes
|
5
|
-
PATCH =
|
5
|
+
PATCH = 8 #corrige bugs ou traz melhorias em implementações já existentes
|
6
6
|
CURRENT = "#{MAJOR}.#{MINOR}.#{PATCH}"
|
7
7
|
end
|
8
8
|
end
|
@@ -72,7 +72,7 @@ describe BrBoleto::Conta::Sicredi do
|
|
72
72
|
must_be_message_error(:posto, :custom_length_maximum, {count: 2})
|
73
73
|
subject.posto = '12'
|
74
74
|
wont_be_message_error(:posto, :custom_length_maximum, {count: 2})
|
75
|
-
end
|
75
|
+
end
|
76
76
|
context 'Validações padrões do byte_id' do
|
77
77
|
subject { BrBoleto::Conta::Sicredi.new }
|
78
78
|
it { must validate_presence_of(:byte_id) }
|
@@ -120,7 +120,7 @@ describe BrBoleto::Conta::Sicredi do
|
|
120
120
|
subject.posto = 4
|
121
121
|
subject.posto.must_equal '04'
|
122
122
|
end
|
123
|
-
end
|
123
|
+
end
|
124
124
|
describe '#byte_id' do
|
125
125
|
it "deve ajustar valor para 1 digito" do
|
126
126
|
subject.byte_id = 4
|
@@ -130,15 +130,15 @@ describe BrBoleto::Conta::Sicredi do
|
|
130
130
|
|
131
131
|
describe "#equivalent_especie_titulo_240" do
|
132
132
|
context "CÓDIGOS para o cnab 240 do Sicredi" do
|
133
|
-
it { subject.get_especie_titulo('01', 240).must_equal '
|
133
|
+
it { subject.get_especie_titulo('01', 240).must_equal '99' } # Cheque >> Outros
|
134
134
|
it { subject.get_especie_titulo('02', 240).must_equal '03' } # Duplicata Mercantil por Indicação (DMI)
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
138
138
|
describe "#equivalent_especie_titulo_400" do
|
139
139
|
context "CÓDIGOS para o cnab 400 do Sicredi" do
|
140
|
-
it { subject.get_especie_titulo('01', 400).must_equal 'A' }
|
141
|
-
it { subject.get_especie_titulo('02', 400).must_equal 'A' }
|
140
|
+
it { subject.get_especie_titulo('01', 400).must_equal 'A' }
|
141
|
+
it { subject.get_especie_titulo('02', 400).must_equal 'A' }
|
142
142
|
it { subject.get_especie_titulo('03', 400).must_equal 'A' } # Duplicata Mercantil por Indicação (DMI)
|
143
143
|
it { subject.get_especie_titulo('06', 400).must_equal 'B' } # Duplicata Rural (DR)
|
144
144
|
it { subject.get_especie_titulo('12', 400).must_equal 'C' } # Nota Promissória (NP)
|
@@ -156,10 +156,10 @@ describe BrBoleto::Conta::Sicredi do
|
|
156
156
|
describe "#equivalent_tipo_cobranca_400" do
|
157
157
|
it { subject.get_tipo_cobranca('1', 400).must_equal 'A' } # Cobrança Simples
|
158
158
|
end
|
159
|
-
|
159
|
+
|
160
160
|
describe "#equivalent_tipo_impressao_400" do
|
161
161
|
it { subject.get_tipo_impressao('1', 400).must_equal 'A' } # Frente do Bloqueto
|
162
|
-
end
|
162
|
+
end
|
163
163
|
|
164
164
|
describe "#equivalent_identificacao_emissao_400" do
|
165
165
|
it { subject.get_identificacao_emissao('1', 400).must_equal 'A' } # Impressão é feita pelo Sicredi
|
@@ -2,8 +2,8 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
describe BrBoleto::Remessa::Cnab240::Caixa do
|
4
4
|
subject { FactoryGirl.build(:remessa_cnab240_caixa, lotes: lote) }
|
5
|
-
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, valor_documento: 879.66) }
|
6
|
-
let(:lote) { FactoryGirl.build(:remessa_lote, pagamentos: pagamento) }
|
5
|
+
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, valor_documento: 879.66) }
|
6
|
+
let(:lote) { FactoryGirl.build(:remessa_lote, pagamentos: pagamento) }
|
7
7
|
|
8
8
|
it "deve herdar da class Base" do
|
9
9
|
subject.class.superclass.must_equal BrBoleto::Remessa::Cnab240::Base
|
@@ -58,7 +58,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
58
58
|
subject.conta.versao_aplicativo = '1234567890123456'
|
59
59
|
conta_must_be_msg_error(:versao_aplicativo, :custom_length_maximum, {count: 4})
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
private
|
63
63
|
|
64
64
|
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
@@ -86,7 +86,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
86
86
|
subject.convenio_lote(lote).size.must_equal 20
|
87
87
|
end
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
|
91
91
|
describe "#informacoes_da_conta" do
|
92
92
|
it "deve ter 20 posições" do
|
@@ -96,7 +96,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
96
96
|
it "1 - Primeira parte = agencia 5 posicoes - ajustados com zeros a esquerda" do
|
97
97
|
subject.conta.agencia = '123'
|
98
98
|
subject.informacoes_da_conta[0..4].must_equal '00123'
|
99
|
-
|
99
|
+
|
100
100
|
subject.conta.agencia = '1234'
|
101
101
|
subject.informacoes_da_conta[0..4].must_equal '01234'
|
102
102
|
end
|
@@ -109,13 +109,13 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
109
109
|
it "3 - Terceira parte = convenio 6 posicoes - ajustados com zeros a esquerda" do
|
110
110
|
subject.conta.convenio = '123'
|
111
111
|
subject.informacoes_da_conta[6..11].must_equal '000123'
|
112
|
-
|
112
|
+
|
113
113
|
subject.conta.convenio = '1234'
|
114
114
|
subject.informacoes_da_conta[6..11].must_equal '001234'
|
115
115
|
end
|
116
116
|
|
117
117
|
it "4 - Quarta parte = Modelo personalizado - Deve ter 7 zeros" do
|
118
|
-
subject.informacoes_da_conta[12..18].must_equal('0000000')
|
118
|
+
subject.informacoes_da_conta[12..18].must_equal('0000000')
|
119
119
|
end
|
120
120
|
|
121
121
|
it "5 - Quinta parte = Exclusivo caixa - Deve ter 1 zero" do
|
@@ -131,7 +131,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
131
131
|
it "1 - Primeira parte = versao_aplicativo 4 posicoes - ajustados com zeros a esquerda" do
|
132
132
|
subject.conta.versao_aplicativo = '12'
|
133
133
|
subject.complemento_header_arquivo[0..3].must_equal '0012'
|
134
|
-
|
134
|
+
|
135
135
|
subject.conta.versao_aplicativo = '123'
|
136
136
|
subject.complemento_header_arquivo[0..3].must_equal '0123'
|
137
137
|
end
|
@@ -150,18 +150,18 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
150
150
|
it "1 - Primeira parte = convenio com 6 posicoes - ajustados com zeros a esquerda" do
|
151
151
|
subject.conta.convenio = '12'
|
152
152
|
subject.complemento_p(pagamento)[0..5].must_equal '000012'
|
153
|
-
|
153
|
+
|
154
154
|
subject.conta.convenio = '123'
|
155
155
|
subject.complemento_p(pagamento)[0..5].must_equal '000123'
|
156
156
|
end
|
157
|
-
|
157
|
+
|
158
158
|
it "2 - Seguna parte = Uso Caixa com 11 posicoes com zeros" do
|
159
159
|
subject.complemento_p(pagamento)[6..16].must_equal '0' * 11
|
160
160
|
end
|
161
161
|
|
162
162
|
it "3 - Terceira parte = Modalidade carteira com 2 posicoes" do
|
163
163
|
subject.conta.carteira = '14'
|
164
|
-
subject.complemento_p(pagamento)[17..18].must_equal '14'
|
164
|
+
subject.complemento_p(pagamento)[17..18].must_equal '14'
|
165
165
|
subject.conta.carteira = 'XX'
|
166
166
|
subject.complemento_p(pagamento)[17..18].must_equal 'XX'
|
167
167
|
end
|
@@ -171,7 +171,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
171
171
|
subject.complemento_p(pagamento)[19..34].must_equal '000001234567890'
|
172
172
|
pagamento.nosso_numero = '1234567890123'
|
173
173
|
subject.complemento_p(pagamento)[19..34].must_equal '001234567890123'
|
174
|
-
end
|
174
|
+
end
|
175
175
|
end
|
176
176
|
|
177
177
|
describe "#segmento_p_numero_do_documento" do
|
@@ -182,7 +182,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
182
182
|
it "1 - Primeira parte = Nr Doc. cobrança com 11 posicoes - ajustados com zeros a esquerda" do
|
183
183
|
pagamento.numero_documento = '123456789'
|
184
184
|
subject.segmento_p_numero_do_documento(pagamento)[0..10].must_equal '00123456789'
|
185
|
-
|
185
|
+
|
186
186
|
pagamento.numero_documento = '1234567890'
|
187
187
|
subject.segmento_p_numero_do_documento(pagamento)[0..10].must_equal '01234567890'
|
188
188
|
end
|
@@ -241,7 +241,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
241
241
|
end
|
242
242
|
|
243
243
|
describe 'Geração do arquivo' do
|
244
|
-
let(:conta) do
|
244
|
+
let(:conta) do
|
245
245
|
{
|
246
246
|
razao_social: 'EMPRESA EMITENTE',
|
247
247
|
cpf_cnpj: '33.486.451/0001-30',
|
@@ -249,9 +249,9 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
249
249
|
agencia: '7506',
|
250
250
|
codigo_cedente: '828196',
|
251
251
|
conta_corrente: '1354843'
|
252
|
-
}
|
252
|
+
}
|
253
253
|
end
|
254
|
-
let(:pagador) {
|
254
|
+
let(:pagador) {
|
255
255
|
{
|
256
256
|
nome: 'Benjamin Francisco Marcos Vinicius Fernandes',
|
257
257
|
cpf_cnpj: '787.933.211-12',
|
@@ -262,7 +262,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
262
262
|
uf: 'MS',
|
263
263
|
}
|
264
264
|
}
|
265
|
-
let(:pagamento) {
|
265
|
+
let(:pagamento) {
|
266
266
|
BrBoleto::Remessa::Pagamento.new({
|
267
267
|
nosso_numero: '140000000000000029',
|
268
268
|
numero_documento: '00000000002',
|
@@ -270,16 +270,17 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
270
270
|
valor_documento: 10.00,
|
271
271
|
pagador: pagador,
|
272
272
|
especie_titulo: '02',
|
273
|
-
codigo_juros: '0',
|
273
|
+
codigo_juros: '0',
|
274
274
|
data_juros: Date.parse('16/11/2016'),
|
275
275
|
valor_juros: 0.00,
|
276
|
-
codigo_multa: '0',
|
276
|
+
codigo_multa: '0',
|
277
277
|
data_multa: Date.parse('15/11/2016'),
|
278
278
|
valor_multa: 0.00,
|
279
279
|
data_emissao: Date.parse('14/11/2016'),
|
280
|
+
forma_cadastramento: '2'
|
280
281
|
})
|
281
282
|
}
|
282
|
-
let(:lote) { BrBoleto::Remessa::Lote.new(pagamentos: pagamento) }
|
283
|
+
let(:lote) { BrBoleto::Remessa::Lote.new(pagamentos: pagamento) }
|
283
284
|
it "deve gerar o arquivo de remessa corretamente com as informações passadas" do
|
284
285
|
remessa = BrBoleto::Remessa::Cnab240::Caixa.new({
|
285
286
|
data_hora_arquivo: Time.parse('14/11/2016 09:31:47'),
|
@@ -287,7 +288,11 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
287
288
|
conta: conta,
|
288
289
|
lotes: [lote],
|
289
290
|
})
|
290
|
-
|
291
|
+
lines = read_fixture('remessa/cnab240/caixa.rem').split("\r\n")
|
292
|
+
|
293
|
+
remessa.dados_do_arquivo.split("\r\n").each_with_index do |l, i|
|
294
|
+
l.must_equal( lines[i], "A linha #{i+1} não é igual" )
|
295
|
+
end
|
291
296
|
end
|
292
297
|
end
|
293
298
|
end
|