teodoro 0.17.0 → 0.21.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.
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.21.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.versao_do_aplicativo_de_processamento_do_evento]
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.versao_do_aplicativo_de_processamento_do_evento]
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 tipo_de_inscricao_do_empregador
33
- @tipo_de_inscricao_do_empregador ||= evento['ideEmpregador/tpInsc']
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 versao_do_aplicativo_de_processamento_do_evento
37
- @versao_do_aplicativo_de_processamento_do_evento ||= recibo['processamento/versaoAppProcessamento']
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
@@ -1,7 +1,11 @@
1
1
  module Console
2
2
  def self.print(string)
3
3
  Kernel.print "\r\e[2K#{string}"
4
- yield
5
- Kernel.print "\r\e[2K"
4
+ begin
5
+ result = yield
6
+ ensure
7
+ Kernel.print "\r\e[2K"
8
+ end
9
+ result
6
10
  end
7
11
  end
@@ -75,7 +75,7 @@ module Teodoro
75
75
  id_do_evento: nil,
76
76
  numero_do_recibo: nil,
77
77
  processo_de_emissao_do_evento: nil,
78
- versao_do_aplicativo_de_processamento_do_evento: nil
78
+ versao_do_processo_de_emissao_do_evento: nil
79
79
  )
80
80
  )
81
81
  )
@@ -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', versao_do_aplicativo_de_processamento_do_evento],
117
+ ['VerProc', versao_do_processo_de_emissao_do_evento],
118
118
  ['InformacoesManutencao_Id'],
119
119
  ['InformacoesManutencao_OpcaoPermitida'],
120
120
  ['ESX_GRUPO'],
@@ -37,8 +37,8 @@ module Teodoro
37
37
  ['FimValidade', fim_da_validade, :mes_ano],
38
38
  ['TipoCaepf', evento['infoEstab/*/dadosEstab/infoCaepf/tpCaepf']],
39
39
  ['CnaePreponderanteCodigoDescricaoAutoComplete'],
40
- ['CnaePreponderante', evento['infoEstab/*/dadosEstab/cnaePrep']],
41
- ['CnaePreponderantePreenchido'],
40
+ ['CnaePreponderante', cnae_preponderante],
41
+ ['CnaePreponderantePreenchido', cnae_preponderante],
42
42
  ['AliquotaRat', evento['infoEstab/*/dadosEstab/aliqGilrat/aliqRat']],
43
43
  ['Fap', evento['infoEstab/*/dadosEstab/aliqGilrat/fap'], :decimal],
44
44
  ['AliquotaRatAjustada', evento['infoEstab/*/dadosEstab/aliqGilrat/aliqRatAjust'], :decimal],
@@ -55,9 +55,13 @@ module Teodoro
55
55
  ['IdEventoXml', id_do_evento],
56
56
  ['NrReciboEventoOriginal', numero_do_recibo],
57
57
  ['DescricaoProcEmi', processo_de_emissao_do_evento],
58
- ['VerProc', versao_do_aplicativo_de_processamento_do_evento]
58
+ ['VerProc', versao_do_processo_de_emissao_do_evento]
59
59
  ]
60
60
  end
61
+
62
+ def cnae_preponderante
63
+ @cnae_preponderante ||= evento['infoEstab/*/dadosEstab/cnaePrep']
64
+ end
61
65
  end
62
66
  end
63
67
  end
@@ -44,10 +44,10 @@ module Teodoro
44
44
  de_acordo_com_a_versao_do_leiaute['DadosRubrica_CodigoIncidenciaIR'],
45
45
  ['DadosRubrica_CodigoIncidenciaFGTS', evento['infoRubrica/*/dadosRubrica/codIncFGTS']],
46
46
  ['DadosRubrica_CodigoIncidenciaSindical', evento['infoRubrica/*/dadosRubrica/codIncSIND']],
47
- ['IdEventoXml'],
48
- ['NrReciboEventoOriginal'],
49
- ['DescricaoProcEmi'],
50
- ['VerProc', versao_do_aplicativo_de_processamento_do_evento],
47
+ ['IdEventoXml', id_do_evento],
48
+ ['NrReciboEventoOriginal', numero_do_recibo],
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', evento['infoLotacao/*/dadosLotacao/tpLotacao']],
36
- ['Tipo'],
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', versao_do_aplicativo_de_processamento_do_evento]
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
- versao_do_aplicativo_de_processamento_do_evento: versao_do_aplicativo_de_processamento_do_evento
32
+ versao_do_processo_de_emissao_do_evento: versao_do_processo_de_emissao_do_evento
33
33
  )
34
34
  )
35
35
  end
@@ -32,10 +32,10 @@ module Teodoro
32
32
  ['DadosFuncao_CodigoCBO', evento['infoFuncao/*/dadosFuncao/codCBO']],
33
33
  ['DadosFuncao_CodigoCBO_TEXT'],
34
34
  ['DadosFuncao_DescricaoCBO'],
35
- ['IdEventoXml'],
36
- ['NrReciboEventoOriginal'],
37
- ['DescricaoProcEmi'],
38
- ['VerProc', versao_do_aplicativo_de_processamento_do_evento]
35
+ ['IdEventoXml', id_do_evento],
36
+ ['NrReciboEventoOriginal', numero_do_recibo],
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', versao_do_aplicativo_de_processamento_do_evento],
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']],
@@ -46,10 +46,10 @@ module Teodoro
46
46
  ['InfoSuspensaoTela_IndicativoDeposito'],
47
47
  ['temItemInformacaoSuspensao'],
48
48
  ['commandArgument'],
49
- ['IdEventoXml'],
50
- ['NrReciboEventoOriginal'],
51
- ['DescricaoProcEmi'],
52
- ['VerProc', versao_do_aplicativo_de_processamento_do_evento],
49
+ ['IdEventoXml', id_do_evento],
50
+ ['NrReciboEventoOriginal', numero_do_recibo],
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'],
@@ -15,7 +15,7 @@ module Teodoro
15
15
  ['Nome'],
16
16
  ['DataNascimento', evento['infoRegPrelim/dtNascto'], :data],
17
17
  ['DataAdmissao', evento['infoRegPrelim/dtAdm'], :data],
18
- ['IdEvento']
18
+ ['IdEvento', id_do_evento]
19
19
  ]
20
20
  )
21
21
  ]
@@ -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', versao_do_aplicativo_de_processamento_do_evento],
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', recibo['processamento/versaoAppProcessamento']],
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', recibo['processamento/versaoAppProcessamento']],
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', recibo['processamento/versaoAppProcessamento']],
177
+ ['VerProc', versao_do_processo_de_emissao_do_evento],
178
178
  ['FiltroEstabelecimentoLocalTrabalho'],
179
179
  ['NomeEstabelecimentoLocalTrabalho'],
180
180
  ['CodigoCBO'],
@@ -117,7 +117,7 @@ module Teodoro
117
117
  # rubocop:disable Layout/LineLength
118
118
  ['ESX_CPF', cpf_do_trabalhador],
119
119
  ['ESX_MATRICULA', matricula_do_trabalhador],
120
- ['ESX_DATAADMISSAO'],
120
+ ['ESX_DATAADMISSAO', empregado? ? data_de_admissao : data_de_inicio_do_contrato_de_trabalho, :data],
121
121
  %w[ESX_SEMVINCULO 0],
122
122
  ['ESX_INICIO', data_de_inicio_do_afastamento, :data_aaaammdd],
123
123
  (['ESX_TERMINO', data_de_termino_do_afastamento, :data_aaaammdd] if termino_do_afastamento?),
@@ -137,15 +137,15 @@ module Teodoro
137
137
  ['CodMotivoAfastamentoRetif'],
138
138
  ['TipoEventoCadastro'],
139
139
  ['IdEventoAfastamento'],
