brcobranca 6.1.2 → 6.1.3

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: 47406419af49a1a7cfee1292563a0653f8bc169c
4
- data.tar.gz: 6ae8cef1144ec0ea1fcc577a0d0949200539a20c
3
+ metadata.gz: 4e5cb0e55afd61a76bc5b563eaa9e134b24272bf
4
+ data.tar.gz: da4a9cf41f842b383e5a4417f5383c1b9f8bbee0
5
5
  SHA512:
6
- metadata.gz: 9cf0610bfb9172ac27f35b949112bc3c38a0d853db4ef87f1cefbea9bffe9e4f651c9e62b05dbad6586f86c4388e6e15a48b357f2104b5f99c96eb9cad9e461a
7
- data.tar.gz: f2f11061266123cad2b4c7c9c63ff5ceaa6eb0af7bc51b543826d3cce315330b42e02a88ceaf01665be2ccf415ba73c727a08b0eb944c9ebdd0eee323373893f
6
+ metadata.gz: cf74ea6cfda2ff4f78f53796ff643173be25c4aab9df690e3d6ccdcfdbc3f6555c71f0813ac30f4c5c0a416a22984c940c51c9cd1fe39b761543dd9a75c9f42d
7
+ data.tar.gz: 9e84d77d762183f45962564a25daf89ef0f8edb9be982163f2d5eb9025903fefbef0de36325aa3811300a0917883f224a35b1997f625525e8d3acd8ebf4ff6f2
data/lib/brcobranca.rb CHANGED
@@ -12,6 +12,9 @@ module Brcobranca
12
12
  class NaoImplementado < NotImplementedError
13
13
  end
14
14
 
15
+ class ValorInvalido < StandardError
16
+ end
17
+
15
18
  # Exception lançada quando os dados informados para o boleto estão inválidos.
16
19
  #
17
20
  # Você pode usar assim na sua aplicação:
@@ -1,4 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ require 'unidecoder'
3
+
2
4
  module Brcobranca
3
5
  module Remessa
4
6
  class Base
@@ -236,7 +236,7 @@ module Brcobranca
236
236
  segmento_p << '09' # cod. da moeda 2
237
237
  segmento_p << ''.rjust(10, '0') # uso exclusivo 10
238
238
  segmento_p << ' ' # uso exclusivo 1
239
- segmento_p.upcase
239
+ segmento_p
240
240
  end
241
241
  end
242
242
  end
@@ -67,28 +67,28 @@ module Brcobranca
67
67
  # @return [String]
68
68
  #
69
69
  def monta_header_arquivo
70
- header_arquivo = '' # CAMPO TAMANHO
71
- header_arquivo << cod_banco # codigo do banco 3
72
- header_arquivo << '0000' # lote do servico 4
73
- header_arquivo << '0' # tipo de registro 1
74
- header_arquivo << ''.rjust(9, ' ') # uso exclusivo FEBRABAN 9
70
+ header_arquivo = '' # CAMPO TAMANHO
71
+ header_arquivo << cod_banco # codigo do banco 3
72
+ header_arquivo << '0000' # lote do servico 4
73
+ header_arquivo << '0' # tipo de registro 1
74
+ header_arquivo << ''.rjust(9, ' ') # uso exclusivo FEBRABAN 9
75
75
  header_arquivo << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo inscricao 1
76
- header_arquivo << documento_cedente.to_s.rjust(14, '0') # numero de inscricao 14
77
- header_arquivo << codigo_convenio # codigo do convenio no banco 20
78
- header_arquivo << info_conta # informacoes da conta 20
79
- header_arquivo << empresa_mae.format_size(30) # nome da empresa 30
80
- header_arquivo << nome_banco.format_size(30) # nome do banco 30
81
- header_arquivo << ''.rjust(10, ' ') # uso exclusivo FEBRABAN 10
82
- header_arquivo << '1' # codigo remessa 1
83
- header_arquivo << data_geracao # data geracao 8
84
- header_arquivo << hora_geracao # hora geracao 6
85
- header_arquivo << sequencial_remessa.to_s.rjust(6, '0') # numero seq. arquivo 6
86
- header_arquivo << versao_layout_arquivo # num. versao arquivo 3
87
- header_arquivo << ''.rjust(5, '0') # densidade gravacao 5
88
- header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
89
- header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
90
- header_arquivo << complemento_header # complemento do arquivo 29
91
- header_arquivo.upcase
76
+ header_arquivo << documento_cedente.to_s.rjust(14, '0') # numero de inscricao 14
77
+ header_arquivo << codigo_convenio # codigo do convenio no banco 20
78
+ header_arquivo << info_conta # informacoes da conta 20
79
+ header_arquivo << empresa_mae.format_size(30) # nome da empresa 30
80
+ header_arquivo << nome_banco.format_size(30) # nome do banco 30
81
+ header_arquivo << ''.rjust(10, ' ') # uso exclusivo FEBRABAN 10
82
+ header_arquivo << '1' # codigo remessa 1
83
+ header_arquivo << data_geracao # data geracao 8
84
+ header_arquivo << hora_geracao # hora geracao 6
85
+ header_arquivo << sequencial_remessa.to_s.rjust(6, '0') # numero seq. arquivo 6
86
+ header_arquivo << versao_layout_arquivo # num. versao arquivo 3
87
+ header_arquivo << ''.rjust(5, '0') # densidade gravacao 5
88
+ header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
89
+ header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
90
+ header_arquivo << complemento_header # complemento do arquivo 29
91
+ header_arquivo
92
92
  end
