Consulta de Histórico de Entidades (LOG de Tabelas)

Regras de negócio

Esse serviço permite consultar a data de alteração de um período específico que seja passado no campo dhAlter e entidades específicas passadas no campo Entidade.

Para utilizar a API, deve-se fazer uma requisição POST para o endpoint correspondente ao serviço desejado.

Dependências

1) Para que o serviço retorne informações, é necessário habilitar o parametro LOGTABOPER disponível nas Preferencias do SankhyaOm. Este liga ou desliga a funcionalidade de Log.

IMPORTANTE: Ao ativar este parâmetro, serão criados gatilhos (triggers) no Banco de Dados. Durante o processo de ativação, pode haver um bloqueio temporário das tabelas, o que pode impactar a performance do SankhyaOM. Para minimizar qualquer impacto negativo no desempenho do sistema, recomendamos que a ativação do parâmetro seja realizada fora do horário de operação.

2) Temos também o parâmetro LOGTABMAXAGE que permite alterar a quantidade de dias que o Log ficará disponível. Por padrão, o tempo é de 3 dias corridos e este parâmetro permite alterar para até 7 dias corridos. Vale ressaltar que não é possível guardar os logs por mais de 7 dias.

Entidades e tabelas logadas

Ao habilitar o parâmetro LOGTABOPER as seguintes entidades terão suas inserções, edições ou deleções logadas para consulta pela API Gateway: link

Detalhes Técnicos

O campo entidades é obrigatório. Ao menos uma entidade deve ser requisitada.
O campo dhAlter não é obrigatório. Quando não especificado, todos os logs referentes às entidades são consultados. Ao especificar a data e hora de alteração, são retornados os logs cuja a data de alteração é maior ou igual à dhAlter.

Importante: - O parâmetro modifiedSince recebe o padrão da data da RFC3339: “YYYY-MM-DDTHH24:MI:SS”

Requisitos Mínimos

> Versões do SankhyaOM:

      -  4.25b188

      -  4.26b109

      -  4.27 ou superior;

> Banco de dados Oracle 11G ou superior;

> Banco de Dados SQL Server 2017 ou superior.


Para realizarmos a busca através do Json, utilizamos o serviço "GatewayServiceProviderSP.logAlteracoesTabelas".

Exemplo de uso:


URL de chamada: https://api.sankhya.com.br/gateway/v1/mge/service.sbr?serviceName=GatewayServiceProviderSP.logAlteracoesTabelas&outputType=json

Corpo de requisição
{
  "serviceName": "GatewayServiceProviderSP.logAlteracoesTabelas",
  "status": "1",
  "requestBody": {
  "dhAlter": "2023-01-27T11:00:28",
  "size":17,
  "page":0,
  "entidades": [
      {
        "nome": "Produto"
       },
       {
        "nome": "CabecalhoNota"
       },
       {
        "nome": "ItemNota"
       }
       {
        "nome": "Estoque"
       }
      ]
   }
}

Retorno em json:

{
    "serviceName": "GatewayServiceProviderSP.logAlteracoesTabelas",
    "status": "1",
    "pendingPrinting": "false",
    "transactionId": "2F153D4BD713800F9B770DCC4FA1FE12",
     "responseBody": {
        "registros": [
            {
              "entidade": "Produto",
              "dtAlter": "2023-02-27T08:14:46",
              "evento": "CHANGE",
              "pk": [
                 {
                  "nomeColumnPk": "CODPROD",
                  "valorPk": 1254
                 }
               ]
            },
            {
              "entidade": "CabecalhoNota",
              "dtAlter": "2023-02-27T08:14:46",
              "evento": "CHANGE",
              "pk": [
                 {
                  "nomeColumnPk": "NUNOTA",
                  "valorPk": 2144
                 }
              ]
            },
            {
                "entidade": "ItemNota",
                "dtAlter": "2023-02-27T09:00:12",
                "evento": "CHANGE",
                "pk": [
                    {
                        "nomeColumnPk": "NUNOTA",
                        "valorPk": 27283
                    },
                    {
                        "nomeColumnPk": "SEQUENCIA",
                        "valorPk": 1
                    }
                ]
            },
            {
                "entidade": "Estoque",
                "dtAlter": "2023-02-27T09:01:14",
                "evento": "CHANGE",
                "pk": [
                    {
                        "nomeColumnPk": "CONTROLE",
                        "valorPk": "018-23-76800"
                    },
                    {
                        "nomeColumnPk": "TIPO",
                        "valorPk": "P"
                    },
                    {
                        "nomeColumnPk": "CODPARC",
                        "valorPk": 0
                    },
                    {
                        "nomeColumnPk": "CODLOCAL",
                        "valorPk": 70180000
                    },
                    {
                        "nomeColumnPk": "CODPROD",
                        "valorPk": 504
                    },
                    {
                        "nomeColumnPk": "CODEMP",
                        "valorPk": 1
                    }
                ]
            }
        ]
     }
}

Além disso, existe uma forma de otimizar o processo e utilizar um parametro na requisição direta no loadRecords para puxar apenas registros que foram alterados a partir de um determinado momento. Basta inclui a propriedade "modifiedSince". na requisição.

Exemplo de uso direto no end-point loadRecords:


{
  "serviceName": "CRUDServiceProvider.loadRecords",
  "requestBody": {
    "dataSet": {
      "rootEntity": "Parceiro",
      "includePresentationFields": "N",
      "offsetPage": "0",
      "modifiedSince":"2024-04-16T12:59:59",
      "criteria": {
        "expression": {
          "$": ""
        }
      },
      "entity": {
        "fieldset": {
          "list": "CODPARC,NOMEPARC,FORNECEDOR,CLIENTE,CODCID,CLIENTE,CLASSIFICMS"
        }
      }
    }
  }
}

O exemplo acima retorna todos os Parceiroso que foram editados a partir de 16/04/2024 12:59:59, conforme indicado no parametro "modifiedSince". presente na requisição.

Language
Credentials
Header
URL
Click Try It! to start a request and see the response here!