teodoro 0.45.0 → 0.46.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb1c00eaa00dea82fcbaf037fcd319e3a0c2ef3dde4f524c0d674b327198eef1
4
- data.tar.gz: 43e9a044e50b77eb72f60a3602755086b86791d19339dd89cedb163ab7ea4d90
3
+ metadata.gz: 76c8918c7124a971c158c41b7c1d0de13c09b2f155fa2b7fc42be79a7807c805
4
+ data.tar.gz: 3e47d002a6482058c13c2e6a360edfa0f30aeacc3b0798a50de857ae15ec26ca
5
5
  SHA512:
6
- metadata.gz: ded51453baf0dfacd2fcd794bea81b2213c02fa78da8b6c7ab5bacbd3e4336196b4a2cdbfed2cc01133fa0776eaf7fa2f9d06a51ce6f7f9a91137bed08d11c6e
7
- data.tar.gz: 6a20a63d7ead24231bd53a770822f9cb4ad7c817b9b631bd7242decade16aa4b66267be76f4b1e26dfcc2b343900d64bd85174358c98020049753818919d6877
6
+ metadata.gz: 47150df11fb3df6d7d2254a6cca993ff71bfaf12308fad4c98890ae8b9bd14682a4eb192b14538aee96dbc077718256fcec9edac9ba85a8708983e06c02504cb
7
+ data.tar.gz: 89b1f8e0712f195334b5fb4f074fc3b1bfc566098d59f524c26c7c0afb1c5f3ccc7168264eb43192bbc241fb83f8b37c77a2bf355b2332334549440ce79b21cb
@@ -33,13 +33,16 @@ module Teodoro
33
33
  end
34
34
 
35
35
  def conteudo_do_arquivo
36
- itens_do_conteudo
37
- .map { [_1[0], _1[1], _1.size == 1 ? :vazio : _1[2]] }
38
- .map { |chave, valor, formato| [chave, Valor.new(valor, formato: formato)] }
39
- .reject { |_chave, valor| valor.vazio? }
36
+ itens_de_conteudo_ajustados
37
+ .map { |chave, valor, formato, opcoes| [chave, Valor.new(valor, formato: formato), opcoes] }
38
+ .reject { |_chave, valor, opcoes| valor.vazio? && !opcoes[:manter_se_vazio] }
40
39
  .map { |chave, valor| "#{chave}=#{valor}" }
41
40
  end
42
41
 
42
+ def itens_de_conteudo_ajustados
43
+ itens_do_conteudo.map { [_1[0], _1[1], _1.size == 1 ? :vazio : _1[2], _1[3] || {}] }
44
+ end
45
+
43
46
  class Caminho
44
47
  private
45
48
 
@@ -11,6 +11,8 @@ require_relative 'leiaute/arquivo_s1030'
11
11
  require_relative 'leiaute/arquivo_s1040'
12
12
  require_relative 'leiaute/arquivo_s1050'
13
13
  require_relative 'leiaute/arquivo_s1070'
14
+ require_relative 'leiaute/arquivo_s1298'
15
+ require_relative 'leiaute/arquivo_s1299'
14
16
  require_relative 'leiaute/arquivo_s2190'
15
17
  require_relative 'leiaute/arquivo_s2200'
16
18
  require_relative 'leiaute/arquivo_s2205'
@@ -39,6 +41,8 @@ module Teodoro
39
41
  S1040
40
42
  S1050
41
43
  S1070
44
+ S1298
45
+ S1299
42
46
  S2190
43
47
  S2200
44
48
  S2205
@@ -0,0 +1,55 @@
1
+ module Teodoro
2
+ class Empresa
3
+ class ArquivoDeDadosGerais
4
+ def initialize(empresa:, destino:)
5
+ @empresa = empresa
6
+ @destino = destino
7
+ end
8
+
9
+ attr_reader :empresa, :destino
10
+
11
+ def gerar # rubocop:disable Metrics/MethodLength
12
+ ArquivoData.new(
13
+ diretorio: destino,
14
+ nome: 'DADOS_GERAIS',
15
+ itens_do_conteudo: [
16
+ [
17
+ 'ULTIMA_COMPETENCIA_FECHADA',
18
+ ultima_competencia_fechada,
19
+ :mes_ano,
20
+ { manter_se_vazio: true }
21
+ ],
22
+ [
23
+ 'ULTIMA_COMPETENCIA_FECHADA_DECIMO_TERCEIRO',
24
+ ultima_competencia_fechada_decimo_terceiro,
25
+ nil,
26
+ { manter_se_vazio: true }
27
+ ]
28
+ ]
29
+ ).criar
30
+ end
31
+
32
+ private
33
+
34
+ def ultima_competencia_fechada
35
+ meses_anos.max
36
+ end
37
+
38
+ def meses_anos
39
+ competencias_encerradas.grep(/^\d{4}-\d{2}$/)
40
+ end
41
+
42
+ def competencias_encerradas
43
+ empresa.competencias_encerradas
44
+ end
45
+
46
+ def ultima_competencia_fechada_decimo_terceiro
47
+ anos.max
48
+ end
49
+
50
+ def anos
51
+ competencias_encerradas.grep(/^\d{4}$/)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -16,7 +16,9 @@ module Teodoro
16
16
  trabalhadores << inicio_de_contrato.trabalhador
