Eu consigo filtrar api apenas pelo totalValue?

api/oms/pvt/orders?orderBy=creationDate,desc&per_page=100&page=1&f_status=ready-for-handling&q=(“totalValue” == 0.0)

Olá @FranciscoScore, tudo bom?

Ao que parece nem pela API List Orders e nem pela interface do VTEX OMS é possível fazer este filtro por valor.

Considerando também que apenas os pedidos dos últimos dois anos ficam disponíveis para consulta, a melhor solução é sempre utilizar a VTEX integrada com algum ERP onde guardamos todos os dados dos pedidos e podemos realizar esta filtragem que você deseja e outras customizações que não ficam do lado da VTEX.

Ou seja, se a VTEX não incentiva este filtro pela plataforma, indiretamente ela está indicando que o caminho é fazer no lado do ERP.

Talvez você comentando um pouco mais sobre o teu caso de uso seja possível pensar em alguma alternativa, como por exemplo, utilizando o Order Hooks para capturar estes pedidos pelo valor e notificar algum outro sistema para tratar os pedidos que batem com a tua regra:

{
    "filter": {
        "type": "FromOrders",
        "expression": "value > 100",
        "disableSingleFire": false
    },
    "hook": {
        "url": "https://endpoint.example/path",
        "headers": {
            "key": "value"
        }
    }

Comenta o teu cenário para ver se a comunidade ajuda com outras ideias.

1 Like

Fala @FranciscoScore tranquilo?

Corroborando com o post, pela documentação, é possível ver que a VTEX não disponibiliza o totalValue como parâmetro para filtro como o @andremiani mencionou.

Os seguintes campos como possíveis para filtragem: orderId, orderGroup, status, hasTheField, approvedDate, clientName, clientId, invoiceOutput.key, invoiceInput.key, f_status e f_hasTheField.

Uma alternativa seria fazer o GET de todos os pedidos com status ready-for-handling e depois filtrar os resultados no seu código para incluir apenas aqueles com totalValue igual a 0.0, como você espera.

Aqui está talvez uma ideia de como você poderia fazer isso em JS:

fetch('https://sua-loja.vtexcommercestable.com.br/api/oms/pvt/orders?orderBy=creationDate,desc&per_page=100&page=1&f_status=ready-for-handling', {
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'X-VTEX-API-AppKey': 'your-app-key',
        'X-VTEX-API-AppToken': 'your-app-token'
    }
})
.then(response => response.json())
.then(data => {
    const pedidosComValorZero = data.list.filter(order => order.totalValue === 0.0);
    console.log(pedidosComValorZero);
})
.catch(error => console.error('Error:', error));

Veja se a ideia ajuda de alguma forma.

Abs,
Estevão.

1 Like