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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab05bbce1ed4d0f20123ef59b7a0f4d21698f1e0
4
- data.tar.gz: e9c7f23ca787779cd40f0ecb05c406a35de01c17
3
+ metadata.gz: 5a43c935455c7b61ec04dc199fabf5909cba8e44
4
+ data.tar.gz: d6da66172c2c81c0891491c7361f1a8384ac259a
5
5
  SHA512:
6
- metadata.gz: 0357ea8aa34d8d820a6153340648337da9c2000fef984d496cfa6a4b88c542786280384a68b7985a025ba36739c48c1897db633976ea3f2a44aa49f123c20bc5
7
- data.tar.gz: 82543fb1061eb73d67dd82376ea67f1a6295ca9c8e34f002c9418e9db151a9f7734fc721ba8ee2ebc6f027cfcae97d967ae6aa9a397f873d5f471157c13212b2
6
+ metadata.gz: 2eeb4fead4948e171e9efff4841e2e846305faeec867a32deb59fa202d6b49dcd7c480acefe6add636371ac646554b8e920f8e995facd24da44a06f62f8dc40e
7
+ data.tar.gz: 165181b485a31718d71ce94e957b4c7bd89daea332255d98d2496d79c1ddc5d3b725decce6df94a85c5dad5a476571f81b41aaf485c499b90e7a89a70d035a13
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- brcobranca (6.4.0)
4
+ brcobranca (6.4.1)
5
5
  activemodel (>= 3)
6
6
  parseline (~> 1.0.3)
7
7
  rghost (~> 0.9)
@@ -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(217, ' ')
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
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module Brcobranca
4
- VERSION = '6.4.0'
4
+ VERSION = '6.4.1'
5
5
  end
@@ -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 001' do
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(217, ' ')
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 000004
6
- 75699999 000001000006
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.0
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-21 00:00:00.000000000 Z
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.5.1
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.