17
17
  end
18
18
 
19
- def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
19
+ def [](cpf_do_trabalhador:, matricula_do_trabalhador:, categoria_do_trabalhador:, data:)
20
+ return contratos.find { _1.matricula_do_trabalhador == matricula_do_trabalhador } if matricula_do_trabalhador
21
+
20
22
  contratos
21
23
  .select do |contrato|
22
24
  contrato.trabalhador.cpf == cpf_do_trabalhador &&
@@ -58,6 +60,7 @@ module Teodoro
58
60
 
59
61
  def_delegators :inicio_de_contrato,
60
62
  :trabalhador,
63
+ :matricula_do_trabalhador,
61
64
  :categoria_do_trabalhador,
62
65
  :data_de_inicio,
63
66
  :recibo
@@ -3,6 +3,7 @@ require_relative 'arquivo_xml'
3
3
  require_relative 'empresa/arquivos_data'
4
4
  require_relative 'empresa/arquivo_data_emp'
5
5
  require_relative 'empresa/arquivo_data_rub'
6
+ require_relative 'empresa/arquivo_de_dados_gerais'
6
7
  require_relative 'empresa/cargos_gerados'
7
8
  require_relative 'empresa/contratos_de_emprego'
8
9
  require_relative 'empresa/contratos_de_trabalho_sem_vinculo'
@@ -49,6 +50,7 @@ module Teodoro
49
50
  classificar_arquivos_xml
50
51
  ordenar_arquivos_xml
51
52
  processar_arquivos_xml
53
+ gerar_arquivo_de_dados_gerais
52
54
  processar_cargos_gerados
53
55
  processar_funcoes_geradas
54
56
  setar_proximo_identificador_de_tabela_de_rubricas_nos_arquivos_data_emp
@@ -63,6 +65,10 @@ module Teodoro
63
65
  @arquivos_data ||= ArquivosData.new(destino_dos_arquivos_data)
64
66
  end
65
67
 
68
+ def competencias_encerradas
69
+ @competencias_encerradas ||= []
70
+ end
71
+
66
72
  def trabalhadores
67
73
  @trabalhadores ||= Trabalhadores.new
68
74
  end
@@ -159,6 +165,14 @@ module Teodoro
159
165
  arquivos_xml.shift.processar while arquivos_xml.any?
160
166
  end
161
167
 
168
+ def gerar_arquivo_de_dados_gerais
169
+ arquivo_de_dados_gerais.gerar
170
+ end
171
+
172
+ def arquivo_de_dados_gerais
173
+ ArquivoDeDadosGerais.new(empresa: self, destino: destino_dos_arquivos_data)
174
+ end
175
+
162
176
  def processar_cargos_gerados
163
177
  cargos_gerados.each(&:processar)
164
178
  end
@@ -0,0 +1,17 @@
1
+ module Teodoro
2
+ module Leiaute
3
+ class ArquivoS1298
4
+ include ArquivoDeEvento
5
+
6
+ def processar
7
+ empresa.competencias_encerradas.delete(periodo_de_apuracao)
8
+ end
9
+
10
+ private
11
+
12
+ def periodo_de_apuracao
13
+ evento['ideEvento/perApur']
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Teodoro
2
+ module Leiaute
3
+ class ArquivoS1299
4
+ include ArquivoDeEvento
5
+
6
+ def processar
7
+ empresa.competencias_encerradas << periodo_de_apuracao
8
+ end
9
+
10
+ private
11
+
12
+ def periodo_de_apuracao
13
+ evento['ideEvento/perApur']
14
+ end
15
+ end
16
+ end
17
+ end
@@ -276,7 +276,16 @@ module Teodoro
276
276
  ['EventoAdmissao_InfoVinculo_CodigoMotivoAfastamento', evento['vinculo/afastamento/codMotAfast']],
