br_boleto 2.2.0 → 2.2.1

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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.markdown +23 -17
  4. data/lib/br_boleto.rb +2 -0
  5. data/lib/br_boleto/boleto/banco_brasil.rb +24 -15
  6. data/lib/br_boleto/boleto/santander.rb +8 -2
  7. data/lib/br_boleto/conta/banco_brasil.rb +254 -56
  8. data/lib/br_boleto/conta/bradesco.rb +229 -27
  9. data/lib/br_boleto/conta/caixa.rb +208 -4
  10. data/lib/br_boleto/conta/cecred.rb +29 -0
  11. data/lib/br_boleto/conta/itau.rb +482 -87
  12. data/lib/br_boleto/conta/santander.rb +224 -97
  13. data/lib/br_boleto/conta/sicoob.rb +39 -24
  14. data/lib/br_boleto/conta/sicredi.rb +169 -64
  15. data/lib/br_boleto/conta/unicred.rb +16 -13
  16. data/lib/br_boleto/helper/default_codes.rb +2123 -54
  17. data/lib/br_boleto/remessa/cnab240/banco_brasil.rb +12 -6
  18. data/lib/br_boleto/remessa/cnab240/bradesco.rb +1 -1
  19. data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +1 -1
  20. data/lib/br_boleto/remessa/cnab240/itau.rb +20 -3
  21. data/lib/br_boleto/remessa/cnab240/santander.rb +25 -24
  22. data/lib/br_boleto/remessa/cnab400/caixa.rb +197 -0
  23. data/lib/br_boleto/remessa/cnab400/santander.rb +32 -27
  24. data/lib/br_boleto/retorno/base.rb +24 -0
  25. data/lib/br_boleto/retorno/cnab240/base.rb +6 -2
  26. data/lib/br_boleto/retorno/cnab240/santander.rb +5 -1
  27. data/lib/br_boleto/retorno/cnab400/banco_brasil.rb +3 -1
  28. data/lib/br_boleto/retorno/cnab400/base.rb +2 -1
  29. data/lib/br_boleto/retorno/cnab400/bradesco.rb +6 -0
  30. data/lib/br_boleto/retorno/cnab400/caixa.rb +49 -0
  31. data/lib/br_boleto/retorno/cnab400/itau.rb +5 -1
  32. data/lib/br_boleto/retorno/cnab400/santander.rb +5 -1
  33. data/lib/br_boleto/retorno/cnab400/sicoob.rb +1 -0
  34. data/lib/br_boleto/retorno/cnab400/sicredi.rb +6 -0
  35. data/lib/br_boleto/retorno/pagamento.rb +50 -4
  36. data/lib/br_boleto/version.rb +1 -1
  37. data/test/br_boleto/boleto/santander_test.rb +1 -1
  38. data/test/br_boleto/boleto/sicredi_test.rb +1 -0
  39. data/test/br_boleto/conta/banco_brasil_test.rb +157 -0
  40. data/test/br_boleto/conta/base_test.rb +8 -8
  41. data/test/br_boleto/conta/bradesco_test.rb +165 -0
  42. data/test/br_boleto/conta/caixa_test.rb +159 -1
  43. data/test/br_boleto/conta/cecred_test.rb +22 -0
  44. data/test/br_boleto/conta/itau_test.rb +346 -3
  45. data/test/br_boleto/conta/santantader_test.rb +123 -10
  46. data/test/br_boleto/conta/sicoob_test.rb +8 -0
  47. data/test/br_boleto/conta/sicredi_test.rb +79 -0
  48. data/test/br_boleto/conta/unicred_test.rb +7 -7
  49. data/test/br_boleto/remessa/cnab240/itau_test.rb +1 -1
  50. data/test/br_boleto/remessa/cnab400/caixa_test.rb +184 -0
  51. data/test/br_boleto/remessa/cnab400/santander_test.rb +30 -17
  52. data/test/br_boleto/retorno/cnab240/banco_brasil_test.rb +30 -6
  53. data/test/br_boleto/retorno/cnab240/base_test.rb +25 -5
  54. data/test/br_boleto/retorno/cnab240/bradesco_test.rb +25 -5
  55. data/test/br_boleto/retorno/cnab240/caixa_test.rb +25 -5
  56. data/test/br_boleto/retorno/cnab240/cecred_test.rb +15 -3
  57. data/test/br_boleto/retorno/cnab240/itau_test.rb +25 -5
  58. data/test/br_boleto/retorno/cnab240/santander_test.rb +30 -6
  59. data/test/br_boleto/retorno/cnab240/sicoob_test.rb +25 -5
  60. data/test/br_boleto/retorno/cnab240/sicredi_test.rb +25 -5
  61. data/test/br_boleto/retorno/cnab240/unicred_test.rb +25 -5
  62. data/test/br_boleto/retorno/cnab400/bradesco_test.rb +30 -6
  63. data/test/br_boleto/retorno/cnab400/caixa_test.rb +7 -0
  64. data/test/br_boleto/retorno/cnab400/itau_test.rb +14 -4
  65. data/test/br_boleto/retorno/cnab400/sicoob_test.rb +25 -5
  66. data/test/br_boleto/retorno/cnab400/sicredi_test.rb +10 -2
  67. data/test/br_boleto/retorno/cnab400/unicred.rb +30 -6
  68. data/test/br_boleto/retorno/pagamento_test.rb +49 -1
  69. data/test/factories/remessa/cnab400/caixa.rb +8 -0
  70. data/test/fixtures/retorno/cnab240/santander.ret +1 -1
  71. metadata +10 -2
