teodoro 0.2.1 → 0.3.1

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: 8e0e7936bf18da7baec67a376680936534f02994e00a5de2efac44df2d7dd87b
4
- data.tar.gz: 013300c8ce8be341f9dad9577c32b7f64988d05188dbbed01b99fc929a47c598
3
+ metadata.gz: 2e6c7d2702336deb603b6bf1af61cfcb1cb3dc0c7e51c4d3fc7aa9af64dcebc6
4
+ data.tar.gz: 6168b994e77d309e4851373489f17b9e552f18a7d00f13cecd7a075be6c481d6
5
5
  SHA512:
6
- metadata.gz: 8d2c71bdbac95f6c53d6e1b721d16757557f49afce15ac49b1a8ccb3cf53890df02a9f422cce5ed52bfd59b8d9fa5d034f44ced4d1772b1782d16f8589abe052
7
- data.tar.gz: '074959274a36a5b8c1d171e61cd3cbafb047e74972c1162f6e833de4e5f148173a7cc026ffc8bcf9fc997379b815a92bf9e9fe03d099a07a45dfecb1a80ae49f'
6
+ metadata.gz: 753c9e372d0186e738cd617cbe541c21f969d11c90f6f9e5b01af5369e430d361d9f1aba9204809a2cebd35bd00c6b711a5652930fc995f1090da9d132f29202
7
+ data.tar.gz: 4033bae8e9b865508a384958a42c5c5f5331c9c694b9460b7ad211b88a2560c587fafb3a55dfa8c3cb93f427bae6473b8322f9402bcc4dc60ef1f6a958d27679
@@ -122,8 +122,10 @@ module Teodoro
122
122
  end
123
123
 
124
124
  class ContratosDeEmprego
125
- def <<(contrato)
126
- contratos_por_matricula[contrato.matricula] = contrato
125
+ def registrar_admissao(admissao)
126
+ Contrato.new(**admissao).then do
127
+ contratos_por_matricula[_1.matricula] = _1
128
+ end
127
129
  end
128
130
 
129
131
  def [](matricula)
@@ -132,8 +134,7 @@ module Teodoro
132
134
 
133
135
  def *(cpf_do_trabalhador:, data:)
134
136
  contratos
135
- .select { _1.cpf_do_trabalhador == cpf_do_trabalhador }
136
- .select { _1.data_de_admissao <= data } # data de rescisao
137
+ .select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
137
138
  .sort_by(&:data_de_admissao)
138
139
  end
139
140
 
@@ -150,25 +151,50 @@ module Teodoro
150
151
  def contratos
151
152
  contratos_por_matricula.values
152
153
  end
154
+
155
+ class Contrato
156
+ private
157
+
158
+ def initialize(matricula:, data_de_admissao:, categoria_do_trabalhador:, cpf_do_trabalhador:, recibo:)
159
+ @matricula = matricula
160
+ @data_de_admissao = data_de_admissao
161
+ @categoria_do_trabalhador = categoria_do_trabalhador
162
+ @cpf_do_trabalhador = cpf_do_trabalhador
163
+ @recibo = recibo
164
+ end
165
+
166
+ attr_reader :data_de_desligamento
167
+
168
+ public
169
+
170
+ attr_reader :matricula, :data_de_admissao, :categoria_do_trabalhador, :cpf_do_trabalhador, :recibo
171
+
172
+ attr_writer :data_de_desligamento
173
+
174
+ def ativo?(data)
175
+ data_de_admissao <= data && (!data_de_desligamento || data_de_desligamento >= data)
176
+ end
177
+ end
153
178
  end
154
179
 
155
180
  class ContratosDeTrabalhoSemVinculo
156
- def <<(contrato)
157
- contratos << contrato
181
+ def registrar_inicio_de_contrato(inicio_de_contrato)
182
+ contratos << Contrato.new(**inicio_de_contrato)
158
183
  end
159
184
 
160
185
  def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
161
186
  contratos
162
- .select { _1.cpf_do_trabalhador == cpf_do_trabalhador }
163
- .select { _1.categoria_do_trabalhador == categoria_do_trabalhador}
164
- .select { _1.data_de_inicio <= data }
187
+ .select {
188
+ _1.cpf_do_trabalhador == cpf_do_trabalhador &&
189
+ _1.categoria_do_trabalhador == categoria_do_trabalhador &&
190
+ _1.ativo?(data)
191
+ }
165
192
  .max_by(&:data_de_inicio)
166
193
  end
167
194
 