277
277
  ['EventoAdmissao_InfoVinculo_SucessaoVinculo_DataTransferencia', evento['vinculo/sucessaoVinc/dtTransf'], :data],
278
278
  leiaute['EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior'],
279
- ['EventoAdmissao_InfoVinculo_SucessaoVinculo_MatriculaAnterior', evento['vinculo/sucessaoVinc/matricAnt']]
279
+ ['EventoAdmissao_InfoVinculo_SucessaoVinculo_MatriculaAnterior', evento['vinculo/sucessaoVinc/matricAnt']],
280
+ *(
281
+ if leiaute_simplificado?
282
+ evento.*('vinculo/infoContrato/treiCap').map.with_index(1) do |treinamento_capacitacao, seq|
283
+ [
284
+ ["treiCap_#{seq}_codTreiCap", treinamento_capacitacao['codTreiCap']]
285
+ ]
286
+ end.sum([])
287
+ end
288
+ )
280
289
  # rubocop:enable Layout/LineLength
281
290
  ]
282
291
  )
@@ -192,7 +192,12 @@ module Teodoro
192
192
  ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/dscJorn']],
193
193
  ['InformacoesContrato_CodigoCargo', codigo_do_cargo],
194
194
  ['InformacoesContrato_CodigoFuncao', codigo_da_funcao],
195
- ['InformacoesContrato_DataTermino', evento['altContratual/vinculo/infoContrato/duracao/dtTerm'], :data]
195
+ ['InformacoesContrato_DataTermino', evento['altContratual/vinculo/infoContrato/duracao/dtTerm'], :data],
196
+ *evento.*('altContratual/vinculo/infoContrato/treiCap').map.with_index(1) do |treinamento_capacitacao, seq|
197
+ [
198
+ ["treiCap_#{seq}_codTreiCap", treinamento_capacitacao['codTreiCap']]
199
+ ]
200
+ end.sum([])
196
201
  # rubocop:enable Layout/LineLength
197
202
  ]
198
203
  end
@@ -83,6 +83,7 @@ module Teodoro
83
83
  def contrato_de_trabalho_sem_vinculo
84
84
  @contrato_de_trabalho_sem_vinculo ||= contratos_de_trabalho_sem_vinculo[
85
85
  cpf_do_trabalhador: cpf_do_trabalhador,
86
+ matricula_do_trabalhador: matricula_do_trabalhador,
86
87
  categoria_do_trabalhador: categoria_do_trabalhador,
87
88
  data: inicio_do_afastamento? ? data_de_inicio_do_afastamento : data_de_termino_do_afastamento
88
89
  ]
@@ -25,6 +25,7 @@ module Teodoro
25
25
  def inicio_de_contrato
26
26
  @inicio_de_contrato ||= Obj.new(
27
27
  trabalhador: trabalhador,
28
+ matricula_do_trabalhador: evento['infoTSVInicio/matricula'],
28
29
  categoria_do_trabalhador: evento['infoTSVInicio/codCateg'],
29
30
  data_de_inicio: evento['infoTSVInicio/dtInicio'],
30
31
  matricula: evento['infoTSVInicio/matricula'],
@@ -1,6 +1,6 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
- class ArquivoS2306
3
+ class ArquivoS2306 # rubocop:disable Metrics/ClassLength
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
6
  private
@@ -17,6 +17,7 @@ module Teodoro
17
17
  itens_do_conteudo: [
18
18
  # rubocop:disable Layout/LineLength
19
19
  ['ESX_CPF', cpf_do_trabalhador],
20
+ ['matricula', matricula_do_trabalhador],
20
21
  ['ESX_CATEGORIA', categoria_do_trabalhador],
21
22
  %w[ESX_SEMVINCULO 1],
22
23
  ['ESX_DATAADMISSAO', data_de_inicio, :data],
@@ -69,8 +70,17 @@ module Teodoro
69
70
  @cpf_do_trabalhador ||= evento['ideTrabSemVinculo/cpfTrab']
70
71
  end
71
72
 
73
+ def matricula_do_trabalhador
74
+ @matricula_do_trabalhador ||= evento['ideTrabSemVinculo/matricula']
75
+ end
76
+
72
77
  def categoria_do_trabalhador
73
- @categoria_do_trabalhador ||= evento['ideTrabSemVinculo/codCateg']
78
+ @categoria_do_trabalhador ||=
79
+ if matricula_do_trabalhador
80
+ contrato_de_trabalho.categoria_do_trabalhador
81
+ else
82
+ evento['ideTrabSemVinculo/codCateg']
83
+ end
74
84
  end
75
85
 
76
86
  def data_de_inicio
@@ -80,7 +90,8 @@ module Teodoro
80
90
  def contrato_de_trabalho
81
91
  contratos_de_trabalho_sem_vinculo[
82
92
  cpf_do_trabalhador: cpf_do_trabalhador,
83
- categoria_do_trabalhador: categoria_do_trabalhador,
93
+ matricula_do_trabalhador: matricula_do_trabalhador,
94
+ categoria_do_trabalhador: (categoria_do_trabalhador unless matricula_do_trabalhador),
84
95
  data: data_da_alteracao
85
96
  ]
86
97
  end
@@ -1,6 +1,6 @@
1
1
  module Teodoro
2
2
  module Leiaute
3
- class ArquivoS2399
3
+ class ArquivoS2399 # rubocop:disable Metrics/ClassLength
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
6
  private
@@ -18,7 +18,8 @@ module Teodoro
18
18
  def contrato_de_trabalho
19
19
  @contrato_de_trabalho ||= contratos_de_trabalho_sem_vinculo[
20
20
  cpf_do_trabalhador: cpf_do_trabalhador,
21
- categoria_do_trabalhador: categoria_do_trabalhador,
21
+ matricula_do_trabalhador: matricula_do_trabalhador,
22
+ categoria_do_trabalhador: (categoria_do_trabalhador unless matricula_do_trabalhador),
22
23
  data: data_do_termino
23
24
  ]
24
25
  end
@@ -31,12 +32,21 @@ module Teodoro
31
32
  @data_do_termino ||= evento['infoTSVTermino/dtTerm']
32
33
  end
33
34
 
35
+ def matricula_do_trabalhador
36
+ @matricula_do_trabalhador ||= evento['ideTrabSemVinculo/matricula']
37
+ end
38
+
34
39
  def cpf_do_trabalhador
35
40
  @cpf_do_trabalhador ||= evento['ideTrabSemVinculo/cpfTrab']
36
41
  end
37
42
 
38
43
  def categoria_do_trabalhador
39
- @categoria_do_trabalhador ||= evento['ideTrabSemVinculo/codCateg']
44
+ @categoria_do_trabalhador ||=
45
+ if matricula_do_trabalhador
46
+ contrato_de_trabalho.categoria_do_trabalhador
47
+ else
48
+ evento['ideTrabSemVinculo/codCateg']
49
+ end
40
50
  end
41
51
 
42
52
  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
@@ -46,6 +56,7 @@ module Teodoro
46
56
  itens_do_conteudo: [
47
57
  # rubocop:disable Layout/LineLength
48
58
  ['ESX_CPF', cpf_do_trabalhador],
59
+ ['matricula', matricula_do_trabalhador],
49
60
  ['ESX_CATEGORIA', categoria_do_trabalhador],
50
61
  %w[ESX_SEMVINCULO 1],
51
62
  ['ESX_DATAADMISSAO', data_de_inicio],
@@ -1,3 +1,3 @@
1
1
  module Teodoro
2
- VERSION = '0.45.0'.freeze
2
+ VERSION = '0.46.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.45.0
4
+ version: 0.46.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fortes Tecnologia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-13 00:00:00.000000000 Z
11
+ date: 2022-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -203,6 +203,7 @@ files:
203
203
  - lib/teodoro/empresa.rb
204
204
  - lib/teodoro/empresa/arquivo_data_emp.rb
205
205
  - lib/teodoro/empresa/arquivo_data_rub.rb
206
+ - lib/teodoro/empresa/arquivo_de_dados_gerais.rb
206
207
  - lib/teodoro/empresa/arquivos_data.rb
207
208
  - lib/teodoro/empresa/cargos_gerados.rb
208
209
  - lib/teodoro/empresa/contratos_de_emprego.rb
@@ -217,6 +218,8 @@ files:
217
218
  - lib/teodoro/leiaute/arquivo_s1040.rb
218
219
  - lib/teodoro/leiaute/arquivo_s1050.rb
219
220
  - lib/teodoro/leiaute/arquivo_s1070.rb
221
+ - lib/teodoro/leiaute/arquivo_s1298.rb
222
+ - lib/teodoro/leiaute/arquivo_s1299.rb
220
223
  - lib/teodoro/leiaute/arquivo_s2190.rb
221
224
  - lib/teodoro/leiaute/arquivo_s2200.rb
222
225
  - lib/teodoro/leiaute/arquivo_s2205.rb