teodoro 0.20.0 → 0.24.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: b0711c726cf30a674a566c3be017b6e7b34f833731f2bd94b32bd52a29050a79
4
- data.tar.gz: d3972075c53b9d904449854a8eed94827c2b2721d0259804a9ed4e42fb70b8f7
3
+ metadata.gz: 52f4179a43e17d798fbd36211dd988a1c36f786b1711b6f5343024b6aa72af9a
4
+ data.tar.gz: 073650beb80a2873d2b07415f099d86118c9b98af361d75e1ee4f0c59603e251
5
5
  SHA512:
6
- metadata.gz: 614a7a3ce3a0a1c803b9486fc5939119e3b660c8a97865e4b65280e33a6f9053195c5770bcf385d05c42a854f6153304ff9a0750e1ae947b8e8188557e3603de
7
- data.tar.gz: 653f5270a7229c5340c05d52a6772c7af798c651ac027018a522a4d1f5907d7ebddc48e599e0b39e0d03c33f0ff1330ee5a8a9326f80ff1ef4a0ac1efdca2764
6
+ metadata.gz: c918f762b3c72c9d61d6499b0ff2969f8da70d425437edfb931e009318c2b1f03522fa05af456ece56fe72ee51458737b334303bb9e57d7acec44394ccaa8eef
7
+ data.tar.gz: 0d237dfe156c588346c6c4eb0452ff97202d46077b6557348087c66d800e5289381e09d9a33adfe1d1902e1dced7463217859347a29986f94118d8599788b301
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.20.0'.freeze
15
+ VERSION = '0.24.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
@@ -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
@@ -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],
@@ -58,6 +58,10 @@ module Teodoro
58
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,8 +44,8 @@ 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'],
47
+ ['IdEventoXml', id_do_evento],
48
+ ['NrReciboEventoOriginal', numero_do_recibo],
49
49
  ['DescricaoProcEmi', processo_de_emissao_do_evento],
50
50
  ['VerProc', versao_do_processo_de_emissao_do_evento],
51
51
  ['hd_ProcessoFGTS'],
@@ -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'],
35
- ['IdEventoXml'],
36
- ['NrReciboEventoOriginal'],
32
+ ['DadosFuncao_CodigoCBO', codigo_do_cbo],
33
+ ['DadosFuncao_CodigoCBO_TEXT', codigo_e_titulo_do_cbo],
34
+ ['DadosFuncao_DescricaoCBO', codigo_e_titulo_do_cbo],
35
+ ['IdEventoXml', id_do_evento],
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
@@ -46,8 +46,8 @@ module Teodoro
46
46
  ['InfoSuspensaoTela_IndicativoDeposito'],
47
47
  ['temItemInformacaoSuspensao'],
48
48
  ['commandArgument'],
49
- ['IdEventoXml'],
50
- ['NrReciboEventoOriginal'],
49
+ ['IdEventoXml', id_do_evento],
50
+ ['NrReciboEventoOriginal', numero_do_recibo],
51
51
  ['DescricaoProcEmi', processo_de_emissao_do_evento],
52
52
  ['VerProc', versao_do_processo_de_emissao_do_evento],
53
53
  ['IdEdicaoInfoSusp'],
@@ -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
  ]
@@ -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],
@@ -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,8 +137,8 @@ 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'],
@@ -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],
@@ -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']],
@@ -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'],
@@ -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'],
@@ -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.20.0
4
+ version: 0.24.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-05 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