93
93
 
94
94
  # Monta o registro header do lote
@@ -99,27 +99,27 @@ module Brcobranca
99
99
  # @return [String]
100
100
  #
101
101
  def monta_header_lote(nro_lote)
102
- header_lote = '' # CAMPO TAMANHO
103
- header_lote << cod_banco # codigo banco 3
104
- header_lote << nro_lote.to_s.rjust(4, '0') # lote servico 4
105
- header_lote << '1' # tipo de registro 1
106
- header_lote << 'R' # tipo de operacao 1
107
- header_lote << '01' # tipo de servico 2
108
- header_lote << ' ' # uso exclusivo 2
109
- header_lote << versao_layout_lote # num.versao layout lote 3
110
- header_lote << ' ' # uso exclusivo 1
111
- header_lote << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo de inscricao 1
112
- header_lote << documento_cedente.to_s.rjust(15, '0') # inscricao cedente 15
113
- header_lote << convenio_lote # codigo do convenio 20
114
- header_lote << info_conta # informacoes conta 20
115
- header_lote << empresa_mae.format_size(30) # nome empresa 30
116
- header_lote << mensagem_1.to_s.format_size(40) # 1a mensagem 40
117
- header_lote << mensagem_2.to_s.format_size(40) # 2a mensagem 40
118
- header_lote << sequencial_remessa.to_s.rjust(8, '0') # numero remessa 8
119
- header_lote << data_geracao # data gravacao 8
120
- header_lote << ''.rjust(8, '0') # data do credito 8
121
- header_lote << ''.rjust(33, ' ') # complemento 33
122
- header_lote.upcase
102
+ header_lote = '' # CAMPO TAMANHO
103
+ header_lote << cod_banco # codigo banco 3
104
+ header_lote << nro_lote.to_s.rjust(4, '0') # lote servico 4
105
+ header_lote << '1' # tipo de registro 1
106
+ header_lote << 'R' # tipo de operacao 1
107
+ header_lote << '01' # tipo de servico 2
108
+ header_lote << ' ' # uso exclusivo 2
109
+ header_lote << versao_layout_lote # num.versao layout lote 3
110
+ header_lote << ' ' # uso exclusivo 1
111
+ header_lote << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo de inscricao 1
112
+ header_lote << documento_cedente.to_s.rjust(15, '0') # inscricao cedente 15
113
+ header_lote << convenio_lote # codigo do convenio 20
114
+ header_lote << info_conta # informacoes conta 20
115
+ header_lote << empresa_mae.format_size(30) # nome empresa 30
116
+ header_lote << mensagem_1.to_s.format_size(40) # 1a mensagem 40
117
+ header_lote << mensagem_2.to_s.format_size(40) # 2a mensagem 40
118
+ header_lote << sequencial_remessa.to_s.rjust(8, '0') # numero remessa 8
119
+ header_lote << data_geracao # data gravacao 8
120
+ header_lote << ''.rjust(8, '0') # data do credito 8
121
+ header_lote << ''.rjust(33, ' ') # complemento 33
122
+ header_lote
123
123
  end
124
124
 
125
125
  # Monta o registro segmento P do arquivo
@@ -136,46 +136,46 @@ module Brcobranca
136
136
  def monta_segmento_p(pagamento, nro_lote, sequencial)
137
137
  # campos com * na frente nao foram implementados
138
138
  # # DESCRICAO TAMANHO
