Histórico da Página
...
Produto: |
| ||||||||
---|---|---|---|---|---|---|---|---|---|
Linha de Produto: |
| ||||||||
Segmento: |
| ||||||||
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).
Aviso | ||||
---|---|---|---|---|
| ||||
A funcionalidade abaixo está em desenvolvimento. |
Para a integração de algumas informações para o P&M, foi necessário efetuar a inclusão de alguns campos em cadastros já existentes:
- No cadastro de tipos de ausência, foi criado o campo "Tipo P&M" para definir o tipo de afastamento que será enviado ao P&M na integração de afastamentos:
- Na tabela auxiliar S043 foi criado o campo "Tipo P&M" para definir o tipo de desligamento que será enviado ao P&M na integração de funcionários:
- Na tabela auxiliar S049 foi criado o campo "Agrupador P&M" para definir o agrupador de contrato que será enviado ao P&M na integração de grupos de contrato e de funcionários:
Se o cadastro de grupos de cargo estiver com modo de acesso Exclusivo, será necessário cadastrar um De x Para através da rotina GPEA944A:
Em Outras Ações, foi disponibilizado a opção "Vincular grupos", onde será possível marcar quais grupos serão vinculados ao cadastro:
Se o cadastro de cargos estiver com modo de acesso Exclusivo, será necessário cadastrar um De x Para através da rotina GPEA944B:
Em Outras Ações, foi disponibilizado a opção "Vincular cargos", onde será possível marcar quais cargos serão vinculados ao cadastro:
Se o cadastro de departamentos estiver com modo de acesso Exclusivo, será necessário cadastrar um De x Para através da rotina GPEA944C:
Em Outras Ações, foi disponibilizado a opção "Vincular departamentos", onde será possível marcar quais departamentos serão vinculados ao cadastro:
Nota | ||
---|---|---|
| ||
Com o cadastro de De x Para, ao efetuar a integração com o P&M, todos os grupos de cargo, ou cargos ou departamentos serão enviados com o código e descrição cadastrados nesse cadastro. |
Foi efetuado a criação da rotina GPEM939 para efetuar a integração com o P&M (Performance & Metas) dos itens abaixo:
- Filiais (tabela SM0);
- Grupos de cargo (tabela SQ0);
- Cargos (tabela SQ3);
- Departamentos (tabela SQB);
- Grupos de contrato (tabela genérica 1C);
- Funcionários (tabela SRA);
- Movimentações de filiais (tabela SRE);
- Movimentações de cargos (tabela SR7);
- Movimentações de departamentos (tabela SRE);
A rotina é do tipo Wizard e possui cinco passos:
...
startHidden | false |
---|---|
id | WIZARD |
...
default | true |
---|---|
id | wizard1 |
label | 1-Observações |
title | Observações |
Essa tela exibe um breve descritivo da rotina e contém um botão que direciona para esta documentação do TDN.
...
id | wizard2 |
---|---|
label | 2-Configuração |
title | Configuração |
Essa tela exibe quatro perguntas para a configuração da integração:
- "Verificação registro ativo": essa opção tem o intuito de definir como o sistema efetuará a validação se determinado registro está ativo, uma vez que apenas registros ativos serão enviados ao P&M. Ao selecionar a opção "Somente pelo campo campo MSBLQL (se houver)", caso o campo MSLBL exista na tabela, será considerado apenas os registros ativos (MSBLQL diferente de 1); se for selecionado a opção "Campo MSBLQL (se houver) + vínculo com registro ativo da SRA", além da verificação do campo MSBLQL diferente de 1, para um registro ser considerado como ativo terá que ter vínculo com registros ativos da tabela SRA, ou seja, funcionários que não sejam demitidos ou que foram demitidos com data de demissão superior à data de corte informada na pergunta abaixo;
- "Data de corte demissão": define a data de corte de demissão para que um funcionário seja considerado ativo ou não, ou seja, funcionário demitidos a partir da data configurada serão considerados ativos, enquanto que funcionários demitidos antes da data serão considerados como inativos.
- "Verificação retorno P&M:": define se a rotina irá aguardar o retorno do processamento da integração pelo P&M ou não.
- "Tempo limite (em minutos):": define o tempo máximo que a rotina irá aguardar para obter o status de retorno do processamento pelo P&M.
Nota | ||
---|---|---|
| ||
Ao definir que irá aguardar o retorno do processamento da integração pelo P&M, a rotina irá consumir uma API do P&M para verificar o status do processamento do lote, e assim que processado, irá exibir o status das integrações no log. Atente-se que a rotina irá tentar obter o status da integração até o tempo máximo estipulado; atingindo o tempo limite, a rotina irá ser encerrada exibindo o log dos status obtidos até o momento. Havendo erro no processamento do P&M, no log de ocorrências será exibido o ID do registro enviado ao P&M, contendo o código da validação e sua respectiva mensagem, conforme lista detalhada na documentação: https://tdn.totvs.com/pages/viewpage.action?pageId=676047532. Observe que na possibilidade do P&M demorar para processar a integração, a rotina irá ficar "presa" até que toda a integração enviada seja processada pelo P&M ou até o tempo limite ser atingido. |
...
id | wizard3 |
---|---|
label | 3-Opções |
title | Opções |
Essa tela exibe a lista de opções existentes para integração com o P&M do tipo checkbox e deve ser selecionada as opções que serão integradas.
...
id | wizard4 |
---|---|
label | 4-Filtro |
title | Filtro |
Essa tela exibe botões para a definição de filtros para a integração, separados pelos registros que podem ser integrados, ou seja, há um botão de filtro para filiais, outro botão para grupos de cargo, etc..
O botão de filtro de filiais sempre será exibido, independente se a opção de integração de filiais esteja ou não selecionada, pois o filtro de filial será utilizado para efetuar o filtro na integração de todas as opções. Já os outros botões serão desativados para clique caso a respectiva opção de integração não esteja selecionada.
No filtro de filial, será exibido uma MarkBrowse para seleção de filiais, enquanto que nos demais filtros será possível definir um filtro sobre qualquer campo da respectiva tabela, conforme necessidade.
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.
|
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.
Nota | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
As informações enviadas para o P&M são geradas conforme o detalhamento abaixo:
As opções de integração irão consumir as seguintes APIs do P&M:
|
...
id | wizard5 |
---|---|
label | 5-Processamento |
title | Processamento |
Essa tela exibe um descritivo e um botão, que ao ser clicado iniciará a integração com o Performance & Metas.
Foi efetuado a criação da rotina GPEM939B para permitir a visualização das informações dos lotes de integração com o P&M (Performance & Metas), bem como consultar manualmente o status de integração.
A rotina é do tipo MarkBrowse e irá exibir os registros da tabela REF:
Ao efetuar um duplo clique no registro ou ao clicar na coluna de cabeçalho, os registros com o campo REF_STATUS com 0 ou 1 serão selecionados. Ao clicar no botão "Consultar Status", será efetuado consulta do status no P&M, e ao fim será retornado um log de ocorrências com os status dos lotes, bem como eventuais erros de validação retornados pelo P&M.
Ao posicionar em um registro e clicar no botão "Visualizar" será aberto as informações detalhadas do lote. Ao clicar no botão "Consultar Inconsistências", será gerado um log com os erros retornados pelo P&M em um formato mais amigável caso o status do lote seja igual a 3.
Também foi disponibilizada a rotina GPEM939C para ser possível agendar no Schedule a consulta automática dos lotes de integração.
A rotina pode ser cadastrada no Schedule do módulo SIGACFG - Configurador para efetuar a consulta automática de todos os lotes que ainda não tiveram o status retornado pelo P&M, conforme exemplo abaixo:
Exemplo de retorno gerado no console do appserver:
...
title | Observação |
---|
A melhoria depende da aplicação da atualização liberada no pacote de expedição do módulo RH a partir de [EM CONSTRUÇÃO, SEM DATA] e da execução do UPDDISTR com o dicionário diferencial para os releases iguais ou superiores a versão 12.1.27.
Toggle Cloak | ||
---|---|---|
|
...
visible | true |
---|---|
id | upddistr |
Foi efetuado a criação de índices no dicionário SIX, conforme estrutura abaixo:
...
Foi efetuado a criação de tabelas no dicionário SX2, conforme estrutura abaixo:
...
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:
...
Filial do lote
...
Process ID do lote retornado pelo P&M
...
Tipo da API
...
Data da integração
...
Hora da integração
...
Status da integração
...
JSON do lote integrado
...
Retorno do lote pelo P&M
...
Usuário responsável pela geração do lote
...
Evento selecionado para consulta?
...
Foi efetuado a criação de tabela genérica no dicionário SX5, conforme estrutura abaixo:
...
Foi efetuado a criação de parâmetros no dicionário SX6, conforme estrutura abaixo:
...
https://{TENANT}.rac.{ENVIRONMENT}.totvs.app/totvs.rac/connect/token
Exemplo: https://admin.rac.totvs.app/totvs.rac/connect/token
...
https://{NOME_EMPRESA}.performance.totvs.app/integration-general/
Exemplo: https://empresateste.performance.dev.totvs.app/integration-general/
...
Os parâmetros MV_APIPEM0 e MV_APIPEM1 precisam ser configurados conforme o formato de exemplo da tabela acima.
Foi efetuado a criação de relacionamentos no dicionário SX9, conforme estrutura abaixo:
...
Foi efetuado a criação de consultas padrão no dicionário SXB, conforme estrutura abaixo:
...
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.
Nota | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
As informações enviadas para o P&M são geradas conforme o detalhamento abaixo: Deck of Cards | | |||||||
|
Card | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
"integrationId": M0_CODIGO+M0_CODFIL, "name": M0_FILIAL |
id | grupos |
---|---|
label | Grupos de cargo |
title | Grupos de cargo |
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.
id | cargos |
---|---|
label | Cargos |
title | Cargos |
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.
id | departamentos |
---|---|
label | Departamentos |
title | Departamentos |
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.
Card | ||||||
---|---|---|---|---|---|---|
| ||||||
"integrationId": M0_CODIGO+X5_FILIAL+X5_CHAVE, "name": X5_DESCRI; |
Card | ||||||
---|---|---|---|---|---|---|
| ||||||
"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 |
Card | ||||||
---|---|---|---|---|---|---|
| ||||||
"integrationId": M0_CODIGO+RE_FILIALP+RE_MATP+RE_DATA, "personIntegrationId": M0_CODIGO+RDZ_CODRD0, "facilityIntegrationId": M0_CODIGO+RE_FILIALP, "changeDate": RE_DATA. |
Card | ||||||
---|---|---|---|---|---|---|
| ||||||
"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. |
id | mov_departamentos |
---|---|
label | Movimentação de departamentos |
title | Movimentação de departamentos |
"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.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 |
...
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
...