teodoro 0.47.1 → 0.47.2

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: 5ce0d0e153167a76eba85a5b831cb7aa33a30f2b13d7c56a7a1c5c0baa0476c8
4
- data.tar.gz: f7bdec124da04f1664b426dba3e13804f66c285fef9879a1b72c2f84d2ff8802
3
+ metadata.gz: 633d5f559929ec8fe7a59b388232b8fea4f04570f196508e2a8318b05a9330c4
4
+ data.tar.gz: 9464417d8099ccca9abe3566d34f5d051770bd2dde3f2e17c3395c61159f21e3
5
5
  SHA512:
6
- metadata.gz: 7bb53d5ae18ca1b9e1867fa65703340a5565ce63d6c2e528ad21fd15a3f069b850c28112196d8a09a7b6c019bdb46c4ef46f4d44060e6c8b9075f0aaebdb4ba2
7
- data.tar.gz: c9c1821f52eb43ee4432f010942517d5cbfbd2a34d9d94dbdb6ac3564f355bde1144e050cd7e8caac3171f55de68eeeee038403557779be32efbd3608b703dd5
6
+ metadata.gz: 5821044cf923941e5171ee054184d8d90f3da0e9a98433573ab4305fa57d7ba03e63b1dc0455c2b32791988c40d4631b2653384c43bf5c0d018f6c0169182285
7
+ data.tar.gz: 5aeaba0986ebe6e31cacd5e5ba455d6f60710c038c939fbdeb7ba3610b7e6780b82244377b8f74eabdcc2df357422ae74b5423c37a1a2aa16cfe1fb2008cb4d4
@@ -11,9 +11,13 @@ module Teodoro
11
11
 
12
12
  public
13
13
 
14
- def registrar_admissao(admissao:, afastamento:)
14
+ def to_a
15
+ contratos
16
+ end
17
+
18
+ def registrar_admissao(admissao:, inicio_de_afastamento:)
15
19
  contratos_por_matricula[admissao.matricula_do_trabalhador] =
16
- Contrato.new(admissao: admissao, afastamento: afastamento)
20
+ Contrato.new(admissao: admissao, inicio_de_afastamento: inicio_de_afastamento)
17
21
  trabalhadores << admissao.trabalhador
18
22
  end
19
23
 
@@ -38,20 +42,20 @@ module Teodoro
38
42
 
39
43
  private
40
44
 
41
- def contratos_por_matricula
42
- @contratos_por_matricula ||= {}
43
- end
44
-
45
45
  def contratos
46
46
  contratos_por_matricula.values
47
47
  end
48
48
 
49
+ def contratos_por_matricula
50
+ @contratos_por_matricula ||= {}
51
+ end
52
+
49
53
  class Contrato
50
54
  private
51
55
 
52
- def initialize(admissao:, afastamento:)
56
+ def initialize(admissao:, inicio_de_afastamento:)
53
57
  @admissao = admissao
54
- @afastamento = afastamento
58
+ @inicios_de_afastamento = inicio_de_afastamento ? [inicio_de_afastamento] : []
55
59
 
56
60
  @tipo_de_regime_previdenciario = admissao.tipo_de_regime_previdenciario
57
61
  @natureza_da_atividade = admissao.natureza_da_atividade
@@ -77,7 +81,7 @@ module Teodoro
77
81
  :categoria_do_trabalhador,
78
82
  :recibo
79
83
 
80
- attr_accessor :afastamento
84
+ attr_accessor :inicios_de_afastamento
81
85
 
82
86
  attr_reader :tipo_de_regime_previdenciario, :natureza_da_atividade, :duracao
83
87
 
@@ -11,8 +11,12 @@ module Teodoro
11
11
 
12
12
  public
13
13
 
14
- def registrar_inicio_de_contrato(inicio_de_contrato:, afastamento:)
15
- contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, afastamento: afastamento)
14
+ def to_a
15
+ contratos
16
+ end
17
+
18
+ def registrar_inicio_de_contrato(inicio_de_contrato:, inicio_de_afastamento:)
19
+ contratos << Contrato.new(inicio_de_contrato: inicio_de_contrato, inicio_de_afastamento: inicio_de_afastamento)
16
20
  trabalhadores << inicio_de_contrato.trabalhador
