br_boleto 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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