teodoro 0.42.1 → 0.43.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: 23d7496d9f0dfe8a4d7a8bd35718f1fd07b12a6ea135c8397a71c9acd0119f5f
4
- data.tar.gz: e9f7413d247b53090fa21779cf74322482f6d9bc7754ac20c01ea522c28d4057
3
+ metadata.gz: cf88a31a4339c95e7f0108dba975e403a5217340ad029c36871f4d708edfea5e
4
+ data.tar.gz: d09d2097001890c555432b2a57953063891521ae47585fa78011a0825aa7269f
5
5
  SHA512:
6
- metadata.gz: cb18a1c15a107971a7c358176379e2a9699c7d008b3da55d9aa3cea760e282e4b4767b655bc4aa6c5326e4232bf536e5988f0fa4e901eaac4a29b02664133409
7
- data.tar.gz: 31e947a06a83fbb496a496cac750e562b6d2a3bdcc3e010b5af07036ca5a4431559346847b491e43f417bfac44124434d4274dab1f44ced3c02a80deac6e3cee
6
+ metadata.gz: 5b03b7f0ed0b82e17479bb1bf38e98a52b6dd854fe4cb6aea6a5375cbeba4ce918acf0bd0ea57a1e1ebcc64ca5288dcf92b59c481a1522e790c00a294e674647
7
+ data.tar.gz: 4efa4883887be4cddec1316d5ab8de36b12ea6dc3d6162c7446b5dc92578ab449ad2ccab225c2186ebc7215968faf1e8882c7f9959f1dbd7592f72e7e01a6075
@@ -0,0 +1,53 @@
1
+ module Teodoro
2
+ class ArquivoData
3
+ module FUN
4
+ module Identificacao
5
+ def self.new(codigo_da_funcao)
6
+ ['FUN', codigo_da_funcao]
7
+ end
8
+ end
9
+
10
+ module ItensDeConteudo
11
+ def self.new(dados) # rubocop:disable Metrics/MethodLength
12
+ [
13
+ ['CodigoFuncao', dados.codigo_da_funcao],
14
+ ['InicioValidade', dados.inicio_da_validade, :mes_ano],
15
+ ['FimValidade', dados.fim_da_validade, :mes_ano],
16
+ ['DadosFuncao_DescricaoFuncao', dados.nome_da_funcao],
17
+ ['DadosFuncao_CodigoCBO', dados.cbo],
18
+ ['DadosFuncao_CodigoCBO_TEXT', "#{dados.cbo} - #{CBO.new(dados.cbo).titulo}"],
19
+ ['IdEventoXml', dados.id_do_evento],
20
+ ['NrReciboEventoOriginal', dados.numero_do_recibo],
21
+ ['DescricaoProcEmi', dados.processo_de_emissao_do_evento],
22
+ ['VerProc', dados.versao_do_processo_de_emissao_do_evento]
23
+ ]
24
+ end
25
+
26
+ class CBO
27
+ private
28
+
29
+ def initialize(codigo)
30
+ @codigo = codigo
31
+ end
32
+
33
+ attr_reader :codigo
34
+
35
+ public
36
+
37
+ def titulo
38
+ CBOs[codigo] || begin
39
+ alertar_que_cbo_nao_foi_encontrado
40
+ codigo
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def alertar_que_cbo_nao_foi_encontrado
47
+ puts "\n #{Rainbow("CBO #{codigo} não encontrado").yellow}"
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative 'arquivo_data/car'
2
+ require_relative 'arquivo_data/fun'
2
3
  require_relative 'arquivo_data/tra_epg_avi'
3
4
 
4
5
  module Teodoro
data/lib/teodoro/cnpj.rb CHANGED
@@ -52,9 +52,9 @@ module Teodoro
52
52
  string.chars
53
53
  .reverse
54
54
  .map(&:to_i)
55
- .map.with_index { |digito, indice| [digito, indice % 8 + 2] }
55
+ .map.with_index { |digito, indice| [digito, (indice % 8) + 2] }
56
56
  .sum { |digito, peso| digito * peso }
