Alterar API List Orders para Order Feed

Um de nossos clientes recebeu um e-mail da VTEX avisando que a API Order Feed deveria ser utilizada ao invés da List Orders.

Atualmente, temos um processo que faz uma consulta na API List Orders e para cada ordem, faz uma consulta na Get Order, integra com o nosso ERP e caso a ordem esteja com o status “ready-for-handling”, envia a ordem para a API Start Handling.

Com essa alteração, ao nosso entendimento, teríamos que deixar de utilizar a API List Orders e começar a utilizar a Order Feed, o restante do processo para buscar as ordens não iria alterar. Estou abrindo este tópico para confirmar se a alteração que foi requisitada é apenas neste processo, ou se mais algum passo deve ser feito.

Outra questão, é referente aos filtros na API Order Feed, pois hoje utilizamos alguns filtros como a data de criação da ordem por exemplo (creationDate) para buscar as ordens. Mas pelo o que encontrei na documentação, não é possível filtrar nada na Order Feed.

2 Likes

Olá, @LeoDalcegio, tudo bem?

O Order Feed tem o objetivo único de substituir o List Orders (recurso não indicado para esta função) na captação de pedidos. Todo o restante do processo poderá ser mantido.

Hoje vocês devem utilizar a data de criação do pedido no List Orders para conseguir identificar os pedidos criados no último período, correto? Talvez vocês façam um filtro por creationDate e status, correto? Com o Order Feed isso não será necessário mais. O Order Feed lista os eventos de mudanças de status a partir de uma configuração prévia.

Em um primeiro momento a loja realiza uma configuração onde ela define quais status a integração quer monitorar. Na grande maioria dos cenários, quando se trata de uma integração para a operação de fulfillment, o ready-for-handling é o único status configurado. Após esta configuração, todos os pedidos que alcançarem os status configurados serão listados na API de retrieve. A integração deve ter um job que executa a API de retrieve de tempos em tempos (5 em 5 minutos, por exemplo). Depois de incluir o pedido no back-office, a integração deve executar o commit do evento. A partir desta operação, o serviço da VTEX remove o registro da fila.

De fato, o início do fluxo (captação de pedido) muda um pouco e isso precisa estar previsto neste desenvolvimento. Esta documentação explica todo o fluxo mais detalhadamente.

Durante a minha explicação, inclui alguns links para documentações técnicas. Tendo dúvidas, só retornar aqui, combinado?

1 Like

Obrigado pelo retorno @danilo.juliani

Tenho mais uma dúvida, precisaríamos que apenas a última alteração da ordem aparecesse no feed.

Existe o disableSingleFire, que faz as ordens aparecer apenas uma vez no feed, caso esteja false, mas gostaria de confirmar se é realmente apenas a última alteração que iria aparecer.

Pois por exemplo, hoje a integração é dada por esse processo que comentei acima, então quando o status é alterado de “ready-for-handling” para “handling”, por exemplo, ao buscar as ordens do feed, dois registros são retornados.

@LeoDalcegio um conceito importante é que no Order Feed são listados os eventos de mudança e não os pedidos propriamente. Por essa razão, se você configurar dois status (ready-for-handling e handling), pode acontecer de o mesmo pedido aparecer duas vezes.

O mais importante é que esta integração considere cada status para disparar fluxos específicos. Por exemplo, é comum que as lojas utilizem o ready-for-handling para iniciar o processo de manuseio, portanto, a integração de pedidos com o back-office.

Para evitar que o evento de mudança para handling seja listado no feed, basta não configurá-lo como filtro.

Certo, entendi, agora no cenário em que hoje o List Orders é utilizado, nenhum item do feed é commitado, dessa forma se em algum momento a ordem foi ready-for-handling, depois alterado para handling, ambos aparecem no feed, mas num cenário ideal apenas o handling iria aparecer, pois no momento em que a ordem estava como ready-for-handling, foi realizado o commit dela.

Por conta disso é que fiz a pergunta de como a opção disableSingleFire iria se comportar

O feed apenas passa a existir após sua primeira configuração. Enquanto não houver qualquer configuração inicial, a fila não existirá.

Um conceito importante: O commit não indica que aquela ordem não deve mais aparecer no feed. O commit indica que aquele evento (mudança de status, neste caso) foi lido e, portanto, pode ser removido da fila. Como, no seu exemplo, apenas o evento de mudança para ready-for-handling de uma determinada ordem foi comitado, o evento de mudança para handling continuará na fila até seu commit.

Reforçando: Você pode escolher quais status quer que apareçam no feed. Se não fizer sentido filtrar pedidos em handling, você não precisa definir este status na configuração.