@@ -98,111 +98,238 @@ module BrBoleto
98
98
  %w(101 121)
99
99
  end
100
100
 
101
- # Espécie do Título :
102
- def equivalent_especie_titulo_240
103
- # Padrão Código para Descrição
104
- {# da GEM o Banco
105
- '02' => '02' , # DM - DUPLICATA MERCANTIL
106
- '04' => '04' , # DS - DUPLICATA DE SERVICO
107
- '07' => '07' , # LC - LETRA DE CÂMBIO
108
- '12' => '12' , # NP - NOTA PROMISSORIA
109
- '13' => '13' , # NR - NOTA PROMISSORIA RURAL
110
- '17' => '17' , # RC - RECIBO
111
- '20' => '20' , # AP - APOLICE DE SEGURO
112
- '01' => '97' , # CH - CHEQUE
113
- '98' => '98' , # NPD - NOTA PROMISSORIA DIRETA
114
- }
115
- end
116
- def equivalent_especie_titulo_400
117
- # Padrão Código para Descrição
118
- {# da GEM o Banco
119
- '02' => '01' , # DM - DUPLICATA MERCANTIL
120
- '04' => '06' , # DS - DUPLICATA DE SERVICO
121
- '07' => '07' , # LC - LETRA DE CÂMBIO
122
- '12' => '02' , # NP - NOTA PROMISSORIA
123
- '17' => '05' , # RC - RECIBO
124
- '20' => '03' , # AP - APOLICE DE SEGURO
125
- }
126
- end
101
+ ################################# DEFAULT CODES ###############################################
127
102
 
128
- # Código Movimento da Remessa CNAB240
129
- def equivalent_codigo_movimento_remessa_240
130
- # Padrão Código para Descrição
131
- {# da GEM o Banco
132
- '01' => '01' , # Entrada de título
133
- '02' => '02' , # Pedido de baixa
134
- '04' => '04' , # Concessão de abatimento
135
- '05' => '05' , # Cancelamento de abatimento
136
- '06' => '06' , # Alteração de vencimento
137
- '07' => '10' , # Concessão de Desconto
138
- '08' => '11' , # Cancelamento de desconto
139
- '09' => '09' , # Pedido de Protesto
140
- '10' => '18' , # Pedido de Sustação de Protesto
141
- '21' => '07' , # Alteração da identificação do título na empresa
142
- '22' => '08' , # Alteração seu número
143
- '31' => '31' , # Alteração de outros dados
144
- '41' => '98' , # Não Protestar
145
- }
146
- end
103
+ # Espécie do Título :
104
+ def equivalent_especie_titulo_240
105
+ # Padrão Código para Descrição
106
+ {# da GEM o Banco
107
+ '02' => '02' , # DM - DUPLICATA MERCANTIL
108
+ '04' => '04' , # DS - DUPLICATA DE SERVICO
109
+ '07' => '07' , # LC - LETRA DE CÂMBIO
110
+ '12' => '12' , # NP - NOTA PROMISSORIA
111
+ '13' => '13' , # NR - NOTA PROMISSORIA RURAL
112
+ '17' => '17' , # RC - RECIBO
113
+ '20' => '20' , # AP - APOLICE DE SEGURO
114
+ '01' => '97' , # CH - CHEQUE
115
+ '98' => '98' , # NPD - NOTA PROMISSORIA DIRETA
116
+ }
117
+ end
118
+ def equivalent_especie_titulo_400
119
+ # Padrão Código para Descrição
120
+ {# da GEM o Banco
121
+ '02' => '01' , # DM - DUPLICATA MERCANTIL
122
+ '04' => '06' , # DS - DUPLICATA DE SERVICO
123
+ '07' => '07' , # LC - LETRA DE CÂMBIO
124
+ '12' => '02' , # NP - NOTA PROMISSORIA
125
+ '17' => '05' , # RC - RECIBO
126
+ '20' => '03' , # AP - APOLICE DE SEGURO
127
+ }
128
+ end
147
129
 
