formatos-febraban 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,114 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Cronograma de Faturamento Contas/Tributos - Empresa
5
+ class Febraban150L < FormatSection
6
+ def initialize master
7
+ super(master, false, true)
8
+
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "L", true), # Código do Registro
11
+ 1 => Position.new(2, 9, true), # Data do Faturamento das Contas
12
+ 2 => Position.new(3, 9, true), # Data do Vencimento da Fatura
13
+ 3 => Position.new(4, 9, true), # Data da Remessa do Arquivo
14
+ 4 => Position.new(5, 9, true), # Data da Remessa das Contas
15
+ 5 => Position.new(6, 104, false) # Reservado pelo Sistema
16
+ }, true)
17
+ end
18
+
19
+ #-------------------------------------------------------------------
20
+ #-------------------------------------------------------------------
21
+ # Gerais
22
+ def process_section file
23
+ self.set_data_faturamento file[1..8]
24
+ self.set_data_vencimento_fatura file[9..16]
25
+ self.set_data_remessa_banco file[17..24]
26
+ self.set_data_remessa_fisica file[25..32]
27
+ self.set_reservado file[33..149]
28
+ end
29
+
30
+ #-------------------------------------------------------------------
31
+ #-------------------------------------------------------------------
32
+ # Validações
33
+ def is_valid?
34
+ result = (!self.get_id_cliente_empresa.nil? and
35
+ !self.get_agencia_debito.nil? and
36
+ !self.get_id_cliente_banco.nil? and
37
+ !self.get_id_cliente.nil?)
38
+ end
39
+
40
+ #-------------------------------------------------------------------
41
+ #-------------------------------------------------------------------
42
+ # Getters
43
+ def get_data_faturamento
44
+ data = self.set_section_value(1)
45
+ Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
46
+ end
47
+
48
+ def get_data_vencimento_fatura
49
+ data = self.set_section_value(2)
50
+ Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
51
+ end
52
+
53
+ def get_data_remessa_banco
54
+ data = self.set_section_value(3)
55
+ Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
56
+ end
57
+
58
+ def get_data_remessa_fisica
59
+ data = self.set_section_value(4)
60
+ Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
61
+ end
62
+
63
+ #-------------------------------------------------------------------
64
+ #-------------------------------------------------------------------
65
+ # Setters
66
+ def set_data_faturamento data
67
+ data = data.to_i
68
+
69
+ if data > 0
70
+ self.set_section_value(1, data)
71
+ else
72
+ raise "#{self.get_id}: Data de Faturamento das Contas não pode estar vazia
73
+ Valor: #{data}"
74
+ end
75
+ end
76
+
77
+ def set_data_vencimento_fatura data
78
+ data = data.to_i
79
+
80
+ if data > 0
81
+ self.set_section_value(2, data)
82
+ else
83
+ raise "#{self.get_id}: Data de Vencimento da Fatura não pode estar vazia
84
+ Valor: #{data}"
85
+ end
86
+ end
87
+
88
+ def set_data_remessa_banco data
89
+ data = data.to_i
90
+
91
+ if data > 0
92
+ self.set_section_value(3, data)
93
+ else
94
+ raise "#{self.get_id}: Data de Remessa ao Banco não pode estar vazia
95
+ Valor: #{data}"
96
+ end
97
+ end
98
+
99
+ def set_data_remessa_fisica data
100
+ data = data.to_i
101
+
102
+ if data > 0
103
+ self.set_section_value(4, data)
104
+ else
105
+ raise "#{self.get_id}: Data de Remessa Física não pode estar vazia
106
+ Valor: #{data}"
107
+ end
108
+ end
109
+
110
+ def set_reservado reservado
111
+ reservado = reservado.to_s
112
+ self.set_section_value(5, reservado)
113
+ end
114
+ end
@@ -0,0 +1,74 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Total de Clientes debitados - Banco
5
+ class Febraban150T < FormatSection
6
+ def initialize master
7
+ super(master, true, false)
8
+
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "T", true), # Código do Registro
11
+ 1 => Position.new(2, 6, true), # Total de Registros Debitados
12
+ 2 => Position.new(3, 17, true), # Valor dos Registros Debitados
13
+ 3 => Position.new(4, 126, false) # Reservado pelo Sistema
14
+ }, true)
15
+ end
16
+
17
+ #-------------------------------------------------------------------
18
+ #-------------------------------------------------------------------
19
+ # Gerais
20
+ def process_section file
21
+ self.set_total_debitados file[1..6]
22
+ self.set_valor_total_debitados file[7..23]
23
+ self.set_reservado file[24..149]
24
+ end
25
+
26
+ #-------------------------------------------------------------------
27
+ #-------------------------------------------------------------------
28
+ # Validações
29
+ def is_valid?
30
+ result = (self.get_total_debitados >= 0 and
31
+ self.get_valor_total_debitados >= 0 )
32
+ end
33
+
34
+ #-------------------------------------------------------------------
35
+ #-------------------------------------------------------------------
36
+ # Getters
37
+ def get_total_debitados
38
+ self.set_section_value(1).to_i
39
+ end
40
+
41
+ def get_valor_total_debitados
42
+ self.set_section_value(2).to_i
43
+ end
44
+
45
+ #-------------------------------------------------------------------
46
+ #-------------------------------------------------------------------
47
+ # Setters
48
+ def set_total_debitados valor
49
+ valor = valor.to_i
50
+
51
+ if valor >= 0
52
+ self.set_section_value(1, valor)
53
+ else
54
+ raise "#{self.get_id}: Total dos Arquivos Debitados deve ser positivo ou 0
55
+ Valor: #{valor}"
56
+ end
57
+ end
58
+
59
+ def set_valor_total_debitados valor
60
+ valor = valor.to_i
61
+
62
+ if valor >= 0
63
+ self.set_section_value(2, valor)
64
+ else
65
+ raise "#{self.get_id}: Valor Total dos Arquivos Debitados deve ser positivo ou 0
66
+ Valor: #{valor}"
67
+ end
68
+ end
69
+
70
+ def set_reservado reservado
71
+ reservado = reservado.to_s
72
+ self.set_section_value(3, reservado)
73
+ end
74
+ end
@@ -0,0 +1,214 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Relação de Agências - Banco
5
+ class Febraban150X < FormatSection
6
+ def initialize master
7
+ super(master, true, false, false)
8
+
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "X", true), # Código do Registro
11
+ 1 => Position.new(2, 4, false), # Código da Agência
12
+ 2 => Position.new(3, 30, false), # Nome da Agência
13
+ 3 => Position.new(4, 30, false), # Endereço da Agência
14
+ 4 => Position.new(5, 5, false), # Número
15
+ 5 => Position.new(6, 5, false), # Código do CEP
16
+ 6 => Position.new(7, 3, false), # Sufixo do CEP
17
+ 7 => Position.new(8, 20, false), # Nome da Cidade
18
+ 8 => Position.new(9, 2, false), # Sigla do Estado
19
+ 9 => Position.new(10, 1, false), # Situação da Agência (A, B)
20
+ 10 => Position.new(11, 49, false) # Reservado pelo Sistema
21
+ }, true)
22
+ end
23
+
24
+ #-------------------------------------------------------------------
25
+ #-------------------------------------------------------------------
26
+ # Gerais
27
+ def process_section file
28
+ self.set_codigo_agencia file[1..4]
29
+ self.set_nome_agencia file[5..34]
30
+ self.set_endereco_agencia file[35..64]
31
+ self.set_numero_agencia file[65..69]
32
+ self.set_codigo_cep file[70..74]
33
+ self.set_sufixo_cep file[75..77]
34
+ self.set_nome_cidade file[78..97]
35
+ self.set_estado file[98..99]
36
+ self.set_situacao_agencia file[100..100]
37
+ self.set_reservado file[101..149]
38
+ end
39
+
40
+ #-------------------------------------------------------------------
41
+ #-------------------------------------------------------------------
42
+ # Validações
43
+ def is_valid?
44
+ result = (self.get_codigo_agencia.length > 0 and
45
+ self.get_nome_agencia.length > 0 and
46
+ self.get_endereco_agencia.length > 0 and
47
+ self.get_numero_agencia.length > 0 and
48
+ self.get_codigo_cep.length == 5 and
49
+ self.get_sufixo_cep.length == 3 and
50
+ self.get_nome_cidade.length > 0 and
51
+ self.get_estado.length == 2 and
52
+ (self.get_situacao_agencia == "A" or
53
+ self.get_situacao_agencia == "B"))
54
+ end
55
+
56
+ #-------------------------------------------------------------------
57
+ #-------------------------------------------------------------------
58
+ # Getters
59
+ def get_codigo_agencia
60
+ self.set_section_value(1)
61
+ end
62
+
63
+ def get_nome_agencia
64
+ self.set_section_value(2)
65
+ end
66
+
67
+ def get_endereco_agencia
68
+ self.set_section_value(3)
69
+ end
70
+
71
+ def get_numero_agencia
72
+ self.set_section_value(4)
73
+ end
74
+
75
+ def get_codigo_cep
76
+ self.set_section_value(5)
77
+ end
78
+
79
+ def get_sufixo_cep
80
+ self.set_section_value(6)
81
+ end
82
+
83
+ def get_nome_cidade
84
+ self.set_section_value(7)
85
+ end
86
+
87
+ def get_estado
88
+ self.set_section_value(8)
89
+ end
90
+
91
+ def get_situacao_agencia
92
+ self.set_section_value(9)
93
+ end
94
+
95
+ def get_cep
96
+ "#{self.get_codigo_cep}#{self.get_sufixo_cep}"
97
+ end
98
+
99
+ #-------------------------------------------------------------------
100
+ #-------------------------------------------------------------------
101
+ # Setters
102
+ def set_codigo_agencia codigo
103
+ codigo = codigo.to_s
104
+
105
+ if codigo.length > 0
106
+ self.set_section_value(1, codigo)
107
+ else
108
+ raise "#{self.get_id}: Código da Agência deve estar preenchido
109
+ Valor: #{codigo}"
110
+ end
111
+ end
112
+
113
+ def set_nome_agencia nome
114
+ nome = nome.to_s
115
+
116
+ if nome.length > 0
117
+ self.set_section_value(2, nome)
118
+ else
119
+ raise "#{self.get_id}: Nome da Agência deve estar preenchido
120
+ Valor: #{nome}"
121
+ end
122
+ end
123
+
124
+ def set_endereco_agencia endereco
125
+ endereco = endereco.to_s
126
+
127
+ if endereco.length > 0
128
+ self.set_section_value(3, endereco)
129
+ else
130
+ raise "#{self.get_id}: Endereço da Agência deve estar preenchido
131
+ Valor: #{endereco}"
132
+ end
133
+ end
134
+
135
+ def set_numero_agencia numero
136
+ numero = numero.to_s
137
+
138
+ if numero.length > 0
139
+ self.set_section_value(4, numero)
140
+ else
141
+ raise "#{self.get_id}: Número da Agência deve estar preenchido
142
+ Valor: #{numero}"
143
+ end
144
+ end
145
+
146
+ def set_codigo_cep codigo
147
+ codigo = codigo.to_s
148
+
149
+ if codigo.length == 5
150
+ self.set_section_value(5, codigo)
151
+ else
152
+ raise "#{self.get_id}: Código do CEP da Agência deve ter 5 dígitos
153
+ Valor: #{codigo}"
154
+ end
155
+ end
156
+
157
+ def set_sufixo_cep codigo
158
+ codigo = codigo.to_s
159
+
160
+ if codigo.length == 3
161
+ self.set_section_value(6, codigo)
162
+ else
163
+ raise "#{self.get_id}: Código do CEP da Agência deve ter 3 dígitos
164
+ Valor: #{codigo}"
165
+ end
166
+ end
167
+
168
+ def set_nome_cidade cidade
169
+ cidade = cidade.to_s
170
+
171
+ if cidade.length > 0
172
+ self.set_section_value(7, cidade)
173
+ else
174
+ raise "#{self.get_id}: Cidade da Agência deve estar preenchido
175
+ Valor: #{cidade}"
176
+ end
177
+ end
178
+
179
+ def set_estado estado
180
+ estado = estado.to_s
181
+
182
+ if estado.length == 2
183
+ self.set_section_value(8, estado)
184
+ else
185
+ raise "#{self.get_id}: Estado da Agência estar em siglas de 2 caracteres
186
+ Valor: #{estado}"
187
+ end
188
+ end
189
+
190
+ def set_situacao_agencia situacao
191
+ situacao = situacao.to_s
192
+
193
+ if situacao == "A" or situacao == "B"
194
+ self.set_section_value(9, situacao)
195
+ else
196
+ raise "#{self.get_id}: Agência permite estados:
197
+ A: Ativa
198
+ B: Em regime de Encerramento
199
+ Valor: #{situacao}"
200
+ end
201
+ end
202
+
203
+ def set_reservado reservado
204
+ reservado = reservado.to_s
205
+ self.set_section_value(10, reservado)
206
+ end
207
+
208
+ def set_cep codigo
209
+ codigo = codigo.to_s
210
+
211
+ self.set_codigo_cep(codigo[0..4])
212
+ self.set_sufixo_cep(codigo[5..7])
213
+ end
214
+ end
@@ -0,0 +1,74 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Footer/Trailler - Empresa/Banco
5
+ class Febraban150Z < FormatSection
6
+ def initialize master
7
+ super(master, true, true, false)
8
+
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "Z", true), # Código do Registro
11
+ 1 => Position.new(2, 6, true), # Total de Registros no Arquivo
12
+ 2 => Position.new(3, 17, true), # Valor Total dos Registros
13
+ 3 => Position.new(4, 126, false) # Reservado pelo Sistema
14
+ })
15
+ end
16
+
17
+ #-------------------------------------------------------------------
18
+ #-------------------------------------------------------------------
19
+ # Gerais
20
+ def process_section file
21
+ self.set_total_registros file[1..6]
22
+ self.set_valor_total file[7..23]
23
+ self.set_reservado file[24..149]
24
+ end
25
+
26
+ #-------------------------------------------------------------------
27
+ #-------------------------------------------------------------------
28
+ # Validações
29
+ def is_valid?
30
+ result = (self.get_total_registros > 0 and
31
+ self.get_valor_total > 0)
32
+ end
33
+
34
+ #-------------------------------------------------------------------
35
+ #-------------------------------------------------------------------
36
+ # Getters
37
+ def get_total_registros
38
+ self.get_section_value(1).to_i
39
+ end
40
+
41
+ def get_valor_total
42
+ self.get_section_value(2).to_i
43
+ end
44
+
45
+ #-------------------------------------------------------------------
46
+ #-------------------------------------------------------------------
47
+ # Setters
48
+ def set_total_registros registros
49
+ registros = registros.to_i
50
+
51
+ if registros > 0
52
+ self.set_section_value(1, registros)
53
+ else
54
+ raise "#{get_id}: A quantidade de registros deve ser positiva e maior que 0
55
+ Valor: #{registros}"
56
+ end
57
+ end
58
+
59
+ def set_valor_total valor
60
+ valor = valor.to_i
61
+
62
+ if valor > 0
63
+ self.set_section_value(2, valor)
64
+ else
65
+ raise "#{get_id}: A quantidade de registros deve ser positiva e maior que 0
66
+ Valor: #{valor}"
67
+ end
68
+ end
69
+
70
+ def set_reservado reservado
71
+ reservado = reservado.to_s
72
+ self.set_section_value(3, reservado)
73
+ end
74
+ end