168
195
  def *(cpf_do_trabalhador:, data:)
169
196
  contratos
170
- .select { _1.cpf_do_trabalhador == cpf_do_trabalhador }
171
- .select { _1.data_de_inicio <= data } # FIXME: Tales data de termino
197
+ .select { _1.cpf_do_trabalhador == cpf_do_trabalhador && _1.ativo?(data) }
172
198
  .sort_by(&:data_de_inicio)
173
199
  end
174
200
 
@@ -181,6 +207,29 @@ module Teodoro
181
207
  def contratos
182
208
  @contratos ||= []
183
209
  end
210
+
211
+ class Contrato
212
+ private
213
+
214
+ def initialize(cpf_do_trabalhador:, categoria_do_trabalhador:, data_de_inicio:, recibo:)
215
+ @cpf_do_trabalhador = cpf_do_trabalhador
216
+ @categoria_do_trabalhador = categoria_do_trabalhador
217
+ @data_de_inicio = data_de_inicio
218
+ @recibo = recibo
219
+ end
220
+
221
+ attr_reader :data_do_termino
222
+
223
+ public
224
+
225
+ attr_reader :cpf_do_trabalhador, :categoria_do_trabalhador, :data_de_inicio, :recibo
226
+
227
+ attr_writer :data_do_termino
228
+
229
+ def ativo?(data)
230
+ data_de_inicio <= data && (!data_do_termino || data_do_termino >= data)
231
+ end
232
+ end
184
233
  end
185
234
  end
186
235
  end
@@ -8,7 +8,7 @@ module Teodoro
8
8
 
9
9
  super
10
10
 
11
- registrar_contrato_de_emprego
11
+ registrar_admissao
12
12
  end
13
13
 
14
14
  private
@@ -17,8 +17,12 @@ module Teodoro
17
17
  contratos_de_emprego.remover(numero_do_recibo_a_retificar)
18
18
  end
19
19
 
