get https://api.sankhya.com.br/loadRecordsComCriterio
Quando temos parâmetros variáveis, como é o caso da expressão aqui usada, devemos colocar um '?' onde o valor do parâmetro será injetado. Para cada '?' na expressão devemos ter um elemento 'parameter'. Os possíveis valores para o atributo 'type' são:
- D = Data sem horário
- H = Data com horário (no seguinte formato: DD/MM/AAAA HH:MM:SS)
- F = Número decimal (decimal separado por '.')
- I = Número inteiro
- S = Texto
IMPORTANTE: Sempre usar parâmetro para critérios do tipo data, pois colocar a data direto no SQL pode não funcionar corretamente devido ao charset, formato e tipo do banco de dados.
Segue exemplo utilizando filtro com parâmetros
URL de chamada: https://api.sankhya.com.br/gateway/v1/mge/service.sbr?serviceName=CRUDServiceProvider.loadRecords&outputType=json
Corpo de requisição
{
"serviceName": "CRUDServiceProvider.loadRecords",
"requestBody": {
"dataSet": {
"rootEntity": "Produto",
"includePresentationFields": "N",
"tryJoinedFields":"true",
"offsetPage": "0",
"criteria": {
"expression": {
"$": "CODPROD IN ( ?, ? )"
},
"parameter":
[
{
"$": "1",
"type": "I"
},
{
"$": "2",
"type": "I"
}
]
},
"entity": {
"fieldset": {
"list": "CODPROD, DESCRPROD"
}
}
}
}
}
Este exemplo retorna os produtos com código 1 e 2. A seguir um exemplo de utilização com cada tipo de parâmetro, focando na tag “criteria” onde a mudança é necessária:
Aplicando filtro com número inteiro:
...
"criteria": {
"expression": {
"$": "NUNOTA = ?"
},
"parameter": [
{
"$": "9120",
"type": "I"
}
]
},
...
Aplicando filtro com número inteiro utilizando IN:
...
"criteria": {
"expression": {
"$": "NUNOTA IN (?, ?, ?)"
},
"parameter": [
{
"$": "9120",
"type": "I"
},
{
"$": "9141",
"type": "I"
},
{
"$": "9159",
"type": "I"
}
]
},
...
Aplicando filtro com data e hora:
...
"criteria": {
"expression": {
"$": "DTFATUR >= ?"
},
"parameter": [
{
"$": "20/05/2022 09:31:43",
"type": "H"
}
]
},
...
Aplicando filtro entre datas:
...
"criteria": {
"expression": {
"$": "DHBAIXA IS NULL AND DTVENC BETWEEN ? AND ?"
},
"parameter": [
{
"$": "01/05/2022",
"type": "D"
},
{
"$": "31/05/2022",
"type": "D"
}
]
},
...
Aplicando filtro com texto:
...
"criteria": {
"expression": {
"$": "USOPROD = ? AND DESCRPROD LIKE '%?%'"
},
"parameter": [
{
"$": "V",
"type": "S"
},
{
"$": "CHEVE",
"type": "S"
}
]
},
...