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.