148
- # Código Movimento da Remessa CNAB400
149
- def equivalent_codigo_movimento_remessa_400
150
- # Padrão Código para Descrição
151
- {# da GEM o Banco
152
- '01' => '01' , # Entrada de título
153
- '02' => '02' , # Pedido de baixa
154
- '04' => '04' , # Concessão de abatimento
155
- '05' => '05' , # Cancelamento de abatimento
156
- '06' => '06' , # Alteração de vencimento
157
- '21' => '07' , # Alteração da identificação do título na empresa
158
- '22' => '08' , # Alteração seu número
159
- '09' => '09' , # Pedido de Protesto
160
- '10' => '18' , # Sustar Protesto e Baixar Título
161
- '11' => '18' , # Sustar Protesto e Manter em Carteira
162
- }
163
- end
130
+ # Código Movimento da Remessa CNAB240
131
+ def equivalent_codigo_movimento_remessa_240
132
+ # Padrão Código para Descrição
133
+ {# da GEM o Banco
134
+ '01' => '01' , # Entrada de título
135
+ '02' => '02' , # Pedido de baixa
136
+ '04' => '04' , # Concessão de abatimento
137
+ '05' => '05' , # Cancelamento de abatimento
138
+ '06' => '06' , # Alteração de vencimento
139
+ '07' => '10' , # Concessão de Desconto
140
+ '08' => '11' , # Cancelamento de desconto
141
+ '09' => '09' , # Pedido de Protesto
142
+ '10' => '18' , # Pedido de Sustação de Protesto
143
+ '21' => '07' , # Alteração da identificação do título na empresa
144
+ '22' => '08' , # Alteração seu número
145
+ '31' => '31' , # Alteração de outros dados
146
+ '41' => '98' , # Não Protestar
147
+ }
148
+ end
164
149
 
165
- # Código de Multa
166
- def equivalent_codigo_multa
167
- # Padrão Código para Descrição
168
- {# da GEM o Banco
169
- '1' => '4', # Com Multa
170
- '2' => '4', # Com Multa
171
- '3' => '0', # Sem Multa (Isento)
172
- }
173
- end
174
- def default_codigo_multa
175
- '0'
176
- end
150
+ # Código Movimento da Remessa CNAB400
151
+ def equivalent_codigo_movimento_remessa_400
152
+ # Padrão Código para Descrição
153
+ {# da GEM o Banco
154
+ '01' => '01' , # Entrada de título
155
+ '02' => '02' , # Pedido de baixa
156
+ '04' => '04' , # Concessão de abatimento
157
+ '05' => '05' , # Cancelamento de abatimento
158
+ '06' => '06' , # Alteração de vencimento
159
+ '21' => '07' , # Alteração da identificação do título na empresa
160
+ '22' => '08' , # Alteração seu número
161
+ '09' => '09' , # Pedido de Protesto
162
+ '10' => '18' , # Sustar Protesto e Baixar Título
163
+ '11' => '18' , # Sustar Protesto e Manter em Carteira
164
+ }
165
+ end
177
166
 
178
- # Código da Carteira CNAB400
179
- def equivalent_tipo_cobranca_400
180
- # Padrão Código para Descrição
181
- {# da GEM o Banco
182
- '1' => '5', # RÁPIDA COM REGISTRO
183
- '2' => '2', # ELETRÔNICA COM REGISTRO
184
- '3' => '3', # CAUCIONADA ELETRÔNICA
185
- '4' => '7', # DESCONTADA ELETRÔNICA
186
- '5' => '4', # COBRANÇA SEM REGISTRO
187
- '6' => '6', # CAUCIONADA RAPIDA
188
- }
189
- end
167
+ # Código de Multa
168
+ def equivalent_codigo_multa
169
+ # Padrão Código para Descrição
170
+ {# da GEM o Banco
171
+ '1' => '4', # Com Multa
172
+ '2' => '4', # Com Multa
173
+ '3' => '0', # Sem Multa (Isento)
174
+ }
175
+ end
176
+ def default_codigo_multa
177
+ '0'
178
+ end
190
179
 
191
- # Código da Carteira CNAB240
192
- def equivalent_tipo_cobranca_240
193
- super.merge({'6' => '6' }) # 6 = Cobrança Caucionada (Rápida com Registro)
194
- end
180
+ # Código da Carteira
181
+ def equivalent_tipo_cobranca_240
182
+ super.merge({
183
+ # Padrão Código para
184
+ # da GEM o Banco
185
+ '1' => '5', # Cobrança Simples (Rápida com Registro)
186
+ '3' => '3', # Cobrança Caucionada (Eletrônica com Registro e Convencional com Registro)
187
+ '4' => '4', # Cobrança Descontada (Eletrônica com Registro)
188
+ '6' => '6', # Cobrança Caucionada (Rápida com Registro)
189
+ '7' => '1', # Cobrança Simples (Sem Registro / Eletrônica com Registro)
190
+ })
191
+ end
192
+ def equivalent_tipo_cobranca_400
193
+ super.merge({
194
+ # Padrão Código para
195
+ # da GEM o Banco
196
+ '7' => '4', # Cobrança Sem Registro
197
+ '4' => '7', # Cobrança Descontada
198
+ })
199
+ end
195
200
 
196
- # Código para Protesto
197
- def equivalent_codigo_protesto
198
- super.merge({'0' => '0' }) # 0 = Não Protestar
199
- end
201
+ # Código para Protesto
202
+ def equivalent_codigo_protesto_240
203
+ super.merge({
204
+ # Padrão Código para
205
+ # da GEM o Banco
206
+ '3' => '0', # Não Protestar
207
+ '99' => '3', # Utilizar perfil cedente
208
+ })
209
+ end
200
210
 