57
- .then { |r| 11 - r % 11 }
57
+ .then { |r| 11 - (r % 11) }
58
58
  .then { |r| r >= 10 ? 0 : r }
59
59
  .to_s
60
60
  end
@@ -0,0 +1,86 @@
1
+ module Teodoro
2
+ class Empresa
3
+ class FuncoesGeradas
4
+ private
5
+
6
+ def initialize(empresa)
7
+ @empresa = empresa
8
+ end
9
+
10
+ attr_reader :empresa
11
+
12
+ public
13
+
14
+ extend Forwardable
15
+
16
+ def_delegators :funcoes, :each
17
+
18
+ def [](nome:, cbo:)
19
+ indice[nome: nome, cbo: cbo] ||= Funcao.new(empresa: empresa, dados: Obj.new(nome: nome, cbo: cbo)) if nome
20
+ end
21
+
22
+ private
23
+
24
+ def funcoes
25
+ indice.values
26
+ end
27
+
28
+ def indice
29
+ @indice ||= {}
30
+ end
31
+
32
+ class Funcao
33
+ private
34
+
35
+ def initialize(empresa:, dados:)
36
+ @empresa = empresa
37
+ @dados = dados
38
+ end
39
+
40
+ attr_reader :empresa
41
+
42
+ public
43
+
44
+ attr_reader :dados
45
+
46
+ def codigo
47
+ @codigo ||= SecureRandom.hex(15)
48
+ end
49
+
50
+ def processar
51
+ criar_arquivo_data
52
+ end
53
+
54
+ private
55
+
56
+ def criar_arquivo_data
57
+ arquivo_data.criar
58
+ end
59
+
60
+ def arquivo_data # rubocop:disable Metrics/MethodLength
61
+ ArquivoData.new(
62
+ diretorio: empresa.destino_dos_arquivos_data,
63
+ nome: ArquivoDeEventoDeTabela::NomeDoArquivoData.new(
64
+ identificacao: ArquivoData::FUN::Identificacao.new(codigo),
65
+ inicio_da_validade: empresa.inicio_da_validade
66
+ ),
67
+ itens_do_conteudo: ArquivoData::FUN::ItensDeConteudo.new(
68
+ Obj.new(
69
+ codigo_da_funcao: codigo,
70
+ inicio_da_validade: empresa.inicio_da_validade,
71
+ fim_da_validade: nil,
72
+ nome_da_funcao: dados.nome,
73
+ cbo: dados.cbo,
74
+ orgao_publico?: false,
75
+ id_do_evento: nil,
76
+ numero_do_recibo: nil,
77
+ processo_de_emissao_do_evento: nil,
78
+ versao_do_processo_de_emissao_do_evento: nil
79
+ )
80
+ )
81
+ )
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -6,6 +6,7 @@ require_relative 'empresa/arquivo_data_rub'
6
6
  require_relative 'empresa/cargos_gerados'
7
7
  require_relative 'empresa/contratos_de_emprego'
8
8
  require_relative 'empresa/contratos_de_trabalho_sem_vinculo'
9
+ require_relative 'empresa/funcoes_geradas'
9
10
  require_relative 'empresa/trabalhadores'
10
11
 
11
12
  module Teodoro
@@ -49,6 +50,7 @@ module Teodoro
49
50
  ordenar_arquivos_xml
50
51
  processar_arquivos_xml
51
52
  processar_cargos_gerados
53
+ processar_funcoes_geradas
52
54
  setar_proximo_identificador_de_tabela_de_rubricas_nos_arquivos_data_emp
53
55
  ajustar_nome_do_ultimo_arquivo_emp_data
54
56
  end
@@ -77,6 +79,10 @@ module Teodoro
77
79
  @cargos_gerados ||= CargosGerados.new(self)
78
80
  end
79
81
 
82
+ def funcoes_geradas
83
+ @funcoes_geradas ||= FuncoesGeradas.new(self)
84
+ end
85
+
80
86
  private
81
87
 
82
88
  def dar_feedback_para_o_usuario
@@ -157,6 +163,10 @@ module Teodoro
157
163
  cargos_gerados.each(&:processar)
158
164
  end
159
165
 
166
+ def processar_funcoes_geradas
167
+ funcoes_geradas.each(&:processar)
168
+ end
169
+
160
170
  def setar_proximo_identificador_de_tabela_de_rubricas_nos_arquivos_data_emp
161
171
  arquivos_data_emp.each(&:setar_proximo_identificador_de_tabela_de_rubricas)
162
172
  end
@@ -260,6 +260,7 @@ module Teodoro
260
260
  leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS'],
261
261
  leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS'],
262
262
  leiaute['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo'],
263
+ leiaute['EventoAdmissao_InfoVinculo_InfoContrato_CodigoFuncao'],
263
264
  ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_DataTermino', evento['vinculo/infoContrato/duracao/dtTerm'], :data],
264
265
  ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_ClausulaAssecuratoria', evento['vinculo/infoContrato/duracao/clauAssec']],
265
266
  ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
@@ -367,6 +368,10 @@ module Teodoro
367
368
  [
368
369
  'EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo',
369
370
  evento['vinculo/infoContrato/codCargo']
371
+ ],
372
+ [
373
+ 'EventoAdmissao_InfoVinculo_InfoContrato_CodigoFuncao',
374
+ evento['vinculo/infoContrato/codFuncao']
370
375
  ]
371
376
  # rubocop:enable Layout/LineLength
372
377
  ]
@@ -452,6 +457,10 @@ module Teodoro
452
457
  [
453
458
  'EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo',
454
459
  codigo_do_cargo
460
+ ],
461
+ [
462
+ 'EventoAdmissao_InfoVinculo_InfoContrato_CodigoFuncao',
463
+ codigo_da_funcao
455
464
  ]
456
465
  # rubocop:enable Layout/LineLength
457
466
  ]
@@ -467,6 +476,17 @@ module Teodoro
467
476
  cbo: evento['vinculo/infoContrato/CBOCargo']
468
477
  ]
469
478
  end
479
+
480
+ def codigo_da_funcao
481
+ funcao&.codigo
482
+ end
483
+
484
+ def funcao
485
+ empresa.funcoes_geradas[
486
+ nome: evento['vinculo/infoContrato/nmFuncao'],
487
+ cbo: evento['vinculo/infoContrato/CBOFuncao']
488
+ ]
489
+ end
470
490
  end
471
491
  end
472
492
  end
@@ -134,6 +134,7 @@ module Teodoro
134
134
  ['InformacoesContrato_HorarioContratual_QuantidadeHorasSemanal', evento['altContratual/infoContrato/horContratual/qtdHrsSem'], :decimal],
135
135
  ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/infoContrato/horContratual/dscTpJorn']],
136
136
  ['InformacoesContrato_CodigoCargo', evento['altContratual/infoContrato/codCargo']],
137
+ ['InformacoesContrato_CodigoFuncao', evento['altContratual/infoContrato/codFuncao']],
137
138
  ['InformacoesContrato_DataTermino', evento['altContratual/infoContrato/duracao/dtTerm'], :data]
138
139
  # rubocop:enable Layout/LineLength
139
140
  ]
@@ -190,6 +191,7 @@ module Teodoro
190
191
  ['HorarioNoturno', evento['altContratual/vinculo/infoContrato/horContratual/horNoturno']],
191
192
  ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/dscJorn']],
192
193
  ['InformacoesContrato_CodigoCargo', codigo_do_cargo],
194
+ ['InformacoesContrato_CodigoFuncao', codigo_da_funcao],
193
195
  ['InformacoesContrato_DataTermino', evento['altContratual/vinculo/infoContrato/duracao/dtTerm'], :data]
194
196
  # rubocop:enable Layout/LineLength
195
197
  ]
@@ -205,6 +207,17 @@ module Teodoro
205
207
  cbo: evento['altContratual/vinculo/infoContrato/CBOCargo']
206
208
  ]
207
209
  end
210
+
211
+ def codigo_da_funcao
212
+ funcao&.codigo
213
+ end
214
+
215
+ def funcao
216
+ empresa.funcoes_geradas[
217
+ nome: evento['altContratual/vinculo/infoContrato/nmFuncao'],
218
+ cbo: evento['altContratual/vinculo/infoContrato/CBOFuncao']
219
+ ]
220
+ end
208
221
  end
