odorico 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +7 -0
  2. data/bin/odorico +3 -0
  3. data/lib/odorico/arquivo_atestado_de_saude_ocupacional.rb +60 -0
  4. data/lib/odorico/arquivo_aviso_previo.rb +69 -0
  5. data/lib/odorico/arquivo_cargo.rb +60 -0
  6. data/lib/odorico/arquivo_comunicacao_de_acidente_de_trabalho.rb +86 -0
  7. data/lib/odorico/arquivo_condicao_ambiental_de_trabalho.rb +83 -0
  8. data/lib/odorico/arquivo_data.rb +251 -0
  9. data/lib/odorico/arquivo_empregado.rb +401 -0
  10. data/lib/odorico/arquivo_empregado_afastamento_inicio.rb +109 -0
  11. data/lib/odorico/arquivo_empregado_afastamento_termino.rb +102 -0
  12. data/lib/odorico/arquivo_empregado_desligamento.rb +237 -0
  13. data/lib/odorico/arquivo_empregado_historico_cadastral.rb +194 -0
  14. data/lib/odorico/arquivo_empregado_historico_contratual.rb +157 -0
  15. data/lib/odorico/arquivo_empresa.rb +158 -0
  16. data/lib/odorico/arquivo_estabelecimento.rb +138 -0
  17. data/lib/odorico/arquivo_horario.rb +69 -0
  18. data/lib/odorico/arquivo_lotacao.rb +60 -0
  19. data/lib/odorico/arquivo_trabalhador_sem_vinculo.rb +305 -0
  20. data/lib/odorico/arquivo_trabalhador_sem_vinculo_historico_contratual.rb +86 -0
  21. data/lib/odorico/arquivo_trabalhador_sem_vinculo_termino.rb +204 -0
  22. data/lib/odorico/console.rb +11 -0
  23. data/lib/odorico/gerador_de_arquivos.rb +126 -0
  24. data/lib/odorico/gerador_de_arquivos_csv.rb +25 -0
  25. data/lib/odorico/jornada.rb +21 -0
  26. data/lib/odorico/processamento.rb +375 -0
  27. data/lib/odorico/sistema_operacional.rb +33 -0
  28. data/lib/odorico/types.rb +203 -0
  29. data/lib/odorico/version.rb +3 -0
  30. data/lib/odorico.rb +115 -0
  31. metadata +184 -0
