odorico 1.0.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.
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