teodoro 0.6.0 → 0.10.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.
- checksums.yaml +4 -4
- data/lib/teodoro.rb +1 -0
- data/lib/teodoro/arquivo_data.rb +87 -0
- data/lib/teodoro/arquivo_de_evento.rb +14 -2
- data/lib/teodoro/arquivo_de_evento_de_tabela.rb +29 -14
- data/lib/teodoro/arquivo_de_evento_nao_periodico.rb +38 -12
- data/lib/teodoro/arquivo_de_origem.rb +7 -7
- data/lib/teodoro/arquivo_xml.rb +46 -22
- data/lib/teodoro/console.rb +3 -1
- data/lib/teodoro/empresa.rb +179 -161
- data/lib/teodoro/leiaute/arquivo_s1000.rb +20 -24
- data/lib/teodoro/leiaute/arquivo_s1005.rb +12 -18
- data/lib/teodoro/leiaute/arquivo_s1010.rb +9 -13
- data/lib/teodoro/leiaute/arquivo_s1020.rb +6 -10
- data/lib/teodoro/leiaute/arquivo_s1030.rb +4 -8
- data/lib/teodoro/leiaute/arquivo_s1040.rb +3 -7
- data/lib/teodoro/leiaute/arquivo_s1050.rb +6 -12
- data/lib/teodoro/leiaute/arquivo_s1070.rb +9 -13
- data/lib/teodoro/leiaute/arquivo_s2190.rb +16 -17
- data/lib/teodoro/leiaute/arquivo_s2200.rb +161 -185
- data/lib/teodoro/leiaute/arquivo_s2205.rb +132 -167
- data/lib/teodoro/leiaute/arquivo_s2206.rb +72 -75
- data/lib/teodoro/leiaute/arquivo_s2230.rb +87 -91
- data/lib/teodoro/leiaute/arquivo_s2250.rb +36 -40
- data/lib/teodoro/leiaute/arquivo_s2299.rb +171 -169
- data/lib/teodoro/leiaute/arquivo_s2300.rb +135 -159
- data/lib/teodoro/leiaute/arquivo_s2306.rb +148 -151
- data/lib/teodoro/leiaute/arquivo_s2399.rb +123 -127
- data/lib/teodoro/leiaute/arquivo_s3000.rb +4 -8
- data/lib/teodoro/xml.rb +2 -2
- metadata +3 -5
- data/lib/teodoro/arquivo_de_evento_criador_de_arquivo_data.rb +0 -52
- data/lib/teodoro/arquivo_de_evento_processador_de_arquivo_data.rb +0 -30
- data/lib/teodoro/arquivo_de_evento_retificavel.rb +0 -23
data/lib/teodoro/empresa.rb
CHANGED
@@ -5,195 +5,218 @@ module Teodoro
|
|
5
5
|
class Empresa
|
6
6
|
private
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
10
|
-
@destino = File.join(destino, nome_do_diretorio)
|
8
|
+
def initialize(args)
|
9
|
+
@impl = Impl.new(**args)
|
11
10
|
end
|
12
11
|
|
13
|
-
attr_reader :
|
12
|
+
attr_reader :impl
|
14
13
|
|
15
14
|
public
|
16
15
|
|
17
16
|
def processar
|
18
|
-
|
19
|
-
criar_diretorio_destino
|
20
|
-
criar_diretorio_dos_arquivos_xml
|
21
|
-
descompactar_arquivos_de_origem
|
22
|
-
criar_diretorio_dos_arquivos_data
|
23
|
-
ordenar_arquivos_xml
|
24
|
-
processar_arquivos_xml
|
25
|
-
limpar_linha_de_feedback
|
17
|
+
impl.processar
|
26
18
|
end
|
27
19
|
|
28
|
-
|
29
|
-
|
30
|
-
def dar_feedback_para_o_usuario
|
31
|
-
puts Rainbow(nome_do_diretorio).green
|
32
|
-
end
|
33
|
-
|
34
|
-
def nome_do_diretorio
|
35
|
-
@nome_do_diretorio ||= File.basename(caminho)
|
36
|
-
end
|
37
|
-
|
38
|
-
def criar_diretorio_destino
|
39
|
-
Dir.mkdir(destino)
|
40
|
-
end
|
41
|
-
|
42
|
-
def criar_diretorio_dos_arquivos_xml
|
43
|
-
Dir.mkdir(destino_dos_arquivos_xml)
|
44
|
-
end
|
45
|
-
|
46
|
-
def destino_dos_arquivos_xml
|
47
|
-
@destino_dos_arquivos_xml ||= File.join(destino, 'xmls')
|
48
|
-
end
|
49
|
-
|
50
|
-
def descompactar_arquivos_de_origem
|
51
|
-
arquivos_de_origem.each(&:descompactar)
|
52
|
-
end
|
20
|
+
class Impl
|
21
|
+
private
|
53
22
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
23
|
+
def initialize(caminho:, destino:)
|
24
|
+
@caminho = caminho
|
25
|
+
@destino = File.join(destino, nome_do_diretorio)
|
26
|
+
end
|
58
27
|
|
59
|
-
|
60
|
-
Dir.mkdir(destino_dos_arquivos_data)
|
61
|
-
end
|
28
|
+
attr_reader :caminho, :destino
|
62
29
|
|
63
|
-
|
64
|
-
@destino_dos_arquivos_data ||= File.join(destino, 'data')
|
65
|
-
end
|
30
|
+
public
|
66
31
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
32
|
+
attr_reader :arquivos_xml_por_recibo_a_retificar
|
33
|
+
|
34
|
+
def processar
|
35
|
+
dar_feedback_para_o_usuario
|
36
|
+
criar_diretorio_destino
|
37
|
+
criar_diretorio_dos_arquivos_xml
|
38
|
+
descompactar_arquivos_de_origem
|
39
|
+
criar_diretorio_dos_arquivos_data
|
40
|
+
carregar_arquivos_xml
|
41
|
+
classificar_arquivos_xml
|
42
|
+
ordenar_arquivos_xml
|
43
|
+
processar_arquivos_xml
|
44
|
+
end
|
71
45
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
end
|
46
|
+
def destino_dos_arquivos_data
|
47
|
+
@destino_dos_arquivos_data ||= File.join(destino, 'data')
|
48
|
+
end
|
76
49
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
.select(&:processavel?)
|
81
|
-
end
|
50
|
+
def arquivos_data
|
51
|
+
@arquivos_data ||= ArquivosData.new(destino_dos_arquivos_data)
|
52
|
+
end
|
82
53
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
arquivos_data: ArquivosData.new(destino_dos_arquivos_data),
|
87
|
-
contratos_de_emprego: ContratosDeEmprego.new,
|
88
|
-
contratos_de_trabalho_sem_vinculo: ContratosDeTrabalhoSemVinculo.new
|
89
|
-
)
|
90
|
-
end
|
54
|
+
def contratos_de_emprego
|
55
|
+
@contratos_de_emprego ||= ContratosDeEmprego.new
|
56
|
+
end
|
91
57
|
|
92
|
-
|
93
|
-
|
94
|
-
|
58
|
+
def contratos_de_trabalho_sem_vinculo
|
59
|
+
@contratos_de_trabalho_sem_vinculo ||= ContratosDeTrabalhoSemVinculo.new
|
60
|
+
end
|
95
61
|
|
96
|
-
class ArquivosData
|
97
62
|
private
|
98
63
|
|
99
|
-
def
|
100
|
-
|
64
|
+
def dar_feedback_para_o_usuario
|
65
|
+
puts Rainbow(nome_do_diretorio).green
|
101
66
|
end
|
102
67
|
|
103
|
-
|
104
|
-
|
105
|
-
|
68
|
+
def nome_do_diretorio
|
69
|
+
@nome_do_diretorio ||= File.basename(caminho)
|
70
|
+
end
|
106
71
|
|
107
|
-
def
|
108
|
-
(
|
72
|
+
def criar_diretorio_destino
|
73
|
+
Dir.mkdir(destino)
|
109
74
|
end
|
110
75
|
|
111
|
-
def
|
112
|
-
|
113
|
-
.map { |nome| File.join(destino_dos_arquivos_data, "#{nome}.data") }
|
114
|
-
.each { File.delete(_1) }
|
76
|
+
def criar_diretorio_dos_arquivos_xml
|
77
|
+
Dir.mkdir(destino_dos_arquivos_xml)
|
115
78
|
end
|
116
79
|
|
117
|
-
|
80
|
+
def destino_dos_arquivos_xml
|
81
|
+
@destino_dos_arquivos_xml ||= File.join(destino, 'xmls')
|
82
|
+
end
|
118
83
|
|
119
|
-
def
|
120
|
-
|
84
|
+
def descompactar_arquivos_de_origem
|
85
|
+
arquivos_de_origem.each(&:descompactar)
|
121
86
|
end
|
122
|
-
end
|
123
87
|
|
124
|
-
|
125
|
-
|
126
|
-
|
88
|
+
def arquivos_de_origem
|
89
|
+
Dir[File.join(caminho, '*.zip')]
|
90
|
+
.map { |caminho| ArquivoDeOrigem.new(caminho: caminho, destino_dos_arquivos_xml: destino_dos_arquivos_xml) }
|
127
91
|
end
|
128
92
|
|
129
|
-
def
|
130
|
-
|
131
|
-
contratos_por_matricula[matricula]
|
132
|
-
else
|
133
|
-
contratos.find { _1.recibo == recibo }
|
134
|
-
end
|
93
|
+
def criar_diretorio_dos_arquivos_data
|
94
|
+
Dir.mkdir(destino_dos_arquivos_data)
|
135
95
|
end
|
136
96
|
|
137
|
-
def
|
138
|
-
|
139
|
-
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
|
140
|
-
.sort_by(&:data_de_admissao)
|
97
|
+
def carregar_arquivos_xml
|
98
|
+
arquivos_xml.each(&:carregar)
|
141
99
|
end
|
142
100
|
|
143
|
-
def
|
144
|
-
|
101
|
+
def arquivos_xml
|
102
|
+
@arquivos_xml ||=
|
103
|
+
Dir[File.join(destino_dos_arquivos_xml, '*.xml')]
|
104
|
+
.map { |caminho| ArquivoXML.new(empresa: self, caminho: caminho) }
|
145
105
|
end
|
146
106
|
|
147
|
-
|
107
|
+
def classificar_arquivos_xml
|
108
|
+
Console.print 'classificando os arquivos XML...' do
|
109
|
+
arquivos_xml
|
110
|
+
.select(&:processavel?)
|
111
|
+
.partition(&:retificacao?)
|
112
|
+
.then do |de_retificacao, exceto_de_retificacao|
|
113
|
+
@arquivos_xml_por_recibo_a_retificar = de_retificacao.map { [_1.numero_do_recibo_a_retificar, _1] }.to_h
|
114
|
+
@arquivos_xml = exceto_de_retificacao
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
148
118
|
|
149
|
-
def
|
150
|
-
|
119
|
+
def ordenar_arquivos_xml
|
120
|
+
Console.print 'ordenando os arquivos XML...' do
|
121
|
+
arquivos_xml.sort_by! { [_1.momento_de_processamento_pelo_e_social, _1.nome] }
|
122
|
+
end
|
151
123
|
end
|
152
124
|
|
153
|
-
def
|
154
|
-
|
125
|
+
def processar_arquivos_xml
|
126
|
+
# otimizacao do gerenciamento de memoria
|
127
|
+
arquivos_xml.shift.processar while arquivos_xml.any?
|
155
128
|
end
|
156
129
|
|
157
|
-
class
|
130
|
+
class ArquivosData
|
158
131
|
private
|
159
132
|
|
160
|
-
def initialize(
|
161
|
-
@
|
162
|
-
@afastamento = afastamento
|
133
|
+
def initialize(destino_dos_arquivos_data)
|
134
|
+
@destino_dos_arquivos_data = destino_dos_arquivos_data
|
163
135
|
end
|
164
136
|
|
165
|
-
attr_reader :
|
137
|
+
attr_reader :destino_dos_arquivos_data
|
166
138
|
|
167
139
|
public
|
168
140
|
|
169
|
-
|
141
|
+
def registrar(recibo:, nome:)
|
142
|
+
(nomes_por_recibo[recibo] ||= []) << nome
|
143
|
+
end
|
144
|
+
|
145
|
+
def excluir(recibo)
|
146
|
+
(nomes_por_recibo.delete(recibo) || [])
|
147
|
+
.map { |nome| File.join(destino_dos_arquivos_data, "#{nome}.data") }
|
148
|
+
.each { File.delete(_1) }
|
149
|
+
end
|
170
150
|
|
171
|
-
|
151
|
+
private
|
172
152
|
|
173
|
-
|
153
|
+
def nomes_por_recibo
|
154
|
+
@nomes_por_recibo ||= {}
|
155
|
+
end
|
156
|
+
end
|
174
157
|
|
175
|
-
|
158
|
+
class ContratosDeEmprego
|
159
|
+
def registrar_admissao(admissao:, afastamento:)
|
160
|
+
contratos_por_matricula[admissao.matricula] = Contrato.new(admissao: admissao, afastamento: afastamento)
|
161
|
+
end
|
176
162
|
|
177
|
-
def
|
178
|
-
|
163
|
+
def [](matricula)
|
164
|
+
contratos_por_matricula[matricula]
|
179
165
|
end
|
180
166
|
|
181
|
-
def
|
182
|
-
|
183
|
-
|
167
|
+
def *(cpf_do_trabalhador:, data:)
|
168
|
+
contratos
|
169
|
+
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
|
170
|
+
.sort_by(&:data_de_admissao)
|
184
171
|
end
|
185
|
-
end
|
186
|
-
end
|
187
172
|
|
188
|
-
|
189
|
-
|
190
|
-
|
173
|
+
def remover(recibo)
|
174
|
+
contratos_por_matricula.delete_if { _2.recibo == recibo }
|
175
|
+
end
|
176
|
+
|
177
|
+
private
|
178
|
+
|
179
|
+
def contratos_por_matricula
|
180
|
+
@contratos_por_matricula ||= {}
|
181
|
+
end
|
182
|
+
|
183
|
+
def contratos
|
184
|
+
contratos_por_matricula.values
|
185
|
+
end
|
186
|
+
|
187
|
+
class Contrato
|
188
|
+
private
|
189
|
+
|
190
|
+
def initialize(admissao:, afastamento:)
|
191
|
+
@admissao = admissao
|
192
|
+
@afastamento = afastamento
|
193
|
+
end
|
194
|
+
|
195
|
+
attr_reader :admissao, :data_de_desligamento
|
196
|
+
|
197
|
+
public
|
198
|
+
|
199
|
+
extend Forwardable
|
200
|
+
|
201
|
+
def_delegators :admissao, :matricula, :data_de_admissao, :categoria_do_trabalhador, :cpf_do_trabalhador,
|
202
|
+
:recibo
|
203
|
+
|
204
|
+
attr_accessor :afastamento
|
205
|
+
|
206
|
+
attr_writer :data_de_desligamento
|
207
|
+
|
208
|
+
def ativo?(data)
|
209
|
+
data_de_admissao <= data && (!data_de_desligamento || data_de_desligamento >= data)
|
210
|
+
end
|
211
|
+
end
|
191
212
|
end
|
192
213
|
|
193
|
-
|
194
|
-
|
195
|
-
contratos
|
196
|
-
|
214
|
+
class ContratosDeTrabalhoSemVinculo
|
215
|
+
def registrar_inicio_de_contrato(inicio_de_contrato:, afastamento:)
|
216
|
+
contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, afastamento: afastamento)
|
217
|
+
end
|
218
|
+
|
219
|
+
def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
|
197
220
|
contratos
|
198
221
|
.select {
|
199
222
|
_1.cpf_do_trabalhador == cpf_do_trabalhador && _1.categoria_do_trabalhador == categoria_do_trabalhador &&
|
@@ -201,51 +224,46 @@ module Teodoro
|
|
201
224
|
}
|
202
225
|
.max_by(&:data_de_inicio)
|
203
226
|
end
|
204
|
-
end
|
205
|
-
|
206
|
-
def *(cpf_do_trabalhador:, data:)
|
207
|
-
contratos
|
208
|
-
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
|
209
|
-
.sort_by(&:data_de_inicio)
|
210
|
-
end
|
211
227
|
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
228
|
+
def *(cpf_do_trabalhador:, data:)
|
229
|
+
contratos
|
230
|
+
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
|
231
|
+
.sort_by(&:data_de_inicio)
|
232
|
+
end
|
217
233
|
|
218
|
-
|
219
|
-
|
220
|
-
|
234
|
+
def remover(recibo)
|
235
|
+
contratos.delete_if { _1.recibo == recibo }
|
236
|
+
end
|
221
237
|
|
222
|
-
class Contrato
|
223
238
|
private
|
224
239
|
|
225
|
-
def
|
226
|
-
@
|
227
|
-
@afastamento = afastamento
|
240
|
+
def contratos
|
241
|
+
@contratos ||= []
|
228
242
|
end
|
229
243
|
|
230
|
-
|
244
|
+
class Contrato
|
245
|
+
private
|
231
246
|
|
232
|
-
|
247
|
+
def initialize(inicio_de_contrato:, afastamento:)
|
248
|
+
@inicio_de_contrato = inicio_de_contrato
|
249
|
+
@afastamento = afastamento
|
250
|
+
end
|
233
251
|
|
234
|
-
|
252
|
+
attr_reader :inicio_de_contrato, :data_do_termino
|
235
253
|
|
236
|
-
|
254
|
+
public
|
237
255
|
|
238
|
-
|
256
|
+
extend Forwardable
|
239
257
|
|
240
|
-
|
258
|
+
def_delegators :inicio_de_contrato, :cpf_do_trabalhador, :categoria_do_trabalhador, :data_de_inicio, :recibo
|
241
259
|
|
242
|
-
|
243
|
-
|
244
|
-
|
260
|
+
attr_accessor :afastamento
|
261
|
+
|
262
|
+
attr_writer :data_do_termino
|
245
263
|
|
246
|
-
|
247
|
-
|
248
|
-
|
264
|
+
def ativo?(data)
|
265
|
+
data_de_inicio <= data && (!data_do_termino || data_do_termino >= data)
|
266
|
+
end
|
249
267
|
end
|
250
268
|
end
|
251
269
|
end
|
@@ -5,10 +5,6 @@ module Teodoro
|
|
5
5
|
|
6
6
|
private
|
7
7
|
|
8
|
-
def noh_principal_do_evento
|
9
|
-
'evtInfoEmpregador'
|
10
|
-
end
|
11
|
-
|
12
8
|
def noh_de_informacoes_do_evento
|
13
9
|
'infoEmpregador'
|
14
10
|
end
|
@@ -52,7 +48,7 @@ module Teodoro
|
|
52
48
|
end
|
53
49
|
|
54
50
|
def numero_de_inscricao
|
55
|
-
@numero_de_inscricao ||= evento['
|
51
|
+
@numero_de_inscricao ||= evento['ideEmpregador/nrInsc']
|
56
52
|
end
|
57
53
|
|
58
54
|
def cnpj_raiz
|
@@ -79,31 +75,31 @@ module Teodoro
|
|
79
75
|
['RetornoAction'],
|
80
76
|
['ehOrgaoPublico', [orgao_publico?, :bool]],
|
81
77
|
['ehOrgaoPublicoUniao', [orgao_publico?, :bool]],
|
82
|
-
['ehOrgaoPublicoEstadualMunicipalDistrital', [evento['
|
78
|
+
['ehOrgaoPublicoEstadualMunicipalDistrital', [evento['infoEmpregador/*/infoCadastro/infoOP/infoEnte'], :bool]],
|
83
79
|
['ExibeModoCompleto'],
|
84
80
|
['InicioValidade', [inicio_da_validade, :mes_ano]],
|
85
81
|
['FimValidade', [fim_da_validade, :mes_ano]],
|
86
82
|
['NomeRazaoSocial', nome_ou_razao_social],
|
87
|
-
['ClassificacaoTributaria', evento['
|
88
|
-
['NaturezaJuridica', evento['
|
89
|
-
['IndicativoRegEletronico', evento['
|
90
|
-
['IndicativoCooperativa', evento['
|
91
|
-
['IndicativoConstrutora', evento['
|
92
|
-
['IndicativoDesoneracaoFolha', evento['
|
93
|
-
['IndicativoEntidadeEducativa', evento['
|
94
|
-
['IndicativoEmpresaTrabalhoTemporario', evento['
|
95
|
-
['CpfContato', evento['
|
96
|
-
['NomeContato', evento['
|
97
|
-
['TelefoneFixo', evento['
|
98
|
-
['TelefoneCelular', evento['
|
99
|
-
['Email', evento['
|
83
|
+
['ClassificacaoTributaria', evento['infoEmpregador/*/infoCadastro/classTrib']],
|
84
|
+
['NaturezaJuridica', evento['infoEmpregador/*/infoCadastro/natJurid']],
|
85
|
+
['IndicativoRegEletronico', evento['infoEmpregador/*/infoCadastro/indOptRegEletron']],
|
86
|
+
['IndicativoCooperativa', evento['infoEmpregador/*/infoCadastro/indCoop']],
|
87
|
+
['IndicativoConstrutora', evento['infoEmpregador/*/infoCadastro/indConstr']],
|
88
|
+
['IndicativoDesoneracaoFolha', evento['infoEmpregador/*/infoCadastro/indDesFolha']],
|
89
|
+
['IndicativoEntidadeEducativa', evento['infoEmpregador/*/infoCadastro/indEntEd']],
|
90
|
+
['IndicativoEmpresaTrabalhoTemporario', evento['infoEmpregador/*/infoCadastro/indEtt']],
|
91
|
+
['CpfContato', evento['infoEmpregador/*/infoCadastro/contato/cpfCtt']],
|
92
|
+
['NomeContato', evento['infoEmpregador/*/infoCadastro/contato/nmCtt']],
|
93
|
+
['TelefoneFixo', evento['infoEmpregador/*/infoCadastro/contato/foneFixo']],
|
94
|
+
['TelefoneCelular', evento['infoEmpregador/*/infoCadastro/contato/foneCel']],
|
95
|
+
['Email', evento['infoEmpregador/*/infoCadastro/contato/email']],
|
100
96
|
['SoftwareHouseTela_CnpjSoftwareHouse'],
|
101
97
|
['SoftwareHouseTela_NomeRazaoSocial'],
|
102
98
|
['SoftwareHouseTela_NomeContato'],
|
103
99
|
['SoftwareHouseTela_Telefone'],
|
104
100
|
['SoftwareHouseTela_Email'],
|
105
|
-
['IndicativoSituacaoPF', evento['
|
106
|
-
['IndicativoSituacaoPJ', evento['
|
101
|
+
['IndicativoSituacaoPF', evento['infoEmpregador/*/infoCadastro/infoComplementares/situacaoPF/indSitPF']],
|
102
|
+
['IndicativoSituacaoPJ', evento['infoEmpregador/*/infoCadastro/infoComplementares/situacaoPJ/indSitPJ']],
|
107
103
|
['IdEventoXml', id_do_evento],
|
108
104
|
['NrReciboEventoOriginal', numero_do_recibo],
|
109
105
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
@@ -126,15 +122,15 @@ module Teodoro
|
|
126
122
|
end
|
127
123
|
|
128
124
|
def nome_ou_razao_social
|
129
|
-
@nome_ou_razao_social ||= evento['
|
125
|
+
@nome_ou_razao_social ||= evento['infoEmpregador/*/infoCadastro/nmRazao']
|
130
126
|
end
|
131
127
|
|
132
128
|
def orgao_publico?
|
133
|
-
@orgao_publico ||= evento['
|
129
|
+
@orgao_publico ||= evento['infoEmpregador/*/infoCadastro/infoOP']
|
134
130
|
end
|
135
131
|
|
136
132
|
def softwares_house
|
137
|
-
evento.*('
|
133
|
+
evento.*('infoEmpregador/*/infoCadastro/softwareHouse')
|
138
134
|
end
|
139
135
|
end
|
140
136
|
end
|