Historico_500. Migração Ficha Financeira

Origem Protheus:

  • SRD010 - Ficha Financeira
  • SRV010 - Eventos e Rubricas


 Zerando dados anteiores a 2022 - Cuidado, só pode ser executado anterior ao fechamento Jan/2022
--PERIODOS REMUNERATORIOS até 2021
delete from gfp_remunerationperiod where id in (
select gfp_remunerationperiod.id
from gfp_remunerationperiod
inner join gfp_periodo on gfp_periodo.id = gfp_remunerationperiod.period_id
where gfp_periodo.ano <= 2021
);

--gfp_loadedentryhistory até 2021
delete from gfp_loadedentryhistory where id in (
select gfp_loadedentryhistory.id
from gfp_loadedentryhistory
inner join gfp_folhaevento on entry_id = gfp_folhaevento.id
inner join gfp_folha on gfp_folhaevento.folha_id = gfp_folha.id
inner join gfp_periodo on gfp_periodo.id = gfp_folha.periodo_id
where gfp_periodo.ano <= 2021
);

--gfp_loadedentryhistory até 2021 - segundo campo
delete from gfp_loadedentryhistory where id in (
select gfp_loadedentryhistory.id
from gfp_loadedentryhistory
inner join gfp_folha on gfp_loadedentryhistory.payroll_id = gfp_folha.id
inner join gfp_periodo on gfp_periodo.id = gfp_folha.periodo_id
where gfp_periodo.ano <= 2021
);
--remove vinculo do folha evento com eventos até 2021 - somente ser executado antes do fechamento da primeira folha de jan/2022
update gfp_folhaevento set copia_de_id = null, paycheck_difference_id = null;

--remove folha mensagem até 2021
delete from gfp_folhamensagem where id in (
select gfp_folhamensagem.id
from gfp_folhamensagem
inner join gfp_folha on gfp_folhamensagem.folha_id = gfp_folha.id
inner join gfp_periodo on gfp_periodo.id = gfp_folha.periodo_id
where gfp_periodo.ano <= 2021
);
--remove remove diferença item até 2021
delete from gfp_paycheckdifferenceitem where id in (
select distinct gfp_paycheckdifferenceitem.id
from gfp_paycheckdifference
inner join gfp_paycheckdifferenceitem on gfp_paycheckdifference.id = gfp_paycheckdifferenceitem.difference_id
where reference_year <= 2021 );

--remove remove diferença até 2021
delete from gfp_paycheckdifference where id in (
select distinct gfp_paycheckdifference.id
from gfp_paycheckdifference
where reference_year <= 2021 );

--remove remove folha evento até 2021
delete from gfp_folhaevento where id in (
select gfp_folhaevento.id
from gfp_folhaevento
inner join gfp_folha on gfp_folhaevento.folha_id = gfp_folha.id
inner join gfp_periodo on gfp_periodo.id = gfp_folha.periodo_id
where gfp_periodo.ano <= 2021
);

--remove CONTRACHEQUE até 2021
delete from gfp_contracheque where id in (
select gfp_contracheque.id
from gfp_contracheque
inner join gfp_folha on gfp_contracheque.folha_id = gfp_folha.id
inner join gfp_periodo on gfp_periodo.id = gfp_folha.periodo_id
where gfp_periodo.ano <= 2021
);

--remove vinculo com folha anterior - só pode ser executado antes do fechamento de jan/2022
update gfp_folha set folha_anterior_id = null;;

--remove gfp_overviewreport até 2021
delete from gfp_overviewreport where id in (
select gfp_overviewreport.id
from gfp_overviewreport
inner join gfp_folha on gfp_overviewreport.payroll_id = gfp_folha.id
inner join gfp_periodo on gfp_periodo.id = gfp_folha.periodo_id
)
;

--delete folha anteriores até 2021
delete from gfp_folha where id in (
select gfp_folha.id
from gfp_folha
inner join gfp_periodo on gfp_periodo.id = gfp_folha.periodo_id
where gfp_periodo.ano <= 2021
);

--delete periodos até 2021
delete from gfp_periodo where ano <= 2021;

Destino Athenas:

Tabela AthenasAnotaçõesAção
gfp_periodo

Periodos da folha

  • Corresponde ao periodos da folha, basicamente mês e ano
  • Origem está na tabela RCH010 do Protheus
  • Pendente - Verificar se é possível buscar também o salário minimo, salario teto_membros e salario_teto_adm

Para cada registro:

select rch_per, rch_ano, rch_mes, rch_dtpago, rch_dtcort, rch_dtfech from RCH010 where d_e_l_e_t_ = ' ' and rch_ano <= 2021 order by 1;

