formatos-febraban 0.3.57 → 0.3.58

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,97 @@
1
+ module VAldeias
2
+ require_relative 'trailler_commons'
3
+
4
+ module Remessa
5
+ class Trailler < FormatSection
6
+ include VAldeiasTraillerCommons
7
+
8
+ def initialize
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "9", true), # Código do Registro
11
+ 1 => Position.new(2, 1, false, "9"), # Código Remessa
12
+ 2 => Position.new(3, 6, true), # Qtde do Registro
13
+ 3 => Position.new(4, 385, false), # Mensagem do boleto
14
+ 4 => Position.new(5, 6, true), # Numero sequencial do registro
15
+ })
16
+ end
17
+
18
+ def set_values params
19
+ set_mensagem params[:mensagem]
20
+ set_total_registros params[:total_registros]
21
+ end
22
+ end
23
+ end
24
+
25
+ module Retorno
26
+ class Trailler < FormatSection
27
+ include VAldeiasTraillerCommons
28
+
29
+ def initialize
30
+ @section = Section.new({
31
+ 0 => Position.new(1, 1, false, "9", true), # Código do Registro
32
+ 1 => Position.new(2, 1, true, "2"), # Código Arquivo (1-Remessa, 2-Retorno)
33
+ 2 => Position.new(3, 2, true, "01"), # Id tipo de registro
34
+ 3 => Position.new(4, 3, true), # Codigo do banco
35
+ 4 => Position.new(5, 10, false), # Reservado - branco
36
+ 5 => Position.new(6, 8, false), # Qtde de titulo na cobranca
37
+ 6 => Position.new(7, 14, false), # Valor total em cobranca
38
+ 7 => Position.new(8, 8, false), # Numero aviso bancario
39
+ 8 => Position.new(9, 10, false), # Reservado - branco
40
+ 9 => Position.new(10, 5, false), # Qtde de registros - confirmacao
41
+ 10 => Position.new(11, 12, false), # Valor dos registros - confirmacao
42
+ 11 => Position.new(12, 12, false), # Valor dos registros - liquidacao
43
+ 12 => Position.new(13, 5, false), # Qtde dos registros - liquidacao
44
+ 13 => Position.new(14, 12, false), # Valor dos registros - ocorrencia 06
45
+ 14 => Position.new(15, 5, false), # Qtde dos registros - baixados
46
+ 15 => Position.new(16, 12, false), # Valor dos registros - baixados
47
+ 16 => Position.new(17, 5, false), # Qtde dos registros - abatimento cancelado
48
+ 17 => Position.new(18, 12, false), # Valor dos registros - abatimento cancelado
49
+ 18 => Position.new(19, 5, false), # Qtde dos registros - vencimento alterado
50
+ 19 => Position.new(20, 12, false), # Valor dos registros - vencimento alterado
51
+ 20 => Position.new(21, 5, false), # Qtde dos registros - abatimento concedido
52
+ 21 => Position.new(22, 12, false), # Valor dos registros - abatimento concedido
53
+ 22 => Position.new(23, 5, false), # Qtde dos registros - confirmacao instrucao protesto
54
+ 23 => Position.new(24, 12, false), # Valor dos registros - confirmacao instrucao protesto
55
+ 24 => Position.new(25, 174, false), # Reservado - branco
56
+ 25 => Position.new(26, 15, false), # Valor total rateios
57
+ 26 => Position.new(27, 8, false), # Qtde total rateios
58
+ 27 => Position.new(28, 9, false), # Reservado - branco
59
+ 28 => Position.new(29, 6, false) # Numero sequencial do registro
60
+ })
61
+ end
62
+
63
+ def process_section file
64
+ self.set_codigo_arquivo file[1..1]
65
+ self.set_tipo_registro file[2..3]
66
+ self.set_codigo_banco file[4..6]
67
+ self.set_reservado_1 file[7..16]
68
+ self.set_qtde_titulos file[17..24]
69
+ self.set_valor_cobranca file[25..38]
70
+ self.set_numero_aviso file[39..46]
71
+ self.set_reservado_2 file[47..56]
72
+ self.set_qtde_confirmados file[57..61]
73
+ self.set_valor_confirmados file[62..73]
74
+ self.set_valor_liquidados file[74..85]
75
+ self.set_qtde_liquidados file[86..90]
76
+ self.set_valor_ocorrencia_06 file[91..102]
77
+ self.set_qtde_baixados file[103..107]
78
+ self.set_valor_baixados file[108..119]
79
+ self.set_qtde_abatimento_cancelado file[120..124]
80
+ self.set_valor_abatimento_cancelado file[125..136]
81
+ self.set_qtde_vencimento_alterado file[137..141]
82
+ self.set_valor_vencimento_alterado file[142..153]
83
+ self.set_qtde_abatimento_concedido file[154..158]
84
+ self.set_valor_abatimento_concedido file[159..170]
85
+ self.set_qtde_protesto_confirmado file[171..175]
86
+ self.set_valor_protesto_confirmado file[176..187]
87
+ self.set_reservado_3 file[188..361]
88
+ self.set_valor_rateios file[362..376]
89
+ self.set_qtde_rateios file[377..384]
90
+ self.set_reservado_4 file[385..393]
91
+ self.set_sequencial_retorno file[394..399]
92
+ end
93
+
94
+ end
95
+ end
96
+
97
+ end
@@ -0,0 +1,36 @@
1
+ module VAldeiasTraillerCommons
2
+
3
+ #-------------------------------------------------------------------
4
+ #-------------------------------------------------------------------
5
+ # Validações
6
+ def is_valid?
7
+ self.get_codigo_remessa > 0 and self.get_sequencial.length > 0
8
+ end
9
+
10
+ #-------------------------------------------------------------------
11
+ #-------------------------------------------------------------------
12
+ # Getters
13
+ def get_codigo_remessa
14
+ self.get_section_value(1).to_i
15
+ end
16
+
17
+ def get_sequencial
18
+ self.get_section_value(3)
19
+ end
20
+
21
+ #-------------------------------------------------------------------
22
+ #-------------------------------------------------------------------
23
+ # Setters
24
+
25
+ def set_total_registros valor = ""
26
+ self.set_section_value(2, valor)
27
+ end
28
+
29
+ def set_mensagem valor = ""
30
+ self.set_section_value(3, valor)
31
+ end
32
+
33
+ def set_sequencial valor = ""
34
+ self.set_section_value(4, valor)
35
+ end
36
+ end
@@ -1,27 +1,30 @@
1
-
2
1
  class Cnab400
3
2
  require 'date'
4
3
 
5
4
  SECTION_TYPES = {header: '0', client: "1", trailler: '9'}
6
5
 
7
- VERSAO = {remessa: "remessa", retorno: "retorno"}
6
+ attr_accessor :versao, :operacao
8
7
 
9
8
  # Carrega todas as dependências de Layout
10
9
  Dir[File.join(File.dirname(__FILE__), '../..', 'base', '**/*.rb')].sort.each do |file|
11
10
  require file
12
11
  end
13
12
 
14
- # Partes do Layout
15
- require_relative 'cnab_400_header' # Header
16
- require_relative 'cnab_400_detalhe' # Transação
17
- require_relative 'cnab_400_trailler' # Trailler
13
+ require_relative '../cnab400/arquivo/V08/header'
14
+ require_relative '../cnab400/arquivo/V08/detalhe'
15
+ require_relative '../cnab400/arquivo/V08/trailler'
16
+
17
+ require_relative '../cnab400/arquivo/VAldeias/header'
18
+ require_relative '../cnab400/arquivo/VAldeias/detalhe'
19
+ require_relative '../cnab400/arquivo/VAldeias/trailler'
18
20
 
19
21
  #-------------------------------------------------------------------
20
22
  #-------------------------------------------------------------------
