- Criado por Daniel Mendes De Melo Sousa, última alteração por Julio Cesar Correia Teixeira em 10 out, 2024
Descrição:
Retorna uma listagem do alias informado, podendo ser mais de um alias.
Essa API foi criada com base na classe FWAdapterBaseV2, logo ela permite filtros, seleção de campos, paginação e ordenação.
Utilização da API
É necessário ligar a segurança do socket do rest para a utilização dessa api (chave SECURITY=1)
Nova funcionalidade
A partir da LIB Label 20240115 a genericQuery suportará o formato padrão do lookup do SV, informações no final da documentação.
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Valor padrão |
---|---|---|---|---|
Tables | String | Indica o alias da tabela que terá seus dados listados, caso seja mais de uma tabela, os alias devem ser separados por vírgula | X | |
FilialFilter | Boolean | Indica se deve ser feito o filtro da filial ([ALIAS]_FILIAL) - Opcional, tendo seu valor como verdadeiro por padrão. | true | |
DeletedFilter | Boolean | Indica se deve ser feito o filtro de campos deletados de forma lógica (D_E_L_E_T_) | true | |
Where | String | Indica um filtro SQL que será incluso na query | ||
FromQry | String | Para querys mais complexas, que exigem um left join por exemplo, o FROM e JOIN podem ser informados aqui, sendo que por padrão, a tabela deve ter um alias conforme o SX2, exemplo: SED990 SED |
api/framework/v1/genericQuery?tables=SED,SE1&fields=ed_codigo,ed_descric,e1_prefixo,e1_num,e1_parcela,e1_tipo&where=SED.D_E_L_E_T_=' ' AND SE1.D_E_L_E_T_ = ' ' AND SE1.E1_NATUREZ = SED.ED_CODIGO AND SE1.E1_FILIAL = 'D MG 01' AND SED.ED_FILIAL = 'D MG 01'
api/framework/v1/genericQuery?FromQry=SEDT10 SED JOIN SE1T10 SE1 ON SE1.E1_NATUREZ = SED.ED_CODIGO&tables=SED,SE1&fields=ed_codigo,ed_descric,e1_prefixo,e1_num,e1_parcela,e1_tipo&where=SED.D_E_L_E_T_=' ' AND SE1.D_E_L_E_T_ = ' ' AND SE1.E1_FILIAL = 'D MG 01' AND SED.ED_FILIAL = 'D MG 01'&e1_parcela=''&e1_prefixo=''
Importante
Caso seja informado mais de um alias e não seja informado um FromQry, é necessário que os filtros enviados ou o Where faça a devida junção entre as tabelas, caso contrário podemos ter cenários de JOIN sem WHERE ou ON, gerando uma quantidade de registros muito gande além do processamento da mesma no banco de dados.
Todas as tabelas tem um alias, como citado no parâmetro FromQry, logo a tabela SED990 é utilizada como SED, isso evita problemas em filtros de campos de mesmo nome, como o D_E_L_E_T_.
O JSON retornado tem como chave o nome do campo na tabela, evitando assim problemas com localização.
Essa API efetua validações de privilégios, nível de campo e dados protegidos.
Dados protegidos
Nível de campos
Comportamento
Devido ao nome de algumas tabelas do Protheus terem três letras e serem palavras reservadas do SQL, algumas tabelas recebem o sufixo PFW para que a query funcione corretamente:
- ADD
- ALL
- AND
- ANY
- ASC
- AVG
- DEC
- END
- FOR
- INT
- KEY
- NOT
- ROW
- SET
- SUM
Isso afeta apenas o alias (apelido) da tabela na query, exemplo: SELECT * FROM SETT10 SETPFW WHERE SETPFW.D_E_L_E_T_ = ' '
Essa mudança de comportamento está presente na lib 20241125 ou superior.
{ "items": [ { "e5_tipo": "NF", "e5_vlmoed2": 4692.5, "e5_motbx": "NOR", "e5_tipodoc": "VL", "e5_dtdispo": "2015-3-3", "e5_numero": "000812", "e5_parcela": "", "e5_loja": "01", "e5_filorig": "M SP 01", "e5_naturez": "FIS0000031", "e5_filial": "M SP 01", "e5_histor": "Valor recebido s/ Titulo", "e5_valor": 4692.5 } ], "remainingRecords": 474, "protectedDataFields": [ "E5_BANCO", "E5_BENEF" ], "nivelFields": [ "E5_MSFIL" ], "hasNext": true }
Formato padrão do Smart View
A partir da LIB Label 20240115 será possível utilizar a genericQuery no Smart View para as consultas do tipo Lookup.
Esse formato segue as mesmas regras documentadas acima, o que mudará será o formato de retorno da api.
Novos Parâmetros
Nome | Tipo | Descrição | Obrigatório | Valor padrão |
---|---|---|---|---|
Format | String | Indica se o formato de retorno é no padrão do Smart View | X | |
KeyProperty | String | Indica o campo que deverá ser retornado da consulta, o mesmo deve estar contido nos campos da consulta | x |
Além dos parâmetros padrões indicados no início da documentação, para utilizar o padrão esperado pro Smart View é necessário enviar os novos parâmetros Format e KeyProperty.
api/framework/v1/genericQuery?tables=SED,SE1&fields=ed_codigo,ed_descric,e1_prefixo,e1_num,e1_parcela,e1_tipo&where=SED.D_E_L_E_T_=' ' AND SE1.D_E_L_E_T_ = ' ' AND SE1.E1_NATUREZ = SED.ED_CODIGO AND SE1.E1_FILIAL = 'D MG 01' AND SED.ED_FILIAL = 'D MG 01' AND SED.ED_CODIGO <> ''&Format=smartview&KeyProperty=ed_codigo
api/framework/v1/genericQuery?FromQry=SEDT10 SED JOIN SE1T10 SE1 ON SE1.E1_NATUREZ = SED.ED_CODIGO&tables=SED,SE1&fields=ed_codigo,ed_descric,e1_prefixo,e1_num,e1_parcela,e1_tipo&where=SED.D_E_L_E_T_=' ' AND SE1.D_E_L_E_T_ = ' ' AND SE1.E1_FILIAL = 'D MG 01' AND SED.ED_FILIAL = 'D MG 01 ' AND SED.ED_CODIGO <> ''&e1_parcela=''&e1_prefixo=''&Format=smartview&keyProperty=ed_codigo
{ "data": [ { "ed_codigo": "0000000001", "ed_descric": "NATUREZA PROCESSE TMKA290", "e1_prefixo": "", "e1_num": "000000001", "e1_parcela": "", "e1_tipo": "NF" } ], "remainingRecords": 355, "protectedDataFields": [], "keyProperty": "ed_codigo", "nextPageUrl": "http://127.0.0.1:8050/rest/api/framework/v1/genericQuery?FromQry=SEDT10 SED JOIN SE1T10 SE1 ON SE1.E1_NATUREZ = SED.ED_CODIGO&tables=SED,SE1&fields=ed_codigo,ed_descric,e1_prefixo,e1_num,e1_parcela,e1_tipo&where=SED.D_E_L_E_T_=' ' AND SE1.D_E_L_E_T_ = ' ' AND SE1.E1_FILIAL = 'D MG 01' AND SED.ED_FILIAL = 'D MG 01 ' AND SED.ED_CODIGO <> ''&e1_parcela=''&e1_prefixo=''&Format=smartview&keyproperty=ed_codigo&page=2", "descriptor": { "ed_codigo": "Codigo", "ed_descric": "Descricao", "e1_prefixo": "Prefixo", "e1_num": "No. Titulo", "e1_parcela": "Parcela", "e1_tipo": "Tipo" } }