139
- segmento_p = cod_banco # codigo banco 3
140
- segmento_p << nro_lote.to_s.rjust(4, '0') # lote de servico 4
141
- segmento_p << '3' # tipo de registro 1
142
- segmento_p << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
143
- segmento_p << 'P' # cod. segmento 1
144
- segmento_p << ' ' # uso exclusivo 1
145
- segmento_p << '01' # cod. movimento remessa 2
146
- segmento_p << agencia.to_s.rjust(5, '0') # agencia 5
147
- segmento_p << digito_agencia.to_s # dv agencia 1
148
- segmento_p << complemento_p(pagamento) # informacoes da conta 34
149
- segmento_p << codigo_carteira # codigo da carteira 1
150
- segmento_p << forma_cadastramento # forma de cadastro do titulo 1
151
- segmento_p << tipo_documento # tipo de documento 1
152
- segmento_p << emissao_boleto # identificaco emissao 1
153
- segmento_p << distribuicao_boleto # indentificacao entrega 1
154
- segmento_p << pagamento.numero_documento.to_s.rjust(15, '0') # uso exclusivo 4
155
- segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8
156
- segmento_p << pagamento.formata_valor(15) # valor documento 15
157
- segmento_p << ''.rjust(5, '0') # agencia cobradora 5
158
- segmento_p << '0' # dv agencia cobradora 1
159
- segmento_p << especie_titulo # especie do titulo 2
160
- segmento_p << aceite # aceite 1
161
- segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
162
- segmento_p << '0' # cod. do juros 1 *
163
- segmento_p << ''.rjust(8, '0') # data juros 8 *
164
- segmento_p << ''.rjust(15, '0') # valor juros 15 *
165
- segmento_p << pagamento.cod_desconto # cod. do desconto 1
166
- segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8
167
- segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15
168
- segmento_p << pagamento.formata_valor_iof(15) # valor IOF 15
169
- segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15
170
- segmento_p << ''.rjust(25, ' ') # identificacao titulo empresa 25 *
171
- segmento_p << '0' # cod. para protesto 1 *
172
- segmento_p << '00' # dias para protesto 2 *
173
- segmento_p << '0' # cod. para baixa 1 *
174
- segmento_p << '000' # dias para baixa 2 *
175
- segmento_p << '09' # cod. da moeda 2
176
- segmento_p << ''.rjust(10, '0') # uso exclusivo 10
177
- segmento_p << ' ' # uso exclusivo 1
178
- segmento_p.upcase
139
+ segmento_p = cod_banco # codigo banco 3
140
+ segmento_p << nro_lote.to_s.rjust(4, '0') # lote de servico 4
141
+ segmento_p << '3' # tipo de registro 1
142
+ segmento_p << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
143
+ segmento_p << 'P' # cod. segmento 1
144
+ segmento_p << ' ' # uso exclusivo 1
145
+ segmento_p << '01' # cod. movimento remessa 2
146
+ segmento_p << agencia.to_s.rjust(5, '0') # agencia 5
147
+ segmento_p << digito_agencia.to_s # dv agencia 1
148
+ segmento_p << complemento_p(pagamento) # informacoes da conta 34
149
+ segmento_p << codigo_carteira # codigo da carteira 1
150
+ segmento_p << forma_cadastramento # forma de cadastro do titulo 1
151
+ segmento_p << tipo_documento # tipo de documento 1
152
+ segmento_p << emissao_boleto # identificaco emissao 1
153
+ segmento_p << distribuicao_boleto # indentificacao entrega 1
154
+ segmento_p << pagamento.numero_documento.to_s.rjust(15, '0') # uso exclusivo 4
155
+ segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8
156
+ segmento_p << pagamento.formata_valor(15) # valor documento 15
157
+ segmento_p << ''.rjust(5, '0') # agencia cobradora 5
158
+ segmento_p << '0' # dv agencia cobradora 1
159
+ segmento_p << especie_titulo # especie do titulo 2
160
+ segmento_p << aceite # aceite 1
161
+ segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
162
+ segmento_p << '0' # cod. do juros 1 *
163
+ segmento_p << ''.rjust(8, '0') # data juros 8 *
164
+ segmento_p << ''.rjust(15, '0') # valor juros 15 *
165
+ segmento_p << pagamento.cod_desconto # cod. do desconto 1
166
+ segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8
167
+ segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15
168
+ segmento_p << pagamento.formata_valor_iof(15) # valor IOF 15
169
+ segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15
170
+ segmento_p << ''.rjust(25, ' ') # identificacao titulo empresa 25 *
171
+ segmento_p << '0' # cod. para protesto 1 *
172
+ segmento_p << '00' # dias para protesto 2 *
173
+ segmento_p << '0' # cod. para baixa 1 *
174
+ segmento_p << '000' # dias para baixa 2 *
175
+ segmento_p << '09' # cod. da moeda 2
176
+ segmento_p << ''.rjust(10, '0') # uso exclusivo 10
177
+ segmento_p << ' ' # uso exclusivo 1
178
+ segmento_p
179
179
  end
180
180
 
181
181
  # Monta o registro segmento Q do arquivo
@@ -190,30 +190,30 @@ module Brcobranca
190
190
  # @return [String]
191
191
  #
192
192
  def monta_segmento_q(pagamento, nro_lote, sequencial)