Criar um registro na tabela gfp_periodo:



idultimo +1
mes
rch_mes
ano
rch_ano
auxilio_alimentacao*0
auxilio_creche *
0
salario_minimo *
0
salario_familia *
0
salario_teto_adm *
0
salario_teto_membros *
0

* Será verificado com Folha se é possível preenchimento desses campos para o historico, mas por enquanto é zero

gfp_evento

Verbas/Rubricas

tipo = Desconto ou Provemento
order = 0 padrão
numero = rv_cod
lancamento = Temporario e Fixo
tipo_calculo = type_of_calc #quantidade, percentual, mista, livre, ...
carater = remuneratorio, auxilio, indenizatorio, ...
nature_of_event_id = natureza do esocial = padrão nulll
active = false-- para data migrados, trazer igual do protheus e deixar nulo genre e specie e active = false

Para cada registro em:

select rv_cod, rv_desc, rv_descdet, rv_tipocod, rv_tipo  from srv010 where d_e_l_E_T_ = ' ';
gerar um registro em gfp_evento:


idultimo +1
created_by_id1
modified_by_id1
created_atData hora migração
modified_atData hora migração
order0
numero
rv_cod
genre_event_idnull
specie_event_idnull
lancamentoF
tipo
rv_tipocod in ('1','3') então 'P'

senão 'D'

tipo_calculo4 - LIVRE
caraterNULL
nature_of_event_idNULL
titulo
rv_descdet
publicacao_idNULL
base_de_calculo0 - SEM BASE
previous_event_idNULL
description"MIGRADO DO PROTHEUS"
activefalse
consignment_managerfalse
evaluate_differencefalse
separate_for_competenciesfalse
separate_for_info_eventfalse
config_value''
consignatario_idNULL
aplica_consignadofalse
aplica_consignavelfalse
config_transparenciaNULL
nature_event_idNULL
gfp_folhatipo

Tipo de folha

-- Análise se é possível tratar somente em um contracheque
-- Criar um tipo novo normal somente para migração
-- número = usar o codigo da folha Protheus
-- ativo = false na migração

  • Não será migrado do Protheus
  • No Athenas haverá somente 1 tipo folha - select * from gfp_folhatipo where id = 1;

Para cada registro em:

SELECT RY_CALCULO, RY_DESC FROM SRY010 WHERE D_E_L_E_T_ = ' ';
gerar um registro em gfp_folhatipo:
idultimo +1
titulo
"(PROTHEUS)" + RY_DESC
ativo
false
carater
1
principal
false
modelo_id
null
processo
''
publicacao_processo_id
null
margem
0
abreviatura

numero
RY_CALCULO
gfp_folha

Somente descrição da Folha por Periodo

-- fechado = true
-- processado = false # indica que o controle interno avaliou o processamento e deu ok
-- ci = controle interno = false
-- status = 3 (1 = está com a folha, usuario não ve e está, 2 = processado pela folha e usuario ve; 3 = fechado; 4 = processamento )
-- dt_fechamento
-- dt_processamento = dt_fechamento
-- dt_pagamento
-- unicode_cache
-- paycheck_locked = bloquear todos os contracheques para usuario não ver
-- apply_models = false #padrão
-- complement = indica numeraçaõ da folha complementar, 1,2,3,4, padrão 0

  • Migrar a partir da tabela RCH010 do Protheus

Para cada registro:

select rch_per, rch_ano, rch_mes, rch_dtpago, rch_dtcort, rch_dtfech, RY_CALCULO, RY_DESC
from RCH010
inner join SRY010 ON RY_CALCULO = RCH010.RCH_ROTEIR AND SRY010.D_E_L_E_t_ = ' '
where RCH010.d_e_l_e_t_ = ' ' and rch_ano <= 2021 order by 1;
Criar um registro na tabela gfp_folha:

gfp_folha


idultimo +1
created_by_id
1
modified_by_id
1
created_at
Data hora migração
modified_at
Data hora migração
periodo_id
select * from gfp_periodo where ano = RCH_ANO and mes = RCH_MES
tipo_folha_id
select id from gfp_folhatipo where numero = RY_CALCULO;
fechado
true
processado
true
ci
false
dt_fechamento
rch_dtfech
dt_processado
rch_dtfech
dt_pagamento
rch_dtpago
status
4 - PROCESSADO
dt_criacao
Data hora migração
unicode_cache
RCH_MES + "/" + RCH_ANO +  " - " + RY_DESC
Exemplo: 04/2021 - NORMAL
paycheck_locked

