ÍNDICE
01. VISÃO GERAL
Este documento de referência tem como objetivo explicar o funcionamento da integração do Protheus com o Suricato, desde a configuração dos parâmetros necessários e os WebServices envolvidos na integração, basicamente eles são os mesmos utilizado pelo TSA.
02. PARÂMETROS
Antes da configuração dos parâmetros, será necessário já possuir o Suricato instalado e configurado, pois existe um parâmetro que deve ser preenchido com o endereço do servidor onde se encontra o Suricato. Informações sobre o Suricato podem ser obtidas através de contato com a parceira mantenedora do produto, através de abertura de ticket.
Parâmetro | Descrição | Exemplo de utilização |
---|---|---|
MV_TSREP | Define se haverá integração entre o modulo SIGAPON e o aplicativo Suricato. | .T. |
MV_TSASERV | Endereço IP ou nome do servidor da instalação do aplicativo Suricato. | 10.0.0.90:8080/tsa-ejb |
MV_TSANDIA | Define o Número de dias anteriores a data do sistema para que seja feito o sincronismo dos funcionários demitidos. | 30 |
MV_TSATLOG | Define qual será o tipo de envio do Log de erros da integração do módulo Ponto Eletronico X Aplic. Suricato (0=Não Gera, 1=E-mail, 2=Arquivo, 3=Ambos, 5=SaveXML). | 3 |
MV_TSADARQ | Define o nome do diretório onde serão gravados os arquivos de Log de erros gerados da integração do módulo Ponto Eletrônico X Aplicativo TSA. | \logwsrhtsa\ |
MV_TSAIURB | Habilita a integração do crachá do funcionário com o Suricato. | .T. |
MV_TSAMAIL | Endereço de E-mail para recebimento de mensagens do Log de integração. Caso esteja em branco o e-mail não é enviado. | [email protected] |
MV_TSAINT | Identifica se a integração será realizada com o TSA ou Suricato. .T. = TSA, .F. = Suricato | .F. |
MV_APISUR | Define se a integração do Suricato com o Protheus ocorre por API (.T.) ou direto no banco (.F.) | .F. |
MV_TSADTAD | Define se na transferência o sistema utilizara a data de admissão ou a data da transferência para a tag HiringDate. .T.=Dt Adm,.F.=Dt Transf | .F. |
Atenção:
Configuração necessária para envio de e-mail
MV_RELACNT - Conta utilizada para envio do e-mail
MV_RELSERV - Endereço do servidor de e-mail
MV_RELPSW - Senha da conta utilizada para envio do e-mail
MV_RELAUSR - Usuário de autenticação de e-mail
MV_RELAPSW - Senha do usuário de autenticação de e-mail
MV_RELFROM - Endereço de e-mail que ira disparar o e-mail
MV_RELAUTH - Faz autenticação no servidor de e-mail
MV_TSATLOG
- Quando o parâmetro estiver com a opção 1, só será enviado o e-mail com o log se houver erros de integração.
- Quando o parâmetro estiver com a opção 2, só será gerado o log (arquivo txt) no diretório definido no parâmetro MV_TSADARQ se houver erros de integração.
- Quando o parâmetro estiver com a opção 3, só será enviado o e-mail e gerado o log (arquivo txt) se houver erros de integração.
- Quando o parâmetro estiver com a opção 5 o sistema irá gerar o xml de envio e retorno na pasta system, essa opção é útil para analisar erros, porém consome muito espaço em disco, por isso é importante ativá-lo para realizar o teste necessário e logo depois desativá-lo. Quando ativo o sistema sempre irá gerar o XML na pasta system, independentemente se houve erro ou não na integração. Além disso, se houver erros na integração será gerado o arquivo de log de erro (arquivo txt) no diretório definido no parâmetro MV_TSADARQ e será enviado o e-mail com o log.
Nome dos arquivos XMLs gerados:
"Numero Sequencial"_SND.XML → XML enviado ao Suricato
"Numero Sequencial"_RCV.XML → XML recebido do suricato como retorno do XML SND
03. PORTARIA 671
Com a portaria 671/2021 surgiu a necessidade de realizar 2 alterações no Protheus, para que o sistema consiga realizar corretamente a integração de marcações vindas do Suricato.
A primeira alteração foi a estrutura da tabela que armazena as marcações (RR1 ou MSA_CONTROL_MARCAC).
A segunda alteração foi a API recordClockMarkings, ela foi atualizada para receber os novos campos da Portaria 671/2021.
Observação
A utilização da API recordClockMarkings é apenas para as marcações serem integradas na RR1. Caso a integração das marcações seja feita via banco de dados, utilizando a MSA_CONTROL_MARCAC, o processo continuará o mesmo, porém será necessário a criação dos novos campos.
03.1 CAMPOS DA TABELA RR1/MSA_CONTROL_MARCAC
RR1
Caso a tabela responsável por armazenar as marcações seja a RR1 será necessário a execução do UPPDISTR para a atulização da tabela, para isso baixe o último pacote da Expedição Contínua do RH.
Após a execução do UPPDISTR os seguintes campos serão criados na tabela RR1:
X3_CAMPO | X3_TIPO | X3_TAMANHO | X3_TITULO | X3_DESCRIC |
---|---|---|---|---|
RR1_FUSO | C | 5 | Fuso Horário | Fuso horário da marcação |
RR1_CODCPF | C | 11 | CPF | CPF do funcionário |
RR1_VRSLAY | N | 3 | Vers. Layout | Versão do Layout |
RR1_INSCR | C | 14 | Inscr. Emp | CNPJ ou CPF do empregador |
RR1_CCTREP | C | 17 | Código CCT | Código da CCT da marcação |
MSA_CONTROL_MARCAC
Se a tabela utilizada for a MSA_CONTROL_MARCAC, além da execução do UPPDISTR será necessário a compilação do pacote de fontes da última Expedição Contínua. Após a execução do pacote de dicionários será criada a pergunta "Atualiza Tabela MSA"? na rotina de Carga Inicial (PONM430). Esta pergunta será responsável para dizer se o sistema deve ou não atualizar a MSA_CONTROL_MARCAC com os novos campos. A pergunta terá apenas 2 respostas 1 - Sim e 2 - Não, caso seja preenchida com 1 - Sim, o sistema irá criar o novos campos da MSA_CONTROL MARCAC, caso ela esteja preenchida com não, o sistema não irá atualizar a tabela.
X1_GRUPO | X1_ORDEM | X1_PERGUNT | X1_TIPO | X1_TAMANHO | X1_VAR01 | X1_DEF01 | X1_DEF02 | X1_HELP |
---|---|---|---|---|---|---|---|---|
PONM430 | 04 | "Atualiza Tabela MSA"? | N | 1 | MV_PAR04 | 1 - Sim | 2 - Nao | .PONM43004. |
Com a pergunta preenchida com Sim as demais perguntas podem ficar em branco, o sistema irá desconsiderar as demais perguntas e a execução da rotina será exclusivamente para a criação dos novos campos na MSA_CONTROL_MARCAC.
Caso a tabela MSA_CONTROL_MARCAC já exista no banco de dados, ao executar a rotina de Carga Inicial (PONM430) preenchendo apenas a pergunta "Atualiza Tabela MSA"? com sim será realizada a criação dos novos campos.
Caso a tabela MSA_CONTROL_MARCAC não exista no banco de dados, ao executar a rotina de Carga Inicial (PONM430), preenchendo apenas a pergunta "Atualiza Tabela MSA"? com sim será realizada a criação da tabela com os novos campos.
Após a execução da rotina, os novos campos serão criados.
Coluna | Tipo | Tamanho |
---|---|---|
COD_FUSO | varchar | 5 |
COD_CPF_FUNC | varchar | 11 |
NUM_VERS_LAYOUT_AFD | int | 3 |
COD_INSCR_EMP | varchar | 14 |
COD_CCT | varchar | 17 |
03.2 ALTERAÇÃO DA API RECORDCLOCKMARKINGS
A API recordClockMarkings, foi alterada para receber, validar e salvar os dados nos novos campos da RR1. Se as marcações a serem integradas forem referentes a Portaria 671, antes de consumir a API será necessário validar se os novos campos, mencionados anteriormente, já foram criados no Protheus. Para isso foi criada uma nova API que irá dizer para o Suricato se o Protheus já possui os novos campos e se poderá ser utilizado os mesmo na API RecordclockMarkings.
RECORDVALIDATEDVERSION
A API RecordValidatedVersion irá verificar no sistema se os novos campos foram criados, respeitando o conteúdo do parâmetro MV_APISUR. Se o parâmetro MV_APISUR estiver configurado com .T. (integração via API) o sistema irá verificar a tabela RR1, nos casos onde o parâmetro estiver com .F. será verificada a tabela MSA_CONTROL_MARCAC
Para mais informações sobre a API, acesse o link abaixo:
DT API recordValidatedVersion.
Após validar se o sistema possui os novos campos, bastar utilizar a API RecordclockMarkings, informando os novos campos como o exemplo abaixo:
{ "items": [ { "codRelogioExtChave": "", "codFuncMsa": "003651", "codNsr": 1, "codPisMsa": "022036983234", "datMarcacAces": "2022-11-01 09:00:00.000", "numHorarMarcacAces": 32400, "codRep": "00000000000000123", "codUnidExtChave": "T1D MG 01", "codUsuarExtChave": "T1D MG 01 003651", "codFuso": "-0300", "codCPF": "16046091098", "numVersLayout": 3, "inscrEmp": "11456156000111", "codCCT": "00000000123212111" } ] }
04. CADASTRO DO RELÓGIO
Para efetuar a leitura de marcações a partir do Suricato, deve-se alterar o cadastro do relógio e informar o conteúdo “R” no campo Tipo Arquivo (P0_TIPOARQ). Ao iniciar o processo de leitura de marcações, a rotina irá buscar os registros da tabela MSA_CONTROL_MARCAC de determinada data de/até que contém o campo LOG_IMPORT_PRODUT = 0.
Atenção: A leitura de marcações somente irá funcionar se a tabela MSA_CONTROL_MARCAC estiver cadastrada no mesmo banco de dados do Protheus.
Observações
1 - Para que as marcações salvas na MSA sejam processadas corretamente, o código do REP, no cadastro do Protheus, deverá ser o mesmo código salvo no campo COD_REP na tabela MSA. Por exemplo se o Suricato salvar o código "5001030033938" no campo COD_REP da MSA, o Campo REP do cadastro de relógio do Protheus deverá ser salvo com o conteúdo "5001030033938".
2 - Com a portaria 671 é necessário informar o tipo do REP (1510, REP-A, REP-C e REP-P). Para um relógio do Suricato teremos três opções, 1510, REP-A e REP-C, em todos os tipos os sistema irá identificar o funcionário pelo PIS ou CPF da marcação por ser um relógio do Suricato, por este motivo qualquer uma das opções são válidas no cadastro do relógio, porém é necessário verificar qual o tipo do REP do Suricato e preencher corretamente o cadastro do relógio.
3 - Marcações vindas de um REP-A devem ter o código da Convenção Coletiva de Trabalho, esse código será utilizado na geração do Arquivo Eletrônico de Jornada - AEJ. Saiba mais: DT Adequação API integração Suricato Portaria 671.
Exemplo de configuração dos campos no Cadastro de Relógios para integração de marcações no Suricato:
05. CONFIGURAÇÃO DO SCHEDULE
Após o cadastro do relógio, é possível realizar a configuração do Schedule para que a rotina de Leitura e Apontamento seja executada de tempos em tempos. Desta maneira todas as marcações que foram integradas serão processadas pelo Protheus. O processo também pode ser realizado de forma manual, para isso acesse a rotina de Leitura Apontamento em SIGAPON → Miscelanea → Cálculos → Leitura/Apontamento Marcações, preencha os parâmetros informando o código do relógio cadastrado anteriormente e execute a rotina.
Para a configuração do Schedule, será necessário acessar o Configurador (SIGACFG). Após acessar o configurador acesse Ambiente → Schedule → Schedule.
Na tela seguinte inicialmente será necessário cadastrar um Agent. O Agent é responsável por gerenciar e distribuir as tarefas a serem executadas.
Clicando no primeiro ícone à direita, o sistema irá criar um Agent para cada grupo de empresas automaticamente.
Após a criação do Agent, precisaremos criar um Execute, que são os componentes responsáveis por realizar a chamada das rotinas agendadas.
Preencha a rotina com PONM010 (Leitura e Apontamento), e posteriormente preencha os parâmetros informando o código do relógio cadastrado anteriormente.
Iremos agora selecionar a periodicidade em que a rotina será executada, as imagens abaixo são um exemplo de um cadastro que será executado 24 vezes por dia, a cada 1 hora, todos os dias da semana, começando no dia 05/10/2020 e sem data de término.
Confirme e salve o agendamento. O próximo passo é colocar todos os serviços cadastrados para serem executado. Para isso clique em Schedule e clique em "Iniciar todos os serviços", depois em Agent "Iniciar todos os serviços".
Após todo este processo de cadastro o Schedule já está sendo executado. É possível acompanhar o resultado da execução clicando em Agendamentos e depois em monitor.
Para mais informações sobre o Cadastro do Schedule, acesse o link da documentação que está no final desta página. Na seção Links.
06. INTEGRAÇÕES REALIZADAS ENTRE OS PRODUTOS
Cadastro de Novas Empresas/Filiais
Ao incluir ou alterar uma empresa/filial no Cadastro de Empresa, deve-se executar novamente o processo de Carga Inicial de Empresa, Unidade e Lotação para atualização da informação da empresa/filial no Suricato.
Cadastro de Funcionário
Ao realizar a admissão de um funcionário ou alteração de seus dados no Cadastro do Funcionários o mesmo será integrado com o Suricato. Para confirmar se a integração foi realizada com sucesso, verifique se o Cadastro de Funcionário no Suricato foi atualizado.
Observação: Por meio do parâmetro MV_TSAIURB, é possível definir se será enviado o crachá do funcionário do Protheus para o Cadastro de funcionário do Suricato.
Cadastro de Cargo/Função
Ao realizar a inclusão, alteração ou exclusão de uma função no Cadastro de Funções, a função será integrada com o Suricato. Também será integrada a troca de função de um funcionário. Se for realizada a troca de função essa informação será integrada com o Suricato e ele irá manter histórico da função anterior e da atual. Para confirmar se a integração funcionou, verifique no Suricato se o Cadastro de Cargo ou o Cadastro do Funcionário foram atualizados.
Cadastro Turno de Trabalho
Ao incluir um turno de trabalho no Cadastro de Turnos de Trabalho, não haverá integração do turno com o Suricato, pois é necessário o preenchimento da tabela de horário padrão. Caso seja realizada a troca de turno de trabalho do Funcionário a mesma será integrada e o Suricato irá manter histórico do turno anterior e do atual. Para confirmar se a integração funcionou, verifique no Suricato se a Escala, Horário da Escala ou o Cadastro do funcionário foram atualizados.
Cadastro de Feriados
Ao realizar a inclusão, alteração ou exclusão de um feriado no Cadastro de Feriados, ele será integrado com o Suricato. Para confirmar se a integração funcionou, verifique se o cadastro de Feriados no Suricato foi atualizado.
Cadastro de Sindicato
Ao realizar a inclusão, alteração ou exclusão de um sindicato no Cadastro de Sindicatos, ele será integrado com o Suricato. Para confirmar se a integração funcionou verificar se o cadastro de Pessoa Jurídica no Suricato foi atualizado.
Cadastro de Exceções
Ao realizar a inclusão, alteração ou exclusão de uma exceção por funcionário e/ou período, ela será integrada com o Suricato. Para confirmar se a integração funcionou verificar se o cadastro de Situações no Suricato foi atualizado.
Cadastro de Afastamentos
Ao realizar a inclusão, alteração ou exclusão de um afastamento para o Funcionário, ela será integrada com o Suricato. Para confirmar se a integração funcionou verificar se o cadastro de Afastamentos no Suricato foi atualizado.
Cadastro de Centros de Custo
Ao realizar a inclusão, alteração ou exclusão de um Centro de Custo no Cadastro de Centros de Custos, ele será integrado com o Suricato. Para confirmar se a integração funcionou verificar se o cadastro de Centro de Custos no Suricato foi atualizado.
Cadastro de Transferências
Ao realizar a transferência de um Centro de Custo de um funcionário, essa informação será integrada, alterando o cadastro do funcionário no Suricato. O Suricato irá manter histórico do centro de custo anterior e do atual.
Quando a transferência de um funcionário for entre Empresas/Filiais o cadastro do funcionário no Suricato será atualizado.
Observação: O Suricato manterá os dois registros do funcionário (devido mudança na chave externa), onde o registro anterior terá data de demissão com um dia anterior ao da transferência e o registro atual manterá o crachá do usuário.
Para confirmar se a integração funcionou verificar se o cadastro de Funcionário no Suricato foi atualizado.
Cálculo de Férias
Ao realizar o cálculo de férias para um funcionário, o cadastro do funcionário no Suricato será atualizado com a informação do afastamento. Para confirmar se a integração funcionou verificar se o cadastro de Funcionário no Suricato foi atualizado.
Cálculo de Rescisão
Ao realizar o cálculo de rescisão para um funcionário, essa informação será integrada, atualizando a informação sobre o desligamento do funcionário no Suricato.
Ao excluir o cálculo de rescisão, a mesma será integrada, atualizando o funcionário no Suricato.
Para confirmar se a integração funcionou, verificar se o cadastro do funcionário foi atualizado.
Cadastro de Regra de Apontamento
Ao alterar o intervalo móvel de uma regra na rotina de Cadastro de Regras de Apontamento o campo Tipo de Escala no Cadastro de Escala no Suricato será atualizado.
Cadastro de Relógios e Leitura de Marcações
Para efetuar a leitura de marcações a partir do Suricato, deve-se alterar o cadastro do relógio e informar o conteúdo R no campo Tipo Arquivo (P0_TIPOARQ). Ao iniciar o processo de leitura de marcações, a rotina irá buscar os registros da tabela MSA_CONTROL_MARCAC de determinada data de/até que contém o campo LOG_IMPORT_PRODUT = 0.
Atenção: A leitura de marcações somente irá funcionar se a tabela MSA_CONTROL_MARCAC estiver cadastrada no mesmo banco de dados do Protheus.
Observação: Para que as marcações salvas na MSA sejam processadas corretamente, o código do REP, no cadastro do Protheus, deverá ser o mesmo código salvo no campo COD_REP na tabela MSA. Por exemplo se o Suricato salvar o código "5001030033938" no campo COD_REP da MSA, o Campo REP do cadastro de relógio do Protheus deverá ser salvo com o conteúdo "5001030033938".
Observação: O Suricato não grava o horário da marcação em horas e minutos no campo NUM_HORAR_MARCAC_ACES da tabela MSA_CONTROL_MARCAC. É necessário converter o conteúdo para horas e minutos efetuando a seguinte conta:
NUM_HORAR_MARCAC_ACES / 3600 (para encontrar as horas);
Resto da divisão X 60 (para encontrar os minutos);
Resto da divisão X 60 (para encontar os segundos).
Exemplo: NUM_HORAR_MARCAC_ACES = 59730:
59730 / 3600 = 16,59166666666667;
0,59166666666667 X 60 = 35,5;
0,5 X 60 = 30.
Resultado: 16:35:30.
Fechamento do Ponto
Caso haja alteração na sequencia inicial do turno de trabalho, haverá atualização do cadastro de Usuário no Suricato.
Este processo somente será executado caso a nova sequencia inicial do turno seja diferente da anterior.
07. TABELAS E ROTINAS ENVOLVIDAS NA INTEGRAÇÃO
Segue abaixo as tabelas envolvidas na integração com o Suricato:
Tabela | Descrição |
---|---|
CTT | Centro de Custo |
RCE | Sindicatos |
SPA | Regra de Apontamento |
SPJ | Tabela de Horário Padrão |
SP2 | Exceções |
SP3 | Feriados |
SRJ | Funções |
SPF | Transferência de Turno |
SR6 | Turnos de Trabalho |
SR8 | Controle de Ausências |
SRA | Funcionários |
SRG | Rescisões |
SRH | Férias |
Segue abaixo as rotinas envolvidas na integração com o Suricato:
Rotina | Descrição |
---|---|
CSAM080 | Cadastro de Aumento programado |
CTBA030 | Cadastro de Centro de Custos |
GPEA010 | Cadastro de Funcionários |
GPEA030 | Cadastro de Funções |
GPEA080 | Cadastro de Turno de Trabalho |
GPEA180 | Cadastro de Transferência de Funcionários |
GPEA240 | Cadastro de Afastamentos |
GPEA265 | Cadastro de Autônomos |
GPEA340 | Cadastro de Sindicatos |
GPEM030 | Cadastro de Férias |
GPEM040 | Cadastro de Rescisão |
GPEM060 | Férias Coletivas/Programadas |
GPEXFUN1 | Biblioteca de Funções do SIGAGPE |
PONA020 | Cadastro de Feriado |
PONA080 | Manutenção da Tabela de Horário Padrão |
PONA090 | Cadastro de Exceções por Período |
PONA140 | Cadastro de Exceções por Funcionário |
PONA160 | Troca de Turno |
PONM430 | Integração TSA |
PONXFUN | Biblioteca de Funções do SIGAPON |
PONXFUN1 | Biblioteca de Funções do SIGAPON |
PTSREPOBJ | Biblioteca de Funções do SIGAPON |
RHUPDPON | Atualizador do Ponto Eletrônico |
TRMA100 | Cadastro de Funcionários |
TRMA210 | Cadastro de Funções |
07.1 CAMPOS DA TABELA UTILIZADA
Campos utilizados na integração do funcionário, ao incluir ou alterar qualquer um dos dados utilizados para a montagem do XML será realizada uma nova integração.
WSRHTSANaturalPerson
<?xml version="1.0" encoding="UTF-8"?>
-<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<soap:Body>
-<insertOrUpdate xmlns="http://naturalperson.tsa.totvs.com/">
-<arg0 xmlns="">
<address>AV. BRAZ LEME </address> Endereço + Num.Endereço + Compl.Ender. (RA_ENDEREC + RA_NUMENDE + RA_COMPLEM)
<city>SAO PAULO </city> Municipio (RA_MUNICIP)
<country>BRASILEIRO</country> Nacionalid. (RA_NACIONA)
<email>totvs@totvs.com.br</email> End. E-Mail (RA_EMAIL)
<externalKey>T1D MG 01 00079820211011164347</externalKey> Código Unico RA_CODUNIC (Empresa + RA_FILIAL + RA_MAT + Data e hora da Integração)
<federalId>03024407049</federalId> CPF (RA_CIC)
<idCard>2020-01-01</idCard> R.G. (RA_RG)
<idCardDate>1900-01-01</idCardDate> D t.Emis.RG (RA_DTRGEXP) Se não for preenchido será enviado 1900-01-01
<idCardEmitter>SSP </idCardEmitter> Orgao expedR (RA_RGEXP)
<idCardState>SP </idCardState> UF do RG (RA_RGUF)
<image>BitMap da imagem do funcionário</image> Foto do Funcionário (RA_BITMAP)
<name>Funcionário Totvs </name> Nome do Funcionário (RA_NOME)
<neighborhood>CASA VERDE </neighborhood> Bairro (RA_BAIRRO)
<phone1>11111111 </phone1> Telefone (RA_TELEFON)
<phone2>911111111 </phone2> Num. Celular (RA_NUMCELU)
<phoneCode1>11</phoneCode1> DDD Telefone (RA_DDDFONE)
<phoneCode2>11</phoneCode2> DDD Celular (RA_DDDCELU)
<state>SP</state> Estado (RA_ESTADO)
<zipCode>02511000</zipCode> CEP (RA_CEP)
<sex>M</sex> Sexo (RA_SEXO)
<birthDate>1985-11-19</birthDate> Data Nasc. (RA_NASC)
</arg0>
</insertOrUpdate>
</soap:Body>
</soap:Envelope>
WSRHTSAUserIntegration
<?xml version="1.0" encoding="UTF-8"?>
-<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<soap:Body>
-<insertUserShiftWork xmlns="http://user.tsa.totvs.com/">
-<arg0 xmlns="">
<endDate>2049-12-31T00:00:00</endDate> Data Demissão (RA_DEMISSA se RA_DEMISSA estiver vazia será enviado 2049-12-31)
<initialDate>2021-01-01T00:00:00</initialDate> Data Admissão (RA_ADMISSA)
<shiftWorkExternalKey>T1D MG 00101</shiftWorkExternalKey> Chave de identificação do turno (Empresa + Turno + Sequencia (Empresa + PF_FILIAL + PF_TURNOPA + PF_SEQUEPA))
<userExternalKey>T1D MG 01 000798</userExternalKey> Chave de identificação do funcionário (Empresa + RA_FILIAL + RA_MAT)
<InitialScaleBaseDate>2020-12-28T00:00:00</InitialScaleBaseDate> Primeiro dia da sequência e turno informado. Por exemplo a data de admissão do funcionário foi no dia 01/01/2021, esse dia é uma sexta-feria e a sequência 01 começa na segunda, então será enviada o dia 28/12/2020.
</arg0>
</insertUserShiftWork>
</soap:Body>
</soap:Envelope>
08. PRINCIPAIS FONTES E WEB SERVICES
Carga Incial - PONM430
Para a primeira integração com o Suricato, será necessário realizar a carga inicial. A rotina de Carga Inicial (POMM430 - Miscelânea → S.r.e.p. → Integração Tsa), será responsável por enviar todas as informações necessárias para a utilização do Suricato. Nela é possível selecionar quais informações serão enviadas inicialmente, que vão desde o cadastro da empresa até Férias/Afastamentos dos funcionários, porém a rotina possui uma ordem de execução que NÃO deve ser alterada, mas não há obrigatoriedade de enviar todos os cadastros de uma vez. É recomendado enviar primeiramente os cadastrados da Empresa, Unidade e Lotação.
Observação
A partir do pacote de Expedição Contínua do RH libera no dia 11/03/2024 é possível realizar o reenvio de um XML utilizando a rotina de Carga Inicial. Na pergunta da rotina existirá uma nova opção que é a "Reenviar XML ?", caso ela esteja com sim, o Protheus irá ignorar se a informação foi enviado ou não para o Suricato e irá gerar o XML de integração. Para mais informações do funcionamento do reenvio do XML acesse o link abaixo:
PTSREPOBJ
Este fonte possui todos os métodos que irá fazer a chamada de um Web Service para realizar a integração com o Suricato. Como por exemplo o método WSNatural, este método irá realizar a inclusão/alteração de um funcionário no Suricato. O método irá receber as informações da tabela envolvida e enviará elas para o Web Service NaturalPerson, que irá enviar para o Suricato.
WSClient_WSRHTSAAbsenceReason
O AbsenceReason é o Web Service responsável por enviar as informações referentes as ausências. O método que faz a chamada desse Web Service é o WSAbsenceReason, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações da tabela tipo de ausências (RCM), manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSAAllocationUnit
O AllocationUnit é o Web Service responsável por enviar as informações referentes as Unidades de Lotações. O método que faz a chamada desse Web Service é o WSAllocation, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações do cadastro de Unidade de Lotação, manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSACostCenter
O CostCenter é o Web Service responsável por enviar as informações referentes aos Centros de Custos. O método que faz a chamada desse Web Service é o WSCostCenter, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações da tabela dos Centros de Custos (CTT), manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSADayNotWorked
O DayNotWorked é o Web Service responsável por enviar as informações referentes aos Feriados. O método que faz a chamada desse Web Service é o WSDayNotWorked, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações dos Feriados cadastrados (SP3), manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSAException
O Exception é o Web Service responsável por enviar as informações referentes as Exceções. O método que faz a chamada desse Web Service é o WSException, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações das Exceções cadastradas (SP2), manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSALegalPerson
O LegalPerson é o Web Service responsável por enviar as informações referentes as Empresas. O método que faz a chamada desse Web Service é o WSLegal, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações das Empresas cadastradas, manipulará os dados e enviará para o Suricato.
Observação: O Web Service LegalPerson também é responsável por enviar os Sindicatos cadastrados, através do método WSSindicatoLegal.
WSClient_WSRHTSALocationIntegration
O LocationIntegration é o Web Service responsável por enviar as informações referentes as Localizações (Cidades). O método que faz a chamada desse Web Service é o WSLocation, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações das Localizações cadastradas, manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSANaturalPerson
O NaturalPerson é o Web Service responsável por enviar as informações referentes aos Funcionário. O método que faz a chamada desse Web Service é o WSNatural, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações dos Funcionário cadastrados (SRA), manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSAPositionLevel
O PositionLevel é o Web Service responsável por enviar as informações referentes as Funções do funcionário. O método que faz a chamada desse Web Service é o WSPositionLevel, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações das Funções cadastradas (SRJ), manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSAScaleIntegration
O ScaleIntegration é o Web Service responsável por enviar as informações referentes a Tabela Horário Padrão. O método que faz a chamada desse Web Service é o WSSCale, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações da Tabela de Horário Padrão cadastradas (SPJ), manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSAShiftWork
O ShiftWork é o Web Service responsável por enviar as informações referentes ao Turnos. O método que faz a chamada desse Web Service é o WSShiftWork, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações da tabela de Turnos cadastrados (SR6), manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSAUnit
O Unit é o Web Service responsável por enviar as informações referentes a Unidade. O método que faz a chamada desse Web Service é o WSUnit, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações da Unidade cadastrada, manipulará os dados e enviará para o Suricato.
WSClient_WSRHTSAUserIntegration
O UserIntegration é o Web Service responsável por enviar as informações referentes aos Usuários. O método que faz a chamada desse Web Service é o WSUser, localizado no fonte PTSREPOBJ. Neste método o sistema irá receber as informações dos Usuários, tais como Nome, Centro de Custo, Papéis (Permissões) e etc, manipulará os dados e enviará para o Suricato.
Observação: Este Web Service é diferente dos demais, pois ele possui vários métodos para inserir informações diferentes, como por exemplo Centro de Custo e Função, utilizando os métodos insertUserShiftWork e insertUserPositionLevel respectivamente, localizados no Web Service.
09. RELACIONAMENTO ROTINAS X WEB SERVICES
Seguem abaixo os nomes das rotinas e seus serviços relacionados:
Rotina | Web Services |
---|---|
Schedule Empresa | LegalPerson |
Schedule Unidade | Unit |
Schedule Unidade de Lotação | AllocationUnit |
Schedule Localidade | LocationIntegration |
Schedule Tabelas 30/31 – Módulo Configurador | AbsenceReason, UnitAbsenceReason |
Cadastro de Aumento Programado (CSAM080) | UserIntegration |
Cadastro de Centro de Custos (CTBA030) | CostCenter |
Cadastro de Funcionário (GPEA010) | UserIntegration, UserShiftWork, UserLocation, UserRoleBadge, UserCostCente, UserAllocationUnit, UserAbsenceReason, RemoveUserAbsenceReason, NaturalPerson |
Cadastro de Funções (GPEA030) | PositionLevel |
Cadastro de Turno de Trabalho (GPEA080) | ShiftWork |
Cadastro de Transferência de Funcionário (GPEA180) | UserIntegration, NaturalPerson |
Cadastro de Afastamentos (GPEA240) | AbsenceReason |
Cadastro de Autônomos (GPEA265) | UserIntegration, UserShiftWork, UserLocation, UserRoleBadge, UserCostCente, UserAllocationUnit, UserAbsenceReason, RemoveUserAbsenceReason, NaturalPerson |
Cadastro de Sindicato (GPEA340) | LegalPerson |
Cadastro de Férias (GPEM030) | AbsenceReason |
Cadastro de Rescisão (GPEM040) | UserIntegration, UserShiftWork, UserLocation, UserRoleBadge, UserCostCente, UserAllocationUnit, UserAbsenceReason |
Férias Coletivas/Programadas (GPEM060) | AbsenceReason |
Cadastro de Feriado (PONA020) | DayNotWorked |
Manutenção da Tabela de Horário Padrão (PONA080) | ShiftWork,Scale |
Cadastro de Exceções por Período (PONA090) | DayNotWorked,Exception |
Cadastro de Exceções por Funcionário (PONA140) | Exception |
Troca de Turno (PONA160) | UserIntegration, UserShiftWork |
Integração TSA (PONM430) | Todos |
Cadastro de Funcionários (TRMA100) | UserIntegration, UserShiftWork, UserLocation, UserRoleBadge, UserCostCente, UserAllocationUnit, UserAbsenceReason, RemoveUserAbsenceReason,NaturalPerson |
Cadastro de Funções (TRMA210) | PositionLevel |
10. MONTAGEM DO CONTEÚDO DO XML
Neste tópico iremos abordar como é feita a montagem do conteúdo do XML, na qual será enviado para o Web Service. Lembrando que caso haja a necessidade de pegar o XML completo, com as informações do Cabeçalho e etc, será necessário ativar o parâmetro MV_TSATLOG com o valor 5 e verificar o arquivo gerado na pasta System, conforme descrito anteriormente no tópico de Parâmetros. Neste exemplo iremos realizar a integração do a partir da rotina de Carga Inicial (Integração TSA - PONM430), integrando o Centro de Custo.
- Ao acessar a rotina de integração, quando selecionamos apenas o Centro de Custo, podemos observar que o valor da opção é 06.
- Sabendo disso, podemos localizar qual função que irá realizar essa integração, no caso é função ProcP08 no fonte da Carga Inicial (PONM430)
- Verificando a função ProcP08, ela está chamando outra função, que neste caso é a WSRHCostCenter.
- Vamos então procurar onde a função WSRHCostCenter está, descobrimos que ela está localizada no fonte PONXFUN1.
Nela podemos verificar que ela faz a busca das informações dos Centro de Custos diretamente na tabela.
Após realizar a consulta na tabela CTT, o sistema irá enviar essas informações para o método WSCostCenter. - O método WSCostCenter, está localizado no fonte PTSREPOBJ.
Antes de enviar as informações para o Web Service, podemos verificar que o sistema está montando as informações do Centro de Custo, como a Descrição e a Chave Externa.
Observação: O método do Web Service chamado, foi o insertOrUpdate. - O método insertOrUpdate localizado no Web Service WebWSClient_WSRHTSACostCenter, está realizando a integração com o Suricato.
- Antes de enviar as informações da integração, conseguiremos verificar o conteúdo do XML, no caso as informações do Centro de Custo, verificando o conteúdo do objeto oWSarg0.
Após todo esse processo, conseguimos verificar de fato quais informações estão sendo integradas com o Suricato. Este mesmo processo pode ser realizado com as demais integrações, como por exemplo as integração de Funcionários, Funções, Turnos e etc. Para isso só será necessário identificar qual é a opção selecionada e posteriormente a função desta opção. Em outros casos, como por exemplo, a integração de funcionário realizadas após a inclusão ou alteração do mesmo, precisaremos localizar no fonte de Cadastro de Funcionário, qual função ou método está sendo chamado para a integração. Por exemplo, no cadastro de funcionário os métodos WSNatural e WSUser estão sendo chamados.
11. OCORRÊNCIAS NA INTEGRAÇÃO
Com a utilização do parâmetro MV_TSATLOG, na qual o parâmetro permite que todas as rotinas de integração gerem um log de retorno com as críticas realizadas pelas regras do aplicativo, é possível saber exatamente qual foi o erro gerado durante o processo de integração. No exemplo que iremos mostrar utilizamos o parâmetro com o valor igual a 5, desta maneira iremos ter o XML enviado e o XML de retorno com o código do erro ou sucesso.
- Confirmado que o parâmetro está com o valor 5.
- Após a inclusão do funcionário no Protheus, iremos visualizar o código de retorno informado no log gerado. Para isso basta acessar a pasta System do Protheus e procurar pelo arquivo. O nome do arquivo é composto por um número sequencial, seguido de _RCV.xml para o XML de retorno e _SND.xml para o XML enviado. Em nosso exemplo o nome do arquivo de retorno gerado é 55847972_rcv.xml. Ao abrir o arquivo de retorno devemos procurar pela Tag statusCode, ela que conterá o código do retorno, que poderá ser de sucesso ou erro na integração. No nosso teste o código gerado foi o 00100, isso significa que a integração funcionou corretamente.
Cada Web Service possui códigos e descrições diferentes, por isso para facilitar no entendimento dos códigos de retorno, segue abaixo a tabela de códigos de cada Web Service:
Empresa
Código do Retorno | Descrição do código de retorno |
---|---|
00101 | Inclusão/Alteração da Empresa Jurídica realizada com sucesso. |
00102 | Chave externa da Empresa Jurídica é obrigatória. |
00103 | Deve ser informado pelo menos o CNPJ ou CEI. |
00104 | Exclusão da unidade realizada com sucesso. |
00105 | Deve ser informado apenas um dos campos: CNPJ ou CEI. |
00106 | Nome da pessoa jurídica é obrigatória. |
00107 | Pessoa jurídica está sendo usada, não é possível realizar a exclusão. |
00100 | Erro Técnico (retornar erros ocorridos durante a execução). |
Unidade
Código do Retorno | Descrição do código de retorno |
00201 | Inclusão/Alteração da unidade realizada com sucesso. |
00202 | Chave externa da Unidade é obrigatória. |
00203 | Chave externa de Pessoa Jurídica é obrigatória. |
00204 | Código da unidade é obrigatório. |
00205 | Tipo da unidade é obrigatório. |
00206 | Exclusão da unidade realizada com sucesso. |
00207 | Inclusão de relacionamento realizada com sucesso. |
00208 | Exclusão de relacionamento realizada com sucesso. |
00209 | Inclusão de relacionamento realizada parcialmente. |
00210 | Unidade está sendo usada, não é possível realizar a exclusão. |
00211 | Inclusão de relacionamento não realizada, nenhuma chave externa é existente. |
00212 | Exclusão de relacionamento não realizada, nenhuma chave externa é existente. |
00213 | Usuário ou senha são inválidos. |
00214 | Unidade está sendo usada, não é possível realizar a exclusão. |
00215 | Descrição da Unidade é Obrigatória. |
00216 | Nenhum registro encontrado com a chave externa. |
00200 | Erro Técnico (retornar erros ocorridos durante a execução). |
Centro de Custo
Código do Retorno | Descrição do código de retorno |
00301 | Inclusão/Alteração do Centro de Custo realizada com sucesso. |
00302 | Chave externa do Centro de Custo é obrigatória. |
00303 | Exclusão da unidade realizada com sucesso. |
00304 | Usuário ou senha são inválidos. |
00305 | Descrição do Centro de Custo é obrigatória. |
00306 | Centro de Custo está sendo usado, não é possível realizar a exclusão. |
00300 | Erro Técnico (retornar erros ocorridos durante a execução). |
Unidade de Lotação
Código do Retorno | Descrição do código de retorno |
00401 | Inclusão/Alteração da Unidade de Lotação realizada com sucesso. |
00402 | Chave externa da Unidade de Lotação é obrigatória. |
00403 | Exclusão da Unidade de Lotação realizada com sucesso. |
00404 | Usuário ou senha são inválidos. |
00405 | Descrição da Unidade de Lotação é obrigatória. |
00406 | Unidade de Lotação está sendo usada, não é possível realizar a exclusão. |
00400 | Erro Técnico (retornar erros ocorridos durante a execução). |
Turno
Código do Retorno | Descrição do código de retorno |
00501 | Inclusão/Alteração do Turno realizada com sucesso. |
00502 | Chave externa do Turno é obrigatória. |
00503 | Data de início é obrigatória. |
00504 | Data de início deve ser uma data válida. |
00505 | Exclusão do Turno realizada com sucesso. |
00506 | Pelo menos uma escala deve estar informada e deve conter pelo menos um intervalo de horário do tipo Jornada. |
00507 | Descrição é obrigatória. |
00509 | Turno está sendo usado, não é possível realizar a exclusão. |
00500 | Erro Técnico (retornar erros ocorridos durante a execução). |
Tabela de Horário Padrão
Código do Retorno | Descrição do código de retorno |
00601 | Inclusão/Alteração da Grade de Trabalho realizada com sucesso. |
00602 | Chave externa da Grade de trabalho é obrigatória. |
00603 | A chave externa do turno é obrigatória. |
00604 | A escala deve conter pelo menos um par de horários do tipo Jornada. |
00605 | Os pares de horários informados estão incorretos. |
00606 | A sequência de inicio é obrigatória. |
00607 | A sequência de término é obrigatória. |
00608 | O tipo é obrigatório. |
00609 | A entrada de jornada é obrigatória. |
00610 | A saída de jornada é obrigatória. |
00611 | A sequência de início não pode ser superior à sequência de término. |
00612 | Exclusão do Turno realizada com sucesso. |
00613 | Usuário ou senha são inválidos. |
00614 | Escala está sendo usada, não é possível realizar a exclusão. |
00600 | Erro Técnico (retornar erros ocorridos durante a execução). |
Funcionários
Código do Retorno | Descrição do código de retorno |
00701 | Inclusão/Alteração da Pessoa física realizada com sucesso. |
00702 | Chave externa da Pessoa Física é obrigatória. |
00703 | Pelo menos o CPF ou RG deve ser informado. |
00704 | Exclusão da pessoa física realizada com sucesso. |
00705 | Usuário ou senha são inválidos. |
00706 | Pessoa física está sendo usada, não é possível realizar a exclusão. |
00700 | Erro Técnico (retornar erros ocorridos durante a execução). |
Localidade
Código do Retorno | Descrição do código de retorno |
00801 | Inclusão/Alteração da Localidade realizada com sucesso. |
00802 | Chave externa da Localidade é obrigatória. |
00803 | Exclusão da localidade realizada com sucesso. |
00804 | Usuário ou senha são inválidos. |
00805 | Pelo menos País, Estado ou Cidade deve ser informada. |
00806 | Descrição de País deve ser informada. |
00807 | Descrição de Estado deve ser informada. |
00808 | Descrição de Cidade deve ser informada. |
00809 | Localidade está sendo usada, não é possível realizar a exclusão. |
00800 | Erro Técnico (retornar erros ocorridos durante a execução). |
Funções
Código do Retorno | Descrição do código de retorno |
00901 | Inclusão/Alteração do cargoNivel realizada com sucesso. |
00902 | Chave externa do cargoNivel é obrigatória. |
00903 | Descrição é obrigatória. |
00904 | Exclusão do cargoNivel realizada com sucesso. |
00905 | Usuário ou senha são inválidos. |
00906 | CargoNivel está sendo usado, não é possível realizar a exclusão. |
00900 | Erro Técnico (retornar erros ocorridos durante a execução). |
Afastamento
Código do Retorno | Descrição do código de retorno |
01001 | Inclusão/Alteração da situação de afastamento realizada com sucesso. |
01002 | Chave externa da situação de afastamento é obrigatória. |
01003 | Tipo da situação de afastamento é obrigatório. |
01004 | Exclusão da situação de afastamento realizada com sucesso. |
01005 | Data início e Data término são obrigatórias. |
01006 | Exclusão do relacionamento realizado com sucesso. |
01007 | Usuário ou senha estão inválidos. |
01008 | Descrição da situação de afastamento é obrigatória. |
01009 | Situação de Afastamento está sendo usada, não é possível realizar a exclusão. |
01010 | Inclusão do relacionamento realizado com sucesso. |
01000 | Erro Técnico (retornar erros ocorridos durante a execução). |
Exceção
Código do Retorno | Descrição do código de retorno |
01101 | Inclusão/Alteração da exceção realizada com sucesso. |
01102 | Chave externa da exceção é obrigatória. |
01103 | Tipo da exceção é obrigatório. |
01104 | Origem é obrigatório. |
01105 | Data início é obrigatória. |
01106 | Data Término é obrigatória. |
01112 | Exclusão da exceção realizada com sucesso. |
01113 | Pelo menos um período deve ser informado. |
01114 | Usuário ou senha inválidos. |
01115 | Os pares de horários informados estão incorretos. |
01106 | Direção é obrigatória. |
01100 | Erro Técnico (retornar erros ocorridos durante a execução). |
Feriados
Código do Retorno | Descrição do código de retorno |
01201 | Inclusão/Alteração do dia não trabalhado realizado com sucesso. |
01202 | Chave externa do dia não trabalhado é obrigatória. |
01203 | Recorrente é obrigatório. |
01204 | Data é obrigatória. |
01205 | Exclusão do dia não trabalhado realizada com sucesso. |
01206 | O turno deve ser informado. |
01207 | A localidade deve ser informada. |
01208 | Usuário ou senha Inválidos. |
01209 | Dia não Trabalhado está sendo usado, não é possível realizar a exclusão. |
01200 | Erro Técnico (retornar erros ocorridos durante a execução). |
01210 | Inclusão do relacionamento Dia Não Trabalhado/Localidade/Turno realizado com sucesso. |
01211 | Exclusão do relacionamento Dia Não Trabalhado/Localidade/Turno realizado com sucesso. |
Usuários
Código do Retorno | Descrição do código de retorno |
01301 | Inclusão/Alteração do usuário realizado com sucesso. |
01302 | Chave externa do usuário não foi informada. |
01303 | Chave externa de pessoa física não foi informada. |
01304 | O tipo papel não foi informado. |
01305 | Data início de validade do turno deve ser informada. |
01306 | Data término de validade do turno deve ser informada. |
01307 | Data início de validade do Centro de custo deve ser informada. |
01308 | Data término de validade do Centro de Custo deve ser informada. |
01309 | Data início de validade do CargoNivel deve ser informada. |
01310 | Data término de validade do CargoNivel deve ser informada. |
01311 | Data início de validade da Unidade de Lotação deve ser informada. |
01312 | Data término de validade da Unidade de Lotação deve ser informada. |
01313 | Data início de validade da Localidade deve ser informada. |
01314 | Data término de validade da Localidade deve ser informada. |
01315 | Chave externa de pessoa Física não existe. |
01316 | Chave externa de turno não existe. |
01317 | Chave externa de centro de custo não existe. |
01318 | Chave externa de CargoNivel não existe. |
01319 | Chave externa de unidade de lotação não existe. |
01320 | Chave externa de localidade não existe. |
01321 | Chave externa de usuário não existe. |
01322 | Relacionamento incluído/alterado com sucesso. |
01323 | Usuário ou senha Inválidos. |
01324 | Usuário está sendo usado, não é possível realizar a exclusão. |
01325 | Exclusão do usuário realizada com sucesso. |
01326 | Exclusão do relacionamento de usuário com nome do relacionamento, realizada com sucesso. |
01327 | Exclusão do relacionamento de usuário com nome do relacionamento, não realizada. |
01301 | Inclusão/Alteração do usuário realizado com sucesso. |
01302 | Chave externa do usuário não foi informada. |
01303 | Chave externa de pessoa física não foi informada. |
01300 | Erro Técnico (retornar erros ocorridos durante a execução) |
Marcações
Código do Retorno | Descrição do código de retorno |
01401 | Importação da batida realizada no REP: número do rep e NSR: número do nsr foi importada com sucesso. |
01402 | Importação da batida realizada no REP: número do rep e NSR: número do nsr não foi importada. |
01400 | Erro Técnico (retornar erros ocorridos durante a execução) |
12. LINKS
Integração Suricato
Instalação Suricato (SQL)
Instalação Suricato (Oracle)
Documentação Schedule