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,9 +2,9 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
describe BrBoleto::Remessa::Cnab400::Base do
|
4
4
|
subject { FactoryGirl.build(:remessa_cnab400_base, pagamentos: pagamento, conta: conta) }
|
5
|
-
let(:pagamento) { FactoryGirl.build(:remessa_pagamento) }
|
6
|
-
let(:conta) { FactoryGirl.build(:conta_sicoob) }
|
7
|
-
let(:sequence_1) { sequence('sequence_1') }
|
5
|
+
let(:pagamento) { FactoryGirl.build(:remessa_pagamento) }
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_sicoob) }
|
7
|
+
let(:sequence_1) { sequence('sequence_1') }
|
8
8
|
|
9
9
|
before do
|
10
10
|
BrBoleto::Remessa::Cnab400::Base.any_instance.stubs(:conta_class).returns(conta.class)
|
@@ -65,7 +65,7 @@ describe BrBoleto::Remessa::Cnab400::Base do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
|
68
|
+
|
69
69
|
describe '#Header' do
|
70
70
|
it '#monta_header deve chamar os metodos para montar o header' do
|
71
71
|
subject.expects(:header_posicao_001_a_001).in_sequence(sequence_1).returns('001_a_001-')
|
@@ -136,8 +136,8 @@ describe BrBoleto::Remessa::Cnab400::Base do
|
|
136
136
|
it "#monta_detalhe - deve montar as 400 posições do com as informações do pagamento" do
|
137
137
|
subject.expects(:detalhe_posicao_001_001).returns('001_001 a-').in_sequence(sequence_1)
|
138
138
|
subject.expects(:detalhe_posicao_002_003).returns('002_003 b-').in_sequence(sequence_1)
|
139
|
-
subject.expects(:detalhe_posicao_004_017).returns('004_017 c-').in_sequence(sequence_1)
|
140
|
-
subject.expects(:detalhe_posicao_018_037).returns('018_037 d-').in_sequence(sequence_1)
|
139
|
+
subject.expects(:detalhe_posicao_004_017).returns('004_017 c-').in_sequence(sequence_1).with(pagamento, 4)
|
140
|
+
subject.expects(:detalhe_posicao_018_037).returns('018_037 d-').in_sequence(sequence_1).with(pagamento, 4)
|
141
141
|
subject.expects(:detalhe_posicao_038_062).returns('038_062 e-').in_sequence(sequence_1)
|
142
142
|
subject.expects(:detalhe_posicao_063_076).returns('063_076 f-').in_sequence(sequence_1).with(pagamento, 4)
|
143
143
|
subject.expects(:detalhe_posicao_077_108).returns('077_108 g-').in_sequence(sequence_1).with(pagamento, 4)
|
@@ -161,12 +161,12 @@ describe BrBoleto::Remessa::Cnab400::Base do
|
|
161
161
|
|
162
162
|
it '#detalhe_posicao_004_017 - deve retornar o cnpj da conta ajustado para 14 digitos' do
|
163
163
|
conta.expects(:cpf_cnpj).returns('1234567890')
|
164
|
-
subject.detalhe_posicao_004_017.must_equal '00001234567890'
|
164
|
+
subject.detalhe_posicao_004_017(pagamento, 3).must_equal '00001234567890'
|
165
165
|
end
|
166
166
|
|
167
167
|
it '#detalhe_posicao_018_037 - deve retornar as informações da conta' do
|
168
168
|
subject.expects(:informacoes_da_conta).with(:detalhe).returns('informacoes_da_conta')
|
169
|
-
subject.detalhe_posicao_018_037.must_equal 'informacoes_da_conta'
|
169
|
+
subject.detalhe_posicao_018_037(pagamento, 5).must_equal 'informacoes_da_conta'
|
170
170
|
|
171
171
|
end
|
172
172
|
|
@@ -239,7 +239,7 @@ describe BrBoleto::Remessa::Cnab400::Base do
|
|
239
239
|
end
|
240
240
|
|
241
241
|
describe '#dados_do_arquivo' do
|
242
|
-
|
242
|
+
|
243
243
|
it "deve montar os dados do arquivo setando o sequencial e os pagamentos corretamente - com 1 pagamento" do
|
244
244
|
subject.expects(:monta_header).returns('montã_header')
|
245
245
|
subject.expects(:monta_detalhe).with(pagamento, 2).returns('mônta_detalhe')
|
@@ -2,10 +2,10 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
describe BrBoleto::Remessa::Cnab400::Bradesco do
|
4
4
|
subject { FactoryGirl.build(:remessa_cnab400_bradesco, pagamentos: pagamento, conta: conta) }
|
5
|
-
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, pagador: pagador) }
|
6
|
-
let(:conta) { FactoryGirl.build(:conta_bradesco) }
|
7
|
-
let(:pagador) { FactoryGirl.build(:pagador) }
|
8
|
-
|
5
|
+
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, pagador: pagador) }
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_bradesco) }
|
7
|
+
let(:pagador) { FactoryGirl.build(:pagador) }
|
8
|
+
|
9
9
|
it "deve ter a class para a conta do bradesco" do
|
10
10
|
BrBoleto::Remessa::Cnab400::Bradesco.new.conta_class.must_equal BrBoleto::Conta::Bradesco
|
11
11
|
end
|
@@ -36,8 +36,8 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
36
36
|
result = subject.informacoes_da_conta(:detalhe)
|
37
37
|
|
38
38
|
result[0..2].must_equal ' '
|
39
|
-
result[3].must_equal '0'
|
40
|
-
result[4..6].must_equal '021'
|
39
|
+
result[3].must_equal '0'
|
40
|
+
result[4..6].must_equal '021'
|
41
41
|
result[7..11].must_equal '01234' # Agencia
|
42
42
|
result[12..18].must_equal '0089755' # Conta Corrente
|
43
43
|
result[19].must_equal '7' # Conta Corrente DV
|
@@ -51,7 +51,7 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
51
51
|
subject.complemento_registro[0..7].must_equal ' '
|
52
52
|
subject.complemento_registro[8..9].must_equal 'MX'
|
53
53
|
subject.complemento_registro[10..16].must_equal '0004758'
|
54
|
-
subject.complemento_registro[17..293].must_equal ''.rjust(277)
|
54
|
+
subject.complemento_registro[17..293].must_equal ''.rjust(277)
|
55
55
|
|
56
56
|
subject.complemento_registro.size.must_equal 294
|
57
57
|
end
|
@@ -62,7 +62,7 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it '#detalhe_posicao_004_017 - deve retornar brancos' do
|
65
|
-
subject.detalhe_posicao_004_017.must_equal (' ' * 14)
|
65
|
+
subject.detalhe_posicao_004_017(pagamento, 0).must_equal (' ' * 14)
|
66
66
|
end
|
67
67
|
|
68
68
|
describe '#detalhe_posicao_063_108' do
|
@@ -73,7 +73,7 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
73
73
|
pagamento.assign_attributes(tipo_emissao: 2, codigo_multa: 0)
|
74
74
|
result = subject.detalhe_posicao_063_108(pagamento)
|
75
75
|
|
76
|
-
result[0..2].must_equal '000'
|
76
|
+
result[0..2].must_equal '000'
|
77
77
|
result[3].must_equal '0' # Identificativos de Multa
|
78
78
|
result[4..7].must_equal '0000' # Percentual de Multa por Atraso
|
79
79
|
result[8..18].must_equal '00000977897' # Identificação do Título no Banco
|
@@ -114,7 +114,7 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
114
114
|
result.size.must_equal 40
|
115
115
|
|
116
116
|
result[00..05].must_equal '050829' # "Data Vencimento: Formato DDMMAA Normal ""DDMMAA"" A vista = ""888888"" Contra Apresentação = ""999999"""
|
117
|
-
result[06..18].must_equal '0000000004756' # Valor do Titulo
|
117
|
+
result[06..18].must_equal '0000000004756' # Valor do Titulo
|
118
118
|
result[19..21].must_equal '000' # 000 ou Número Banco
|
119
119
|
result[22..26].must_equal "00000" # 000000 ou Agencia
|
120
120
|
result[27..28].must_equal "02" # Espécie do Título
|
@@ -169,7 +169,7 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
169
169
|
result[00..01].must_equal "01" # Tipo de Inscrição do Pagador: "01" = CPF / "02" = CNPJ
|
170
170
|
result[02..15].must_equal '00012345678901' # Número do CNPJ ou CPF do Pagador
|
171
171
|
result[16..55].must_equal 'nome pagador'.adjust_size_to(40) # Nome do Pagador
|
172
|
-
|
172
|
+
|
173
173
|
result[56..73].must_equal 'rua do pagador'.adjust_size_to(18) # Endereço do Pagador
|
174
174
|
result[74..83].must_equal 'bairro do pagador'.adjust_size_to(10) # Endereço do Pagador
|
175
175
|
result[84..93].must_equal 'Chapecó'.adjust_size_to(10) # Endereço do Pagador
|
@@ -2,9 +2,9 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
describe BrBoleto::Remessa::Cnab400::Sicredi do
|
4
4
|
subject { FactoryGirl.build(:remessa_cnab400_sicredi, pagamentos: pagamento, conta: conta) }
|
5
|
-
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, pagador: pagador) }
|
6
|
-
let(:conta) { FactoryGirl.build(:conta_sicredi) }
|
7
|
-
let(:pagador) { FactoryGirl.build(:pagador) }
|
5
|
+
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, pagador: pagador) }
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_sicredi) }
|
7
|
+
let(:pagador) { FactoryGirl.build(:pagador) }
|
8
8
|
|
9
9
|
|
10
10
|
context "HEADER" do
|
@@ -29,7 +29,7 @@ describe BrBoleto::Remessa::Cnab400::Sicredi do
|
|
29
29
|
result[0..4].must_equal '89755' # Conta Corrente
|
30
30
|
result[5..18].must_equal '00012345678901' # CPF/CNPJ
|
31
31
|
result[19].must_equal ''.rjust(1) # Branco
|
32
|
-
|
32
|
+
|
33
33
|
result.size.must_equal 20
|
34
34
|
end
|
35
35
|
it "deve retornar com 21 caracteres" do
|
@@ -72,7 +72,7 @@ describe BrBoleto::Remessa::Cnab400::Sicredi do
|
|
72
72
|
|
73
73
|
subject.header_posicao_103_a_394[0..7].must_equal ''.rjust(8)
|
74
74
|
subject.header_posicao_103_a_394[8..14].must_equal '0004758'
|
75
|
-
subject.header_posicao_103_a_394[15..287].must_equal ''.rjust(273)
|
75
|
+
subject.header_posicao_103_a_394[15..287].must_equal ''.rjust(273)
|
76
76
|
subject.header_posicao_103_a_394[288..291].must_equal '2.00'
|
77
77
|
|
78
78
|
subject.header_posicao_103_a_394.size.must_equal 292
|
@@ -81,24 +81,37 @@ describe BrBoleto::Remessa::Cnab400::Sicredi do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
context "DETALHE" do
|
84
|
-
describe "#
|
85
|
-
it { subject.
|
84
|
+
describe "#detalhe_posicao_002_003(pagamento)" do
|
85
|
+
it { subject.detalhe_posicao_002_003(pagamento).size.must_equal 2 }
|
86
86
|
it "deve conter as informações nas posições corretas" do
|
87
|
-
result = subject.
|
87
|
+
result = subject.detalhe_posicao_002_003(pagamento)
|
88
88
|
result[0].must_equal 'A' # Tipo de cobrança
|
89
89
|
result[1].must_equal 'A' # Tipo de carteira
|
90
|
-
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#detalhe_posicao_004_017" do
|
94
|
+
it { subject.detalhe_posicao_004_017(pagamento, 1).size.must_equal 14 }
|
95
|
+
it "deve conter as informações nas posições corretas" do
|
96
|
+
result = subject.detalhe_posicao_004_017(pagamento, 1)
|
91
97
|
|
92
|
-
result.
|
98
|
+
result[0].must_equal 'A' # Tipo de Impressão
|
99
|
+
result[1..12].must_equal ''.rjust(12) # Brancos
|
100
|
+
result[13].must_equal 'A' # "A" - Real
|
93
101
|
end
|
94
102
|
end
|
95
103
|
|
96
|
-
describe "#
|
97
|
-
it { subject.
|
104
|
+
describe "#detalhe_posicao_018_037" do
|
105
|
+
it { subject.detalhe_posicao_018_037(pagamento, 1).size.must_equal 20 }
|
106
|
+
|
98
107
|
it "deve conter as informações nas posições corretas" do
|
99
|
-
|
100
|
-
|
101
|
-
result.
|
108
|
+
pagamento.cod_desconto = '1'
|
109
|
+
pagamento.codigo_juros = '2'
|
110
|
+
result = subject.detalhe_posicao_018_037(pagamento, 1)
|
111
|
+
|
112
|
+
result[0].must_equal 'A' # Tipo de desconto
|
113
|
+
result[1].must_equal 'B' # Tipo de juros
|
114
|
+
result[2..19].must_equal ''.rjust(18) # Brancos
|
102
115
|
end
|
103
116
|
end
|
104
117
|
|
@@ -153,7 +166,7 @@ describe BrBoleto::Remessa::Cnab400::Sicredi do
|
|
153
166
|
pagamento.data_emissao = Date.parse('15/09/2017')
|
154
167
|
result = subject.informacoes_do_pagamento(pagamento, 4)
|
155
168
|
result[00..05].must_equal '050829' # "Data Vencimento: Formato DDMMAA Normal ""DDMMAA"" A vista = ""888888"" Contra Apresentação = ""999999"""
|
156
|
-
result[06..18].must_equal '0000000004756' # Valor do Titulo
|
169
|
+
result[06..18].must_equal '0000000004756' # Valor do Titulo
|
157
170
|
result[19..27].must_equal ' ' # Brancos
|
158
171
|
result[28..28].must_equal "C" # Espécie do Título
|
159
172
|
result[ 29 ].must_equal "N" # dentificação (Sempre 'N')
|
@@ -164,7 +177,7 @@ describe BrBoleto::Remessa::Cnab400::Sicredi do
|
|
164
177
|
result.size.must_equal 40
|
165
178
|
end
|
166
179
|
end
|
167
|
-
|
180
|
+
|
168
181
|
describe '#detalhe_multas_e_juros_do_pagamento' do
|
169
182
|
it "deve ter o tamanho de 58 digitos" do
|
170
183
|
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
@@ -208,7 +221,7 @@ describe BrBoleto::Remessa::Cnab400::Sicredi do
|
|
208
221
|
result[00..01].must_equal "10" # Tipo de Inscrição do Pagador: "01" = CPF / "02" = CNPJ
|
209
222
|
result[02..15].must_equal '00012345678901' # Número do CNPJ ou CPF do Pagador
|
210
223
|
result[16..55].must_equal 'nome pagador'.adjust_size_to(40) # Nome do Pagador
|
211
|
-
|
224
|
+
|
212
225
|
result[56..73].must_equal 'rua do pagador'.adjust_size_to(18) # Endereço do Pagador
|
213
226
|
result[74..83].must_equal 'bairro do pagador'.adjust_size_to(10) # Endereço do Pagador
|
214
227
|
result[84..93].must_equal 'Chapecó'.adjust_size_to(10) # Endereço do Pagador
|
@@ -7,13 +7,13 @@ describe BrBoleto::Remessa::Pagamento do
|
|
7
7
|
it "deve conter o mdule HavePagador" do
|
8
8
|
subject.class.included_modules.must_include BrBoleto::HavePagador
|
9
9
|
end
|
10
|
-
|
11
|
-
|
10
|
+
|
11
|
+
|
12
12
|
describe "validations" do
|
13
13
|
it { must validate_presence_of(:nosso_numero) }
|
14
14
|
it { must validate_presence_of(:data_vencimento) }
|
15
15
|
it { must validate_presence_of(:valor_documento) }
|
16
|
-
|
16
|
+
|
17
17
|
describe '#tipo_impressao' do
|
18
18
|
it { wont validate_presence_of(:tipo_impressao) }
|
19
19
|
|
@@ -21,9 +21,9 @@ describe BrBoleto::Remessa::Pagamento do
|
|
21
21
|
subject.valid_tipo_impressao_required = true
|
22
22
|
must validate_presence_of(:tipo_impressao)
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
describe '#cod_desconto' do
|
28
28
|
before { subject.cod_desconto = '555' }
|
29
29
|
|
@@ -197,7 +197,7 @@ describe BrBoleto::Remessa::Pagamento do
|
|
197
197
|
|
198
198
|
|
199
199
|
describe "default_values" do
|
200
|
-
let(:object) { subject.class.new() }
|
200
|
+
let(:object) { subject.class.new() }
|
201
201
|
it "for data_emissao" do object.data_emissao.must_equal Date.today end
|
202
202
|
it "for valor_desconto" do object.valor_desconto.must_equal 0.0 end
|
203
203
|
it "for valor_iof" do object.valor_iof.must_equal 0.0 end
|
@@ -217,7 +217,7 @@ describe BrBoleto::Remessa::Pagamento do
|
|
217
217
|
it "for identificacao_ocorrencia" do object.identificacao_ocorrencia.must_equal '01' end
|
218
218
|
it "for especie_titulo" do object.especie_titulo.must_equal '01' end
|
219
219
|
it "for codigo_moeda" do object.codigo_moeda.must_equal '9' end
|
220
|
-
it "for forma_cadastramento" do object.forma_cadastramento.must_equal '
|
220
|
+
it "for forma_cadastramento" do object.forma_cadastramento.must_equal '1' end
|
221
221
|
it "for emissao_boleto" do object.emissao_boleto.must_equal '2' end
|
222
222
|
it "for distribuicao_boleto" do object.distribuicao_boleto.must_equal '2' end
|
223
223
|
end
|
@@ -430,7 +430,7 @@ describe BrBoleto::Remessa::Pagamento do
|
|
430
430
|
end
|
431
431
|
|
432
432
|
describe '#percentual_multa_formatado' do
|
433
|
-
let(:number) { BrBoleto::Helper::Number.new(5.47) }
|
433
|
+
let(:number) { BrBoleto::Helper::Number.new(5.47) }
|
434
434
|
it "deve formatar o valor no formato de valores em percentual" do
|
435
435
|
subject.stubs(:percentual_multa).returns(72.50)
|
436
436
|
number
|
@@ -451,7 +451,7 @@ describe BrBoleto::Remessa::Pagamento do
|
|
451
451
|
end
|
452
452
|
end
|
453
453
|
describe '#percentual_juros_formatado' do
|
454
|
-
let(:number) { BrBoleto::Helper::Number.new(5.47) }
|
454
|
+
let(:number) { BrBoleto::Helper::Number.new(5.47) }
|
455
455
|
it "deve formatar o valor no formato de valores em percentual" do
|
456
456
|
subject.stubs(:percentual_juros).returns(7.50)
|
457
457
|
number
|
@@ -1,6 +1,6 @@
|
|
1
1
|
10400000 2334864510001300000000000000000000007506082819600000000EMPRESA EMITENTE CAIXA ECONOMICA FEDERAL 1141120160931470000010500000000000000000000000000000000000000000000000000
|
2
2
|
10400011R0100030 20334864510001308281960000000000000007506082819600000000EMPRESA EMITENTE 000000011411201600000000
|
3
|
-
1040001300001P
|
3
|
+
1040001300001P 0107506082819600000000000141400000000000001222000000000002 1411201600000000000100000000002N1411201631611201600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023001060090000000000
|
4
4
|
1040001300002Q 011000078793321112BENJAMIN FRANCISCO MARCOS VINICIUS FERNARUA PRINCIPAL S/N 881 CENTRO 79210972ANASTACIO MS0000000000000000
|
5
5
|
1040001300003R 01000000000000000000000000000000000000000000000000315112016000000000000000 0000000000000000 000000000000 0
|
6
6
|
1040001300004S 01100 00
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: br_boleto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bruno M. Mergen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|