@@ -0,0 +1,237 @@
1
+ require 'securerandom'
2
+
3
+ class ArquivoEmpregadoDesligamento
4
+ ATRIBUTOS = {
5
+ data_desligamento: { key: 'ESX_DATADESLIGAMENTO', type: Types::Date },
6
+ causa_desligamento: { key: 'ESX_INFOWEB_RESCISAO_MOTIVO', type: Types::CausasDesligamento },
7
+ cpf: { key: 'ESX_CPF', type: Types::String },
8
+ matricula: { key: 'ESX_MATRICULA', type: Types::String.optional },
9
+ data_admissao: { key: 'InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_DataAdmissao',
10
+ type: Types::Date },
11
+ recibo: { key: 'ESX_INFOWEB_RESCISAO_RECIBO', type: Types::String },
12
+ ide_dm_dev: { key: 'ESX_INFOWEB_RESCISAO_IDEDMDEV', type: Types::String.optional },
13
+ descricao_proc_emi: { key: 'DescricaoProcEmi', type: Types::String.optional }
14
+ }.freeze
15
+
16
+ ATRIBUTOS_NAO_SUPORTADOS = {}.freeze
17
+
18
+ ATRIBUTOS_DESCARTADOS = {}.freeze
19
+
20
+ ATRIBUTOS_IGNORADOS = %w[
21
+ NomeEstabelecimentoLocalTrabalho
22
+ RequestVerificationToken
23
+ SomenteLeitura
24
+ VisualizarDadosCadastrais
25
+ UrlRetorno
26
+ visualizar
27
+ EventoAdmissao_InfoTrabalhador_Cpf
28
+ EventoAdmissao_InfoTrabalhador_Nome
29
+ EventoAdmissao_InfoTrabalhador_Nis
30
+ EventoAdmissao_InfoTrabalhador_Sexo
31
+ EventoAdmissao_InfoTrabalhador_Sexo_TEXT
32
+ EventoAdmissao_InfoTrabalhador_RacaCor
33
+ EventoAdmissao_InfoTrabalhador_RacaCor_TEXT
34
+ EventoAdmissao_InfoTrabalhador_EstadoCivil
35
+ EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT
36
+ EventoAdmissao_InfoTrabalhador_GrauInstrucao
37
+ EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT
38
+ EventoAdmissao_InfoTrabalhador_PrimeiroEmprego
39
+ EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento
40
+ EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento
41
+ EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT
42
+ EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade
43
+ EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT
44
+ EventoAdmissao_InfoTrabalhador_Nascimento_Uf
45
+ EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT
46
+ EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio
47
+ EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT
48
+ EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae
49
+ EventoAdmissao_InfoTrabalhador_Nascimento_NomePai
50
+ ResideExterior
51
+ EventoAdmissao_EnderecoResidencialBR_Cep
52
+ EventoAdmissao_EnderecoResidencialBR_TipoLogradouro
53
+ EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT
54
+ EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro
55
+ EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro
56
+ SemNumeroLogradouroEnderecoBR
57
+ EventoAdmissao_EnderecoResidencialBR_Bairro
58
+ EventoAdmissao_EnderecoResidencialBR_Uf
59
+ EventoAdmissao_EnderecoResidencialBR_Uf_TEXT
60
+ EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio
61
+ EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT
62
+ EventoAdmissao_EnderecoResidencialBR_Complemento
63
+ SemNumeroLogradouroEnderecoEX
64
+ EventoAdmissao_InfoTrabalhador_Documentos_Ctps_NumeroCtps
65
+ EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps
66
+ EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps
67
+ EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps_TEXT
68
+ EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg
69
+ EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor
70
+ EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao
71
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh
72
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao
73
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade
74
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh
75
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT
76
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh
77
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT
78
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao
79
+ EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataValidade
80
+ InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada
81
+ IdEventoXml
82
+ NrReciboEventoOriginal
83
+ VerProc
84
+ EventoAdmissao_TipoEventoEnviado
85
+ EhVisualizacao
86
+ idContrato
87
+ IdEvento
88
+ TipoInscricaoEmpregador
89
+ cpfTrabalhador
90
+ nomeTrabalhador
91
+ TipoRegistroAdmissao
92
+ InfoVinculo_Matricula
93
+ InfoVinculo_TipoRegimeTrabalhista
94
+ InfoVinculo_TipoRegimeTrabalhista_TEXT
95
+ InfoVinculo_InfoContrato_CodigoCategoria_TEXT
96
+ InfoVinculo_TipoRegimePrevidenciario
97
+ InfoVinculo_TipoRegimePrevidenciario_TEXT
98
+ FiltroCargo
99
+ InfoVinculo_InfoContrato_CodigoCargo
100
+ InfoVinculo_InfoContrato_CodigoCategoria
101
+ CodigoCBO
102
+ InfoVinculo_InfoContrato_Remuneracao_UnidadeSalarioFixo
103
+ InfoVinculo_InfoContrato_Remuneracao_UnidadeSalarioFixo_TEXT
104
+ InfoVinculo_InfoContrato_Remuneracao_ValorSalarioFixo
105
+ InfoVinculo_InfoContrato_Duracao_TipoContrato
106
+ InfoVinculo_InfoContrato_Duracao_TipoContrato_TEXT
107
+ InfoVinculo_InfoContrato_Duracao_DataTermino
108
+ InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao
109
+ InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao_TEXT
110
+ InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao
111
+ InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_DescricaoComplementar
112
+ EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaFisica
113
+ EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaVisual
114
+ EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva
115
+ EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaMental
116
+ EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaIntelectual
117
+ EventoAdmissao_InfoTrabalhador_Deficiencia_ReabilitadoOuReadaptado
118
+ EventoAdmissao_InfoTrabalhador_Deficiencia_InfoCota
119
+ NomeEstabelecimentoLocalTrabalho=DANISTUR TRANSPORTE RODOVIARIO LTDA
120
+ CodigoCNAE
121
+ chkHorarioContratual
122
+ InfoVinculo_InfoContrato_HorarioContratual_QuantidadeHorasSemanal
123
+ InfoVinculo_InfoContrato_HorarioContratual_TipoJornada
124
+ InfoVinculo_InfoContrato_HorarioContratual_TipoJornada_TEXT
125
+ InfoVinculo_InfoContrato_HorarioContratual_JornadaTempoParcial
126
+ InfoVinculo_InfoContrato_HorarioContratual_JornadaTempoParcial_TEXT
127
+ InfoVinculo_InfoContrato_DataIngressoCarreira
128
+ chkHorarioDiario
129
+ HorarioTela_Dia
130
+ HorarioTela_Dia_TEXT
131
+ FiltroHorario
132
+ HorarioTela_CodigoHorarioContratual
133
+ Horarios_0_Dia
134
+ Horarios_0_CodigoHorarioContratual
135
+ ESX_DATAADMISSAO
136
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoAdmissao
137
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoAdmissao_TEXT
138
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_IndicativoAdmissao
139
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_IndicativoAdmissao_TEXT
140
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoRegimeJornada
141
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_TipoRegimeJornada_TEXT
142
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_NaturezaAtividade
143
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_NaturezaAtividade_TEXT
144
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_DataBase
145
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_DataBase_TEXT
146
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_CnpjSindicatoCategoriaProfissional
147
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS
148
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_OptanteFGTS_TEXT
149
+ InfoVinculo_InformacoesRegimeTrabalhista_InformacoesTrabalhadorCeletista_InfoFgts_DataOpcaoFGTS
150
+ InfoVinculo_InfoContrato_FiliacaoSindical_0_CnpjSindicatoTrabalhador
151
+ InfoVinculo_SucessaoVinculo_CnpjEmpregadorAnterior
152
+ InfoVinculo_SucessaoVinculo_DataTransferencia
153
+ InfoVinculo_DataInicioAfastamento
154
+ InfoVinculo_CodigoMotivoAfastamento
155
+ InfoVinculo_CodigoMotivoAfastamento_TEXT
156
+ EventoAdmissao_Contato_TelefoneAlternativo
157
+ EventoAdmissao_Contato_TelefonePrincipal
158
+ EventoAdmissao_InfoTrabalhador_NomeSocial
159
+ EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc
160
+ EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor
161
+ EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao
162
+ ESX_SEMVINCULO
163
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada
164
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro
165
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao
166
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao_TEXT
167
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros
168
+ EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne
169
+ EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor
170
+ EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao
171
+ InfoVinculo_SucessaoVinculo_MatriculaAnterior
172
+ InfoVinculo_InfoContrato_Remuneracao_DescricaoSalarioVariavel
173
+ EventoAdmissao_Contato_EmailPrincipal
174
+ EventoAdmissao_Contato_EmailAlternativo
175
+ EventoAdmissao_InfoTrabalhador_Documentos_Ric_NumeroRic
176
+ EventoAdmissao_InfoTrabalhador_Documentos_Ric_OrgaoEmissor
177
+ EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao
178
+ FiltroFuncao
179
+ InfoVinculo_InfoContrato_CodigoFuncao
180
+ InfoVinculo_SucessaoVinculo_Observacao
181
+ ESX_INFOWEB_RESCISAO_MOTIVO_TEXT
182
+ CheckModoCompleto
183
+ InfoVinculo_InfoContrato_NomeCargo
184
+ InfoVinculo_InfoContrato_CBOCargo
185
+ InfoVinculo_InfoContrato_CBOCargo_TEXT
186
+ InfoVinculo_InfoContrato_NomeFuncao
187
+ InfoVinculo_InfoContrato_CBOFuncao
188
+ InfoVinculo_InfoContrato_CBOFuncao_TEXT
189
+ InfoVinculo_InfoContrato_CargoAcumulavel
190
+ InfoVinculo_InfoContrato_HorarioContratual_DescricaoJornada
191
+ InfoVinculo_InfoContrato_HorarioContratual_HorarioNoturno
192
+ ].freeze
193
+
194
+ include ArquivoData
195
+
196
+ private
197
+
198
+ def initialize(caminho_do_arquivo_data, grupo_da_empresa_no_e_social)
199
+ @caminho_do_arquivo_data = caminho_do_arquivo_data
200
+ @grupo_da_empresa_no_e_social = grupo_da_empresa_no_e_social
201
+ end
202
+
203
+ attr_reader :grupo_da_empresa_no_e_social
204
+
205
+ def ajustar_atributos
206
+ atributos[:ide_dm_dev] = SecureRandom.hex(15) unless desligamento_ocorreu_na_fase_3?
207
+ end
208
+
209
+ def regras_que_podem_gerar_erros
210
+ {
211
+ 'Código do Demonstrativo da Rescisão não encontrado. Executar robô novamente.' =>
212
+ desligamento_ocorreu_na_fase_3? && atributos[:ide_dm_dev].nil?,
213
+ 'Recibo da Rescisão não encontrado. Executar robô novamente.' =>
214
+ atributos[:recibo].nil?
215
+ }
216
+ end
217
+
218
+ def desligamento_ocorreu_na_fase_3?
219
+ atributos[:data_desligamento] && atributos[:data_desligamento] >= inicio_da_fase_3
220
+ end
221
+
222
+ def inicio_da_fase_3
223
+ {
224
+ 2 => Date.new(2019, 1, 10),
225
+ 3 => Date.new(2021, 5, 10)
226
+ }[grupo_da_empresa_no_e_social]
227
+ end
228
+
229
+ def regras_que_podem_gerar_alertas
230
+ {
231
+ }
232
+ end
233
+
234
+ def identificador
235
+ 'empregado_desligamento'
236
+ end
237
+ end
@@ -0,0 +1,194 @@
1
+ class ArquivoEmpregadoHistoricoCadastral
2
+ ATRIBUTOS = {
3
+ id_evento_xml: { key: 'IdEventoXml', type: Types::String },
4
+ nr_recibo_evento_original: { key: 'NrReciboEventoOriginal', type: Types::String },
5
+ data_alteracao: { key: 'ESX_DATAALTERACAO', type: Types::Date },
6
+ grau_instrucao: { key: 'EventoAdmissao_InfoTrabalhador_GrauInstrucao', type: Types::String },
7
+ cpf: { key: 'EventoAdmissao_InfoTrabalhador_Cpf', type: Types::String },
8
+ deficiencia_auditiva: { key: 'EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva',
9
+ type: Types::SNBool.optional },
10
+ deficiencia_fisica: { key: 'EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaFisica',
11
+ type: Types::SNBool.optional },
12
+ deficiencia_intelectual: { key: 'EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaIntelectual',
13
+ type: Types::SNBool.optional },
14
+ deficiencia_mental: { key: 'EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaMental',
15
+ type: Types::SNBool.optional },
16
+ deficiencia_visual: { key: 'EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaVisual',
17
+ type: Types::SNBool.optional },
18
+ deficiencia_reabilitado_ou_readaptado: { key: 'EventoAdmissao_InfoTrabalhador_Deficiencia_ReabilitadoOuReadaptado',
19
+ type: Types::SNBool.optional },
20
+ endereco_br_cep: { key: 'EventoAdmissao_EnderecoResidencialBR_Cep', type: Types::String.optional },
21
+ endereco_br_descricao_logradouro: { key: 'EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro',
22
+ type: Types::String.optional },
23
+ endereco_br_numero_logradouro: { key: 'EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro',
24
+ type: Types::String.optional },
25
+ endereco_br_bairro: { key: 'EventoAdmissao_EnderecoResidencialBR_Bairro', type: Types::String.optional },
26
+ endereco_br_codigo_municipio: { key: 'EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio',
27
+ type: Types::String.optional },
28
+ descricao_proc_emi: { key: 'DescricaoProcEmi', type: Types::String.optional },
29
+ dependentes: { key: 'EventoAdmissao_Dependente', attributes: {
30
+ nome: { key: 'NomeDependente', type: Types::String },
31
+ data_de_nascimento: { key: 'DataNascimento', type: Types::Date },
32
+ incapacidade: { key: 'IncapacidadeDependente', type: Types::SNBool },
33
+ cpf: { key: 'CPFDependente', type: Types::String.optional },
34
+ tipo: { key: 'TipoDependente', type: Types::String },
35
+ dependente_de_IRRF: { key: 'DependenteIRRF', type: Types::SNBool }
36
+ } }
37
+ }.freeze
38
+
39
+ ATRIBUTOS_IGNORADOS = %w[
40
+ EventoAdmissao_InfoTrabalhador_Nis
41
+ EventoAdmissao_InfoTrabalhador_Nome
42
+ EventoAdmissao_InfoTrabalhador_Sexo
43
+ EventoAdmissao_InfoTrabalhador_RacaCor
44
+ EventoAdmissao_EnderecoResidencialBR_Uf
45
+ EventoAdmissao_EnderecoResidencialBR_TipoLogradouro
46
+ EventoAdmissao_InfoTrabalhador_Deficiencia_InfoCota
47
+ EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento
48
+ EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento
49
+ EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade
50
+ EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae
51
+ UrlRetorno
52
+ EventoAdmissao_TipoEventoEnviado
53
+ EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT
54
+ EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT
55
+ EventoAdmissao_EnderecoResidencialBR_Uf_TEXT
56
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT
57
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT
58
+ EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps_TEXT
59
+ EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne
60
+ EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor
61
+ EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao
62
+ EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT
63
+ EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT
64
+ EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT
65
+ EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT
66
+ EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT
67
+ EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT
68
+ EventoAdmissao_InfoTrabalhador_RacaCor_TEXT
69
+ EventoAdmissao_InfoTrabalhador_Sexo_TEXT
70
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Uf_TEXT
71
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_CodigoMunicipio_TEXT
72
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_TipoLogradouro_TEXT
73
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada
74
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro
75
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros
76
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao
77
+ EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao_TEXT
78
+ RequestVerificationToken
79
+ ResideExterior
80
+ SemNumeroLogradouroEnderecoBR
81
+ SemNumeroLogradouroEnderecoEX
82
+ SomenteLeitura
83
+ VerProc
84
+ VisualizarDadosCadastrais
85
+ visualizar
86
+ ESX_CPF
87
+ ESX_DATAADMISSAO
88
+ ESX_DATAALTERACAO
89
+ ESX_MATRICULA
90
+ ESX_SEMVINCULO
91
+ IdContratoReferenciado
92
+ EhAlteracaoCadastral
93
+ EventoAdmissao_InformacoesInicio_CodigoCategoria
94
+ CheckModoCompleto
95
+ EventoAdmissao_DataAlteracaoCadastral
96
+ checkbox_preencher_grupo0
97
+ checkbox_preencher_grupo1
98
+ checkbox_preencher_grupo2
99
+ checkbox_preencher_grupo3
100
+ checkbox_preencher_grupo4
101
+ checkbox_preencher_grupo5
102
+ checkbox_preencher_grupo6
103
+ checkbox_preencher_grupo8
104
+ ESX_CATEGORIA
105
+ DataAlteracao
106
+ DependenteSF
107
+ DataNascimentoFormatada
108
+ ].freeze
109
+
110
+ ATRIBUTOS_NAO_SUPORTADOS = {}.freeze
111
+
112
+ ATRIBUTOS_DESCARTADOS = {
113
+ 'Informação Complementar de Endereço': %w[
114
+ EventoAdmissao_EnderecoResidencialBR_Complemento
115
+ ],
116
+ Nascimento: %w[
117
+ EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio
118
+ EventoAdmissao_InfoTrabalhador_Nascimento_Uf
119
+ EventoAdmissao_InfoTrabalhador_Nascimento_NomePai
120
+ autocomplete_EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento
121
+ autocomplete_EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade
122
+ ],
123
+ 'Nome Social': %w[
124
+ EventoAdmissao_InfoTrabalhador_NomeSocial
125
+ ],
126
+ 'Estado Civil': %w[
127
+ EventoAdmissao_InfoTrabalhador_EstadoCivil
128
+ ],
129
+ CNH: %w[
130
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh
131
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao
132
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao
133
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade
134
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh
135
+ EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh
136
+ ],
137
+ CTPS: %w[
138
+ EventoAdmissao_InfoTrabalhador_Documentos_Ctps_NumeroCtps
139
+ EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps
140
+ EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps
141
+ ],
142
+ Identidade: %w[
143
+ EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao
144
+ EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg
145
+ EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor
146
+ ],
147
+ 'Informação do contato do trabalhador': %w[
148
+ EventoAdmissao_Contato_TelefoneAlternativo
149
+ EventoAdmissao_Contato_TelefonePrincipal
150
+ EventoAdmissao_Contato_EmailPrincipal
151
+ EventoAdmissao_InfoTrabalhador_Contato_TelefonePrincipal
152
+ ],
153
+ 'Informação de endereço do trabalhador': %w[
154
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Cep
155
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_TipoLogradouro
156
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_DescricaoLogradouro
157
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_NumeroLogradouro
158
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Bairro
159
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_Uf
160
+ EventoAdmissao_InfoTrabalhador_InfoEndereco_EnderecoResidencialBR_CodigoMunicipio
161
+ ]
162
+ }.freeze
163
+
164
+ include ArquivoData
165
+
166
+ private
167
+
168
+ def initialize(caminho_do_arquivo_data)
169
+ @caminho_do_arquivo_data = caminho_do_arquivo_data
170
+ end
171
+
172
+ def ajustar_atributos
173
+ atributos[:dependentes] = atributos[:dependentes].to_json
174
+ end
175
+
176
+ def regras_que_podem_gerar_erros
177
+ {
178
+ }
179
+ end
180
+
181
+ def regras_que_podem_gerar_alertas
182
+ {
183
+ 'Suportamos apenas logradouros do tipo Via' => !eh_via?
184
+ }
185
+ end
186
+
187
+ def eh_via?
188
+ atributos[:endereco_br_tipo_logradouro].to_s == 'V'
189
+ end
190
+
191
+ def identificador
192
+ 'empregado_historico_cadastral'
193
+ end
194
+ end
@@ -0,0 +1,157 @@
1
+ require_relative 'jornada'
2
+
3
+ class ArquivoEmpregadoHistoricoContratual
4
+ ATRIBUTOS = {
5
+ id_evento_xml: { key: 'IdEventoXml', type: Types::String },
6
+ nr_recibo_evento_original: { key: 'NrReciboEventoOriginal', type: Types::String },
7
+ matricula: { key: 'IdentificacaoVinculo_Matricula', type: Types::String },
8
+ data_admissao: { key: 'dataAdmissao', type: Types::Date },
9
+ data_alteracao: { key: 'AlteracaoContratual_DataAlteracao', type: Types::Date },
10
+ data_de_efeito: { key: 'AlteracaoContratual_DataEfeito', type: Types::Date.optional },
11
+ descricao_da_alteracao: { key: 'AlteracaoContratual_DescricaoAlteracao', type: Types::String.optional },
12
+ valor_salario_fixo: { key: 'InformacoesContrato_Remuneracao_ValorSalarioFixo', type: Types::Decimal },
13
+ local_trabalho_geral_numero_inscricao: {
14
+ key: 'InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', type: Types::String.optional
15
+ },
16
+ tipo_regime_jornada: { key: 'InformacoesCeletista_TipoRegimeJornada', type: Types::TipoRegimeJornada },
17
+ tipo_jornada: { key: 'InformacoesContrato_HorarioContratual_TipoJornada', type: Types::TipoJornada.optional },
18
+ descricao_tipo_jornada: { key: 'InformacoesContrato_HorarioContratual_DescricaoJornada',
19
+ type: Types::String.optional },
20
+ descricao_tipo_jornada_2_5: { key: 'InformacoesContrato_HorarioContratual_DescricaoTipoJornada',
21
+ type: Types::String.optional },
22
+ horario_noturno: { key: 'InformacoesContrato_HorarioContratual_HorarioNoturno', type: Types::SNBool.optional },
23
+ quantidade_horas_semanal: { key: 'InformacoesContrato_HorarioContratual_QuantidadeHorasSemanal',
24
+ type: Types::Decimal.optional },
25
+ cargo_codigo: { key: 'InformacoesContrato_CodigoCargo', type: Types::String.optional },
26
+ sindicato_cnpj: { key: 'InformacoesCeletista_CnpjSindicatoCategoriaProfissional', type: Types::String },
27
+ descricao_proc_emi: { key: 'DescricaoProcEmi', type: Types::String.optional },
28
+ horarios: { key: 'Horarios', attributes: {
29
+ dia: { key: 'Dia', type: Types::Integer },
30
+ codigo_horario_contratual: { key: 'CodigoHorarioContratual', type: Types::String }
31
+ } },
32
+ treinamentos_capacitacoes: { key: 'treiCap', attributes: {
33
+ codigo: { key: 'codTreiCap', type: Types::String }
34
+ } }
35
+ }.freeze
36
+
37
+ ATRIBUTOS_IGNORADOS = %w[
38
+ chkHorarioContratual
39
+ regTrab
40
+ idContrato
41
+ TipoInscricaoEmpregador
42
+ NomeEstabelecimentoLocalTrabalho
43
+ cpfTrabalhador
44
+ IndicadorRetificacao
45
+ CodigoCBO
46
+ CodigoCNAE
47
+ IdContratoAlterado
48
+ HorarioTela_Dia
49
+ IdEvento
50
+ ESX_CPF
51
+ ESX_DATAADMISSAO
52
+ ESX_DATAALTERACAO
53
+ ESX_MATRICULA
54
+ ESX_SEMVINCULO
55
+ FiltroCargo
56
+ FiltroEstabelecimentoLocalTrabalho
57
+ RequestVerificationToken
58
+ SomenteLeitura
59
+ VerProc
60
+ UrlRetorno
61
+ HorarioTela_Dia_TEXT
62
+ IdentificacaoVinculo_Cpf
63
+ IdentificacaoVinculo_Nis
64
+ nomeTrabalhador
65
+ InformacoesCeletista_NaturezaAtividade
66
+ InformacoesCeletista_DataBase_TEXT
67
+ InformacoesCeletista_NaturezaAtividade_TEXT
68
+ InformacoesCeletista_TipoRegimeJornada_TEXT
69
+ InformacoesContrato_DataTermino
70
+ InformacoesContrato_TipoContrato
71
+ InformacoesContrato_CodigoCategoria
72
+ InformacoesContrato_CodigoCategoria_TEXT
73
+ InformacoesContrato_HorarioContratual_JornadaTempoParcial_TEXT
74
+ InformacoesContrato_HorarioContratual_TipoJornada_TEXT
75
+ InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao_TEXT
76
+ InformacoesContrato_Remuneracao_UnidadeSalarioFixo_TEXT
77
+ InformacoesContrato_TipoContrato_TEXT
78
+ InformacoesContrato_Remuneracao_UnidadeSalarioFixo
79
+ InformacoesContrato_HorarioContratual_JornadaTempoParcial
80
+ InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao
81
+ VinculoAlteracao_TipoRegimePrevidenciario
82
+ VinculoAlteracao_TipoRegimePrevidenciario_TEXT
83
+ dataNomeacao
84
+ FiltroFuncao
85
+ InformacoesContrato_FiliacaoSindical_0_CnpjSindicatoTrabalhador
86
+ InformacoesContrato_NomeCargo
87
+ InformacoesContrato_CBOCargo
88
+ InformacoesContrato_CBOCargo_TEXT
89
+ HorarioNoturno
90
+ ].freeze
91
+
92
+ ATRIBUTOS_NAO_SUPORTADOS = {}.freeze
93
+
94
+ ATRIBUTOS_DESCARTADOS = {
95
+ 'Data Base': %w[
96
+ InformacoesCeletista_DataBase
97
+ ],
98
+ 'Descrição Complementar de Local de Trabalho': %w[
99
+ InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_DescricaoComplementar
100
+ ],
101
+ Função: %w[
102
+ InformacoesContrato_CodigoFuncao
103
+ ]
104
+ }.freeze
105
+
106
+ include ArquivoData
107
+
108
+ private
109
+
110
+ def initialize(caminho_do_arquivo_data)
111
+ @caminho_do_arquivo_data = caminho_do_arquivo_data
112
+ end
113
+
114
+ def ajustar_atributos
115
+ atributos[:leiaute_simplificado] =
116
+ verificar_se_eh_leiaute_simplificado?(atributos_especificos_do_leiaute_simplificado)
117
+ atributos[:descricao_tipo_jornada] =
118
+ atributos.delete(:descricao_tipo_jornada_2_5) || atributos[:descricao_tipo_jornada]
119
+ end
120
+
121
+ def atributos_especificos_do_leiaute_simplificado
122
+ %w[
123
+ InformacoesContrato_HorarioContratual_HorarioNoturno
124
+ InformacoesContrato_HorarioContratual_DescricaoJornada
125
+ ]
126
+ end
127
+
128
+ def regras_que_podem_gerar_erros
129
+ {
130
+ 'Não suportamos a data de alteração contratual igual ou menor que a data de admissão' =>
131
+ data_de_alteracao_contratual_menor_ou_igual_a_data_de_admissao?
132
+ }
133
+ end
134
+
135
+ def regras_que_podem_gerar_alertas
136
+ {
137
+ 'Tipo de jornada inconsistente em relação aos horários informados.' => !jornada_consistente?,
138
+ 'Não garantimos a correta importação deste tipo de jornada.' => !jornada_reconstruivel?
139
+ }
140
+ end
141
+
142
+ def data_de_alteracao_contratual_menor_ou_igual_a_data_de_admissao?
143
+ atributos[:data_alteracao] <= atributos[:data_admissao]
144
+ end
145
+
146
+ def jornada_consistente?
147
+ Jornada.consistente?(atributos[:tipo_jornada], atributos[:horarios])
148
+ end
149
+
150
+ def jornada_reconstruivel?
151
+ Jornada.reconstrucao_fiel?(atributos[:tipo_jornada])
152
+ end
153
+
154
+ def identificador
155
+ 'empregado_historico_contratual'
156
+ end
157
+ end