201
- # Código da Moeda CNAB240
202
- def equivalent_codigo_moeda_240
203
- super.merge({'09' => '00' }) # 00 = Real
204
- end
211
+ # Código da Moeda CNAB240
212
+ def equivalent_codigo_moeda_240
213
+ super.merge({'09' => '00' }) # 00 = Real
214
+ end
205
215
 
216
+ # Identificações de Ocorrência / Código de ocorrência:
217
+ def equivalent_codigo_movimento_retorno_400
218
+ super.merge(
219
+ # Padrão Código para
220
+ {# do Banco a GEM
221
+ '01' => '104', # título não existe
222
+ '07' => '102', # liquidação por conta
223
+ '08' => '103', # liquidação por saldo
224
+ '15' => '23', # Enviado para Cartório
225
+ '16' => '25' , # tít. já baixado/liquidado
226
+ '17' => '101', # liquidado em cartório
227
+ '21' => '23' , # Entrada em Cartório
228
+ '22' => '24' , # Retirado de cartório
229
+ '24' => '235', # Custas de Cartório
230
+ '25' => '19' , # Protestar Título
231
+ '26' => '20' , # Sustar Protestonhado a Protesto: Identifica o recebimento da instrução de protesto
232
+ })
233
+ end
234
+
235
+ # Código do Motivo da ocorrência :
236
+ def equivalent_codigo_motivo_ocorrencia_A_400 codigo_movimento_gem
237
+ super.merge(
238
+ # Padrão Código para
239
+ {# do Banco a GEM
240
+ '001' => 'A08', # NOSSO NUMERO NAO NUMERICO
241
+ '002' => 'A33', # VALOR DO ABATIMENTO NAO NUMERICO
242
+ '003' => 'A16', # DATA VENCIMENTO NAO NUMERICA
243
+ '005' => 'A10', # CODIGO DA CARTEIRA NAO NUMERICO
244
+ '006' => 'A10', # CODIGO DA CARTEIRA INVALIDO
245
+ '007' => 'A21', # ESPECIE DO DOCUMENTO INVALIDA
246
+ '010' => 'A278', # CODIGO PRIMEIRA INSTRUCAO NAO NUMERICA
247
+ '011' => 'A280', # CODIGO SEGUNDA INSTRUCAO NAO NUMERICA
248
+ '013' => 'A20', # VALOR DO TITULO NAO NUMERICO
249
+ '014' => 'A27', # VALOR DE MORA NAO NUMERICO
250
+ '015' => 'A24', # DATA EMISSAO NAO NUMERICA
251
+ '016' => 'A16', # DATA DE VENCIMENTO INVALIDA
252
+ '017' => 'A61', # CODIGO DA AGENCIA COBRADORA NAO NUMERICA
253
+ '019' => 'A48', # NUMERO DO CEP NAO NUMERICO
254
+ '020' => 'A46', # TIPO INSCRICAO NAO NUMERICO
255
+ '021' => 'A46', # NUMERO DO CGC OU CPF NAO NUMERICO
256
+ '022' => 'A244', # CODIGO OCORRENCIA INVALIDO
257
+ '023' => 'A08', # NOSSO NUMERO INV.P/MODALIDADE
258
+ '025' => 'A28', # VALOR DESCONTO NAO NUMERICO
259
+ '029' => 'A27', # VALOR DE MORA INVALIDO
260
+ '030' => 'A256', # DT VENC MENOR DE 15 DIAS DA DT PROCES
261
+ '039' => 'A254', # PERFIL NAO ACEITA TITULO EM BCO CORRESP
262
+ '040' => 'A255', # COBR RAPIDA NAO ACEITA-SE BCO CORRESP
263
+ '042' => 'A07', # CONTA COBRANCA INVALIDA
264
+ '049' => 'A86', # SEU NUMERO NAO CONFERE COM O CARNE
265
+ '052' => 'A227', # OCOR. NAO ACATADA,TITULO LIOUIDADO
266
+ '053' => 'A227', # OCOR. NAO ACATADA, TITULO BAIXADO
267
+ '057' => 'A322', # CEP DO SACADO INCORRETO
268
+ '058' => 'A06', # CGC/CPF INCORRETO
269
+ '063' => 'A49', # CEP NAO ENCONTRADO NA TABELA DE PRACAS
270
+ '073' => 'A34', # ABATIMENTO MAIOR/IGUAL AO VALOR TITULO
271
+ '074' => 'A29', # PRIM. DESCONTO MAIOR/IGUAL VALOR TITULO
272
+ '075' => 'A29', # SEG. DESCONTO MAIOR/IGUAL VALOR TITULO
273
+ '076' => 'A29', # TERC. DESCONTO MAIOR/IGUAL VALOR TITULO
274
+ '086' => 'A80', # DATA SEGUNDO DESCONTO INVALIDA
275
+ '087' => 'A80', # DATA TERCEIRO DESCONTO INVALIDA
276
+ '091' => 'A31', # JA EXISTE CONCESSAO DE DESCONTO
277
+ '092' => 'A09', # NOSSO NUMERO JA CADASTRADO
278
+ '093' => 'A20', # VALOR DO TITULO NAO INFORMADO
279
+ '098' => 'A24', # DATA EMISSAO INVALIDA
280
+ '100' => 'A17', # DATA EMISSAO MAIOR OUE A DATA VENCIMENTO
281
+ '104' => 'A52', # UNIDADE DA FEDERACAO NAO INFORMADA
282
+ '106' => 'A06', # CGCICPF NAO INFORMADO
283
+ '107' => 'A52', # UNIDADE DA FEDERACAO INCORRETA 00108 DIGITO CGC/CPF INCORRETO
284
+ '110' => 'A80', # DATA PRIMEIRO DESCONTO INVALIDA
285
+ '111' => 'A80', # DATA DESCONTO NAO NUMERICA
286
+ '112' => 'A28', # VALOR DESCONTO NAO INFORMADO
287
+ '113' => 'A28', # VALOR DESCONTO INVALIDO
288
+ '114' => 'A33', # VALOR ABATIMENTO NAO INFORMADO
289
+ '115' => 'A34', # VALOR ABATIMENTO MAIOR VALOR TITULO
290
+ '116' => 'A58', # DATA MULTA NAO NUMERICA
291
+ '117' => 'A29', # VALOR DESCONTO MAIOR VALOR TITULO
292
+ '118' => 'A58', # DATA MULTA NAO INFORMADA
293
+ '120' => 'A59', # PERCENTUAL MULTA NAO NUMERICO
294
+ '121' => 'A59', # PERCENTUAL MULTA NAO INFORMADO
295
+ '122' => 'A32', # VALOR IOF MAIOR OUE VALOR TITULO
296
+ '123' => 'A322', # CEP DO SACADO NAO NUMERICO
297
+ '124' => 'A48', # CEP SACADO NAO ENCONTRADO
298
+ '129' => 'A21', # ESPEC DE DOCUMENTO NAO NUMERICA
299
+ '130' => 'A11', # FORMA DE CADASTRAMENTO NAO NUMERICA
300
+ '131' => 'A11', # FORMA DE CADASTRAMENTO INVALIDA
301
+ '132' => 'A11', # FORMA CADAST. 2 INVALIDA PARA CARTEIRA 3
302
+ '133' => 'A11', # FORMA CADAST. 2 INVALIDA PARA CARTEIRA 4
303
+ '134' => 'A05', # CODIGO DO MOV. REMESSA NAO NUMERICO
304
+ '135' => 'A05', # CODIGO DO MOV. REMESSA INVALIDO
305
+ '139' => 'A02', # TIPO DE REGISTRO INVALIDO
306
+ '140' => 'A03', # COD. SEOUEC.DO REG. DETALHE INVALIDO
307
+ '142' => 'A07', # NUM.AG.CEDENTE/DIG.NAO NUMERICO
308
+ '143' => 'A07', # NUM. CONTA CEDENTE/DIG. NAO NUMERICO
309
+ '144' => 'A12', # TIPO DE DOCUMENTO NAO NUMERICO
310
+ '145' => 'A12', # TIPO DE DOCUMENTO INVALIDO
311
+ '149' => 'A26', # CODIGO DE MORA INVALIDO
312
+ '150' => 'A26', # CODIGO DE MORA NAO NUMERICO
313
+ '151' => 'A27', # VL.MORA IGUAL A ZEROS P. COD.MORA 1
314
+ '152' => 'A27', # VL. TAXA MORA IGUAL A ZEROS P.COD MORA 2
315
+ '153' => 'A27', # VL. MORA DIFERENTE DE ZEROS P.COD.MORA 3
316
+ '154' => 'A27', # VL. MORA NAO NUMERICO P. COD MORA 2
317
+ '155' => 'A27', # VL. MORA INVALIDO P. COD.MORA 4
318
+ '160' => 'A319', # BAIRRO DO SACADO NAO INFORMADO
319
+ '161' => 'A53', # TIPO INSC.CPF/CGC SACADOR/AVAL.NAO NUM.
320
+ '170' => 'A11', # FORMA DE CADASTRAMENTO 2 INV.P.CART.5
321
+ '199' => 'A53', # TIPO INSC.CGC/CPF SACADOR.AVAL.INVAL.
322
+ '200' => 'A53', # NUM.INSC.(CGC)SACADOR/AVAL.NAO NUMERICO
323
+ '212' => 'A79', # DATA DO JUROS DE MORA NAO NUMERICO (D3P)
324
+ '242' => 'A57', # COD. DA MULTA NAO NUMERICO (D3R)
325
+ '243' => 'A57', # COD. MULTA INVALIDO (D3R)
326
+ '244' => 'A59', # VALOR DA MULTA NAO NUMERICO (D3R)
327
+ '245' => 'A58', # DATA DA MULTA NAO NUMERICO (D3R)
328
+ '258' => 'A27', # VL.MORA NAO NUMERICO P.COD=4(D3P)
329
+ '263' => 'A278', # INSTRUCAO PARA TITULO NAO REGISTRADO
330
+ '264' => 'A23', # CODIGO DE ACEITE (A/N) INVALIDO.
331
+ })
332
+ end
206
333
  end