193
- segmento_q = '' # CAMPO TAMANHO
194
- segmento_q << cod_banco # codigo banco 3
195
- segmento_q << nro_lote.to_s.rjust(4, '0') # lote de servico 4
196
- segmento_q << '3' # tipo de registro 1
197
- segmento_q << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
198
- segmento_q << 'Q' # cod. segmento 1
199
- segmento_q << ' ' # uso exclusivo 1
200
- segmento_q << '01' # cod. movimento remessa 2
201
- segmento_q << pagamento.identificacao_sacado(false) # tipo insc. sacado 1
202
- segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0') # documento sacado 14
203
- segmento_q << pagamento.nome_sacado.format_size(40) # nome cliente 40
204
- segmento_q << pagamento.endereco_sacado.format_size(40) # endereco cliente 40
205
- segmento_q << pagamento.bairro_sacado.format_size(15) # bairro 15
206
- segmento_q << pagamento.cep_sacado[0..4] # cep 5
207
- segmento_q << pagamento.cep_sacado[5..7] # sufixo cep 3
208
- segmento_q << pagamento.cidade_sacado.format_size(15) # cidade 15
209
- segmento_q << pagamento.uf_sacado # uf 2
210
- segmento_q << pagamento.identificacao_avalista(false) # identificacao do sacador 1
193
+ segmento_q = '' # CAMPO TAMANHO
194
+ segmento_q << cod_banco # codigo banco 3
195
+ segmento_q << nro_lote.to_s.rjust(4, '0') # lote de servico 4
196
+ segmento_q << '3' # tipo de registro 1
197
+ segmento_q << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
198
+ segmento_q << 'Q' # cod. segmento 1
199
+ segmento_q << ' ' # uso exclusivo 1
200
+ segmento_q << '01' # cod. movimento remessa 2
201
+ segmento_q << pagamento.identificacao_sacado(false) # tipo insc. sacado 1
202
+ segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0') # documento sacado 14
203
+ segmento_q << pagamento.nome_sacado.format_size(40) # nome cliente 40
204
+ segmento_q << pagamento.endereco_sacado.format_size(40) # endereco cliente 40
205
+ segmento_q << pagamento.bairro_sacado.format_size(15) # bairro 15
206
+ segmento_q << pagamento.cep_sacado[0..4] # cep 5
207
+ segmento_q << pagamento.cep_sacado[5..7] # sufixo cep 3
208
+ segmento_q << pagamento.cidade_sacado.format_size(15) # cidade 15
209
+ segmento_q << pagamento.uf_sacado # uf 2
210
+ segmento_q << pagamento.identificacao_avalista(false) # identificacao do sacador 1
211
211
  segmento_q << pagamento.documento_avalista.to_s.rjust(15, '0') # documento sacador 15
212
- segmento_q << pagamento.nome_avalista.format_size(40) # nome avalista 40
213
- segmento_q << ''.rjust(3, '0') # cod. banco correspondente 3
214
- segmento_q << ''.rjust(20, ' ') # nosso numero banco correspondente 20
215
- segmento_q << ''.rjust(8, ' ') # uso exclusivo 8
216
- segmento_q.upcase
212
+ segmento_q << pagamento.nome_avalista.format_size(40) # nome avalista 40
213
+ segmento_q << ''.rjust(3, '0') # cod. banco correspondente 3
214
+ segmento_q << ''.rjust(20, ' ') # nosso numero banco correspondente 20
215
+ segmento_q << ''.rjust(8, ' ') # uso exclusivo 8
216
+ segmento_q
217
217
  end
218
218
 
219
219
  # Monta o registro trailer do lote
@@ -227,13 +227,14 @@ module Brcobranca
227
227
  # @return [String]
228
228
  #
229
229
  def monta_trailer_lote(nro_lote, nro_registros)
230
- trailer_lote = '' # CAMPO # TAMANHO
231
- trailer_lote << cod_banco # codigo banco 3
232
- trailer_lote << nro_lote.to_s.rjust(4, '0') # lote de servico 4
233
- trailer_lote << '5' # tipo de servico 1
234
- trailer_lote << ''.rjust(9, ' ') # uso exclusivo 9
230
+ trailer_lote = '' # CAMPO # TAMANHO
231
+ trailer_lote << cod_banco # codigo banco 3
232
+ trailer_lote << nro_lote.to_s.rjust(4, '0') # lote de servico 4
233
+ trailer_lote << '5' # tipo de servico 1
234
+ trailer_lote << ''.rjust(9, ' ') # uso exclusivo 9
235
235
  trailer_lote << nro_registros.to_s.rjust(6, '0') # qtde de registros lote 6
236
- trailer_lote << complemento_trailer # uso exclusivo 217
236
+ trailer_lote << complemento_trailer # uso exclusivo 217
237
+ trailer_lote
237
238
  end
238
239
 
239
240
  # Monta o registro trailer do arquivo
@@ -299,13 +300,13 @@ module Brcobranca
299
300
 
300
301
  # contador de do lotes
301
302
  contador = 1
302
- novo_lote = monta_lote(contador)
303
- arquivo.push novo_lote
303
+ arquivo.push monta_lote(contador)
304
304
 
305
305
  arquivo << monta_trailer_arquivo(contador, ((pagamentos.size * 2) + (contador * 2) + 2))
306
306
 
307
- remessa = arquivo.join("\n")
308
- remessa
307
+ arquivo = arquivo.join("\r\n").to_ascii.upcase
308
+ arquivo << "\r\n"
309
+ arquivo
309
310
  end
310
311
 
