teodoro 0.21.0 → 0.25.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f6d1cb72b2f2d9ba141e62ea0d5d1195ecc3e7e10ef974a4e666efc5d52311c
4
- data.tar.gz: cd199f34ea509baf467dae352949e7af8bf2e395724392ada7277efae4b5c349
3
+ metadata.gz: 03bec049628f7ed3e689474a1b629cfca6d00c54d2a2da28a1c35791fa554b0f
4
+ data.tar.gz: ff0ac1935b010ff9537ce33b23303b68a07318e61355ed51d46d88c918d29e2d
5
5
  SHA512:
6
- metadata.gz: f66632a17de07360b7d6157656a2dc1e25634d9088638b9ed64c7a763871709ebe0cbfbfa64e5d3c2f8ab2cea7295e3024f7a680abb71b68f6eb09cc0add8885
7
- data.tar.gz: '09e2a64099c45fd66c1c089f8ed8b3d22cc5a46fc7c076eff4089998f613aad8d72d6e5c90d90f9a7e45f2ac924e414e5c7682122412837bdc4b863f6406e9b9'
6
+ metadata.gz: 417f61f580e51d50bc17929554c3d878336a1ba43302e599255f095753a1f193c5c5ec44283cfa257b3abec252fcf1d95279d3af58715d85e37f573a71da84e8
7
+ data.tar.gz: ec0a87e74886bf0d58b216365723945d2437c9558375d190019d04dd5b7cf05f1145f0748aa7e03b3e28af5c2c16d71a89607f2e3e4cc6cb8990a821f3ebaefa
data/lib/teodoro.rb CHANGED
@@ -12,7 +12,7 @@ require_relative 'teodoro/empresa'
12
12
  require_relative 'teodoro/obj'
13
13
 
14
14
  module Teodoro
15
- VERSION = '0.21.0'.freeze
15
+ VERSION = '0.25.0'.freeze
16
16
 
17
17
  CBOs = __FILE__
18
18
  .then { File.dirname(_1) }
@@ -34,8 +34,6 @@ module Teodoro
34
34
 
35
35
  def initialize(codigo)
36
36
  @codigo = codigo
37
-
38
- alertar unless encontrado?
39
37
  end
40
38
 
41
39
  attr_reader :codigo
@@ -43,16 +41,15 @@ module Teodoro
43
41
  public
44
42
 
45
43
  def titulo
46
- CBOs[codigo] || codigo
44
+ CBOs[codigo] || begin
45
+ alertar_que_cbo_nao_foi_encontrado
46
+ codigo
47
+ end
47
48
  end
48
49
 
49
50
  private
50
51
 
51
- def encontrado?
52
- CBOs.key?(codigo)
53
- end
54
-
55
- def alertar
52
+ def alertar_que_cbo_nao_foi_encontrado
56
53
  puts "\n #{Rainbow("CBO #{codigo} não encontrado").yellow}"
57
54
  end
58
55
  end
@@ -49,6 +49,7 @@ module Teodoro
49
49
  ].freeze
50
50
 
51
51
  TIPOS_DE_EVENTO_RETIFICAVEIS = %w[
52
+ S2190
52
53
  S2200
53
54
  S2205
54
55
  S2206
@@ -1,6 +1,8 @@
1
1
  require_relative 'arquivo_de_origem'
2
2
  require_relative 'arquivo_xml'
3
3
  require_relative 'empresa/arquivos_data'
4
+ require_relative 'empresa/arquivo_data_emp'
5
+ require_relative 'empresa/arquivo_data_rub'
4
6
  require_relative 'empresa/cargos_gerados'
5
7
  require_relative 'empresa/contratos_de_emprego'
6
8
  require_relative 'empresa/contratos_de_trabalho_sem_vinculo'
@@ -46,6 +48,7 @@ module Teodoro
46
48
  ordenar_arquivos_xml
47
49
  processar_arquivos_xml
48
50
  processar_cargos_gerados
51
+ setar_proximo_identificador_de_tabela_de_rubricas_nos_arquivos_data_emp
49
52
  ajustar_nome_do_ultimo_arquivo_emp_data
50
53
  end
51
54
 
@@ -149,6 +152,38 @@ module Teodoro
149
152
  cargos_gerados.each(&:processar)
150
153
  end
151
154
 
155
+ def setar_proximo_identificador_de_tabela_de_rubricas_nos_arquivos_data_emp
156
+ arquivos_data_emp.each(&:setar_proximo_identificador_de_tabela_de_rubricas)
157
+ end
158
+
159
+ def arquivos_data_emp
160
+ Dir[File.join(destino_dos_arquivos_data, 'EMP*.data')]
161
+ .map { ArquivoDataEMP.new(
162
+ caminho: _1,
163
+ proximo_identificador_de_tabela_de_rubricas: proximo_identificador_de_tabela_de_rubricas
164
+ ) }
165
+ end
166
+
167
+ def proximo_identificador_de_tabela_de_rubricas
168
+ (ultimo_identificador_de_tabela_de_rubricas || 0) + 1
169
+ end
170
+
171
+ def ultimo_identificador_de_tabela_de_rubricas
172
+ identificadores_de_tabela_de_rubrica
173
+ .select { _1&.match?(/^\d+$/) }
174
+ .map(&:to_i)
175
+ .max
176
+ end
177
+
178
+ def identificadores_de_tabela_de_rubrica
179
+ arquivos_data_rub.map(&:identificador_da_tabela_de_rubricas)
180
+ end
181
+
182
+ def arquivos_data_rub
183
+ Dir[File.join(destino_dos_arquivos_data, 'RUB*.data')]
184
+ .map { ArquivoDataRUB.new(_1) }
185
+ end
186
+
152
187
  def ajustar_nome_do_ultimo_arquivo_emp_data
153
188
  File.rename(caminho_do_ultimo_arquivo_emp_data, novo_caminho_do_ultimo_arquivo_emp_data)
154
189
  end
@@ -0,0 +1,33 @@
1
+ module Teodoro
2
+ class Empresa
3
+ class ArquivoDataEMP
4
+ private
5
+
6
+ def initialize(caminho:, proximo_identificador_de_tabela_de_rubricas:)
7
+ @caminho = caminho
8
+ @proximo_identificador_de_tabela_de_rubricas = proximo_identificador_de_tabela_de_rubricas
9
+ end
10
+
11
+ attr_reader :caminho, :proximo_identificador_de_tabela_de_rubricas
12
+
13
+ public
14
+
15
+ def setar_proximo_identificador_de_tabela_de_rubricas
16
+ File.write(caminho, novo_conteudo)
17
+ end
18
+
19
+ private
20
+
21
+ def novo_conteudo
22
+ conteudo_anterior.sub(
23
+ "\nESX_TABELARUBRICA=\n",
24
+ "\nESX_TABELARUBRICA=#{proximo_identificador_de_tabela_de_rubricas}\n"
25
+ )
26
+ end
27
+
28
+ def conteudo_anterior
29
+ File.read(caminho)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,30 @@
1
+ module Teodoro
2
+ class Empresa
3
+ class ArquivoDataRUB
4
+ private
5
+
6
+ def initialize(caminho)
7
+ @caminho = caminho
8
+ end
9
+
10
+ attr_reader :caminho
11
+
12
+ public
13
+
14
+ def identificador_da_tabela_de_rubricas
15
+ chaves_valores['IdTabelaRubrica']
16
+ end
17
+
18
+ private
19
+
20
+ def chaves_valores
21
+ File
22
+ .readlines(caminho)
23
+ .map(&:strip)
24
+ .map { _1.split('=') }
25
+ .map { _1.size == 2 ? _1 : [_1.first, nil] }
26
+ .to_h
27
+ end
28
+ end
29
+ end
30
+ end
@@ -29,15 +29,34 @@ module Teodoro
29
29
  ['InicioValidade', inicio_da_validade, :mes_ano],
30
30
  ['FimValidade', fim_da_validade, :mes_ano],
31
31
  ['DadosFuncao_DescricaoFuncao', evento['infoFuncao/*/dadosFuncao/dscFuncao']],
32
- ['DadosFuncao_CodigoCBO', evento['infoFuncao/*/dadosFuncao/codCBO']],
33
- ['DadosFuncao_CodigoCBO_TEXT'],
34
- ['DadosFuncao_DescricaoCBO'],
32
+ ['DadosFuncao_CodigoCBO', codigo_do_cbo],
33
+ ['DadosFuncao_CodigoCBO_TEXT', codigo_e_titulo_do_cbo],
34
+ ['DadosFuncao_DescricaoCBO', codigo_e_titulo_do_cbo],
35
35
  ['IdEventoXml', id_do_evento],
36
36
  ['NrReciboEventoOriginal', numero_do_recibo],
37
37
  ['DescricaoProcEmi', processo_de_emissao_do_evento],
38
38
  ['VerProc', versao_do_processo_de_emissao_do_evento]
39
39
  ]
40
40
  end