20
- def registrar_contrato_de_emprego
21
- contratos_de_emprego << Obj.new(
20
+ def contratos_de_emprego
21
+ empresa.contratos_de_emprego
22
+ end
23
+
24
+ def registrar_admissao
25
+ contratos_de_emprego.registrar_admissao(
22
26
  matricula: matricula_do_trabalhador,
23
27
  data_de_admissao: data_de_admissao,
24
28
  categoria_do_trabalhador: categoria_do_trabalhador,
@@ -27,10 +31,6 @@ module Teodoro
27
31
  )
28
32
  end
29
33
 
30
- def contratos_de_emprego
31
- empresa.contratos_de_emprego
32
- end
33
-
34
34
  def data_de_admissao
35
35
  @data_de_admissao ||= evento['evtAdmissao/vinculo/infoRegimeTrab/infoCeletista/dtAdm']
36
36
  end
@@ -3,10 +3,30 @@ module Teodoro
3
3
  class ArquivoS2299 # rubocop:disable Metrics/ClassLength
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
- # FIXME: Tales registrar na empresa
6
+ def processar
7
+ super
8
+
9
+ registrar_desligamento
10
+ end
7
11
 
8
12
  private
9
13
 
14
+ def registrar_desligamento
15
+ contrato_de_emprego.data_de_desligamento = data_de_desligamento
16
+ end
17
+
18
+ def contrato_de_emprego
19
+ @contrato_de_emprego ||= contratos_de_emprego[matricula_do_trabalhador]
20
+ end
21
+
22
+ def contratos_de_emprego
23
+ empresa.contratos_de_emprego
24
+ end
25
+
26
+ def data_de_desligamento
27
+ @data_de_desligamento ||= evento['evtDeslig/infoDeslig/dtDeslig']
28
+ end
29
+
10
30
  def noh_principal_do_evento
11
31
  'evtDeslig'
12
32
  end
@@ -28,14 +48,6 @@ module Teodoro
28
48
  contrato_de_emprego.data_de_admissao
29
49
  end
30
50
 
31
- def contrato_de_emprego
32
- @contrato_de_emprego ||= contratos_de_emprego[matricula_do_trabalhador]
33
- end
34
-
35
- def contratos_de_emprego
36
- empresa.contratos_de_emprego
37
- end
38
-
39
51
  def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength
40
52
  [
41
53
  # rubocop:disable Layout/LineLength
@@ -44,7 +56,7 @@ module Teodoro
44
56
  ['ESX_CATEGORIA'],
45
57
  %w[ESX_SEMVINCULO 0],
46
58
  ['ESX_DATAADMISSAO'],
47
- ['ESX_DATADESLIGAMENTO', evento['evtDeslig/infoDeslig/dtDeslig']],
59
+ ['ESX_DATADESLIGAMENTO', data_de_desligamento],
48
60
  ['ESX_INFOWEB_RESCISAO_IDEDMDEV', identificador_do_demonstrativo],
49
61
  ['ESX_INFOWEB_RESCISAO_RECIBO', numero_do_recibo],
50
62
  ['ESX_INFOWEB_RESCISAO_MOTIVO', evento['evtDeslig/infoDeslig/mtvDeslig']],
@@ -4,21 +4,21 @@ module Teodoro
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
6
  def processar
7
- remover_registro_do_contrato_de_trabalhador_sem_vinculo if retificacao?
7
+ remover_registro_do_contrato_de_trabalho if retificacao?
8
8
 
9
9
  super
10
10
 
11
- registrar_contrato_de_trabalhador_sem_vinculo
11
+ registrar_inicio_de_contrato
12
12
  end
13
13
 
14
14
  private
15
15
 
16
- def remover_registro_do_contrato_de_trabalhador_sem_vinculo
16
+ def remover_registro_do_contrato_de_trabalho
17
17
  contratos_de_trabalho_sem_vinculo.remover(numero_do_recibo_a_retificar)
18
18
  end
19
19
 
20
- def registrar_contrato_de_trabalhador_sem_vinculo
21
- contratos_de_trabalho_sem_vinculo << Obj.new(
20
+ def registrar_inicio_de_contrato
21
+ contratos_de_trabalho_sem_vinculo.registrar_inicio_de_contrato(
22
22
  cpf_do_trabalhador: cpf_do_trabalhador,
23
23
  categoria_do_trabalhador: categoria_do_trabalhador,
24
24
  data_de_inicio: data_de_inicio,
@@ -3,10 +3,34 @@ module Teodoro
3
3
  class ArquivoS2399 # rubocop:disable Metrics/ClassLength
4
4
  include ArquivoDeEventoNaoPeriodico
5
5
 
6
- # FIXME: Tales registrar termino na empresa
6
+ def processar
7
+ super
8
+
9
+ registrar_termino_do_contrato
10
+ end
7
11
 
8
12
  private
9
13
 
14
+ def registrar_termino_do_contrato
15
+ contrato_de_trabalho.data_do_termino = data_do_termino
16
+ end
17
+
18
+ def contrato_de_trabalho
19
+ contratos_de_trabalho_sem_vinculo[
20
+ cpf_do_trabalhador: cpf_do_trabalhador,
21
+ categoria_do_trabalhador: categoria_do_trabalhador,
22
+ data: data_do_termino
23
+ ]
24
+ end
25
+
26
+ def contratos_de_trabalho_sem_vinculo
27
+ empresa.contratos_de_trabalho_sem_vinculo
28
+ end
29
+
30
+ def data_do_termino
31
+ @data_do_termino ||= evento['evtTSVTermino/infoTSVTermino/dtTerm']
32
+ end
33
+
10
34
  def noh_principal_do_evento
11
35
  'evtTSVTermino'
12
36
  end
@@ -28,22 +52,6 @@ module Teodoro
28
52
  contrato_de_trabalho.data_de_inicio
29
53
  end
30
54
 
31
- def contrato_de_trabalho
32
- contratos_de_trabalho_sem_vinculo[
33
- cpf_do_trabalhador: cpf_do_trabalhador,
34
- categoria_do_trabalhador: categoria_do_trabalhador,
35
- data: data_do_termino
36
- ]
37
- end
38
-
39
- def contratos_de_trabalho_sem_vinculo
40
- empresa.contratos_de_trabalho_sem_vinculo
41
- end
42
-
43
- def data_do_termino
44
- @data_do_termino ||= evento['evtTSVTermino/infoTSVTermino/dtTerm']
45
- end
46
-
47
55
  def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength
48
56
  [
49
57
  # rubocop:disable Layout/LineLength
@@ -3,6 +3,8 @@ module Teodoro
3
3
  class ArquivoS3000
4
4
  include ArquivoDeEventoProcessadorDeArquivoData
5
5
 
6
+ # FIXME: Tales aspectos em empresa
7
+
6
8
  def processar
7
9
  excluir_arquivos_data if tipo_de_evento_processavel?
8
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teodoro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clavius Tales
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-15 00:00:00.000000000 Z
11
+ date: 2021-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri