teodoro 0.28.0 → 0.32.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: 19e037e7882187c3fc6c5fbb715b7cdfe1db08d8db864cf990e3334305c89bb2
4
- data.tar.gz: 07fe403e0fca17a7855110be4547d8956ece112053a21fce2b81506a6637e9f5
3
+ metadata.gz: af2634267636872bdf7b90c11efabccb8a0349e044af6ae8e819ef3b7d9283cb
4
+ data.tar.gz: fb86f02e7aaa5cba5a68f684e74bdeb185a10f076645d5bfd7d25a760a4020cd
5
5
  SHA512:
6
- metadata.gz: edcd0354ca1510419e518099abf178e2c8971ee0c218d2de252addd66255ed47245933fcc2e2ad4c7a5139d43323f9f70bcaf1858954030f80b791fdf8b8a104
7
- data.tar.gz: 5796e9695e13317d1f5eb57de9e064a088ca67d6eddc26861659aed040626e809775a6d373dc220185971d28f00579a9240b31ebb4f48258997f94b889ee5d0a
6
+ metadata.gz: 0123ebb895e40eb8d3b67c81cc7d1cbb370fd099b727e8a0f6636db1a4ec4a712e9f223a4720651847ec184094e5a174489d48dadac1f35a6f04feb175493942
7
+ data.tar.gz: 5ecd588330dac32441ffdbfcd6159b022d7b3b9902352f967ad55d78bbbfd56390909c6ebc810eb77a36e15d336e2f93e0f0848ca422a73f33995f04ae2ec3de
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.28.0'.freeze
15
+ VERSION = '0.32.0'.freeze
16
16
 
17
17
  CBOs = __FILE__
18
18
  .then { File.dirname(_1) }
@@ -22,6 +22,7 @@ require_relative 'leiaute/arquivo_s2300'
22
22
  require_relative 'leiaute/arquivo_s2306'
23
23
  require_relative 'leiaute/arquivo_s2399'
24
24
  require_relative 'leiaute/arquivo_s3000'
25
+ require_relative 'leiaute_simplificado'
25
26
  require_relative 'xml'
26
27
 
27
28
  module Teodoro
@@ -70,7 +70,7 @@ module Teodoro
70
70
  end
71
71
 
72
72
  def contratos_de_trabalho_sem_vinculo
73
- @contratos_de_trabalho_sem_vinculo ||= ContratosDeTrabalhoSemVinculo.new
73
+ @contratos_de_trabalho_sem_vinculo ||= ContratosDeTrabalhoSemVinculo.new(trabalhadores)
74
74
  end
75
75
 
76
76
  def cargos_gerados
@@ -12,10 +12,16 @@ module Teodoro
12
12
  public
13
13
 
14
14
  def registrar_admissao(admissao:, afastamento:)
15
- contratos_por_matricula[admissao.matricula] = Contrato.new(admissao: admissao, afastamento: afastamento)
15
+ contratos_por_matricula[admissao.matricula_do_trabalhador] =
16
+ Contrato.new(admissao: admissao, afastamento: afastamento)
16
17
  trabalhadores << admissao.trabalhador
17
18
  end
18
19
 
20
+ def registrar_alteracao_contratual(alteracao_contratual)
21
+ contratos_por_matricula[alteracao_contratual.matricula_do_trabalhador]
22
+ .registrar_alteracao_contratual(alteracao_contratual)
23
+ end
24
+
19
25
  def [](matricula)
20
26
  contratos_por_matricula[matricula]
21
27
  end
@@ -46,6 +52,10 @@ module Teodoro
46
52
  def initialize(admissao:, afastamento:)
47
53
  @admissao = admissao
48
54
  @afastamento = afastamento
55
+
56
+ @tipo_de_regime_previdenciario = admissao.tipo_de_regime_previdenciario
57
+ @natureza_da_atividade = admissao.natureza_da_atividade
58
+ @duracao = admissao.duracao
49
59
  end
50
60
 
51
61
  attr_reader :admissao, :data_de_desligamento
@@ -56,16 +66,29 @@ module Teodoro
56
66
 
57
67
  def_delegators :admissao,
58
68
  :trabalhador,
59
- :matricula,
69
+ :primeiro_emprego_do_trabalhador,
70
+ :matricula_do_trabalhador,
71
+ :tipo_de_regime_trabalhista,
60
72
  :data_de_admissao,
