br_boleto 2.2.7 → 2.2.8
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.
- 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
|