Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameConsulta de Produtos em Publicacoes
simpleViewerfalse
width
diagramWidth911
revision2

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

Image AddedO 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
languagejs
titleJSON Resposta
collapsetrue
{
	"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
nameConsumo de APIs REST para E-Commerce.postman_collection.json
height250


 


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>

...