17
21
  end
18
22
 
@@ -47,9 +51,9 @@ module Teodoro
47
51
  class Contrato
48
52
  private
49
53
 
50
- def initialize(inicio_de_contrato:, afastamento:)
54
+ def initialize(inicio_de_contrato:, inicio_de_afastamento:)
51
55
  @inicio_de_contrato = inicio_de_contrato
52
- @afastamento = afastamento
56
+ @inicios_de_afastamento = inicio_de_afastamento ? [inicio_de_afastamento] : []
53
57
  end
54
58
 
55
59
  attr_reader :inicio_de_contrato, :data_do_termino
@@ -65,7 +69,7 @@ module Teodoro
65
69
  :data_de_inicio,
66
70
  :recibo
67
71
 
68
- attr_accessor :afastamento
72
+ attr_accessor :inicios_de_afastamento
69
73
 
70
74
  attr_writer :data_do_termino
71
75
 
@@ -89,6 +89,17 @@ module Teodoro
89
89
  @funcoes_geradas ||= FuncoesGeradas.new(self)
90
90
  end
91
91
 
92
+ def inicios_de_afastamento_por_numero_do_recibo
93
+ contratos_de_trabalho
94
+ .sum([], &:inicios_de_afastamento)
95
+ .group_by(&:numero_do_recibo)
96
+ .transform_values { _1.size == 1 ? _1.first : raise }
97
+ end
98
+
99
+ def contratos_de_trabalho
100
+ [*contratos_de_emprego, *contratos_de_trabalho_sem_vinculo]
101
+ end
102
+
92
103
  private
93
104
 
94
105
  def dar_feedback_para_o_usuario
@@ -14,7 +14,7 @@ module Teodoro
14
14
  def registrar_admissao
15
15
  contratos_de_emprego.registrar_admissao(
16
16
  admissao: admissao,
17
- afastamento: afastamento
17
+ inicio_de_afastamento: inicio_de_afastamento
18
18
  )
19
19
  end
20
20
 
@@ -127,7 +127,7 @@ module Teodoro
127
127
  empresa.contratos_de_emprego
128
128
  end
129
129
 
130
- def afastamento
130
+ def inicio_de_afastamento
131
131
  evento['vinculo/afastamento']&.then do |afastamento|
