Páginas filhas
  • TOTVS HCM x Suricato - Api Rest recordValidatedVersion

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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.

Com a vigência da portaria 671 é necessário que, tanto o ERP como o Suricato estejam atualizados para atender as novas informações estabelecidas nesta portaria.

Para isto, há a necessidade de identificar se a base de dados do ERP está atualizada em relação à portaria 671, permitindo que marcações realizadas em dispositivos que atendam à esta portaria possam ser integradas através da execução da api recordClockMarkings.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.15, 12.1.2205.10 e 12.1.2209.5.
  • 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 efetue 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 Suricatoverificar se o banco de dados do ERP está atualizado com relação à portaria 671, de forma a estar apto a receber as marcações do Suricato que foram realizadas em dispositivos que atendem à portaria 671.

Parâmetros e Chamada do Método:

Autenticação do tipo básica. Esta api utiliza Basic Authentication.

{protocolo}://{host}/api/rh/v1/recordClockMarkingsrecordValidatedVersion.r


A API REST recordClockMarkings REST recordValidatedVersion será consumida pelo Suricato e poderá receber no método POST os seguintes parâmetros:

PropriedadeDescriçãoTipoObrigatório?itemsArray das marcaçõesArraySimtems.codRelogioExtChaveCódigo RelógioCaracterNãoitems.codFuncMsaCódigo do funcionárioCaracterSimitems.codNsrCódigo NSRNuméricoSimitems.codPisMsaCódigo do PISCaracterSimitems.datMarcacAcesData da marcaçãoCaracterSimitems.numHorarMarcacAcesHora da marcação em segundosNuméricoSimitems.codRepCódigo do REPCaracterNãoitems.codUnidExtChaveCódigo da UnidadeCaracterSimitems.codUsuarExtChaveCódigo do usuárioCaracterSim

Request da API: Exemplo:

{
    "items": [
                    {
                         "codRelogioExtChave": "",
                         "codFuncMsa": "529",
                         "codNsr": 1,
                         "codPisMsa": "15423654711",
                         "datMarcacAces": "2021-10-21 09:30:00.000",
                         "numHorarMarcacAces": 34200,
                         "codRep": "5009940099846",
                         "codUnidExtChave": "10;1",
                         "codUsuarExtChave": "10;1;529"
                    },

                    {
                         "codRelogioExtChave": "",
                         "codFuncMsa": "1356",
                         "codNsr": 2,
                         "codPisMsa": "15423654711",
                         "datMarcacAces": "2021-10-23 22:00:00.999",
                         "numHorarMarcacAces": 79200,
                         "codRep": "5009940099846",
                         "codUnidExtChave": "10;1",
                         "codUsuarExtChave": "10;1"
                    }

                 ]
}

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:

statuserrorCodemessage200Marcação gravada com sucesso.40000001PIS em formato inválido ou inexistente no cadastro.40000002NSR duplicado. Número já foi importado na tabela marcac_nova_integr .40000003NSR não foi informado e é obrigatório.40000006É obrigatório informar o campo codRelogioExtChave.40000006É obrigatório informar o campo codFuncMsa.40000006É obrigatório informar o campo codPisMsa.40000006É obrigatório informar o campo datMarcacAces.40000006É obrigatório informar o campo numHorarMarcacAces.40000006É obrigatório informar o campo codRep.40000006É obrigatório informar o campo codUnidExtChave.40000006É obrigatório informar o campo codUsuarExtChave.40000006Campo 'codRelogioExtChave' no formato incorreto. Deve ser preenchido como texto e conter o código da empresa e do relógio no ERP.40000006Campo 'codNsr' no formato incorreto. Deve ser preenchido como numérico.40000006Campo 'numHorarMarcacAces' no formato incorreto. Deve ser preenchido como numérico.40000006Campo 'codUnidExtChave' no formato incorreto. Deve ser preenchido como texto e conter o código da empresa e do estabelecimento no ERP.40000006Campo '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.40000006Foi enviado marcações de um relógio que não está cadastrado no ERP

Exemplo de retorno da API recordClockMarkings:

{
    "items": [
                   {
                       "codRelogioExtChave": "",
                       "codFuncMsa": "529",
                       "codNsr": 1,
                       "codPisMsa": "17962727770",
                       "datMarcacAces": "2021-10-21 09:30:00.000",
                       "numHorarMarcacAces": 34200,
                       "codRep": "5009940099846",
                       "codUnidExtChave": "10;1",
                       "codUsuarExtChave": "10;1;529",
                       "status": 200,
                       "errorCode": "",
                       "message": "Marcação gravada com sucesso"
                   },
                   {
                       "codRelogioExtChave": "",
                       "codFuncMsa": "1356",
                       "codNsr": 2,
                       "codPisMsa": "10699643292",
                       "datMarcacAces": "2021-10-22 22:00:00.999",
                       "numHorarMarcacAces": 79200,
                       "codRep": "5009940099846",
                       "codUnidExtChave": "10;1",
                       "codUsuarExtChave": "10;1",
                       "status": 400,
                       "errorCode": "00006",
                       "message": "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."
                   }
                 ]

, sendo que não possui parãmetros a serem enviados para a mesma.

Exemplo de retorno da API recordValidatedVersion:


  • Quando na base de dados dthrtma, a tabela marcac_nova_integr estiver atualizada com os campos: cod_fuso, cod_cpf_func, num_vers_layout_afd e cod_inscr_emp, o json de retorno será:

{ version671 : 'yes' }


  • Quando na base de dados dthrtma, a tabela marcac_nova_integr não estiver atualizada com os campos: cod_fuso, cod_cpf_func, num_vers_layout_afd e cod_inscr_emp, o json de retorno será:

{ version671 : 'no' }


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.