formatos-febraban 0.3.45 → 0.3.47

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,194 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Header - Empresa e Banco
5
+ class Cnab4003 < FormatSection
6
+ require 'date'
7
+
8
+ def initialize master
9
+ super(master, true, true, false)
10
+
11
+ @section = Section.new({
12
+ 0 => Position.new(1, 1, true, '0', true), # Identificação do Registro
13
+ 1 => Position.new(2, 1, true, '1'), # Código Remessa (1-Remessa, 2-Retorno)
14
+ 2 => Position.new(3, 7, false,'REMESSA'), # Literal Remessa
15
+ 3 => Position.new(4, 2, true, '01'), # Código do Serviço
16
+ 4 => Position.new(5, 15, false,'COBRANCA'), # Literal Serviço
17
+ 5 => Position.new(6, 20, true), # Código da Empresa
18
+ 6 => Position.new(7, 30, false), # Nome da Empresa
19
+ 7 => Position.new(8, 3, true), # Código do Banco
20
+ 8 => Position.new(9, 15, false, 'BRADESCO'), # Nome do Banco
21
+ 9 => Position.new(10, 6, true), # Data de Geração de Arquivo
22
+ 10 => Position.new(11, 8, false), # Brancos
23
+ 11 => Position.new(12, 2, false), # Identificação do Sistema
24
+ 12 => Position.new(13, 7, true), # Número Sequencial do Arquivo
25
+ 13 => Position.new(14, 277, false), # Brancos
26
+ 14 => Position.new(15, 6, true, '1'), # Sequencial de Regsitro
27
+ })
28
+ end
29
+
30
+ #-------------------------------------------------------------------
31
+ #-------------------------------------------------------------------
32
+ # Gerais
33
+ def process_section file
34
+ self.set_id_registro file[1..1]
35
+ self.set_codigo_remessa file[2..2]
36
+ self.set_literal file[3..9]
37
+ self.set_codigo_servico file[10..11]
38
+ self.set_servico file[12..26]
39
+ self.set_codigo_empresa file[27..46]
40
+ self.set_nome_empresa file[47..76]
41
+ self.set_codigo_banco file[77..79]
42
+ self.set_nome_banco file[80..94]
43
+ self.set_data_geracao file[95..100]
44
+ self.set_branco_1 file[101..108]
45
+ self.set_id_sistema file[109..110]
46
+ self.set_seq_arquivo file[111..117]
47
+ self.set_branco_2 file[118..394]
48
+ self.set_seq_registro file[395..400]
49
+ end
50
+
51
+ #-------------------------------------------------------------------
52
+ #-------------------------------------------------------------------
53
+ # Setters
54
+ def set_id_registro code
55
+ code = code.to_i
56
+
57
+ unless code
58
+ self.set_section_value(0, code)
59
+ else
60
+ raise
61
+ end
62
+ end
63
+
64
+ def set_codigo_remessa code
65
+ code = code.to_s
66
+
67
+ if code.length >= 1
68
+ self.set_section_value(1, code)
69
+ else
70
+ raise
71
+ end
72
+ end
73
+
74
+ def set_literal literal
75
+ nome = literal.to_s
76
+
77
+ if nome.to_s.length > 0
78
+ self.set_section_value(2, nome)
79
+ else
80
+ raise
81
+ end
82
+ end
83
+
84
+ def set_codigo_servico codigo
85
+ codigo = codigo.to_i
86
+
87
+ if codigo > 0
88
+ self.set_section_value(3, codigo)
89
+ else
90
+ raise
91
+ end
92
+ end
93
+
94
+ def set_servico nome
95
+ nome = nome.to_s
96
+
97
+ if nome.to_s.length > 0
98
+ self.set_section_value(4, nome)
99
+ else
100
+ raise
101
+ end
102
+ end
103
+
104
+ def set_codigo_empresa codigo
105
+ begin
106
+ if codigo.length == 20
107
+ self.set_section_value(5, codigo)
108
+ else
109
+ raise
110
+ end
111
+
112
+ rescue
113
+ raise
114
+ end
115
+ end
116
+
117
+ def set_nome_empresa nome
118
+ nome = nome.to_s
119
+
120
+ if nome
121
+ self.set_section_value(6, nome)
122
+ else
123
+ raise
124
+ end
125
+ end
126
+
127
+ def set_codigo_banco codigo
128
+ codigo = codigo.to_i
129
+
130
+ if codigo > 0
131
+ self.set_section_value(7, codigo)
132
+ else
133
+ raise
134
+ end
135
+ end
136
+
137
+ def set_nome_banco nome
138
+ nome = nome.to_s
139
+
140
+ if nome.length > 0
141
+ self.set_section_value(8, nome)
142
+ else
143
+ raise
144
+ end
145
+ end
146
+
147
+ def set_data_geracao data
148
+ begin
149
+ data = Date.strptime(data, "%d%m%y") if data.is_a?(String)
150
+ real_data = data.strftime('%d%m%y')
151
+
152
+ if real_data.length == 6
153
+ self.set_section_value(9, real_data)
154
+ else
155
+ raise
156
+ end
157
+
158
+ rescue
159
+ raise "#{get_id}: Data de Geração Inválida
160
+ Valor: #{data}"
161
+ end
162
+ end
163
+
164
+ def set_branco_1 branco
165
+ branco = branco.to_s
166
+ self.set_section_value(10, branco)
167
+ end
168
+
169
+ def set_id_sistema id
170
+ id = id.to_s
171
+ self.set_section_value(11, id)
172
+ end
173
+
174
+ def set_seq_arquivo sequencial
175
+ sequencial = sequencial.to_i
176
+ self.set_section_value(12, sequencial)
177
+ end
178
+
179
+ def set_branco_2 branco
180
+ branco = branco.to_s
181
+ self.set_section_value(13, branco)
182
+ end
183
+
184
+ def set_seq_registro sequencial
185
+ sequencial = sequencial.to_i
186
+ self.set_section_value(14, sequencial)
187
+ end
188
+ end
189
+
190
+
191
+
192
+
193
+
194
+
@@ -0,0 +1,194 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Header - Empresa e Banco
5
+ class Cnab4007 < FormatSection
6
+ require 'date'
7
+
8
+ def initialize master
9
+ super(master, true, true, false)
10
+
11
+ @section = Section.new({
12
+ 0 => Position.new(1, 1, true, '0', true), # Identificação do Registro
13
+ 1 => Position.new(2, 1, true, '1'), # Código Remessa (1-Remessa, 2-Retorno)
14
+ 2 => Position.new(3, 7, false,'REMESSA'), # Literal Remessa
15
+ 3 => Position.new(4, 2, true, '01'), # Código do Serviço
16
+ 4 => Position.new(5, 15, false,'COBRANCA'), # Literal Serviço
17
+ 5 => Position.new(6, 20, true), # Código da Empresa
18
+ 6 => Position.new(7, 30, false), # Nome da Empresa
19
+ 7 => Position.new(8, 3, true), # Código do Banco
20
+ 8 => Position.new(9, 15, false, 'BRADESCO'), # Nome do Banco
21
+ 9 => Position.new(10, 6, true), # Data de Geração de Arquivo
22
+ 10 => Position.new(11, 8, false), # Brancos
23
+ 11 => Position.new(12, 2, false), # Identificação do Sistema
24
+ 12 => Position.new(13, 7, true), # Número Sequencial do Arquivo
25
+ 13 => Position.new(14, 277, false), # Brancos
26
+ 14 => Position.new(15, 6, true, '1'), # Sequencial de Regsitro
27
+ })
28
+ end
29
+
30
+ #-------------------------------------------------------------------
31
+ #-------------------------------------------------------------------
32
+ # Gerais
33
+ def process_section file
34
+ self.set_id_registro file[1..1]
35
+ self.set_codigo_remessa file[2..2]
36
+ self.set_literal file[3..9]
37
+ self.set_codigo_servico file[10..11]
38
+ self.set_servico file[12..26]
39
+ self.set_codigo_empresa file[27..46]
40
+ self.set_nome_empresa file[47..76]
41
+ self.set_codigo_banco file[77..79]
42
+ self.set_nome_banco file[80..94]
43
+ self.set_data_geracao file[95..100]
44
+ self.set_branco_1 file[101..108]
45
+ self.set_id_sistema file[109..110]
46
+ self.set_seq_arquivo file[111..117]
47
+ self.set_branco_2 file[118..394]
48
+ self.set_seq_registro file[395..400]
49
+ end
50
+
51
+ #-------------------------------------------------------------------
52
+ #-------------------------------------------------------------------
53
+ # Setters
54
+ def set_id_registro code
55
+ code = code.to_i
56
+
57
+ unless code
58
+ self.set_section_value(0, code)
59
+ else
60
+ raise
61
+ end
62
+ end
63
+
64
+ def set_codigo_remessa code
65
+ code = code.to_s
66
+
67
+ if code.length >= 1
68
+ self.set_section_value(1, code)
69
+ else
70
+ raise
71
+ end
72
+ end
73
+
74
+ def set_literal literal
75
+ nome = literal.to_s
76
+
77
+ if nome.to_s.length > 0
78
+ self.set_section_value(2, nome)
79
+ else
80
+ raise
81
+ end
82
+ end
83
+
84
+ def set_codigo_servico codigo
85
+ codigo = codigo.to_i
86
+
87
+ if codigo > 0
88
+ self.set_section_value(3, codigo)
89
+ else
90
+ raise
91
+ end
92
+ end
93
+
94
+ def set_servico nome
95
+ nome = nome.to_s
96
+
97
+ if nome.to_s.length > 0
98
+ self.set_section_value(4, nome)
99
+ else
100
+ raise
101
+ end
102
+ end
103
+
104
+ def set_codigo_empresa codigo
105
+ begin
106
+ if codigo.length == 20
107
+ self.set_section_value(5, codigo)
108
+ else
109
+ raise
110
+ end
111
+
112
+ rescue
113
+ raise
114
+ end
115
+ end
116
+
117
+ def set_nome_empresa nome
118
+ nome = nome.to_s
119
+
120
+ if nome
121
+ self.set_section_value(6, nome)
122
+ else
123
+ raise
124
+ end
125
+ end
126
+
127
+ def set_codigo_banco codigo
128
+ codigo = codigo.to_i
129
+
130
+ if codigo > 0
131
+ self.set_section_value(7, codigo)
132
+ else
133
+ raise
134
+ end
135
+ end
136
+
137
+ def set_nome_banco nome
138
+ nome = nome.to_s
139
+
140
+ if nome.length > 0
141
+ self.set_section_value(8, nome)
142
+ else
143
+ raise
144
+ end
145
+ end
146
+
147
+ def set_data_geracao data
148
+ begin
149
+ data = Date.strptime(data, "%d%m%y") if data.is_a?(String)
150
+ real_data = data.strftime('%d%m%y')
151
+
152
+ if real_data.length == 6
153
+ self.set_section_value(9, real_data)
154
+ else
155
+ raise
156
+ end
157
+
158
+ rescue
159
+ raise "#{get_id}: Data de Geração Inválida
160
+ Valor: #{data}"
161
+ end
162
+ end
163
+
164
+ def set_branco_1 branco
165
+ branco = branco.to_s
166
+ self.set_section_value(10, branco)
167
+ end
168
+
169
+ def set_id_sistema id
170
+ id = id.to_s
171
+ self.set_section_value(11, id)
172
+ end
173
+
174
+ def set_seq_arquivo sequencial
175
+ sequencial = sequencial.to_i
176
+ self.set_section_value(12, sequencial)
177
+ end
178
+
179
+ def set_branco_2 branco
180
+ branco = branco.to_s
181
+ self.set_section_value(13, branco)
182
+ end
183
+
184
+ def set_seq_registro sequencial
185
+ sequencial = sequencial.to_i
186
+ self.set_section_value(14, sequencial)
187
+ end
188
+ end
189
+
190
+
191
+
192
+
193
+
194
+
@@ -0,0 +1,55 @@
1
+
2
+ #-------------------------------------------------------------------
3
+ #-------------------------------------------------------------------
4
+ # Header - Empresa e Banco
5
+ class Cnab4009 < FormatSection
6
+ require 'date'
7
+
8
+ def initialize master
9
+ super(master, true, true, false)
10
+
11
+ @section = Section.new({
12
+ 0 => Position.new(1, 1, true, '9', true), # Identificação do Registro
13
+ 1 => Position.new(2, 394, false, '1'), # Branco
14
+ 2 => Position.new(395, 400, true), # Número Seqüencial de Registro
15
+ })
16
+ end
17
+
18
+ #-------------------------------------------------------------------
19
+ #-------------------------------------------------------------------
20
+ # Gerais
21
+ def process_section (file)
22
+ self.set_id_registro (file[1..1])
23
+ self.set_branco (file[2..393])
24
+ self.set_seq_registro (file[394..400])
25
+ end
26
+
27
+ #-------------------------------------------------------------------
28
+ #-------------------------------------------------------------------
29
+ # Setters
30
+ def set_id_registro code
31
+ code = code.to_i
32
+
33
+ unless code
34
+ self.set_section_value(0, code)
35
+ else
36
+ raise
37
+ end
38
+ end
39
+
40
+ def set_branco branco
41
+ branco = branco.to_s
42
+ self.set_section_value(1, branco)
43
+ end
44
+
45
+ def set_seq_registro sequencial
46
+ sequencial = sequencial.to_i
47
+ self.set_section_value(2, sequencial)
48
+ end
49
+ end
50
+
51
+
52
+
53
+
54
+
55
+
@@ -1,5 +1,5 @@
1
1
  module Formatos
2
2
  module Febraban
3
- VERSION = '0.3.45'
3
+ VERSION = '0.3.47'
4
4
  end
5
5
  end