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
Da versão `4.35 (ou superior) do SankhyaOm`, basta seguir [este guia](https://ajuda.sankhya.com.br/hc/pt-br/articles/34538747408407-Log-de-Altera%C3%A7%C3%B5es-para-API-como-ativar-desativar-e-acompanhar-os-registros-de-altera%C3%A7%C3%A3o) para para ativar a rotina.
Da versão 4.34, ou anterior, o processo é conforme segue:
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](https://developer.sankhya.com.br/reference/entidades-para-log-de-altera%C3%A7%C3%A3o)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 até 4.34;
- A partir da 4.35 esta rotina é ativada através da tela [Configurações » Rotinas » Log de Alterações para API](https://developer.sankhya.com.br/reference/entidades-para-log-de-altera%C3%A7%C3%A3o) no SankhyaOm;
- 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 Gateway Produção: https://api.sankhya.com.br/
- URL Gateway Sandbox: https://api.sandbox.sankhya.com.br/
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:
{
"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.