41
+
42
+ def codigo_do_cbo
43
+ @codigo_do_cbo ||= evento['infoFuncao/*/dadosFuncao/codCBO']
44
+ end
45
+
46
+ def codigo_e_titulo_do_cbo
47
+ @codigo_e_titulo_do_cbo ||= "#{codigo_do_cbo} - #{titulo_do_cbo}"
48
+ end
49
+
50
+ def titulo_do_cbo
51
+ CBOs[codigo_do_cbo] || begin
52
+ alertar_que_cbo_nao_foi_encontrado
53
+ codigo_do_cbo
54
+ end
55
+ end
56
+
57
+ def alertar_que_cbo_nao_foi_encontrado
58
+ puts "\n #{Rainbow("CBO #{codigo_do_cbo} não encontrado").yellow}"
59
+ end
41
60
  end
42
61
  end
43
62
  end
@@ -207,6 +207,7 @@ module Teodoro
207
207
  de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada'],
208
208
  de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada'],
209
209
  ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_JornadaTempoParcial', evento['vinculo/infoContrato/horContratual/tmpParc']],
210
+ *([['HorarioNoturno', evento['vinculo/infoContrato/horContratual/horNoturno']]] if leiaute_simplificado?),
210
211
  ['EventoAdmissao_InfoVinculo_DataInicioAfastamento', evento['vinculo/afastamento/dtIniAfast'], :data],
211
212
  ['EventoAdmissao_InfoVinculo_CodigoMotivoAfastamento', evento['vinculo/afastamento/codMotAfast']],
212
213
  ['EventoAdmissao_InfoVinculo_SucessaoVinculo_DataTransferencia', evento['vinculo/sucessaoVinc/dtTransf'], :data],
@@ -67,7 +67,7 @@ module Teodoro
67
67
  ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT'],
68
68
  ['EventoAdmissao_EnderecoResidencialBR_Uf', evento['alteracao/dadosTrabalhador/endereco/brasil/uf']],
69
69
  ['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
70
- ['ResideExterior'],
70
+ ['ResideExterior', evento['alteracao/dadosTrabalhador/endereco/exterior'], :bool],
71
71
  ['SemNumeroLogradouroEnderecoEX'],
72
72
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['alteracao/dadosTrabalhador/trabEstrangeiro/casadoBr']],
73
73
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['alteracao/dadosTrabalhador/trabEstrangeiro/dtChegada'], :data],
@@ -187,6 +187,7 @@ module Teodoro
187
187
  ['InformacoesContrato_HorarioContratual_TipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/tpJornada'].then { %w[2 3].include?(_1) ? _1 : 9 }],
188
188
  ['InformacoesContrato_HorarioContratual_JornadaTempoParcial', evento['altContratual/vinculo/infoContrato/horContratual/tmpParc']],
189
189
  ['InformacoesContrato_HorarioContratual_QuantidadedHorasSemanal', evento['altContratual/vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
190
+ ['HorarioNoturno', evento['altContratual/vinculo/infoContrato/horContratual/horNoturno']],
190
191
  ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/dscJorn']],
191
192
  ['InformacoesContrato_CodigoCargo', codigo_do_cargo],
192
193
  ['InformacoesContrato_DataTermino', evento['altContratual/vinculo/infoContrato/duracao/dtTerm'], :data]
@@ -95,7 +95,7 @@ module Teodoro
95
95
  ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', evento['trabalhador/nascimento/uf']],
96
96
  ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
97
97
  ['SemNumeroLogradouroEnderecoBR'],
98
- ['ResideExterior'],
98
+ ['ResideExterior', evento['trabalhador/endereco/exterior'], :bool],
99
99
  ['SemNumeroLogradouroEnderecoEX'],
100
100
  ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['trabalhador/trabEstrangeiro/casadoBr']],
101
101
  de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao'],
@@ -47,7 +47,7 @@ module Teodoro
47
47
  # rubocop:disable Layout/LineLength
48
48
  ['ESX_CPF', cpf_do_trabalhador],
49
49
  ['ESX_CATEGORIA', categoria_do_trabalhador],
50
- ['ESX_SEMVINCULO'],
50
+ %w[ESX_SEMVINCULO 1],
51
51
  ['ESX_DATAADMISSAO', data_de_inicio],
52
52
  ['ESX_DATADESLIGAMENTO', data_do_termino],
53
53
  ['ESX_INFOWEB_RESCISAO_RECIBO', numero_do_recibo],
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teodoro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clavius Tales
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-04 00:00:00.000000000 Z
11
+ date: 2021-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -199,6 +199,8 @@ files:
199
199
  - lib/teodoro/cnpj.rb
200
200
  - lib/teodoro/console.rb
201
201
  - lib/teodoro/empresa.rb
202
+ - lib/teodoro/empresa/arquivo_data_emp.rb
203
+ - lib/teodoro/empresa/arquivo_data_rub.rb
202
204
  - lib/teodoro/empresa/arquivos_data.rb
203
205
  - lib/teodoro/empresa/cargos_gerados.rb
204
206
  - lib/teodoro/empresa/contratos_de_emprego.rb