Árvore de páginas


01. DADOS GERAIS

Produto:

TOTVS RH

Linha de Produto:

Linha Protheus

Segmento:

RH

Módulo:SIGAGPE
Função:PTSREPOBJ
Ticket:

10204462

Requisito/Story/Issue (informe o requisito relacionado) :

DRHPAG-41543

Pacote:

12.1.27:https://r.totvs.io/p/1001646 ; 12.1.25:https://r.totvs.io/p/1001645 ; 12.1.23:https://r.totvs.io/p/1001644 ; 12.1.17:https://r.totvs.io/p/1001643 ;


02. SITUAÇÃO/REQUISITO

Há situação em que dois funcionários diferentes (CPFs distintos) estão com o campo RA_CODUNIC por um motivo não identificado. Dessa forma, ao efetuar a integração do funcionário no Suricato, o colaborador fica amarrado ao último funcionário integrado.

03. SOLUÇÃO

Como a chave do campo RA_CODUNIC também é utilizada no eSocial para identificar a matrícula do trabalhador, não é possível realizar a alteração da chave no cadastro do funcionário pois isso ocasionaria inúmeras inconsistências no eSocial, ou ainda, haveria a necessidade de reabrir e reenviar a movimentação do funcionário de vários períodos.

Dessa forma, houve a criação o ponto de entrada PTSACODU que permitirá alterar a chave de identificação da pessoa física enviada na integração com o Suricato, sem alterar o envio da matrícula ao eSocial.

Segue abaixo um exemplo de implementação do ponto de entrada que irá verificar se a chave de identificação (RA_CODUNIC) do funcionário está duplicada, isto é, se é utilizada por CPFs diferentes:

#INCLUDE "PROTHEUS.CH"
User Function PTSACODU()

Local cChaveExt     := SRA->RA_CODUNIC   
Local cQueryCont    := ""
Local cSRAAliasC 	:= GetNextAlias()
Local nContCPF      := 0

//Objetivo da query abaixo é verificar se existe mais de um CPF com o mesmo RA_CODUNIC do funcionário posicionado
cQueryCont := "SELECT RA_CIC, COUNT(*) as TOTAL "
cQueryCont += "FROM " + RetSqlName('SRA') + " SRA "
cQueryCont += "WHERE RA_CODUNIC = '" + SRA->RA_CODUNIC + "' "
cQueryCont += "AND SRA.D_E_L_E_T_ <> '*' "
cQueryCont += "GROUP BY SRA.RA_CIC"
cQueryCont := ChangeQuery(cQueryCont)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQueryCont),	cSRAAliasC,.T.,.T.)

//Faz a contagem de CPFs do A_CODUNIC do funcionário posicionado
While (cSRAAliasC)->( !EoF() )
    nContCPF++
    (cSRAAliasC)->( dbSkip() )
End

(cSRAAliasC)->( dbCloseArea() )

//Se houver mais de um CPF, altera a chave de identificação do colaborador para o número do CPF
If nContCPF > 1
    cChaveExt := SRA->RA_CIC
EndIf

Return cChaveExt

Importante

No exemplo acima do ponto de entrada, na situação de haver duplicidade da chave foi enviado o número do CPF do funcionário como chave de identificação ao Suricato, mas cada empresa deve escolher a chave que julgar melhor para o envio, alterando o ponto de entrada conforme necessidade.

Observar que o ponto de entrada apenas é executado quando ocorre integração do funcionário com o Suricato, ou seja, apenas a implementação do ponto de entrada não irá corrigir as informações no Suricato. Para a correção do vínculo do Colaborador com a Pessoa Física, será necessário "forçar" alguma alteração no cadastro dos funcionários que estão com a chave duplicada (por exemplo: o nome, que depois pode ser retornado ao seu valor original) para que seja iniciado a integração com o Suricato.

Observar que o ponto de entrada só deve ser utilizado se houver a situação de duplicidade da chave.


04. DEMAIS INFORMAÇÕES

Não há.


05. ASSUNTOS RELACIONADOS

Não há.