207
334
  end
208
335
  end
@@ -62,32 +62,47 @@ module BrBoleto
62
62
  @conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(conta_corrente).to_s
63
63
  end
64
64
 
65
- # Códigos de Movimento Remessa / Identificacao Ocorrência específicos do Banco
66
- def equivalent_codigo_movimento_remessa_400
67
- super.merge(
68
- {
69
- '23' => '12', # Alteração de Pagador
70
- '46' => '34', # Baixa - Pagamento Direto ao Beneficiário
71
- })
72
- end
73
65
 
74
- # Código que representa a isenção de juros e multa deve ser '0'
75
- # Diferentemente do padrão da FEBRABAN que é '3'
76
- # Ou seja, se passar o código 3 deve considerar '0'
77
- #
78
- def equivalent_codigo_juros
79
- super.merge({'3' => '0', '0'=>'0'})
80
- end
81
- def equivalent_codigo_multa
82
- super.merge({'3' => '0', '0'=>'0'})
83
- end
66
+ ##################################### DEFAULT CODES ###############################################
84
67
 
85
- def default_codigo_juros
86
- '0'
87
- end
88
- def default_codigo_multa
89
- '0'
90
- end
68
+ # Códigos de Movimento Remessa / Identificacao Ocorrência específicos do Banco
69
+ def equivalent_codigo_movimento_remessa_400
70
+ super.merge(
71
+ {
72
+ '23' => '12', # Alteração de Pagador
73
+ '46' => '34', # Baixa - Pagamento Direto ao Beneficiário
74
+ })
75
+ end
76
+
77
+ # Código que representa a isenção de juros e multa deve ser '0'
78
+ # Diferentemente do padrão da FEBRABAN que é '3'
79
+ # Ou seja, se passar o código 3 deve considerar '0'
80
+ #
81
+ def equivalent_codigo_juros
82
+ super.merge({'3' => '0', '0'=>'0'})
83
+ end
84
+ def equivalent_codigo_multa
85
+ super.merge({'3' => '0', '0'=>'0'})
86
+ end
87
+
88
+ def default_codigo_juros
89
+ '0'
90
+ end
91
+ def default_codigo_multa
92
+ '0'
93
+ end
94
+
95
+ # Identificações de Ocorrência / Código de ocorrência:
96
+ def equivalent_codigo_movimento_retorno_400
97
+ super.merge(
98
+ # Padrão Código para
99
+ {# do Banco a GEM
100
+ '05' => '17' , # Liquidação Sem Registro: Identifica a liquidação de título da modalidade "SEM REGISTRO";
101
+ '15' => '101', # Liquidação em Cartório: Identifica as liquidações dos títulos ocorridas em cartórios de protesto;
102
+ '23' => '19' , # Encaminhado a Protesto: Identifica o recebimento da instrução de protesto
103
+ })
104
+ end
105
+
91
106
  end
