brcobranca 6.1.2 → 6.1.3

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