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,89 @@
1
+ module V08
2
+ require_relative 'header_commons'
3
+
4
+ module Remessa
5
+ class Header < FormatSection
6
+ include V08HeaderCommons
7
+
8
+ def initialize
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "0", true), # Código do Registro
11
+ 1 => Position.new(2, 1, false, "1"), # Código Arquivo (1-Remessa, 2-Retorno)
12
+ 2 => Position.new(3, 7, false, "REMESSA"), # Identificação literal do arquivo (REMESSA/RETORNO)
13
+ 3 => Position.new(4, 2, false, "01"), # Código do serviço
14
+ 4 => Position.new(5, 15, false, "COBRANCA"), # Literal do serviço (COBRANÇA)
15
+ 5 => Position.new(6, 20, true), # Código da Empresa
16
+ 6 => Position.new(7, 30, false), # Nome da Empresa
17
+ 7 => Position.new(8, 3, true), # Número do Banco (BRADESCO: 237)
18
+ 8 => Position.new(9, 15, false), # Nome do Banco
19
+ 9 => Position.new(10, 6, false), # Data de gravacao do arquivo (DDMMAA)
20
+ 10 => Position.new(11, 8, false), # Reservado pelo Sistema - branco
21
+ 11 => Position.new(12, 2, false, "01"), # Identificacao do sistema (01: remessa)
22
+ 12 => Position.new(13, 7, true), # Numero sequencial da remessa
23
+ 13 => Position.new(14, 277, false), # Reservado pelo Sistema - branco
24
+ 14 => Position.new(15, 6, false, "000001") # Numero sequencial no arquivo
25
+ })
26
+ end
27
+
28
+ def set_values params
29
+ set_codigo_empresa params[:codigo]
30
+ set_nome_empresa params[:nome_empresa]
31
+ set_numero_banco params[:numero_banco]
32
+ set_nome_banco params[:nome_banco]
33
+ set_data_gravacao Date.today
34
+ set_reservado_1
35
+ set_sequencial_remessa params[:sequencial]
36
+ set_reservado_2
37
+ end
38
+ end
39
+ end
40
+
41
+ module Retorno
42
+ class Header < FormatSection
43
+ include V08HeaderCommons
44
+
45
+ def initialize
46
+ @section = Section.new({
47
+ 0 => Position.new(1, 1, false, "0", true), # Código do Registro
48
+ 1 => Position.new(2, 1, false, "2"), # Código Arquivo (1-Remessa, 2-Retorno)
49
+ 2 => Position.new(3, 7, false, "RETORNO"), # Identificação literal do arquivo (REMESSA/RETORNO)
50
+ 3 => Position.new(4, 2, false, "01"), # Código do serviço
51
+ 4 => Position.new(5, 15, false, "COBRANCA"), # Literal do serviço (COBRANÇA)
52
+ 5 => Position.new(6, 20, true), # Código da Empresa
53
+ 6 => Position.new(7, 30, false), # Nome da Empresa
54
+ 7 => Position.new(8, 3, true), # Número do Banco (BRADESCO: 237)
55
+ 8 => Position.new(9, 15, false), # Nome do Banco
56
+ 9 => Position.new(10, 6, false), # Data de gravacao do arquivo (DDMMAA)
57
+ 10 => Position.new(11, 8, false), # Densidade da gravacao do arquivo
58
+ 11 => Position.new(12, 5, false), # Numero do aviso bancario
59
+ 12 => Position.new(13, 266, false), # Reservado pelo Sistema - branco
60
+ 13 => Position.new(14, 6, false), # Data do crédito (DDMMAA)
61
+ 14 => Position.new(15, 9, false), # Reservado pelo Sistema - branco
62
+ 15 => Position.new(16, 6, false) # Numero sequencial no arquivo
63
+ })
64
+ end
65
+
66
+ def process_section file
67
+ set_codigo_arquivo file[1..1]
68
+ set_literal_arquivo file[2..8]
69
+ set_codigo_servico file[9..10]
70
+ set_literal_servico file[11..25]
71
+ set_codigo_empresa file[26..45]
72
+ set_nome_empresa file[46..75]
73
+ set_numero_banco file[76..78]
74
+ set_nome_banco file[79..93]
75
+ set_data_gravacao file[94..99]
76
+ set_densidade_arquivo file[100..107]
77
+ set_numero_aviso file[108..112]
78
+ set_brancos_1 file[113..378]
79
+ set_data_credito file[379..384]
80
+ set_brancos_2 file[385..393]
81
+ set_sequencial_retorno file[394..399]
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+
88
+
89
+
@@ -0,0 +1,179 @@
1
+
2
+ module V08HeaderCommons
3
+
4
+ #-------------------------------------------------------------------
5
+ #-------------------------------------------------------------------
6
+ # Validações
7
+ def is_valid?
8
+ self.get_codigo_arquivo > 0 and
9
+ self.get_data_gravacao.length > 0 and
10
+ self.get_nome_empresa.length > 0 and
11
+ self.get_identificacao_sistema.length > 0 and
12
+ self.get_nome_banco.length > 0
13
+ end
14
+
15
+
16
+ #-------------------------------------------------------------------
17
+ #-------------------------------------------------------------------
18
+ # Getters
19
+ def get_codigo_arquivo
20
+ self.get_section_value(1).to_i
21
+ end
22
+
23
+ def get_identificacao_arquivo
24
+ self.get_section_value(2)
25
+ end
26
+
27
+ def get_codigo_servico
28
+ self.get_section_value(3)
29
+ end
30
+
31
+ def get_literal_servico
32
+ self.get_section_value(4)
33
+ end
34
+
35
+ def get_codigo_empresa
36
+ self.get_section_value(5)
37
+ end
38
+
39
+ def get_nome_empresa
40
+ self.get_section_value(6)
41
+ end
42
+
43
+ def get_numero_banco
44
+ self.get_section_value(7)
45
+ end
46
+
47
+ def get_nome_banco
48
+ self.get_section_value(8)
49
+ end
50
+
51
+ def get_data_gravacao
52
+ self.get_section_value(9)
53
+ end
54
+
55
+ def get_identificacao_sistema
56
+ self.get_section_value(11)
57
+ end
58
+
59
+ def get_sequencial_remessa
60
+ self.get_section_value(12)
61
+ end
62
+
63
+ def get_sequencial
64
+ self.get_section_value(14)
65
+ end
66
+
67
+ #-------------------------------------------------------------------
68
+ #-------------------------------------------------------------------
69
+ # Setters
70
+ def set_codigo_arquivo valor = ""
71
+ self.set_section_value(1, valor)
72
+ end
73
+
74
+ def set_identificacao_arquivo valor = ""
75
+ self.set_section_value(2, valor)
76
+ end
77
+
78
+ def set_literal_arquivo valor = ""
79
+ self.set_section_value(2, valor)
80
+ end
81
+
82
+ def set_codigo_servico valor = ""
83
+ self.set_section_value(3, valor)
84
+ end
85
+
86
+ def set_literal_servico valor = ""
87
+ self.set_section_value(4, valor)
88
+ end
89
+
90
+ def set_codigo_empresa valor = ""
91
+ self.set_section_value(5, valor)
92
+ end
93
+
94
+ def set_nome_empresa valor = ""
95
+ self.set_section_value(6, valor)
96
+ end
97
+
98
+ def set_numero_banco valor = ""
99
+ self.set_section_value(7, valor)
100
+ end
101
+
102
+ def set_nome_banco valor = ""
103
+ self.set_section_value(8, valor)
104
+ end
105
+
106
+ def set_data_gravacao valor = ""
107
+ begin
108
+ valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
109
+ real_data = valor.strftime("%d%m%y")
110
+
111
+ if real_data.length == 6
112
+ self.set_section_value(9, real_data)
113
+ else
114
+ raise "tamanho de data incorreto"
115
+ end
116
+
117
+ rescue
118
+ raise "#{get_id}: Data de Geração Inválida
119
+ Valor: #{valor}"
120
+ end
121
+ end
122
+
123
+ def set_reservado_1 valor = " "
124
+ self.set_section_value(10, valor)
125
+ end
126
+
127
+ def set_densidade_arquivo valor = " "
128
+ self.set_section_value(10, valor)
129
+ end
130
+
131
+ def set_identificacao_sistema valor
132
+ self.set_section_value(11, valor)
133
+ end
134
+
135
+ def set_numero_aviso valor = ""
136
+ self.set_section_value(11, valor)
137
+ end
138
+
139
+ def set_sequencial_remessa valor = ""
140
+ self.set_section_value(12, valor)
141
+ end
142
+
143
+ def set_brancos_1 valor = " "
144
+ self.set_section_value(12, valor)
145
+ end
146
+
147
+ def set_reservado_2 valor = " "
148
+ self.set_section_value(13, valor)
149
+ end
150
+
151
+ def set_data_credito valor = ""
152
+ begin
153
+ valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
154
+ real_data = valor.strftime("%d%m%y")
155
+
156
+ if real_data.length == 6
157
+ self.set_section_value(13, real_data)
158
+ else
159
+ raise "tamanho de data incorreto"
160
+ end
161
+
162
+ rescue
163
+ raise "#{get_id}: Data de Geração Inválida
164
+ Valor: #{valor}"
165
+ end
166
+ end
167
+
168
+ def set_sequencial valor = ""
169
+ self.set_section_value(14, valor)
170
+ end
171
+
172
+ def set_brancos_2 valor = " "
173
+ self.set_section_value(14, valor)
174
+ end
175
+
176
+ def set_sequencial_retorno valor = ""
177
+ self.set_section_value(15, valor)
178
+ end
179
+ end
@@ -0,0 +1,106 @@
1
+ module V08
2
+ require_relative 'trailler_commons'
3
+
4
+ module Remessa
5
+ class Trailler < FormatSection
6
+ include V08TraillerCommons
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, 393, false, " "), # Reservado - Brancos
12
+ 2 => Position.new(3, 6, true), # Numero sequencial do registro
13
+ })
14
+ end
15
+
16
+ def set_value params
17
+
18
+ end
19
+
20
+ def is_valid?
21
+ get_codigo_remessa > 0 and
22
+ get_sequencial.length > 0
23
+ end
24
+ end
25
+ end
26
+
27
+ module Retorno
28
+ class Trailler < FormatSection
29
+ include V08TraillerCommons
30
+
31
+ def initialize
32
+ @section = Section.new({
33
+ 0 => Position.new(1, 1, false, "9", true), # Código do Registro
34
+ 1 => Position.new(2, 1, true, "2"), # Código Arquivo (1-Remessa, 2-Retorno)
35
+ 2 => Position.new(3, 2, true, "01"), # Id tipo de registro
36
+ 3 => Position.new(4, 3, true), # Codigo do banco
37
+ 4 => Position.new(5, 10, false), # Reservado - branco
38
+ 5 => Position.new(6, 8, false), # Qtde de titulo na cobranca
39
+ 6 => Position.new(7, 14, false), # Valor total em cobranca
40
+ 7 => Position.new(8, 8, false), # Numero aviso bancario
41
+ 8 => Position.new(9, 10, false), # Reservado - branco
42
+ 9 => Position.new(10, 5, false), # Qtde de registros - confirmacao
43
+ 10 => Position.new(11, 12, false), # Valor dos registros - confirmacao
44
+ 11 => Position.new(12, 12, false), # Valor dos registros - liquidacao
45
+ 12 => Position.new(13, 5, false), # Qtde dos registros - liquidacao
46
+ 13 => Position.new(14, 12, false), # Valor dos registros - ocorrencia 06
47
+ 14 => Position.new(15, 5, false), # Qtde dos registros - baixados
48
+ 15 => Position.new(16, 12, false), # Valor dos registros - baixados
49
+ 16 => Position.new(17, 5, false), # Qtde dos registros - abatimento cancelado
50
+ 17 => Position.new(18, 12, false), # Valor dos registros - abatimento cancelado
51
+ 18 => Position.new(19, 5, false), # Qtde dos registros - vencimento alterado
52
+ 19 => Position.new(20, 12, false), # Valor dos registros - vencimento alterado
53
+ 20 => Position.new(21, 5, false), # Qtde dos registros - abatimento concedido
54
+ 21 => Position.new(22, 12, false), # Valor dos registros - abatimento concedido
55
+ 22 => Position.new(23, 5, false), # Qtde dos registros - confirmacao instrucao protesto
56
+ 23 => Position.new(24, 12, false), # Valor dos registros - confirmacao instrucao protesto
57
+ 24 => Position.new(25, 174, false), # Reservado - branco
58
+ 25 => Position.new(26, 15, false), # Valor total rateios
59
+ 26 => Position.new(27, 8, false), # Qtde total rateios
60
+ 27 => Position.new(28, 9, false), # Reservado - branco
61
+ 28 => Position.new(29, 6, false) # Numero sequencial do registro
62
+ })
63
+ end
64
+
65
+ def process_section file
66
+ set_codigo_arquivo file[1..1]
67
+ set_tipo_registro file[2..3]
68
+ set_codigo_banco file[4..6]
69
+ set_reservado_1 file[7..16]
70
+ set_qtde_titulos file[17..24]
71
+ set_valor_cobranca file[25..38]
72
+ set_numero_aviso file[39..46]
73
+ set_reservado_2 file[47..56]
74
+ set_qtde_confirmados file[57..61]
75
+ set_valor_confirmados file[62..73]
76
+ set_valor_liquidados file[74..85]
77
+ set_qtde_liquidados file[86..90]
78
+ set_valor_ocorrencia_06 file[91..102]
79
+ set_qtde_baixados file[103..107]
80
+ set_valor_baixados file[108..119]
81
+ set_qtde_abatimento_cancelado file[120..124]
82
+ set_valor_abatimento_cancelado file[125..136]
83
+ set_qtde_vencimento_alterado file[137..141]
84
+ set_valor_vencimento_alterado file[142..153]
85
+ set_qtde_abatimento_concedido file[154..158]
86
+ set_valor_abatimento_concedido file[159..170]
87
+ set_qtde_protesto_confirmado file[171..175]
88
+ set_valor_protesto_confirmado file[176..187]
89
+ set_reservado_3 file[188..361]
90
+ set_valor_rateios file[362..376]
91
+ set_qtde_rateios file[377..384]
92
+ set_reservado_4 file[385..393]
93
+ set_sequencial_retorno file[394..399]
94
+ end
95
+
96
+ def is_valid?
97
+ get_codigo_arquivo.length > 0 and
98
+ get_total_titulos.length > 0 and
99
+ get_total_cobranca.length and
100
+ get_sequencial_retorno.length
101
+ end
102
+
103
+ end
104
+ end
105
+
106
+ end
@@ -0,0 +1,153 @@
1
+ module V08TraillerCommons
2
+
3
+ #-------------------------------------------------------------------
4
+ #-------------------------------------------------------------------
5
+ # Getters
6
+ def get_codigo_remessa
7
+ self.get_section_value(1).to_i
8
+ end
9
+
10
+ def get_sequencial
11
+ self.get_section_value(3)
12
+ end
13
+
14
+ def get_codigo_arquivo
15
+ self.get_section_value(1)
16
+ end
17
+
18
+ def get_total_titulos
19
+ self.get_section_value(5)
20
+ end
21
+
22
+ def get_total_cobranca
23
+ self.get_section_value(6)
24
+ end
25
+
26
+ def get_sequencial_retorno
27
+ self.get_section_value(28)
28
+ end
29
+
30
+ #-------------------------------------------------------------------
31
+ #-------------------------------------------------------------------
32
+ # Setters
33
+
34
+ def set_branco valor = " "
35
+ self.set_section_value(1, valor)
36
+ end
37
+
38
+ def set_codigo_arquivo valor = ""
39
+ self.set_section_value(1, valor)
40
+ end
41
+
42
+ def set_sequencial valor
43
+ self.set_section_value(2, valor.to_s)
44
+ end
45
+
46
+ def set_tipo_registro valor = ""
47
+ self.set_section_value(2, valor)
48
+ end
49
+
50
+ def set_codigo_banco valor = ""
51
+ self.set_section_value(3, valor)
52
+ end
53
+
54
+ def set_reservado_1 valor = " "
55
+ self.set_section_value(4, valor)
56
+ end
57
+
58
+ def set_qtde_titulos valor = ""
59
+ self.set_section_value(5, valor)
60
+ end
61
+
62
+ def set_valor_cobranca valor = ""
63
+ self.set_section_value(6, valor)
64
+ end
65
+
66
+ def set_numero_aviso valor = ""
67
+ self.set_section_value(7, valor)
68
+ end
69
+
70
+ def set_reservado_2 valor = " "
71
+ self.set_section_value(8, valor)
72
+ end
73
+
74
+ def set_qtde_confirmados valor = ""
75
+ self.set_section_value(9, valor)
76
+ end
77
+
78
+ def set_valor_confirmados valor = ""
79
+ self.set_section_value(10, valor)
80
+ end
81
+
82
+ def set_valor_liquidados valor = ""
83
+ self.set_section_value(11, valor)
84
+ end
85
+
86
+ def set_qtde_liquidados valor = ""
87
+ self.set_section_value(12, valor)
88
+ end
89
+
90
+ def set_valor_ocorrencia_06 valor = ""
91
+ self.set_section_value(13, valor)
92
+ end
93
+
94
+ def set_qtde_baixados valor = ""
95
+ self.set_section_value(14, valor)
96
+ end
97
+
98
+ def set_valor_baixados valor = ""
99
+ self.set_section_value(15, valor)
100
+ end
101
+
102
+ def set_qtde_abatimento_cancelado valor = ""
103
+ self.set_section_value(16, valor)
104
+ end
105
+
106
+ def set_valor_abatimento_cancelado valor = ""
107
+ self.set_section_value(17, valor)
108
+ end
109
+
110
+ def set_qtde_vencimento_alterado valor = ""
111
+ self.set_section_value(18, valor)
112
+ end
113
+
114
+ def set_valor_vencimento_alterado valor = ""
115
+ self.set_section_value(19, valor)
116
+ end
117
+
118
+ def set_qtde_abatimento_concedido valor = ""
119
+ self.set_section_value(20, valor)
120
+ end
121
+
122
+ def set_valor_abatimento_concedido valor = ""
123
+ self.set_section_value(21, valor)
124
+ end
125
+
126
+ def set_qtde_protesto_confirmado valor = ""
127
+ self.set_section_value(22, valor)
128
+ end
129
+
130
+ def set_valor_protesto_confirmado valor = ""
131
+ self.set_section_value(23, valor)
132
+ end
133
+
134
+ def set_reservado_3 valor = " "
135
+ self.set_section_value(24, valor)
136
+ end
137
+
138
+ def set_valor_rateios valor = ""
139
+ self.set_section_value(25, valor)
140
+ end
141
+
142
+ def set_qtde_rateios valor = ""
143
+ self.set_section_value(26, valor)
144
+ end
145
+
146
+ def set_reservado_4 valor = ""
147
+ self.set_section_value(27, valor)
148
+ end
149
+
150
+ def set_sequencial_retorno valor = ""
151
+ self.set_section_value(28, valor)
152
+ end
153
+ end