brcobranca 6.4.0 → 6.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/brcobranca/remessa/base.rb +8 -0
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +71 -1
- data/lib/brcobranca/remessa/cnab400/base.rb +0 -8
- data/lib/brcobranca/version.rb +1 -1
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +7 -0
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +7 -0
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +32 -2
- data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +2 -2
- data/spec/support/shared_examples/cnab240.rb +0 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a43c935455c7b61ec04dc199fabf5909cba8e44
|
4
|
+
data.tar.gz: d6da66172c2c81c0891491c7361f1a8384ac259a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2eeb4fead4948e171e9efff4841e2e846305faeec867a32deb59fa202d6b49dcd7c480acefe6add636371ac646554b8e920f8e995facd24da44a06f62f8dc40e
|
7
|
+
data.tar.gz: 165181b485a31718d71ce94e957b4c7bd89daea332255d98d2496d79c1ddc5d3b725decce6df94a85c5dad5a476571f81b41aaf485c499b90e7a89a70d035a13
|
data/Gemfile.lock
CHANGED
@@ -57,6 +57,14 @@ module Brcobranca
|
|
57
57
|
|
58
58
|
yield self if block_given?
|
59
59
|
end
|
60
|
+
|
61
|
+
# Soma de todos os boletos
|
62
|
+
#
|
63
|
+
# @return [String]
|
64
|
+
def valor_total_titulos(tamanho=13)
|
65
|
+
value = pagamentos.inject(0.0) { |sum, pagamento| sum += pagamento.valor }
|
66
|
+
sprintf('%.2f', value).delete('.').rjust(tamanho, '0')
|
67
|
+
end
|
60
68
|
end
|
61
69
|
end
|
62
70
|
end
|
@@ -89,7 +89,7 @@ module Brcobranca
|
|
89
89
|
end
|
90
90
|
|
91
91
|
def complemento_trailer
|
92
|
-
''.rjust(
|
92
|
+
''.rjust(117, ' ')
|
93
93
|
end
|
94
94
|
|
95
95
|
def monta_segmento_p(pagamento, nro_lote, sequencial)
|
@@ -146,6 +146,76 @@ module Brcobranca
|
|
146
146
|
"#{conta_corrente.rjust(12, '0')}#{digito_conta} #{formata_nosso_numero(pagamento)}"
|
147
147
|
end
|
148
148
|
|
149
|
+
# Monta o registro trailer do lote
|
150
|
+
#
|
151
|
+
# @param nro_lote [Integer]
|
152
|
+
# numero do lote no arquivo (iterar a cada novo lote)
|
153
|
+
#
|
154
|
+
# @param nro_registros [Integer]
|
155
|
+
# numero de registros(linhas) no lote (contando header e trailer)
|
156
|
+
#
|
157
|
+
# @return [String]
|
158
|
+
#
|
159
|
+
def monta_trailer_lote(nro_lote, nro_registros)
|
160
|
+
# CAMPO # TAMANHO
|
161
|
+
trailer_lote = ''
|
162
|
+
# codigo banco 3
|
163
|
+
trailer_lote << cod_banco
|
164
|
+
# lote de servico 4
|
165
|
+
trailer_lote << nro_lote.to_s.rjust(4, '0')
|
166
|
+
# tipo de servico 1
|
167
|
+
trailer_lote << '5'
|
168
|
+
# uso exclusivo 9
|
169
|
+
trailer_lote << ''.rjust(9, ' ')
|
170
|
+
# qtde de registros lote 6
|
171
|
+
trailer_lote << nro_registros.to_s.rjust(6, '0')
|
172
|
+
|
173
|
+
# qtde de Títulos em Cobrança Simples 6
|
174
|
+
trailer_lote << pagamentos.count.to_s.rjust(6, '0')
|
175
|
+
# Valor Total dos Títulos em Carteiras Simples 15 2
|
176
|
+
trailer_lote << valor_total_titulos(17)
|
177
|
+
# qtde de Títulos em Cobrança Vinculada 6
|
178
|
+
trailer_lote << ''.rjust(6, '0')
|
179
|
+
# Valor Total dos Títulos em Carteiras Vinculada 15 2
|
180
|
+
trailer_lote << ''.rjust(17, '0')
|
181
|
+
# qtde de Títulos em Cobrança Caucionada 6
|
182
|
+
trailer_lote << ''.rjust(6, '0')
|
183
|
+
# Valor Total dos Títulos em Carteiras Caucionada 15 2
|
184
|
+
trailer_lote << ''.rjust(17, '0')
|
185
|
+
# qtde de Títulos em Cobrança Descontada 6
|
186
|
+
trailer_lote << ''.rjust(6, '0')
|
187
|
+
# Valor Total dos Títulos em Carteiras Descontada 15 2
|
188
|
+
trailer_lote << ''.rjust(17, '0')
|
189
|
+
# Número do Aviso de Lançamento 8
|
190
|
+
trailer_lote << ''.rjust(8, ' ')
|
191
|
+
|
192
|
+
# uso exclusivo 117
|
193
|
+
trailer_lote << complemento_trailer
|
194
|
+
trailer_lote
|
195
|
+
end
|
196
|
+
|
197
|
+
# Monta o registro trailer do arquivo
|
198
|
+
#
|
199
|
+
# @param nro_lotes [Integer]
|
200
|
+
# numero de lotes no arquivo
|
201
|
+
# @param sequencial [Integer]
|
202
|
+
# numero de registros(linhas) no arquivo
|
203
|
+
#
|
204
|
+
# @return [String]
|
205
|
+
#
|
206
|
+
def monta_trailer_arquivo(nro_lotes, sequencial)
|
207
|
+
# CAMPO TAMANHO
|
208
|
+
# codigo banco 3
|
209
|
+
# lote de servico 4
|
210
|
+
# tipo de registro 1
|
211
|
+
# uso FEBRABAN 9
|
212
|
+
# nro de lotes 6
|
213
|
+
# nro de registros(linhas) 6
|
214
|
+
# qtde de Contas p/ Conc. (Lotes) 6
|
215
|
+
# Uso FEBRABAN/CNAB 205
|
216
|
+
"#{cod_banco}99999#{''.rjust(9, ' ')}#{nro_lotes.to_s.rjust(6, '0')}#{sequencial.to_s.rjust(6, '0')}#{''.rjust(6, '0')}#{''.rjust(205, ' ')}"
|
217
|
+
end
|
218
|
+
|
149
219
|
# Retorna o nosso numero
|
150
220
|
#
|
151
221
|
# @return [String]
|
@@ -112,14 +112,6 @@ module Brcobranca
|
|
112
112
|
def complemento
|
113
113
|
fail Brcobranca::NaoImplementado.new('Sobreescreva este método na classe referente ao banco que você esta criando')
|
114
114
|
end
|
115
|
-
|
116
|
-
# Soma de todos os boletos
|
117
|
-
#
|
118
|
-
# @return [String]
|
119
|
-
def valor_total_titulos(tamanho=13)
|
120
|
-
value = pagamentos.inject(0.0) { |sum, pagamento| sum += pagamento.valor }
|
121
|
-
sprintf('%.2f', value).delete('.').rjust(tamanho, '0')
|
122
|
-
end
|
123
115
|
end
|
124
116
|
end
|
125
117
|
end
|
data/lib/brcobranca/version.rb
CHANGED
@@ -206,6 +206,13 @@ RSpec.describe Brcobranca::Remessa::Cnab240::BancoBrasil do
|
|
206
206
|
context 'geracao remessa' do
|
207
207
|
it_behaves_like 'cnab240'
|
208
208
|
|
209
|
+
context 'trailer lote' do
|
210
|
+
it 'trailer lote deve ter o complemento_trailer na posicao correta' do
|
211
|
+
trailer = banco_brasil.monta_trailer_lote 1, 4
|
212
|
+
expect(trailer[23..239]).to eq banco_brasil.complemento_trailer # complemento do registro trailer
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
209
216
|
context 'arquivo' do
|
210
217
|
before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
|
211
218
|
after { Timecop.return }
|
@@ -142,6 +142,13 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Caixa do
|
|
142
142
|
|
143
143
|
context 'geracao remessa' do
|
144
144
|
it_behaves_like 'cnab240'
|
145
|
+
|
146
|
+
context 'trailer lote' do
|
147
|
+
it 'trailer lote deve ter o complemento_trailer na posicao correta' do
|
148
|
+
trailer = caixa.monta_trailer_lote 1, 4
|
149
|
+
expect(trailer[23..239]).to eq caixa.complemento_trailer # complemento do registro trailer
|
150
|
+
end
|
151
|
+
end
|
145
152
|
|
146
153
|
context 'arquivo' do
|
147
154
|
before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
|
@@ -65,7 +65,7 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
context 'formatacoes' do
|
68
|
-
it 'codigo do banco deve ser
|
68
|
+
it 'codigo do banco deve ser 756' do
|
69
69
|
expect(sicoob.cod_banco).to eq '756'
|
70
70
|
end
|
71
71
|
|
@@ -125,7 +125,7 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
|
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'complemento trailer deve retornar espacos em branco' do
|
128
|
-
expect(sicoob.complemento_trailer).to eq ''.rjust(
|
128
|
+
expect(sicoob.complemento_trailer).to eq ''.rjust(117, ' ')
|
129
129
|
end
|
130
130
|
|
131
131
|
it 'formata o nosso numero' do
|
@@ -137,6 +137,36 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
|
|
137
137
|
context 'geracao remessa' do
|
138
138
|
it_behaves_like 'cnab240'
|
139
139
|
|
140
|
+
context 'trailer lote' do
|
141
|
+
it 'trailer lote deve ter as informacoes nas posicoes corretas' do
|
142
|
+
trailer = sicoob.monta_trailer_lote 1, 4
|
143
|
+
expect(trailer[0..2]).to eq sicoob.cod_banco # cod. do banco
|
144
|
+
expect(trailer[3..6]).to eq "0001" # numero do lote
|
145
|
+
expect(trailer[17..22]).to eq "000004" # qtde de registros no lote
|
146
|
+
# qtde de titulos em cobranca simples 6
|
147
|
+
# Valor Total dos titulos em carteiras simples 15 2
|
148
|
+
expect(trailer[23..28]).to eq "000001"
|
149
|
+
expect(trailer[29..45]).to eq "00000000000005000"
|
150
|
+
|
151
|
+
# qtde de titulos em cobranca vinculada 6
|
152
|
+
# Valor Total dos titulos em carteiras vinculada 15 2
|
153
|
+
expect(trailer[46..51]).to eq "000000"
|
154
|
+
expect(trailer[52..68]).to eq "00000000000000000"
|
155
|
+
# qtde de titulos em cobranca caucionada 6
|
156
|
+
# Valor Total dos titulos em carteiras caucionada 15 2
|
157
|
+
expect(trailer[69..74]).to eq "000000"
|
158
|
+
expect(trailer[75..91]).to eq "00000000000000000"
|
159
|
+
# qtde de titulos em cobranca descontada 6
|
160
|
+
# Valor Total dos titulos em carteiras descontada 15 2
|
161
|
+
expect(trailer[92..97]).to eq "000000"
|
162
|
+
expect(trailer[98..114]).to eq "00000000000000000"
|
163
|
+
# numero do aviso de lancamento 8
|
164
|
+
expect(trailer[115..122]).to eq ''.rjust(8, ' ')
|
165
|
+
# CNAB Uso Exclusivo FEBRABAN/CNAB 117
|
166
|
+
expect(trailer[123..239]).to eq sicoob.complemento_trailer
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
140
170
|
context 'arquivo' do
|
141
171
|
before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
|
142
172
|
after { Timecop.return }
|
@@ -2,5 +2,5 @@
|
|
2
2
|
75600011R01 040 2074576177000177 0432730000000036668 SOCIEDADE BRASILEIRA DE ZOOLOG 000000001407201500000000
|
3
3
|
7560001300001P 010432730000000036668 000000001201014 10 220000000000000001407201500000000000500000000001N14072015000000000000000000000000000000000000000000000000000000000000000000000000000000 1000000090000000000
|
4
4
|
7560001300002Q 011000082136760505PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS QU12345678SANTA RITA DE CRJ0000000000000000 000
|
5
|
-
75600015
|
6
|
-
75699999
|
5
|
+
75600015 00000400000100000000000005000000000000000000000000000000000000000000000000000000000000000000000000
|
6
|
+
75699999 000001000006000000
|
@@ -140,7 +140,6 @@ shared_examples_for 'cnab240' do
|
|
140
140
|
expect(trailer[0..2]).to eq objeto.cod_banco # cod. do banco
|
141
141
|
expect(trailer[3..6]).to eq '0001' # numero do lote
|
142
142
|
expect(trailer[17..22]).to eq '000004' # qtde de registros no lote
|
143
|
-
expect(trailer[23..239]).to eq objeto.complemento_trailer # complemento do registro trailer
|
144
143
|
end
|
145
144
|
end
|
146
145
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brcobranca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.4.
|
4
|
+
version: 6.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kivanio Barbosa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rghost
|
@@ -247,7 +247,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
247
|
requirements:
|
248
248
|
- GhostScript > 9.0, para gear PDF e código de Barras
|
249
249
|
rubyforge_project:
|
250
|
-
rubygems_version: 2.
|
250
|
+
rubygems_version: 2.6.4
|
251
251
|
signing_key:
|
252
252
|
specification_version: 4
|
253
253
|
summary: Gem que permite trabalhar com bloquetos de cobranca para bancos brasileiros.
|