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,149 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Ocorrência da Alteração Cliente/Empresa - Banco
5
+ class Febraban150H < FormatSection
6
+ def initialize master
7
+ super(master, true, false)
8
+
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "H", true), # Código do Registro
11
+ 1 => Position.new(2, 25, false), # Identificação do Cliente Empresa Old
12
+ 2 => Position.new(3, 4, false), # Agência para Débito
13
+ 3 => Position.new(4, 14, false), # Identificação Cliente Banco
14
+ 4 => Position.new(5, 25, false), # Identificação do Cliente Empresa New
15
+ 5 => Position.new(6, 58, false), # Ocorrência
16
+ 6 => Position.new(7, 22, false), # Reservado pelo Sistema
17
+ 7 => Position.new(8, 1, true) # Código de Movimento (Seção D)
18
+ })
19
+ end
20
+
21
+ #-------------------------------------------------------------------
22
+ #-------------------------------------------------------------------
23
+ # Gerais
24
+ def process_section file
25
+ self.set_id_cliente_empresa_old file[1..25]
26
+ self.set_agencia_debito file[26..29]
27
+ self.set_id_cliente_banco file[30..43]
28
+ self.set_id_cliente_empresa_new file[44..68]
29
+ self.set_ocorrencia file[69..128]
30
+ self.set_reservado file[129..148]
31
+ self.set_cod_movimento file[149..149]
32
+ end
33
+
34
+ #-------------------------------------------------------------------
35
+ #-------------------------------------------------------------------
36
+ # Validações
37
+ def is_valid?
38
+ result = (self.get_id_cliente_empresa_old.length > 0 and
39
+ self.get_agencia_debito.length > 0 and
40
+ self.get_id_cliente_banco.length > 0 and
41
+ self.get_id_cliente_empresa_new.length > 0 and
42
+ self.get_ocorrencia.length > 0 and
43
+ (self.get_cod_movimento == 0 or
44
+ self.get_cod_movimento == 1))
45
+ end
46
+
47
+ #-------------------------------------------------------------------
48
+ #-------------------------------------------------------------------
49
+ # Getters
50
+ def get_id_cliente_empresa_old
51
+ self.get_section_value(1)
52
+ end
53
+
54
+ def get_agencia_debito
55
+ self.get_section_value(2)
56
+ end
57
+
58
+ def get_id_cliente_banco
59
+ self.get_section_value(3)
60
+ end
61
+
62
+ def get_id_cliente_empresa_new
63
+ self.get_section_value(4)
64
+ end
65
+
66
+ def get_ocorrencia
67
+ self.get_section_value(5)
68
+ end
69
+
70
+ def get_cod_movimento
71
+ self.get_section_value(7).to_i
72
+ end
73
+
74
+ #-------------------------------------------------------------------
75
+ #-------------------------------------------------------------------
76
+ # Setters
77
+ def set_id_cliente_empresa_old id_cliente_empresa
78
+ id_cliente_empresa = id_cliente_empresa.to_s
79
+
80
+ if id_cliente_empresa.length > 0
81
+ self.set_section_value(1, id_cliente_empresa)
82
+ else
83
+ raise "#{self.get_id}: Identificação do Cliente da Empresa Anterior não pode estar vazio
84
+ Valor: #{id_cliente_empresa}"
85
+ end
86
+ end
87
+
88
+ def set_agencia_debito agencia_debito
89
+ agencia_debito = agencia_debito.to_s
90
+
91
+ if agencia_debito.length > 0
92
+ self.set_section_value(2, agencia_debito)
93
+ else
94
+ raise "#{self.get_id}: Agência do Débito não pode estar vazia
95
+ Valor: #{agencia_debito}"
96
+ end
97
+ end
98
+
99
+ def set_id_cliente_banco id_cliente_banco
100
+ id_cliente_banco = id_cliente_banco.to_s
101
+
102
+ if id_cliente_banco.length > 0
103
+ self.set_section_value(3, id_cliente_banco)
104
+ else
105
+ raise "#{self.get_id}: Identificação do Cliente do Banco não pode estar vazio
106
+ Valor: #{id_cliente_banco}"
107
+ end
108
+ end
109
+
110
+ def set_id_cliente_empresa_new id_cliente_empresa
111
+ id_cliente_empresa = id_cliente_empresa.to_s
112
+
113
+ if id_cliente_empresa.length > 0
114
+ self.set_section_value(4, id_cliente_empresa)
115
+ else
116
+ raise "#{self.get_id}: Identificação do Cliente da Empresa Novo não pode estar vazio
117
+ Valor: #{id_cliente_empresa}"
118
+ end
119
+ end
120
+
121
+ def set_ocorrencia ocorrencia
122
+ ocorrencia = ocorrencia.to_s
123
+
124
+ if ocorrencia.length > 0
125
+ self.set_section_value(5, ocorrencia)
126
+ else
127
+ raise "#{self.get_id}: Motivo de Alteração não pode estar vazio
128
+ Valor: #{ocorrencia}"
129
+ end
130
+ end
131
+
132
+ def set_reservado reservado
133
+ reservado = reservado.to_s
134
+ self.set_section_value(6, reservado)
135
+ end
136
+
137
+ def set_cod_movimento cod_movimento
138
+ cod_movimento = cod_movimento.to_i
139
+
140
+ if cod_movimento == 0 or cod_movimento == 1
141
+ self.set_section_value(7, cod_movimento)
142
+ else
143
+ raise "#{self.get_id}: Código de Movimentação deve ser de Exclusão ou Inclusão:
144
+ 0 = Alteração da Identificação do Cliente na Empresa
145
+ 1 = Exclusão de optante do Débito Automático, solicitado pela Empresa
146
+ Valor: #{cod_movimento}"
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,151 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Incentivo de Débito Automático - Empresa
5
+ class Febraban150I < FormatSection
6
+ def initialize master
7
+ super(master, false, true)
8
+
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "I", true), # Código do Registro
11
+ 1 => Position.new(2, 25, false), # Identificação do Cliente Empresa
12
+ 2 => Position.new(3, 1, false), # Tipo de Identificação (1-CPF, 2-CNPJ)
13
+ 3 => Position.new(4, 14, true), # Identificação
14
+ 4 => Position.new(5, 40, false), # Nome do Consumidor
15
+ 5 => Position.new(6, 30, false), # Cidade do Consumidor
16
+ 6 => Position.new(7, 2, false), # Estado do Consumidor
17
+ 7 => Position.new(8, 37, false) # Reservado pelo Sistema
18
+ }, true)
19
+ end
20
+
21
+ #-------------------------------------------------------------------
22
+ #-------------------------------------------------------------------
23
+ # Gerais
24
+ def process_section file
25
+ self.set_id_cliente_empresa file[1..25]
26
+ self.set_tipo_id_cliente file[26..26]
27
+ self.set_id_cliente file[27..40]
28
+ self.set_nome file[41..80]
29
+ self.set_cidade file[81..110]
30
+ self.set_estado file[111..112]
31
+ self.set_reservado file[113..149]
32
+ end
33
+
34
+ #-------------------------------------------------------------------
35
+ #-------------------------------------------------------------------
36
+ # Validações
37
+ def is_valid?
38
+ result = (self.get_id_cliente_empresa.length > 0 and
39
+ (self.get_tipo_id_cliente == 1 or
40
+ self.get_tipo_id_cliente == 2) and
41
+ self.get_id_cliente.length == 15 and
42
+ self.get_nome.length > 0 and
43
+ self.get_cidade.length > 0 and
44
+ self.get_estado.length > 0)
45
+ end
46
+
47
+ #-------------------------------------------------------------------
48
+ #-------------------------------------------------------------------
49
+ # Getters
50
+ def get_id_cliente_empresa
51
+ self.get_section_value(1)
52
+ end
53
+
54
+ def get_tipo_id_cliente
55
+ self.get_section_value(2).to_i
56
+ end
57
+
58
+ def get_id_cliente
59
+ self.get_section_value(3).to_i
60
+ end
61
+
62
+ def get_nome
63
+ self.get_section_value(4)
64
+ end
65
+
66
+ def get_cidade
67
+ self.get_section_value(5)
68
+ end
69
+
70
+ def get_estado
71
+ self.get_section_value(6)
72
+ end
73
+
74
+ #-------------------------------------------------------------------
75
+ #-------------------------------------------------------------------
76
+ # Setters
77
+ def set_id_cliente_empresa id_cliente_empresa
78
+ id_cliente_empresa = id_cliente_empresa.to_s
79
+
80
+ if id_cliente_empresa.length > 0
81
+ self.set_section_value(1, id_cliente_empresa)
82
+ else
83
+ raise "#{self.get_id}: Identificação do Cliente da Empresa não pode estar vazio
84
+ Valor: #{id_cliente_empresa}"
85
+ end
86
+ end
87
+
88
+ def set_tipo_id_cliente tipo_id_cliente
89
+ tipo_id_cliente = tipo_id_cliente.to_i
90
+
91
+ if tipo_id_cliente == 1 or tipo_id_cliente == 2
92
+ self.set_section_value(2, tipo_id_cliente)
93
+ else
94
+ raise "#{self.get_id}: Tipo de Identificação do Cliente deve ser:
95
+ 1 - CNPJ; 2 - CPF
96
+ Valor: #{tipo_id_cliente}"
97
+ end
98
+ end
99
+
100
+ def set_id_cliente id_cliente
101
+ id_cliente = id_cliente.to_s
102
+ id_cliente.to_i
103
+
104
+ if id_cliente.length == 15
105
+ self.set_section_value(9, id_cliente)
106
+ else
107
+ raise "#{self.get_id}: Identificação do Cliente deve ser CPF ou CNPJ:
108
+ CNPJ: 999999999 = Número, 9999 = Filial, e 99 = DV
109
+ CPF: 0000999999999 = Número, 99 = DV
110
+ Valor: #{id_cliente}"
111
+ end
112
+ end
113
+
114
+ def set_nome nome
115
+ nome = nome.to_s
116
+
117
+ if nome.length > 0
118
+ self.set_section_value(4, nome)
119
+ else
120
+ raise "#{self.get_id}: Nome do Cliente não pode estar em branco
121
+ Valor: #{nome}"
122
+ end
123
+ end
124
+
125
+ def set_cidade cidade
126
+ cidade = cidade.to_s
127
+
128
+ if cidade.length > 0
129
+ self.set_section_value(5, cidade)
130
+ else
131
+ raise "#{self.get_id}: Cidade do Cliente não pode estar em branco
132
+ Valor: #{cidade}"
133
+ end
134
+ end
135
+
136
+ def set_estado estado
137
+ estado = estado.to_s
138
+
139
+ if estado.length > 0
140
+ self.set_section_value(6, estado)
141
+ else
142
+ raise "#{self.get_id}: Estado do Cliente não pode estar em branco
143
+ Valor: #{estado}"
144
+ end
145
+ end
146
+
147
+ def set_reservado reservado
148
+ reservado = reservado.to_s
149
+ self.set_section_value(7, reservado)
150
+ end
151
+ end
@@ -0,0 +1,130 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Confirmação de Processamento - Empresa/Banco
5
+ class Febraban150J < FormatSection
6
+ def initialize master
7
+ super(master, true, true)
8
+
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "J", true), # Código do Registro
11
+ 1 => Position.new(2, 6, true), # Número Sequencial
12
+ 2 => Position.new(3, 8, true), # Data de Geração
13
+ 3 => Position.new(4, 6, true), # Total de Registros Processados
14
+ 4 => Position.new(5, 17, true), # Valor total
15
+ 5 => Position.new(6, 8, true), # Data de processamento
16
+ 6 => Position.new(7, 104, false) # Reservado pelo Sistema
17
+ }, true)
18
+ end
19
+
20
+ #-------------------------------------------------------------------
21
+ #-------------------------------------------------------------------
22
+ # Gerais
23
+ def process_section file
24
+ self.set_numero_sequencial file[1..6]
25
+ self.set_data_geracao file[7..14]
26
+ self.set_total_processados file[15..20]
27
+ self.set_valor_total file[21..37]
28
+ self.set_data_processamento file[38..45]
29
+ self.set_reservado file[46..149]
30
+ end
31
+
32
+ #-------------------------------------------------------------------
33
+ #-------------------------------------------------------------------
34
+ # Validações
35
+ def is_valid?
36
+ result = (self.get_numero_sequencial > 0 and
37
+ !self.get_data_geracao.nil? and
38
+ self.get_total_processados >= 0 and
39
+ self.get_valor_total >= 0 and
40
+ !self.get_data_processamento.nil?)
41
+ end
42
+
43
+ #-------------------------------------------------------------------
44
+ #-------------------------------------------------------------------
45
+ # Getters
46
+ def get_numero_sequencial
47
+ self.set_section_value(1).to_i
48
+ end
49
+
50
+ def get_data_geracao
51
+ data = self.set_section_value(2)
52
+ Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
53
+ end
54
+
55
+ def get_total_processados
56
+ self.set_section_value(3).to_i
57
+ end
58
+
59
+ def get_valor_total
60
+ self.set_section_value(4).to_i
61
+ end
62
+
63
+ def get_data_processamento
64
+ data = self.set_section_value(5)
65
+ Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
66
+ end
67
+
68
+ #-------------------------------------------------------------------
69
+ #-------------------------------------------------------------------
70
+ # Setters
71
+ def set_numero_sequencial numero
72
+ numero = numero.to_i
73
+
74
+ if numero > 0
75
+ self.set_section_value(1, numero)
76
+ else
77
+ raise "#{self.get_id}: Número Sequencial deve ser positivo e maior que 0
78
+ Valor: #{numero}"
79
+ end
80
+ end
81
+
82
+ def set_data_geracao data
83
+ data = data.to_i
84
+
85
+ if data > 0
86
+ self.set_section_value(2, data)
87
+ else
88
+ raise "#{self.get_id}: Data de Geração não pode estar vazia
89
+ Valor: #{data}"
90
+ end
91
+ end
92
+
93
+ def set_total_processados total
94
+ total = total.to_i
95
+
96
+ if total >= 0
97
+ self.set_section_value(3, total)
98
+ else
99
+ raise "#{self.get_id}: Total de Arquivos Processados deve ser positivo ou 0
100
+ Valor: #{total}"
101
+ end
102
+ end
103
+
104
+ def set_valor_total valor
105
+ valor = valor.to_i
106
+
107
+ if valor >= 0
108
+ self.set_section_value(4, valor)
109
+ else
110
+ raise "#{self.get_id}: Valor Total dos Arquivos Processados deve ser positivo ou 0
111
+ Valor: #{valor}"
112
+ end
113
+ end
114
+
115
+ def set_data_processamento data
116
+ data = data.to_i
117
+
118
+ if data >= 0
119
+ self.set_section_value(5, data)
120
+ else
121
+ raise "#{self.get_id}: Data de Processamento não pode estar vazia
122
+ Valor: #{data}"
123
+ end
124
+ end
125
+
126
+ def set_reservado reservado
127
+ reservado = reservado.to_s
128
+ self.set_section_value(6, reservado)
129
+ end
130
+ end
@@ -0,0 +1,188 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Lei 10833, Cobrança não-cumulativa COFINS - Empresa
5
+ # http://www.planalto.gov.br/ccivil_03/leis/2003/L10.833compilado.htm
6
+ class Febraban150K < FormatSection
7
+ def initialize master
8
+ super(master, false, true)
9
+
10
+ @section = Section.new({
11
+ 0 => Position.new(1, 1, false, "K", true), # Código do Registro
12
+ 1 => Position.new(2, 25, false), # Identificação do Cliente Empresa
13
+ 2 => Position.new(3, 4, false), # Agência para Débito
14
+ 3 => Position.new(4, 14, false), # Identificação do Cliente Banco
15
+ 4 => Position.new(5, 2, true), # Tipo de Tratamento
16
+ 5 => Position.new(6, 15, true), # Valor Débito
17
+ 6 => Position.new(7, 4, false), # Código Receita
18
+ 7 => Position.new(8, 1, true), # Tipo de Identificação (1-CPF, 2-CNPJ)
19
+ 8 => Position.new(9, 15, true), # Identificação
20
+ 9 => Position.new(10, 69, false) # Reservado pelo Sistema
21
+ }, true)
22
+ end
23
+
24
+ #-------------------------------------------------------------------
25
+ #-------------------------------------------------------------------
26
+ # Gerais
27
+ def process_section file
28
+ self.set_id_cliente_empresa file[1..25]
29
+ self.set_agencia_debito file[26..29]
30
+ self.set_id_cliente_banco file[30..43]
31
+ self.set_tipo_tratamento file[41..45]
32
+ self.set_valor_debitado file[46..60]
33
+ self.set_codigo_receita file[61..64]
34
+ self.set_tipo_id_cliente file[65..65]
35
+ self.set_id_cliente file[66..80]
36
+ self.set_reservado file[81..149]
37
+ end
38
+
39
+ #-------------------------------------------------------------------
40
+ #-------------------------------------------------------------------
41
+ # Validações
42
+ def is_valid?
43
+ result = (self.get_id_cliente_empresa.length > 0 and
44
+ self.get_agencia_debito.length > 0 and
45
+ self.get_id_cliente_banco.length > 0 and
46
+ self.get_tipo_tratamento > 0 and
47
+ self.get_valor_debitado > 0 and
48
+ self.get_codigo_receita.length > 0 and
49
+ (self.get_tipo_id_cliente == 1 or
50
+ self.get_tipo_id_cliente == 2) and
51
+ self.get_id_cliente.length == 15)
52
+ end
53
+
54
+ #-------------------------------------------------------------------
55
+ #-------------------------------------------------------------------
56
+ # Getters
57
+ def get_id_cliente_empresa
58
+ self.get_section_value(1)
59
+ end
60
+
61
+ def get_agencia_debito
62
+ self.get_section_value(2)
63
+ end
64
+
65
+ def get_id_cliente_banco
66
+ self.get_section_value(3)
67
+ end
68
+
69
+ def get_tipo_tratamento
70
+ self.get_section_value(4).to_i
71
+ end
72
+
73
+ def get_valor_debitado
74
+ self.get_section_value(5).to_i
75
+ end
76
+
77
+ def get_codigo_receita
78
+ self.get_section_value(6)
79
+ end
80
+
81
+ def get_tipo_id_cliente
82
+ self.get_section_value(7).to_i
83
+ end
84
+
85
+ def get_id_cliente
86
+ self.get_section_value(8).to_i
87
+ end
88
+
89
+ #-------------------------------------------------------------------
90
+ #-------------------------------------------------------------------
91
+ # Setters
92
+ def set_id_cliente_empresa id_cliente_empresa
93
+ id_cliente_empresa = id_cliente_empresa.to_s
94
+
95
+ if id_cliente_empresa.length > 0
96
+ self.set_section_value(1, id_cliente_empresa)
97
+ else
98
+ raise "#{self.get_id}: Identificação do Cliente da Empresa não pode estar vazio
99
+ Valor: #{id_cliente_empresa}"
100
+ end
101
+ end
102
+
103
+ def set_agencia_debito agencia_debito
104
+ agencia_debito = agencia_debito.to_s
105
+
106
+ if agencia_debito.length > 0
107
+ self.set_section_value(2, agencia_debito)
108
+ else
109
+ raise "#{self.get_id}: Agência do Débito não pode estar vazia
110
+ Valor: #{agencia_debito}"
111
+ end
112
+ end
113
+
114
+ def set_id_cliente_banco id_cliente_banco
115
+ id_cliente_banco = id_cliente_banco.to_s
116
+
117
+ if id_cliente_banco.length > 0
118
+ self.set_section_value(3, id_cliente_banco)
119
+ else
120
+ raise "#{self.get_id}: Identificação do Cliente do Banco não pode estar vazio
121
+ Valor: #{id_cliente_banco}"
122
+ end
123
+ end
124
+
125
+ def set_tipo_tratamento tratamento
126
+ tratamento = tratamento.to_i
127
+
128
+ if tratamento > 0
129
+ self.set_section_value(4, tratamento)
130
+ else
131
+ raise "#{self.get_id}: Tipo de Tratamento não pode estar vazio
132
+ Valor: #{tratamento}"
133
+ end
134
+ end
135
+
136
+ def set_valor_debitado valor
137
+ valor = valor.to_i
138
+
139
+ if valor > 0
140
+ self.set_section_value(5, valor)
141
+ else
142
+ raise "#{self.get_id}: Valor a ser Debitado deve ser positivo ou 0
143
+ Valor: #{valor}"
144
+ end
145
+ end
146
+
147
+ def set_codigo_receita codigo
148
+ codigo = codigo.to_s
149
+
150
+ if codigo.length > 0
151
+ self.set_section_value(6, codigo)
152
+ else
153
+ raise "#{self.get_id}: Valor a ser Debitado deve ser positivo ou 0
154
+ Valor: #{codigo}"
155
+ end
156
+ end
157
+
158
+ def set_tipo_id_cliente tipo_id_cliente
159
+ tipo_id_cliente = tipo_id_cliente.to_i
160
+
161
+ if tipo_id_cliente == 1 or tipo_id_cliente == 2
162
+ self.set_section_value(7, tipo_id_cliente)
163
+ else
164
+ raise "#{self.get_id}: Tipo de Identificação do Cliente deve ser:
165
+ 1 - CNPJ; 2 - CPF
166
+ Valor: #{tipo_id_cliente}"
167
+ end
168
+ end
169
+
170
+ def set_id_cliente id_cliente
171
+ id_cliente = id_cliente.to_s
172
+ id_cliente.to_i
173
+
174
+ if id_cliente.length == 15
175
+ self.set_section_value(9, id_cliente)
176
+ else
177
+ raise "#{self.get_id}: Identificação do Cliente deve ser CPF ou CNPJ:
178
+ CNPJ: 999999999 = Número, 9999 = Filial, e 99 = DV
179
+ CPF: 0000999999999 = Número, 99 = DV
180
+ Valor: #{id_cliente}"
181
+ end
182
+ end
183
+
184
+ def set_reservado reservado
185
+ reservado = reservado.to_s
186
+ self.set_section_value(9, reservado)
187
+ end
188
+ end