teodoro 0.0.13 → 0.0.14
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.
- checksums.yaml +4 -4
- data/lib/teodoro/arquivo_de_evento.rb +13 -18
- data/lib/teodoro/arquivo_de_evento_exceto_de_exclusao.rb +1 -5
- data/lib/teodoro/arquivo_de_evento_nao_periodico.rb +0 -4
- data/lib/teodoro/arquivo_de_evento_processador_de_arquivo_data.rb +30 -0
- data/lib/teodoro/arquivo_xml.rb +5 -1
- data/lib/teodoro/empresa.rb +40 -8
- data/lib/teodoro/leiaute/arquivo_s1000.rb +4 -6
- data/lib/teodoro/leiaute/arquivo_s1005.rb +3 -3
- data/lib/teodoro/leiaute/arquivo_s1010.rb +1 -3
- data/lib/teodoro/leiaute/arquivo_s1020.rb +3 -3
- data/lib/teodoro/leiaute/arquivo_s1030.rb +3 -3
- data/lib/teodoro/leiaute/arquivo_s1040.rb +1 -3
- data/lib/teodoro/leiaute/arquivo_s1050.rb +3 -3
- data/lib/teodoro/leiaute/arquivo_s1070.rb +1 -3
- data/lib/teodoro/leiaute/arquivo_s2200.rb +7 -5
- data/lib/teodoro/leiaute/arquivo_s2205.rb +233 -136
- data/lib/teodoro/leiaute/arquivo_s2206.rb +8 -8
- data/lib/teodoro/leiaute/arquivo_s2230.rb +55 -11
- data/lib/teodoro/leiaute/arquivo_s2250.rb +6 -6
- data/lib/teodoro/leiaute/arquivo_s2299.rb +13 -10
- data/lib/teodoro/leiaute/arquivo_s2300.rb +6 -6
- data/lib/teodoro/leiaute/arquivo_s2306.rb +3 -3
- data/lib/teodoro/leiaute/arquivo_s2399.rb +8 -6
- data/lib/teodoro/leiaute/arquivo_s3000.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e696e8f08a36cd8a03c594889275036e4d7c93450fdd726695f7f459324e397e
|
4
|
+
data.tar.gz: 5a681ee9a32067f055efa512a0244770d7b9745ee30a267758a5cc8a79ec7171
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65b6daa91ab167768a7167f99957cb310448c7dd93ac1d0f918ec25827398c1562d2db40bbc6b7b008ac6f43ccadddf25ba5410b467d0caa470b699b4a68ffcb
|
7
|
+
data.tar.gz: c600d82615cd701367aa868155d67494549bd5b3f5d28cf34661f39f55bdb6cf244dfaf23bce9b39e288247f8fc5004bc467a5527ca287bb6327c2da65ada080
|
@@ -2,36 +2,31 @@ module Teodoro
|
|
2
2
|
module ArquivoDeEvento
|
3
3
|
private
|
4
4
|
|
5
|
-
def initialize(empresa:,
|
5
|
+
def initialize(empresa:, arquivo_xml:)
|
6
6
|
@empresa = empresa
|
7
|
-
@
|
8
|
-
@evento = evento
|
9
|
-
@recibo = recibo
|
7
|
+
@arquivo_xml = arquivo_xml
|
10
8
|
end
|
11
9
|
|
12
|
-
attr_reader :empresa, :
|
10
|
+
attr_reader :empresa, :arquivo_xml
|
13
11
|
|
14
|
-
def
|
15
|
-
versao_do_leiaute
|
12
|
+
def versao_do_leiaute
|
13
|
+
arquivo_xml.versao_do_leiaute
|
16
14
|
end
|
17
15
|
|
18
|
-
def
|
19
|
-
evento
|
16
|
+
def evento
|
17
|
+
arquivo_xml.evento
|
20
18
|
end
|
21
19
|
|
22
|
-
def
|
23
|
-
|
24
|
-
destino_dos_arquivos_data,
|
25
|
-
"#{windows? ? nome_do_arquivo.gsub(%r{[<|>:"/\\?*]}, '_') : nome_do_arquivo}.data"
|
26
|
-
)
|
20
|
+
def recibo
|
21
|
+
arquivo_xml.recibo
|
27
22
|
end
|
28
23
|
|
29
|
-
def
|
30
|
-
|
24
|
+
def versao_do_aplicativo_de_processamento_do_evento
|
25
|
+
@versao_do_aplicativo_de_processamento_do_evento ||= recibo['retornoEvento/processamento/versaoAppProcessamento']
|
31
26
|
end
|
32
27
|
|
33
|
-
def
|
34
|
-
|
28
|
+
def numero_do_recibo
|
29
|
+
@numero_do_recibo ||= recibo['retornoEvento/recibo/nrRecibo']
|
35
30
|
end
|
36
31
|
end
|
37
32
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Teodoro
|
2
2
|
module ArquivoDeEventoExcetoDeExclusao
|
3
|
-
include
|
3
|
+
include ArquivoDeEventoProcessadorDeArquivoData
|
4
4
|
|
5
5
|
private
|
6
6
|
|
@@ -14,10 +14,6 @@ module Teodoro
|
|
14
14
|
(itens_do_conteudo_do_arquivo_data.map { "#{_1}=#{_2}" } + ['']).join("\n")
|
15
15
|
end
|
16
16
|
|
17
|
-
def versao_do_aplicativo_de_processamento_do_evento
|
18
|
-
recibo['retornoEvento/processamento/versaoAppProcessamento']
|
19
|
-
end
|
20
|
-
|
21
17
|
def tipo_de_inscricao_do_empregador
|
22
18
|
@tipo_de_inscricao_do_empregador ||= evento["#{noh_principal_do_evento}/ideEmpregador/tpInsc"]
|
23
19
|
end
|
@@ -38,10 +38,6 @@ module Teodoro
|
|
38
38
|
de_recibo_para_nome_do_arquivo_data[numero_do_recibo] = nome_do_arquivo_data
|
39
39
|
end
|
40
40
|
|
41
|
-
def numero_do_recibo
|
42
|
-
recibo['retornoEvento/recibo/nrRecibo']
|
43
|
-
end
|
44
|
-
|
45
41
|
def caminho_do_arquivo_data
|
46
42
|
criar_caminho_do_arquivo_data(nome_do_arquivo_data)
|
47
43
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Teodoro
|
2
|
+
module ArquivoDeEventoProcessadorDeArquivoData
|
3
|
+
include ArquivoDeEvento
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def leiaute_simplificado?
|
8
|
+
versao_do_leiaute.start_with?('_S_')
|
9
|
+
end
|
10
|
+
|
11
|
+
def processo_de_emissao_do_evento
|
12
|
+
evento["#{noh_principal_do_evento}/ideEvento/procEmi"]
|
13
|
+
end
|
14
|
+
|
15
|
+
def criar_caminho_do_arquivo_data(nome_do_arquivo)
|
16
|
+
File.join(
|
17
|
+
destino_dos_arquivos_data,
|
18
|
+
"#{windows? ? nome_do_arquivo.gsub(%r{[<|>:"/\\?*]}, '_') : nome_do_arquivo}.data"
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
def destino_dos_arquivos_data
|
23
|
+
empresa.destino_dos_arquivos_data
|
24
|
+
end
|
25
|
+
|
26
|
+
def windows?
|
27
|
+
OS.windows?
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/teodoro/arquivo_xml.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative 'arquivo_de_evento'
|
2
|
+
require_relative 'arquivo_de_evento_processador_de_arquivo_data'
|
2
3
|
require_relative 'arquivo_de_evento_exceto_de_exclusao'
|
3
4
|
require_relative 'arquivo_de_evento_de_tabela'
|
4
5
|
require_relative 'arquivo_de_evento_nao_periodico'
|
@@ -106,7 +107,10 @@ module Teodoro
|
|
106
107
|
end
|
107
108
|
|
108
109
|
def arquivo
|
109
|
-
classe_do_arquivo.new(
|
110
|
+
classe_do_arquivo.new(
|
111
|
+
empresa: empresa,
|
112
|
+
arquivo_xml: Obj.new(versao_do_leiaute: versao_do_leiaute, evento: evento, recibo: recibo)
|
113
|
+
)
|
110
114
|
end
|
111
115
|
|
112
116
|
def classe_do_arquivo
|
data/lib/teodoro/empresa.rb
CHANGED
@@ -84,8 +84,8 @@ module Teodoro
|
|
84
84
|
@empresa ||= Obj.new(
|
85
85
|
destino_dos_arquivos_data: destino_dos_arquivos_data,
|
86
86
|
de_recibo_para_nome_do_arquivo_data: {},
|
87
|
-
|
88
|
-
|
87
|
+
contratos_de_emprego: ContratosDeEmprego.new,
|
88
|
+
contratos_de_trabalho_sem_vinculo: ContratosDeTrabalhoSemVinculo.new
|
89
89
|
)
|
90
90
|
end
|
91
91
|
|
@@ -93,19 +93,51 @@ module Teodoro
|
|
93
93
|
Console.print
|
94
94
|
end
|
95
95
|
|
96
|
-
class
|
96
|
+
class ContratosDeEmprego
|
97
|
+
def []=(matricula, contrato)
|
98
|
+
contratos_por_matricula[matricula] = contrato
|
99
|
+
end
|
100
|
+
|
101
|
+
def [](matricula)
|
102
|
+
contratos_por_matricula[matricula]
|
103
|
+
end
|
104
|
+
|
105
|
+
def *(cpf_do_trabalhador:, data:)
|
106
|
+
contratos
|
107
|
+
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador }
|
108
|
+
.select { _1.data_de_admissao <= data } # data de rescisao
|
109
|
+
.sort_by(&:data_de_admissao)
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def contratos_por_matricula
|
115
|
+
@contratos_por_matricula ||= {}
|
116
|
+
end
|
117
|
+
|
118
|
+
def contratos
|
119
|
+
contratos_por_matricula.values
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
class ContratosDeTrabalhoSemVinculo
|
97
124
|
def <<(contrato)
|
98
125
|
contratos << contrato
|
99
126
|
end
|
100
127
|
|
101
128
|
def [](cpf_do_trabalhador:, categoria_do_trabalhador:, data:)
|
102
129
|
contratos
|
103
|
-
.select {
|
104
|
-
|
105
|
-
}
|
130
|
+
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador }
|
131
|
+
.select { _1.categoria_do_trabalhador == categoria_do_trabalhador}
|
132
|
+
.select { _1.data_de_inicio <= data }
|
133
|
+
.max_by(&:data_de_inicio)
|
134
|
+
end
|
135
|
+
|
136
|
+
def *(cpf_do_trabalhador:, data:)
|
137
|
+
contratos
|
138
|
+
.select { _1.cpf_do_trabalhador == cpf_do_trabalhador }
|
139
|
+
.select { _1.data_de_inicio <= data } # FIXME: Tales data de termino
|
106
140
|
.sort_by(&:data_de_inicio)
|
107
|
-
.reverse
|
108
|
-
.find { _1.data_de_inicio <= data }
|
109
141
|
end
|
110
142
|
|
111
143
|
private
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module Teodoro
|
2
2
|
module Leiaute
|
3
|
-
# rubocop:disable Metrics/ClassLength
|
4
|
-
class ArquivoS1000
|
3
|
+
class ArquivoS1000 # rubocop:disable Metrics/ClassLength
|
5
4
|
include ArquivoDeEventoDeTabela
|
6
5
|
|
7
6
|
private
|
@@ -64,9 +63,9 @@ module Teodoro
|
|
64
63
|
'idePeriodo'
|
65
64
|
end
|
66
65
|
|
67
|
-
# rubocop:disable
|
68
|
-
def itens_do_conteudo_do_arquivo_data
|
66
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
69
67
|
[
|
68
|
+
# rubocop:disable Layout/LineLength
|
70
69
|
['TipoInscricaoEmpregador', tipo_de_inscricao],
|
71
70
|
['FapBdContrib'],
|
72
71
|
['AlteracaoEmPeriodoExistente'],
|
@@ -150,14 +149,13 @@ module Teodoro
|
|
150
149
|
["ListaSoftHouses_#{seq}_Email", software_house['email']]
|
151
150
|
]
|
152
151
|
end.sum([])
|
152
|
+
# rubocop:enable Layout/LineLength
|
153
153
|
]
|
154
154
|
end
|
155
|
-
# rubocop:enable Layout/LineLength, Metrics/MethodLength, Metrics/AbcSize
|
156
155
|
|
157
156
|
def softwares_house
|
158
157
|
evento.*('evtInfoEmpregador/infoEmpregador/*/infoCadastro/softwareHouse')
|
159
158
|
end
|
160
159
|
end
|
161
|
-
# rubocop:enable Metrics/ClassLength
|
162
160
|
end
|
163
161
|
end
|
@@ -25,9 +25,9 @@ module Teodoro
|
|
25
25
|
'ideEstab'
|
26
26
|
end
|
27
27
|
|
28
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
29
|
-
def itens_do_conteudo_do_arquivo_data
|
28
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
30
29
|
[
|
30
|
+
# rubocop:disable Layout/LineLength
|
31
31
|
['RequestVerificationToken'],
|
32
32
|
['SomenteVisualizacao'],
|
33
33
|
['BloquearCodigo'],
|
@@ -75,9 +75,9 @@ module Teodoro
|
|
75
75
|
['VerProc', versao_do_aplicativo_de_processamento_do_evento],
|
76
76
|
['idEdicaoSH'],
|
77
77
|
['ExibirContribuicaoPatronal']
|
78
|
+
# rubocop:enable Layout/LineLength
|
78
79
|
]
|
79
80
|
end
|
80
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Layout/LineLength
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
@@ -29,8 +29,7 @@ module Teodoro
|
|
29
29
|
@codigo ||= evento['evtTabRubrica/infoRubrica/*/ideRubrica/codRubr']
|
30
30
|
end
|
31
31
|
|
32
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
33
|
-
def itens_do_conteudo_do_arquivo_data
|
32
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
34
33
|
[
|
35
34
|
['RequestVerificationToken'],
|
36
35
|
['SomenteVisualizacao'],
|
@@ -59,7 +58,6 @@ module Teodoro
|
|
59
58
|
['hd_ProcessoSindicato']
|
60
59
|
]
|
61
60
|
end
|
62
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
63
61
|
end
|
64
62
|
end
|
65
63
|
end
|
@@ -25,9 +25,9 @@ module Teodoro
|
|
25
25
|
@codigo_da_lotacao_tributaria ||= evento['evtTabLotacao/infoLotacao/*/ideLotacao/codLotacao']
|
26
26
|
end
|
27
27
|
|
28
|
-
# rubocop:disable Metrics/MethodLength,
|
29
|
-
def itens_do_conteudo_do_arquivo_data
|
28
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
30
29
|
[
|
30
|
+
# rubocop:disable Layout/LineLength
|
31
31
|
['RequestVerificationToken'],
|
32
32
|
['SomenteVisualizacao'],
|
33
33
|
['BloquearCodigo'],
|
@@ -60,9 +60,9 @@ module Teodoro
|
|
60
60
|
['VerProc', versao_do_aplicativo_de_processamento_do_evento],
|
61
61
|
['idEdicaoProcesso'],
|
62
62
|
['ExibirContribuicaoPatronal']
|
63
|
+
# rubocop:enable Layout/LineLength
|
63
64
|
]
|
64
65
|
end
|
65
|
-
# rubocop:enable Metrics/MethodLength, Layout/LineLength, Metrics/AbcSize
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -25,9 +25,9 @@ module Teodoro
|
|
25
25
|
@codigo_do_cargo ||= evento['evtTabCargo/infoCargo/*/ideCargo/codCargo']
|
26
26
|
end
|
27
27
|
|
28
|
-
# rubocop:disable Metrics/MethodLength,
|
29
|
-
def itens_do_conteudo_do_arquivo_data
|
28
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
30
29
|
[
|
30
|
+
# rubocop:disable Layout/LineLength
|
31
31
|
['RequestVerificationToken'],
|
32
32
|
['SomenteVisualizacao'],
|
33
33
|
['BloquearCodigo'],
|
@@ -51,9 +51,9 @@ module Teodoro
|
|
51
51
|
['NrReciboEventoOriginal'],
|
52
52
|
['DescricaoProcEmi'],
|
53
53
|
['VerProc', versao_do_aplicativo_de_processamento_do_evento]
|
54
|
+
# rubocop:enable Layout/LineLength
|
54
55
|
]
|
55
56
|
end
|
56
|
-
# rubocop:enable Metrics/MethodLength, Layout/LineLength, Metrics/AbcSize
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
@@ -23,8 +23,7 @@ module Teodoro
|
|
23
23
|
@codigo_da_funcao ||= evento['evtTabFuncao/infoFuncao/*/ideFuncao/codFuncao']
|
24
24
|
end
|
25
25
|
|
26
|
-
# rubocop:disable Metrics/MethodLength
|
27
|
-
def itens_do_conteudo_do_arquivo_data
|
26
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength
|
28
27
|
[
|
29
28
|
['RequestVerificationToken'],
|
30
29
|
['SomenteVisualizacao'],
|
@@ -43,7 +42,6 @@ module Teodoro
|
|
43
42
|
['VerProc', versao_do_aplicativo_de_processamento_do_evento]
|
44
43
|
]
|
45
44
|
end
|
46
|
-
# rubocop:enable Metrics/MethodLength
|
47
45
|
end
|
48
46
|
end
|
49
47
|
end
|
@@ -25,9 +25,9 @@ module Teodoro
|
|
25
25
|
@codigo_do_horario ||= evento['evtTabHorTur/infoHorContratual/*/ideHorContratual/codHorContrat']
|
26
26
|
end
|
27
27
|
|
28
|
-
# rubocop:disable Metrics/MethodLength,
|
29
|
-
def itens_do_conteudo_do_arquivo_data
|
28
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
30
29
|
[
|
30
|
+
# rubocop:disable Layout/LineLength
|
31
31
|
['RequestVerificationToken'],
|
32
32
|
['SomenteVisualizacao'],
|
33
33
|
['BloquearCodigo'],
|
@@ -60,9 +60,9 @@ module Teodoro
|
|
60
60
|
["DadosHorario_ListaHorarioIntervalo_#{seq}_DuracaoIntervalo", intervalo['durInterv']]
|
61
61
|
]
|
62
62
|
end.sum([])
|
63
|
+
# rubocop:enable Layout/LineLength
|
63
64
|
]
|
64
65
|
end
|
65
|
-
# rubocop:enable Metrics/MethodLength, Layout/LineLength, Metrics/AbcSize
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -25,8 +25,7 @@ module Teodoro
|
|
25
25
|
@numero_do_processo ||= evento['evtTabProcesso/infoProcesso/*/ideProcesso/nrProc']
|
26
26
|
end
|
27
27
|
|
28
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
29
|
-
def itens_do_conteudo_do_arquivo_data
|
28
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
30
29
|
[
|
31
30
|
['RequestVerificationToken'],
|
32
31
|
['SomenteVisualizacao'],
|
@@ -69,7 +68,6 @@ module Teodoro
|
|
69
68
|
end.sum([])
|
70
69
|
]
|
71
70
|
end
|
72
|
-
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
73
71
|
end
|
74
72
|
end
|
75
73
|
end
|
@@ -12,14 +12,16 @@ module Teodoro
|
|
12
12
|
private
|
13
13
|
|
14
14
|
def registrar_admissao
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
contratos_de_emprego[matricula_do_trabalhador] = Obj.new(
|
16
|
+
matricula: matricula_do_trabalhador,
|
17
|
+
data_de_admissao: data_de_admissao,
|
18
|
+
categoria_do_trabalhador: categoria_do_trabalhador,
|
19
|
+
cpf_do_trabalhador: cpf_do_trabalhador
|
18
20
|
)
|
19
21
|
end
|
20
22
|
|
21
|
-
def
|
22
|
-
empresa.
|
23
|
+
def contratos_de_emprego
|
24
|
+
empresa.contratos_de_emprego
|
23
25
|
end
|
24
26
|
|
25
27
|
def data_de_admissao
|
@@ -1,18 +1,29 @@
|
|
1
1
|
module Teodoro
|
2
2
|
module Leiaute
|
3
|
-
class ArquivoS2205
|
4
|
-
include
|
3
|
+
class ArquivoS2205
|
4
|
+
include ArquivoDeEvento
|
5
|
+
|
6
|
+
def processar
|
7
|
+
contratos_de_trabalho.each(&:processar)
|
8
|
+
end
|
5
9
|
|
6
10
|
private
|
7
11
|
|
8
|
-
def
|
9
|
-
|
12
|
+
def contratos_de_trabalho
|
13
|
+
(contratos_de_emprego + contratos_de_trabalho_sem_vinculo)
|
14
|
+
.map { |classe, contrato| classe.new(empresa: empresa, arquivo_xml: arquivo_xml, contrato: contrato) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def contratos_de_emprego
|
18
|
+
empresa.contratos_de_emprego
|
19
|
+
.*(cpf_do_trabalhador: cpf_do_trabalhador, data: data_da_alteracao)
|
20
|
+
.map { [ContratoDeEmprego, _1] }
|
10
21
|
end
|
11
22
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
23
|
+
def contratos_de_trabalho_sem_vinculo
|
24
|
+
empresa.contratos_de_trabalho_sem_vinculo
|
25
|
+
.*(cpf_do_trabalhador: cpf_do_trabalhador, data: data_da_alteracao)
|
26
|
+
.map { [ContratoDeTrabalhoSemVinculo, _1] }
|
16
27
|
end
|
17
28
|
|
18
29
|
def cpf_do_trabalhador
|
@@ -23,135 +34,221 @@ module Teodoro
|
|
23
34
|
@data_da_alteracao ||= evento['evtAltCadastral/alteracao/dtAlteracao']
|
24
35
|
end
|
25
36
|
|
26
|
-
# rubocop:disable Metrics/
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
[
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
[
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
]
|
151
|
-
|
152
|
-
|
37
|
+
module ContratoDeTrabalho # rubocop:disable Metrics/ModuleLength
|
38
|
+
include ArquivoDeEventoNaoPeriodico
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def initialize(contrato:, **args)
|
43
|
+
super(**args)
|
44
|
+
|
45
|
+
@contrato = contrato
|
46
|
+
end
|
47
|
+
|
48
|
+
attr_reader :contrato
|
49
|
+
|
50
|
+
def noh_principal_do_evento
|
51
|
+
'evtAltCadastral'
|
52
|
+
end
|
53
|
+
|
54
|
+
def nome_do_arquivo_data
|
55
|
+
@nome_do_arquivo_data ||= [
|
56
|
+
"TRA[#{cpf_do_trabalhador}]",
|
57
|
+
nome_do_arquivo_data_identificacao_do_contrato,
|
58
|
+
"-ACA[#{data_da_alteracao.delete('-')}]"
|
59
|
+
].join
|
60
|
+
end
|
61
|
+
|
62
|
+
def cpf_do_trabalhador
|
63
|
+
@cpf_do_trabalhador ||= evento['evtAltCadastral/ideTrabalhador/cpfTrab']
|
64
|
+
end
|
65
|
+
|
66
|
+
def data_da_alteracao
|
67
|
+
@data_da_alteracao ||= evento['evtAltCadastral/alteracao/dtAlteracao']
|
68
|
+
end
|
69
|
+
|
70
|
+
def itens_do_conteudo_do_arquivo_data # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
71
|
+
[
|
72
|
+
# rubocop:disable Layout/LineLength
|
73
|
+
['ESX_CPF', cpf_do_trabalhador],
|
74
|
+
['ESX_MATRICULA', matricula_do_contrato],
|
75
|
+
['ESX_CATEGORIA', categoria_do_trabalhador],
|
76
|
+
%w[ESX_SEMVINCULO 0], # FIXME: Tales TC
|
77
|
+
['ESX_DATAADMISSAO', data_de_inicio_do_contrato_de_trabalho],
|
78
|
+
['ESX_DATAALTERACAO', data_da_alteracao],
|
79
|
+
['DataAlteracao', data_da_alteracao],
|
80
|
+
['IdEventoXml'],
|
81
|
+
['NrReciboEventoOriginal'],
|
82
|
+
['RequestVerificationToken'],
|
83
|
+
['SomenteLeitura'],
|
84
|
+
['VisualizarDadosCadastrais'],
|
85
|
+
['UrlRetorno'],
|
86
|
+
['visualizar'],
|
87
|
+
['DescricaoProcEmi', processo_de_emissao_do_evento],
|
88
|
+
['VerProc', recibo['retornoEvento/processamento/versaoAppProcessamento']],
|
89
|
+
['IdEdicaoDependente'],
|
90
|
+
['commandArgument'],
|
91
|
+
['EventoAdmissao_TipoEventoEnviado'],
|
92
|
+
['HiddenCurrentUrl'],
|
93
|
+
['ehCodigoAcesso'],
|
94
|
+
['ExibirTrocarPerfil'],
|
95
|
+
['EventoAdmissao_InfoTrabalhador_Cpf', cpf_do_trabalhador],
|
96
|
+
['EventoAdmissao_InfoTrabalhador_Nome', evento['evtAltCadastral/alteracao/dadosTrabalhador/nmTrab']],
|
97
|
+
['EventoAdmissao_InfoTrabalhador_Nis', evento['evtAltCadastral/alteracao/dadosTrabalhador/nisTrab']],
|
98
|
+
['EventoAdmissao_InfoTrabalhador_Sexo', evento['evtAltCadastral/alteracao/dadosTrabalhador/sexo']],
|
99
|
+
['EventoAdmissao_InfoTrabalhador_Sexo_TEXT'],
|
100
|
+
['EventoAdmissao_InfoTrabalhador_RacaCor', evento['evtAltCadastral/alteracao/dadosTrabalhador/racaCor']],
|
101
|
+
['EventoAdmissao_InfoTrabalhador_RacaCor_TEXT'],
|
102
|
+
['EventoAdmissao_InfoTrabalhador_EstadoCivil', evento['evtAltCadastral/alteracao/dadosTrabalhador/estCiv']],
|
103
|
+
['EventoAdmissao_InfoTrabalhador_EstadoCivil_TEXT'],
|
104
|
+
['EventoAdmissao_InfoTrabalhador_GrauInstrucao', evento['evtAltCadastral/alteracao/dadosTrabalhador/grauInstr']],
|
105
|
+
['EventoAdmissao_InfoTrabalhador_GrauInstrucao_TEXT'],
|
106
|
+
['EventoAdmissao_InfoTrabalhador_PrimeiroEmprego'],
|
107
|
+
['EventoAdmissao_InfoTrabalhador_NomeSocial', evento['evtAltCadastral/alteracao/dadosTrabalhador/nmSoc']],
|
108
|
+
['EventoAdmissao_Aposentadoria_TrabalhadorAposentado', evento['evtAltCadastral/alteracao/dadosTrabalhador/aposentadoria/trabAposent']],
|
109
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio'],
|
110
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_CodigoMunicipio_TEXT'],
|
111
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_DataNascimento'],
|
112
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_NomeMae'],
|
113
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_NomePai'],
|
114
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento'],
|
115
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNascimento_TEXT'],
|
116
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade'],
|
117
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_PaisNacionalidade_TEXT'],
|
118
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_Uf'],
|
119
|
+
['EventoAdmissao_InfoTrabalhador_Nascimento_Uf_TEXT'],
|
120
|
+
['EventoAdmissao_EnderecoResidencialBR_Bairro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/bairro']],
|
121
|
+
['EventoAdmissao_EnderecoResidencialBR_Cep', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/cep']],
|
122
|
+
['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/codMunic']],
|
123
|
+
['EventoAdmissao_EnderecoResidencialBR_CodigoMunicipio_TEXT'],
|
124
|
+
['EventoAdmissao_EnderecoResidencialBR_Complemento', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/complemento']],
|
125
|
+
['EventoAdmissao_EnderecoResidencialBR_DescricaoLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/dscLograd']],
|
126
|
+
['EventoAdmissao_EnderecoResidencialBR_NumeroLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/nrLograd']],
|
127
|
+
['SemNumeroLogradouroEnderecoBR'],
|
128
|
+
['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/tpLograd']],
|
129
|
+
['EventoAdmissao_EnderecoResidencialBR_TipoLogradouro_TEXT'],
|
130
|
+
['EventoAdmissao_EnderecoResidencialBR_Uf', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/brasil/uf']],
|
131
|
+
['EventoAdmissao_EnderecoResidencialBR_Uf_TEXT'],
|
132
|
+
['EventoAdmissao_EnderecoResidencialEX_Bairro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/bairro']],
|
133
|
+
['EventoAdmissao_EnderecoResidencialEX_CodigoPostal', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/codPostal']],
|
134
|
+
['EventoAdmissao_EnderecoResidencialEX_Complemento', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/complemento']],
|
135
|
+
['EventoAdmissao_EnderecoResidencialEX_DescricaoLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/dscLograd']],
|
136
|
+
['EventoAdmissao_EnderecoResidencialEX_NomeCidade', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/nmCid']],
|
137
|
+
['EventoAdmissao_EnderecoResidencialEX_NumeroLogradouro', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/nrLograd']],
|
138
|
+
['ResideExterior'],
|
139
|
+
['EventoAdmissao_EnderecoResidencialEX_PaisResidencia', evento['evtAltCadastral/alteracao/dadosTrabalhador/endereco/exterior/paisResid']],
|
140
|
+
['EventoAdmissao_EnderecoResidencialEX_PaisResidencia_TEXT'],
|
141
|
+
['SemNumeroLogradouroEnderecoEX'],
|
142
|
+
['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_CasadoComBrasileiro', evento['evtAltCadastral/alteracao/dadosTrabalhador/trabEstrangeiro/casadoBr']],
|
143
|
+
['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/trabEstrangeiro/classTrabEstrang']],
|
144
|
+
['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_ClassificacaoCondicao_TEXT'],
|
145
|
+
['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_DataChegada', evento['evtAltCadastral/alteracao/dadosTrabalhador/trabEstrangeiro/dtChegada']],
|
146
|
+
['EventoAdmissao_InfoTrabalhador_TrabalhadorEstrangeiro_FilhosBrasileiros', evento['evtAltCadastral/alteracao/dadosTrabalhador/trabEstrangeiro/filhosBr']],
|
147
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/categoriaCnh']],
|
148
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_CategoriaCnh_TEXT'],
|
149
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/dtExped']],
|
150
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataPrimeiraHabilitacao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/dtPriHab']],
|
151
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_DataValidade', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/dtValid']],
|
152
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_NumeroCnh', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/nrRegCnh']],
|
153
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CNH/ufCnh']],
|
154
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Cnh_UfCnh_TEXT'],
|
155
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_NumeroCtps', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CTPS/nrCtps']],
|
156
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_SerieCtps', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CTPS/serieCtps']],
|
157
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/CTPS/ufCtps']],
|
158
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Ctps_UfCtps_TEXT'],
|
159
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/OC/dtExped']],
|
160
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Oc_DataValidade', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/OC/dtValid']],
|
161
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Oc_NumeroOc', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/OC/nrOc']],
|
162
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Oc_OrgaoEmissor', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/OC/orgaoEmissor']],
|
163
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Rg_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RG/dtExped']],
|
164
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Rg_NumeroRg', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RG/nrRg']],
|
165
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Rg_OrgaoEmissor', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RG/orgaoEmissor']],
|
166
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Ric_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RIC/dtExped']],
|
167
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Ric_NumeroRic', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RIC/nrRic']],
|
168
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Ric_OrgaoEmissor', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RIC/orgaoEmissor']],
|
169
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Rne_DataExpedicao', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RNE/dtExped']],
|
170
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Rne_NumerorRne', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RNE/nrRne']],
|
171
|
+
['EventoAdmissao_InfoTrabalhador_Documentos_Rne_OrgaoEmissor', evento['evtAltCadastral/alteracao/dadosTrabalhador/documentos/RNE/orgaoEmissor']],
|
172
|
+
['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaAuditiva', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defAuditiva']],
|
173
|
+
['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaFisica', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defFisica']],
|
174
|
+
['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaIntelectual', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defIntelectual']],
|
175
|
+
['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaMental', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defMental']],
|
176
|
+
['EventoAdmissao_InfoTrabalhador_Deficiencia_DeficienciaVisual', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/defVisual']],
|
177
|
+
['EventoAdmissao_InfoTrabalhador_Deficiencia_InfoCota', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/infoCota']],
|
178
|
+
['EventoAdmissao_InfoTrabalhador_Deficiencia_Observacao', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/observacao']],
|
179
|
+
['EventoAdmissao_InfoTrabalhador_Deficiencia_ReabilitadoOuReadaptado', evento['evtAltCadastral/alteracao/dadosTrabalhador/infoDeficiencia/reabReadap']],
|
180
|
+
['EventoAdmissao_Contato_TelefonePrincipal', evento['evtAltCadastral/alteracao/dadosTrabalhador/contato/fonePrinc']],
|
181
|
+
['EventoAdmissao_Contato_EmailPrincipal', evento['evtAltCadastral/alteracao/dadosTrabalhador/contato/emailPrinc']],
|
182
|
+
['EventoAdmissao_Contato_TelefoneAlternativo', evento['evtAltCadastral/alteracao/dadosTrabalhador/contato/foneAlternat']],
|
183
|
+
['EventoAdmissao_Contato_EmailAlternativo', evento['evtAltCadastral/alteracao/dadosTrabalhador/contato/emailAlternat']],
|
184
|
+
*evento.*('evtAltCadastral/alteracao/dadosTrabalhador/dependente').map.with_index(1) do |dependente, seq|
|
185
|
+
[
|
186
|
+
["EventoAdmissao_Dependente_#{seq}_CPFDependente", dependente['cpfDep']],
|
187
|
+
["EventoAdmissao_Dependente_#{seq}_DataNascimento", dependente['dtNascto']],
|
188
|
+
["EventoAdmissao_Dependente_#{seq}_DataNascimentoFormatada"],
|
189
|
+
["EventoAdmissao_Dependente_#{seq}_DependenteIRRF", dependente['depIRRF']],
|
190
|
+
["EventoAdmissao_Dependente_#{seq}_DependenteSF", dependente['depSF']],
|
191
|
+
["EventoAdmissao_Dependente_#{seq}_IncapacidadeDependente", dependente['incTrab']],
|
192
|
+
["EventoAdmissao_Dependente_#{seq}_NomeDependente", dependente['nmDep']],
|
193
|
+
["EventoAdmissao_Dependente_#{seq}_TipoDependente", dependente['tpDep']]
|
194
|
+
]
|
195
|
+
end.sum([])
|
196
|
+
# rubocop:enable Layout/LineLength
|
197
|
+
]
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
class ContratoDeEmprego
|
202
|
+
include ContratoDeTrabalho
|
203
|
+
|
204
|
+
private
|
205
|
+
|
206
|
+
def nome_do_arquivo_data_identificacao_do_contrato
|
207
|
+
"[EPG_#{matricula_do_contrato}_#{data_de_admissao.delete('-')}]"
|
208
|
+
end
|
209
|
+
|
210
|
+
def matricula_do_contrato
|
211
|
+
contrato.matricula
|
212
|
+
end
|
213
|
+
|
214
|
+
def data_de_admissao
|
215
|
+
contrato.data_de_admissao
|
216
|
+
end
|
217
|
+
|
218
|
+
def categoria_do_trabalhador
|
219
|
+
contrato.categoria_do_trabalhador
|
220
|
+
end
|
221
|
+
|
222
|
+
def data_de_inicio_do_contrato_de_trabalho
|
223
|
+
data_de_admissao
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
class ContratoDeTrabalhoSemVinculo
|
228
|
+
include ContratoDeTrabalho
|
229
|
+
|
230
|
+
private
|
231
|
+
|
232
|
+
def nome_do_arquivo_data_identificacao_do_contrato
|
233
|
+
"[TSV_#{categoria_do_trabalhador}_#{data_de_inicio_do_contrato_de_trabalho_sem_vinculo.delete('-')}]"
|
234
|
+
end
|
235
|
+
|
236
|
+
def categoria_do_trabalhador
|
237
|
+
contrato.categoria_do_trabalhador
|
238
|
+
end
|
239
|
+
|
240
|
+
def data_de_inicio_do_contrato_de_trabalho_sem_vinculo
|
241
|
+
contrato.data_de_inicio
|
242
|
+
end
|
243
|
+
|
244
|
+
def matricula_do_contrato
|
245
|
+
nil
|
246
|
+
end
|
247
|
+
|
248
|
+
def data_de_inicio_do_contrato_de_trabalho
|
249
|
+
data_de_inicio_do_contrato_de_trabalho_sem_vinculo
|
250
|
+
end
|
153
251
|
end
|
154
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Layout/LineLength
|
155
252
|
end
|
156
253
|
end
|
157
254
|
end
|