01. DADOS GERAIS
Produto: | TOTVS RH
|
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | RH |
Módulo: | GESTÃO DE PESSOAS (SIGAGPE) |
Função: | GPEA944B GPEA944C GPEM939 GPEM939A GPEM939B GPEM939C |
Ticket: | |
Requisito/Story/Issue (informe o requisito relacionado) : | DRHCALCPRT-8181 DRHCALCPRT-8161 DRHCALCPRT-8176 DRHCALCPRT-8709 DRHCALCPRT-8710 DRHCALCPRT-9268 DRHCALCPRT-9326 DRHCALCPRT-9510 |
02. SITUAÇÃO/REQUISITO
Criar uma rotina que fará a integração dos cadastros do Protheus com a Feedz e uma rotina que possibilite consultar as informações dos lotes de integrações com a Feedz.
03. SOLUÇÃO
Efetuado o desenvolvimento da integração com Feedz.
Observação
A melhoria depende da aplicação da atualização liberada no pacote de expedição do módulo RH a partir de 09/06/2023 e da execução do UPDDISTR com o dicionário diferencial para os releases iguais ou superiores a versão 12.1.033.
Clique aqui para exibir ou esconder o conteúdo.
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 |
---|---|---|---|---|---|---|---|
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? |
REF | 11 | REF_TPINT | C | 1 | Tipo Int. | Tipo Integração | Tipo da Integração |
Foi efetuado a criação de parâmetros no dicionário SX6, conforme estrutura abaixo:
X6_VAR | X6_TIPO | X6_DESCRIC | Exemplo de preenchimento |
---|---|---|---|
MV_APIFEE1 | C | URL base do ambiente de integração com a Feedz | Ambiente Produção: https://integrations.feedz.com.br/protheus-feedz-etl/ Ambiente Homologação: https://integrations.feedz.dev/protheus-feedz-etl/ |
MV_APIFEE2 | C | Token de autenticação para integração com a Feedz |
Observação
O parâmetro MV_APIFEE1 e MV_APIFEE2 devem ser preenchidos com base na informação gerada na aplicação da Feedz.
A chave na Feedz é obtida em: Configurações > Integrações > Chave Integração (API 2.0). Caso o campo esteja vazio, clicar em Gerar Token.
Para mais informações sobre o Token e URL entre em contato com o seu Customer Sucess Feedz.
Importante: O parâmetro MV_APIFEE1 deve ser configurado conforme o formato de exemplo da tabela acima.
Considerações importantes:
- A integração com a Feedz é do tipo assíncrona, isto é, a Feedz 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.
- A Feedz exige que algumas informações sejam obrigatórias:
- 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, se houver um relacionamento com participante na tabela RDZ e caso tenha enviado previamente o cadastro das filiais, cargos, departamentos e grupos de contrato.
- 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, se houver um relacionamento com participante na tabela RDZ e caso tenha enviado previamente o cadastro das filiais, cargos, departamentos e grupos de contrato.
- A Feedz 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 cargos ou departamentos serem de modo exclusivo, será necessário realizar um cadastro de De x Para através das rotinas 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 na Feedz. Havendo necessidade de reenvio de informações para a Feedz 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 pela Feedz retornar erros de validação, atente-se que as mensagens apresentadas na integração são as retornadas pela Feedz.
- As rotinas mencionadas devem ser incluídas manualmente no menu, caso não existam.
Observação técnica
As informações enviadas para a Feedz 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 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+Q3_CC(Caso exista),
"name": Q3_DESCSUM, ou Q3_DESCSUM+M0_CODIGO+Q3_FILIAL+Q3_CARGO+Q3_CC(Caso exista), caso configurada opção de envio de descrição + código.
"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.
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, ou Q3_DESCSUM+M0_CODIGO+QB_FILIAL+QB_DEPTO, caso configurada opção de envio de descrição + código.
- 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.
"registration": RA_MAT
"cpf": RA_CIC
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.
Na integração de líder dos funcionários, somente será enviado o líder caso ele esteja como matricula responsável de outro departamento, ou seja, diferente do que está alocado
Exemplo:
Departamento: 000000001[Presidência]
Matriculas alocadas: 000001
Matricula responsável: 000001
Departamento: 000000002[Diretoria]
Matriculas alocadas: 000002
Matricula responsável: 000001
Departamento: 000000003[Tecnologia]
Matriculas alocadas: 000003
Matricula responsável: 000002
Nesse cenário hierárquico, para integrar o Líder de matricula 000001 que está alocado no departamento "Presidência" e responsável do departamento "Diretoria", na integração com a Feedz caso seja realizado o filtro por matricula, deve ser selecionado alguma matricula que está alocada no departamento "Diretoria" onde a matricula 000001 é responsável e este que será enviado para Feedz como Líder na tag managerIntegrationId, o funcionário selecionado será enviado na tag personIntegrationId.
As opções de integração irão consumir as seguintes APIs da Feedz:
Opção | API Feedz |
---|---|
Filiais | /api/v1/auxiliary-records/facilities |
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 |
Líder dos funcionários | /api/v1/persons/bind |
Após a geração e envio de um lote de registros para a Feedz, 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 pela Feedz |
REF_TIPO | Tipo da API: 1=Filiais 3=Cargos 4=Departamentos 5=Funcionários 6=Grupos de contrato 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 pela Feedz |
REF_USER | Código do usuário responsável pela integração |
REF_TPINT | 2=Feedz |
04. DEMAIS INFORMAÇÕES
Atualizador de dicionário e base de dados - UPDDISTR.
Schedule - Como agendar a execução de rotinas.
Vídeos How To:
How To | MP - SIGAGPE integração com a Feedz Parte 1
How To | MP - SIGAGPE integração com a Feedz Parte 2
How To | MP - SIGAGPE integração com a Feedz Parte 3
How To | MP - SIGAGPE integração com a Feedz Parte 4
How To | MP - SIGAGPE integração com a Feedz Parte 5
05. ASSUNTOS RELACIONADOS
Não se aplica