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
@@ -79,18 +79,19 @@ module BrBoleto
79
79
  ######################### SEGMENTO P #############################
80
80
  #
81
81
  # segmento_p_posicao_024_a_057
82
- # DESCRIÇÃO TAMANHO POSIÇÃO
82
+ # TAMANHO POSIÇÃO DESCRIÇÃO
83
83
  # ---------------------------------------------------------
84
- # Número da Conta Corrente 12 24 - 35
85
- # DV da Conta 01 36 - 36
86
- # DV da Ag/Conta 01 37 - 37
87
- # Nosso Número 20 38 - 57
84
+ # 12 24 - 35 Número da Conta Corrente
85
+ # 01 36 - 36 DV da Conta
86
+ # 01 37 - 37 DV da Ag/Conta (Campo não tratado pelo Banco do Brasil. Informar 'branco')
87
+ # 20 38 - 57 Nosso Número
88
88
  #
89
89
  # TOTAL = 34 posições
90
90
  def complemento_p(pagamento)
91
91
  complemento = ''
92
92
  complemento << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
93
- complemento << "#{conta.conta_corrente_dv}".adjust_size_to(2)
93
+ complemento << "#{conta.conta_corrente_dv}"
94
+ complemento << ' '
94
95
  complemento << "#{pagamento.nosso_numero}".adjust_size_to(20)
95
96
  complemento
96
97
  end
@@ -126,6 +127,11 @@ module BrBoleto
126
127
  complemento = ''.rjust(217, ' ') # USO EXCLUSIVO FEBRABAN
127
128
  end
128
129
 
130
+
131
+ # Por padrão para o Banco do Brasil o Segmento S é opcional
132
+ def usa_segmento_S?
133
+ false
134
+ end
129
135
  end
130
136
  end
131
137
  end
@@ -104,7 +104,7 @@ module BrBoleto
104
104
  # Zeros 05 73 - 77
105
105
  # TOTAL = 15 posições
106
106
  def segmento_p_numero_do_documento(pagamento)
107
- segmento = "#{pagamento.numero_documento}".adjust_size_to(15, '0', :right)
107
+ "#{pagamento.numero_documento}".adjust_size_to(15, '0', :right)
108
108
  end
109
109
 
110
110
  ######################### TRAILER LOTE #############################
@@ -300,7 +300,7 @@ module BrBoleto
300
300
  # 1 posição
301
301
  #
302
302
  def segmento_p_posicao_221_a_221(pagamento)
303
- "#{conta.get_codigo_protesto(pagamento.codigo_protesto)}".adjust_size_to(1, '1')
303
+ "#{conta.get_codigo_protesto(pagamento.codigo_protesto, 240)}".adjust_size_to(1, '1')
304
304
  end
305
305
 
306
306
  # Número de Dias para Protesto
@@ -77,6 +77,12 @@ module BrBoleto
77
77
 
78
78
  ######################### SEGMENTO P #############################
79
79
  #
80
+ # Complemento de Registro - Conteúdo deve estar em 'Branco'
81
+ # 1 posição
82
+ def segmento_p_posicao_023_a_023
83
+ " "
84
+ end
85
+
80
86
  # segmento_p_posicao_024_a_057
81
87
  # DESCRIÇÃO TAMANHO POSIÇÃO
82
88
  # -----------------------------------------------------------
@@ -136,6 +142,12 @@ module BrBoleto
136
142
  segmento
137
143
  end
138
144
 
145
+ # Dígito Verificador da Agência cobradora - Conteúdo deve ser 'Zero'
146
+ # 1 posição
147
+ def segmento_p_posicao_106_a_106
148
+ "0"
149
+ end
150
+
139
151
  # Código do Juros de Mora
140
152
  # Para o Itau esse espaço deve ter 'Zero'
141
153
  # 1 posição
@@ -143,7 +155,6 @@ module BrBoleto
143
155
  '0'
144
156
  end
145
157
 
146
-
147
158
  # Código da Moeda
148
159
  # Para o Itau esse espaço deve ter 'Zeros'