92
107
  end
93
108
  end
@@ -97,75 +97,180 @@ module BrBoleto
97
97
  "#{agencia}.#{posto}.#{codigo_cedente}"
98
98
  end
99
99
 
100
- # Espécie do Título CNAB 240
101
- def equivalent_especie_titulo_240
102
- super.merge(
103
- # Padrão Código para
104
- {# da GEM o Banco
105
- '01' => '03', # Duplicata Mercantil por Indicação (DMI)
106
- '02' => '03' # Duplicata Mercantil por Indicação (DMI)
107
- })
108
- end
109
100
 
110
- # Espécie do Título CNAB 400
111
- def equivalent_especie_titulo_400
112
- super.merge(
113
- # Padrão Código para
114
- {# da GEM o Banco
115
- '01' => 'A',
116
- '02' => 'A',
117
- '03' => 'A', # Duplicata Mercantil por Indicação (DMI)
118
- '06' => 'B', # Duplicata Rural (DR)
119
- '12' => 'C', # Nota Promissória (NP)
120
- '13' => 'D', # Nota Promissória Rural (NR)
121
- '16' => 'E', # Nota de Seguros (NS)
122
- '17' => 'G', # Recibo (RC)
123
- '07' => 'H', # Letra de Câmbio (LC)
124
- '19' => 'I', # Nota de Débito (ND)
125
- '05' => 'J', # Duplicata de Serviço por Indicação (DSI)
126
- '99' => 'K', # Outros (OS)
127
- '32' => 'O' # Boleto de Proposta (BDP)
101
+ ##################################### DEFAULT CODES ###############################################
102
+
103
+ # Espécie do Título CNAB 240
104
+ def equivalent_especie_titulo_240
105
+ super.merge(
106
+ # Padrão Código para
107
+ {# da GEM o Banco
108
+ '01' => '03', # Duplicata Mercantil por Indicação (DMI)
109
+ '02' => '03' # Duplicata Mercantil por Indicação (DMI)
110
+ })
111
+ end
112
+
113
+ # Espécie do Título CNAB 400
114
+ def equivalent_especie_titulo_400
115
+ super.merge(
116
+ # Padrão Código para
117
+ {# da GEM o Banco
118
+ '01' => 'A',
119
+ '02' => 'A',
120
+ '03' => 'A', # Duplicata Mercantil por Indicação (DMI)
121
+ '06' => 'B', # Duplicata Rural (DR)
122
+ '12' => 'C', # Nota Promissória (NP)
123
+ '13' => 'D', # Nota Promissória Rural (NR)
124
+ '16' => 'E', # Nota de Seguros (NS)
125
+ '17' => 'G', # Recibo (RC)
126
+ '07' => 'H', # Letra de Câmbio (LC)
127
+ '19' => 'I', # Nota de Débito (ND)
128
+ '05' => 'J', # Duplicata de Serviço por Indicação (DSI)
129
+ '99' => 'K', # Outros (OS)
130
+ '32' => 'O' # Boleto de Proposta (BDP)
131
+ })
132
+ end
133
+
134
+ # Código da Carteira
135
+ def equivalent_tipo_cobranca_400
136
+ super.merge({ '1' => 'A' }) # Cobrança Simples
137
+ end
138
+
139
+ # Identificação do Tipo de Impressão :
140
+ def equivalent_tipo_impressao_400
141
+ super.merge({ '1' => 'A' }) # Frente do Bloqueto
142
+ end
143
+
144
+ # Código da Moeda :
145
+ def equivalent_codigo_moeda_400
146
+ super.merge({ '09' => 'A' }) # Real
147
+ end
148
+
149
+ # Identificação da Emissão do Boleto de Pagamento
150
+ def equivalent_identificacao_emissao_400
151
+ super.merge(
152
+ # Padrão Código para
153
+ {# da GEM o Banco
154
+ '1' => 'A', # Impressão é feita pelo Sicredi
155
+ '2' => 'B', # Impressão é feita pelo Beneficiário
156
+ })
157
+ end
158
+
159
+ # Código adotado pelo SICREDI para identificação do tipo de desconto que deverá ser concedido.
160
+ def equivalent_codigo_desconto
161
+ {
162
+ '0' => '1', # Valor Fixo Até a Data Informada
163
+ '1' => '1', # Valor Fixo Até a Data Informada
164
+ '2' => '2', # Percentual Até a Data Informada
165
+ '3' => '3', # Valor por Antecipação Dia Corrido
166
+ '4' => '3', # Valor por Antecipação Dia Úti
167
+ '5' => '2', # Percentual Sobre o Valor Nominal Dia Corrido
168
+ '6' => '2', # Percentual Sobre o Valor Nominal Dia Útil
169
+ '7' => '7', # Cancelamento de Desconto
170
+ }
171
+ end
172
+
173
+ # Código de Movimento Retorno
174
+ def equivalent_codigo_movimento_retorno_240
175
+ super.merge(
176
+ # Padrão Código para
177
+ {# do Banco a GEM
178
+ '36' => '100', # Baixa rejeitada
179
+ })
180
+ end
181
+
182
+ # Código do Motivo da ocorrência :
183
+ def codigos_movimento_retorno_para_ocorrencia_D_240
184
+ %w[27]
185
+ end
186
+ def equivalent_codigo_motivo_ocorrencia_D_240 codigo_movimento_gem
187
+ # Código Padrão para
188
+ {# do Banco a Gem
189
+ '01' => 'D01', # Alteração de carteira
190
+ }
191
+ end
192
+
193
+ def equivalent_codigo_motivo_ocorrencia_A_400 codigo_movimento_gem
194
+ super.merge(
195
+ # Padrão Código para
196
+ {# do Banco a GEM
197
+ '01' => 'A01', # Código do banco inválido
198
+ '02' => 'A02', # Código do registro detalhe inválido
199
+ '03' => 'A05', # Código da ocorrência inválido
200
+ '04' => 'A04', # Código de ocorrência não permitida para a carteira
201
+ '05' => 'A05', # Código de ocorrência não numérico
202
+ '07' => 'A07', # Cooperativa/agência/conta/dígito inválidos
203
+ '08' => 'A08', # Nosso número inválido
204
+ '09' => 'A09', # Nosso número duplicado
205
+ '10' => 'A10', # Carteira inválida
206
+ '15' => 'A07', # Cooperativa/carteira/agência/conta/nosso número inválidos
207
+ '16' => 'A16', # Data de vencimento inválida
208
+ '17' => 'A17', # Data de vencimento anterior à data de emissão
209
+ '18' => 'A18', # Vencimento fora do prazo de operação
210
+ '20' => 'A20', # Valor do título inválido
211
+ '21' => 'A21', # Espécie do título inválida
212
+ '22' => 'A22', # Espécie não permitida para a carteira
213
+ '24' => 'A24', # Data de emissão inválida
214
+ '29' => 'A29', # Valor do desconto maior/igual ao valor do título
215
+ '31' => 'A31', # Concessão de desconto - existe desconto anterior
216
+ '33' => 'A33', # Valor do abatimento inválido
217
+ '34' => 'A34', # Valor do abatimento maior/igual ao valor do título
218
+ '36' => 'A36', # Concessão de abatimento - existe abatimento anterior
219
+ '38' => 'A38', # Prazo para protesto inválido
220
+ '39' => 'A39', # Pedido para protesto não permitido para o título
221
+ '40' => 'A40', # Título com ordem de protesto emitida
222
+ '41' => 'A41', # Pedido cancelamento/sustação sem instrução de protesto
223
+ '44' => 'A209', # Cooperativa de crédito/agência beneficiária não prevista
224
+ '45' => 'A45', # Nome do pagador inválido
225
+ '46' => 'A46', # Tipo/número de inscrição do pagador inválidos
226
+ '47' => 'A47', # Endereço do pagador não informado
227
+ '48' => 'A48', # CEP irregular
228
+ '49' => 'A46', # Número de Inscrição do pagador/avalista inválido
229
+ '50' => 'A54', # Pagador/avalista não informado
230
+ '60' => 'A60', # Movimento para título não cadastrado
231
+ '63' => 'A63', # Entrada para título já cadastrado
232
+ 'A6' => 'A244', # Data da instrução/ocorrência inválida
233
+ 'B4' => 'A44', # Tipo de moeda inválido
234
+ 'B5' => 'A28', # Tipo de desconto/juros inválido
235
+ 'B7' => 'A86', # Seu número inválido
236
+ 'B8' => 'A59', # Percentual de multa inválido
237
+ 'B9' => 'A27', # Valor ou percentual de juros inválido
238
+ 'C2' => 'A23', # Aceite do título inválido
239
+ 'C6' => 'A325', # Título já liquidado
240
+ 'C7' => 'A325', # Título já baixado
241
+ 'H4' => 'D01', # Alteração de carteira
128
242
  })
129
- end
243
+ end
130
244
 
131
- # Código da Carteira
132
- def equivalent_tipo_cobranca_400
133
- super.merge({ '1' => 'A' }) # Cobrança Simples
134
- end
135
-
136
- # Identificação do Tipo de Impressão :
137
- def equivalent_tipo_impressao_400
138
- super.merge({ '1' => 'A' }) # Frente do Bloqueto
139
- end
140
-
141
- # Código da Moeda :
142
- def equivalent_codigo_moeda_400
143
- super.merge({ '09' => 'A' }) # Real
144
- end
145
-
146
- # Identificação da Emissão do Boleto de Pagamento
147
- def equivalent_identificacao_emissao_400
148
- super.merge(
149
- # Padrão Código para
150
- {# da GEM o Banco
151
- '1' => 'A', # Impressão é feita pelo Sicredi
152
- '2' => 'B', # Impressão é feita pelo Beneficiário
245
+ def equivalent_codigo_motivo_ocorrencia_B_400 codigo_movimento_gem
246
+ super.merge(
247
+ # Padrão Código para
248
+ {# do Banco a GEM
249
+ '03' => 'B03', # Tarifa de sustação
250
+ '04' => 'B04', # Tarifa de protesto
251
+ '08' => 'B08', # Tarifa de custas de protesto
252
+ 'A9' => 'B02', # Tarifa de manutenção de título vencido
253
+ 'B1' => 'B122', # Tarifa de baixa da carteira
254
+ 'B3' => 'B123', # Tarifa de registro de entrada do título
255
+ 'F5' => 'B124', # Tarifa de entrada na rede Sicredi
153
256
  })
154
- end
257
+ end
155
258
 
156
- # Código adotado pelo SICREDI para identificação do tipo de desconto que deverá ser concedido.
157
- def equivalent_codigo_desconto
158
- {
159
- '0' => '1', # Valor Fixo Até a Data Informada
160
- '1' => '1', # Valor Fixo Até a Data Informada
161
- '2' => '2', # Percentual Até a Data Informada
162
- '3' => '3', # Valor por Antecipação Dia Corrido
163
- '4' => '3', # Valor por Antecipação Dia Úti
164
- '5' => '2', # Percentual Sobre o Valor Nominal Dia Corrido
165
- '6' => '2', # Percentual Sobre o Valor Nominal Dia Útil
166
- '7' => '7', # Cancelamento de Desconto
167
- }
168
- end
259
+ # Identificações de Ocorrência / Código de ocorrência:
260
+ def equivalent_codigo_movimento_retorno_400
261
+ super.merge(
262
+ # Padrão Código para
263
+ {# do Banco a GEM
264
+ '15' => '101', # Liquidação em cartório
265
+ '24' => '106', # Entrada rejeitada por CEP irregular
266
+ '27' => '100', # Baixa rejeitada
267
+ '32' => '26', # Instrução rejeitada
268
+ '33' => '27', # Confirmação de pedido de alteração de outros dados
269
+ '34' => '24', # Retirado de cartório e manutenção em carteira
270
+ '35' => '105', # Aceite do pagador
271
+ })
272
+ end
273
+
169
274
  end
170
275
  end
171
276
  end