teodoro 0.16.0 → 0.20.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/CBOs.json +10274 -0
- data/lib/teodoro.rb +49 -0
- data/lib/teodoro/arquivo_data/car.rb +30 -2
- data/lib/teodoro/arquivo_data/tra_epg_avi.rb +1 -1
- data/lib/teodoro/arquivo_de_evento.rb +4 -4
- data/lib/teodoro/console.rb +6 -2
- data/lib/teodoro/empresa.rb +29 -8
- data/lib/teodoro/empresa/cargos_gerados.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1000.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1005.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1010.rb +2 -2
- data/lib/teodoro/leiaute/arquivo_s1020.rb +7 -3
- data/lib/teodoro/leiaute/arquivo_s1030.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1040.rb +2 -2
- data/lib/teodoro/leiaute/arquivo_s1050.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s1070.rb +2 -2
- data/lib/teodoro/leiaute/arquivo_s2200.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s2205.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s2206.rb +2 -2
- data/lib/teodoro/leiaute/arquivo_s2230.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s2250.rb +1 -1
- data/lib/teodoro/leiaute/arquivo_s2299.rb +2 -2
- data/lib/teodoro/leiaute/arquivo_s2300.rb +2 -2
- data/lib/teodoro/leiaute/arquivo_s2306.rb +2 -2
- data/lib/teodoro/leiaute/arquivo_s2399.rb +1 -1
- metadata +3 -2
data/lib/teodoro.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'forwardable'
|
2
|
+
require 'json'
|
3
|
+
require 'net/http'
|
2
4
|
require 'nokogiri'
|
3
5
|
require 'os'
|
4
6
|
require 'rainbow'
|
@@ -10,6 +12,17 @@ require_relative 'teodoro/empresa'
|
|
10
12
|
require_relative 'teodoro/obj'
|
11
13
|
|
12
14
|
module Teodoro
|
15
|
+
VERSION = '0.20.0'.freeze
|
16
|
+
|
17
|
+
CBOs = __FILE__
|
18
|
+
.then { File.dirname(_1) }
|
19
|
+
.then { File.join(_1, 'CBOs.json') }
|
20
|
+
.then { File.read(_1) }
|
21
|
+
.then { JSON.parse(_1) }
|
22
|
+
.map { [_1['codigo'], _1['titulo']] }
|
23
|
+
.to_h
|
24
|
+
.freeze
|
25
|
+
|
13
26
|
def self.call(args)
|
14
27
|
Execution.new(args).call
|
15
28
|
end
|
@@ -38,6 +51,7 @@ module Teodoro
|
|
38
51
|
validar_existencia_do_diretorio_de_destino
|
39
52
|
validar_que_diretorio_de_origem_nao_esta_vazio
|
40
53
|
validar_que_diretorio_de_destino_esta_vazio
|
54
|
+
validar_que_nao_ha_nova_versao_disponivel
|
41
55
|
|
42
56
|
processar_empresas
|
43
57
|
end
|
@@ -48,6 +62,41 @@ module Teodoro
|
|
48
62
|
erro "#{NOME_DO_PROGRAMA} [diretório de origem] [diretório de destino]" unless args.size == 2
|
49
63
|
end
|
50
64
|
|
65
|
+
def validar_que_nao_ha_nova_versao_disponivel
|
66
|
+
return unless nova_versao_disponivel?
|
67
|
+
|
68
|
+
erro [
|
69
|
+
'Há uma nova versão disponível. Execute o seguinte comando para atualizar:',
|
70
|
+
"gem update #{NOME_DO_PROGRAMA}"
|
71
|
+
]
|
72
|
+
end
|
73
|
+
|
74
|
+
def nova_versao_disponivel?
|
75
|
+
carregar_versao_disponivel != versao_corrente
|
76
|
+
end
|
77
|
+
|
78
|
+
def carregar_versao_disponivel
|
79
|
+
Console.print 'Verificando se há nova versão disponível...' do
|
80
|
+
carregar_dados_da_gem
|
81
|
+
.then { JSON.parse(_1) }
|
82
|
+
.then { _1['version'] }
|
83
|
+
end
|
84
|
+
rescue StandardError
|
85
|
+
erro 'Erro! Não foi possível carregar a versão disponível. Verifique seu acesso à internet.'
|
86
|
+
end
|
87
|
+
|
88
|
+
def carregar_dados_da_gem
|
89
|
+
Net::HTTP.get(uri_da_gem)
|
90
|
+
end
|
91
|
+
|
92
|
+
def uri_da_gem
|
93
|
+
URI("https://rubygems.org/api/v1/gems/#{NOME_DO_PROGRAMA}.json")
|
94
|
+
end
|
95
|
+
|
96
|
+
def versao_corrente
|
97
|
+
Teodoro::VERSION
|
98
|
+
end
|
99
|
+
|
51
100
|
def validar_existencia_do_diretorio_de_origem
|
52
101
|
erro 'Diretório de origem não existe.' unless File.directory?(origem)
|
53
102
|
end
|
@@ -19,15 +19,43 @@ module Teodoro
|
|
19
19
|
['FimValidade', dados.fim_da_validade, :mes_ano],
|
20
20
|
['DadosCargo_DescricaoCargo', dados.nome_do_cargo],
|
21
21
|
['DadosCargo_CodigoCBO', dados.cbo],
|
22
|
-
['DadosCargo_CodigoCBO_TEXT'],
|
22
|
+
['DadosCargo_CodigoCBO_TEXT', "#{dados.cbo} - #{CBO.new(dados.cbo).titulo}"],
|
23
23
|
['autocomplete_DadosCargo_CodigoCBO'],
|
24
24
|
['PreencherCargoPublico', dados.orgao_publico?, :bool],
|
25
25
|
['IdEventoXml', dados.id_do_evento],
|
26
26
|
['NrReciboEventoOriginal', dados.numero_do_recibo],
|
27
27
|
['DescricaoProcEmi', dados.processo_de_emissao_do_evento],
|
28
|
-
['VerProc', dados.
|
28
|
+
['VerProc', dados.versao_do_processo_de_emissao_do_evento]
|
29
29
|
]
|
30
30
|
end
|
31
|
+
|
32
|
+
class CBO
|
33
|
+
private
|
34
|
+
|
35
|
+
def initialize(codigo)
|
36
|
+
@codigo = codigo
|
37
|
+
|
38
|
+
alertar unless encontrado?
|
39
|
+
end
|
40
|
+
|
41
|
+
attr_reader :codigo
|
42
|
+
|
43
|
+
public
|
44
|
+
|
45
|
+
def titulo
|
46
|
+
CBOs[codigo] || codigo
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def encontrado?
|
52
|
+
CBOs.key?(codigo)
|
53
|
+
end
|
54
|
+
|
55
|
+
def alertar
|
56
|
+
puts "\n #{Rainbow("CBO #{codigo} não encontrado").yellow}"
|
57
|
+
end
|
58
|
+
end
|
31
59
|
end
|
32
60
|
end
|
33
61
|
end
|
@@ -46,7 +46,7 @@ module Teodoro
|
|
46
46
|
['NrReciboEventoOriginal', dados.numero_do_recibo],
|
47
47
|
['RequestVerificationToken'],
|
48
48
|
['DescricaoProcEmi', dados.processo_de_emissao_do_evento],
|
49
|
-
['VerProc', dados.
|
49
|
+
['VerProc', dados.versao_do_processo_de_emissao_do_evento]
|
50
50
|
# rubocop:enable Layout/LineLength
|
51
51
|
]
|
52
52
|
end
|
@@ -29,12 +29,12 @@ module Teodoro
|
|
29
29
|
@processo_de_emissao_do_evento ||= evento['ideEvento/procEmi']
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
33
|
-
@
|
32
|
+
def versao_do_processo_de_emissao_do_evento
|
33
|
+
@versao_do_processo_de_emissao_do_evento ||= evento['ideEvento/verProc']
|
34
34
|
end
|
35
35
|
|
36
|
-
def
|
37
|
-
@
|
36
|
+
def tipo_de_inscricao_do_empregador
|
37
|
+
@tipo_de_inscricao_do_empregador ||= evento['ideEmpregador/tpInsc']
|
38
38
|
end
|
39
39
|
|
40
40
|
def numero_do_recibo
|
data/lib/teodoro/console.rb
CHANGED
data/lib/teodoro/empresa.rb
CHANGED
@@ -21,7 +21,7 @@ module Teodoro
|
|
21
21
|
impl.processar
|
22
22
|
end
|
23
23
|
|
24
|
-
class Impl
|
24
|
+
class Impl # rubocop:disable Metrics/ClassLength
|
25
25
|
private
|
26
26
|
|
27
27
|
def initialize(caminho:, destino:)
|
@@ -39,15 +39,14 @@ module Teodoro
|
|
39
39
|
|
40
40
|
def processar
|
41
41
|
dar_feedback_para_o_usuario
|
42
|
-
|
43
|
-
criar_diretorio_dos_arquivos_xml
|
42
|
+
criar_diretorios_destino
|
44
43
|
descompactar_arquivos_de_origem
|
45
|
-
criar_diretorio_dos_arquivos_data
|
46
44
|
carregar_arquivos_xml
|
47
45
|
classificar_arquivos_xml
|
48
46
|
ordenar_arquivos_xml
|
49
47
|
processar_arquivos_xml
|
50
48
|
processar_cargos_gerados
|
49
|
+
ajustar_nome_do_ultimo_arquivo_emp_data
|
51
50
|
end
|
52
51
|
|
53
52
|
def destino_dos_arquivos_data
|
@@ -80,6 +79,12 @@ module Teodoro
|
|
80
79
|
@nome_do_diretorio ||= File.basename(caminho)
|
81
80
|
end
|
82
81
|
|
82
|
+
def criar_diretorios_destino
|
83
|
+
criar_diretorio_destino
|
84
|
+
criar_diretorio_dos_arquivos_xml
|
85
|
+
criar_diretorio_dos_arquivos_data
|
86
|
+
end
|
87
|
+
|
83
88
|
def criar_diretorio_destino
|
84
89
|
Dir.mkdir(destino)
|
85
90
|
end
|
@@ -92,6 +97,10 @@ module Teodoro
|
|
92
97
|
@destino_dos_arquivos_xml ||= File.join(destino, 'xmls')
|
93
98
|
end
|
94
99
|
|
100
|
+
def criar_diretorio_dos_arquivos_data
|
101
|
+
Dir.mkdir(destino_dos_arquivos_data)
|
102
|
+
end
|
103
|
+
|
95
104
|
def descompactar_arquivos_de_origem
|
96
105
|
# otimizacao do gerenciamento de memoria
|
97
106
|
arquivos_de_origem.shift.descompactar while arquivos_de_origem.any?
|
@@ -103,10 +112,6 @@ module Teodoro
|
|
103
112
|
.map { |caminho| ArquivoDeOrigem.new(caminho: caminho, destino_dos_arquivos_xml: destino_dos_arquivos_xml) }
|
104
113
|
end
|
105
114
|
|
106
|
-
def criar_diretorio_dos_arquivos_data
|
107
|
-
Dir.mkdir(destino_dos_arquivos_data)
|
108
|
-
end
|
109
|
-
|
110
115
|
def carregar_arquivos_xml
|
111
116
|
arquivos_xml.each(&:carregar)
|
112
117
|
end
|
@@ -143,6 +148,22 @@ module Teodoro
|
|
143
148
|
def processar_cargos_gerados
|
144
149
|
cargos_gerados.each(&:processar)
|
145
150
|
end
|
151
|
+
|
152
|
+
def ajustar_nome_do_ultimo_arquivo_emp_data
|
153
|
+
File.rename(caminho_do_ultimo_arquivo_emp_data, novo_caminho_do_ultimo_arquivo_emp_data)
|
154
|
+
end
|
155
|
+
|
156
|
+
def caminho_do_ultimo_arquivo_emp_data
|
157
|
+
@caminho_do_ultimo_arquivo_emp_data ||= caminhos_dos_arquivos_emp_data.last
|
158
|
+
end
|
159
|
+
|
160
|
+
def caminhos_dos_arquivos_emp_data
|
161
|
+
Dir[File.join(destino_dos_arquivos_data, 'EMP*.data')]
|
162
|
+
end
|
163
|
+
|
164
|
+
def novo_caminho_do_ultimo_arquivo_emp_data
|
165
|
+
caminho_do_ultimo_arquivo_emp_data.sub(/\[[^\]]*\]\.data$/, '.data')
|
166
|
+
end
|
146
167
|
end
|
147
168
|
end
|
148
169
|
end
|
@@ -114,7 +114,7 @@ module Teodoro
|
|
114
114
|
['IdEventoXml', id_do_evento],
|
115
115
|
['NrReciboEventoOriginal', numero_do_recibo],
|
116
116
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
117
|
-
['VerProc',
|
117
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
118
118
|
['InformacoesManutencao_Id'],
|
119
119
|
['InformacoesManutencao_OpcaoPermitida'],
|
120
120
|
['ESX_GRUPO'],
|
@@ -55,7 +55,7 @@ module Teodoro
|
|
55
55
|
['IdEventoXml', id_do_evento],
|
56
56
|
['NrReciboEventoOriginal', numero_do_recibo],
|
57
57
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
58
|
-
['VerProc',
|
58
|
+
['VerProc', versao_do_processo_de_emissao_do_evento]
|
59
59
|
]
|
60
60
|
end
|
61
61
|
end
|
@@ -46,8 +46,8 @@ module Teodoro
|
|
46
46
|
['DadosRubrica_CodigoIncidenciaSindical', evento['infoRubrica/*/dadosRubrica/codIncSIND']],
|
47
47
|
['IdEventoXml'],
|
48
48
|
['NrReciboEventoOriginal'],
|
49
|
-
['DescricaoProcEmi'],
|
50
|
-
['VerProc',
|
49
|
+
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
50
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
51
51
|
['hd_ProcessoFGTS'],
|
52
52
|
['hd_ProcessoCP'],
|
53
53
|
['hd_ProcessoIR'],
|
@@ -32,8 +32,8 @@ module Teodoro
|
|
32
32
|
['CodigoLotacao', codigo_da_lotacao_tributaria],
|
33
33
|
['InicioValidade', inicio_da_validade, :mes_ano],
|
34
34
|
['FimValidade', fim_da_validade, :mes_ano],
|
35
|
-
['TipoLotacao',
|
36
|
-
[
|
35
|
+
['TipoLotacao', tipo_de_lotacao],
|
36
|
+
%w[Tipo 1],
|
37
37
|
['TipoInscricaoEstab', evento['infoLotacao/*/dadosLotacao/tpInsc']],
|
38
38
|
['NumeroInscricaoEstab', evento['infoLotacao/*/dadosLotacao/nrInsc']],
|
39
39
|
['Fpas', evento['infoLotacao/*/dadosLotacao/fpasLotacao/fpas']],
|
@@ -41,9 +41,13 @@ module Teodoro
|
|
41
41
|
['IdEventoXml', id_do_evento],
|
42
42
|
['NrReciboEventoOriginal', numero_do_recibo],
|
43
43
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
44
|
-
['VerProc',
|
44
|
+
['VerProc', versao_do_processo_de_emissao_do_evento]
|
45
45
|
]
|
46
46
|
end
|
47
|
+
|
48
|
+
def tipo_de_lotacao
|
49
|
+
@tipo_de_lotacao ||= evento['infoLotacao/*/dadosLotacao/tpLotacao']
|
50
|
+
end
|
47
51
|
end
|
48
52
|
end
|
49
53
|
end
|
@@ -29,7 +29,7 @@ module Teodoro
|
|
29
29
|
id_do_evento: id_do_evento,
|
30
30
|
numero_do_recibo: numero_do_recibo,
|
31
31
|
processo_de_emissao_do_evento: processo_de_emissao_do_evento,
|
32
|
-
|
32
|
+
versao_do_processo_de_emissao_do_evento: versao_do_processo_de_emissao_do_evento
|
33
33
|
)
|
34
34
|
)
|
35
35
|
end
|
@@ -34,8 +34,8 @@ module Teodoro
|
|
34
34
|
['DadosFuncao_DescricaoCBO'],
|
35
35
|
['IdEventoXml'],
|
36
36
|
['NrReciboEventoOriginal'],
|
37
|
-
['DescricaoProcEmi'],
|
38
|
-
['VerProc',
|
37
|
+
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
38
|
+
['VerProc', versao_do_processo_de_emissao_do_evento]
|
39
39
|
]
|
40
40
|
end
|
41
41
|
end
|
@@ -42,7 +42,7 @@ module Teodoro
|
|
42
42
|
['IdEventoXml', id_do_evento],
|
43
43
|
['NrReciboEventoOriginal', numero_do_recibo],
|
44
44
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
45
|
-
['VerProc',
|
45
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
46
46
|
*evento.*('infoHorContratual/*/dadosHorContratual/horarioIntervalo').map.with_index(1) do |intervalo, seq|
|
47
47
|
[
|
48
48
|
["DadosHorario_ListaHorarioIntervalo_#{seq}_TipoIntervalo", intervalo['tpInterv']],
|
@@ -48,8 +48,8 @@ module Teodoro
|
|
48
48
|
['commandArgument'],
|
49
49
|
['IdEventoXml'],
|
50
50
|
['NrReciboEventoOriginal'],
|
51
|
-
['DescricaoProcEmi'],
|
52
|
-
['VerProc',
|
51
|
+
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
52
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
53
53
|
['IdEdicaoInfoSusp'],
|
54
54
|
['HiddenCurrentUrl'],
|
55
55
|
['ehCodigoAcesso'],
|
@@ -79,7 +79,7 @@ module Teodoro
|
|
79
79
|
['autocomplete_EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento'],
|
80
80
|
['autocomplete_EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade'],
|
81
81
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
82
|
-
['VerProc',
|
82
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
83
83
|
['HorarioTela_Dia'],
|
84
84
|
['EventoAdmissao_InfoTrabalhador_Cpf', cpf_do_trabalhador],
|
85
85
|
['EventoAdmissao_InfoTrabalhador_Nome', evento['trabalhador/nmTrab']],
|
@@ -30,7 +30,7 @@ module Teodoro
|
|
30
30
|
['UrlRetorno'],
|
31
31
|
['visualizar'],
|
32
32
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
33
|
-
['VerProc',
|
33
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
34
34
|
['EventoAdmissao_TipoEventoEnviado'],
|
35
35
|
['EventoAdmissao_InfoTrabalhador_Cpf', cpf_do_trabalhador],
|
36
36
|
['EventoAdmissao_InfoTrabalhador_Nome', evento['alteracao/dadosTrabalhador/nmTrab']],
|
@@ -102,7 +102,7 @@ module Teodoro
|
|
102
102
|
['HorarioTela_Dia'],
|
103
103
|
['dataNomeacao'],
|
104
104
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
105
|
-
['VerProc',
|
105
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
106
106
|
['FiltroEstabelecimentoLocalTrabalho'],
|
107
107
|
['NomeEstabelecimentoLocalTrabalho'],
|
108
108
|
['CodigoCBO'],
|
@@ -174,7 +174,7 @@ module Teodoro
|
|
174
174
|
['HorarioTela_Dia'],
|
175
175
|
['dataNomeacao'],
|
176
176
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
177
|
-
['VerProc',
|
177
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
178
178
|
['FiltroEstabelecimentoLocalTrabalho'],
|
179
179
|
['NomeEstabelecimentoLocalTrabalho'],
|
180
180
|
['CodigoCBO'],
|
@@ -145,7 +145,7 @@ module Teodoro
|
|
145
145
|
['CheckPreencherAcidenteTransito'],
|
146
146
|
['DesejaIncluirInfoAtestado'],
|
147
147
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
148
|
-
['VerProc',
|
148
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
149
149
|
['IdContrato'],
|
150
150
|
['PreencherCID'],
|
151
151
|
['PreencherAcidenteTransito'],
|
@@ -19,7 +19,7 @@ module Teodoro
|
|
19
19
|
id_do_evento: id_do_evento,
|
20
20
|
numero_do_recibo: numero_do_recibo,
|
21
21
|
processo_de_emissao_do_evento: processo_de_emissao_do_evento,
|
22
|
-
|
22
|
+
versao_do_processo_de_emissao_do_evento: versao_do_processo_de_emissao_do_evento
|
23
23
|
)
|
24
24
|
)
|
25
25
|
]
|
@@ -73,7 +73,7 @@ module Teodoro
|
|
73
73
|
['FiltroHorario'],
|
74
74
|
['HorarioTela_CodigoHorarioContratual'],
|
75
75
|
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
76
|
-
['VerProc',
|
76
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
77
77
|
['cpfTrabalhador'],
|
78
78
|
['nomeTrabalhador'],
|
79
79
|
['TipoRegistroAdmissao'],
|
@@ -256,7 +256,7 @@ module Teodoro
|
|
256
256
|
id_do_evento: nil,
|
257
257
|
numero_do_recibo: nil,
|
258
258
|
processo_de_emissao_do_evento: nil,
|
259
|
-
|
259
|
+
versao_do_processo_de_emissao_do_evento: nil
|
260
260
|
)
|
261
261
|
)
|
262
262
|
end
|
@@ -69,8 +69,8 @@ module Teodoro
|
|
69
69
|
['IdContratoReferenciado'],
|
70
70
|
['autocomplete_EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento'],
|
71
71
|
['autocomplete_EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade'],
|
72
|
-
['DescricaoProcEmi'],
|
73
|
-
['VerProc',
|
72
|
+
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
73
|
+
['VerProc', versao_do_processo_de_emissao_do_evento],
|
74
74
|
['EventoAdmissao_InfoTrabalhador_Cpf', cpf_do_trabalhador],
|
75
75
|
['EventoAdmissao_InfoTrabalhador_Nome', evento['trabalhador/nmTrab']],
|
76
76
|
['EventoAdmissao_InfoTrabalhador_Nis', evento['trabalhador/nisTrab']],
|