Histórico da Página
| Índice |
|---|
INTEGRAÇÃO
Contexto de Negócio (Introdução)
Atualmente a integração de marcações de ponto do Suricato para o TOTVS HCM ocorre através de uma conexão direta com o banco de dados, atualizando a tabela msa_control_marcac.
Há a necessidade de realizar esta integração através de uma API REST garantindo a integridade da informação e, evitando assim a necessidade de conexão direta com o banco de dados.
Sistemas Envolvidos
HCM (módulo Controle de Frequência): O módulo Controle de Frequência permite de forma prática, segura e automática o controle da apuração de informações referentes à frequência dos funcionários de uma empresa, possibilitando, também, o controle e o acompanhamento do consumo e cobrança de refeições dos funcionários, quando esta é feita em refeitório na empresa.
- Suricato (Telemática): software multi-idioma para a gestão integrada da segurança e controle de acesso.
Pré-requisitos instalação/implantação/utilização
- Versões mínima do TOTVS/Datasul: 12.1.34
- Servidor de aplicação tomcat (não é compatível com o servidor de aplicação jboss)
- Estrutura de rede estável, para que haja trafego de dados sem interrupção.
- Datasul devidamente configurado e serviço Rest habilitado em seu server, com acesso à internet.
Integração
O objetivo desta integração é permitir a integração das marcações de ponto do Suricato para o Datasul e, este efetuar a validação e gravação das marcações na tabela marcac_nova_integr, sem que ocorra acesso direto ao banco de dados por parte do Suricato.
Parâmetros e Chamada do Método:
Autenticação do tipo básica.
{protocolo}://{host}/api/rh/v1/recordClockMarkings
A API REST recordClockMarkings será consumida pelo Suricato e poderá receber no método POST os seguintes parâmetros:
| Propriedade | Descrição | Tipo | Obrigatório? | Observação |
|---|---|---|---|---|
| items | Array das marcações | Array | Sim | |
| items.codRelogioExtChave | Código Relógio | Caracter | Não | Preenchido com o código da empresa e do relógio, conforme cadastrado no programa PE0620, campo Relógio. Obrigatório ser informado quando a marcação for de refeitório. |
| items.codFuncMsa | Código do funcionário | Caracter | Sim | Preenchido com a matrícula do funcionário conforme cadastro no programa FP1500 |
| items.codNsr | Código NSR | Numérico | Sim | |
| items.codPisMsa | Código do PIS do Funcionário | Caracter | Sim | Obrigatório para marcações realizadas em dispositivos que atendem à portaria 1510. |
| items.datMarcacAces | Data da marcação | Caracter | Sim | |
| items.numHorarMarcacAces | Hora da marcação em segundos | Numérico | Sim | |
| items.codRep | Código do REP | Caracter | Não | Preenchido com o número informado no programa PE0620, campo Número REP |
| items.codUnidExtChave | Código da Unidade | Caracter | Sim | Preenchido com o código da empresa e estabelecimento. Ex.: "99;99" |
| items.codUsuarExtChave | Código do usuário | Caracter | Sim | Preenchido com o código da empresa, estabelecimento e matrícula. Ex.: "99;99;4" |
| items.codFuso | Fuso Horário | Caracter | Sim | Obrigatório para marcações realizadas em dispositivos que atendem à portaria 671. |
| items.codCPF | Código do CPF do Funcionário | Caracter | Sim | Obrigatório para marcações realizadas em dispositivos que atendem à portaria 671. |
| items.numVersLayout | Versão Layout Arquivo AFD | Numérico | Sim | Quando preenchido com o valor: 0 - marcações de refeitório 1 - marcações da portaria 1510 3 - marcações da portaria 671 |
| items.inscrEmp | CNPJ ou CPF do empregador | Decimal | Não | |
| items.codCCT | Código Convenção Coletiva | Decimal | Não | Preenchido com o valor vazio (branco), quando a marcação for originada de um REP da portaria antiga (1510 ou 1510 INMETRO). Preenchido com o valor do acordo coletivo, quando a marcação for originada de um REP A. Preenchido com o valor vazio (branco), quando a marcação for originada de um equipamento de controle de acesso em refeitório. Preenchido sem zeros a esquerda. |
Exemplos do Json de Request da API:
| Expandir | ||
|---|---|---|
| ||
|
| Expandir | ||
|---|---|---|
| ||
{ }, ] |
| Expandir | ||
|---|---|---|
| ||
|
| Expandir | ||
|---|---|---|
| ||
{ { ] |
Situações de Erros Tratados
A API irá retornar a lista com o indicativo individual de sucesso ou erro na gravação. Os retornos possíveis estão na lista abaixo:
| status | errorCode | message | OBS |
|---|---|---|---|
| 200 | Marcação gravada com sucesso. | ||
| 400 | 00001 | PIS em formato inválido ou inexistente no cadastro. | |
| 400 | 00002 | NSR duplicado. Número já foi importado na tabela marcac_nova_integr . | |
| 400 | 00003 | NSR não foi informado e é obrigatório. | |
| 400 | 00006 | É obrigatório informar o campo codRelogioExtChave. | |
| 400 | 00006 | É obrigatório informar o campo codFuncMsa. | |
| 400 | 00006 | É obrigatório informar o campo codPisMsa. | Somente quando não estiverem informados os campos: codPisMsa e codCPF |
| 400 | 00006 | É obrigatório informar o campo datMarcacAces. | |
| 400 | 00006 | É obrigatório informar o campo numHorarMarcacAces. | |
| 400 | 00006 | É obrigatório informar o campo codRep. | |
| 400 | 00006 | É obrigatório informar o campo codUnidExtChave. | |
| 400 | 00006 | É obrigatório informar o campo codUsuarExtChave. | |
| 400 | 00006 | Campo 'codRelogioExtChave' no formato incorreto. Deve ser preenchido como texto e conter o código da empresa e do relógio no ERP. | |
| 400 | 00006 | Campo 'codNsr' no formato incorreto. Deve ser preenchido como numérico. | |
| 400 | 00006 | Campo 'numHorarMarcacAces' no formato incorreto. Deve ser preenchido como numérico. | |
| 400 | 00006 | Campo 'codUnidExtChave' no formato incorreto. Deve ser preenchido como texto e conter o código da empresa e do estabelecimento no ERP. | |
| 400 | 00006 | Campo 'codUsuarExtChave' no formato incorreto. Deve ser preenchido como texto e conter o código da empresa, do estabelecimento e matricula do funcionário no ERP. | |
| 400 | 00006 | Foi enviado marcações de um relógio que não está cadastrado no ERP | |
| 400 | 00006 | Verifique codCPF informado | Somente quando o campo codCPF estiver informado e seu dígito verificador estiver incorreto. |
Exemplo de retorno da API recordClockMarkings:
| Expandir | ||
|---|---|---|
| ||
{ |
| Expandir | ||
|---|---|---|
| ||
{ |
| Expandir | ||
|---|---|---|
| ||
{ |
| Expandir | ||
|---|---|---|
| ||
{ |
Checklist de suporte da aplicação
Itens a serem verificados durante o atendimento:
- Verificar se os pré-requisitos foram atendidos para a chamada da API;
- Verificar se na chamada da API o EndPoint, o nome do serviço e todos os campos obrigatórios foram informados;
- Verificar se o retorno da API apresenta algum erro tratado (códigos e mensagens de erro citados neste documento) e consultar a solução na mesma tabela que descreve o erro;
- Em caso de Erro não tratado, verificar se possui alguma informação de banco de dados, conexão com o servidor, clientlog, log do appServer ou algo que possa identificar a origem do problema.
Logs da Integração de Marcações
Contexto
Os Logs para acompanhamento do processo de integração de marcações estão divididos em dois tipos, o log detalhado e o log técnico.
- Log Detalhado: são apresentadas informações sobre cada batida que foi lida no momento em que ocorreu a integração, se houve erros, o total de batidas lidas, total de batidas com e sem erro.
- Log Técnico: são apresentadas informações técnicas (o json contendo os dados recebidos para integração e a hora do evento) da comunicação por meio da API entre o Suricato e TOTVS
Configuração dos Logs
A configuração dos Logs é feita pelo programa PE0400 Configurador de Logs Processos MPE, após sua configuração a geração do log é ativada, ao desmarcar as opções que ativam os logs o processo de geração é encerrado.
As configurações disponíveis são:
- Gerar os logs Detalhado e Técnico em conjunto, ou de forma unitária:
- No log detalhado, opção Gerar Arquivo Log Detalhado na tela, apresenta informações sobre cada batida que foi lida no momento em que ocorreu a integração, se houve erros, o total de batidas lidas, total de batidas com e sem erro.
- No log técnico, opção Gerar Arquivo Log Técnico na tela, apresenta informações técnicas (o json contendo os dados recebidos para integracção) da comunicação por meio da API entre o Suricato e TOTVS Datasul
- Existem duas opções para gerar os arquivos de logs:
- A opção Por Execução da API, gera um arquivo a cada vez que ocorre a execução da api recordClockMarkings para integrar as marcações do Suricato para o TOTVS Datasul. O nome de cada arquivo contém a data e hora de sua criação para identificação.
- A opção Diária, gera um arquivo por dia em quanto a configuração estiver ativa. O nome de cada arquivo contém a data de sua criação.
- Gerar os logs Detalhado e Técnico em conjunto, ou de forma unitária:
O Documento de Referência do PE0400, está disponível com a descrição mais detalhada e completa das funcionalidade.
Obs.: Não é recomendada a geração contínua destes logs, pois, podem causar problemas de espaço em disco.
Detalhamentos das mensagens dos logs
Mensagens do Log detalahdo
| Código | Detalhamento |
| 9999 | Indica início da execução do programa que grava as marcações em uma tabela intermediária (marcac_nova_integr) no TOTVS Datasul |
| 9998 | Indica início da leitura e baixa de marcações |
| 9997 | Indica a quantidade de marcações recebidas |
| 9996 | Indica erro para identificar ao tentar integrar uma marcação |
| 9995 | Indica erro quando o valor está em branco ou zero no campo data da marcação (datMarcacAces), quando o valor está em branco ou zero |
| 9994 | Indica que o campo do PIS do funcionário (codPisMsa), está com erro pelos seguintes motivos:
|
| 9993 | Indica erro no campo CPF do funcionário (codCPF), com valor informado inválido |
| 9992 | Indica erro quando informado caractere diferentes de números no campo NSR (codNsr), quando informado caractere diferentes de números |
| 9991 | Indica erro ao tentar integrar uma marcação. O campo NSR, codNsr, está com valor zeradoquando o valor for igual a zero no campo NSR (codNsr) |
| 9990 | Indica erro ao tentar integrar uma marcação com NSR já existente. NSR em duplicidade para funcionário identificado pelo PISde duplicidade de marcação, identificada pelo PIS do funcionário, considerando como critério de identificação os campos:
|
| 9989 | Indica erro ao tentar integrar uma marcação com NSR já existente. NSR em duplicidade para funcionário identificado pelo CPFde duplicidade de marcação, identificada pelo CPF do funcionário, considerando como critério de identificação os campos:
|
| 9988 | Indica erro ao tentar integrar uma marcação. O campo REP, codRep, não foi informado. Validação feita apenas para marcações com NSR |
| 9987 | Indica erro ao tentar integrar uma marcação que não contém REP. O valor do campo codRelogioExtChave está em branco |
| 9986 | Indica erro ao tentar integrar uma marcação que não contém REP. O valor do campo codRelogioExtChave está com valor inválido |
| 9985 | Indica erro ao tentar integrar uma marcação. O campo de código externo do relógio, codRelogioExtChave, está com valor inválido |
| 9984 | Indica erro ao tentar integrar uma marcação. O campo de hora da marcação, numHorarMarcacAces, não é do tipo numérico |
| 9983 | Indica erro ao tentar integrar uma marcação. O campo de hora da marcação, numHorarMarcacAces, está em branco |
| 9982 | Indica erro ao tentar integrar uma marcação. O campo de chave unidade externa, codUnidExtChave, está em branco |
| 9981 | Indica erro ao tentar integrar uma marcação. O campo de chave externa da unidade, codUnidExtChave, está com valor inválido |
| 9980 | Indica erro ao tentar integrar uma marcação. O campo de chave externa do usuário, codUsuarExtChave, está em branco |
| 9979 | Indica erro ao tentar integrar uma marcação. O campo de chave externa do usuário, codUsuarExtChave, está com valor inválido |
| 9978 | Indica erro ao tentar integrar uma marcação. O campo de código do funcionário, codFuncMsa, está em branco |
| 9977 |
Mensagens do Log técnico
| Código | Detalhamento |
| 9899 | Indica o início da execução da api apiRecordClockMarkings |
| 9898 | Indica o recebimento do json e faz a impressão no arquivo de log. Apresenta o cabeçalho de requisição, atributo e valores do json |
| 9897 | Indica o término do recebimento do json |
| 9896 | Indica o término da execução da api |