73
+ :tipo_de_admissao,
74
+ :indicativo_de_admissao,
75
+ :opcao_pelo_fgts,
76
+ :data_de_opcao_pelo_fgts,
61
77
  :categoria_do_trabalhador,
62
- :primeiro_emprego_do_trabalhador,
63
78
  :recibo
64
79
 
65
80
  attr_accessor :afastamento
66
81
 
82
+ attr_reader :tipo_de_regime_previdenciario, :natureza_da_atividade, :duracao
83
+
67
84
  attr_writer :data_de_desligamento
68
85
 
86
+ def registrar_alteracao_contratual(alteracao_contratual)
87
+ @tipo_de_regime_previdenciario = alteracao_contratual.tipo_de_regime_previdenciario
88
+ @natureza_da_atividade = alteracao_contratual.natureza_da_atividade
89
+ @duracao = alteracao_contratual.duracao
90
+ end
91
+
69
92
  def ativo?(data)
70
93
  data_de_admissao <= data && (!data_de_desligamento || data_de_desligamento >= data)
71
94
  end
@@ -1,14 +1,25 @@
1
1
  module Teodoro
2
2
  class Empresa
3
3
  class ContratosDeTrabalhoSemVinculo
4
+ private
5
+
6
+ def initialize(trabalhadores)
7
+ @trabalhadores = trabalhadores
8
+ end
9
+
10
+ attr_reader :trabalhadores
11
+
12
+ public
13
+
4
14
  def registrar_inicio_de_contrato(inicio_de_contrato:, afastamento:)
5
15
  contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, afastamento: afastamento)
16
+ trabalhadores << inicio_de_contrato.trabalhador
6
17
  end
7
18
 
8
19
  def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
9
20
  contratos
10
21
  .select {
11
- _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.categoria_do_trabalhador == categoria_do_trabalhador &&
22
+ _1.trabalhador.cpf == cpf_do_trabalhador && _1.categoria_do_trabalhador == categoria_do_trabalhador &&
12
23
  _1.ativo?(data)
13
24
  }
14
25
  .max_by(&:data_de_inicio)
@@ -16,7 +27,7 @@ module Teodoro
16
27
 
17
28
  def *(cpf_do_trabalhador:, data:)
18
29
  contratos
19
- .select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
30
+ .select { _1.trabalhador.cpf == cpf_do_trabalhador && _1.ativo?(data) }
20
31
  .sort_by(&:data_de_inicio)
21
32
  end
22
33
 
@@ -44,7 +55,11 @@ module Teodoro
44
55
 
45
56
  extend Forwardable
46
57
 
47
- def_delegators :inicio_de_contrato, :cpf_do_trabalhador, :categoria_do_trabalhador, :data_de_inicio, :recibo
58
+ def_delegators :inicio_de_contrato,
59
+ :trabalhador,
60
+ :categoria_do_trabalhador,
61
+ :data_de_inicio,
62
+ :recibo
48
63
 
49
64
  attr_accessor :afastamento
50
65
 
@@ -41,7 +41,7 @@ module Teodoro
41
41
  ['DadosRubrica_Natureza', evento['infoRubrica/*/dadosRubrica/natRubr']],
42
42
  ['DadosRubrica_TipoRubrica', evento['infoRubrica/*/dadosRubrica/tpRubr']],
43
43
  ['DadosRubrica_CodigoIncidenciaPrevidencia', evento['infoRubrica/*/dadosRubrica/codIncCP']],
44
- de_acordo_com_a_versao_do_leiaute['DadosRubrica_CodigoIncidenciaIR'],
44
+ leiaute['DadosRubrica_CodigoIncidenciaIR'],
45
45
  ['DadosRubrica_CodigoIncidenciaFGTS', evento['infoRubrica/*/dadosRubrica/codIncFGTS']],
46
46
  ['DadosRubrica_CodigoIncidenciaSindical', evento['infoRubrica/*/dadosRubrica/codIncSIND']],
47
47
  ['IdEventoXml', id_do_evento],
@@ -55,8 +55,8 @@ module Teodoro
55
55
  ]
56
56
  end
57
57
 
58
- def de_acordo_com_a_versao_do_leiaute # rubocop:disable Metrics/MethodLength
59
- @de_acordo_com_a_versao_do_leiaute ||=
58
+ def leiaute # rubocop:disable Metrics/MethodLength
59
+ @leiaute ||=
60
60
  (
61
61
  if leiaute_simplificado?
62
62
  [
@@ -18,13 +18,21 @@ module Teodoro
18
18
  )
19
19
  end
20
20
 
21
- def admissao
22
- Obj.new(
21
+ def admissao # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
22
+ @admissao ||= Obj.new(
23
23
  trabalhador: trabalhador,
24
- matricula: matricula_do_trabalhador,
25
- data_de_admissao: data_de_admissao,
26
- categoria_do_trabalhador: categoria_do_trabalhador,
27
24
  primeiro_emprego_do_trabalhador: evento['trabalhador/indPriEmpr'],
25
+ matricula_do_trabalhador: evento['vinculo/matricula'],
26
+ tipo_de_regime_trabalhista: evento['vinculo/tpRegTrab'],
27
+ tipo_de_regime_previdenciario: evento['vinculo/tpRegPrev'],
28
+ data_de_admissao: evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm'],
29
+ tipo_de_admissao: evento['vinculo/infoRegimeTrab/infoCeletista/tpAdmissao'],
30
+ indicativo_de_admissao: evento['vinculo/infoRegimeTrab/infoCeletista/indAdmissao'],
31
+ natureza_da_atividade: evento['vinculo/infoRegimeTrab/infoCeletista/natAtividade'],
32
+ opcao_pelo_fgts: leiaute.opcao_pelo_fgts,
33
+ data_de_opcao_pelo_fgts: leiaute.data_de_opcao_pelo_fgts,
34
+ categoria_do_trabalhador: evento['vinculo/infoContrato/codCateg'],
35
+ duracao: Obj.new(tipo_de_contrato: evento['vinculo/infoContrato/duracao/tpContr']),
28
36
  recibo: numero_do_recibo
29
37
  )
30
38
  end
@@ -49,7 +57,66 @@ module Teodoro
49
57
  reside_no_exterior?: evento['trabalhador/endereco/exterior'],
50
58
  endereco: Obj.new(
51
59
  tipo_de_logradouro: evento['trabalhador/endereco/brasil/tpLograd'],
52
- codigo_do_municipio: evento['trabalhador/endereco/brasil/codMunic']
60
+ logradouro: evento['trabalhador/endereco/brasil/dscLograd'],
61
+ numero: evento['trabalhador/endereco/brasil/nrLograd'],
62
+ complemento: evento['trabalhador/endereco/brasil/complemento'],
63
+ bairro: evento['trabalhador/endereco/brasil/bairro'],
64
+ cep: evento['trabalhador/endereco/brasil/cep'],
65
+ codigo_do_municipio: evento['trabalhador/endereco/brasil/codMunic'],
66
+ uf: evento['trabalhador/endereco/brasil/uf']
67
+ ),
68
+ estrangeiro?: evento['trabalhador/trabEstrangeiro'],
69
+ data_de_chegada_ao_brasil: evento['trabalhador/trabEstrangeiro/dtChegada'],
70
+ condicao_de_ingresso_no_brasil: leiaute.condicao_de_ingresso_no_brasil_do_trabalhador,
71
+ casado_com_brasileiro: evento['trabalhador/trabEstrangeiro/casadoBr'],
72
+ filhos_brasileiros: evento['trabalhador/trabEstrangeiro/filhosBr'],
73
+ ctps: Obj.new(
74
+ numero: evento['trabalhador/documentos/CTPS/nrCtps'],
75
+ serie: evento['trabalhador/documentos/CTPS/serieCtps'],
76
+ uf: evento['trabalhador/documentos/CTPS/ufCtps']
77
+ ),
78
+ rg: Obj.new(
79
+ numero: evento['trabalhador/documentos/RG/nrRg'],
80
+ orgao_emissor: evento['trabalhador/documentos/RG/orgaoEmissor'],
81
+ data_da_expedicao: evento['trabalhador/documentos/RG/dtExped']
82
+ ),
83
+ rne: Obj.new(
84
+ numero: evento['trabalhador/documentos/RNE/nrRne'],
85
+ orgao_emissor: evento['trabalhador/documentos/RNE/orgaoEmissor'],
86
+ data_da_expedicao: evento['trabalhador/documentos/RNE/dtExped']
87
+ ),
88
+ ric: Obj.new(
89
+ numero: evento['trabalhador/documentos/RIC/nrRic'],
90
+ orgao_emissor: evento['trabalhador/documentos/RIC/orgaoEmissor'],
91
+ data_da_expedicao: evento['trabalhador/documentos/RIC/dtExped']
92
+ ),
93
+ oc: Obj.new(
94
+ numero: evento['trabalhador/documentos/OC/nrOc'],
95
+ orgao_emissor: evento['trabalhador/documentos/OC/orgaoEmissor'],
96
+ data_da_expedicao: evento['trabalhador/documentos/OC/dtExped']
97
+ ),
98
+ cnh: Obj.new(
99
+ numero_do_registro: evento['trabalhador/documentos/CNH/nrRegCnh'],
100
+ data_da_primeira_habilitacao: evento['trabalhador/documentos/CNH/dtPriHab'],
101
+ data_da_expedicao: evento['trabalhador/documentos/CNH/dtExped'],
102
+ data_de_validade: evento['trabalhador/documentos/CNH/dtValid'],
103
+ categoria: evento['trabalhador/documentos/CNH/categoriaCnh'],
104
+ uf_do_emissor: evento['trabalhador/documentos/CNH/ufCnh']
105
+ ),
106
+ deficiencia: Obj.new(
107
+ fisica: evento['trabalhador/infoDeficiencia/defFisica'],
108
+ visual: evento['trabalhador/infoDeficiencia/defVisual'],
109
+ auditiva: evento['trabalhador/infoDeficiencia/defAuditiva'],
110
+ mental: evento['trabalhador/infoDeficiencia/defMental'],
111
+ intelectual: evento['trabalhador/infoDeficiencia/defIntelectual'],
112
+ reabilitado_ou_readaptado: evento['trabalhador/infoDeficiencia/reabReadap'],
113
+ preenche_cota_de_pessoas_com_deficiencia: evento['trabalhador/infoDeficiencia/infoCota']
114
+ ),
115
+ contato: Obj.new(
116
+ fone_principal: evento['trabalhador/contato/fonePrinc'],
117
+ fone_alternativo: evento['trabalhador/contato/foneAlternat'],
118
+ email_principal: evento['trabalhador/contato/emailPrinc'],
119
+ email_alternativo: evento['trabalhador/contato/emailAlternat']
53
120
  )
54
121
  )
55
122
  end
@@ -58,18 +125,6 @@ module Teodoro
58
125
  empresa.contratos_de_emprego
59
126
  end
60
127
 
61
- def matricula_do_trabalhador
62
- @matricula_do_trabalhador ||= evento['vinculo/matricula']
63
- end
64
-
65
- def data_de_admissao
66
- @data_de_admissao ||= evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm']
67
- end
68
-
69
- def categoria_do_trabalhador
70
- @categoria_do_trabalhador ||= evento['vinculo/infoContrato/codCateg']
71
- end
72
-
73
128
  def afastamento
74
129
  evento['vinculo/afastamento']&.then { Obj.new(
75
130
  data_de_inicio: _1['dtIniAfast'],
@@ -80,14 +135,19 @@ module Teodoro
80
135
  def dados_dos_arquivos_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
81
136
  [
82
137
  Obj.new(
83
- nome: "TRA[#{trabalhador.cpf}][EPG_#{matricula_do_trabalhador}_#{data_de_admissao.delete('-')}]-ADM",
138
+ nome: [
139
+ 'TRA',
140
+ "[#{trabalhador.cpf}]",
141
+ "[EPG_#{admissao.matricula_do_trabalhador}_#{admissao.data_de_admissao.delete('-')}]",
142
+ '-ADM'
143
+ ].join,
84
144
  itens_do_conteudo: [
85
145
  # rubocop:disable Layout/LineLength
86
146
  ['ESX_CPF', trabalhador.cpf],
87
- ['ESX_MATRICULA', matricula_do_trabalhador],
88
- ['ESX_CATEGORIA', categoria_do_trabalhador],
147
+ ['ESX_MATRICULA', admissao.matricula_do_trabalhador],
148
+ ['ESX_CATEGORIA', admissao.categoria_do_trabalhador],
89
149
  %w[ESX_SEMVINCULO 0],
90
- ['ESX_DATAADMISSAO', data_de_admissao, :data],
150
+ ['ESX_DATAADMISSAO', admissao.data_de_admissao, :data],
91
151
  ['IdEventoXml', id_do_evento],
92
152
  ['NrReciboEventoOriginal'],
93
153
  ['EventoAdmissao_TipoEventoEnviado'],
@@ -131,59 +191,59 @@ module Teodoro
131
191
  ['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
132
192
  ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf', trabalhador.uf_de_nascimento],
133
193
  ['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
134
- ['EventoAdmissao_EnderecoResidencialBR_Bairro', evento['trabalhador/endereco/brasil/bairro']],
135
- ['EventoAdmissao_EnderecoResidencialBR_Cep', evento['trabalhador/endereco/brasil/cep']],
194
+ ['EventoAdmissao_EnderecoResidencialBR_Bairro', trabalhador.endereco.bairro],
195
+ ['EventoAdmissao_EnderecoResidencialBR_Cep', trabalhador.endereco.cep],
136
196
  ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio', trabalhador.endereco.codigo_do_municipio],
137
197
  ['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT', Municipios[trabalhador.endereco.codigo_do_municipio]],
138
- ['EventoAdmissao_EnderecoResidencialBR_Complemento', evento['trabalhador/endereco/brasil/complemento']],
139
- ['EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro', evento['trabalhador/endereco/brasil/dscLograd']],
140
- ['EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro', evento['trabalhador/endereco/brasil/nrLograd']],
198
+ ['EventoAdmissao_EnderecoResidencialBR_Complemento', trabalhador.endereco.complemento],
199
+ ['EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro', trabalhador.endereco.logradouro],
200
+ ['EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro', trabalhador.endereco.numero],
141
201
  ['SemNumeroLogradouroEnderecoBR'],
142
202
  ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro', trabalhador.endereco.tipo_de_logradouro],
143
203
  ['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT', trabalhador.endereco.tipo_de_logradouro.then { "#{_1} - #{TiposDeLogradouro[_1]}" }],
144
- ['EventoAdmissao_EnderecoResidencialBR_Uf', evento['trabalhador/endereco/brasil/uf']],
204
+ ['EventoAdmissao_EnderecoResidencialBR_Uf', trabalhador.endereco.uf],
145
205
  ['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
146
206
  ['ResideExterior', trabalhador.reside_no_exterior?, :bool],
147
207
  ['SemNumeroLogradouroEnderecoEX'],
148
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['trabalhador/trabEstrangeiro/casadoBr']],
149
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['trabalhador/trabEstrangeiro/dtChegada'], :data],
150
- ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['trabalhador/trabEstrangeiro/filhosBr']],
151
- de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao'],
152
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', evento['trabalhador/documentos/CNH/categoriaCnh']],
208
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', trabalhador.casado_com_brasileiro],
209
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', trabalhador.data_de_chegada_ao_brasil, :data],
210
+ ['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', trabalhador.filhos_brasileiros],
211
+ leiaute['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao'],
212
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', trabalhador.cnh.categoria],
153
213
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT'],
154
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', evento['trabalhador/documentos/CNH/dtExped'], :data],
155
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', evento['trabalhador/documentos/CNH/dtPriHab'], :data],
156
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', evento['trabalhador/documentos/CNH/dtValid'], :data],
157
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', evento['trabalhador/documentos/CNH/nrRegCnh']],
158
- ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', evento['trabalhador/documentos/CNH/ufCnh']],
214
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', trabalhador.cnh.data_da_expedicao, :data],
215
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', trabalhador.cnh.data_da_primeira_habilitacao, :data],
216
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', trabalhador.cnh.data_de_validade, :data],
217
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', trabalhador.cnh.numero_do_registro],
218
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', trabalhador.cnh.uf_do_emissor],
159
219
  ['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT'],
160
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_NumeroCtps', evento['trabalhador/documentos/CTPS/nrCtps']],
161
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps', evento['trabalhador/documentos/CTPS/serieCtps']],
162
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps', evento['trabalhador/documentos/CTPS/ufCtps']],
220
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_NumeroCtps', trabalhador.ctps.numero],
221
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps', trabalhador.ctps.serie],
222
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps', trabalhador.ctps.uf],
163
223
  ['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps_TEXT'],
164
- ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', evento['trabalhador/documentos/OC/dtExped']],
165
- ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc', evento['trabalhador/documentos/OC/nrOc']],
166
- ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor', evento['trabalhador/documentos/OC/orgaoEmissor']],
167
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', evento['trabalhador/documentos/RG/dtExped'], :data],
168
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', evento['trabalhador/documentos/RG/nrRg']],
169
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', evento['trabalhador/documentos/RG/orgaoEmissor']],
170
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao', evento['trabalhador/documentos/RIC/dtExped'], :data],
171
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_NumeroRic', evento['trabalhador/documentos/RIC/nrRic']],
172
- ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_OrgaoEmissor', evento['trabalhador/documentos/RIC/orgaoEmissor']],
173
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', evento['trabalhador/documentos/RNE/dtExped'], :data],
174
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne', evento['trabalhador/documentos/RNE/nrRne']],
175
- ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor', evento['trabalhador/documentos/RNE/orgaoEmissor']],
176
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', evento['trabalhador/infoDeficiencia/defAuditiva']],
177
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaFisica', evento['trabalhador/infoDeficiencia/defFisica']],
178
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaIntelectual', evento['trabalhador/infoDeficiencia/defIntelectual']],
179
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaMental', evento['trabalhador/infoDeficiencia/defMental']],
180
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaVisual', evento['trabalhador/infoDeficiencia/defVisual']],
181
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_InfoCota', evento['trabalhador/infoDeficiencia/infoCota']],
182
- ['EventoAdmissao_InfoTrabalhador_Deficiencia_ReabilitadoOuReadaptado', evento['trabalhador/infoDeficiencia/reabReadap']],
183
- ['EventoAdmissao_Contato_TelefonePrincipal', evento['trabalhador/contato/fonePrinc']],
184
- ['EventoAdmissao_Contato_EmailPrincipal', evento['trabalhador/contato/emailPrinc']],
185
- ['EventoAdmissao_Contato_TelefoneAlternativo', evento['trabalhador/contato/foneAlternat']],
186
- ['EventoAdmissao_Contato_EmailAlternativo', evento['trabalhador/contato/emailAlternat']],
224
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', trabalhador.oc.data_da_expedicao, :data],
225
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc', trabalhador.oc.numero],
226
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor', trabalhador.oc.orgao_emissor],
227
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', trabalhador.rg.data_da_expedicao, :data],
228
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', trabalhador.rg.numero],
229
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', trabalhador.rg.orgao_emissor],
230
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao', trabalhador.ric.data_da_expedicao, :data],
231
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_NumeroRic', trabalhador.ric.numero],
232
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Ric_OrgaoEmissor', trabalhador.ric.orgao_emissor],
233
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', trabalhador.rne.data_da_expedicao, :data],
234
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne', trabalhador.rne.numero],
235
+ ['EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor', trabalhador.rne.orgao_emissor],
236
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', trabalhador.deficiencia.auditiva],
237
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaFisica', trabalhador.deficiencia.fisica],
238
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaIntelectual', trabalhador.deficiencia.intelectual],
239
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaMental', trabalhador.deficiencia.mental],
240
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaVisual', trabalhador.deficiencia.visual],
241
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_InfoCota', trabalhador.deficiencia.preenche_cota_de_pessoas_com_deficiencia],
242
+ ['EventoAdmissao_InfoTrabalhador_Deficiencia_ReabilitadoOuReadaptado', trabalhador.deficiencia.reabilitado_ou_readaptado],
243
+ ['EventoAdmissao_Contato_TelefonePrincipal', trabalhador.contato.fone_principal],
244
+ ['EventoAdmissao_Contato_EmailPrincipal', trabalhador.contato.email_principal],
245
+ ['EventoAdmissao_Contato_TelefoneAlternativo', trabalhador.contato.fone_alternativo],
246
+ ['EventoAdmissao_Contato_EmailAlternativo', trabalhador.contato.email_alternativo],
187
247
  *evento.*('trabalhador/dependente').map.with_index(1) do |dependente, seq|
188
248
  [
189
249
  ["EventoAdmissao_Dependente_#{seq}_CPFDependente", dependente['cpfDep']],
@@ -209,35 +269,35 @@ module Teodoro
209
269
  ["InfoVinculo_InfoContrato_FiliacaoSindical_#{seq}_CnpjSindicatoTrabalhador", filiacao['cnpjSindTrab']]
210
270
  ]
211
271
  end.sum([]),
212
- ['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCategoria', categoria_do_trabalhador],
213
- ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_TipoContrato', evento['vinculo/infoContrato/duracao/tpContr']],
272
+ ['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCategoria', admissao.categoria_do_trabalhador],
273
+ ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_TipoContrato', admissao.duracao.tipo_de_contrato],
214
274
  ['EventoAdmissao_InfoVinculo_InfoContrato_Remuneracao_UnidadeSalarioFixo', evento['vinculo/infoContrato/remuneracao/undSalFixo']],
215
275
  ['EventoAdmissao_InfoVinculo_InfoContrato_Remuneracao_ValorSalarioFixo', evento['vinculo/infoContrato/remuneracao/vrSalFx'], :decimal],
216
276
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_CnpjSindicatoCategoriaProfissional', evento['vinculo/infoRegimeTrab/infoCeletista/cnpjSindCategProf']],
217
277
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_DataAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm'], :data],
218
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_IndicativoAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/indAdmissao']],
219
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_NaturezaAtividade', evento['vinculo/infoRegimeTrab/infoCeletista/natAtividade']],
220
- ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoAdmissao', evento['vinculo/infoRegimeTrab/infoCeletista/tpAdmissao']],
278
+ ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_IndicativoAdmissao', admissao.indicativo_de_admissao],
279
+ ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_NaturezaAtividade', admissao.natureza_da_atividade],
280
+ ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoAdmissao', admissao.tipo_de_admissao],
221
281
  ['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoRegimeJornada', evento['vinculo/infoRegimeTrab/infoCeletista/tpRegJor']],
222
282
  ['EventoAdmissao_InfoVinculo_Matricula', evento['vinculo/matricula']],
223
- ['EventoAdmissao_InfoVinculo_TipoRegimePrevidenciario', evento['vinculo/tpRegPrev']],
224
- ['EventoAdmissao_InfoVinculo_TipoRegimeTrabalhista', evento['vinculo/tpRegTrab']],
225
- de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS'],
226
- de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS'],
227
- de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo'],
283
+ ['EventoAdmissao_InfoVinculo_TipoRegimePrevidenciario', admissao.tipo_de_regime_previdenciario],
284
+ ['EventoAdmissao_InfoVinculo_TipoRegimeTrabalhista', admissao.tipo_de_regime_trabalhista],
285
+ leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS'],
286
+ leiaute['EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS'],
287
+ leiaute['EventoAdmissao_InfoVinculo_InfoContrato_CodigoCargo'],
228
288
  ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_DataTermino', evento['vinculo/infoContrato/duracao/dtTerm'], :data],
229
289
  ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_ClausulaAssecuratoria', evento['vinculo/infoContrato/duracao/clauAssec']],
230
290
  ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
231
291
  ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
232
292
  ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_QuantidadedHorasSemanal', evento['vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
233
- de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada'],
234
- de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada'],
293
+ leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada'],
294
+ leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada'],
235
295
  ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_JornadaTempoParcial', evento['vinculo/infoContrato/horContratual/tmpParc']],
236
296
  *([['HorarioNoturno', evento['vinculo/infoContrato/horContratual/horNoturno']]] if leiaute_simplificado?),
237
297
  ['EventoAdmissao_InfoVinculo_DataInicioAfastamento', evento['vinculo/afastamento/dtIniAfast'], :data],
238
298
  ['EventoAdmissao_InfoVinculo_CodigoMotivoAfastamento', evento['vinculo/afastamento/codMotAfast']],
239
299
  ['EventoAdmissao_InfoVinculo_SucessaoVinculo_DataTransferencia', evento['vinculo/sucessaoVinc/dtTransf'], :data],
240
- de_acordo_com_a_versao_do_leiaute['EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior'],
300
+ leiaute['EventoAdmissao_InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior'],
241
301
  ['EventoAdmissao_InfoVinculo_SucessaoVinculo_MatriculaAnterior', evento['vinculo/sucessaoVinc/matricAnt']]
242
302
  # rubocop:enable Layout/LineLength
243
303
  ]
@@ -249,8 +309,8 @@ module Teodoro
249
309
  @indicativo_de_cadastramento_inicial ||= evento['vinculo/cadIni']
250
310
  end
251
311
 
252
- def de_acordo_com_a_versao_do_leiaute
253
- @de_acordo_com_a_versao_do_leiaute ||=
312
+ def leiaute
313
+ @leiaute ||=
254
314
  if leiaute_simplificado?
255
315
  LeiauteSimplificado.new(empresa: empresa, evento: evento)
256
316
  else
@@ -285,12 +345,28 @@ module Teodoro
285
345
  @evento = evento
286
346
  end
287
347
 
348
+ public
349
+
350
+ def condicao_de_ingresso_no_brasil_do_trabalhador
351
+ @condicao_de_ingresso_no_brasil_do_trabalhador ||= evento['trabalhador/trabEstrangeiro/classTrabEstrang']
352
+ end
353
+
354
+ def opcao_pelo_fgts
355
+ @opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/opcFGTS']
356
+ end
357
+
358
+ def data_de_opcao_pelo_fgts
359
+ @data_de_opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS']
360
+ end
361
+
362
+ private
363
+
288
364
  def dados_do_arquivo_data # rubocop:disable Metrics/MethodLength
289
365
  [
290
366
  # rubocop:disable Layout/LineLength
291
367
  [
292
368
  'EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao',
293
- evento['trabalhador/trabEstrangeiro/classTrabEstrang']
369
+ condicao_de_ingresso_no_brasil_do_trabalhador
294
370
  ],
295
371
  [
296
372
  'EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada',
@@ -302,11 +378,11 @@ module Teodoro
302
378
  ],
303
379
  [
304
380
  'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS',
305
- evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/opcFGTS']
381
+ opcao_pelo_fgts
306
382
  ],
307
383
  [
308
384
  'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS',
309
- evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS'],
385
+ data_de_opcao_pelo_fgts,
310
386
  :data
311
387
  ],
312
388
  [
@@ -334,20 +410,31 @@ module Teodoro
334
410
 
335
411
  attr_reader :empresa
336
412
 
337
- def dados_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
413
+ public
414
+
415
+ def condicao_de_ingresso_no_brasil_do_trabalhador
416
+ @condicao_de_ingresso_no_brasil_do_trabalhador ||=
417
+ evento['trabalhador/trabImig']&.then do
418
+ Teodoro::LeiauteSimplificado::TrabalhadorImigrante.new(_1).condicao_de_ingresso_no_brasil_no_leiaute2
419
+ end
420
+ end
421
+
422
+ def opcao_pelo_fgts
423
+ @opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS'] ? 1 : 2
424
+ end
425
+
426
+ def data_de_opcao_pelo_fgts
427
+ @data_de_opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS']
428
+ end
429
+
430
+ private
431
+
432
+ def dados_do_arquivo_data # rubocop:disable Metrics/MethodLength
338
433
  [
339
434
  # rubocop:disable Layout/LineLength
340
435
  [
341
436
  'EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao',
342
- {
343
- '1' => 4,
344
- '2' => 5,
345
- '3' => 9,
346
- '4' => 10,
347
- '5' => 11,
348
- '6' => 12,
349
- '7' => evento['trabalhador/trabImig/tmpResid']
350
- }[evento['trabalhador/trabImig/condIng']]
437
+ condicao_de_ingresso_no_brasil_do_trabalhador
351
438
  ],
352
439
  [
353
440
  'EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada',
@@ -359,11 +446,11 @@ module Teodoro
359
446
  ],
360
447
  [
361
448
  'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS',
362
- evento['vinculo/infoRegimeTrab/infoCeletista/FGTS'] ? 1 : 2
449
+ opcao_pelo_fgts
363
450
  ],
364
451
  [
365
452
  'EventoAdmissao_InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS',
366
- evento['vinculo/infoRegimeTrab/infoCeletista/FGTS/dtOpcFGTS'],
453
+ data_de_opcao_pelo_fgts,
367
454
  :data
368
455
  ],
369
456
  [