complement

apply_models
false
available_pvf
false
gfp_contracheque 

Servidor vs Folha


situacao_funcional = null
situacao_previdenciaria = null
cargo_efetivo_id = proviento efetivo na competencia do calculo
total_bruto = soma todos os provimentos
total_liquido = liquido = tenta calcular durante a migração
status = Migrar como Fechado
classification = classificação do servidor (analisar como calcular)
select * from gfp_folhaevento; --valores do contra cheque, vinculado ao contra cheque


Para cada registro:


select TO_NUMBER(RD_MAT) MATRICULA,
RA_CATFUNC,
SUBSTR(RD_DATARQ, 1, 4) ANO,
SUBSTR(RD_DATARQ, 5, 2) MES,
RD_ROTEIR,
SUM(
CASE RV_TIPOCOD
WHEN '1' THEN RD_VALOR
ELSE 0
END
) TOTAL_BRUTO,
SUM(
CASE RV_TIPOCOD
WHEN '1' THEN RD_VALOR
WHEN '2' THEN -rd_valor
ELSE 0
END
) TOTAL_LIQUIDO

from srd010
INNER JOIN SRA010 ON RA_MAT = RD_MAT AND SRA010.D_E_L_E_T_ = ' '
INNER JOIN SRV010 ON RV_COD = RD_PD AND SRV010.D_E_L_E_T_ = ' '
where srd010.d_e_l_e_t_ = ' '
GROUP BY RD_MAT, RD_DATARQ, RD_ROTEIR, RA_CATFUNC;

Criar um registro na tabela gfp_contracheque:

idultimo + 1
created_by_iddata hora migração
modified_by_iddata hora migração
created_atdata hora migração
modified_atdata hora migração
servidor_id
select id from rh_servidor where matricula = MATRICULA

folha_id
select gfp_folha.id from gfp_folha
inner join gfp_periodo on gfp_folha.periodo_id = gfp_periodo.id
inner join gfp_folhatipo on gfp_folha.tipo_folha_id = gfp_folhatipo.id
where
gfp_folhatipo.numero = RD_ROTEIR and
gfp_periodo.ano = ANO and
gfp_periodo.mes = MES

pensioner_idnull-- servidor com pensionista tem dois contracheque
situacao_funcionalnull
situacao_previdenciarianull
cargo_efetivo_idnull
referencia_efetivo_cache''
referencia_salarial_efetivo_idNULL
referencia_salario_efetivo_idNULL
cargo_comissao_idNULL
referencia_comissao_cache''
referencia_salarial_comissao_idNULL
referencia_salario_comissao_idNULL
cargo_eletivo_idNULL
referencia_eletivo_cache''
referencia_salarial_eletivo_idNULL
referencia_salario_eletivo_idNULL
data_admissaoNULL
lotacao_idNULL
dependentes_ir0
dependentes_sf0
margem_consignada_total0
margem_consignada_livre0
base_previdenciaria0
base_ir0
dado_bancario_pessoa_idNULL
total_bruto
TOTAL_BRUTO

total_liquido
TOTAL_LIQUIDO

alteradofalse
status3 - PAGAMENTO EFETUADO
blockedtrue
employee_source

RA_CATFUNC IN (0,1,2,3,6,7,8) ENTÃO 1

RA_CATFUNC IN (5) ENTAO 2

RA_CATFUNC IN (4) ENTAO 3

RA_CATFUNC IN (E) ENTAO 4

RA_CATFUNC IN (9) ENTAO 6

ELSE 5


employee_pays_pension0
classification

RA_CATFUNC IN (2,3) ENTÃO 1

RA_CATFUNC IN (0,1) ENTAO 2

RA_CATFUNC IN (6) ENTAO 3

RA_CATFUNC IN (E) ENTAO 5

RA_CATFUNC IN (9) ENTAO 6

ELSE 8

error_validations0
changes0
gfp_folhaevento

status NC = não contabilizado - somente pessoal da folha pode ver - trazer verbas de base como NC
CT = Contabilizado


repetir os valores em correct_*
value = valor principal da verba (novo campo) negativo se desconto
valor = valor principal da verba (legado) sempre positivo
valor_Base = null
base_providencia = null
pct = percentual
parcela = numero da parcela
qtd = se for de quantidade
prazo = maximo de parcelos = null
qnt_max = dias maximo no mes ou maximo meses para 13
qnt = dias de referencia da compentencia de pagamento
lancamento = Fixo e Temporario

Para cada registro:

