Realizando consultas utiliznado loadRecords

Regras de negócio

A API possui um serviço genérico para aplicar consultas em todas as Entidades disponíveis no ERP: CRUDServiceProvider.loadRecords. Por definição, uma entidade mapeia uma tabela que está no banco de dados, vejamos a seguir alguns exemplos de Entidade:
Entidade Produtos mapena a tabela TGFPRO
Entidade Parceiros mapeia a tabela TGFPAR


Exemplo de uso:


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

Vejamos a seguir a estrutura completa de uma requisição do serviço loadRecords:

{
    "serviceName": "CRUDServiceProvider.loadRecords",
    "requestBody": {
        "dataSet": {
            "rootEntity": "Produto ",
            "includePresentationFields": "N",
            "tryJoinedFields": "true",
            "parallelLoader": "true",
            "modifiedSince": "2024-04-16T12:59:59",
            "offsetPage": "0",
            "criteria": {
                "expression": {
                  "$": "CODPROD IN ( ?, ? ) AND DESCRPROD LIKE '%?%'"
                },
                "parameter": [
                    {
                        "$": "1",
                        "type": "I"
                    },
                    {
                        "$": "2",
                        "type": "I"
                    },
                    {
                        "$": "QUEIJO",
                        "type": "S"
                    }
                ]
            },
            "entity": [
                {
                    "path": "",
                    "fieldset": {
                        "list": "CODPROD, DESCRPROD"
                    }
                },
                {
                    "path": "GrupoProduto",
                    "fieldset": {
                        "list": "CODGRUPOPROD, DESCRGRUPOPROD"
                    }
                }
            ]
        }
    }
}

Agora, vamos detalhar as propriedades utilizadas:

  • serviceName: nome do serviço e por padrão, sempre será: CRUDServiceProvider.loadRecords rootEntity: nome da entidade a ser consultada.
  • modifiedSince: faz referência a funcionalidade de logAlteracoesTabelas (clique aqui para mais detalhes sobre o recurso de LogAlteracoesTabelas). Quando esta funcionalidade está habilitada, é possível trazer apenas registros que tiveram alteração a partir de uma determinada data/hora. Vale ressaltar que este parâmetro é opcional, e ao enviar valores o serviço irá considerar “apenas” registros contidos no logAlteracoesTabelas. Caso não tenha informações logadas no sistema, o retorno do serviço será vazio (ZERO registros).
  • offsetPage: indica a página a ser retornada. A página tem início em 0 (zero) e novas requisições devem ser realizadas, incrementando este valor, sempre que o retorno indicar mais registros através do parametro "hasMoreResult" com valor "true".
  • criteria -> expression: condição da consulta. Sempre que houver "parâmetros" variáveis, deve ser utilizado os parâmetros (parameter) para indicar os valores para critério da consulta.
  • criteria -> parameter: deve ser informado os valores para os parâmetros utilizados na consulta (clique aqui para mais detalhes sobre o recurso de critérios nos filtros).
  • entity: são indicados os campos a serem retornados na consulta. Os campos estão disponíveis no Dicionário de Dados para identificar quais campos serão necessários em cada entidade consultada. Esta propriedade também permite obter informações de entidades com ligação direta ao registro consultado. Ex.: para buscar um parceiro, através do CODBAI é possível trazer na consulta o nome do bairro. Isso se aplica a qualquer informação com ligação similar a esta (cidade, endereço, perfil, etc.). Clique aqui e para mais detalhes sobre "join" de dados nas consultas.

Vejamos agora um exemplo de consulta de parceiros do tipo "Cliente" realizado na entidade "Parceiro":
{
    "serviceName": "CRUDServiceProvider.loadRecords",
    "requestBody": {
        "dataSet": {
            "rootEntity": "Parceiro",
            "includePresentationFields": "N",
            "tryJoinedFields": "true",
            "parallelLoader": "true",
            "offsetPage": "0",
            "criteria": {
                "expression": {
                  "$": "CLIENTE = ?"
                },
                "parameter": [
                    {
                        "$": "S",
                        "type": "S"
                    }
                ]
            },
            "entity": [
                {
                    "path": "",
                    "fieldset": {
                        "list": "CODPARC, NOMEPARC, NUMEND, COMPLEMENTO, CEP"
                    }
                },
                {
                    "path": "Endereco",
                    "fieldset": {
                        "list":"CODEND, TIPO, NOMEEND"
                    }
                },
                {
                    "path": "Bairro",
                    "fieldset": {
                        "list": "CODBAI, NOMEBAI"
                    }
                },
                {
                    "path": "Cidade",
                    "fieldset": {
                        "list": "CODCID, NOMECID, UF"
                    }
                }
            ]
        }
    }
}
Language
Click Try It! to start a request and see the response here!