140
- (['DataFim'] if termino_do_afastamento?),
141
- ['DataInicio'],
140
+ (['DataFim', data_de_termino_do_afastamento, :data] if termino_do_afastamento?),
141
+ ['DataInicio', data_de_inicio_do_afastamento, :data],
142
142
  ['CodigoMotivo', codigo_do_motivo_de_afastamento],
143
143
  ['Motivo'],
144
144
  ['ExibirBotoes'],
145
145
  ['CheckPreencherAcidenteTransito'],
146
146
  ['DesejaIncluirInfoAtestado'],
147
147
  ['DescricaoProcEmi', processo_de_emissao_do_evento],
148
- ['VerProc', recibo['processamento/versaoAppProcessamento']],
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
- versao_do_aplicativo_de_processamento_do_evento: versao_do_aplicativo_de_processamento_do_evento
22
+ versao_do_processo_de_emissao_do_evento: versao_do_processo_de_emissao_do_evento
23
23
  )
24
24
  )
25
25
  ]
@@ -50,7 +50,7 @@ module Teodoro
50
50
  ['ESX_CPF', cpf_do_trabalhador],
51
51
  ['ESX_MATRICULA', matricula_do_trabalhador],
52
52
  %w[ESX_SEMVINCULO 0],
53
- ['ESX_DATAADMISSAO'],
53
+ ['ESX_DATAADMISSAO', data_de_admissao, :data],
54
54
  ['ESX_DATADESLIGAMENTO', data_de_desligamento, :data],
55
55
  ['ESX_INFOWEB_RESCISAO_IDEDMDEV', identificador_do_demonstrativo],
56
56
  ['ESX_INFOWEB_RESCISAO_RECIBO', numero_do_recibo],
@@ -73,7 +73,7 @@ module Teodoro
73
73
  ['FiltroHorario'],
74
74
  ['HorarioTela_CodigoHorarioContratual'],
75
75
  ['DescricaoProcEmi', processo_de_emissao_do_evento],
76
- ['VerProc', versao_do_aplicativo_de_processamento_do_evento],
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
- versao_do_aplicativo_de_processamento_do_evento: nil
259
+ versao_do_processo_de_emissao_do_evento: nil
260
260
  )
261
261
  )
262
262
  end
@@ -56,7 +56,7 @@ module Teodoro
56
56
  ['ESX_CATEGORIA', categoria_do_trabalhador],
57
57
  %w[ESX_SEMVINCULO 1],
58
58
  ['ESX_DATAADMISSAO', data_de_inicio, :data],
59
- ['IdEventoXml'],
59
+ ['IdEventoXml', id_do_evento],
60
60
  ['NrReciboEventoOriginal'],
61
61
  ['EventoAdmissao_NrRecibo'],
62
62
  ['EventoAdmissao_InformacoesInicio_IndicativoCadastramentoInicial', evento['infoTSVInicio/cadIni']],
@@ -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', recibo['processamento/versaoAppProcessamento']],
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']],
@@ -34,8 +34,8 @@ module Teodoro
34
34
  ['TipoPlano'],
35
35
  ['JustificativaProrrogacao'],
36
36
  ['MotivoAlteracao'],
37
- ['IdEventoXml'],
38
- ['NrReciboEventoOriginal'],
37
+ ['IdEventoXml', id_do_evento],
38
+ ['NrReciboEventoOriginal', numero_do_recibo],
39
39
  ['UrlRetorno'],
40
40
  ['idContrato'],
41
41
  ['SomenteLeitura'],
@@ -53,8 +53,8 @@ module Teodoro
53
53
  ['FiltroHorario'],
54
54
  ['HorarioTela_CodigoHorarioContratual'],
55
55
  ['dataNomeacao'],
56
- ['DescricaoProcEmi'],
57
- ['VerProc', recibo['processamento/versaoAppProcessamento']],
56
+ ['DescricaoProcEmi', processo_de_emissao_do_evento],
57
+ ['VerProc', versao_do_processo_de_emissao_do_evento],
58
58
  ['FiltroEstabelecimentoLocalTrabalho'],
59
59
  ['NomeEstabelecimentoLocalTrabalho'],
60
60
  ['FiltroProcessoJudicial'],