select srd010.r_e_c_n_o_, TO_NUMBER(RD_MAT) MATRICULA,
SUBSTR(RD_DATARQ, 1, 4) ANO,
SUBSTR(RD_DATARQ, 5, 2) MES,
RD_ROTEIR,
RD_HORAS,
RD_VALOR
from srd010
INNER JOIN SRA010 ON RA_MAT = RD_MAT AND SRA010.D_E_L_E_T_ = ' '
INNER JOIN SRV010 ON RV_COD = RD_PD AND SRV010.D_E_L_E_T_ = ' '
where srd010.d_e_l_e_t_ = ' ';
Criar um registro na tabela gfp_contracheque:


idULTIMO + 1
created_by_idDATA HORA MIGRACAO
modified_by_idDATA HORA MIGRACAO
created_atDATA HORA MIGRACAO
modified_atDATA HORA MIGRACAO
contracheque_id
select gfp_contracheque.ID from gfp_contracheque
INNER JOIN gfp_folha ON gfp_contracheque.folha_id = gfp_folha.id
INNER JOIN gfp_periodo ON gfp_folha.periodo_id = gfp_periodo.id
INNER JOIN GFP_FOLHATIPO ON gfp_folha.tipo_folha_id = gfp_folhatipo.id
inner join rh_servidor on gfp_contracheque.servidor_id = rh_servidor.id
where
rh_servidor.matricula = MATRICULA AND
gfp_folhatipo.numero = RD_ROTEIR and
gfp_periodo.ano = ANO and
gfp_periodo.mes = MES
servidor_id
select id from rh_servidor where matricula = MATRICULA
folha_id
select gfp_folha.ID from gfp_contracheque
INNER JOIN gfp_folha ON gfp_contracheque.folha_id = gfp_folha.id
INNER JOIN gfp_periodo ON gfp_folha.periodo_id = gfp_periodo.id
INNER JOIN GFP_FOLHATIPO ON gfp_folha.tipo_folha_id = gfp_folhatipo.id
inner join rh_servidor on gfp_contracheque.servidor_id = rh_servidor.id
where
rh_servidor.matricula = MATRICULA AND
gfp_folhatipo.numero = RD_ROTEIR and
gfp_periodo.ano = ANO and
gfp_periodo.mes = MES
evento_id
select gfp_evento.ID from gfp_evento
where numero = RD_PD
lancamento
'F'
qntRD_HORAS
qnt_maxNULL
parcela0
installments_paid0 --não encontrado documentação da função desse campo
prazo0
pct0
valorRD_VALOR
correct_valorRD_VALOR
diff_valor_aprovisionado0
valor_baseRD_VALOR
patronal0
correct_patronal0
diff_patronal_aprovisionado0
info'MIGRADO DO PROTHEUS(' + SRD010.R_E_C_N_O_ + ')'
base_previdencia0
correct_base_previdencia0
dt_criadoDATA HORA MIGRAÇÃO
dt_confirma_folhaNULL
dt_confirma_controleNULL
confirma_folha_idNULL
confirma_controle_idNULL
copia_de_idNULL
valueRD_VALOR
employer_contribution0
rra_employee_idNULL
correct_valueRD_VALOR
correct_employer_contribution0
correct_contribution_base0
correct_qntRD_HORAS
correct_qnt_max0
correct_pct0
correct_base_value0
diff_value_provisioned0
diff_employer_contribution_provisioned0
paycheck_difference_idNULL
reference_yearANO
reference_monthMES
statusNC - NÃO CONTABILIZADO, SOMENTE PESSOAL DA FOLHA PODERÁ VISUALIZAR
json_calc_vars"{}"
automatedfalse
entry_pension_idNULL
calculation_idNULL
cid0
count_as_previous_exercisefalse
gfp_genreeventnão preencher para dados legados
gfp_specieevent-não preencher para dados legados



Observações:

  • Deixar genero e especie vazio na verba para não influenciar calculos da folha
  • Confirmar com a folha se é necessário migrar verbas informativas
  • Athenas tem o SICAP - padrão XML
    • O sicap tem calculos que podem ser reaproveitados
      • - salario
      • - Previdência


Related content

Historico_Gestor de Férias e Abono
Historico_Gestor de Férias e Abono
More like this
Historico_010. Migrações Protheus -> Athenas
Historico_010. Migrações Protheus -> Athenas
More like this
Historico_Tabelas Athenas de Folha de Pagamento
Historico_Tabelas Athenas de Folha de Pagamento
More like this
Historico_Relatório de Conferência de Descontos
Historico_Relatório de Conferência de Descontos
More like this