21
23
  # Construtor
22
24
  def initialize(params = {})
23
25
  @sections = []
24
- @versao = params[:versao].present? ? VERSAO.key(params[:versao]) : :retorno
26
+ @versao = params[:versao]
27
+ @operacao = params[:operacao]
25
28
 
26
29
  if params[:file] && params[:file].size > 0
27
30
  self.process_file params[:file]
@@ -37,7 +40,6 @@ class Cnab400
37
40
  if section.is_valid?
38
41
  self.sections << section
39
42
  else
40
-
41
43
  raise "Seção #{section.get_id} está inválida:
42
44
  #{section.errors.inspect}
43
45
  #{section.to_s}"
@@ -61,14 +63,7 @@ class Cnab400
61
63
  if self.get_header.nil?
62
64
  section = self.get_new_section(:header)
63
65
 
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
69
- section.set_reservado_1
70
- section.set_sequencial_remessa params[:sequencial]
71
- section.set_reservado_2
66
+ section.set_values params
72
67
 
73
68
  self.add_section_from_business section
74
69
 
@@ -84,42 +79,21 @@ class Cnab400
84
79
 
85
80
  section = self.get_new_section(:client)
86
81
 
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
-
82
+ section.set_values params
110
83
  self.add_section_from_business section
111
84
  end
112
85
 
113
86
  # Seção Trailler
114
- def create_trailler
87
+ def create_trailler(params = {})
115
88
  self.valida_existe_header
116
89
 
117
90
  if self.get_trailler.nil?
118
91
  if self.get_section(SECTION_TYPES[:client]).length > 0
119
92
  section = self.get_new_section(:trailler)
120
93
 
121
- section.set_branco
122
- section.set_sequencial self.sections.length + 1
94
+ section.set_values params
95
+
96
+ section.set_sequencial self.sections.length + 1
123
97
 
124
98
  self.sections << section
125
99
  else
@@ -138,21 +112,6 @@ class Cnab400
138
112
  raise "Header ainda não declarado" if self.get_header.nil?
139
113
  end
140
114
 
141
- public
142
- def is_valid?
143
- if self.layout_empresa?
144
- raise "Layout de Empresa inválido!" unless self.is_empresa_valid?
145
-
146
- elsif self.layout_banco?
147
- raise "Layout de Banco inválido!" unless self.is_banco_valid?
148
-
149
- else
150
- raise "Código de Remessa desconhecido: #{codigo_remessa}"
151
- end
152
-
153
- result = self.is_sections_valid?
154
- end
155
-
156
115
  #-------------------------------------------------------------------
157
116
  #-------------------------------------------------------------------
158
117
  # Getters
@@ -185,19 +144,38 @@ class Cnab400
185
144
  self.get_section(SECTION_TYPES[:trailler]).first()
186
145
  end
187
146
 
188
- #--------------------------------------------------------------------------------------
189
- #--------------------------------------------------------------------------------------
190
- # Carregamento de Arquivo
191
- protected
192
147
  def get_new_section section_type
193
148
  case section_type
194
149
  when :header
195
- Cnab4000Header.new(self, @versao)
150
+ eval("Cnab400::#{@versao}::#{@operacao}::Header").new
196
151
  when :client
197
- Cnab4000Detalhe.new(self, @versao)
152
+ eval("Cnab400::#{@versao}::#{@operacao}::Detalhe").new
198
153
  when :trailler
199
- Cnab4000Trailler.new(self, @versao)
154
+ eval("Cnab400::#{@versao}::#{@operacao}::Trailler").new
155
+ end
156
+ end
157
+
158
+ #--------------------------------------------------------------------------------------
159
+ #--------------------------------------------------------------------------------------
160
+ # Carregamento de Arquivo
161
+ protected
162
+ def process_file location
163
+ file = File.new(location, "r")
164
+
165
+ while (line = file.gets)
166
+ process_string line
200
167
  end
