Histórico da Página
...
Neste modelo cria-se publicações e associa-se produtos à publicação da mesma forma através da interface web do TOTVS Omni.
Como não existe conector cabe ao canal de venda então realizar a consulta ao Omni para recuperar as informações sobre produtos publicados, incluindo preço e estoque.
Periodicamente é necessário que o método "calcularCambios" das publicações precisam ser executados. Este método atualiza a base do Omni com o valor da hash calculada para atributos, preços e estoque.
Esta atividade é necessária para que a consulta de produtos em publicações retorne somente os produtos adequadamente.
O fluxo a seguir demonstra como utilizar a Postman Collection anexada no fim desta página para desenvolver esta parte da integração com o TOTVS Omni:
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
A consulta "Lista de IDs de Produtos em Publicações" deve ser feita passando no body da requisção a lista de ids de produtos e suas respectivas hashs, que foram retornadas desde a ultima consulta e armazenadas do lado do canal de venda.
Desta forma o TOTVS Omni irá calcular se houve mudança de preço, atributo ou estoque perante as hashs apresentadas e retornar a lista somente dos produtos que sofreram alteração.
A lista de IDs de produtos retornada desta consulta é utilizada na consulta "Lista de Produtos em Publicações" para trazer os detalhes dos produtos.
Ambas consultas devem ser feita usando o pode ser feita com paginação e sempre é filtrada pelo Site ID do canal de venda (que representa o canal de venda do cliente no TOTVS Omni).
Veja Conceito de Sites, Lojas e Estrutura de Pedidos
Também é necessário que a propriedade "gestionado.en.gestor.de.canales" do site canal de venda esteja ativa
O resultado é um array de JSON contendo informações dos produtos que sofreram modificação de preço e estoque.
Abaixo um exemplo de JSON de resposta da consulta de produtos com comentários nos campos mais importantes:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "count": 64, <- Quantidade total de produtos nas publicações. Utilizado para referenciar a paginação. "products": [ <- Array de produtos { "atributos": [...], <- Lista de atributos com valores do produto. "precios": [...], <- Informação de preço ("precio") e preço com desconto ("precioRebajado") a ser aplicado no canal de venda. "subProductos": [ "idArticuloModalia": "02092021-001-TOTVS_DEMO_PRINCIPAL-SIN DEFINIR", "ean": "000000001", "sku": "10001", "stocks": [...], <- Estoque ("stock") por loja ("idTiendaExterno"). "codigoAlfa": "02092021-001", <- Código Alfa do produto. ] "codigoAlfa": "02092021-001", "idArticuloModalia": "02092021-001-TOTVS_DEMO_PRINCIPAL", "imagenes": [...], <- Lista de imagens públicas do produto no Omni. "descripcion":"...", <- Descrição do produto ... "hashCodeProducto": -1262620199, <- hash da ultima posição referente a mudança nos atributos de produto. "hashCodeStock": -902199240, <- hash da ultima posição referente a mudança no estoque. "hashCodePrecio": 1569935053, <- hash da ultima posição referente a mudança no preço. }, ... ] } |
Importante que o canal de venda armazene o codigo de referência e o tamanho do produto (mesmo nos casos tamanho único) para que o canal de venda possa criar um pedido referenciando o produto.
...
Abaixo uma postman collection contendo as chamadas relacionadas neste documento.
View file | ||||
---|---|---|---|---|
|
HTML |
---|
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |
...