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,167 @@
1
+ module VAldeias
2
+ require_relative 'detalhe_commons'
3
+
4
+ module Remessa
5
+ class Detalhe < FormatSection
6
+ include VAldeiasDetalheCommons
7
+
8
+ def initialize
9
+ @section = Section.new({
10
+ 0 => Position.new(1, 1, false, "1", true), # Código do Registro
11
+ 1 => Position.new(2, 5, false), # Agencia de Débito
12
+ 2 => Position.new(3, 3, true, "0"), # Zeros
13
+ 3 => Position.new(4, 7, false), # Conta Corrente
14
+ 4 => Position.new(5, 1, false), # Digito da CC
15
+ 5 => Position.new(6, 2, false), # Carteira
16
+ 6 => Position.new(7, 3, true, "0"), # Zeros
17
+ 7 => Position.new(8, 12, false), # Nosso numero
18
+ 8 => Position.new(9, 4, true, "0"), # Zeros
19
+ 9 => Position.new(10, 11, true), # Numero Documento
20
+ 10 => Position.new(11, 4, true, "0"), # Zeros
21
+ 11 => Position.new(12, 6, true), # Data do documento
22
+ 12 => Position.new(13, 4, true, "0"), # Zeros
23
+ 13 => Position.new(14, 6, true), # Data de vencimento
24
+ 14 => Position.new(15, 40, false), # Nome do sacado
25
+ 15 => Position.new(16, 60, false), # Endereço
26
+ 16 => Position.new(17, 10, false), # Numero
27
+ 17 => Position.new(18, 10, false), # Complemento
28
+ 18 => Position.new(19, 30, false), # Bairro
29
+ 19 => Position.new(20, 30, false), # Cidade
30
+ 20 => Position.new(21, 2, false), # Estado
31
+ 21 => Position.new(22, 8, false), # Cep
32
+ 22 => Position.new(23, 15, false), # Valor do titulo
33
+ 23 => Position.new(24, 44, false), # Código de barras
34
+ 24 => Position.new(25, 4, true, "0"), # Zeros
35
+ 25 => Position.new(26, 56, false), # Linha digitavel
36
+ 26 => Position.new(27, 14, false), # Brancos
37
+ 27 => Position.new(44, 6, true) # Numero sequencial
38
+ })
39
+ end
40
+
41
+ def set_values params
42
+ set_agencia params[:agencia]
43
+ set_conta_corrente params[:conta_corrente]
44
+ set_dv_conta_corrente params[:dv_conta_corrente]
45
+ set_carteira params[:carteira]
46
+ set_nosso_numero params[:nosso_numero]
47
+ set_numero_documento params[:numero_documento]
48
+ set_data_emissao_titulo Date.today
49
+ set_vencimento_titulo params[:vencimento]
50
+ set_nome_sacado params[:nome_sacado]
51
+ set_endereco params[:endereco]
52
+ set_numero params[:numero]
53
+ set_complemento params[:complemento]
54
+ set_bairro params[:bairro]
55
+ set_cidade params[:cidade]
56
+ set_estado params[:estado]
57
+ set_cep params[:cep]
58
+ set_valor_titulo params[:valor]
59
+ set_codigo_barras params[:codigo_barras]
60
+ set_linha_digitavel params[:linha_digitavel]
61
+ set_branco
62
+ set_sequencial params[:sequencial]
63
+ end
64
+ end
65
+ end
66
+
67
+ module Retorno
68
+ class Detalhe < FormatSection
69
+ include VAldeiasDetalheCommons
70
+
71
+ def initialize
72
+ @section = Section.new({
73
+ 0 => Position.new(1, 1, false, "1", true), # Código do Registro
74
+ 1 => Position.new(2, 2, true), # Tipo de inscrição da empresa (01:CPF, 02: CNPJ)
75
+ 2 => Position.new(3, 14, false), # Numero da inscricao da empresa
76
+ 3 => Position.new(4, 3, false), # Reservado - Zeros
77
+ 4 => Position.new(5, 17, true), # Identificação da empresa (zero, carteira, agencia e CC )
78
+ 5 => Position.new(6, 25, false), # Numero controle do participante
79
+ 6 => Position.new(7, 8, false), # Reservado - Zeros
80
+ 7 => Position.new(8, 12, true), # Identificação do titulo no banco
81
+ 8 => Position.new(9, 10, false), # Reservado - Zeros
82
+ 9 => Position.new(10, 12, false), # Reservado - Zeros
83
+ 10 => Position.new(11, 1, false), # Indicador Rateio
84
+ 11 => Position.new(12, 2, false), # Reservado - Zeros
85
+ 12 => Position.new(13, 1, false), # Carteira
86
+ 13 => Position.new(14, 2, false), # Id da Ocorrencia
87
+ 14 => Position.new(15, 6, false), # Data da Ocorrencia
88
+ 15 => Position.new(16, 10, false), # Numero Documento
89
+ 16 => Position.new(17, 20, false), # Id do titulo no banco
90
+ 17 => Position.new(18, 6, false), # Data vencimento do titulo (DDMMAA)
91
+ 18 => Position.new(19, 13, false), # Valor do titulo
92
+ 19 => Position.new(20, 3, false), # Banco cobrador
93
+ 20 => Position.new(21, 5, false), # Agencia Cobradora
94
+ 21 => Position.new(22, 2, false), # Especie de titulo - branco
95
+ 22 => Position.new(23, 13, false), # Valor despesa das ocorrencias
96
+ 23 => Position.new(24, 13, false), # Outras despesas
97
+ 24 => Position.new(25, 13, false), # Juros operação em atraso
98
+ 25 => Position.new(26, 13, false), # IOF devido
99
+ 26 => Position.new(27, 13, false), # Valor abatimento
100
+ 27 => Position.new(28, 13, false), # Valor desconto concedido
101
+ 28 => Position.new(29, 13, false), # Valor pago
102
+ 29 => Position.new(30, 13, false), # Juros de mora
103
+ 30 => Position.new(31, 13, false), # Outros creditos
104
+ 31 => Position.new(32, 2, false), # Reservado - branco
105
+ 32 => Position.new(33, 1, false), # Motivo do codigo de ocorrencia
106
+ 33 => Position.new(34, 6, false), # Data do credito
107
+ 34 => Position.new(35, 3, false), # Origem pagamento
108
+ 35 => Position.new(36, 10, false), # Reservado - brancos
109
+ 36 => Position.new(37, 4, false), # Codigo do banco - quando cheque
110
+ 37 => Position.new(38, 10, false), # Motivo das rejeicoes
111
+ 38 => Position.new(39, 40, false), # Reservado - brancos
112
+ 39 => Position.new(40, 2, false), # numero do cartorio
113
+ 40 => Position.new(41, 10, false), # numero do protocolo
114
+ 41 => Position.new(42, 14, false), # Reservado - brancos
115
+ 42 => Position.new(43, 6, false) # Numero sequencial
116
+ })
117
+ end
118
+
119
+ def processa_section file
120
+ self.set_tipo_inscricao file[1..2]
121
+ self.set_numero_inscricao file[3..16]
122
+ self.set_zeros_1 file[17..19]
123
+ self.set_id_empresa file[20..36]
124
+ self.set_controle_participante file[37..61]
125
+ self.set_zeros_2 file[62..69]
126
+ self.set_id_titulo file[70..81]
127
+ self.set_zeros_3 file[82..91]
128
+ self.set_zeros_4 file[93..103]
129
+ self.set_indicador_rateio_retorno file[104..104]
130
+ self.set_zeros_5 file[105..106]
131
+ self.set_carteira_retorno file[107..107]
132
+ self.set_ocorrencia_retorno file[108..109]
133
+ self.set_data_ocorrencia file[110..115]
134
+ self.set_numero_documento_retorno file[116..125]
135
+ self.set_id_titulo file[126..145]
136
+ self.set_data_titulo file[146..151]
137
+ self.set_valor_titulo_retorno file[152..164]
138
+ self.set_banco_cobrador_retorno file[165..167]
139
+ self.set_agencia_cobradora file[168..172]
140
+ self.set_especie_titulo_retorno file[173..174]
141
+ self.set_despesas file[175..187]
142
+ self.set_outras_despesas file[188..200]
143
+ self.set_juros file[201..213]
144
+ self.set_iof file[214..226]
145
+ self.set_abatimento_concedido file[227..239]
146
+ self.set_desconto_concedido file[240..252]
147
+ self.set_valor_pago file[253..265]
148
+ self.set_juros_mora file[266..278]
149
+ self.set_outros_creditos file[279..291]
150
+ self.set_brancos_1 file[292..293]
151
+ self.set_motivo_ocorrencia file[294..294]
152
+ self.set_data_credito file[295..300]
153
+ self.set_origem_pagamento file[301..303]
154
+ self.set_brancos_2 file[304..313]
155
+ self.set_codigo_banco_retorno file[314..317]
156
+ self.set_motivo_rejeicoes file[318..327]
157
+ self.set_brancos_3 file[328..367]
158
+ self.set_numero_cartorio file[368..369]
159
+ self.set_numero_protocolo file[370..379]
160
+ self.set_brancos_4 file[380..393]
161
+ self.set_sequencial_retorno file[394..399]
162
+ end
163
+
164
+ end
165
+ end
166
+ end
167
+
@@ -0,0 +1,184 @@
1
+ module VAldeiasDetalheCommons
2
+
3
+ #-------------------------------------------------------------------
4
+ #-------------------------------------------------------------------
5
+ # Validações
6
+ def is_valid?
7
+ self.get_nosso_numero.length > 0 and
8
+ self.get_numero_documento.length > 0 and
9
+ self.get_sequencial.length > 0
10
+ end
11
+
12
+ #-------------------------------------------------------------------
13
+ #-------------------------------------------------------------------
14
+ # Getters
15
+ def get_agencia
16
+ self.get_section_value(1)
17
+ end
18
+
19
+ def get_nosso_numero
20
+ self.get_section_value(7)
21
+ end
22
+
23
+ def get_numero_documento
24
+ self.get_section_value(9)
25
+ end
26
+
27
+ def get_vencimento_titulo
28
+ self.get_section_value(13)
29
+ end
30
+
31
+ def get_nome_sacado
32
+ self.get_section_value(14)
33
+ end
34
+
35
+ def get_endereco
36
+ self.get_section_value(15)
37
+ end
38
+
39
+ def get_sequencial
40
+ self.get_section_value(27)
41
+ end
42
+
43
+
44
+ #-------------------------------------------------------------------
45
+ #-------------------------------------------------------------------
46
+ # Setters
47
+ def set_agencia valor = ""
48
+ self.set_section_value(1, valor)
49
+ end
50
+
51
+ def set_zeros_1 valor = "0"
52
+ self.set_section_value(2, valor)
53
+ end
54
+
55
+ def set_numero_inscricao valor = ""
56
+ self.set_section_value(2, valor)
57
+ end
58
+
59
+ def set_conta_corrente valor = ""
60
+ self.set_section_value(3, valor)
61
+ end
62
+
63
+ def set_dv_conta_corrente valor = ""
64
+ self.set_section_value(4, valor)
65
+ end
66
+
67
+ def set_carteira valor = ""
68
+ self.set_section_value(5, valor)
69
+ end
70
+
71
+ def set_zeros_2 valor = "0"
72
+ self.set_section_value(6, valor)
73
+ end
74
+
75
+ def set_nosso_numero valor
76
+ self.set_section_value(7, valor)
77
+ end
78
+
79
+ def set_zeros_3 valor = "0"
80
+ self.set_section_value(8, valor)
81
+ end
82
+
83
+ def set_numero_documento valor = ""
84
+ self.set_section_value(9, valor)
85
+ end
86
+
87
+ def set_zeros_4 valor = "0"
88
+ self.set_section_value(10, valor)
89
+ end
90
+
91
+ def set_data_emissao_titulo valor = ""
92
+ begin
93
+ valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
94
+ real_data = valor.strftime("%d%m%y")
95
+
96
+ if real_data.length == 6
97
+ self.set_section_value(11, real_data)
98
+ else
99
+ raise "tamanho de data incorreto"
100
+ end
101
+
102
+ rescue
103
+ raise "#{get_id}: Data de Geração Inválida
104
+ Valor: #{valor}"
105
+ end
106
+ end
107
+
108
+ def set_zeros_5 valor = "0"
109
+ self.set_section_value(12, valor)
110
+ end
111
+
112
+ def set_vencimento_titulo valor
113
+ begin
114
+ valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
115
+ real_data = valor.strftime("%d%m%y")
116
+
117
+ if real_data.length == 6
118
+ self.set_section_value(13, real_data)
119
+ else
120
+ raise "tamanho de data incorreto"
121
+ end
122
+
123
+ rescue
124
+ raise "#{get_id}: Data de Geração Inválida
125
+ Valor: #{valor}"
126
+ end
127
+ end
128
+
129
+ def set_nome_sacado valor = ""
130
+ self.set_section_value(14, valor)
131
+ end
132
+
133
+ def set_endereco valor = ""
134
+ self.set_section_value(15, valor)
135
+ end
136
+
137
+ def set_numero valor = ""
138
+ self.set_section_value(16, valor)
139
+ end
140
+
141
+ def set_complemento valor = ""
142
+ self.set_section_value(17, valor)
143
+ end
144
+
145
+ def set_bairro valor = ""
146
+ self.set_section_value(18, valor)
147
+ end
148
+
149
+ def set_cidade valor = ""
150
+ self.set_section_value(19, valor)
151
+ end
152
+
153
+ def set_estado valor = ""
154
+ self.set_section_value(20, valor)
155
+ end
156
+
157
+ def set_cep valor = ""
158
+ self.set_section_value(21, valor)
159
+ end
160
+
161
+ def set_valor_titulo valor = ""
162
+ self.set_section_value(22, valor)
163
+ end
164
+
165
+ def set_codigo_barras valor = ""
166
+ self.set_section_value(23, valor)
167
+ end
168
+
169
+ def set_zeros_6 valor = "0"
170
+ self.set_section_value(24, valor)
171
+ end
172
+
173
+ def set_linha_digitavel valor = ""
174
+ self.set_section_value(25, valor)
175
+ end
176
+
177
+ def set_branco valor = " "
178
+ self.set_section_value(26, valor)
179
+ end
180
+
181
+ def set_sequencial valor = ""
182
+ self.set_section_value(27, valor)
183
+ end
184
+ end
@@ -0,0 +1,83 @@
1
+ module VAldeias
2
+ require_relative 'header_commons'
3
+
4
+ module Remessa
5
+ class Header < FormatSection
6
+ include VAldeiasHeaderCommons
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, 9, false), # Identificacao do sistema
22
+ 12 => Position.new(13, 276, false), # Reservado pelo Sistema - branco
23
+ 13 => Position.new(14, 6, false, "000001") # Numero sequencial no arquivo
24
+ })
25
+ end
26
+
27
+ def set_values params
28
+ set_codigo_empresa params[:codigo]
29
+ set_nome_empresa params[:nome_empresa]
30
+ set_numero_banco params[:numero_banco]
31
+ set_nome_banco params[:nome_banco]
32
+ set_data_gravacao Date.today
33
+ set_reservado_1
34
+ set_identificacao_sistema params[:identificacao_empresa]
35
+ end
36
+ end
37
+ end
38
+
39
+ module Retorno
40
+ class Header < FormatSection
41
+ include VAldeiasHeaderCommons
42
+
43
+ def initialize
44
+ @section = Section.new({
45
+ 0 => Position.new(1, 1, false, "0", true), # Código do Registro
46
+ 1 => Position.new(2, 1, false, "2"), # Código Arquivo (1-Remessa, 2-Retorno)
47
+ 2 => Position.new(3, 7, false, "RETORNO"), # Identificação literal do arquivo (REMESSA/RETORNO)
48
+ 3 => Position.new(4, 2, false, "01"), # Código do serviço
49
+ 4 => Position.new(5, 15, false, "COBRANCA"), # Literal do serviço (COBRANÇA)
50
+ 5 => Position.new(6, 20, true), # Código da Empresa
51
+ 6 => Position.new(7, 30, false), # Nome da Empresa
52
+ 7 => Position.new(8, 3, true), # Número do Banco (BRADESCO: 237)
53
+ 8 => Position.new(9, 15, false), # Nome do Banco
54
+ 9 => Position.new(10, 6, false), # Data de gravacao do arquivo (DDMMAA)
55
+ 10 => Position.new(11, 8, false), # Densidade da gravacao do arquivo
56
+ 11 => Position.new(12, 5, false), # Numero do aviso bancario
57
+ 12 => Position.new(13, 266, false), # Reservado pelo Sistema - branco
58
+ 13 => Position.new(14, 6, false), # Data do crédito (DDMMAA)
59
+ 14 => Position.new(15, 9, false), # Reservado pelo Sistema - branco
60
+ 15 => Position.new(16, 6, false) # Numero sequencial no arquivo
61
+ })
62
+ end
63
+
64
+ def process_section file
65
+ self.set_codigo_arquivo file[1..1]
66
+ self.set_literal_arquivo file[2..8]
67
+ self.set_codigo_servico file[9..10]
68
+ self.set_literal_servico file[11..25]
69
+ self.set_codigo_empresa file[26..45]
70
+ self.set_nome_empresa file[46..75]
71
+ self.set_numero_banco file[76..78]
72
+ self.set_nome_banco file[79..93]
73
+ self.set_data_gravacao file[94..99]
74
+ self.set_densidade_arquivo file[100..107]
75
+ self.set_numero_aviso file[108..112]
76
+ self.set_brancos_1 file[113..378]
77
+ self.set_data_credito file[379..384]
78
+ self.set_brancos_2 file[385..393]
79
+ self.set_sequencial_retorno file[394..399]
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,170 @@
1
+ module VAldeiasHeaderCommons
2
+
3
+ #-------------------------------------------------------------------
4
+ #-------------------------------------------------------------------
5
+ # Validações
6
+ def is_valid?
7
+ self.get_codigo_arquivo > 0 and
8
+ self.get_data_gravacao.length > 0 and
9
+ self.get_nome_empresa.length > 0 and
10
+ self.get_identificacao_sistema.length > 0 and
11
+ self.get_nome_banco.length > 0
12
+ end
13
+
14
+
15
+ #-------------------------------------------------------------------
16
+ #-------------------------------------------------------------------
17
+ # Getters
18
+ def get_codigo_arquivo
19
+ self.get_section_value(1).to_i
20
+ end
21
+
22
+ def get_identificacao_arquivo
23
+ self.get_section_value(2)
24
+ end
25
+
26
+ def get_codigo_servico
27
+ self.get_section_value(3)
28
+ end
29
+
30
+ def get_literal_servico
31
+ self.get_section_value(4)
32
+ end
33
+
34
+ def get_codigo_empresa
35
+ self.get_section_value(5)
36
+ end
37
+
38
+ def get_nome_empresa
39
+ self.get_section_value(6)
40
+ end
41
+
42
+ def get_numero_banco
43
+ self.get_section_value(7)
44
+ end
45
+
46
+ def get_nome_banco
47
+ self.get_section_value(8)
48
+ end
49
+
50
+ def get_data_gravacao
51
+ self.get_section_value(9)
52
+ end
53
+
54
+ def get_identificacao_sistema
55
+ self.get_section_value(11)
56
+ end
57
+
58
+ def get_sequencial_remessa
59
+ self.get_section_value(12)
60
+ end
61
+
62
+ def get_sequencial
63
+ self.get_section_value(14)
64
+ end
65
+
66
+ #-------------------------------------------------------------------
67
+ #-------------------------------------------------------------------
68
+ # Setters
69
+ def set_codigo_arquivo valor = ""
70
+ self.set_section_value(1, valor)
71
+ end
72
+
73
+ def set_identificacao_arquivo valor = ""
74
+ self.set_section_value(2, valor)
75
+ end
76
+
77
+ def set_codigo_servico valor = ""
78
+ self.set_section_value(3, valor)
79
+ end
80
+
81
+ def set_literal_servico valor = ""
82
+ self.set_section_value(4, valor)
83
+ end
84
+
85
+ def set_codigo_empresa valor = ""
86
+ self.set_section_value(5, valor)
87
+ end
88
+
89
+ def set_nome_empresa valor = ""
90
+ self.set_section_value(6, valor)
91
+ end
92
+
93
+ def set_numero_banco valor = ""
94
+ self.set_section_value(7, valor)
95
+ end
96
+
97
+ def set_nome_banco valor = ""
98
+ self.set_section_value(8, valor)
99
+ end
100
+
101
+ def set_data_gravacao valor = ""
102
+ begin
103
+ valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
104
+ real_data = valor.strftime("%d%m%y")
105
+
106
+ if real_data.length == 6
107
+ self.set_section_value(9, real_data)
108
+ else
109
+ raise "tamanho de data incorreto"
110
+ end
111
+
112
+ rescue
113
+ raise "#{get_id}: Data de Geração Inválida
114
+ Valor: #{valor}"
115
+ end
116
+ end
117
+
118
+ def set_reservado_1 valor = " "
119
+ self.set_section_value(10, valor)
120
+ end
121
+
122
+ def set_densidade_arquivo valor = " "
123
+ self.set_section_value(10, valor)
124
+ end
125
+
126
+ def set_identificacao_sistema valor = ""
127
+ self.set_section_value(11, valor)
128
+ end
129
+
130
+ def set_numero_aviso valor = ""
131
+ self.set_section_value(11, valor)
132
+ end
133
+
134
+ def set_brancos_1 valor = " "
135
+ self.set_section_value(12, valor)
136
+ end
137
+
138
+ def set_reservado_2 valor = " "
139
+ self.set_section_value(12, valor)
140
+ end
141
+
142
+ def set_data_credito valor = ""
143
+ begin
144
+ valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String)
145
+ real_data = valor.strftime("%d%m%y")
146
+
147
+ if real_data.length == 6
148
+ self.set_section_value(13, real_data)
149
+ else
150
+ raise "tamanho de data incorreto"
151
+ end
152
+
153
+ rescue
154
+ raise "#{get_id}: Data de Geração Inválida
155
+ Valor: #{valor}"
156
+ end
157
+ end
158
+
159
+ def set_sequencial valor = ""
160
+ self.set_section_value(13, valor)
161
+ end
162
+
163
+ def set_brancos_2 valor = " "
164
+ self.set_section_value(14, valor)
165
+ end
166
+
167
+ def set_sequencial_retorno valor = ""
168
+ self.set_section_value(15, valor)
169
+ end
170
+ end