168
+
169
+ file.close
170
+ end
171
+
172
+ def process_string file
173
+ section_type = file[0]
174
+
175
+ section = get_new_section SECTION_TYPES.key(section_type)
176
+ section.process_section(file)
177
+
178
+ self.add_section section
201
179
  end
202
180
  end
203
181
 
@@ -1,5 +1,5 @@
1
1
  module Formatos
2
2
  module Febraban
3
- VERSION = '0.3.57'
3
+ VERSION = '0.3.58'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formatos-febraban
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.57
4
+ version: 0.3.58
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Ricardo Almeida
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-06-17 00:00:00.000000000 Z
11
+ date: 2015-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -78,10 +78,19 @@ files:
78
78
  - lib/formatos/cielo/cielo_detalhe.rb
79
79
  - lib/formatos/cielo/cielo_header.rb
80
80
  - lib/formatos/cielo/cielo_trailler.rb
81
+ - lib/formatos/cnab400/arquivo/V08/detalhe.rb
82
+ - lib/formatos/cnab400/arquivo/V08/detalhe_commons.rb
83
+ - lib/formatos/cnab400/arquivo/V08/header.rb
84
+ - lib/formatos/cnab400/arquivo/V08/header_commons.rb
85
+ - lib/formatos/cnab400/arquivo/V08/trailler.rb
86
+ - lib/formatos/cnab400/arquivo/V08/trailler_commons.rb
87
+ - lib/formatos/cnab400/arquivo/VAldeias/detalhe.rb
88
+ - lib/formatos/cnab400/arquivo/VAldeias/detalhe_commons.rb
89
+ - lib/formatos/cnab400/arquivo/VAldeias/header.rb
90
+ - lib/formatos/cnab400/arquivo/VAldeias/header_commons.rb
91
+ - lib/formatos/cnab400/arquivo/VAldeias/trailler.rb
92
+ - lib/formatos/cnab400/arquivo/VAldeias/trailler_commons.rb
81
93
  - lib/formatos/cnab400/cnab_400.rb
82
- - lib/formatos/cnab400/cnab_400_detalhe.rb
83
- - lib/formatos/cnab400/cnab_400_header.rb
84
- - lib/formatos/cnab400/cnab_400_trailler.rb
85
94
  - lib/formatos/febraban.rb
86
95
  - lib/formatos/febraban/version.rb
87
96
  - lib/formatos/febraban150/febraban_150.rb