149
160
  # 2 posições
@@ -161,7 +172,7 @@ module BrBoleto
161
172
  # Qtd. Títulos em Cobrança 006 047 - 052
162
173
  # Val. Tot. Títulos em Carteiras 017 053 - 069
163
174
  # Complemento De Registro (Zeros) 046 070 - 115
164
- # N. Aviso de Lançamento 008 116 - 123
175
+ # Aviso Bancário (Brancos) 008 116 - 123
165
176
  # Uso FEBRABAN 117 124 - 240
166
177
  #
167
178
  # TOTAL = 217 posições
@@ -169,11 +180,17 @@ module BrBoleto
169
180
  def complemento_trailer_lote(lote, nr_lote)
170
181
  complemento = ''
171
182
  complemento << ''.rjust(92, '0') # VALORES UTILIZADOS APENAS PARA ARQUIVO DE RETORNO
172
- complemento << ''.rjust(8, '0') # Número do aviso de lançamento do crédito referente a(os) título(s) de cobrança, que poderá ser utilizado no extrato de conta corrente.
183
+ complemento << ''.rjust(8, ' ') # REFERÊNCIA DO AVISO BANCÁRIO
173
184
  complemento << ''.rjust(117, ' ') # USO EXCLUSIVO FEBRABAN
174
185
  complemento
175
186
  end
176
187
 
188
+
189
+ # Por padrão o ITAU não utiliza o Segmento S
190
+ def usa_segmento_S?
191
+ false
192
+ end
193
+
177
194
  end
178
195
  end
179
196
  end
@@ -15,7 +15,7 @@ module BrBoleto
15
15
  #
16
16
  # TOTAL = 15 posições
17
17
  def header_arquivo_posicao_033_a_47
18
- "#{conta.convenio}".adjust_size_to(15, '0', :right)
18
+ "#{conta.codigo_transmissao}".adjust_size_to(15, '0', :right)
19
19
  end
20
20
  def header_arquivo_posicao_033_a_052
21
21
  header_arquivo_posicao_033_a_47
@@ -70,14 +70,18 @@ module BrBoleto
70
70
  ''.adjust_size_to(20)
71
71
  end
72
72
 
73
-
74
- # Cód. de Transmissão (15 posições) + Uso Banco (5 posições)
75
- # TOTAL = 20 posições
76
- def header_arquivo_posicao_054_a_68
77
- "#{conta.convenio}".adjust_size_to(15, '0', :right)
78
- end
73
+ # header_lote_posicao_054_a_073
74
+ # DESCRIÇÃO TAMANHO POSIÇÃO
75
+ # -------------------------------------------------
76
+ # Cód. de Transmissão 15 54-68
77
+ # Reservado uso Banco (Brancos) 05 69-73
78
+ #
79
+ # TOTAL = 20 posições
79
80
  def header_lote_posicao_054_a_073
80
- "#{header_arquivo_posicao_054_a_68}".adjust_size_to(20)
81
+ info = ''
82
+ info << "#{conta.codigo_transmissao}".adjust_size_to(15, '0', :right)
83
+ info << ''.adjust_size_to(5)
84
+ info
81
85
  end
82
86
 
83
87
  # Reservado (uso Banco)
@@ -94,23 +98,20 @@ module BrBoleto
94
98
 
95
99
  ######################### SEGMENTO P ################################
96
100
  #
97
- # Agência Mantenedora da Conta
98
- # TOTAL = 4 posições
99
- def segmento_p_posicao_018_a_021
100
- "#{conta.agencia}".adjust_size_to(4, '0', :right)
101
- end
101
+ # O padrão da FEBRABAN é
102
+ # Posição 18-22 = Número da Agência
103
+ # Posição 23-23 = DV Agência
104
+ #
105
+ # Porém para o Santander a posição 23 já começa o complemento do segmento P com o número da conta.
106
+ # Padrão do Santander é:
107
+ # Posição 18-21 = Agência (4 dígitos)
108
+ # Posição 22-22 = DV Agência (1 dígito)
109
+ #
102
110
  def segmento_p_posicao_018_a_022
