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.
@@ -1,285 +0,0 @@
1
-
2
- #-------------------------------------------------------------------
3
- #-------------------------------------------------------------------
4
- # Header - Empresa e Banco
5
- class Cnab4000Header < FormatSection
6
- require 'date'
7
-
8
- def initialize(master, tipo)
9
- super(master, true, true, false)
10
-
11
- @versao = tipo
12
-
13
- case @versao
14
- when :remessa
15
- header_remessa
16
- when :retorno
17
- header_retorno
18
- else
19
- raise "Versão não suportada: #{tipo}"
20
- end
21
- end
22
-
23
- def header_remessa
24
-
25
- @section = Section.new({
26
- 0 => Position.new(1, 1, false, "0", true), # Código do Registro
27
- 1 => Position.new(2, 1, false, "1"), # Código Arquivo (1-Remessa, 2-Retorno)
28
- 2 => Position.new(3, 7, false, "REMESSA"), # Identificação literal do arquivo (REMESSA/RETORNO)
29
- 3 => Position.new(4, 2, false, "01"), # Código do serviço
30
- 4 => Position.new(5, 15, false, "COBRANCA"), # Literal do serviço (COBRANÇA)
31
- 5 => Position.new(6, 20, true), # Código da Empresa
32
- 6 => Position.new(7, 30, false), # Nome da Empresa
33
- 7 => Position.new(8, 3, true), # Número do Banco (BRADESCO: 237)
34
- 8 => Position.new(9, 15, false), # Nome do Banco
35
- 9 => Position.new(10, 6, false), # Data de gravacao do arquivo (DDMMAA)
36
- 10 => Position.new(11, 8, false), # Reservado pelo Sistema - branco
37
- 11 => Position.new(12, 2, false, "01"), # Identificacao do sistema (01: remessa)
38
- 12 => Position.new(13, 7, true), # Numero sequencial da remessa
39
- 13 => Position.new(14, 277, false), # Reservado pelo Sistema - branco
40
- 14 => Position.new(15, 6, false, "000001") # Numero sequencial no arquivo
41
- })
42
- end
43
-
44
- def header_retorno
45
- @section = Section.new({
46
- 0 => Position.new(1, 1, false, "0", true), # Código do Registro
47
- 1 => Position.new(2, 1, false, "2"), # Código Arquivo (1-Remessa, 2-Retorno)
48
- 2 => Position.new(3, 7, false, "RETORNO"), # Identificação literal do arquivo (REMESSA/RETORNO)
49
- 3 => Position.new(4, 2, false, "01"), # Código do serviço
50
- 4 => Position.new(5, 15, false, "COBRANCA"), # Literal do serviço (COBRANÇA)
51
- 5 => Position.new(6, 20, true), # Código da Empresa
52
- 6 => Position.new(7, 30, false), # Nome da Empresa
53
- 7 => Position.new(8, 3, true), # Número do Banco (BRADESCO: 237)
54
- 8 => Position.new(9, 15, false), # Nome do Banco
55
- 9 => Position.new(10, 6, false), # Data de gravacao do arquivo (DDMMAA)
56
- 10 => Position.new(11, 8, false), # Densidade da gravacao do arquivo
57
- 11 => Position.new(12, 5, false), # Numero do aviso bancario
58
- 12 => Position.new(13, 266, false), # Reservado pelo Sistema - branco
59
- 13 => Position.new(14, 6, false), # Data do crédito (DDMMAA)
60
- 14 => Position.new(15, 9, false), # Reservado pelo Sistema - branco
61
- 15 => Position.new(16, 6, false, "000001") # Numero sequencial no arquivo
62
- })
63
- end
64
-
65
- #-------------------------------------------------------------------
66
- #-------------------------------------------------------------------
67
- # Gerais
68
- def process_section(file)
69
- case @versao
70
- when :remessa
71
- processa_remessa file
72
- when :retorno
73
- processa_retorno file
74
- end
75
- end
76
-
77
- def processa_remessa file
78
- self.set_codigo_arquivo file[1..1]
79
- self.set_literal_arquivo file[2..8]
80
- self.set_codigo_servico file[9..10]
81
- self.set_literal_servico file[11..25]
82
- self.set_codigo_empresa file[26..45]
83
- self.set_nome_empresa file[46..75]
84
- self.set_numero_banco file[76..78]
85
- self.set_nome_banco file[79..93]
86
- self.set_data_gravacao file[94..99]
87
- self.set_reservado_1 file[100..107]
88
- self.set_identificacao_sistema file[108..109]
89
- self.set_sequencial_remessa file[110..116]
90
- self.set_reservado_2 file[117..393]
91
- self.set_sequencial file[394..399]
92
- end
93
-
94
- def processa_retorno file
95
- self.set_codigo_arquivo file[1..1]
96
- self.set_literal_arquivo file[2..8]
97
- self.set_codigo_servico file[9..10]
98
- self.set_literal_servico file[11..25]
99
- self.set_codigo_empresa file[26..45]
100
- self.set_nome_empresa file[46..75]
101
- self.set_numero_banco file[76..78]
102
- self.set_nome_banco file[79..93]
103
- self.set_data_gravacao file[94..99]
104
- self.set_densidade_arquivo file[100..107]
105
- self.set_numero_aviso file[108..112]
106
- self.set_brancos_1 file[113..378]
107
- self.set_data_credito file[379..384]
108
- self.set_brancos_2 file[385..393]
109
- self.set_sequencial_retorno file[394..399]
110
- end
111
-
112
- #-------------------------------------------------------------------
113
- #-------------------------------------------------------------------
114
- # Validações
115
- def is_valid?
116
- self.get_codigo_arquivo > 0 and
117
- self.get_data_gravacao.length > 0 and
118
- self.get_nome_empresa.length > 0 and
119
- self.get_identificacao_sistema.length > 0 and
120
- self.get_nome_banco.length > 0
121
- end
122
-
123
- #-------------------------------------------------------------------
124
- #-------------------------------------------------------------------
125
- # Getters
126
- def get_codigo_arquivo
127
- self.get_section_value(1).to_i
128
- end
129
-
130
- def get_identificacao_arquivo
131
- self.get_section_value(2)
132
- end
133
-
134
- def get_codigo_servico
135
- self.get_section_value(3)
136
- end
137
-
138
- def get_literal_servico
139
- self.get_section_value(4)
140
- end
141
-
142
- def get_codigo_empresa
143
- self.get_section_value(5)
144
- end
145
-
146
- def get_nome_empresa
147
- self.get_section_value(6)
148
- end
149
-
150
- def get_numero_banco
151
- self.get_section_value(7)
152
- end
153
-
154
- def get_nome_banco
155
- self.get_section_value(8)
156
- end
157
-
158
- def get_data_gravacao
159
- self.get_section_value(9)
160
- end
161
-
162
- def get_identificacao_sistema
163
- self.get_section_value(11)
164
- end
165
-
166
- def get_sequencial_remessa
167
- self.get_section_value(12)
168
- end
169
-
170
- def get_sequencial
171
- self.get_section_value(14)
172
- end
173
-
174
-
175
- #-------------------------------------------------------------------
176
- #-------------------------------------------------------------------
177
- # Setters
178
- def set_codigo_arquivo valor
179
- self.set_section_value(1, valor)
180
- end
181
-
182
- def set_identificacao_arquivo valor
183
- self.set_section_value(2, valor)
184
- end
185
-
186
- def set_codigo_servico valor
187
- self.set_section_value(3, valor)
188
- end
189
-
190
- def set_literal_servico valor = ""
191
- self.set_section_value(4, valor)
192
- end
193
-
194
- def set_codigo_empresa valor = ""
195
- self.set_section_value(5, valor)
196
- end
197
-
198
- def set_nome_empresa valor = ""
199
- self.set_section_value(6, valor)
200
- end
201
-
202
- def set_numero_banco valor = ""
203
- self.set_section_value(7, valor)
204
- end
205
-
206
- def set_nome_banco valor = ""
207
- self.set_section_value(8, valor)
208
- end
209
-
210
- def set_data_gravacao valor
211
- begin
212
- valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
213
- real_data = valor.strftime("%d%m%y")
214
-
215
- if real_data.length == 6
216
- self.set_section_value(9, real_data)
217
- else
218
- raise "tamanho de data incorreto"
219
- end
220
-
221
- rescue
222
- raise "#{get_id}: Data de Geração Inválida
223
- Valor: #{valor}"
224
- end
225
- end
226
-
227
- def set_reservado_1 valor = " "
228
- self.set_section_value(10, valor)
229
- end
230
-
231
- def set_densidade_arquivo valor = " "
232
- self.set_section_value(10, valor)
233
- end
234
-
235
- def set_identificacao_sistema valor
236
- self.set_section_value(11, valor)
237
- end
238
-
239
- def set_numero_aviso valor
240
- self.set_section_value(11, valor)
241
- end
242
-
243
- def set_sequencial_remessa valor = ""
244
- self.set_section_value(12, valor)
245
- end
246
-
247
- def set_brancos_1 valor = " "
248
- self.set_section_value(12, valor)
249
- end
250
-
251
- def set_reservado_2 valor = " "
252
- self.set_section_value(13, valor)
253
- end
254
-
255
- def set_data_credito valor
256
- begin
257
- valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
258
- real_data = valor.strftime("%d%m%y")
259
-
260
- if real_data.length == 6
261
- self.set_section_value(13, real_data)
262
- else
263
- raise "tamanho de data incorreto"
264
- end
265
-
266
- rescue
267
- raise "#{get_id}: Data de Geração Inválida
268
- Valor: #{valor}"
269
- end
270
- end
271
-
272
- def set_sequencial valor
273
- self.set_section_value(14, valor)
274
- end
275
-
276
- def set_brancos_2 valor = " "
277
- self.set_section_value(14, valor)
278
- end
279
-
280
-
281
- def set_sequencial_retorno valor
282
- self.set_section_value(15, valor)
283
- end
284
-
285
- end
@@ -1,257 +0,0 @@
1
-
2
- #-------------------------------------------------------------------
3
- #-------------------------------------------------------------------
4
- # Trailler - Empresa e Banco
5
- class Cnab4000Trailler < FormatSection
6
- require 'date'
7
-
8
- def initialize(master, tipo)
9
- super(master, true, true, false)
10
-
11
- @versao = tipo
12
-
13
- case @versao
14
- when :remessa
15
- trailler_remessa
16
- when :retorno
17
- trailler_retorno
18
- else
19
- raise "Versão não suportada: #{tipo}"
20
- end
21
-
22
- end
23
-
24
- def trailler_remessa
25
- @section = Section.new({
26
- 0 => Position.new(1, 1, false, "9", true), # Código do Registro
27
- 1 => Position.new(2, 393, false), # Reservado - Brancos
28
- 2 => Position.new(3, 6, true), # Numero sequencial do registro
29
- })
30
- end
31
-
32
- def trailler_retorno
33
- @section = Section.new({
34
- 0 => Position.new(1, 1, false, "9", true), # Código do Registro
35
- 1 => Position.new(2, 1, true, "2"), # Código Arquivo (1-Remessa, 2-Retorno)
36
- 2 => Position.new(3, 2, true, "01"), # Id tipo de registro
37
- 3 => Position.new(4, 3, true), # Codigo do banco
38
- 4 => Position.new(5, 10, false), # Reservado - branco
39
- 5 => Position.new(6, 8, false), # Qtde de titulo na cobranca
40
- 6 => Position.new(7, 14, false), # Valor total em cobranca
41
- 7 => Position.new(8, 8, false), # Numero aviso bancario
42
- 8 => Position.new(9, 10, false), # Reservado - branco
43
- 9 => Position.new(10, 5, false), # Qtde de registros - confirmacao
44
- 10 => Position.new(11, 12, false), # Valor dos registros - confirmacao
45
- 11 => Position.new(12, 12, false), # Valor dos registros - liquidacao
46
- 12 => Position.new(13, 5, false), # Qtde dos registros - liquidacao
47
- 13 => Position.new(14, 12, false), # Valor dos registros - ocorrencia 06
48
- 14 => Position.new(15, 5, false), # Qtde dos registros - baixados
49
- 15 => Position.new(16, 12, false), # Valor dos registros - baixados
50
- 16 => Position.new(17, 5, false), # Qtde dos registros - abatimento cancelado
51
- 17 => Position.new(18, 12, false), # Valor dos registros - abatimento cancelado
52
- 18 => Position.new(19, 5, false), # Qtde dos registros - vencimento alterado
53
- 19 => Position.new(20, 12, false), # Valor dos registros - vencimento alterado
54
- 20 => Position.new(21, 5, false), # Qtde dos registros - abatimento concedido
55
- 21 => Position.new(22, 12, false), # Valor dos registros - abatimento concedido
56
- 22 => Position.new(23, 5, false), # Qtde dos registros - confirmacao instrucao protesto
57
- 23 => Position.new(24, 12, false), # Valor dos registros - confirmacao instrucao protesto
58
- 24 => Position.new(25, 174, false), # Reservado - branco
59
- 25 => Position.new(26, 15, false), # Valor total rateios
60
- 26 => Position.new(27, 8, false), # Qtde total rateios
61
- 27 => Position.new(28, 9, false), # Reservado - branco
62
- 28 => Position.new(29, 6, false) # Numero sequencial do registro
63
- })
64
- end
65
-
66
- #-------------------------------------------------------------------
67
- #-------------------------------------------------------------------
68
- # Gerais
69
-
70
- def process_section(file)
71
- case @versao
72
- when :remessa
73
- processa_remessa file
74
- when :retorno
75
- processa_retorno file
76
- end
77
- end
78
-
79
- def processa_remessa file
80
- self.set_branco file[1..393]
81
- self.set_sequencial file[394..399]
82
- end
83
-
84
- def processa_retorno file
85
- self.set_codigo_arquivo file[1..1]
86
- self.set_tipo_registro file[2..3]
87
- self.set_codigo_banco file[4..6]
88
- self.set_reservado_1 file[7..16]
89
- self.set_qtde_titulos file[17..24]
90
- self.set_valor_cobranca file[25..38]
91
- self.set_numero_aviso file[39..46]
92
- self.set_reservado_2 file[47..56]
93
- self.set_qtde_confirmados file[57..61]
94
- self.set_valor_confirmados file[62..73]
95
- self.set_valor_liquidados file[74..85]
96
- self.set_qtde_liquidados file[86..90]
97
- self.set_valor_ocorrencia_06 file[91..102]
98
- self.set_qtde_baixados file[103..107]
99
- self.set_valor_baixados file[108..119]
100
- self.set_qtde_abatimento_cancelado file[120..124]
101
- self.set_valor_abatimento_cancelado file[125..136]
102
- self.set_qtde_vencimento_alterado file[137..141]
103
- self.set_valor_vencimento_alterado file[142..153]
104
- self.set_qtde_abatimento_concedido file[154..158]
105
- self.set_valor_abatimento_concedido file[159..170]
106
- self.set_qtde_protesto_confirmado file[171..175]
107
- self.set_valor_protesto_confirmado file[176..187]
108
- self.set_reservado_3 file[188..361]
109
- self.set_valor_rateios file[362..376]
110
- self.set_qtde_rateios file[377..384]
111
- self.set_reservado_4 file[385..393]
112
- self.set_sequencial_retorno file[394..399]
113
- end
114
-
115
- #-------------------------------------------------------------------
116
- #-------------------------------------------------------------------
117
- # Validações
118
- def is_valid?
119
- self.get_codigo_remessa > 0 and self.get_sequencial.length > 0
120
- end
121
-
122
- #-------------------------------------------------------------------
123
- #-------------------------------------------------------------------
124
- # Getters
125
- def get_codigo_remessa
126
- self.get_section_value(1).to_i
127
- end
128
-
129
- def get_sequencial
130
- self.get_section_value(3)
131
- end
132
-
133
- #-------------------------------------------------------------------
134
- #-------------------------------------------------------------------
135
- # Setters
136
-
137
- def set_branco valor = " "
138
- self.set_section_value(1, valor)
139
- end
140
-
141
- def set_codigo_arquivo valor = ""
142
- self.set_section_value(1, valor)
143
- end
144
-
145
- def set_sequencial valor
146
- self.set_section_value(2, valor.to_s)
147
- end
148
-
149
- def set_tipo_registro valor = ""
150
- self.set_section_value(2, valor)
151
- end
152
-
153
- def set_codigo_banco valor = ""
154
- self.set_section_value(3, valor)
155
- end
156
-
157
- def set_reservado_1 valor = " "
158
- self.set_section_value(4, valor)
159
- end
160
-
161
- def set_qtde_titulos valor = ""
162
- self.set_section_value(5, valor)
163
- end
164
-
165
- def set_valor_cobranca valor = ""
166
- self.set_section_value(6, valor)
167
- end
168
-
169
- def set_numero_aviso valor = ""
170
- self.set_section_value(7, valor)
171
- end
172
-
173
- def set_reservado_2 valor = " "
174
- self.set_section_value(8, valor)
175
- end
176
-
177
- def set_qtde_confirmados valor = ""
178
- self.set_section_value(9, valor)
179
- end
180
-
181
- def set_valor_confirmados valor = ""
182
- self.set_section_value(10, valor)
183
- end
184
-
185
- def set_valor_liquidados valor = ""
186
- self.set_section_value(11, valor)
187
- end
188
-
189
- def set_qtde_liquidados valor = ""
190
- self.set_section_value(12, valor)
191
- end
192
-
193
- def set_valor_ocorrencia_06 valor = ""
194
- self.set_section_value(13, valor)
195
- end
196
-
197
- def set_qtde_baixados valor = ""
198
- self.set_section_value(14, valor)
199
- end
200
-
201
- def set_valor_baixados valor = ""
202
- self.set_section_value(15, valor)
203
- end
204
-
205
- def set_qtde_abatimento_cancelado valor = ""
206
- self.set_section_value(16, valor)
207
- end
208
-
209
- def set_valor_abatimento_cancelado valor = ""
210
- self.set_section_value(17, valor)
211
- end
212
-
213
- def set_qtde_vencimento_alterado valor = ""
214
- self.set_section_value(18, valor)
215
- end
216
-
217
- def set_valor_vencimento_alterado valor = ""
218
- self.set_section_value(19, valor)
219
- end
220
-
221
- def set_qtde_abatimento_concedido valor = ""
222
- self.set_section_value(20, valor)
223
- end
224
-
225
- def set_valor_abatimento_concedido valor = ""
226
- self.set_section_value(21, valor)
227
- end
228
-
229
- def set_qtde_protesto_confirmado valor = ""
230
- self.set_section_value(22, valor)
231
- end
232
-
233
- def set_valor_protesto_confirmado valor = ""
234
- self.set_section_value(23, valor)
235
- end
236
-
237
- def set_reservado_3 valor = " "
238
- self.set_section_value(24, valor)
239
- end
240
-
241
- def set_valor_rateios valor = ""
242
- self.set_section_value(25, valor)
243
- end
244
-
245
- def set_qtde_rateios valor = ""
246
- self.set_section_value(26, valor)
247
- end
248
-
249
- def set_reservado_4 valor = ""
250
- self.set_section_value(27, valor)
251
- end
252
-
253
- def set_sequencial_retorno valor = ""
254
- self.set_section_value(28, valor)
255
- end
256
-
257
- end