311
312
  # Complemento do registro
@@ -3,7 +3,6 @@ module Brcobranca
3
3
  module Remessa
4
4
  module Cnab400
5
5
  class Base < Brcobranca::Remessa::Base
6
- require "unidecoder"
7
6
  validates_presence_of :carteira, message: 'não pode estar em branco.'
8
7
 
9
8
  # Data da geracao do arquivo seguindo o padrao DDMMAA
@@ -72,8 +71,9 @@ module Brcobranca
72
71
  ret << monta_detalhe(pagamento, contador)
73
72
  end
74
73
  ret << monta_trailer(contador + 1)
75
- retorno = ret.join("\n")
76
- retorno.to_ascii.upcase
74
+ ret = ret.join("\r\n").to_ascii.upcase
75
+ ret << "\r\n"
76
+ ret
77
77
  end
78
78
 
79
79
  # Informacoes referentes a conta do cedente
@@ -122,7 +122,7 @@ module Brcobranca
122
122
  detalhe << pagamento.cep_sacado[5..7] # sufixo do cep do pagador 9[03] 332 a 334
123
123
  detalhe << ''.rjust(60, ' ') # sacador/2a mensagem - verificar X[60] 335 a 394
124
124
  detalhe << sequencial.to_s.rjust(6, '0') # numero do registro do arquivo 9[06] 395 a 400
125
- detalhe.upcase
125
+ detalhe
126
126
  end
127
127
  end
128
128
  end
@@ -132,7 +132,7 @@ module Brcobranca
132
132
  detalhe << ''.rjust(2, ' ') # Brancos X[06]
133
133
  detalhe << '9' # moeda 9[01] - Código 9 = REAIS Código 5 = Dólar
134
134
  detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
135
- detalhe.upcase
135
+ detalhe
136
136
  end
137
137
  end
138
138
  end
@@ -134,7 +134,7 @@ module Brcobranca
134
134
  detalhe << '03' # quantidade de dias do prazo 9[02] *
135
135
  detalhe << ''.rjust(1, ' ') # complemento do registro (brancos) X[01]
136
136
  detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
137
- detalhe.upcase
137
+ detalhe
138
138
  end
139
139
  end
140
140
  end
@@ -144,7 +144,7 @@ module Brcobranca
144
144
  detalhe << '00'.rjust(2, ' ') # Número de dias para protesto 9[02]
145
145
  detalhe << ''.rjust(1, ' ') # Brancos X[1]
146
146
  detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
147
- detalhe.upcase
147
+ detalhe
148
148
  end
149
149
  end
150
150
  end
@@ -154,7 +154,7 @@ module Brcobranca
154
154
  # quantidade de caracteres a ser retornado
155
155
  #
156
156
  def formata_valor(tamanho = 13)
157
- sprintf('%.2f', valor).delete('.').rjust(tamanho, '0')
157
+ format_value(valor, tamanho)
158
158
  end
159
159
 
160
160
  # Formata o campo valor da mora
@@ -163,7 +163,7 @@ module Brcobranca
163
163
  # quantidade de caracteres a ser retornado
164
164
  #
165
165
  def formata_valor_mora(tamanho = 13)
166
- sprintf('%.2f', valor_mora).delete('.').rjust(tamanho, '0')
166
+ format_value(valor_mora, tamanho)
167
167
  end
168
168
 
169
169
  # Formata o campo valor do desconto
@@ -172,7 +172,7 @@ module Brcobranca
172
172
  # quantidade de caracteres a ser retornado
173
173
  #
174
174
  def formata_valor_desconto(tamanho = 13)
175
- sprintf('%.2f', valor_desconto).delete('.').rjust(tamanho, '0')
175
+ format_value(valor_desconto, tamanho)
176
176
  end
177
177
 
178
178
  # Formata o campo valor do segundo desconto
@@ -181,7 +181,7 @@ module Brcobranca
181
181
  # quantidade de caracteres a ser retornado
182
182
  #
183
183
  def formata_valor_segundo_desconto(tamanho = 13)
184
- sprintf('%.2f', valor_segundo_desconto).delete('.').rjust(tamanho, '0')
184
+ format_value(valor_segundo_desconto, tamanho)
185
185
  end
186
186
 
187
187
  # Formata o campo valor do IOF
@@ -190,7 +190,7 @@ module Brcobranca
190
190
  # quantidade de caracteres a ser retornado
191
191
  #
192
192
  def formata_valor_iof(tamanho = 13)
193
- sprintf('%.2f', valor_iof).delete('.').rjust(tamanho, '0')
193
+ format_value(valor_iof, tamanho)
194
194
  end
195
195
 
196
196
  # Formata o campo valor do IOF
@@ -199,7 +199,7 @@ module Brcobranca
199
199
  # quantidade de caracteres a ser retornado
200
200
  #
201
201
  def formata_valor_abatimento(tamanho = 13)
202
- sprintf('%.2f', valor_abatimento).delete('.').rjust(tamanho, '0')
202
+ format_value(valor_abatimento, tamanho)
203
203
  end
