brcobranca 6.9.1 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +7 -7
- data/README.md +14 -12
- data/Rakefile +1 -0
- data/brcobranca.gemspec +1 -0
- data/lib/brcobranca/arquivos/logos/banrisul.eps +121 -0
- data/lib/brcobranca/arquivos/logos/banrisul_carne.eps +121 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +8 -8
- data/lib/brcobranca/boleto/banco_nordeste.rb +1 -0
- data/lib/brcobranca/boleto/banestes.rb +10 -10
- data/lib/brcobranca/boleto/banrisul.rb +84 -0
- data/lib/brcobranca/boleto/base.rb +6 -5
- data/lib/brcobranca/boleto/bradesco.rb +2 -1
- data/lib/brcobranca/boleto/caixa.rb +6 -5
- data/lib/brcobranca/boleto/hsbc.rb +7 -6
- data/lib/brcobranca/boleto/itau.rb +1 -0
- data/lib/brcobranca/boleto/santander.rb +1 -0
- data/lib/brcobranca/boleto/sicoob.rb +12 -11
- data/lib/brcobranca/boleto/sicredi.rb +1 -0
- data/lib/brcobranca/boleto/template/base.rb +5 -4
- data/lib/brcobranca/boleto/template/rghost.rb +7 -6
- data/lib/brcobranca/boleto/template/rghost_carne.rb +9 -9
- data/lib/brcobranca/boleto/unicred.rb +1 -1
- data/lib/brcobranca/calculo.rb +14 -15
- data/lib/brcobranca/calculo_data.rb +2 -0
- data/lib/brcobranca/currency.rb +4 -3
- data/lib/brcobranca/formatacao.rb +2 -1
- data/lib/brcobranca/formatacao_string.rb +1 -0
- data/lib/brcobranca/limpeza.rb +1 -0
- data/lib/brcobranca/remessa/base.rb +2 -1
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +7 -6
- data/lib/brcobranca/remessa/cnab240/base.rb +16 -15
- data/lib/brcobranca/remessa/cnab240/caixa.rb +1 -0
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +9 -9
- data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +2 -3
- data/lib/brcobranca/remessa/cnab400/base.rb +8 -7
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/citibank.rb +3 -2
- data/lib/brcobranca/remessa/cnab400/itau.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/santander.rb +7 -5
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +6 -5
- data/lib/brcobranca/remessa/pagamento.rb +4 -4
- data/lib/brcobranca/retorno/base.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/base.rb +6 -7
- data/lib/brcobranca/retorno/cnab240/caixa.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/santander.rb +3 -3
- data/lib/brcobranca/retorno/cnab240/sicoob.rb +7 -6
- data/lib/brcobranca/retorno/cnab400/base.rb +5 -6
- data/lib/brcobranca/retorno/cnab400/bradesco.rb +1 -0
- data/lib/brcobranca/retorno/cnab400/itau.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cbr643.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +3 -2
- data/lib/brcobranca/retorno/retorno_cnab400.rb +1 -0
- data/lib/brcobranca/util/empresa.rb +2 -3
- data/lib/brcobranca/version.rb +2 -1
- data/lib/brcobranca.rb +3 -1
- data/spec/brcobranca/base_spec.rb +51 -50
- data/spec/brcobranca/boleto/banco_brasil_spec.rb +46 -45
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +13 -12
- data/spec/brcobranca/boleto/banestes_spec.rb +108 -105
- data/spec/brcobranca/boleto/banrisul_spec.rb +165 -0
- data/spec/brcobranca/boleto/bradesco_spec.rb +56 -52
- data/spec/brcobranca/boleto/caixa_spec.rb +9 -7
- data/spec/brcobranca/boleto/hsbc_spec.rb +17 -15
- data/spec/brcobranca/boleto/itau_spec.rb +22 -20
- data/spec/brcobranca/boleto/santander_spec.rb +16 -14
- data/spec/brcobranca/boleto/sicoob_spec.rb +94 -94
- data/spec/brcobranca/boleto/sicredi_spec.rb +32 -28
- data/spec/brcobranca/boleto/unicred_spec.rb +16 -14
- data/spec/brcobranca/boletos_em_lote_spec.rb +4 -3
- data/spec/brcobranca/calculo_data_spec.rb +2 -1
- data/spec/brcobranca/calculo_spec.rb +97 -97
- data/spec/brcobranca/currency_spec.rb +6 -5
- data/spec/brcobranca/formatacao_spec.rb +1 -0
- data/spec/brcobranca/formatacao_string_spec.rb +1 -2
- data/spec/brcobranca/limpeza_spec.rb +1 -0
- data/spec/brcobranca/remessa/base_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +13 -11
- data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +2 -1
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +20 -18
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +11 -9
- data/spec/brcobranca/remessa/pagamento_spec.rb +12 -10
- data/spec/brcobranca/retorno/cnab240/base_spec.rb +10 -9
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +23 -22
- data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +21 -20
- data/spec/brcobranca/retorno/cnab400/base_spec.rb +13 -12
- data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +3 -1
- data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -1
- data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +1 -0
- data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +1 -0
- data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +1 -0
- data/spec/brcobranca/rghost_spec.rb +1 -0
- data/spec/brcobranca/util/empresa_spec.rb +13 -12
- data/spec/brcobranca_spec.rb +6 -5
- data/spec/spec_helper.rb +3 -3
- data/spec/support/remessa_helpers.rb +3 -1
- data/spec/support/shared_examples/busca_logotipo.rb +2 -0
- data/spec/support/shared_examples/cnab240.rb +22 -20
- data/spec/support/shared_examples/cnab400.rb +12 -12
- data/spec/support/shared_examples/formatos_validos.rb +6 -4
- metadata +7 -2
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab240
|
@@ -41,8 +42,8 @@ module Brcobranca
|
|
41
42
|
|
42
43
|
def initialize(campos = {})
|
43
44
|
campos = { codigo_carteira: '1',
|
44
|
-
|
45
|
-
|
45
|
+
forma_cadastramento: '1',
|
46
|
+
tipo_documento: ' ' }.merge!(campos)
|
46
47
|
super(campos)
|
47
48
|
end
|
48
49
|
|
@@ -270,19 +271,19 @@ module Brcobranca
|
|
270
271
|
#
|
271
272
|
def monta_lote(nro_lote)
|
272
273
|
# contador dos registros do lote
|
273
|
-
contador = 1 #header
|
274
|
+
contador = 1 # header
|
274
275
|
|
275
276
|
lote = [monta_header_lote(nro_lote)]
|
276
277
|
|
277
278
|
pagamentos.each do |pagamento|
|
278
|
-
|
279
|
+
raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
279
280
|
|
280
281
|
lote << monta_segmento_p(pagamento, nro_lote, contador)
|
281
282
|
contador += 1
|
282
283
|
lote << monta_segmento_q(pagamento, nro_lote, contador)
|
283
284
|
contador += 1
|
284
285
|
end
|
285
|
-
contador += 1 #trailer
|
286
|
+
contador += 1 # trailer
|
286
287
|
|
287
288
|
lote << monta_trailer_lote(nro_lote, contador)
|
288
289
|
|
@@ -294,7 +295,7 @@ module Brcobranca
|
|
294
295
|
# @return [String]
|
295
296
|
#
|
296
297
|
def gera_arquivo
|
297
|
-
|
298
|
+
raise Brcobranca::RemessaInvalida, self if invalid?
|
298
299
|
|
299
300
|
arquivo = [monta_header_arquivo]
|
300
301
|
|
@@ -306,7 +307,7 @@ module Brcobranca
|
|
306
307
|
|
307
308
|
remittance = arquivo.join("\n").to_ascii.upcase
|
308
309
|
remittance << "\n"
|
309
|
-
remittance.encode(remittance.encoding, :
|
310
|
+
remittance.encode(remittance.encoding, universal_newline: true).encode(remittance.encoding, crlf_newline: true)
|
310
311
|
end
|
311
312
|
|
312
313
|
# Complemento do registro
|
@@ -314,7 +315,7 @@ module Brcobranca
|
|
314
315
|
# Este metodo deve ser sobrescrevido na classe do banco
|
315
316
|
#
|
316
317
|
def complemento_header
|
317
|
-
|
318
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
318
319
|
end
|
319
320
|
|
320
321
|
# Numero da versao do layout do arquivo
|
@@ -322,7 +323,7 @@ module Brcobranca
|
|
322
323
|
# Este metodo deve ser sobrescrevido na classe do banco
|
323
324
|
#
|
324
325
|
def versao_layout_arquivo
|
325
|
-
|
326
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
326
327
|
end
|
327
328
|
|
328
329
|
# Numero da versao do layout do lote
|
@@ -330,7 +331,7 @@ module Brcobranca
|
|
330
331
|
# Este metodo deve ser sobrescrevido na classe do banco
|
331
332
|
#
|
332
333
|
def versao_layout_lote
|
333
|
-
|
334
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
334
335
|
end
|
335
336
|
|
336
337
|
# Informacoes do convenio para o lote
|
@@ -338,7 +339,7 @@ module Brcobranca
|
|
338
339
|
# Este metodo deve ser sobrescrevido na classe do banco
|
339
340
|
#
|
340
341
|
def convenio_lote
|
341
|
-
|
342
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
342
343
|
end
|
343
344
|
|
344
345
|
# Nome do banco
|
@@ -346,7 +347,7 @@ module Brcobranca
|
|
346
347
|
# Este metodo deve ser sobrescrevido na classe do banco
|
347
348
|
#
|
348
349
|
def nome_banco
|
349
|
-
|
350
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
350
351
|
end
|
351
352
|
|
352
353
|
# Codigo do banco
|
@@ -354,7 +355,7 @@ module Brcobranca
|
|
354
355
|
# Este metodo deve ser sobrescrevido na classe do banco
|
355
356
|
#
|
356
357
|
def cod_banco
|
357
|
-
|
358
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
358
359
|
end
|
359
360
|
|
360
361
|
# Informacoes da conta do cedente
|
@@ -362,7 +363,7 @@ module Brcobranca
|
|
362
363
|
# Este metodo deve ser sobrescrevido na classe do banco
|
363
364
|
#
|
364
365
|
def info_conta
|
365
|
-
|
366
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
366
367
|
end
|
367
368
|
|
368
369
|
# Codigo do convenio
|
@@ -370,7 +371,7 @@ module Brcobranca
|
|
370
371
|
# Este metodo deve ser sobrescrevido na classe do banco
|
371
372
|
#
|
372
373
|
def codigo_convenio
|
373
|
-
|
374
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
374
375
|
end
|
375
376
|
end
|
376
377
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab240
|
5
6
|
class Sicoob < Brcobranca::Remessa::Cnab240::Base
|
6
|
-
|
7
7
|
attr_accessor :modalidade_carteira
|
8
8
|
# identificacao da emissao do boleto (attr na classe base)
|
9
9
|
# opcoes:
|
@@ -31,10 +31,10 @@ module Brcobranca
|
|
31
31
|
|
32
32
|
def initialize(campos = {})
|
33
33
|
campos = { emissao_boleto: '2',
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
distribuicao_boleto: '2',
|
35
|
+
tipo_formulario: '4',
|
36
|
+
modalidade_carteira: '01',
|
37
|
+
forma_cadastramento: '0' }.merge!(campos)
|
38
38
|
super(campos)
|
39
39
|
end
|
40
40
|
|
@@ -72,7 +72,7 @@ module Brcobranca
|
|
72
72
|
''.rjust(20, ' ')
|
73
73
|
end
|
74
74
|
|
75
|
-
|
75
|
+
alias convenio_lote codigo_convenio
|
76
76
|
|
77
77
|
def info_conta
|
78
78
|
# CAMPO TAMANHO
|
@@ -169,9 +169,9 @@ module Brcobranca
|
|
169
169
|
trailer_lote << ''.rjust(9, ' ')
|
170
170
|
# qtde de registros lote 6
|
171
171
|
trailer_lote << nro_registros.to_s.rjust(6, '0')
|
172
|
-
|
172
|
+
|
173
173
|
# qtde de Títulos em Cobrança Simples 6
|
174
|
-
trailer_lote << pagamentos.count.to_s.rjust(6, '0')
|
174
|
+
trailer_lote << pagamentos.count.to_s.rjust(6, '0')
|
175
175
|
# Valor Total dos Títulos em Carteiras Simples 15 2
|
176
176
|
trailer_lote << valor_total_titulos(17)
|
177
177
|
# qtde de Títulos em Cobrança Vinculada 6
|
@@ -188,7 +188,7 @@ module Brcobranca
|
|
188
188
|
trailer_lote << ''.rjust(17, '0')
|
189
189
|
# Número do Aviso de Lançamento 8
|
190
190
|
trailer_lote << ''.rjust(8, ' ')
|
191
|
-
|
191
|
+
|
192
192
|
# uso exclusivo 117
|
193
193
|
trailer_lote << complemento_trailer
|
194
194
|
trailer_lote
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab400
|
5
6
|
class BancoBrasil < Brcobranca::Remessa::Cnab400::Base
|
6
|
-
|
7
7
|
#
|
8
8
|
# Documentacao para a geracao do arquivo pode ser encontrada em:
|
9
9
|
# http://www.bb.com.br/docs/pub/emp/empl/dwn/Doc2627CBR641Pos7.pdf
|
@@ -95,7 +95,7 @@ module Brcobranca
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def monta_detalhe(pagamento, sequencial)
|
98
|
-
|
98
|
+
raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
99
99
|
|
100
100
|
detalhe = '7' # identificacao do registro 9[1] 001 a 001
|
101
101
|
detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02] 002 a 003
|
@@ -149,7 +149,6 @@ module Brcobranca
|
|
149
149
|
detalhe << ' ' # complemento (brancos) X[01] 394 a 394
|
150
150
|
detalhe << sequencial.to_s.rjust(6, '0') # sequencial do registro 9[06] 395 a 400
|
151
151
|
end
|
152
|
-
|
153
152
|
end
|
154
153
|
end
|
155
154
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab400
|
@@ -57,14 +58,14 @@ module Brcobranca
|
|
57
58
|
# Este metodo deve ser sobrescrevido na classe do banco
|
58
59
|
#
|
59
60
|
def monta_detalhe(_pagamento, _sequencial)
|
60
|
-
|
61
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
61
62
|
end
|
62
63
|
|
63
64
|
# Gera o arquivo com os registros
|
64
65
|
#
|
65
66
|
# @return [String]
|
66
67
|
def gera_arquivo
|
67
|
-
|
68
|
+
raise Brcobranca::RemessaInvalida, self unless valid?
|
68
69
|
|
69
70
|
# contador de registros no arquivo
|
70
71
|
contador = 1
|
@@ -78,7 +79,7 @@ module Brcobranca
|
|
78
79
|
remittance = ret.join("\n").to_ascii.upcase
|
79
80
|
remittance << "\n"
|
80
81
|
|
81
|
-
remittance.encode(remittance.encoding, :
|
82
|
+
remittance.encode(remittance.encoding, universal_newline: true).encode(remittance.encoding, crlf_newline: true)
|
82
83
|
end
|
83
84
|
|
84
85
|
# Informacoes referentes a conta do cedente
|
@@ -86,7 +87,7 @@ module Brcobranca
|
|
86
87
|
# Este metodo deve ser sobrescrevido na classe do banco
|
87
88
|
#
|
88
89
|
def info_conta
|
89
|
-
|
90
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
90
91
|
end
|
91
92
|
|
92
93
|
# Numero do banco na camara de compensacao
|
@@ -94,7 +95,7 @@ module Brcobranca
|
|
94
95
|
# Este metodo deve ser sobrescrevido na classe do banco
|
95
96
|
#
|
96
97
|
def cod_banco
|
97
|
-
|
98
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
98
99
|
end
|
99
100
|
|
100
101
|
# Nome por extenso do banco cobrador
|
@@ -102,7 +103,7 @@ module Brcobranca
|
|
102
103
|
# Este metodo deve ser sobrescrevido na classe do banco
|
103
104
|
#
|
104
105
|
def nome_banco
|
105
|
-
|
106
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
106
107
|
end
|
107
108
|
|
108
109
|
# Complemento do registro header
|
@@ -110,7 +111,7 @@ module Brcobranca
|
|
110
111
|
# Este metodo deve ser sobrescrevido na classe do banco
|
111
112
|
#
|
112
113
|
def complemento
|
113
|
-
|
114
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
114
115
|
end
|
115
116
|
end
|
116
117
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab400
|
@@ -75,7 +76,7 @@ module Brcobranca
|
|
75
76
|
end
|
76
77
|
|
77
78
|
def monta_detalhe(pagamento, sequencial)
|
78
|
-
|
79
|
+
raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
79
80
|
|
80
81
|
detalhe = '1' # identificacao do registro 9[01] 001 a 001
|
81
82
|
detalhe << ''.rjust(5, '0') # agencia de debito (op) 9[05] 002 a 006
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab400
|
@@ -58,7 +59,7 @@ module Brcobranca
|
|
58
59
|
# @return [String]
|
59
60
|
#
|
60
61
|
def monta_detalhe(pagamento, sequencial)
|
61
|
-
|
62
|
+
raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
62
63
|
|
63
64
|
detalhe = '1' # identificacao transacao 9[01]
|
64
65
|
detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
|
@@ -101,7 +102,7 @@ module Brcobranca
|
|
101
102
|
# IMPORTANTE: essa instrução somente poderá ser utilizada após assinatura de contrato específico para o produto.
|
102
103
|
# 09 = DEVOLVER: esta é a instrução de BAIXA quando esta instrução for dada também deverá ser preenchida a posição 159/160
|
103
104
|
# 10 = SUSTAR PROTESTO: instrução utilizada para títulos que NÃO estejam em cartório
|
104
|
-
detalhe << '00'
|
105
|
+
detalhe << '00' # Instrução para o título 9[02]
|
105
106
|
|
106
107
|
# Quando posição 157/158 (Instrução para título) conter instrução 06 ou 09,
|
107
108
|
# este campo deverá conter a quantidade de dias válidos para execução da instrução.
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab400
|
@@ -83,7 +84,7 @@ module Brcobranca
|
|
83
84
|
# @return [String]
|
84
85
|
#
|
85
86
|
def monta_detalhe(pagamento, sequencial)
|
86
|
-
|
87
|
+
raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
87
88
|
|
88
89
|
detalhe = '1' # identificacao transacao 9[01]
|
89
90
|
detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab400
|
@@ -15,7 +16,7 @@ module Brcobranca
|
|
15
16
|
validates_length_of :codigo_transmissao, maximum: 20, message: 'deve ter no máximo 20 dígitos.'
|
16
17
|
|
17
18
|
def initialize(campos = {})
|
18
|
-
campos = { aceite: 'N', carteira: '101', codigo_carteira: '5'}.merge!(campos)
|
19
|
+
campos = { aceite: 'N', carteira: '101', codigo_carteira: '5' }.merge!(campos)
|
19
20
|
super(campos)
|
20
21
|
end
|
21
22
|
|
@@ -86,7 +87,7 @@ module Brcobranca
|
|
86
87
|
# @return [String]
|
87
88
|
#
|
88
89
|
def monta_detalhe(pagamento, sequencial)
|
89
|
-
|
90
|
+
raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
90
91
|
|
91
92
|
detalhe = '1' # identificacao transacao 9[01]
|
92
93
|
detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
|
@@ -110,7 +111,7 @@ module Brcobranca
|
|
110
111
|
# 5 = RÁPIDA COM REGISTRO
|
111
112
|
# (BLOQUETE EMITIDO PELO CLIENTE) 6 = CAUCIONADA RAPIDA
|
112
113
|
# 7 = DESCONTADA ELETRÔNICA
|
113
|
-
detalhe << codigo_carteira
|
114
|
+
detalhe << codigo_carteira # codigo da carteira 9[01]
|
114
115
|
|
115
116
|
# Código da ocorrência:
|
116
117
|
# 01 = ENTRADA DE TÍTULO
|
@@ -130,7 +131,7 @@ module Brcobranca
|
|
130
131
|
# Código da agência cobradora do Banco Santander,
|
131
132
|
# opcional informar somente se carteira for igual a 5,
|
132
133
|
# caso contrário, informar zeros.
|
133
|
-
detalhe << agencia.rjust(5, '0')
|
134
|
+
detalhe << agencia.rjust(5, '0') # agencia cobradora.............. 9[05]
|
134
135
|
|
135
136
|
# Espécie de documento:
|
136
137
|
# 01 = DUPLICATA
|
@@ -161,7 +162,7 @@ module Brcobranca
|
|
161
162
|
detalhe << pagamento.identificacao_sacado.rjust(2, '0') # identificacao do pagador 9[02]
|
162
163
|
detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # documento do pagador 9[14]
|
163
164
|
detalhe << pagamento.nome_sacado.format_size(40).ljust(40, ' ') # nome do pagador X[40]
|
164
|
-
detalhe << pagamento.endereco_sacado.format_size(40).ljust(40, ' ')# endereco do pagador X[40]
|
165
|
+
detalhe << pagamento.endereco_sacado.format_size(40).ljust(40, ' ') # endereco do pagador X[40]
|
165
166
|
detalhe << pagamento.bairro_sacado.format_size(12).ljust(12, ' ') # bairro do pagador X[12]
|
166
167
|
detalhe << pagamento.cep_sacado # cep do pagador 9[08]
|
167
168
|
detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15]
|
@@ -198,6 +199,7 @@ module Brcobranca
|
|
198
199
|
end
|
199
200
|
|
200
201
|
private
|
202
|
+
|
201
203
|
# Complemento de remessa
|
202
204
|
#
|
203
205
|
# @return [String]
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab400
|
@@ -127,7 +128,7 @@ module Brcobranca
|
|
127
128
|
# @return [String]
|
128
129
|
#
|
129
130
|
def monta_detalhe(pagamento, sequencial)
|
130
|
-
|
131
|
+
raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
131
132
|
|
132
133
|
detalhe = '1' # identificacao transacao 9[01]
|
133
134
|
detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
|
@@ -162,13 +163,13 @@ module Brcobranca
|
|
162
163
|
# "Tipo de Emissão:
|
163
164
|
# 1 - Cooperativa
|
164
165
|
# 2 - Cliente"
|
165
|
-
detalhe << modalidade_carteira
|
166
|
+
detalhe << modalidade_carteira # Tipo de Emissão 9[01]
|
166
167
|
|
167
168
|
# "Carteira/Modalidade:
|
168
169
|
# 01 = Simples Com Registro
|
169
170
|
# 02 = Simples Sem Registro
|
170
171
|
# 03 = Garantida Caucionada "
|
171
|
-
detalhe << carteira
|
172
|
+
detalhe << carteira # codigo da carteira 9[02]
|
172
173
|
|
173
174
|
# "Comando/Movimento:
|
174
175
|
# 01 = Registro de Títulos
|
@@ -248,7 +249,7 @@ module Brcobranca
|
|
248
249
|
detalhe << pagamento.identificacao_sacado.rjust(2, '0') # identificacao do pagador 9[02]
|
249
250
|
detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # documento do pagador 9[14]
|
250
251
|
detalhe << pagamento.nome_sacado.format_size(40).ljust(40, ' ') # nome do pagador X[40]
|
251
|
-
detalhe << pagamento.endereco_sacado.format_size(37).ljust(37, ' ')# endereco do pagador X[37]
|
252
|
+
detalhe << pagamento.endereco_sacado.format_size(37).ljust(37, ' ') # endereco do pagador X[37]
|
252
253
|
detalhe << pagamento.bairro_sacado.format_size(15).ljust(15, ' ') # bairro do pagador X[15]
|
253
254
|
detalhe << pagamento.cep_sacado # cep do pagador 9[08]
|
254
255
|
detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15]
|
@@ -260,7 +261,7 @@ module Brcobranca
|
|
260
261
|
# no Recibo do Sacado e na Ficha de Compensação do boleto de cobrança.
|
261
262
|
# Quando o SEQ 14 – Indicativo de Mensagem ou Sacador/Avalista - for preenchido com “A” ,
|
262
263
|
# este campo deverá ser preenchido com o nome/razão social do Sacador/Avalista"
|
263
|
-
detalhe << ''.rjust(40, ' ')
|
264
|
+
detalhe << ''.rjust(40, ' ') # X[40]
|
264
265
|
|
265
266
|
# "Número de Dias Para Protesto:
|
266
267
|
# Quantidade dias para envio protesto. Se = ""0"",
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
class Pagamento
|
@@ -73,8 +74,8 @@ module Brcobranca
|
|
73
74
|
attr_accessor :dias_protesto
|
74
75
|
|
75
76
|
validates_presence_of :nosso_numero, :data_vencimento, :valor,
|
76
|
-
|
77
|
-
|
77
|
+
:documento_sacado, :nome_sacado, :endereco_sacado,
|
78
|
+
:cep_sacado, :cidade_sacado, :uf_sacado, message: 'não pode estar em branco.'
|
78
79
|
validates_length_of :uf_sacado, is: 2, message: 'deve ter 2 dígitos.'
|
79
80
|
validates_length_of :cep_sacado, is: 8, message: 'deve ter 8 dígitos.'
|
80
81
|
validates_length_of :cod_desconto, is: 1, message: 'deve ter 1 dígito.'
|
@@ -181,7 +182,6 @@ module Brcobranca
|
|
181
182
|
format_value(percentual_multa, tamanho)
|
182
183
|
end
|
183
184
|
|
184
|
-
|
185
185
|
# Formata o campo valor do desconto
|
186
186
|
#
|
187
187
|
# @param tamanho [Integer]
|
@@ -238,7 +238,7 @@ module Brcobranca
|
|
238
238
|
private
|
239
239
|
|
240
240
|
def format_value(value, tamanho)
|
241
|
-
raise ValorInvalido
|
241
|
+
raise ValorInvalido, 'Deve ser um Float' unless value.to_s =~ /\./
|
242
242
|
|
243
243
|
sprintf('%.2f', value).delete('.').rjust(tamanho, '0')
|
244
244
|
end
|
@@ -1,23 +1,23 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
require 'parseline'
|
3
4
|
|
4
5
|
module Brcobranca
|
5
6
|
module Retorno
|
6
7
|
module Cnab240
|
7
8
|
class Base < Brcobranca::Retorno::Base
|
8
|
-
|
9
9
|
# Load lines
|
10
|
-
def self.load_lines(file, options={})
|
10
|
+
def self.load_lines(file, options = {})
|
11
11
|
return nil if file.blank?
|
12
12
|
|
13
13
|
codigo_banco = codigo_banco_do_arquivo(file)
|
14
14
|
|
15
15
|
case codigo_banco
|
16
|
-
when
|
16
|
+
when '756'
|
17
17
|
Brcobranca::Retorno::Cnab240::Sicoob.load_lines(file, options)
|
18
|
-
when
|
18
|
+
when '104'
|
19
19
|
Brcobranca::Retorno::Cnab240::Caixa.load_lines(file, options)
|
20
|
-
when
|
20
|
+
when '033'
|
21
21
|
Brcobranca::Retorno::Cnab240::Santander.load_lines(file, options)
|
22
22
|
else
|
23
23
|
Brcobranca::Retorno::RetornoCnab240.load_lines(file, options)
|
@@ -27,13 +27,12 @@ module Brcobranca
|
|
27
27
|
# Codigo do banco lido do arquivo.
|
28
28
|
# Registro Header [0..2]
|
29
29
|
def self.codigo_banco_do_arquivo(file)
|
30
|
-
arquivo = File.open(file,
|
30
|
+
arquivo = File.open(file, 'r')
|
31
31
|
header = arquivo.gets
|
32
32
|
codigo_banco = header.blank? ? nil : header[0..2]
|
33
33
|
arquivo.close
|
34
34
|
codigo_banco
|
35
35
|
end
|
36
|
-
|
37
36
|
end
|
38
37
|
end
|
39
38
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
|
3
4
|
module Brcobranca
|
4
5
|
module Retorno
|
@@ -37,12 +38,11 @@ module Brcobranca
|
|
37
38
|
class Line < Base
|
38
39
|
extend ParseLine::FixedWidth # Extendendo parseline
|
39
40
|
|
40
|
-
REGISTRO_T_FIELDS = %w(agencia_com_dv cedente_com_dv nosso_numero nosso_numero_com_dv carteira data_vencimento valor_titulo banco_recebedor agencia_recebedora_com_dv sequencial valor_tarifa)
|
41
|
-
REGISTRO_U_FIELDS = %w(desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido outras_despesas outros_recebimento data_credito data_ocorrencia)
|
41
|
+
REGISTRO_T_FIELDS = %w(agencia_com_dv cedente_com_dv nosso_numero nosso_numero_com_dv carteira data_vencimento valor_titulo banco_recebedor agencia_recebedora_com_dv sequencial valor_tarifa).freeze
|
42
|
+
REGISTRO_U_FIELDS = %w(desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido outras_despesas outros_recebimento data_credito data_ocorrencia).freeze
|
42
43
|
|
43
44
|
attr_accessor :tipo_registro
|
44
45
|
|
45
|
-
|
46
46
|
fixed_width_layout do |parse|
|
47
47
|
parse.field :tipo_registro, 13..13
|
48
48
|
parse.field :sequencial, 8..12
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
|
3
|
-
require
|
4
|
+
require 'parseline'
|
4
5
|
|
5
6
|
module Brcobranca
|
6
7
|
module Retorno
|
@@ -21,13 +22,13 @@ module Brcobranca
|
|
21
22
|
def self.generate_retorno_based_on_cnab_lines(cnab_lines)
|
22
23
|
retorno = new
|
23
24
|
cnab_lines.each do |line|
|
24
|
-
if line.tipo_registro ==
|
25
|
+
if line.tipo_registro == 'T'
|
25
26
|
Line::REGISTRO_T_FIELDS.each do |attr|
|
26
|
-
retorno.send(attr +
|
27
|
+
retorno.send(attr + '=', line.send(attr))
|
27
28
|
end
|
28
29
|
else
|
29
30
|
Line::REGISTRO_U_FIELDS.each do |attr|
|
30
|
-
retorno.send(attr +
|
31
|
+
retorno.send(attr + '=', line.send(attr))
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
@@ -41,8 +42,8 @@ module Brcobranca
|
|
41
42
|
class Line < Base
|
42
43
|
extend ParseLine::FixedWidth # Extendendo parseline
|
43
44
|
|
44
|
-
REGISTRO_T_FIELDS = %w(agencia_com_dv cedente_com_dv nosso_numero carteira data_vencimento valor_titulo banco_recebedor agencia_recebedora_com_dv sequencial valor_tarifa)
|
45
|
-
REGISTRO_U_FIELDS = %w(desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido outras_despesas outros_recebimento data_credito)
|
45
|
+
REGISTRO_T_FIELDS = %w(agencia_com_dv cedente_com_dv nosso_numero carteira data_vencimento valor_titulo banco_recebedor agencia_recebedora_com_dv sequencial valor_tarifa).freeze
|
46
|
+
REGISTRO_U_FIELDS = %w(desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido outras_despesas outros_recebimento data_credito).freeze
|
46
47
|
|
47
48
|
attr_accessor :tipo_registro
|
48
49
|
|
@@ -1,22 +1,22 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
require 'parseline'
|
3
4
|
|
4
5
|
module Brcobranca
|
5
6
|
module Retorno
|
6
7
|
module Cnab400
|
7
8
|
class Base < Brcobranca::Retorno::Base
|
8
|
-
|
9
9
|
# Load lines
|
10
|
-
def self.load_lines(file, options={})
|
10
|
+
def self.load_lines(file, options = {})
|
11
11
|
return nil if file.blank?
|
12
12
|
|
13
13
|
codigo_banco = codigo_banco_do_arquivo(file)
|
14
14
|
|
15
15
|
case codigo_banco
|
16
|
-
when
|
16
|
+
when '237'
|
17
17
|
Brcobranca::Retorno::Cnab400::Bradesco.load_lines(file, options)
|
18
18
|
|
19
|
-
when
|
19
|
+
when '341'
|
20
20
|
Brcobranca::Retorno::Cnab400::Itau.load_lines(file, options)
|
21
21
|
|
22
22
|
else
|
@@ -27,13 +27,12 @@ module Brcobranca
|
|
27
27
|
# Codigo do banco lido do arquivo.
|
28
28
|
# Registro Header [76..78]
|
29
29
|
def self.codigo_banco_do_arquivo(file)
|
30
|
-
arquivo = File.open(file,
|
30
|
+
arquivo = File.open(file, 'r')
|
31
31
|
header = arquivo.gets
|
32
32
|
codigo_banco = header.blank? ? nil : header[76..78]
|
33
33
|
arquivo.close
|
34
34
|
codigo_banco
|
35
35
|
end
|
36
|
-
|
37
36
|
end
|
38
37
|
end
|
39
38
|
end
|