132
132
  Obj.new(
133
133
  data_de_inicio: afastamento['dtIniAfast'],
@@ -32,9 +32,11 @@ module Teodoro
32
32
  end
33
33
 
34
34
  def registrar_inicio_do_afastamento
35
- contrato_de_trabalho.afastamento = Obj.new(
35
+ contrato_de_trabalho.inicios_de_afastamento << InicioDeAfastamento.new(
36
+ inicios_de_afastamento: contrato_de_trabalho.inicios_de_afastamento,
36
37
  data_de_inicio: data_de_inicio_do_afastamento,
37
- codigo_do_motivo: codigo_do_motivo_de_afastamento
38
+ codigo_do_motivo: codigo_do_motivo_de_afastamento,
39
+ numero_do_recibo: numero_do_recibo
38
40
  )
39
41
  end
40
42
 
@@ -43,7 +45,7 @@ module Teodoro
43
45
  if inicio_do_afastamento?
44
46
  inicio_do_afastamento['dtIniAfast']
45
47
  else
46
- contrato_de_trabalho.afastamento.then do |afastamento|
48
+ ultimo_inicio_de_afastamento_do_contrato_de_trabalho.then do |afastamento|
47
49
  raise 'término de afastamento sem início de afastamento' unless afastamento
48
50
 
49
51
  afastamento.data_de_inicio
@@ -51,12 +53,16 @@ module Teodoro
51
53
  end
52
54
  end
53
55
 
56
+ def ultimo_inicio_de_afastamento_do_contrato_de_trabalho
57
+ @ultimo_inicio_de_afastamento_do_contrato_de_trabalho ||= contrato_de_trabalho.inicios_de_afastamento.last
58
+ end
59
+
54
60
  def codigo_do_motivo_de_afastamento
55
61
  @codigo_do_motivo_de_afastamento ||=
56
62
  if inicio_do_afastamento?
57
63
  evento['infoAfastamento/iniAfastamento/codMotAfast']
58
64
  else
59
- contrato_de_trabalho.afastamento.codigo_do_motivo
65
+ ultimo_inicio_de_afastamento_do_contrato_de_trabalho.codigo_do_motivo
60
66
  end
61
67
  end
62
68
 
@@ -170,6 +176,27 @@ module Teodoro
170
176
  def data_de_inicio_do_contrato_de_trabalho
171
177
  contrato_de_trabalho_sem_vinculo.data_de_inicio
172
178
  end
179
+
180
+ class InicioDeAfastamento
181
+ private
182
+
183
+ def initialize(inicios_de_afastamento:, data_de_inicio:, codigo_do_motivo:, numero_do_recibo:)
184
+ @inicios_de_afastamento = inicios_de_afastamento
185
+ @data_de_inicio = data_de_inicio
186
+ @codigo_do_motivo = codigo_do_motivo
187
+ @numero_do_recibo = numero_do_recibo
188
+ end
189
+
190
+ attr_reader :inicios_de_afastamento
191
+
192
+ public
193
+
194
+ attr_reader :data_de_inicio, :codigo_do_motivo, :numero_do_recibo
195
+
196
+ def excluir
197
+ inicios_de_afastamento.pop.then { raise unless _1 == self }
198
+ end
199
+ end
173
200
  end
174
201
  end
175
202
  end
@@ -14,7 +14,7 @@ module Teodoro
14
14
  def registrar_inicio_de_contrato
15
15
  contratos_de_trabalho_sem_vinculo.registrar_inicio_de_contrato(
16
16
  inicio_de_contrato: inicio_de_contrato,
17
- afastamento: afastamento
17
+ inicio_de_afastamento: inicio_de_afastamento
18
18
  )
19
19
  end
20
20
 
@@ -119,7 +119,7 @@ module Teodoro
119
119
  )
120
120
  end
121
121
 
122
- def afastamento
122
+ def inicio_de_afastamento
123
123
  evento['infoTSVInicio/afastamento']&.then do |afastamento|
124
124
  Obj.new(
125
125
  data_de_inicio: afastamento['dtIniAfast'],
@@ -7,6 +7,7 @@ module Teodoro
7
7
  excluir_arquivos_data if tipo_de_evento_processavel?
8
8
  excluir_admissao if exclusao_de_admissao?
9
9
  excluir_inicio_de_tsv if exclusao_de_inicio_de_tsv?
10
+ excluir_inicio_de_afastamento if exclusao_de_inicio_de_afastamento?
10
11
  end
11
12
 
12
13
  private
@@ -50,6 +51,30 @@ module Teodoro
50
51
  def contratos_de_trabalho_sem_vinculo
51
52
  empresa.contratos_de_trabalho_sem_vinculo
52
53
  end
54
+
55
+ def exclusao_de_inicio_de_afastamento?
56
+ exclusao_de_afastamento? && inicio_de_afastamento?
57
+ end
58
+
59
+ def exclusao_de_afastamento?
60
+ tipo_de_evento == 'S2230'
61
+ end
62
+
63
+ def inicio_de_afastamento?
64
+ inicio_de_afastamento
65
+ end
66
+
67
+ def inicio_de_afastamento
68
+ @inicio_de_afastamento ||= inicios_de_afastamento_por_numero_do_recibo[numero_de_recibo_do_evento_a_excluir]
69
+ end
70
+
71
+ def inicios_de_afastamento_por_numero_do_recibo
72
+ empresa.inicios_de_afastamento_por_numero_do_recibo
73
+ end
74
+
75
+ def excluir_inicio_de_afastamento
76
+ inicio_de_afastamento.excluir
77
+ end
53
78
  end
54
79
  end
55
80
  end
@@ -1,3 +1,3 @@
1
1
  module Teodoro
2
- VERSION = '0.47.1'.freeze
2
+ VERSION = '0.47.2'.freeze
3
3
  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.47.1
4
+ version: 0.47.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fortes Tecnologia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-23 00:00:00.000000000 Z
11
+ date: 2022-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri