formatos-febraban 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +39 -0
- data/Rakefile +1 -0
- data/base/format_section.rb +79 -0
- data/base/position.rb +88 -0
- data/base/section.rb +41 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/formatos-febraban.gemspec +24 -0
- data/formats/febraban150/febraban_150.rb +505 -0
- data/formats/febraban150/febraban_150_a.rb +210 -0
- data/formats/febraban150/febraban_150_b.rb +132 -0
- data/formats/febraban150/febraban_150_c.rb +149 -0
- data/formats/febraban150/febraban_150_d.rb +149 -0
- data/formats/febraban150/febraban_150_e.rb +226 -0
- data/formats/febraban150/febraban_150_f.rb +271 -0
- data/formats/febraban150/febraban_150_h.rb +149 -0
- data/formats/febraban150/febraban_150_i.rb +151 -0
- data/formats/febraban150/febraban_150_j.rb +130 -0
- data/formats/febraban150/febraban_150_k.rb +188 -0
- data/formats/febraban150/febraban_150_l.rb +114 -0
- data/formats/febraban150/febraban_150_t.rb +74 -0
- data/formats/febraban150/febraban_150_x.rb +214 -0
- data/formats/febraban150/febraban_150_z.rb +74 -0
- data/lib/formatos/febraban.rb +7 -0
- data/lib/formatos/febraban/version.rb +5 -0
- metadata +103 -0
@@ -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
|