209
222
  end
210
223
  end
@@ -235,6 +235,7 @@ module Teodoro
235
235
  ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_TipoLogradouro', trabalhador.endereco.tipo_de_logradouro],
236
236
  ['EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Uf', trabalhador.endereco.uf],
237
237
  leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo'],
238
+ leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoFuncao'],
238
239
  leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoFgts_OptanteFGTS'],
239
240
  leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoFgts_DataOpcaoFGTS'],
240
241
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_Remuneracao_UnidadeSalarioFixo', evento['infoTSVInicio/infoComplementares/remuneracao/undSalFixo']],
@@ -308,6 +309,10 @@ module Teodoro
308
309
  [
309
310
  'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo',
310
311
  evento['infoTSVInicio/infoComplementares/cargoFuncao/codCargo']
312
+ ],
313
+ [
314
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoFuncao',
315
+ evento['infoTSVInicio/infoComplementares/cargoFuncao/codFuncao']
311
316
  ]
312
317
  ]
313
318
  end
@@ -354,6 +359,10 @@ module Teodoro
354
359
  [
355
360
  'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo',
356
361
  codigo_do_cargo
362
+ ],
363
+ [
364
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoFuncao',
365
+ codigo_da_funcao
357
366
  ]
358
367
  ]
359
368
  end
@@ -368,6 +377,17 @@ module Teodoro
368
377
  cbo: evento['infoTSVInicio/infoComplementares/cargoFuncao/CBOCargo']
369
378
  ]
370
379
  end
380
+
381
+ def codigo_da_funcao
382
+ funcao&.codigo
383
+ end
384
+
385
+ def funcao
386
+ empresa.funcoes_geradas[
387
+ nome: evento['infoTSVInicio/infoComplementares/cargoFuncao/nmFuncao'],
388
+ cbo: evento['infoTSVInicio/infoComplementares/cargoFuncao/CBOFuncao']
389
+ ]
390
+ end
371
391
  end
372
392
  end
373
393
  end
@@ -32,7 +32,7 @@ module Teodoro
32
32
  ['EventoAdmissao_InformacoesInicio_CodigoCategoria', categoria_do_trabalhador],
33
33
  ['EventoAdmissao_InformacoesInicio_NaturezaAtividade', evento['infoTSVAlteracao/natAtividade']],
34
34
  leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo'],
35
- ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoFuncao', evento['infoTSVAlteracao/infoComplementares/cargoFuncao/codFuncao']],
35
+ leiaute['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoFuncao'],
36
36
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_Remuneracao_UnidadeSalarioFixo', evento['infoTSVAlteracao/infoComplementares/remuneracao/undSalFixo']],
37
37
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_Remuneracao_ValorSalarioFixo', evento['infoTSVAlteracao/infoComplementares/remuneracao/vrSalFx'], :decimal],
38
38
  ['EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoEstagiario_AreaAtuacao', evento['infoTSVAlteracao/infoComplementares/infoEstagiario/areaAtuacao']],
@@ -93,21 +93,102 @@ module Teodoro
93
93
  @data_da_alteracao ||= evento['infoTSVAlteracao/dtAlteracao']
94
94
  end
95
95
 
96
- def leiaute # rubocop:disable Metrics/MethodLength
96
+ def leiaute
97
97
  @leiaute ||=