204
204
 
205
205
  # Retorna a identificacao do pagador
@@ -218,6 +218,14 @@ module Brcobranca
218
218
  return '0' if documento_avalista.nil?
219
219
  Brcobranca::Util::Empresa.new(documento_avalista, zero).tipo
220
220
  end
221
+
222
+ private
223
+
224
+ def format_value(value, tamanho)
225
+ raise ValorInvalido.new('Deve ser um Float') if !(value.to_s =~ /\./)
226
+
227
+ sprintf('%.2f', value).delete('.').rjust(tamanho, '0')
228
+ end
221
229
  end
222
230
  end
223
231
  end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module Brcobranca
4
- VERSION = '6.1.2'
4
+ VERSION = '6.1.3'
5
5
  end
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
  RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
5
5
  let(:pagamento) do
6
6
  Brcobranca::Remessa::Pagamento.new(
7
- valor: 50,
7
+ valor: 50.0,
8
8
  data_vencimento: Date.today,
9
9
  nosso_numero: '429715',
10
10
  documento_sacado: '82136760505',
@@ -180,7 +180,7 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
180
180
  expect(detalhe[126..138]).to eq '0000000019990' # valor do documento
181
181
  expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
182
182
  expect(detalhe[234..273]).to eq 'PABLO DIEGO JOSE FRANCISCO DE PAULA JUAN' # nome do pagador
183
- expect(detalhe[274..313]).to eq bradesco.formata_endereco_sacado(pagamento).upcase # endereco do pagador
183
+ expect(detalhe[274..313]).to eq bradesco.formata_endereco_sacado(pagamento) # endereco do pagador
184
184
  end
185
185
  end
186
186
 
@@ -1,6 +1,6 @@
1
- 00100000 100012345678901001234567001412123 0123430000000123455 SOCIEDADE BRASILEIRA DE ZOOLOGBANCO DO BRASIL S.A. 114072015161515000000083000000000000000000000000000000000000000000000
2
- 00100011R01 042 1000012345678901001234567001412123 0123430000000123455 SOCIEDADE BRASILEIRA DE ZOOLOG 000000001407201500000000
3
- 0010001300001P 010123430000000123455 12345670000000123 71 000000000000000001407201500000000001999000000 02N14072015000000000000000000000000000000000000000000000000000000000000000000000000000000 3000000090000000000
4
- 0010001300002Q 011000012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS QU12345678SANTA RITA DE CSP0000000000000000 000
5
- 00100015 0000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6
- 00199999 000001000006
1
+ 00100000 100012345678901001234567001412123 0123430000000123455 SOCIEDADE BRASILEIRA DE ZOOLOGBANCO DO BRASIL S.A. 114072015161515000000083000000000000000000000000000000000000000000000
2
+ 00100011R01 042 1000012345678901001234567001412123 0123430000000123455 SOCIEDADE BRASILEIRA DE ZOOLOG 000000001407201500000000
3
+ 0010001300001P 010123430000000123455 12345670000000123 71 000000000000000001407201500000000001999000000 02N14072015000000000000000000000000000000000000000000000000000000000000000000000000000000 3000000090000000000
4
+ 0010001300002Q 011000012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS QU12345678SANTA RITA DE CSP0000000000000000 000
5
+ 00100015 0000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6
+ 00199999 000001000006
@@ -1,6 +1,6 @@
1
- 75600000 274576177000177 0432730000000036668 SOCIEDADE BRASILEIRA DE ZOOLOGSICOOB 114072015161515000000081000000000000000000000000000000000000000000000
2
- 75600011R01 040 2074576177000177 0432730000000036668 SOCIEDADE BRASILEIRA DE ZOOLOG 000000001407201500000000
3
- 7560001300001P 010432730000000036668 000042971501014 10 220000000000000001407201500000000000500000000002N14072015000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000090000000000
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
1
+ 75600000 274576177000177 0432730000000036668 SOCIEDADE BRASILEIRA DE ZOOLOGSICOOB 114072015161515000000081000000000000000000000000000000000000000000000
2
+ 75600011R01 040 2074576177000177 0432730000000036668 SOCIEDADE BRASILEIRA DE ZOOLOG 000000001407201500000000
3
+ 7560001300001P 010432730000000036668 000042971501014 10 220000000000000001407201500000000000500000000002N14072015000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000090000000000
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
@@ -1,3 +1,3 @@
1
- 01REMESSA01COBRANCA 00000000000000000123SOCIEDADE BRASILEIRA DE ZOOLOG237BRADESCO 140715 MX0000001 000001
2
- 1000000000000000000000011234512345671 0000000000000000123P00000000002N 2 01 14071500000000199900000000099N140715000000000000000000000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SU SANTA RITA DE C/SP 12345678 000002
3
- 9 000003
1
+ 01REMESSA01COBRANCA 00000000000000000123SOCIEDADE BRASILEIRA DE ZOOLOG237BRADESCO 140715 MX0000001 000001
2
+ 1000000000000000000000011234512345671 0000000000000000123P00000000002N 2 01 14071500000000199900000000099N140715000000000000000000000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SU SANTA RITA DE C/SP 12345678 000002
3
+ 9 000003
@@ -1,6 +1,6 @@
1
- 10400000 1000123456789010000000000000000000012345112345600000000SOCIEDADE BRASILEIRA DE ZOOLOGCAIXA ECONOMICA FEDERAL 1140720151615150000000500000000000000000000000000000000000000000000001234
2
- 10400011R01 030 1000012345678901123456 12345112345600000000SOCIEDADE BRASILEIRA DE ZOOLOG 000000001407201500000000
3
- 1040001300001P 01123451123456000000000001400000000000012311 200000000000000001407201500000000001999000000099N14072015000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000090000000000
4
- 1040001300002Q 011000012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS QU12345678SANTA RITA DE CSP0000000000000000 000
5
- 10400015 000004000000000000000000000000000000000000000000000000000000000000000000000
6
- 10499999 000001000006
1
+ 10400000 1000123456789010000000000000000000012345112345600000000SOCIEDADE BRASILEIRA DE ZOOLOGCAIXA ECONOMICA FEDERAL 1140720151615150000000500000000000000000000000000000000000000000000001234
2
+ 10400011R01 030 1000012345678901123456 12345112345600000000SOCIEDADE BRASILEIRA DE ZOOLOG 000000001407201500000000
3
+ 1040001300001P 01123451123456000000000001400000000000012311 200000000000000001407201500000000001999000000099N14072015000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000090000000000
4
+ 1040001300002Q 011000012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS QU12345678SANTA RITA DE CSP0000000000000000 000
5
+ 10400015 000004000000000000000000000000000000000000000000000000000000000000000000000
6
+ 10499999 000001000006
@@ -1,3 +1,3 @@
1
- 01REMESSA01COBRANCA 17777751042700080112SOCIEDADE BRASILEIRA DE ZOOLOG745CITIBANK 140715 01600BPI000001
2
- 1010001234567891017777751042700080112 01000000000123 0000000000000000000000000101000000000014071500000000199907450000007N140715000000000000000000000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS12345678SANTA RITA DE CSP 9000002
3
- 9 000003
1
+ 01REMESSA01COBRANCA 17777751042700080112SOCIEDADE BRASILEIRA DE ZOOLOG745CITIBANK 140715 01600BPI000001
2
+ 1010001234567891017777751042700080112 01000000000123 0000000000000000000000000101000000000014071500000000199907450000007N140715000000000000000000000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS12345678SANTA RITA DE CSP 9000002
3
+ 9 000003
@@ -1,3 +1,3 @@
1
- 01REMESSA01COBRANCA 123400123451 SOCIEDADE BRASILEIRA DE ZOOLOG341BANCO ITAU SA 140715 000001
2
- 10100012345678910123400123451 0000 000001230000000000000123 I01000000000014071500000000199903410000099N140715000000000000000000000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE RUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS12345678SANTA RITA DE CSP 00000003 000002
3
- 9 000003
1
+ 01REMESSA01COBRANCA 123400123451 SOCIEDADE BRASILEIRA DE ZOOLOG341BANCO ITAU SA 140715 000001
2
+ 10100012345678910123400123451 0000 000001230000000000000123 I01000000000014071500000000199903410000099N140715000000000000000000000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE RUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS12345678SANTA RITA DE CSP 00000003 000002
3
+ 9 000003
@@ -1,3 +1,3 @@
1
- 01REMESSA01COBRANCA 17777751042700080112SOCIEDADE BRASILEIRA DE ZOOLOG033SANTANDER 140715 58000001
2
- 1010001234567891017777751042700080112 00000123000000 00000000000000000000 000000101000000000014071500000000199900330000001N140715000000000000000000000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS12345678SANTA RITA DE CSP 00 000002
3
- 9 000003
1
+ 01REMESSA01COBRANCA 17777751042700080112SOCIEDADE BRASILEIRA DE ZOOLOG033SANTANDER 140715 58000001
2
+ 1010001234567891017777751042700080112 00000123000000 00000000000000000000 000000101000000000014071500000000199900330000001N140715000000000000000000000000000000000000000000000000000000000000000100012345678901PABLO DIEGO JOSE FRANCISCO DE PAULA JUANRUA RIO GRANDE DO SUL SAO PAULO MINAS CASAO JOSE DOS12345678SANTA RITA DE CSP 00 000002
3
+ 9 000003
@@ -73,8 +73,8 @@ shared_examples_for 'cnab240' do
73
73
  expect(header[33..52]).to eq objeto.convenio_lote # informacoes do convenio
74
74
  expect(header[53..72]).to eq objeto.info_conta # informacoes da conta
75
75
  expect(header[73..102]).to eq 'SOCIEDADE BRASILEIRA DE ZOOLOG' # razao social do cedente
76
- expect(header[103..142]).to eq 'CAMPO DESTINADO AO PREENCHIMENTO NO MOME' # 1a mensagem
77
- expect(header[143..182]).to eq 'CAMPO DESTINADO AO PREENCHIMENTO NO MOME' # 2a mensagem
76
+ expect(header[103..142]).to eq 'Campo destinado ao preenchimento no mome' # 1a mensagem
77
+ expect(header[143..182]).to eq 'Campo destinado ao preenchimento no mome' # 2a mensagem
78
78
  expect(header[183..190]).to eq '00000001' # sequencial de remessa
79
79
  end
80
80
  end
@@ -118,11 +118,11 @@ shared_examples_for 'cnab240' do
118
118
  expect(segmento_q[17]).to eq '1' # tipo inscricao sacado
119
119
  expect(segmento_q[18..32]).to eq '000012345678901' # documento do sacado
120
120
  expect(segmento_q[33..72]).to eq 'PABLO DIEGO JOSE FRANCISCO DE PAULA JUAN' # nome do sacado
121
- expect(segmento_q[73..112]).to eq 'RUA RIO GRANDE DO SUL SAO PAULO MINAS CA' # endereco do sacado
122
- expect(segmento_q[113..127]).to eq 'SAO JOSE DOS QU' # bairro do sacado
121
+ expect(segmento_q[73..112]).to eq 'RUA RIO GRANDE DO SUL Sao paulo Minas ca' # endereco do sacado
122
+ expect(segmento_q[113..127]).to eq 'Sao jose dos qu' # bairro do sacado
123
123
  expect(segmento_q[128..132]).to eq '12345' # CEP do sacado
124
124
  expect(segmento_q[133..135]).to eq '678' # sufixo CEP do sacado
125
- expect(segmento_q[136..150]).to eq 'SANTA RITA DE C' # cidade do sacado
125
+ expect(segmento_q[136..150]).to eq 'Santa rita de c' # cidade do sacado
126
126
  expect(segmento_q[151..152]).to eq 'SP' # UF do sacado
127
127
  expect(segmento_q[153]).to eq '1' # tipo inscricao avalista
128
128
  expect(segmento_q[154..168]).to eq '000012345678901' # documento avalista
@@ -182,13 +182,14 @@ shared_examples_for 'cnab240' do
182
182
  it 'remessa deve conter os registros mais as quebras de linha' do
183
183
  remessa = objeto.gera_arquivo
184
184
 
185
- expect(remessa.size).to eq 1445
185
+ expect(remessa.size).to eq 1452
186
186
  # quebras de linha
187
- expect(remessa[240]).to eq "\n"
188
- expect(remessa[481]).to eq "\n"
189
- expect(remessa[722]).to eq "\n"
190
- expect(remessa[963]).to eq "\n"
191
- expect(remessa[1204]).to eq "\n"
187
+ expect(remessa[240..241]).to eq "\r\n"
188
+ expect(remessa[482..483]).to eq "\r\n"
189
+ expect(remessa[724..725]).to eq "\r\n"
190
+ expect(remessa[966..967]).to eq "\r\n"
191
+ expect(remessa[1208..1209]).to eq "\r\n"
192
+ expect(remessa[1450..1451]).to eq "\r\n"
192
193
  end
193
194
  end
194
195
  end
@@ -81,21 +81,22 @@ shared_examples_for 'cnab400' do
81
81
 
82
82
  it 'remessa deve conter os registros mais as quebras de linha' do
83
83
  remessa = objeto.gera_arquivo
84
- expect(remessa.size).to eq 1202
84
+ expect(remessa.size).to eq 1206
85
85
 
86
86
  # registros
87
87
  expect(remessa[0..399]).to eq objeto.monta_header
88
- expect(remessa[401..800]).to eq objeto.monta_detalhe(pagamento, 2)
89
- expect(remessa[802..1201]).to eq objeto.monta_trailer(3)
88
+ expect(remessa[402..801]).to eq objeto.monta_detalhe(pagamento, 2).upcase
89
+ expect(remessa[804..1203]).to eq objeto.monta_trailer(3)
90
90
  # quebras de linha
91
- expect(remessa[400]).to eq "\n"
92
- expect(remessa[801]).to eq "\n"
91
+ expect(remessa[400..401]).to eq "\r\n"
92
+ expect(remessa[802..803]).to eq "\r\n"
93
+ expect(remessa[1204..1205]).to eq "\r\n"
93
94
  end
94
95
 
95
96
  it 'deve ser possivel adicionar mais de um pagamento' do
96
97
  objeto.pagamentos << pagamento
97
98
  remessa = objeto.gera_arquivo
98
99
 
99
- expect(remessa.size).to eq 1603
100
+ expect(remessa.size).to eq 1608
100
101
  end
101
102
  end
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.1.2
4
+ version: 6.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kivanio Barbosa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-06 00:00:00.000000000 Z
11
+ date: 2015-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rghost