formatos-febraban 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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