teodoro 0.40.0 → 0.41.0

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: 8bc512f210d3295e59f37e8683c0c29e3e3f46fe41783d22585ea93aa500fa04
4
- data.tar.gz: 4a9e3b4aa08c79b215da2cd46f3761add2cb0739a6eba812f912b68a5414f700
3
+ metadata.gz: 0306567351770b2d4d6868a6e34f04876852d469bb9dde794d738149504a9833
4
+ data.tar.gz: b2f8e523645bb854c826f7cafe4dca306d786b5c1a61750f3c90426e823ae768
5
5
  SHA512:
6
- metadata.gz: dac087fa15d205b7d7bcb551ad2e502237909ed28a5aa7baba8b03d00a0a0c9f09f8b83d655d6fde622790f9c1f8d96a1243b6059965a165975870db26fdc04b
7
- data.tar.gz: 9bf88092ecdc200e37c2e8b6596744fb95a826bb3c01e36e3aa1b11080569b5aa0fc2cf7195a06f34657ee66b611bae986a96875e3b3f304f6240c7f9464f708
6
+ metadata.gz: 8aca39763cb2ab2c49de94eea5b7088c538eebbb85bfb43e23253064c49d939bb4b2d9ee0b7f6d61c3d55b540765ebd2a7512acb8a06329b171b577e729e282d
7
+ data.tar.gz: 972cd08e24427a183a9b9419b6b0ec93f533248fb728ef7b22a82dd24ea1ae432ec0e14dadce1ae6a7cee737545aa7a87f81da032a97f88cf0b09c0935198d95
@@ -18,7 +18,7 @@ module Teodoro
18
18
  attr_reader :nome
19
19
 
20
20
  def criar
21
- raise caminho if File.exist?(caminho)
21
+ raise 'evento duplicado' if File.exist?(caminho)
22
22
 
23
23
  File.open(caminho, 'w') do
24
24
  _1.puts(conteudo_do_arquivo)
@@ -73,7 +73,7 @@ module Teodoro
73
73
  data_aaaammdd: proc { _1.delete('-') if _1 },
74
74
  decimal: proc { _1.tr('.', ',') if _1 },
75
75
  mes_ano: proc { "#{_1[-2..]}/#{_1[0..3]}" if _1 },
76
- vazio: proc { nil }
76
+ vazio: proc {}
77
77
  }.freeze
78
78
 
79
79
  private
@@ -80,10 +80,14 @@ module Teodoro
80
80
  Console.print "carregando #{nome}.xml..." do
81
81
  evento, recibo = carregar_evento_e_recibo
82
82
 
83
- @retificacao = TIPOS_DE_EVENTO_RETIFICAVEIS.include?(tipo_de_evento) && evento['ideEvento/indRetif'] == '2'
83
+ @retificacao = evento_retificavel? && evento['ideEvento/indRetif'] == '2'
84
84
  @numero_do_recibo_a_retificar = evento['ideEvento/nrRecibo'] if retificacao?
85
85
  @momento_de_processamento_pelo_e_social = recibo['processamento/dhProcessamento']
86
+
87
+ validar_carregamento
86
88
  end
89
+ rescue StandardError => e
90
+ tratar_excecao(e)
87
91
  end
88
92
 
89
93
  def retificacao?
@@ -103,6 +107,8 @@ module Teodoro
103
107
  validar_versao_do_leiaute
104
108
  processar_arquivo
105
109
  end
110
+ rescue StandardError => e
111
+ tratar_excecao(e)
106
112
  end
107
113
 
108
114
  private
@@ -123,10 +129,20 @@ module Teodoro
123
129
  File.read(caminho)
124
130
  end
125
131
 
132
+ def evento_retificavel?
133
+ TIPOS_DE_EVENTO_RETIFICAVEIS.include?(tipo_de_evento)
134
+ end
135
+
126
136
  def tipo_de_evento
127
137
  @tipo_de_evento ||= nome[-6..].delete('-')
128
138
  end
129
139
 
140
+ def validar_carregamento
141
+ return if momento_de_processamento_pelo_e_social
142
+
143
+ raise 'arquivo corrompido (sem data e horário do processamento do evento)'
144
+ end
145
+
130
146
  def validar_versao_do_leiaute
