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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/Gemfile.lock +1 -1
- data/README.markdown +157 -8
- data/br_boleto.gemspec +1 -1
- data/lib/br_boleto.rb +12 -1
- data/lib/br_boleto/association/have_conta.rb +31 -27
- data/lib/br_boleto/boleto/banco_brasil.rb +130 -0
- data/lib/br_boleto/boleto/santander.rb +77 -0
- data/lib/br_boleto/conta/banco_brasil.rb +156 -0
- data/lib/br_boleto/conta/itau.rb +8 -3
- data/lib/br_boleto/conta/santander.rb +208 -0
- data/lib/br_boleto/remessa/cnab240/banco_brasil.rb +132 -0
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +1 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +0 -6
- data/lib/br_boleto/remessa/cnab240/santander.rb +266 -0
- data/lib/br_boleto/remessa/cnab400/banco_brasil.rb +264 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +1 -1
- data/lib/br_boleto/remessa/cnab400/santander.rb +215 -0
- data/lib/br_boleto/retorno/cnab240/banco_brasil.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/base.rb +3 -2
- data/lib/br_boleto/retorno/cnab240/caixa.rb +3 -2
- data/lib/br_boleto/retorno/cnab240/itau.rb +1 -2
- data/lib/br_boleto/retorno/cnab240/santander.rb +38 -0
- data/lib/br_boleto/retorno/cnab240/sicoob.rb +3 -2
- data/lib/br_boleto/retorno/cnab400/banco_brasil.rb +46 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +4 -3
- data/lib/br_boleto/retorno/cnab400/itau.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/santander.rb +44 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +3 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +20 -6
- data/lib/br_boleto/retorno/pagamento.rb +28 -7
- data/lib/br_boleto/version.rb +1 -1
- data/test/br_boleto/boleto/banco_brasil_test.rb +183 -0
- data/test/br_boleto/boleto/santander_test.rb +122 -0
- data/test/br_boleto/conta/banco_brasil_test.rb +209 -0
- data/test/br_boleto/conta/santantader_test.rb +222 -0
- data/test/br_boleto/remessa/cnab240/banco_brasil_test.rb +187 -0
- data/test/br_boleto/remessa/cnab240/itau_test.rb +4 -0
- data/test/br_boleto/remessa/cnab240/santander_test.rb +144 -0
- data/test/br_boleto/remessa/cnab400/banco_brasil_test.rb +285 -0
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +7 -0
- data/test/br_boleto/remessa/cnab400/santander_test.rb +174 -0
- data/test/br_boleto/retorno/cnab240/banco_brasil_test.rb +271 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +10 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +55 -138
- data/test/br_boleto/retorno/cnab240/itau_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/santander_test.rb +282 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +25 -15
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +15 -15
- data/test/br_boleto/retorno/cnab400/banco_brasil_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +24 -12
- data/test/br_boleto/retorno/cnab400/itau_test.rb +6 -4
- data/test/br_boleto/retorno/cnab400/santander_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +97 -1
- data/test/br_boleto/retorno/cnab400/unicred.rb +18 -18
- data/test/br_boleto/retorno/pagamento_test.rb +2 -2
- data/test/factories/boleto/boleto_banco_brasil.rb +18 -0
- data/test/factories/boleto/boleto_santander.rb +18 -0
- data/test/factories/conta/banco_brasil.rb +16 -0
- data/test/factories/conta/santander.rb +15 -0
- data/test/factories/remessa/cnab240/banco_brasil.rb +9 -0
- data/test/factories/remessa/cnab240/santander.rb +9 -0
- data/test/factories/remessa/cnab400/banco_brasil.rb +8 -0
- data/test/factories/remessa/cnab400/santander.rb +8 -0
- data/test/fixtures/retorno/cnab240/banco_brasil.ret +74 -0
- data/test/fixtures/retorno/cnab240/cecred.ret +10 -0
- data/test/fixtures/retorno/cnab240/santander.ret +16 -0
- data/test/fixtures/retorno/cnab400/sicredi.ret +4 -0
- 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
|
@@ -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
|
-
|
57
|
+
numero_conta_sem_dv: 24..35,
|
58
58
|
numero_conta_dv: 36,
|
59
59
|
dv_conta_e_agencia: 37..37,
|
60
|
-
|
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
|
-
|
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
|
-
|
28
|
+
nosso_numero_sem_dv: 38..46,
|
29
|
+
nosso_numero_dv: 47,
|
29
30
|
modalidade: 50..51,
|
30
|
-
numero_documento: 59..
|
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:
|
14
|
-
|
13
|
+
# agencia_com_dv: 25..29,
|
14
|
+
numero_conta_sem_dv: 30..35,
|
15
15
|
numero_conta_dv: 36,
|
16
|
-
|
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
|
-
|
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
|
-
|
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
|