br_boleto 2.1.0 → 2.2.0

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.markdown +157 -8
  5. data/br_boleto.gemspec +1 -1
  6. data/lib/br_boleto.rb +12 -1
  7. data/lib/br_boleto/association/have_conta.rb +31 -27
  8. data/lib/br_boleto/boleto/banco_brasil.rb +130 -0
  9. data/lib/br_boleto/boleto/santander.rb +77 -0
  10. data/lib/br_boleto/conta/banco_brasil.rb +156 -0
  11. data/lib/br_boleto/conta/itau.rb +8 -3
  12. data/lib/br_boleto/conta/santander.rb +208 -0
  13. data/lib/br_boleto/remessa/cnab240/banco_brasil.rb +132 -0
  14. data/lib/br_boleto/remessa/cnab240/bradesco.rb +1 -3
  15. data/lib/br_boleto/remessa/cnab240/itau.rb +0 -6
  16. data/lib/br_boleto/remessa/cnab240/santander.rb +266 -0
  17. data/lib/br_boleto/remessa/cnab400/banco_brasil.rb +264 -0
  18. data/lib/br_boleto/remessa/cnab400/bradesco.rb +1 -1
  19. data/lib/br_boleto/remessa/cnab400/santander.rb +215 -0
  20. data/lib/br_boleto/retorno/cnab240/banco_brasil.rb +10 -0
  21. data/lib/br_boleto/retorno/cnab240/base.rb +3 -2
  22. data/lib/br_boleto/retorno/cnab240/caixa.rb +3 -2
  23. data/lib/br_boleto/retorno/cnab240/itau.rb +1 -2
  24. data/lib/br_boleto/retorno/cnab240/santander.rb +38 -0
  25. data/lib/br_boleto/retorno/cnab240/sicoob.rb +3 -2
  26. data/lib/br_boleto/retorno/cnab400/banco_brasil.rb +46 -0
  27. data/lib/br_boleto/retorno/cnab400/bradesco.rb +4 -3
  28. data/lib/br_boleto/retorno/cnab400/itau.rb +2 -2
  29. data/lib/br_boleto/retorno/cnab400/santander.rb +44 -0
  30. data/lib/br_boleto/retorno/cnab400/sicoob.rb +3 -2
  31. data/lib/br_boleto/retorno/cnab400/sicredi.rb +20 -6
  32. data/lib/br_boleto/retorno/pagamento.rb +28 -7
  33. data/lib/br_boleto/version.rb +1 -1
  34. data/test/br_boleto/boleto/banco_brasil_test.rb +183 -0
  35. data/test/br_boleto/boleto/santander_test.rb +122 -0
  36. data/test/br_boleto/conta/banco_brasil_test.rb +209 -0
  37. data/test/br_boleto/conta/santantader_test.rb +222 -0
  38. data/test/br_boleto/remessa/cnab240/banco_brasil_test.rb +187 -0
  39. data/test/br_boleto/remessa/cnab240/itau_test.rb +4 -0
  40. data/test/br_boleto/remessa/cnab240/santander_test.rb +144 -0
  41. data/test/br_boleto/remessa/cnab400/banco_brasil_test.rb +285 -0
  42. data/test/br_boleto/remessa/cnab400/bradesco_test.rb +7 -0
  43. data/test/br_boleto/remessa/cnab400/santander_test.rb +174 -0
  44. data/test/br_boleto/retorno/cnab240/banco_brasil_test.rb +271 -0
  45. data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
  46. data/test/br_boleto/retorno/cnab240/bradesco_test.rb +15 -15
  47. data/test/br_boleto/retorno/cnab240/caixa_test.rb +10 -10
  48. data/test/br_boleto/retorno/cnab240/cecred_test.rb +55 -138
  49. data/test/br_boleto/retorno/cnab240/itau_test.rb +15 -15
  50. data/test/br_boleto/retorno/cnab240/santander_test.rb +282 -0
  51. data/test/br_boleto/retorno/cnab240/sicoob_test.rb +25 -15
  52. data/test/br_boleto/retorno/cnab240/sicredi_test.rb +15 -15
  53. data/test/br_boleto/retorno/cnab240/unicred_test.rb +15 -15
  54. data/test/br_boleto/retorno/cnab400/banco_brasil_test.rb +7 -0
  55. data/test/br_boleto/retorno/cnab400/bradesco_test.rb +24 -12
  56. data/test/br_boleto/retorno/cnab400/itau_test.rb +6 -4
  57. data/test/br_boleto/retorno/cnab400/santander_test.rb +7 -0
  58. data/test/br_boleto/retorno/cnab400/sicoob_test.rb +20 -10
  59. data/test/br_boleto/retorno/cnab400/sicredi_test.rb +97 -1
  60. data/test/br_boleto/retorno/cnab400/unicred.rb +18 -18
  61. data/test/br_boleto/retorno/pagamento_test.rb +2 -2
  62. data/test/factories/boleto/boleto_banco_brasil.rb +18 -0
  63. data/test/factories/boleto/boleto_santander.rb +18 -0
  64. data/test/factories/conta/banco_brasil.rb +16 -0
  65. data/test/factories/conta/santander.rb +15 -0
  66. data/test/factories/remessa/cnab240/banco_brasil.rb +9 -0
  67. data/test/factories/remessa/cnab240/santander.rb +9 -0
  68. data/test/factories/remessa/cnab400/banco_brasil.rb +8 -0
  69. data/test/factories/remessa/cnab400/santander.rb +8 -0
  70. data/test/fixtures/retorno/cnab240/banco_brasil.ret +74 -0
  71. data/test/fixtures/retorno/cnab240/cecred.ret +10 -0
  72. data/test/fixtures/retorno/cnab240/santander.ret +16 -0
  73. data/test/fixtures/retorno/cnab400/sicredi.ret +4 -0
  74. metadata +64 -7
@@ -40,7 +40,7 @@ module BrBoleto
40
40
  # Informações Opcionais no Bradesco.
41
41
  # Somente deverão ser preenchidos, caso o cliente Beneficiário esteja previamente
42
42
  # cadastrado para operar com a modalidade de cobrança com débito automático
43
- def detalhe_posicao_002_003
43
+ def detalhe_posicao_002_003(pagamento)
44
44
  ''.adjust_size_to(2)
45
45
  end
46
46
  def detalhe_posicao_004_017
@@ -0,0 +1,215 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Remessa
4
+ module Cnab400
5
+ class Santander < BrBoleto::Remessa::Cnab400::Base
6
+ def conta_class
7
+ BrBoleto::Conta::Santander
8
+ end
9
+
10
+ ########## VALIDAÇÕES ESPECÍFICAS DESTE OBJETO PARA A CONTA ############
11
+ def valid_codigo_transmissao_required; true end # <= Código de Transmissão é obrigatória
12
+
13
+
14
+ ############################## HEADER ######################################
15
+
16
+ # Código da remessa
17
+ # Tipo: Numérico
18
+ # Tamanho: 001
19
+ def header_posicao_002_a_002
20
+ '1'
21
+ end
22
+
23
+ # Complemento do registro
24
+ # POSIÇÂO TAM. Descrição
25
+ #--------------------------------
26
+ # 101 a 116 016 Zeros
27
+ # 117 a 391 274 Brancos
28
+ # 392 a 394 003 Zeros
29
+ #
30
+ # Tamanho: 294
31
+ def complemento_registro
32
+ complemento = ''
33
+ complemento << ''.adjust_size_to(16, '0', :right)
34
+ complemento << ''.adjust_size_to(275)
35
+ complemento << ''.adjust_size_to(3, '0', :right)
36
+ complemento
37
+ end
38
+
39
+ ############################# DETALHE #################################
40
+
41
+ # Informações da conta <- Específico para cada banco
42
+ # Posição: 018 até 037 (Detalhe) = Código de Transmissão
43
+ # Posição: 027 até 046 (Header) = Código de Transmissão
44
+ # Tamanho: 020
45
+ def informacoes_da_conta(local)
46
+ "#{conta.codigo_transmissao}".adjust_size_to(20, '0', :right)
47
+ end
48
+
49
+ # Nosso numero do pagamento e outras informações
50
+ # Posição: 063 até 108
51
+ # POSIÇÂO TAM. Descrição
52
+ # -----------------------------------------------------
53
+ # 063 a 070 008 Nosso Número
54
+ # 071 a 076 006 Data do segundo desconto
55
+ # 077 a 077 001 Branco
56
+ # 078 a 078 001 Informação de multa
57
+ # 079 a 082 004 Percentual multa por atraso %
58
+ # 083 a 084 002 Unidade de valor moeda corrente (00)
59
+ # 085 a 097 013 Valor do título em outra unidade
60
+ # 098 a 101 004 Brancos
61
+ # 102 a 107 006 Data para cobrança de multa
62
+ # 108 a 108 001 Cod. Carteira
63
+ #
64
+ # Tamanho: 46
65
+ def detalhe_posicao_063_076(pagamento, sequencial)
66
+ detalhe_posicao_063_108(pagamento)
67
+ end
68
+ 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]
89
+ end
90
+
91
+
92
+ # Informações referente ao pagamento
93
+ # Posição 121 até 160
94
+ # POSIÇÂO TAM. Descrição
95
+ # 121 a 126 006 Data do Vencimento do Título
96
+ # 127 a 139 013 Valor do Título
97
+ # 140 a 142 003 Banco Encarregado da Cobrança
98
+ # 143 a 147 005 Agência Depositária (preencher com zeros)
99
+ # 148 a 149 002 Espécie de Título
100
+ # 150 a 150 001 Identificação (Sempre 'N')
101
+ # 151 a 156 006 Data da emissão do Título
102
+ # 157 a 158 002 1a instrução
103
+ # 159 a 160 002 2a instrução
104
+ # Tamanho: 40
105
+ def informacoes_do_pagamento(pagamento, sequencial)
106
+ dados = ''
107
+ dados << pagamento.data_vencimento_formatado('%d%m%y')
108
+ dados << pagamento.valor_documento_formatado(13)
109
+ dados << "#{conta.codigo_banco}".adjust_size_to(3,'0', :right)
110
+ dados << ''.adjust_size_to(5,'0', :right)
111
+ dados << "#{conta.get_especie_titulo(pagamento.especie_titulo, 400)}".adjust_size_to(2, '0', :right)
112
+ dados << 'N'
113
+ dados << pagamento.data_emissao_formatado('%d%m%y')
114
+
115
+ # 1a / 2a Instrução, conforme documentação (pag. 20, Nota 11):
116
+ dados << ''.adjust_size_to(2,'0', :right) # 1a Instrução
117
+ dados << ''.adjust_size_to(2,'0', :right) # 2a Instrução
118
+ dados
119
+
120
+ end
121
+
122
+ # Informações referente aos juros e multas do pagamento
123
+ # Posição: 161 a 218
124
+ # POSIÇÂO TAM. Descrição
125
+ # 161 a 173 013 Valor a ser cobrado por Dia de Atraso
126
+ # 174 a 179 006 Data Limite P/Concessão de Desconto
127
+ # 180 a 192 013 Valor do Desconto
128
+ # 193 a 205 013 Valor do IOF
129
+ # 206 a 218 013 Valor do Abatimento a ser concedido ou cancelado
130
+ # Tamanho: 58
131
+ def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
132
+ detalhe = ''
133
+ detalhe << "#{pagamento.valor_mora_formatado}".adjust_size_to(13,'0', :right )
134
+ detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
135
+ detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
136
+ detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
137
+ detalhe << "#{pagamento.valor_abatimento_formatado}".adjust_size_to(13,'0', :right )
138
+ detalhe
139
+ end
140
+
141
+ # Informações referente aos dados do sacado/pagador
142
+ # Posição: 219 a 394
143
+ # POSIÇÂO TAM. Descrição
144
+ # 219 a 220 002 Identificação do Tipo de Inscrição do Pagador
145
+ # 221 a 234 014 No Inscrição do Pagador
146
+ # 235 a 274 040 Nome do Pagador
147
+ # 275 a 314 040 Endereço Pagador
148
+ # 315 a 326 012 Bairro Pagador
149
+ # 327 a 331 005 CEP
150
+ # 332 a 334 003 Sufixo do CEP
151
+ # 335 a 349 015 Cidade Pagador
152
+ # 350 a 351 002 UF Pagador
153
+ # 352 a 381 030 Nome Sacador/Avalista
154
+ # 382 a 382 001 Complemento Registro (Brancos)
155
+
156
+ # 383 a 383 001 Identificador do Complemento (I)
157
+ # 384 a 385 002 Complemento
158
+ # 386 a 391 006 Brancos
159
+ # 392 a 393 002 Quantidade de dias
160
+ # 394 a 394 001 Complemento Registro (Branco)
161
+
162
+
163
+ # Tamanho: 176
164
+ def informacoes_do_sacado(pagamento, sequencial)
165
+ info = ''
166
+ # Tipo de Inscrição do Pagador: "01" = CPF , "02" = CNPJ , "03" = PIS/PASEP , "98" = Não tem , "99" = Outros
167
+ info << "#{pagamento.pagador.tipo_cpf_cnpj}".adjust_size_to(2, '0', :right)
168
+ info << "#{pagamento.pagador.cpf_cnpj}".adjust_size_to(14, '0', :right)
169
+ info << "#{pagamento.pagador.nome}".adjust_size_to(40)
170
+ info << "#{pagamento.pagador.endereco}".adjust_size_to(40)
171
+ info << "#{pagamento.pagador.bairro}".adjust_size_to(12)
172
+ info << "#{pagamento.pagador.cep}".adjust_size_to(8, '0', :right) # CEP + Sufixo do CEP
173
+ info << "#{pagamento.pagador.cidade}".adjust_size_to(15)
174
+ info << "#{pagamento.pagador.uf}".adjust_size_to(2)
175
+ info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(30) # Sacador/Avalista (Nome)
176
+ info << ''.adjust_size_to(1) # Complemento Registro (Brancos)
177
+ info << 'I' # Identificador do Complemento (I)
178
+
179
+ info << complemento_remessa
180
+ info << ''.adjust_size_to(6) # Brancos
181
+ info << '00' # Quantidade de dias
182
+ info << ''.adjust_size_to(1) # Complemento Registro (Brancos)
183
+ info
184
+ end
185
+
186
+ # Ultimo digito da conta corrente + digito da conta corrente
187
+ def complemento_remessa
188
+ "#{conta.conta_corrente[-1]}#{conta.conta_corrente_dv}"
189
+ end
190
+
191
+ ############################# TRAILER #################################
192
+ #
193
+ # Posição: 002 a 394
194
+ # POSIÇÂO TAM. Descrição
195
+ # 002 a 007 006 Quantidade total de linhas no arquivo
196
+ # 008 a 020 013 Valor total dos títulos
197
+ # 021 a 394 374 Zeros
198
+ #
199
+ # Tamanho: 393
200
+ def trailer_arquivo_posicao_002_a_394(sequencial)
201
+ trailer = ''
202
+ trailer << "#{sequencial}".adjust_size_to(6, '0', :right)
203
+ trailer << "#{valor_documento(13)}".adjust_size_to(13, '0', :right)
204
+ trailer << ''.adjust_size_to(374, '0')
205
+ trailer
206
+ end
207
+ def valor_documento(tamanho)
208
+ valor_doc = pagamentos.map(&:valor_documento).sum
209
+ BrBoleto::Helper::Number.new(valor_doc).formata_valor_monetario(tamanho)
210
+ end
211
+
212
+ end
213
+ end
214
+ end
215
+ end
@@ -0,0 +1,10 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab240
5
+ class BancoBrasil < BrBoleto::Retorno::Cnab240::Base
6
+ # O Banco do Brasil segue o padrão da FEBRABAN.
7
+ end
8
+ end
9
+ end
10
+ end
@@ -54,10 +54,11 @@ module BrBoleto
54
54
  codigo_movimento_retorno: 16..17,
55
55
  agencia_com_dv: 18..23,
56
56
  agencia_sem_dv: 18..22,
57
- numero_conta: 24..35,
57
+ numero_conta_sem_dv: 24..35,
58
58
  numero_conta_dv: 36,
59
59
  dv_conta_e_agencia: 37..37,
60
- nosso_numero: 38..57,
60
+ nosso_numero_sem_dv: 38..56,
61
+ nosso_numero_dv: 57,
61
62
  carteira: 58..58,
62
63
  numero_documento: 59..73,
63
64
  data_vencimento: 74..81,
@@ -15,11 +15,12 @@ module BrBoleto
15
15
  def segmento_t_fields #:doc:
16
16
  super.merge({
17
17
  # ATRIBUTO POSIÇÃO DA LINHA
18
+ numero_conta_sem_dv: 24..29, # Código do cedente
18
19
  numero_conta_dv: '',
19
- numero_conta: 24..29, # Código do cedente
20
20
  dv_conta_e_agencia: 250, # Defino como 250 para setar nil ao atributo
21
21
  modalidade: 40..41,
22
- nosso_numero: 42..56,
22
+ nosso_numero_sem_dv: 40..56,
23
+ nosso_numero_dv: 57,
23
24
  numero_documento: 59..69,
24
25
  })