131
147
  raise unless %w[
132
148
  02_04_01
@@ -182,5 +198,11 @@ module Teodoro
182
198
  def xml_do_recibo
183
199
  Nokogiri::XML(xml.css('/eSocial/retornoProcessamentoDownload/recibo/*/*').to_s)
184
200
  end
201
+
202
+ def tratar_excecao(excecao)
203
+ puts caminho
204
+ puts excecao.message
205
+ raise excecao
206
+ end
185
207
  end
186
208
  end
@@ -264,7 +264,7 @@ module Teodoro
264
264
  ['EventoAdmissao_InfoVinculo_InfoContrato_Duracao_ClausulaAssecuratoria', evento['vinculo/infoContrato/duracao/clauAssec']],
265
265
  ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_TipoInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/tpInsc']],
266
266
  ['EventoAdmissao_InfoVinculo_InfoContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['vinculo/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
267
- ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_QuantidadedHorasSemanal', evento['vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
267
+ ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_QuantidadeHorasSemanal', evento['vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
268
268
  leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_TipoJornada'],
269
269
  leiaute['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_DescricaoTipoJornada'],
270
270
  ['EventoAdmissao_InfoVinculo_InfoContrato_HorarioContratual_JornadaTempoParcial', evento['vinculo/infoContrato/horContratual/tmpParc']],
@@ -395,7 +395,24 @@ module Teodoro
395
395
  end
396
396
 
397
397
  def opcao_pelo_fgts
398
- @opcao_pelo_fgts ||= evento['vinculo/infoRegimeTrab/infoCeletista/FGTS'] ? 1 : 2
398
+ @opcao_pelo_fgts ||= optante_pelo_fgts? ? 1 : 2
399
+ end
400
+
401
+ def optante_pelo_fgts?
402
+ data_de_admissao >= (empregado_domestico? ? '2015-10-01' : '1988-10-05') ||
403
+ evento['vinculo/infoRegimeTrab/infoCeletista/FGTS']
404
+ end
405
+
406
+ def data_de_admissao
407
+ evento['vinculo/infoRegimeTrab/infoCeletista/dtAdm']
408
+ end
409
+
410
+ def empregado_domestico?
411
+ categoria_do_trabalhador == '104'
412
+ end
413
+
414
+ def categoria_do_trabalhador
415
+ evento['vinculo/infoContrato/codCateg']
399
416
  end
400
417
 
401
418
  def data_de_opcao_pelo_fgts
@@ -131,7 +131,7 @@ module Teodoro
131
131
  ['InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['altContratual/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
132
132
  ['InformacoesContrato_HorarioContratual_TipoJornada', evento['altContratual/infoContrato/horContratual/tpJornada']],
133
133
  ['InformacoesContrato_HorarioContratual_JornadaTempoParcial', evento['altContratual/infoContrato/horContratual/tmpParc']],
134
- ['InformacoesContrato_HorarioContratual_QuantidadedHorasSemanal', evento['altContratual/infoContrato/horContratual/qtdHrsSem'], :decimal],
134
+ ['InformacoesContrato_HorarioContratual_QuantidadeHorasSemanal', evento['altContratual/infoContrato/horContratual/qtdHrsSem'], :decimal],
135
135
  ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/infoContrato/horContratual/dscTpJorn']],
136
136
  ['InformacoesContrato_CodigoCargo', evento['altContratual/infoContrato/codCargo']],
137
137
  ['InformacoesContrato_DataTermino', evento['altContratual/infoContrato/duracao/dtTerm'], :data]
@@ -186,7 +186,7 @@ module Teodoro
186
186
  ['InformacoesContrato_LocalTrabalho_LocalTrabalhoGeral_NumeroInscricao', evento['altContratual/vinculo/infoContrato/localTrabalho/localTrabGeral/nrInsc']],
187
187
  ['InformacoesContrato_HorarioContratual_TipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/tpJornada'].then { %w[2 3].include?(_1) ? _1 : 9 }],
188
188
  ['InformacoesContrato_HorarioContratual_JornadaTempoParcial', evento['altContratual/vinculo/infoContrato/horContratual/tmpParc']],
189
- ['InformacoesContrato_HorarioContratual_QuantidadedHorasSemanal', evento['altContratual/vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
189
+ ['InformacoesContrato_HorarioContratual_QuantidadeHorasSemanal', evento['altContratual/vinculo/infoContrato/horContratual/qtdHrsSem'], :decimal],
190
190
  ['HorarioNoturno', evento['altContratual/vinculo/infoContrato/horContratual/horNoturno']],
191
191
  ['InformacoesContrato_HorarioContratual_DescricaoTipoJornada', evento['altContratual/vinculo/infoContrato/horContratual/dscJorn']],
192
192
  ['InformacoesContrato_CodigoCargo', codigo_do_cargo],
@@ -43,7 +43,11 @@ module Teodoro
43
43
  if inicio_do_afastamento?
44
44
  inicio_do_afastamento['dtIniAfast']
45
45
  else
46
- contrato_de_trabalho.afastamento.data_de_inicio
46
+ contrato_de_trabalho.afastamento.then do
47
+ raise 'término de afastamento sem início de afastamento' unless _1
48
+
49
+ _1.data_de_inicio
50
+ end
47
51
  end
48
52
  end
49
53
 
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.40.0'.freeze
15
+ VERSION = '0.41.0'.freeze
16
16
 
17
17
  CBOs = __FILE__
18
18
  .then { File.dirname(_1) }
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.40.0
4
+ version: 0.41.0
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-08-06 00:00:00.000000000 Z
11
+ date: 2021-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri