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,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
|