teodoro 0.28.0 → 0.32.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: 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
  [