formatos-febraban 0.3.53 → 0.3.54
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/base/position.rb +2 -2
- data/lib/formatos/cnab400/cnab_400.rb +78 -24
- data/lib/formatos/cnab400/cnab_400_detalhe.rb +520 -137
- data/lib/formatos/cnab400/cnab_400_header.rb +135 -25
- data/lib/formatos/cnab400/cnab_400_trailler.rb +207 -33
- data/lib/formatos/febraban/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26483895d20cb7b5698292c7864e599131ed6401
|
4
|
+
data.tar.gz: 190769f39ae1965365ab9b79f216306ae673f440
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad6d8158996b37e5654d97159f8f1aa8c2fe3c05a4685018ffa0dc3cf110e2ad80885d928fb3d4ec3c05fe5f57c632cba914c3c8ab31e6810057addb54b45f81
|
7
|
+
data.tar.gz: 4b480f6dcc6d8e6da56d9bce68084d61a12949179a759401383cc7af51eea7841f0f8d11824b949005ccfe47863380be87817f18f1809d9ace6d4595ab776d3a
|
data/base/position.rb
CHANGED
@@ -8,7 +8,7 @@ class Position
|
|
8
8
|
@position = position
|
9
9
|
@length = length
|
10
10
|
@numbers_only = numbers_only
|
11
|
-
@content = content
|
11
|
+
@content = adjust_content(content)
|
12
12
|
@immutable = immutable
|
13
13
|
@obligatory = obligatory
|
14
14
|
end
|
@@ -52,7 +52,7 @@ class Position
|
|
52
52
|
def set_content(content)
|
53
53
|
if not @immutable
|
54
54
|
if self.is_numbers_only? and !self.is_number(content)
|
55
|
-
raise "
|
55
|
+
raise "#{@position} aceita apenas valores numéricos
|
56
56
|
Valor: #{content}"
|
57
57
|
end
|
58
58
|
|
@@ -2,11 +2,11 @@
|
|
2
2
|
class Cnab400
|
3
3
|
require 'date'
|
4
4
|
|
5
|
-
SECTION_TYPES = {header: '
|
5
|
+
SECTION_TYPES = {header: '0', client: "1", trailler: '9'}
|
6
6
|
|
7
|
-
VERSAO = "
|
7
|
+
VERSAO = {remessa: "remessa", retorno: "retorno"}
|
8
8
|
|
9
|
-
# Carrega todas as
|
9
|
+
# Carrega todas as dependências de Layout
|
10
10
|
Dir[File.join(File.dirname(__FILE__), '../..', 'base', '**/*.rb')].sort.each do |file|
|
11
11
|
require file
|
12
12
|
end
|
@@ -19,11 +19,12 @@ class Cnab400
|
|
19
19
|
#-------------------------------------------------------------------
|
20
20
|
#-------------------------------------------------------------------
|
21
21
|
# Construtor
|
22
|
-
def initialize
|
22
|
+
def initialize(params = {})
|
23
23
|
@sections = []
|
24
|
+
@versao = params[:versao].present? ? VERSAO.key(params[:versao]) : :retorno
|
24
25
|
|
25
|
-
if file.size > 0
|
26
|
-
self.process_file file
|
26
|
+
if params[:file] && params[:file].size > 0
|
27
|
+
self.process_file params[:file]
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
@@ -32,13 +33,16 @@ class Cnab400
|
|
32
33
|
# Geral
|
33
34
|
protected
|
34
35
|
def add_section section
|
36
|
+
|
35
37
|
if section.is_valid?
|
36
38
|
self.sections << section
|
37
39
|
else
|
40
|
+
|
38
41
|
raise "Seção #{section.get_id} está inválida:
|
39
42
|
#{section.errors.inspect}
|
40
43
|
#{section.to_s}"
|
41
44
|
end
|
45
|
+
|
42
46
|
end
|
43
47
|
|
44
48
|
def add_section_from_business section
|
@@ -48,7 +52,8 @@ class Cnab400
|
|
48
52
|
|
49
53
|
#-------------------------------------------------------------------
|
50
54
|
#-------------------------------------------------------------------
|
51
|
-
#
|
55
|
+
# Criacao das Partes
|
56
|
+
|
52
57
|
public
|
53
58
|
|
54
59
|
def create_header(params = {})
|
@@ -56,19 +61,14 @@ class Cnab400
|
|
56
61
|
if self.get_header.nil?
|
57
62
|
section = self.get_new_section(:header)
|
58
63
|
|
59
|
-
section.
|
60
|
-
section.
|
61
|
-
section.
|
62
|
-
section.
|
63
|
-
section.
|
64
|
-
section.set_nome_empresa params[:nome_empresa]
|
65
|
-
section.set_numero_banco params[:numero_banco]
|
66
|
-
section.set_nome_banco params[:nome_banco]
|
67
|
-
section.set_data_gravacao Date.today
|
64
|
+
section.set_codigo_empresa params[:codigo]
|
65
|
+
section.set_nome_empresa params[:nome_empresa]
|
66
|
+
section.set_numero_banco params[:numero_banco]
|
67
|
+
section.set_nome_banco params[:nome_banco]
|
68
|
+
section.set_data_gravacao Date.today
|
68
69
|
section.set_reservado_1
|
69
|
-
section.
|
70
|
+
section.set_sequencial_remessa params[:sequencial]
|
70
71
|
section.set_reservado_2
|
71
|
-
section.set_sequencial
|
72
72
|
|
73
73
|
self.add_section_from_business section
|
74
74
|
|
@@ -77,12 +77,66 @@ class Cnab400
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
+
# Seção Client
|
81
|
+
def add_clients(params = {})
|
82
|
+
|
83
|
+
self.valida_existe_header
|
84
|
+
|
85
|
+
section = self.get_new_section(:client)
|
86
|
+
|
87
|
+
section.set_identificacao_empresa params[:identificacao_empresa]
|
88
|
+
section.set_nosso_numero params[:nosso_numero]
|
89
|
+
section.set_codigo_banco_debitado params[:codigo_banco_debitado]
|
90
|
+
section.set_reservado_1
|
91
|
+
section.set_indicador_rateio
|
92
|
+
section.set_enderecamento
|
93
|
+
section.set_reservado_2
|
94
|
+
section.set_numero_documento params[:numero_documento]
|
95
|
+
section.set_vencimento_titulo params[:vencimento]
|
96
|
+
section.set_valor_titulo params[:valor]
|
97
|
+
section.set_data_emissao_titulo Date.today
|
98
|
+
section.set_1_instrucao
|
99
|
+
section.set_2_instrucao
|
100
|
+
section.set_valor_por_atraso
|
101
|
+
section.set_id_inscricao_sacado params[:tipo_inscricao]
|
102
|
+
section.set_numero_inscricao_sacado params[:numero_inscricao]
|
103
|
+
section.set_nome_sacado params[:nome_sacado]
|
104
|
+
section.set_endereco params[:endereco]
|
105
|
+
section.set_1_mensagem
|
106
|
+
section.set_cep params[:cep]
|
107
|
+
section.set_2_mensagem
|
108
|
+
section.set_sequencial params[:sequencial]
|
109
|
+
|
110
|
+
self.add_section_from_business section
|
111
|
+
end
|
112
|
+
|
113
|
+
# Seção Trailler
|
114
|
+
def create_trailler
|
115
|
+
|
116
|
+
self.valida_existe_header
|
117
|
+
|
118
|
+
if self.get_trailler.nil?
|
119
|
+
if self.get_section(SECTION_TYPES[:client]).length > 0
|
120
|
+
section = self.get_new_section(:trailler)
|
121
|
+
|
122
|
+
section.set_reservado
|
123
|
+
section.set_sequencial self.sections.length + 1
|
124
|
+
|
125
|
+
self.sections << section
|
126
|
+
else
|
127
|
+
raise "Nenhum valor declarado!"
|
128
|
+
end
|
129
|
+
else
|
130
|
+
raise "Trailler já declarado!"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
80
134
|
#-------------------------------------------------------------------
|
81
135
|
#-------------------------------------------------------------------
|
82
136
|
# Validações
|
83
|
-
|
137
|
+
|
84
138
|
def valida_existe_header
|
85
|
-
raise "Header
|
139
|
+
raise "Header ainda não declarado" if self.get_header.nil?
|
86
140
|
end
|
87
141
|
|
88
142
|
public
|
@@ -121,7 +175,7 @@ class Cnab400
|
|
121
175
|
end
|
122
176
|
|
123
177
|
def to_s
|
124
|
-
self.sections.map{|a| a.to_s.
|
178
|
+
self.sections.map{|a| a.to_s}.join("\r\n")
|
125
179
|
end
|
126
180
|
|
127
181
|
def get_header
|
@@ -139,11 +193,11 @@ class Cnab400
|
|
139
193
|
def get_new_section section_type
|
140
194
|
case section_type
|
141
195
|
when :header
|
142
|
-
Cnab4000Header.new(self)
|
196
|
+
Cnab4000Header.new(self, @versao)
|
143
197
|
when :client
|
144
|
-
Cnab4000Detalhe.new(self)
|
198
|
+
Cnab4000Detalhe.new(self, @versao)
|
145
199
|
when :trailler
|
146
|
-
Cnab4000Trailler.new(self)
|
200
|
+
Cnab4000Trailler.new(self, @versao)
|
147
201
|
end
|
148
202
|
end
|
149
203
|
end
|
@@ -5,272 +5,655 @@
|
|
5
5
|
class Cnab4000Detalhe < FormatSection
|
6
6
|
require 'date'
|
7
7
|
|
8
|
-
def initialize
|
8
|
+
def initialize(master, tipo)
|
9
9
|
super(master, true, true, false)
|
10
10
|
|
11
|
+
|
12
|
+
@versao = tipo
|
13
|
+
|
14
|
+
case @versao
|
15
|
+
when :remessa
|
16
|
+
detalhe_remessa
|
17
|
+
when :retorno
|
18
|
+
detalhe_retorno
|
19
|
+
else
|
20
|
+
raise "Versão não suportada: #{tipo}"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def detalhe_remessa
|
11
26
|
@section = Section.new({
|
12
27
|
0 => Position.new(1, 1, false, "1", true), # Código do Registro
|
13
|
-
1 => Position.new(2, 5,
|
14
|
-
2 => Position.new(3,
|
15
|
-
3 => Position.new(4,
|
16
|
-
4 => Position.new(5,
|
17
|
-
5 => Position.new(6,
|
18
|
-
6 => Position.new(7,
|
19
|
-
7 => Position.new(8,
|
20
|
-
8 => Position.new(9,
|
21
|
-
9 => Position.new(10,
|
22
|
-
10 => Position.new(11, 4,
|
23
|
-
11 => Position.new(12,
|
24
|
-
12 => Position.new(13,
|
25
|
-
13 => Position.new(14,
|
26
|
-
14 => Position.new(15,
|
27
|
-
15 => Position.new(16,
|
28
|
-
16 => Position.new(17, 10, false),
|
29
|
-
17 => Position.new(18,
|
30
|
-
18 => Position.new(19,
|
31
|
-
19 => Position.new(20,
|
32
|
-
20 => Position.new(21, 2, false),
|
33
|
-
21 => Position.new(22,
|
34
|
-
22 => Position.new(23,
|
35
|
-
23 => Position.new(24,
|
36
|
-
24 => Position.new(25,
|
37
|
-
25 => Position.new(26,
|
38
|
-
26 => Position.new(27,
|
39
|
-
27 => Position.new(
|
28
|
+
1 => Position.new(2, 5, false), # Agencia de Débito (opcional)
|
29
|
+
2 => Position.new(3, 1, false), # Digito Agencia (opcional)
|
30
|
+
3 => Position.new(4, 5, false), # Razao da Conta Corrente (opcional)
|
31
|
+
4 => Position.new(5, 7, false), # Conta Corrente (opcional)
|
32
|
+
5 => Position.new(6, 1, false), # Digito da CC (opcional)
|
33
|
+
6 => Position.new(7, 17, false), # Identificação da empresa (zero, carteira, agencia e CC )
|
34
|
+
7 => Position.new(8, 25, false), # Numero controle do participante
|
35
|
+
8 => Position.new(9, 3, false), # Numero do Banco ("237")
|
36
|
+
9 => Position.new(10, 1, true), # Campo de multa (0: Sem Multa/ 2: Com multa)
|
37
|
+
10 => Position.new(11, 4, true), # Percentual de multa
|
38
|
+
11 => Position.new(12, 11, true), # Identificação do titulo no banco
|
39
|
+
12 => Position.new(13, 1, true), # Digito de AutoConferencia
|
40
|
+
13 => Position.new(14, 10, true), # Desconto Bonificacao por dia
|
41
|
+
14 => Position.new(15, 1, false, "2"), # Condicao para emissao da cobranca
|
42
|
+
15 => Position.new(16, 1, false), # Id se emite Boleto para Debito Automatico (Diferente de N registra e emite boleto)
|
43
|
+
16 => Position.new(17, 10, false), # Reservado - Brancos
|
44
|
+
17 => Position.new(18, 1, false), # Indicador Rateio (opcional)
|
45
|
+
18 => Position.new(19, 1, false), # Enderecamento para aviso de Debito em Cc (opcional)
|
46
|
+
19 => Position.new(20, 2, false), # Reservado - Brancos
|
47
|
+
20 => Position.new(21, 2, false, "01"), # Identificacao de ocorrencias
|
48
|
+
21 => Position.new(22, 10, false), # Numero do documento
|
49
|
+
22 => Position.new(23, 6, false), # Data vencimento do titulo (DDMMAA)
|
50
|
+
23 => Position.new(24, 13, true), # Valor do titulo
|
51
|
+
24 => Position.new(25, 3, true, "0"), # Banco cobrador - Zeros
|
52
|
+
25 => Position.new(26, 5, true, "0"), # Agencia depositaria - Zeros
|
53
|
+
26 => Position.new(27, 2, false, "99"), # Tipo do titulo
|
54
|
+
27 => Position.new(28, 1, false, "N"), # Identificação
|
55
|
+
28 => Position.new(29, 6, false), # Data emissao do titulo (DDMMAA)
|
56
|
+
29 => Position.new(30, 2, true), # 1º instrucao
|
57
|
+
30 => Position.new(31, 2, true), # 2º instrucao
|
58
|
+
31 => Position.new(32, 13, true, "0"), # Valor por dia de atraso
|
59
|
+
32 => Position.new(33, 6, false), # Data Limite para Concessao Desconto (DDMMAA)
|
60
|
+
33 => Position.new(34, 13, true, "0"), # Valor desconto
|
61
|
+
34 => Position.new(35, 13, true, "0"), # Valor IOF
|
62
|
+
35 => Position.new(36, 13, true, "0"), # Valor Abatimento
|
63
|
+
36 => Position.new(37, 2, false), # Tipo de inscrição (1:CPF, 2: CNPJ)
|
64
|
+
37 => Position.new(38, 14, true), # Numero da inscricao
|
65
|
+
38 => Position.new(39, 40, false), # Nome do sacado
|
66
|
+
39 => Position.new(40, 40, false), # End. do sacado
|
67
|
+
40 => Position.new(41, 12, false), # 1º mensagem
|
68
|
+
41 => Position.new(42, 8, false), # CEP do sacado
|
69
|
+
42 => Position.new(43, 60, false), # Sacador/Avalista ou 2º mensagem
|
70
|
+
43 => Position.new(44, 6, true) # Numero sequencial
|
71
|
+
|
40
72
|
})
|
41
73
|
end
|
42
74
|
|
75
|
+
def detalhe_retorno
|
76
|
+
@section = Section.new({
|
77
|
+
0 => Position.new(1, 1, false, "1", true), # Código do Registro
|
78
|
+
1 => Position.new(2, 2, true), # Tipo de inscrição da empresa (01:CPF, 02: CNPJ)
|
79
|
+
2 => Position.new(3, 14, false), # Numero da inscricao da empresa
|
80
|
+
3 => Position.new(4, 3, false), # Reservado - Zeros
|
81
|
+
4 => Position.new(5, 17, true), # Identificação da empresa (zero, carteira, agencia e CC )
|
82
|
+
5 => Position.new(6, 25, false), # Numero controle do participante
|
83
|
+
6 => Position.new(7, 8, false), # Reservado - Zeros
|
84
|
+
7 => Position.new(8, 12, true), # Identificação do titulo no banco
|
85
|
+
8 => Position.new(9, 10, false), # Reservado - Zeros
|
86
|
+
9 => Position.new(10, 12, false), # Reservado - Zeros
|
87
|
+
10 => Position.new(11, 1, false), # Indicador Rateio
|
88
|
+
11 => Position.new(12, 2, false), # Reservado - Zeros
|
89
|
+
12 => Position.new(13, 1, false), # Carteira
|
90
|
+
13 => Position.new(14, 2, false), # Id da Ocorrencia
|
91
|
+
14 => Position.new(15, 6, false), # Data da Ocorrencia
|
92
|
+
15 => Position.new(16, 10, false), # Numero Documento
|
93
|
+
16 => Position.new(17, 20, false), # Id do titulo no banco
|
94
|
+
17 => Position.new(18, 6, false), # Data vencimento do titulo (DDMMAA)
|
95
|
+
18 => Position.new(19, 13, false), # Valor do titulo
|
96
|
+
19 => Position.new(20, 3, false), # Banco cobrador
|
97
|
+
20 => Position.new(21, 5, false), # Agencia Cobradora
|
98
|
+
21 => Position.new(22, 2, false), # Especie de titulo - branco
|
99
|
+
22 => Position.new(23, 13, false), # Valor despesa das ocorrencias
|
100
|
+
23 => Position.new(24, 13, false), # Outras despesas
|
101
|
+
24 => Position.new(25, 13, false), # Juros operação em atraso
|
102
|
+
25 => Position.new(26, 13, false), # IOF devido
|
103
|
+
26 => Position.new(27, 13, false), # Valor abatimento
|
104
|
+
27 => Position.new(28, 13, false), # Valor desconto concedido
|
105
|
+
28 => Position.new(29, 13, false), # Valor pago
|
106
|
+
29 => Position.new(30, 13, false), # Juros de mora
|
107
|
+
30 => Position.new(31, 13, false), # Outros creditos
|
108
|
+
31 => Position.new(32, 2, false), # Reservado - branco
|
109
|
+
32 => Position.new(33, 1, false), # Motivo do codigo de ocorrencia
|
110
|
+
33 => Position.new(34, 6, false), # Data do credito
|
111
|
+
34 => Position.new(35, 3, false), # Origem pagamento
|
112
|
+
35 => Position.new(36, 10, false), # Reservado - brancos
|
113
|
+
36 => Position.new(37, 4, false), # Codigo do banco - quando cheque
|
114
|
+
37 => Position.new(38, 10, false), # Motivo das rejeicoes
|
115
|
+
38 => Position.new(39, 40, false), # Reservado - brancos
|
116
|
+
39 => Position.new(40, 2, false), # numero do cartorio
|
117
|
+
40 => Position.new(41, 10, false), # numero do protocolo
|
118
|
+
41 => Position.new(42, 14, false), # Reservado - brancos
|
119
|
+
42 => Position.new(43, 6, false) # Numero sequencial
|
120
|
+
})
|
121
|
+
|
122
|
+
end
|
123
|
+
|
43
124
|
#-------------------------------------------------------------------
|
44
125
|
#-------------------------------------------------------------------
|
45
126
|
# Gerais
|
46
|
-
def process_section
|
127
|
+
def process_section(file)
|
128
|
+
case @versao
|
129
|
+
when :remessa
|
130
|
+
processa_remessa file
|
131
|
+
when :retorno
|
132
|
+
processa_retorno file
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def processa_remessa file
|
47
137
|
self.set_agencia file[1..5]
|
48
|
-
self.
|
49
|
-
self.
|
50
|
-
self.
|
51
|
-
self.
|
52
|
-
self.
|
53
|
-
self.set_nosso_numero file[
|
54
|
-
self.
|
55
|
-
self.
|
56
|
-
self.
|
57
|
-
self.
|
58
|
-
self.
|
59
|
-
self.
|
60
|
-
self.
|
61
|
-
self.
|
62
|
-
self.
|
63
|
-
self.
|
64
|
-
self.
|
65
|
-
self.
|
66
|
-
self.
|
67
|
-
self.
|
68
|
-
self.
|
69
|
-
self.
|
70
|
-
self.
|
71
|
-
self.
|
72
|
-
self.
|
73
|
-
self.
|
138
|
+
self.set_dv_agencia file[6..6]
|
139
|
+
self.set_razao_conta_corrente file[7..11]
|
140
|
+
self.set_conta_corrente file[13..18]
|
141
|
+
self.set_dv_conta_corrente file[19..19]
|
142
|
+
self.set_identificacao_empresa file[20..36]
|
143
|
+
self.set_nosso_numero file[37..61]
|
144
|
+
self.set_codigo_banco_debitado file[62..64]
|
145
|
+
self.set_campo_multa file[65..65]
|
146
|
+
self.set_percentual_multa file[66..69]
|
147
|
+
self.set_identificacao_titulo file[70..80]
|
148
|
+
self.set_digito_conferencia file[81..81]
|
149
|
+
self.set_desconto_bonificacao file[82..91]
|
150
|
+
self.set_condicao_emissao file[92..92]
|
151
|
+
self.set_id_boleto_debito file[93..93]
|
152
|
+
self.set_reservado_1 file[94..103]
|
153
|
+
self.set_indicador_rateio file[104..104]
|
154
|
+
self.set_enderecamento file[105..105]
|
155
|
+
self.set_reservado_2 file[106..107]
|
156
|
+
self.set_indicador_ocorrencia file[108..109]
|
157
|
+
self.set_numero_documento file[110..119]
|
158
|
+
self.set_vencimento_titulo file[120..125]
|
159
|
+
self.set_valor_titulo file[126..138]
|
160
|
+
self.set_banco_cobrador file[139..141]
|
161
|
+
self.set_agencia_depositaria file[142..146]
|
162
|
+
self.set_especie_titulo file[147..148]
|
163
|
+
self.set_identificacao file[149..149]
|
164
|
+
self.set_data_emissao_titulo file[150..155]
|
165
|
+
self.set_1_instrucao file[156..157]
|
166
|
+
self.set_2_instrucao file[158..159]
|
167
|
+
self.set_valor_por_atraso file[160..172]
|
168
|
+
self.set_data_limite_desconto file[173..178]
|
169
|
+
self.set_valor_desconto file[179..191]
|
170
|
+
self.set_valor_iof file[192..204]
|
171
|
+
self.set_valor_abatimento file[205..217]
|
172
|
+
self.set_id_inscricao_sacado file[218..219]
|
173
|
+
self.set_numero_inscricao_sacado file[220..233]
|
174
|
+
self.set_nome_sacado file[234..273]
|
175
|
+
self.set_endereco file[274..313]
|
176
|
+
self.set_1_mensagem file[314..325]
|
177
|
+
self.set_cep file[326..333]
|
178
|
+
self.set_2_mensagem file[334..393]
|
179
|
+
self.set_sequencial file[394..399]
|
180
|
+
end
|
181
|
+
|
182
|
+
def processa_retorno file
|
183
|
+
self.set_tipo_inscricao file[1..2]
|
184
|
+
self.set_numero_inscricao file[3..16]
|
185
|
+
self.set_zeros_1 file[17..19]
|
186
|
+
self.set_id_empresa file[20..36]
|
187
|
+
self.set_controle_participante file[37..61]
|
188
|
+
self.set_zeros_2 file[62..69]
|
189
|
+
self.set_id_titulo file[70..81]
|
190
|
+
self.set_zeros_3 file[82..91]
|
191
|
+
self.set_zeros_4 file[93..103]
|
192
|
+
self.set_indicador_rateio_retorno file[104..104]
|
193
|
+
self.set_zeros_5 file[105..106]
|
194
|
+
self.set_carteira_retorno file[107..107]
|
195
|
+
self.set_ocorrencia_retorno file[108..109]
|
196
|
+
self.set_data_ocorrencia file[110..115]
|
197
|
+
self.set_numero_documento_retorno file[116..125]
|
198
|
+
self.set_id_titulo file[126..145]
|
199
|
+
self.set_data_titulo file[146..151]
|
200
|
+
self.set_valor_titulo_retorno file[152..164]
|
201
|
+
self.set_banco_cobrador_retorno file[165..167]
|
202
|
+
self.set_agencia_cobradora file[168..172]
|
203
|
+
self.set_especie_titulo_retorno file[173..174]
|
204
|
+
self.set_despesas file[175..187]
|
205
|
+
self.set_outras_despesas file[188..200]
|
206
|
+
self.set_juros file[201..213]
|
207
|
+
self.set_iof file[214..226]
|
208
|
+
self.set_abatimento_concedido file[227..239]
|
209
|
+
self.set_desconto_concedido file[240..252]
|
210
|
+
self.set_valor_pago file[253..265]
|
211
|
+
self.set_juros_mora file[266..278]
|
212
|
+
self.set_outros_creditos file[279..291]
|
213
|
+
self.set_brancos_1 file[292..293]
|
214
|
+
self.set_motivo_ocorrencia file[294..294]
|
215
|
+
self.set_data_credito file[295..300]
|
216
|
+
self.set_origem_pagamento file[301..303]
|
217
|
+
self.set_brancos_2 file[304..313]
|
218
|
+
self.set_codigo_banco_retorno file[314..317]
|
219
|
+
self.set_motivo_rejeicoes file[318..327]
|
220
|
+
self.set_brancos_3 file[328..367]
|
221
|
+
self.set_numero_cartorio file[368..369]
|
222
|
+
self.set_numero_protocolo file[370..379]
|
223
|
+
self.set_brancos_4 file[380..393]
|
224
|
+
self.set_sequencial_retorno file[394..399]
|
74
225
|
end
|
75
226
|
|
76
227
|
#-------------------------------------------------------------------
|
77
228
|
#-------------------------------------------------------------------
|
78
229
|
# Validações
|
79
230
|
def is_valid?
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
self.get_nome_banco.length > 0 and
|
85
|
-
!self.get_data_geracao.nil? and
|
86
|
-
self.get_numero_sequencial > 0 and
|
87
|
-
self.get_versao_layout > 0 and
|
88
|
-
self.get_identificacao_servico.length > 0)
|
231
|
+
self.get_identificacao_empresa.length > 0 and
|
232
|
+
self.get_nosso_numero.length > 0 and
|
233
|
+
self.get_numero_documento.length > 0 and
|
234
|
+
self.get_sequencial.length > 0
|
89
235
|
end
|
90
236
|
|
91
237
|
#-------------------------------------------------------------------
|
92
238
|
#-------------------------------------------------------------------
|
93
239
|
# Getters
|
94
|
-
def
|
95
|
-
self.get_section_value(1)
|
96
|
-
end
|
97
|
-
|
98
|
-
def get_identificacao_arquivo
|
99
|
-
self.get_section_value(2)
|
100
|
-
end
|
101
|
-
|
102
|
-
def get_codigo_servico
|
103
|
-
self.get_section_value(3)
|
240
|
+
def get_agencia
|
241
|
+
self.get_section_value(1)
|
104
242
|
end
|
105
243
|
|
106
|
-
def
|
107
|
-
self.get_section_value(4)
|
108
|
-
end
|
109
|
-
|
110
|
-
def get_codigo_empresa
|
111
|
-
self.get_section_value(5)
|
112
|
-
end
|
113
|
-
|
114
|
-
def get_nome_empresa
|
244
|
+
def get_identificacao_empresa
|
115
245
|
self.get_section_value(6)
|
116
246
|
end
|
117
247
|
|
118
|
-
def
|
248
|
+
def get_nosso_numero
|
119
249
|
self.get_section_value(7)
|
120
250
|
end
|
121
251
|
|
122
|
-
def
|
123
|
-
self.get_section_value(
|
252
|
+
def get_numero_documento
|
253
|
+
self.get_section_value(21)
|
254
|
+
end
|
255
|
+
|
256
|
+
def get_vencimento_titulo
|
257
|
+
self.get_section_value(22)
|
124
258
|
end
|
125
259
|
|
126
|
-
def
|
127
|
-
self.get_section_value(
|
260
|
+
def get_nome_sacado
|
261
|
+
self.get_section_value(38)
|
128
262
|
end
|
129
263
|
|
130
|
-
def
|
131
|
-
self.get_section_value(
|
264
|
+
def get_endereco
|
265
|
+
self.get_section_value(39)
|
132
266
|
end
|
133
267
|
|
134
268
|
def get_sequencial
|
135
|
-
self.get_section_value(
|
269
|
+
self.get_section_value(43)
|
136
270
|
end
|
137
271
|
|
138
272
|
|
139
273
|
#-------------------------------------------------------------------
|
140
274
|
#-------------------------------------------------------------------
|
141
275
|
# Setters
|
142
|
-
def set_agencia valor
|
276
|
+
def set_agencia valor = ""
|
143
277
|
self.set_section_value(1, valor)
|
144
278
|
end
|
145
279
|
|
146
|
-
def
|
280
|
+
def set_tipo_inscricao valor = ""
|
281
|
+
self.set_section_value(1, valor)
|
282
|
+
end
|
283
|
+
|
284
|
+
def set_dv_agencia valor = ""
|
147
285
|
self.set_section_value(2, valor)
|
148
286
|
end
|
149
287
|
|
150
|
-
def
|
288
|
+
def set_numero_inscricao valor = ""
|
289
|
+
self.set_section_value(2, valor)
|
290
|
+
end
|
291
|
+
|
292
|
+
def set_razao_conta_corrente valor = ""
|
151
293
|
self.set_section_value(3, valor)
|
152
294
|
end
|
153
295
|
|
154
|
-
def
|
296
|
+
def set_zeros_1 valor = ""
|
297
|
+
self.set_section_value(3, valor)
|
298
|
+
end
|
299
|
+
|
300
|
+
def set_conta_corrente valor = ""
|
301
|
+
self.set_section_value(4, valor)
|
302
|
+
end
|
303
|
+
|
304
|
+
def set_id_empresa valor
|
155
305
|
self.set_section_value(4, valor)
|
156
306
|
end
|
157
307
|
|
158
|
-
def
|
308
|
+
def set_dv_conta_corrente valor = ""
|
309
|
+
self.set_section_value(5, valor)
|
310
|
+
end
|
311
|
+
|
312
|
+
def set_controle_participante valor
|
159
313
|
self.set_section_value(5, valor)
|
160
314
|
end
|
161
315
|
|
162
|
-
def
|
316
|
+
def set_identificacao_empresa valor = ""
|
163
317
|
self.set_section_value(6, valor)
|
164
318
|
end
|
165
319
|
|
166
|
-
def
|
320
|
+
def set_zeros_2 valor
|
321
|
+
self.set_section_value(6, valor)
|
322
|
+
end
|
323
|
+
|
324
|
+
def set_nosso_numero valor = ""
|
167
325
|
self.set_section_value(7, valor)
|
168
326
|
end
|
169
327
|
|
170
|
-
def
|
328
|
+
def set_id_titulo valor
|
329
|
+
self.set_section_value(7, valor)
|
330
|
+
end
|
331
|
+
|
332
|
+
def set_codigo_banco_debitado valor = ""
|
333
|
+
self.set_section_value(8, valor)
|
334
|
+
end
|
335
|
+
|
336
|
+
def set_zeros_3 valor
|
171
337
|
self.set_section_value(8, valor)
|
172
338
|
end
|
173
339
|
|
174
|
-
def
|
340
|
+
def set_campo_multa valor = "0"
|
341
|
+
self.set_section_value(9, valor)
|
342
|
+
end
|
343
|
+
|
344
|
+
def set_zeros_4 valor
|
175
345
|
self.set_section_value(9, valor)
|
176
346
|
end
|
177
347
|
|
178
|
-
def
|
348
|
+
def set_percentual_multa valor = "0"
|
349
|
+
self.set_section_value(10, valor)
|
350
|
+
end
|
351
|
+
|
352
|
+
def set_percentual_multa valor = "0"
|
353
|
+
self.set_section_value(10, valor)
|
354
|
+
end
|
355
|
+
|
356
|
+
def set_indicador_rateio_retorno valor
|
179
357
|
self.set_section_value(10, valor)
|
180
358
|
end
|
181
359
|
|
182
|
-
def
|
360
|
+
def set_identificacao_titulo valor = "0"
|
361
|
+
self.set_section_value(11, valor)
|
362
|
+
end
|
363
|
+
|
364
|
+
def set_zeros_5 valor
|
365
|
+
self.set_section_value(11, valor)
|
366
|
+
end
|
367
|
+
|
368
|
+
def set_digito_conferencia valor = "0"
|
369
|
+
self.set_section_value(12, valor)
|
370
|
+
end
|
371
|
+
|
372
|
+
def set_carteira_retorno valor
|
373
|
+
self.set_section_value(12, valor)
|
374
|
+
end
|
375
|
+
|
376
|
+
def set_desconto_bonificacao valor = "0"
|
377
|
+
self.set_section_value(13, valor)
|
378
|
+
end
|
379
|
+
|
380
|
+
def set_ocorrencia_retorno valor
|
381
|
+
self.set_section_value(13, valor)
|
382
|
+
end
|
383
|
+
|
384
|
+
def set_condicao_emissao valor
|
385
|
+
self.set_section_value(14, valor)
|
386
|
+
end
|
387
|
+
|
388
|
+
def set_data_ocorrencia valor
|
389
|
+
self.set_section_value(14, valor)
|
390
|
+
end
|
391
|
+
|
392
|
+
def set_id_boleto_debito valor = " "
|
393
|
+
self.set_section_value(15, valor)
|
394
|
+
end
|
395
|
+
|
396
|
+
def set_numero_documento_retorno valor
|
397
|
+
self.set_section_value(15, valor)
|
398
|
+
end
|
399
|
+
|
400
|
+
def set_reservado_1 valor = " "
|
401
|
+
self.set_section_value(16, valor)
|
402
|
+
end
|
403
|
+
|
404
|
+
def set_id_titulo valor
|
405
|
+
self.set_section_value(16, valor)
|
406
|
+
end
|
407
|
+
|
408
|
+
def set_indicador_rateio valor = ""
|
409
|
+
self.set_section_value(17, valor)
|
410
|
+
end
|
411
|
+
|
412
|
+
def set_data_titulo valor = ""
|
413
|
+
self.set_section_value(17, valor)
|
414
|
+
end
|
415
|
+
|
416
|
+
def set_enderecamento valor = ""
|
417
|
+
self.set_section_value(18, valor)
|
418
|
+
end
|
419
|
+
|
420
|
+
def set_valor_titulo_retorno valor
|
421
|
+
self.set_section_value(18, valor)
|
422
|
+
end
|
423
|
+
|
424
|
+
def set_reservado_2 valor = " "
|
425
|
+
self.set_section_value(19, valor)
|
426
|
+
end
|
427
|
+
|
428
|
+
def set_banco_cobrador_retorno valor
|
429
|
+
self.set_section_value(19, valor)
|
430
|
+
end
|
431
|
+
|
432
|
+
def set_indicador_ocorrencia valor
|
433
|
+
self.set_section_value(20, valor)
|
434
|
+
end
|
435
|
+
|
436
|
+
def set_agencia_cobradora valor
|
437
|
+
self.set_section_value(20, valor)
|
438
|
+
end
|
439
|
+
|
440
|
+
def set_numero_documento valor = ""
|
441
|
+
self.set_section_value(21, valor)
|
442
|
+
end
|
443
|
+
|
444
|
+
def set_especie_titulo_retorno valor
|
445
|
+
self.set_section_value(21, valor)
|
446
|
+
end
|
447
|
+
|
448
|
+
def set_vencimento_titulo valor
|
183
449
|
begin
|
184
450
|
valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
|
185
451
|
real_data = valor.strftime("%d%m%y")
|
186
452
|
|
187
453
|
if real_data.length == 6
|
188
|
-
self.set_section_value(
|
454
|
+
self.set_section_value(22, real_data)
|
189
455
|
else
|
190
456
|
raise "tamanho de data incorreto"
|
191
457
|
end
|
192
458
|
|
193
459
|
rescue
|
194
|
-
raise "#{get_id}: Data
|
460
|
+
raise "#{get_id}: Data de Geração Inválida
|
195
461
|
Valor: #{valor}"
|
196
462
|
end
|
197
463
|
end
|
198
464
|
|
199
|
-
def
|
200
|
-
self.set_section_value(
|
465
|
+
def set_despesas valor
|
466
|
+
self.set_section_value(22, valor)
|
467
|
+
end
|
468
|
+
|
469
|
+
def set_valor_titulo valor
|
470
|
+
self.set_section_value(23, valor)
|
471
|
+
end
|
472
|
+
|
473
|
+
def set_outras_despesas valor
|
474
|
+
self.set_section_value(23, valor)
|
475
|
+
end
|
476
|
+
|
477
|
+
def set_banco_cobrador valor = "0"
|
478
|
+
self.set_section_value(24, valor)
|
201
479
|
end
|
202
480
|
|
203
|
-
def
|
481
|
+
def set_juros valor
|
482
|
+
self.set_section_value(24, valor)
|
483
|
+
end
|
484
|
+
|
485
|
+
def set_agencia_depositaria valor = "0"
|
486
|
+
self.set_section_value(25, valor)
|
487
|
+
end
|
488
|
+
|
489
|
+
def set_iof valor
|
490
|
+
self.set_section_value(25, valor)
|
491
|
+
end
|
492
|
+
|
493
|
+
def set_especie_titulo valor = ""
|
494
|
+
self.set_section_value(26, valor)
|
495
|
+
end
|
496
|
+
|
497
|
+
def set_abatimento_concedido valor = ""
|
498
|
+
self.set_section_value(26, valor)
|
499
|
+
end
|
500
|
+
|
501
|
+
def set_identificacao valor = ""
|
502
|
+
self.set_section_value(27, valor)
|
503
|
+
end
|
504
|
+
|
505
|
+
def set_desconto_concedido valor = ""
|
506
|
+
self.set_section_value(27, valor)
|
507
|
+
end
|
508
|
+
|
509
|
+
def set_data_emissao_titulo valor
|
204
510
|
begin
|
205
511
|
valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
|
206
512
|
real_data = valor.strftime("%d%m%y")
|
207
513
|
|
208
514
|
if real_data.length == 6
|
209
|
-
self.set_section_value(
|
515
|
+
self.set_section_value(28, real_data)
|
210
516
|
else
|
211
517
|
raise "tamanho de data incorreto"
|
212
518
|
end
|
213
519
|
|
214
520
|
rescue
|
215
|
-
raise "#{get_id}: Data de
|
521
|
+
raise "#{get_id}: Data de Geração Inválida
|
216
522
|
Valor: #{valor}"
|
217
523
|
end
|
218
524
|
end
|
219
525
|
|
220
|
-
def
|
221
|
-
self.set_section_value(
|
526
|
+
def set_valor_pago valor = ""
|
527
|
+
self.set_section_value(28, valor)
|
222
528
|
end
|
223
529
|
|
224
|
-
def
|
225
|
-
self.set_section_value(
|
530
|
+
def set_1_instrucao valor = "0"
|
531
|
+
self.set_section_value(29, valor)
|
226
532
|
end
|
227
533
|
|
228
|
-
def
|
229
|
-
self.set_section_value(
|
534
|
+
def set_juros_mora valor
|
535
|
+
self.set_section_value(29, valor)
|
230
536
|
end
|
231
537
|
|
232
|
-
def
|
233
|
-
self.set_section_value(
|
538
|
+
def set_2_instrucao valor = "0"
|
539
|
+
self.set_section_value(30, valor)
|
540
|
+
end
|
541
|
+
|
542
|
+
def set_outros_creditos valor
|
543
|
+
self.set_section_value(30, valor)
|
234
544
|
end
|
235
545
|
|
546
|
+
def set_valor_por_atraso valor = "0"
|
547
|
+
self.set_section_value(31, valor)
|
548
|
+
end
|
236
549
|
|
237
|
-
def
|
238
|
-
self.set_section_value(
|
550
|
+
def set_brancos_1 valor
|
551
|
+
self.set_section_value(31, valor)
|
239
552
|
end
|
240
553
|
|
241
|
-
def
|
242
|
-
|
554
|
+
def set_data_limite_desconto valor = ""
|
555
|
+
begin
|
556
|
+
valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
|
557
|
+
real_data = valor.strftime("%d%m%y")
|
558
|
+
|
559
|
+
if real_data.length == 6
|
560
|
+
self.set_section_value(32, real_data)
|
561
|
+
else
|
562
|
+
raise "tamanho de data incorreto"
|
563
|
+
end
|
564
|
+
|
565
|
+
rescue
|
566
|
+
raise "#{get_id}: Data de Geração Inválida
|
567
|
+
Valor: #{valor}"
|
568
|
+
end
|
243
569
|
end
|
244
570
|
|
245
|
-
def
|
246
|
-
self.set_section_value(
|
571
|
+
def set_motivo_ocorrencia valor
|
572
|
+
self.set_section_value(32, valor)
|
247
573
|
end
|
248
574
|
|
249
|
-
def
|
250
|
-
self.set_section_value(
|
575
|
+
def set_valor_desconto valor = "0"
|
576
|
+
self.set_section_value(33, valor)
|
251
577
|
end
|
252
578
|
|
253
|
-
def
|
254
|
-
self.set_section_value(
|
579
|
+
def set_data_credito valor = ""
|
580
|
+
self.set_section_value(33, valor)
|
255
581
|
end
|
256
582
|
|
257
|
-
def
|
258
|
-
self.set_section_value(
|
583
|
+
def set_valor_iof valor = "0"
|
584
|
+
self.set_section_value(34, valor)
|
259
585
|
end
|
260
586
|
|
261
|
-
def
|
262
|
-
self.set_section_value(
|
587
|
+
def set_origem_pagamento valor = ""
|
588
|
+
self.set_section_value(34, valor)
|
263
589
|
end
|
264
590
|
|
265
|
-
def
|
266
|
-
self.set_section_value(
|
591
|
+
def set_valor_abatimento valor
|
592
|
+
self.set_section_value(35, valor)
|
267
593
|
end
|
268
594
|
|
269
|
-
def
|
270
|
-
self.set_section_value(
|
595
|
+
def set_brancos_2 valor
|
596
|
+
self.set_section_value(35, valor)
|
271
597
|
end
|
272
598
|
|
273
|
-
def
|
274
|
-
self.set_section_value(
|
599
|
+
def set_id_inscricao_sacado valor = ""
|
600
|
+
self.set_section_value(36, valor)
|
275
601
|
end
|
602
|
+
|
603
|
+
def set_codigo_banco_retorno valor = ""
|
604
|
+
self.set_section_value(36, valor)
|
605
|
+
end
|
606
|
+
|
607
|
+
def set_numero_inscricao_sacado valor = ""
|
608
|
+
self.set_section_value(37, valor)
|
609
|
+
end
|
610
|
+
|
611
|
+
def set_motivo_rejeicoes valor = ""
|
612
|
+
self.set_section_value(37, valor)
|
613
|
+
end
|
614
|
+
|
615
|
+
def set_nome_sacado valor = ""
|
616
|
+
self.set_section_value(38, valor)
|
617
|
+
end
|
618
|
+
|
619
|
+
def set_brancos_3 valor = ""
|
620
|
+
self.set_section_value(38, valor)
|
621
|
+
end
|
622
|
+
|
623
|
+
def set_endereco valor = ""
|
624
|
+
self.set_section_value(39, valor)
|
625
|
+
end
|
626
|
+
|
627
|
+
def set_numero_cartorio valor = ""
|
628
|
+
self.set_section_value(39, valor)
|
629
|
+
end
|
630
|
+
|
631
|
+
def set_1_mensagem valor = ""
|
632
|
+
self.set_section_value(40, valor)
|
633
|
+
end
|
634
|
+
|
635
|
+
def set_numero_protocolo valor = ""
|
636
|
+
self.set_section_value(40, valor)
|
637
|
+
end
|
638
|
+
|
639
|
+
def set_cep valor = ""
|
640
|
+
self.set_section_value(41, valor)
|
641
|
+
end
|
642
|
+
|
643
|
+
def set_brancos_4 valor = ""
|
644
|
+
self.set_section_value(41, valor)
|
645
|
+
end
|
646
|
+
|
647
|
+
def set_2_mensagem valor = ""
|
648
|
+
self.set_section_value(42, valor)
|
649
|
+
end
|
650
|
+
|
651
|
+
def set_sequencial_retorno valor = ""
|
652
|
+
self.set_section_value(42, valor)
|
653
|
+
end
|
654
|
+
|
655
|
+
def set_sequencial valor = ""
|
656
|
+
self.set_section_value(43, valor)
|
657
|
+
end
|
658
|
+
|
276
659
|
end
|