98
+ if leiaute_simplificado?
99
+ LeiauteSimplificado.new(empresa: empresa, evento: evento)
100
+ else
101
+ Leiaute2.new(evento)
102
+ end
103
+ end
104
+
105
+ module Leiaute
106
+ private
107
+
108
+ attr_reader :evento
109
+
110
+ public
111
+
112
+ def [](chave)
113
+ indice[chave]
114
+ end
115
+
116
+ private
117
+
118
+ def indice
119
+ @indice ||= chaves_valores.map { [_1.first, _1] }.to_h
120
+ end
121
+ end
122
+
123
+ class Leiaute2
124
+ include Leiaute
125
+
126
+ private
127
+
128
+ def initialize(evento)
129
+ @evento = evento
130
+ end
131
+
132
+ def chaves_valores
133
+ [
134
+ [
135
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo',
136
+ evento['infoTSVAlteracao/infoComplementares/cargoFuncao/codCargo']
137
+ ],
138
+ [
139
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoFuncao',
140
+ evento['infoTSVAlteracao/infoComplementares/cargoFuncao/codFuncao']
141
+ ]
142
+ ]
143
+ end
144
+ end
145
+
146
+ class LeiauteSimplificado
147
+ include Leiaute
148
+
149
+ private
150
+
151
+ def initialize(empresa:, evento:)
152
+ @empresa = empresa
153
+ @evento = evento
154
+ end
155
+
156
+ attr_reader :empresa
157
+
158
+ def chaves_valores
98
159
  [
99
160
  [
100
161
  'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoCargo',
101
- if leiaute_simplificado?
102
- empresa.cargos_gerados[
103
- nome: evento['infoTSVAlteracao/infoComplementares/cargoFuncao/nmCargo'],
104
- cbo: evento['infoTSVAlteracao/infoComplementares/cargoFuncao/CBOCargo']
105
- ]&.codigo
106
- else
107
- evento['infoTSVAlteracao/infoComplementares/cargoFuncao/codCargo']
108
- end
162
+ codigo_do_cargo
163
+ ],
164
+ [
165
+ 'EventoAdmissao_InformacoesInicio_InformacoesComplementares_InfoCargoFuncao_CodigoFuncao',
166
+ codigo_da_funcao
109
167
  ]
110
- ].map { [_1.first, _1] }.to_h
168
+ ]
169
+ end
170
+
171
+ def codigo_do_cargo
172
+ cargo&.codigo
173
+ end
174
+
175
+ def cargo
176
+ empresa.cargos_gerados[
177
+ nome: evento['infoTSVAlteracao/infoComplementares/cargoFuncao/nmCargo'],
178
+ cbo: evento['infoTSVAlteracao/infoComplementares/cargoFuncao/CBOCargo']
179
+ ]
180
+ end
181
+
182
+ def codigo_da_funcao
183
+ funcao&.codigo
184
+ end
185
+
186
+ def funcao
187
+ empresa.funcoes_geradas[
188
+ nome: evento['infoTSVAlteracao/infoComplementares/cargoFuncao/nmFuncao'],
189
+ cbo: evento['infoTSVAlteracao/infoComplementares/cargoFuncao/CBOFuncao']
190
+ ]
191
+ end
111
192
  end
112
193
  end
113
194
  end
@@ -1,3 +1,3 @@
1
1
  module Teodoro
2
- VERSION = '0.42.1'.freeze
2
+ VERSION = '0.43.0'.freeze
3
3
  end
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.42.1
4
+ version: 0.43.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-09-21 00:00:00.000000000 Z
11
+ date: 2021-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -191,6 +191,7 @@ files:
191
191
  - lib/teodoro.rb
192
192
  - lib/teodoro/arquivo_data.rb
193
193
  - lib/teodoro/arquivo_data/car.rb
194
+ - lib/teodoro/arquivo_data/fun.rb
194
195
  - lib/teodoro/arquivo_data/tra_epg_avi.rb
195
196
  - lib/teodoro/arquivo_de_evento.rb
196
197
  - lib/teodoro/arquivo_de_evento_de_tabela.rb
@@ -206,6 +207,7 @@ files:
206
207
  - lib/teodoro/empresa/cargos_gerados.rb
207
208
  - lib/teodoro/empresa/contratos_de_emprego.rb
208
209
  - lib/teodoro/empresa/contratos_de_trabalho_sem_vinculo.rb
210
+ - lib/teodoro/empresa/funcoes_geradas.rb
209
211
  - lib/teodoro/empresa/trabalhadores.rb
210
212
  - lib/teodoro/leiaute/arquivo_s1000.rb
211
213
  - lib/teodoro/leiaute/arquivo_s1005.rb