@@ -1,659 +0,0 @@
1
-
2
- #-------------------------------------------------------------------
3
- #-------------------------------------------------------------------
4
- # Detalhe - Empresa e Banco
5
- class Cnab4000Detalhe < FormatSection
6
- require 'date'
7
-
8
- def initialize(master, tipo)
9
- super(master, true, true, false)
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
26
- @section = Section.new({
27
- 0 => Position.new(1, 1, false, "1", true), # Código do Registro
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
-
72
- })
73
- end
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
-
124
- #-------------------------------------------------------------------
125
- #-------------------------------------------------------------------
126
- # Gerais
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
137
- self.set_agencia file[1..5]
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]
225
- end
226
-
227
- #-------------------------------------------------------------------
228
- #-------------------------------------------------------------------
229
- # Validações
230
- def is_valid?
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
235
- end
236
-
237
- #-------------------------------------------------------------------
238
- #-------------------------------------------------------------------
239
- # Getters
240
- def get_agencia
241
- self.get_section_value(1)
242
- end
243
-
244
- def get_identificacao_empresa
245
- self.get_section_value(6)
246
- end
247
-
248
- def get_nosso_numero
249
- self.get_section_value(7)
250
- end
251
-
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)
258
- end
259
-
260
- def get_nome_sacado
261
- self.get_section_value(38)
262
- end
263
-
264
- def get_endereco
265
- self.get_section_value(39)
266
- end
267
-
268
- def get_sequencial
269
- self.get_section_value(43)
270
- end
271
-
272
-
273
- #-------------------------------------------------------------------
274
- #-------------------------------------------------------------------
275
- # Setters
276
- def set_agencia valor = ""
277
- self.set_section_value(1, valor)
278
- end
279
-
280
- def set_tipo_inscricao valor = ""
281
- self.set_section_value(1, valor)
282
- end
283
-
284
- def set_dv_agencia valor = ""
285
- self.set_section_value(2, valor)
286
- end
287
-
288
- def set_numero_inscricao valor = ""
289
- self.set_section_value(2, valor)
290
- end
291
-
292
- def set_razao_conta_corrente valor = ""
293
- self.set_section_value(3, valor)
294
- end
295
-
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
305
- self.set_section_value(4, valor)
306
- end
307
-
308
- def set_dv_conta_corrente valor = ""
309
- self.set_section_value(5, valor)
310
- end
311
-
312
- def set_controle_participante valor
313
- self.set_section_value(5, valor)
314
- end
315
-
316
- def set_identificacao_empresa valor = ""
317
- self.set_section_value(6, valor)
318
- end
319
-
320
- def set_zeros_2 valor
321
- self.set_section_value(6, valor)
322
- end
323
-
324
- def set_nosso_numero valor = ""
325
- self.set_section_value(7, valor)
326
- end
327
-
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
337
- self.set_section_value(8, valor)
338
- end
339
-
340
- def set_campo_multa valor = "0"
341
- self.set_section_value(9, valor)
342
- end
343
-
344
- def set_zeros_4 valor
345
- self.set_section_value(9, valor)
346
- end
347
-
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
357
- self.set_section_value(10, valor)
358
- end
359
-
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
449
- begin
450
- valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
451
- real_data = valor.strftime("%d%m%y")
452
-
453
- if real_data.length == 6
454
- self.set_section_value(22, real_data)
455
- else
456
- raise "tamanho de data incorreto"
457
- end
458
-
459
- rescue
460
- raise "#{get_id}: Data de Geração Inválida
461
- Valor: #{valor}"
462
- end
463
- end
464
-
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)
479
- end
480
-
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
510
- begin
511
- valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
512
- real_data = valor.strftime("%d%m%y")
513
-
514
- if real_data.length == 6
515
- self.set_section_value(28, real_data)
516
- else
517
- raise "tamanho de data incorreto"
518
- end
519
-
520
- rescue
521
- raise "#{get_id}: Data de Geração Inválida
522
- Valor: #{valor}"
523
- end
524
- end
525
-
526
- def set_valor_pago valor = ""
527
- self.set_section_value(28, valor)
528
- end
529
-
530
- def set_1_instrucao valor = "0"
531
- self.set_section_value(29, valor)
532
- end
533
-
534
- def set_juros_mora valor
535
- self.set_section_value(29, valor)
536
- end
537
-
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)
544
- end
545
-
546
- def set_valor_por_atraso valor = "0"
547
- self.set_section_value(31, valor)
548
- end
549
-
550
- def set_brancos_1 valor
551
- self.set_section_value(31, valor)
552
- end
553
-
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
569
- end
570
-
571
- def set_motivo_ocorrencia valor
572
- self.set_section_value(32, valor)
573
- end
574
-
575
- def set_valor_desconto valor = "0"
576
- self.set_section_value(33, valor)
577
- end
578
-
579
- def set_data_credito valor = ""
580
- self.set_section_value(33, valor)
581
- end
582
-
583
- def set_valor_iof valor = "0"
584
- self.set_section_value(34, valor)
585
- end
586
-
587
- def set_origem_pagamento valor = ""
588
- self.set_section_value(34, valor)
589
- end
590
-
591
- def set_valor_abatimento valor
592
- self.set_section_value(35, valor)
593
- end
594
-
595
- def set_brancos_2 valor
596
- self.set_section_value(35, valor)
597
- end
598
-
599
- def set_id_inscricao_sacado valor = ""
600
- self.set_section_value(36, valor)
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
-
659
- end