25
26
  end
@@ -4,14 +4,13 @@ module BrBoleto
4
4
  module Cnab240
5
5
  class Itau < BrBoleto::Retorno::Cnab240::Base
6
6
 
7
-
8
7
  def segmento_t_fields #:doc:
9
8
  super.merge({
10
9
  # ATRIBUTO POSIÇÃO DA LINHA
11
10
  #agencia_com_dv: 19..23, # ITAU não utiliza o DV da agencia
12
11
  agencia_sem_dv: 19..22,
12
+ numero_conta_sem_dv: 31..35,
13
13
  numero_conta_dv: 37,
14
- numero_conta: 31..35,
15
14
  dv_conta_e_agencia: 36,
16
15
  carteira: 38..40,
17
16
  numero_documento: 41..48,
@@ -0,0 +1,38 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab240
5
+ class Santander < BrBoleto::Retorno::Cnab240::Base
6
+
7
+ def segmento_t_fields #:doc:
8
+ super.merge({
9
+ # ATRIBUTO POSIÇÃO DA LINHA
10
+ agencia_com_dv: 18..22,
11
+ agencia_sem_dv: 18..21,
12
+ numero_conta_sem_dv: 23..31,
13
+ numero_conta_dv: 32,
14
+ nosso_numero_sem_dv: 41..52,
15
+ nosso_numero_dv: 53,
16
+ carteira: 54..54,
17
+ tipo_cobranca: 54..54,
18
+ numero_documento: 55..69,
19
+ data_vencimento: 70..77,
20
+ valor_titulo: 78..92,
21
+ banco_recebedor: 93..95,
22
+ agencia_recebedora_com_dv: 96..100,
23
+ identificacao_titulo_empresa: 101..125,
24
+ codigo_moeda: 126..127,
25
+ sacado_tipo_documento: 128..128,
26
+ sacado_documento: 129..143,
27
+ sacado_nome: 144..183,
28
+ valor_tarifa: 194..208,
29
+ motivo_ocorrencia: 209..218
30
+
31
+ # conta_cobranca: 184..193
32
+ # numero_contrato: 189..198,
33
+ })
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -25,9 +25,10 @@ module BrBoleto
25
25
  def segmento_t_fields #:doc:
26
26
  super.merge({
27
27
  # ATRIBUTO POSIÇÃO DA LINHA
28
- nosso_numero: 38..47,
28
+ nosso_numero_sem_dv: 38..46,
29
+ nosso_numero_dv: 47,
29
30
  modalidade: 50..51,
30
- numero_documento: 59..72, # Número do documento sem DV
31
+ numero_documento: 59..73,
31
32
  })
32
33
  end
33
34
  end
@@ -0,0 +1,46 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab400
5
+ class BancoBrasil < BrBoleto::Retorno::Cnab400::Base
6
+ private
7
+ def detalhe_fields #:doc:
8
+ { # ATRIBUTO POSIÇÃO DA LINHA
9
+
10
+ agencia_sem_dv: 18..21,
11
+ agencia_com_dv: 18..22,
12
+ numero_conta_sem_dv: 23..30,
13
+ numero_conta_dv: 31,
14
+ #convenio: 32..38,
15
+ #numero_controle: 39..63,
16
+ nosso_numero_sem_dv: 64..79,
17
+ nosso_numero_dv: 80,
18
+ tipo_cobranca: 81..81,
19
+ variacao_carteira: 92..94,
20
+ carteira: 107..108,
21
+ data_ocorrencia: 111..116,
22
+ data_ocorrencia_sacado: 111..116,
23
+ numero_documento: 117..126,
24
+ data_vencimento: 147..152,
25
+ valor_titulo: 153..165,
26
+ banco_recebedor: 166..168,
27
+ agencia_recebedora_com_dv: 169..173,
28
+ especie_titulo: 174..175,
29
+ data_credito: 176..181,
30
+ valor_tarifa: 182..188,
31
+ valor_outras_despesas: 189..201,
32
+ valor_iof: 215..227,
33
+ valor_abatimento: 228..240,
34
+ valor_desconto: 241..253,
35
+ valor_pago: 254..266,
36
+ valor_ocorrencia_sacado: 254..266,
37
+ valor_liquido: 254..266,
38
+ valor_juros_multa: 267..279,
39
+ valor_outros_creditos: 280..292,
40
+ # sacado_documento: xxx..xxx,
41
+ }
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -10,10 +10,11 @@ module BrBoleto
10
10
  sacado_documento: 4..17,
11
11
  carteira: 23..24,
12
12
  agencia_sem_dv: 25..29,
13
- # agencia_com_dv: 25..29,
14
- numero_conta: 30..35,
13
+ # agencia_com_dv: 25..29,
14
+ numero_conta_sem_dv: 30..35,
15
15
  numero_conta_dv: 36,
16
- nosso_numero: 71..82,
16
+ nosso_numero_sem_dv: 71..81,
17
+ nosso_numero_dv: 82,
17
18
  data_ocorrencia: 111..116,
18
19
  data_ocorrencia_sacado: 111..116,
19
20
  numero_documento: 117..126,
@@ -9,11 +9,11 @@ module BrBoleto
9
9
 
10
10
  sacado_documento: 4..17,
11
11
  agencia_sem_dv: 18..21,
12
- numero_conta: 24..28,
12
+ numero_conta_sem_dv: 24..28,
13
13
  numero_conta_dv: 29,
14
14
  numero_documento: 53..70,
15
15
  carteira: 83..85,
16
- nosso_numero: 86..93,
16
+ nosso_numero_sem_dv: 86..93,
17
17
  nosso_numero_dv: 94,
18
18
  cod_carteira: 108,
19
19
  codigo_ocorrencia_banco_correspondente: 109..110,
@@ -0,0 +1,44 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab400
5
+ class Santander < BrBoleto::Retorno::Cnab400::Base
6
+ private
7
+ def detalhe_fields #:doc:
8
+ { # ATRIBUTO POSIÇÃO DA LINHA
9
+
10
+ sacado_documento: 4..17,
11
+ agencia_sem_dv: 18..21,
12
+ numero_conta_sem_dv: 22..29,
13
+ # numero_conta_sem_dv: 30..37, # Conta Cobrança
14
+ nosso_numero_sem_dv: 63..69,
15
+ nosso_numero_dv: 70,
16
+ cod_carteira: 108,
17
+ codigo_ocorrencia_banco_correspondente: 109..110,
18
+ data_ocorrencia: 111..116,
19
+ data_ocorrencia_sacado: 111..116,
20
+ numero_documento: 117..126,
21
+ # nosso_numero_sem_dv: 127..134, # O nosso_numero esta presente em 2 posições diferentes na documentação
22
+ data_vencimento: 147..152,
23
+ valor_titulo: 153..165,
24
+ banco_recebedor: 166..168,
25
+ agencia_recebedora_com_dv: 169..173,
26
+ especie_titulo: 174..175,
27
+ valor_tarifa: 176..188,
28
+ valor_outras_despesas: 189..201,
29
+ valor_iof: 215..227,
30
+ valor_abatimento: 228..240,
31
+ valor_desconto: 241..253,
32
+ valor_pago: 254..266,
33
+ valor_ocorrencia_sacado: 254..266,
34
+ valor_liquido: 254..266,
35
+ valor_juros_multa: 267..279,
36
+ valor_outros_creditos: 280..292,
37
+ data_credito: 296..301,
38
+ sacado_nome: 302..337,
39
+ }
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end