103
- segmento_p_posicao_018_a_021
111
+ "#{conta.agencia}#{conta.agencia_dv}".adjust_size_to(5, '0', :right)
104
112
  end
113
+ def segmento_p_posicao_023_a_023; '' end
105
114
 
106
- # Dígito Verificador da Agência
107
- # TOTAL = 1 posição
108
- def segmento_p_posicao_022_a_022
109
- "#{conta.agencia_dv}".adjust_size_to(1, '0')
110
- end
111
- def segmento_p_posicao_023_a_023
112
- segmento_p_posicao_022_a_022
113
- end
114
115
 
115
116
  # segmento_p_posicao_023_a_057
116
117
  # DESCRIÇÃO TAMANHO POSIÇÃO
@@ -139,13 +140,13 @@ module BrBoleto
139
140
  # Reservado (uso Banco)
140
141
  # TOTAL = 1 posição
141
142
  def segmento_p_posicao_061_a_061(pagamento)
142
- ''.adjust_size_to(1)
143
+ " "
143
144
  end
144
145
 
145
146
  # Reservado (uso Banco)
146
147
  # TOTAL = 1 posição
147
148
  def segmento_p_posicao_062_a_062(pagamento)
148
- ''.adjust_size_to(1)
149
+ " "
149
150
  end
150
151
 
151
152
  # segmento_p_posicao_063_a_077
@@ -0,0 +1,197 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Remessa
4
+ module Cnab400
5
+ class Caixa < BrBoleto::Remessa::Cnab400::Base
6
+ def conta_class
7
+ BrBoleto::Conta::Caixa
8
+ end
9
+
10
+ ############################## HEADER ######################################
11
+
12
+ # Código da remessa
13
+ # Tipo: Numérico
14
+ # Tamanho: 001
15
+ def header_posicao_002_a_002
16
+ '1'
17
+ end
18
+
19
+ # Complemento do registro
20
+ # Posição: 101 até 394
21
+ # POSIÇÂO TAM. Descrição
22
+ # 101 a 389 289 Uso Exclusivo CAIXA (Brancos)
23
+ # 390 a 394 005 No Seqüencial de Remessa (iniciar com '00001' e evoluir de 1 em 1 para cada Header de Arquivo)
24
+ # Tamanho total: 294
25
+ def complemento_registro
26
+ complemento = ''
27
+ complemento << ''.adjust_size_to(289)
28
+ complemento << "#{sequencial_remessa}".adjust_size_to(5, '0', :right)
29
+ complemento
30
+ end
31
+
32
+ ############################# DETALHE #################################
33
+ #
34
+ # Informações da conta <- Específico para cada banco
35
+ # Posição: 018 até 037 (Detalhe)
36
+ # Posição: 027 até 046 (Header)
37
+ # Tamanho: 020
38
+ def informacoes_da_conta(local)
39
+
40
+ # POSIÇÂO:
41
+ # Detalhe | Header TAM. Descrição
42
+ # 18 a 21 27 a 30 004 Agência
43
+ # 22 a 27 31 a 36 006 Convênio
44
+
45
+ info = ''
46
+ info << "#{conta.agencia}".adjust_size_to(4, '0', :right)
47
+ info << "#{conta.convenio}".adjust_size_to(6, '0', :right)
48
+
49
+ if local == :header
50
+ # POSIÇÂO TAM. Descrição
51
+ # ---------------------------------------------------
52
+ # 037 a 046 010 Uso Exclusivo CAIXA (Brancos)
53
+ info << ''.adjust_size_to(10)
54
+ end
55
+
56
+ info
57
+ end
58
+
59
+ # detalhe_posicao_028_058
60
+ # POSIÇÂO TAM. Descrição
61
+ # -----------------------------------------------------
62
+ # 028 a 028 001 Identificação da Emissão do Boleto
63
+ # 029 a 029 001 ID Entrega/Distribuição do Boleto
64
+ # 030 a 031 002 Comissão de Permanência (Informar '00')
65
+ # 032 a 056 025 Número do Documento
66
+ # 057 a 058 002 Carteira
67
+ #
68
+ # Tamanho: 31
69
+ def detalhe_posicao_028_058(pagamento)
70
+ detalhe = ''
71
+ detalhe << "#{conta.get_identificacao_emissao(pagamento.emissao_boleto, 400)}".adjust_size_to(1, '0', :right)
72
+ detalhe << "#{conta.get_distribuicao_boleto(pagamento.distribuicao_boleto)}".adjust_size_to(1, '0', :right)
73
+ detalhe << "00"
74
+ detalhe << "#{pagamento.numero_documento}".adjust_size_to(25, '0', :right)
75
+ detalhe << "#{conta.carteira}".adjust_size_to(2, '0', :right)
76
+ detalhe
77
+
78
+ end
79
+ def detalhe_posicao_038_062(pagamento)
80
+ detalhe_posicao_028_058(pagamento)
81
+ end
82
+
83
+ # POSIÇÂO TAM. Descrição
84
+ # -----------------------------------------------------
85
+ # 059 a 073 015 Número do Documento
86
+ # 074 a 076 003 Campos em branco
87
+ #
88
+ # Tamanho: 18
89
+ def dados_do_pagamento(pagamento)
90
+ detalhe = ''
91
+ detalhe << "#{pagamento.numero_documento}".adjust_size_to(15, '0', :right)
92
+ detalhe << "".adjust_size_to(3)
93
+ detalhe
94
+ end
95
+
96
+ # POSIÇÂO TAM. Descrição
97
+ # -----------------------------------------------------
98
+ # 077 a 106 030 Mensagem a ser impressa no boleto
99
+ # 107 a 108 002 Código da Carteira
100
+ #
101
+ # Tamanho: 32
102
+ def detalhe_posicao_077_108(pagamento, sequencial)
103
+ detalhe = ''
104
+ detalhe << "".adjust_size_to(30)
105
+ detalhe << "#{conta.get_tipo_cobranca(conta.codigo_carteira, 400)}".adjust_size_to(2, '0', :right)
106
+ detalhe
107
+ end
108
+
109
+
110
+ # Informações referente ao pagamento
111
+ # Posição 121 até 160
112
+ # POSIÇÂO TAM. Descrição
113
+ # 121 a 126 006 Data do Vencimento do Título
114
+ # 127 a 139 013 Valor do Título
115
+ # 140 a 142 003 Banco Encarregado da Cobrança (Preencher '104')
116
+ # 143 a 147 005 Agência Depositária (Preencher com zeros)
117
+ # 148 a 149 002 Espécie de Título
118
+ # 150 a 150 001 Identificação (Sempre 'N')
119
+ # 151 a 156 006 Data da emissão do Título
120
+ # 157 a 158 002 1a instrução (Código para Protesto / Devolução)
121
+ # 159 a 160 002 2a instrução (Preencher com zeros)
122
+ # Tamanho: 40
123
+ def informacoes_do_pagamento(pagamento, sequencial)
124
+ dados = ''
125
+ dados << pagamento.data_vencimento_formatado('%d%m%y')
126
+ dados << pagamento.valor_documento_formatado(13)
127
+ dados << '104'
128
+ dados << ''.adjust_size_to(5,'0', :right)
129
+ dados << "#{conta.get_especie_titulo(pagamento.especie_titulo, 400)}".adjust_size_to(2, '0', :right)
130
+ dados << 'N'
131
+ dados << pagamento.data_emissao_formatado('%d%m%y')
132
+
133
+ dados << "#{conta.get_codigo_protesto(pagamento.codigo_protesto, 400)}".adjust_size_to(2, '0', :right) # 1a Instrução
134
+ dados << ''.adjust_size_to(2,'0', :right) # 2a Instrução
135
+ dados
136
+ end
137
+
138
+ # Informações referente aos juros e multas do pagamento
139
+ # Posição: 161 a 218
140
+ # POSIÇÂO TAM. Descrição
141
+ # 161 a 173 013 Valor a ser cobrado por Dia de Atraso
142
+ # 174 a 179 006 Data Limite P/Concessão de Desconto
143
+ # 180 a 192 013 Valor do Desconto
144
+ # 193 a 205 013 Valor do IOF
145
+ # 206 a 218 013 Valor do Abatimento a ser concedido ou cancelado
146
+ # Tamanho: 58
147
+ def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
148
+ detalhe = ''
149
+ detalhe << "#{pagamento.valor_mora_formatado}".adjust_size_to(13,'0', :right )
150
+ detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
151
+ detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
152
+ detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
153
+ detalhe << "#{pagamento.valor_abatimento_formatado}".adjust_size_to(13,'0', :right )
154
+ detalhe
155
+ end
156
+
157
+ # Informações referente aos dados do sacado/pagador
158
+ # Posição: 219 a 394
159
+ # POSIÇÂO TAM. Descrição
160
+ # 219 a 220 002 Identificação do Tipo de Inscrição do Pagador
161
+ # 221 a 234 014 No Inscrição do Pagador
162
+ # 235 a 274 040 Nome do Pagador
163
+ # 275 a 314 040 Endereço Paagador
164
+ # 315 a 326 012 Bairro do Pagador
165
+ # 327 a 334 008 CEP
166
+ # 335 a 349 015 Cidade do Pagador
167
+ # 350 a 351 002 UF do Pagador
168
+ # 352 a 357 006 Data da Multa
169
+ # 358 a 367 010 Valor da Multa
170
+ # 368 a 389 022 Nome Sacador/Avalista
171
+ # 390 a 391 002 3a instrução (Preencher com '00' = Não imprime mensagem no verso do boleto)
172
+ # 392 a 393 002 Número de dias para início do protesto/devolução
173
+ # 394 a 394 001 Código da Moeda
174
+ # Tamanho: 176
175
+ def informacoes_do_sacado(pagamento, sequencial)
176
+ info = ''
177
+ # Tipo de Inscrição do Pagador: "01" = CPF , "02" = CNPJ , "03" = PIS/PASEP , "98" = Não tem , "99" = Outros
178
+ info << "#{pagamento.pagador.tipo_cpf_cnpj}".adjust_size_to(2, '0', :right)
179
+ info << "#{pagamento.pagador.cpf_cnpj}".adjust_size_to(14, '0', :right)
180
+ info << "#{pagamento.pagador.nome}".adjust_size_to(40)
181
+ info << "#{pagamento.pagador.endereco}".adjust_size_to(40)
182
+ info << "#{pagamento.pagador.bairro}".adjust_size_to(12)
183
+ info << "#{pagamento.pagador.cep}".adjust_size_to(8, '0', :right)
184
+ info << "#{pagamento.pagador.cidade}".adjust_size_to(15)
185
+ info << "#{pagamento.pagador.uf}".adjust_size_to(2)
186
+ info << "#{pagamento.data_multa_formatado}".adjust_size_to(6, '0', :right) # Data da Multa
187
+ info << "#{pagamento.valor_multa_formatado(10)}".adjust_size_to(10, '0', :right) # Valor da Multa
188
+ info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(22) # Sacador/Avalista (Nome)
189
+ info << "00" # 3a instrução
190
+ info << "#{pagamento.dias_protesto}".adjust_size_to(2, '0', :right) # Número de dias protesto/devolução
191
+ info << "#{conta.get_codigo_moeda(pagamento.codigo_moeda, 400)}".adjust_size_to(1, '1', :right) # Código da Moeda
192
+ info
193
+ end
194
+ end
195
+ end
196
+ end
197
+ end
@@ -46,12 +46,29 @@ module BrBoleto
46
46
  "#{conta.codigo_transmissao}".adjust_size_to(20, '0', :right)
47
47
  end
48
48
 
49
- # Nosso numero do pagamento e outras informações
50
- # Posição: 063 até 108
49
+ # Detalhe posição: 063 até 76
51
50
  # POSIÇÂO TAM. Descrição
52
51
  # -----------------------------------------------------
53
52
  # 063 a 070 008 Nosso Número
54
- # 071 a 076 006 Data do segundo desconto
53
+ # 071 a 076 006 Data do segundo desconto (Zeros)
54
+ #
55
+ # Tamanho: 14
56
+ def detalhe_posicao_063_076(pagamento, sequencial)
57
+ detalhe = ''
58
+ detalhe << "#{nosso_numero_formatado(pagamento)}".adjust_size_to(8, '0', :right)
59
+ detalhe << ''.adjust_size_to(6, '0', :right)
60
+ detalhe
61
+ end
62
+ def nosso_numero_formatado(pagamento)
63
+ # Por padrão o nosso número possui 13 dígitos, mas nesse caso para a remessa
64
+ # serão utilizados apenas 8 dígitos.
65
+ nosso_numero = "#{pagamento.nosso_numero}".adjust_size_to(13, '0', :right)
66
+ nosso_numero[5..12]
67
+ end
68
+
69
+ # Detalhe posição: 77 até 108
70
+ # POSIÇÂO TAM. Descrição
71
+ # -----------------------------------------------------
55
72
  # 077 a 077 001 Branco
56
73
  # 078 a 078 001 Informação de multa
57
74
  # 079 a 082 004 Percentual multa por atraso %
@@ -61,34 +78,22 @@ module BrBoleto
61
78
  # 102 a 107 006 Data para cobrança de multa
62
79
  # 108 a 108 001 Cod. Carteira
63
80
  #
64
- # Tamanho: 46
65
- def detalhe_posicao_063_076(pagamento, sequencial)
66
- detalhe_posicao_063_108(pagamento)
67
- end
81
+ # Tamanho: 32
68
82
  def detalhe_posicao_077_108(pagamento, sequencial)
69
- ''
70
- end
71
- def detalhe_posicao_063_108(pagamento)
72
- info = ''
73
- info << "#{nosso_numero_formatado(pagamento)}".adjust_size_to(8, '0', :right)
74
- info << ''.adjust_size_to(6, '0', :right)
75
- info << ''.adjust_size_to(1)
76
- info << "#{conta.get_codigo_multa(pagamento.codigo_multa)}".adjust_size_to(1, '0', :right)
77
- info << "#{pagamento.valor_multa_formatado(4)}".adjust_size_to(4, '0', :right)
78
- info << '00'
79
- info << ''.adjust_size_to(13, '0', :right)
80
- info << ''.adjust_size_to(4)
81
- info << "#{pagamento.data_multa_formatado}".adjust_size_to(6, '0', :right)
82
- info << "#{conta.get_tipo_cobranca(conta.codigo_carteira, 400)}".adjust_size_to(1, '1')
83
- info
84
- end
85
- def nosso_numero_formatado(pagamento)
86
- nosso_numero = "#{pagamento.nosso_numero}".adjust_size_to(13, '0', :right)
87
- #nosso_numero.reverse.adjust_size_to(8, '0', :right).reverse
88
- nosso_numero[5..12]
83
+ detalhe = ''
84
+ detalhe << ' '
85
+ detalhe << "#{conta.get_codigo_multa(pagamento.codigo_multa)}".adjust_size_to(1, '0', :right)
86
+ detalhe << "#{pagamento.valor_multa_formatado(4)}".adjust_size_to(4, '0', :right)
87
+ detalhe << '00'
88
+ detalhe << ''.adjust_size_to(13, '0', :right)
89
+ detalhe << ''.adjust_size_to(4)
90
+ detalhe << "#{pagamento.data_multa_formatado}".adjust_size_to(6, '0', :right)
91
+ detalhe << "#{conta.get_tipo_cobranca(conta.codigo_carteira, 400)}".adjust_size_to(1, '1')
92
+ detalhe
89
93
  end
90
94
 
91
95
 
96
+
92
97
  # Informações referente ao pagamento
93
98
  # Posição 121 até 160
94
99
  # POSIÇÂO TAM. Descrição