01. DADOS GERAIS
Produto: | TOTVS RH |
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | RH |
Módulo: | SIGAGPE |
Função: | GPEA430 GPEA944A GPEA944B GPEA944C GPEM939 GPEM939A GPEM939B GPEM939C GPTABBRA |
Ticket: | |
Requisito/Story/Issue (informe o requisito relacionado) : | DRHCALCPRT-3734 DRHCALCPRT-4009 DRHCALCPRT-4164 DRHCALCPRT-3736 DRHCALCPRT-3733 DRHCALCPRT-3735 DRHCALCPRT-3737 DRHCALCPRT-4380 DRHCALCPRT-4375 DRHCALCPRT-4452 DRHCALCPRT-4504 DRHCALCPRT-4518 DRHCALCPRT-4374 DRHCALCPRT-4376 DRHCALCPRT-4377 DRHCALCPRT-4378 DRHCALCPRT-4400 DRHCALCPRT-4381 DRHCALCPRT-4401 DRHCALCPRT-5010 DRHCALCPRT-6427 |
02. SITUAÇÃO/REQUISITO
Criar uma rotina que fará a integração dos cadastros do Protheus com o P&M (Performance & Metas) e uma rotina que possibilite consultar as informações dos lotes de integrações com o P&M (Performance & Metas).
03. SOLUÇÃO
Efetuado o desenvolvimento da integração com o P&M (Performance & Metas).
Observação
A melhoria depende da aplicação da atualização liberada no pacote de expedição do módulo RH a partir de 15/07/2022 e da execução do UPDDISTR com o dicionário diferencial para os releases iguais ou superiores a versão 12.1.27.
Clique aqui para exibir ou esconder o conteúdo.
Foi efetuado a criação de índices no dicionário SIX, conforme estrutura abaixo:
INDICE | ORDEM | CHAVE | SHOWPES |
---|---|---|---|
REF | 1 | REF_FILIAL+REF_TIPO+REF_STATUS+DTOS(REF_DATINT)+REF_HORINT | S |
REF | 2 | REF_FILIAL+REF_PRCID | N |
REF | 3 | REF_FILIAL+DTOS(REF_DATINT)+REF_HORINT | S |
REN | 1 | REN_FILIAL+REN_TIPO+REN_CODIGO | S |
RET | 1 | RET_FILIAL+RET_TIPO+RET_CODIGO | S |
RET | 2 | RET_FILIAL+RET_TIPO+RET_FILCAD+RET_CODCAD | S |
Foi efetuado a criação de tabelas no dicionário SX2, conforme estrutura abaixo:
X2_CHAVE | X2_NOME | X2_MODO | X2_MODOUN | X2_MODOEMP |
---|---|---|---|---|
REF | Lote de integração P&M | C | C | C |
REN | Cadastros P&M | C | C | C |
RET | Vínculos Cadastros P&M | C | C | C |
Observação
O modo de acesso das tabelas REF, REN e RET devem ser obrigatoriamente compartilhado.
Foi efetuado a criação de campos no dicionário SX3 conforme estrutura abaixo:
X3_ARQUIVO | X3_ORDEM | X3_CAMPO | X3_TIPO | X3_TAMANHO | X3_TITULO | X3_DESCRIC | HELP |
---|---|---|---|---|---|---|---|
RCM | ZZ | RCM_TIPOPM | C | 1 | Tipo P&M | Tipo P&M | Informe o tipo de afastamento para o P&M |
REF | 01 | REF_FILIAL | C | 2 | Filial | Filial | Filial do lote |
REF | 02 | REF_PRCID | C | 100 | Process ID | Process ID | Process ID do lote retornado pelo P&M |
REF | 03 | REF_TIPO | C | 1 | Tipo API | Tipo API | Tipo da API |
REF | 04 | REF_DATINT | D | 8 | Data Integr. | Data Integr. | Data da integração |
REF | 05 | REF_HORINT | C | 8 | Hora Integr. | Hora Integr. | Hora da integração |
REF | 06 | REF_STATUS | C | 1 | Status | Status Integração | Status da integração |
REF | 07 | REF_LOTE | M | 10 | Lote | Lote Integração | JSON do lote integrado |
REF | 08 | REF_RETORN | M | 10 | Retorno | Retorno P&M | Retorno do lote pelo P&M |
REF | 09 | REF_USER | C | 6 | Usuário | Usuário | Usuário responsável pela geração do lote |
REF | 10 | REF_OK | C | 2 | Selecionado? | Selecionado? | Evento selecionado para consulta? |
REN | 01 | REN_FILIAL | C | 2 | Filial | Filial | Filial do registro |
REN | 02 | REN_TIPO | C | 1 | Tipo | Tipo | Tipo do cadastro para o P&M |
REN | 03 | REN_CODIGO | C | 20 | Código | Código | Código do cadastro no P&M |
REN | 04 | REN_DESC | C | 100 | Descrição | Descrição | Descrição do cadastro no P&M |
RET | 01 | RET_FILIAL | C | 2 | Filial | Filial | Filial do registro |
RET | 02 | RET_TIPO | C | 1 | Tipo | Tipo | Tipo do cadastro para o P&M |
RET | 03 | RET_CODIGO | C | 20 | Código | Código | Código do cadastro no P&M |
RET | 04 | RET_FILCAD | C | 2 | Fil. Cad | Filial Cadastro | Filial do cadastro |
RET | 05 | RET_CODCAD | C | 20 | Cód. Cadast. | Código Cadastro | Código do cadastro |
Foi efetuado a criação de tabela genérica no dicionário SX5, conforme estrutura abaixo:
X5_TABELA | X5_CHAVE | X5_DESCRI |
---|---|---|
1C | 1 | Empregado e Trabalhador Temporário |
1C | 2 | Avulso |
1C | 3 | Agente Público |
1C | 4 | Cessão |
1C | 7 | Contribuinte Individual |
1C | 9 | Bolsista |
Foi efetuado a criação de parâmetros no dicionário SX6, conforme estrutura abaixo:
X6_VAR | X6_TIPO | X6_DESCRIC | X6_DESC1 | Exemplo de preenchimento |
---|---|---|---|---|
MV_APIPEM0 | C | URL para geração do token de acesso do ambiente | de integração com o Performance & Metas | https://{TENANT}.rac.{ENVIRONMENT}.totvs.app/totvs.rac/connect/token Exemplo: https://admin.rac.totvs.app/totvs.rac/connect/token |
MV_APIPEM1 | C | URL base do ambiente de integração com o | Performance & Metas | https://{NOME_EMPRESA}.performance.totvs.app/integration-general/ Exemplo: https://empresateste.performance.dev.totvs.app/integration-general/ |
MV_APIPEM2 | C | ClientId do ambiente de integração com o | Performance & Metas | |
MV_APIPEM3 | C | SecretId do ambiente de integração com o | Performance & Metas |
Observação
Os parâmetros MV_APIPEM0 e MV_APIPEM1 precisam ser configurados conforme o formato de exemplo da tabela acima.
As informações a serem preenchidas conforme o exemplo acima nas variavéis {TENANT}, {ENVIRONMENT} e {NOME_EMPRESA} devem ser solicitada ao responsável do contrato do P&M (Perfomance e Metas)
Foi efetuado a criação de relacionamentos no dicionário SX9, conforme estrutura abaixo:
X9_DOM | X9_IDENT | X9_CDOM | X9_EXPDOM | X9_EXPCDOM | X9_LIGDOM | X9_LIGCDOM | X9_CONDSQL | X9_USEFIL |
---|---|---|---|---|---|---|---|---|
REN | 001 | RET | REN_TIPO+REN_CODIGO | RET_TIPO+RET_CODIGO | 1 | N | S | |
SQ0 | 001 | RET | Q0_FILIAL+Q0_GRUPO | RET_FILCAD+RET_CODCAD | 1 | N | #RET_TIPO ='1' | N |
SQ3 | 001 | RET | Q3_FILIAL+Q3_CARGO | RET_FILCAD+RET_CODCAD | 1 | N | #RET_TIPO ='2' | N |
SQB | 001 | RET | QB_FILIAL+QB_DEPTO | RET_FILCAD+RET_CODCAD | 1 | N | #RET_TIPO ='3' | N |
Foi efetuado a criação de consultas padrão no dicionário SXB, conforme estrutura abaixo:
XB_ALIAS | XB_TIPO | XB_SEQ | XB_COLUNA | XB_DESCRI | XB_CONTEM |
---|---|---|---|---|---|
RCMTPA | 1 | 01 | RE | Tipo afastamento | |
RCMTPA | 2 | 01 | 01 | GP430TpA(.T.) | |
RCMTPA | 5 | 01 | VAR_IXB | ||
S04328 | 1 | 01 | RE | Tipo desligamento | |
S04328 | 2 | 01 | 01 | GPS04328(.T.) | |
S04328 | 5 | 01 | VAR_IXB |
Considerações importantes:
- A integração com o P&M é do tipo assíncrona, isto é, o P&M fará o processamento das informações enviadas conforme a fila de processamento.
- A integração somente envia informações da tabela do grupo de empresas em que o usuário está logado.
- O P&M exige que algumas informações sejam obrigatoriamente enviadas. Por esse motivo, para ser possível realizar a integração com o P&M, é necessário que o cadastro grupos de cargo tenha sido realizado através da rotina TRMA030, uma vez que essa informação é obrigatória para o P&M. Algumas outras informações também serão obrigatórias:
- Um cargo somente será enviado se for preenchido o grupo no campo Q3_GRUPO e que esse grupo seja válido na tabela SQ0;
- Um funcionário somente será enviado se for preenchido o CPF no campo RA_CIC, e-mail no campo RA_EMAIL, se houver departamento preenchido no campo RA_DEPTO e que esse departamento seja válido na tabela SQB, se houver cargo preenchido no campo RA_CARGO e que esse cargo seja válido na tabela SQ3 e que o cargo tenha um grupo preenchido no campo Q3_GRUPO e que esse grupo seja válido na tabela SQ0 e que o funcionário tenha um relacionamento com participante na tabela RDZ.
- O P&M não permite que determinado cadastro tenha a mesma descrição de outro enviado anteriormente, mesmo possuindo códigos diferentes. Dessa forma, se os cadastros de grupos de cargo, cargos ou departamentos serem de modo exclusivo, será necessário realizar um cadastro de De x Para através das rotinas GPEA944A, GPEA944B ou GPEA944C.
- Apenas o envio de funcionários irá validar a restrição de acesso por filiais.
- Atente-se que o sistema não fará controle se determinado registro foi ou não integrado com sucesso ao P&M. Havendo necessidade de reenvio de informações para o P&M por qualquer motivo, será efetuado envio dos registros de acordo com os filtros criados pelo usuário na rotina de integração, sendo possível reenviar todos os registros novamente ou apenas um ou alguns registros em específico.
- Em caso do processamento das informações pelo P&M retornar erros de validação, atente-se que as mensagens apresentadas na integração são as retornadas pelo P&M. Para mais detalhes sobre os motivos de apresentação dos erros, deve-se consultar a documentação do P&M no link: https://tdn.totvs.com/pages/viewpage.action?pageId=676047532.
- As rotinas mencionadas devem ser incluídas manualmente no menu.
Observação técnica
As informações enviadas para o P&M são geradas conforme o detalhamento abaixo:
Será enviado informações a partir da tabela SM0, conforme filiais selecionadas no botão "Filtro de Filiais".
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+M0_CODFIL,
"name": M0_FILIAL.
Será enviado informações a partir da tabela SQ0, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Grupos de cargo".
As seguintes informações serão enviadas:
- Se modo de acesso compartilhado, será enviado os dados abaixo:
"integrationId": M0_CODIGO+Q0_FILIAL+Q0_GRUPO,
"name": Q0_DESCRI.
- Se modo de acesso exclusivo, será enviado os dados abaixo (conforme cadastro do De X Para):
"integrationId": M0_CODIGO+REN_FILIAL+REN_CODIGO,
"name": REN_DESC.
Será enviado informações a partir da tabela SQ3, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Cargos".
As seguintes informações serão enviadas:
- Se modo de acesso compartilhado, será enviado os dados abaixo:
"integrationId": M0_CODIGO+Q3_FILIAL+Q3_CARGO,
"name": Q3_DESCSUM,
"positionGroupIntegrationId": M0_CODIGO+Q0_FILIAL+Q0_GRUPO.
- Se modo de acesso exclusivo, será enviado os dados abaixo (conforme cadastro do De X Para):
"integrationId": M0_CODIGO+REN_FILIAL+REN_CODIGO,
"name": REN_DESC.
Observação:
No Protheus não é tratado Níveis de Cargo, desta forma, não será possível realizar o controle desta informação.
Será enviado informações a partir da tabela SQB, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Departamentos".
As seguintes informações serão enviadas:
- Se modo de acesso compartilhado, será enviado os dados abaixo:
"integrationId": M0_CODIGO+QB_FILIAL+QB_DEPTO,
"name": QB_DESCRIC.
- Se modo de acesso exclusivo, será enviado os dados abaixo (conforme cadastro do De X Para):
"integrationId": M0_CODIGO+REN_FILIAL+REN_CODIGO,
"name": REN_DESC.
Será enviado informações a partir da tabela SX5, da tabela genérica 1C.
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+X5_FILIAL+X5_CHAVE,
"name": X5_DESCRI;
Será enviado informações a partir da tabela SRA, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Funcionários".
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+RDZ_CODRD0,
"name": RA_NOMECMP ou RA_NOME,
"socialName": RA_NSOCIAL,
"email": RA_EMAIL,
"admissionDate", RA_ADMISSA,
"lastRaiseDate": R3_DATA,
"birthDate": RA_NASC,
"demissionDate": RA_DEMISSA,
"experienceEndDate": RA_VCTEXP2 ou RA_VCTOEXP,
"dismissalType": de acordo com o campo "Tipo P&M" da tabela S043;
"hiringTypeIntegrationId": de acordo com o campo "Agrupador P&M" da tabela S049,
"departmentIntegrationId": M0_CODIGO+QB_FILIAL+QB_DEPTO, se tabela SQB em modo compartilhado, ou M0_CODIGO+REN_FILIAL+REN_CODIGO, se tabela SQB em modo exclusivo conforme cadastro do De x Para,
"positionIntegrationId": M0_CODIGO+Q3_FILIAL+Q3_CARGO, se tabela SQ3 em modo compartilhado, ou M0_CODIGO+REN_FILIAL+REN_CODIGO, se tabela SQ3 em modo exclusivo conforme cadastro do De x Para,
"facilityIntegrationId": M0_CODIGO+RA_FILIAL.
Será enviado informações a partir da tabela SRE, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Movimentação de filiais".
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+RE_FILIALP+RE_MATP+RE_DATA,
"personIntegrationId": M0_CODIGO+RDZ_CODRD0,
"facilityIntegrationId": M0_CODIGO+RE_FILIALP,
"changeDate": RE_DATA.
Observação
O histórico de movimentação de filiais será enviado ao P&M quando houver transferência de grupo de empresas e/ou de filial.
Será enviado informações a partir da tabela SR7, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Movimentação de grupos de cargo".
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+R7_FILIAL+R7_MAT+R7_DATA+R7_SEQ,
"personIntegrationId": M0_CODIGO+RDZ_CODRD0,
"positionGroupIntegrationId": M0_CODIGO+Q0_FILIAL+Q3_GRUPO, se tabela SQ3 em modo compartilhado, ou M0_CODIGO+REN_FILIAL+REN_CODIGO, se tabela SQ3 em modo exclusivo conforme cadastro do De x Para,
"changeDate": R7_DATA.
Observação
O histórico de movimentação de grupo de cargo será enviado ao P&M quando houver alteração de cargo e o novo cargo estiver vinculado a um grupo de cargo diferente do anterior.
Será enviado informações a partir da tabela SR7, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Movimentação de cargos".
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+R7_FILIAL+R7_MAT+R7_DATA+R7_SEQ,
"personIntegrationId": M0_CODIGO+RDZ_CODRD0,
"positionIntegrationId": M0_CODIGO+Q3_FILIAL+R7_CARGO, se tabela SQ3 em modo compartilhado, ou M0_CODIGO+REN_FILIAL+REN_CODIGO, se tabela SQ3 em modo exclusivo conforme cadastro do De x Para,
"changeDate": R7_DATA.
Observação
O histórico de movimentação de cargos será enviado ao P&M quando houver alteração de cargo.
Será enviado informações a partir da tabela SRE, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Movimentação de departamentos".
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+RE_FILIALP+RE_MATP+RE_DATA,
"personIntegrationId": M0_CODIGO+RDZ_CODRD0,
"positionIntegrationId": M0_CODIGO+QB_FILIAL+RE_DEPTOP, se tabela SQB em modo compartilhado, ou M0_CODIGO+REN_FILIAL+REN_CODIGO, se tabela SQB em modo exclusivo conforme cadastro do De x Para,
"changeDate": RE_DATA.
Observação
O histórico de movimentação de departamentos será enviado ao P&M quando houver transferência de departamento.
Será enviado informações a partir da tabela SR8, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Afastamentos".
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+R8_FILIAL+R8_MAT+R8_DATAINI,
"personIntegrationId": M0_CODIGO+RDZ_CODRD0,
"type": RCM_TIPOPM,
"startDate": R8_DATAINI,
"endDate": RE_DATAFIM.
Será enviado informações a partir da tabela SRD, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Faltas" para as verbas dos IDs de cálculo 0054, 0055, 0203, 0242 ou 0243.
As seguintes informações serão enviadas:
"integrationId": M0_CODIGO+RD_FILIAL+RD_MAT+RD_DATARQ,
"personIntegrationId": M0_CODIGO+RDZ_CODRD0,
"year": RD_DATARQ,
"month": RD_DATARQ,
"daysNotWorked": RD_HORAS.
Observação
As verbas do histórico que estejam em horas serão convertidas para dias conforme a configuração do campo RA_HRSDIA.
A quantidade de faltas enviada ao P&M será a quantidade inteira. Por exemplo, se houver 5,5 dias de faltas, será integrado ao P&M 5 dias.
Será enviado informações a partir da tabela SRA, conforme filiais selecionadas no botão "Filtro de Filiais" e filtro realizado através do botão "Filtro de Funcionários".
As seguintes informações serão enviadas:
"personIntegrationId": M0_CODIGO+RDZ_CODRD0,
"managerIntegrationId": M0_CODIGO+RDZ_CODRD0.
Observação
A estrutura hierárquica possui a mesma configuração que é utilizada no Portal de Gestão de Capital Humano e no Meu RH, através da configuração de departamentos, postos e visão.
Para mais informações, consulte as documentações a seguir: https://tdn.totvs.com/x/LYx9Hg , https://tdn.totvs.com/x/dfryHQ e https://tdn.totvs.com/pages/releaseview.action?pageId=500300689.
As opções de integração irão consumir as seguintes APIs do P&M:
Opção | API P&M |
---|---|
Filiais | /api/v1/auxiliary-records/facilities |
Grupos de cargo | /api/v1/auxiliary-records/position-groups |
Cargos | /api/v1/auxiliary-records/positions |
Departamentos | /api/v1/auxiliary-records/departments |
Grupos de contrato | /api/v1/auxiliary-records/hiring-types |
Funcionários | /api/v2/persons |
Movimentação de filiais | /api/v1/facility-history |
Movimentação de grupos de cargo | /api/v1/position-group-history |
Movimentação de cargos | /api/v1/position-history |
Movimentação de departamentos | /api/v1/department-history |
Afastamentos | /api/v1/absences |
Faltas | /api/v1/days-not-worked |
Líder dos funcionários | /api/v1/persons/bind |
Após a geração e envio de um lote de registros para o P&M, será retornado para o Protheus um UUIID de identificação do lote de processamento e esse ID será salvo na tabela REF conforme exemplo abaixo:
Campo | Conteúdo |
---|---|
REF_FILIAL | Sempre em branco |
REF_PRCID | Process ID do lote retornado pelo P&M |
REF_TIPO | Tipo da API: 1=Filiais 2=Grupos de cargo 3=Cargos 4=Departamentos 5=Funcionários 6=Grupos de contrato 7=Movimentação de cargos 8=Movimentação de departamentos 9=Movimentação de filiais A=Movimentação de grupos de cargo B=Afastamentos C=Faltas D=Líder dos funcionários |
REF_DATINT | Data da integração |
REF_HORINT | Hora da integração |
REF_STATUS | Status da integração: 0=Não iniciado 1=Executando 2=Concluído 3=Houve erro de validação X=Não encontrado |
REF_LOTE | JSON do lote |
REF_RETORN | Retorno do processamento realizado pelo P&M |
REF_USER | Código do usuário responsável pela integração |
04. DEMAIS INFORMAÇÕES
Atualizador de dicionário e base de dados - UPDDISTR.
Incluindo Campos Reservados (CFGX034 - SIGACFG).
Integração de cadastros básicos de pessoas.
Schedule - Como agendar a execução de rotinas.
Premissas para Integração P&M.
Integração com o P&M (Performance & Metas).
05. ASSUNTOS RELACIONADOS
Não há.